@elementor/editor-editing-panel 0.19.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/dist/index.d.mts +5 -22
- package/dist/index.d.ts +5 -22
- package/dist/index.js +1444 -1165
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1434 -1148
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -14
- package/src/components/accordion-section.tsx +3 -2
- package/src/components/add-or-remove-content.tsx +42 -0
- package/src/components/collapsible-field.tsx +34 -0
- package/src/components/editing-panel.tsx +15 -18
- package/src/components/settings-tab.tsx +11 -10
- package/src/components/style-sections/background-section/background-color-field.tsx +21 -0
- package/src/components/style-sections/background-section/background-section.tsx +2 -2
- package/src/components/style-sections/border-section/border-color-field.tsx +21 -0
- package/src/components/style-sections/border-section/border-field.tsx +47 -0
- package/src/components/style-sections/border-section/border-radius-field.tsx +48 -0
- package/src/components/style-sections/border-section/border-section.tsx +16 -0
- package/src/components/style-sections/border-section/border-style-field.tsx +32 -0
- package/src/components/style-sections/border-section/border-width-field.tsx +42 -0
- package/src/components/style-sections/effects-section/effects-section.tsx +5 -5
- package/src/components/style-sections/position-section/dimensions-field.tsx +46 -0
- package/src/components/style-sections/position-section/position-field.tsx +28 -0
- package/src/components/style-sections/position-section/position-section.tsx +15 -2
- package/src/components/style-sections/position-section/z-index-field.tsx +21 -0
- package/src/components/style-sections/size-section/overflow-field.tsx +45 -0
- package/src/components/style-sections/size-section/size-section.tsx +55 -0
- package/src/components/style-sections/spacing-section/spacing-section.tsx +6 -6
- package/src/components/style-sections/typography-section/font-size-field.tsx +21 -0
- package/src/components/style-sections/typography-section/{font-weight-control.tsx → font-weight-field.tsx} +7 -6
- package/src/components/style-sections/typography-section/letter-spacing-field.tsx +21 -0
- package/src/components/style-sections/typography-section/{text-alignment-control.tsx → text-alignment-field.tsx} +7 -7
- package/src/components/style-sections/typography-section/text-color-field.tsx +21 -0
- package/src/components/style-sections/typography-section/{text-direction-control.tsx → text-direction-field.tsx} +7 -7
- package/src/components/style-sections/typography-section/text-stroke-field.tsx +16 -0
- package/src/components/style-sections/typography-section/{text-style-control.tsx → text-style-field.tsx} +4 -4
- package/src/components/style-sections/typography-section/{transform-control.tsx → transform-field.tsx} +7 -6
- package/src/components/style-sections/typography-section/typography-section.tsx +20 -18
- package/src/components/style-sections/typography-section/word-spacing-field.tsx +21 -0
- package/src/components/style-tab.tsx +42 -25
- package/src/contexts/classes-prop-context.tsx +24 -0
- package/src/{controls/providers/element-provider.tsx → contexts/element-context.tsx} +3 -7
- package/src/contexts/style-context.tsx +8 -22
- package/src/control-replacement.tsx +1 -1
- package/src/controls/bound-prop-context.tsx +30 -0
- package/src/controls/components/control-toggle-button-group.tsx +15 -6
- package/src/controls/components/repeater.tsx +1 -1
- package/src/controls/components/text-field-inner-selection.tsx +20 -24
- package/src/controls/control-actions/control-actions-context.tsx +27 -0
- package/src/controls/control-actions/control-actions-menu.ts +6 -7
- package/src/controls/control-actions/control-actions.tsx +14 -26
- package/src/{components/style-sections/effects-section/box-shadow-repeater.tsx → controls/controls/box-shadow-repeater-control.tsx} +51 -65
- package/src/controls/controls/color-control.tsx +25 -0
- package/src/controls/controls/equal-unequal-sizes-control.tsx +196 -0
- package/src/controls/{control-types → controls}/image-control.tsx +15 -23
- package/src/controls/{control-types → controls}/image-media-control.tsx +5 -14
- package/src/{components/style-sections/spacing-section → controls/controls}/linked-dimensions-control.tsx +10 -26
- package/src/controls/{control-types → controls}/number-control.tsx +2 -2
- package/src/controls/{control-types → controls}/select-control.tsx +4 -4
- package/src/controls/{control-types → controls}/size-control.tsx +8 -8
- package/src/controls/controls/stroke-control.tsx +105 -0
- package/src/controls/{control-types → controls}/text-area-control.tsx +3 -3
- package/src/controls/{control-types → controls}/text-control.tsx +3 -3
- package/src/controls/{control-types → controls}/toggle-control.tsx +4 -4
- package/src/controls/create-control-replacement.tsx +3 -3
- package/src/controls/index.ts +24 -0
- package/src/controls-actions.ts +8 -0
- package/src/{controls/components → controls-registry}/control-type-container.tsx +1 -1
- package/src/{controls → controls-registry}/controls-registry.tsx +1 -6
- package/src/controls-registry/settings-field.tsx +35 -0
- package/src/controls-registry/styles-field.tsx +19 -0
- package/src/dynamics/components/dynamic-selection-control.tsx +11 -11
- package/src/dynamics/components/dynamic-selection.tsx +3 -3
- package/src/dynamics/dynamic-control.tsx +6 -5
- package/src/dynamics/hooks/use-dynamic-tag.ts +1 -1
- package/src/dynamics/hooks/use-prop-dynamic-action.tsx +6 -6
- package/src/dynamics/hooks/use-prop-dynamic-tags.ts +2 -2
- package/src/dynamics/hooks/use-prop-value-history.ts +2 -2
- package/src/dynamics/init.ts +1 -3
- package/src/dynamics/types.ts +2 -2
- package/src/dynamics/utils.ts +1 -2
- package/src/hooks/use-styles-field.ts +30 -0
- package/src/index.ts +2 -3
- package/src/sync/should-use-v2-panel.ts +1 -2
- package/src/sync/types.ts +3 -3
- package/src/components/style-sections/background-section/background-color-control.tsx +0 -20
- package/src/components/style-sections/position-section/z-index-control.tsx +0 -20
- package/src/components/style-sections/size-section.tsx +0 -49
- package/src/components/style-sections/typography-section/font-size-control.tsx +0 -20
- package/src/components/style-sections/typography-section/letter-spacing-control.tsx +0 -20
- package/src/components/style-sections/typography-section/text-color-control.tsx +0 -20
- package/src/components/style-sections/typography-section/word-spacing-control.tsx +0 -20
- package/src/controls/control-context.tsx +0 -22
- package/src/controls/control-replacement.ts +0 -34
- package/src/controls/control-types/color-control.tsx +0 -27
- package/src/controls/hooks/use-style-control.ts +0 -29
- package/src/controls/hooks/use-widget-settings.ts +0 -16
- package/src/controls/props/is-transformable.ts +0 -13
- package/src/controls/props/types.ts +0 -51
- package/src/controls/settings-control.tsx +0 -37
- package/src/controls/style-control.tsx +0 -20
- package/src/controls/sync/get-container.ts +0 -8
- package/src/controls/sync/update-settings.ts +0 -14
- package/src/controls/types.ts +0 -39
- package/src/hooks/use-element-style-prop.ts +0 -46
- package/src/hooks/use-element-styles.ts +0 -13
- package/src/hooks/use-element-type.ts +0 -33
- package/src/hooks/use-selected-elements.ts +0 -9
- package/src/sync/get-element-styles.ts +0 -9
- package/src/sync/get-selected-elements.ts +0 -21
- package/src/sync/get-widgets-cache.ts +0 -7
- package/src/sync/update-style.ts +0 -25
- package/src/{controls → controls-registry}/control.tsx +0 -0
- package/src/{controls/control-actions/actions/popover-action.tsx → popover-action.tsx} +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/controls/create-control-replacement.tsx","../src/controls/control-context.tsx","../src/control-replacement.tsx","../src/controls/control-actions/actions/popover-action.tsx","../src/controls/control-actions/control-actions-menu.ts","../src/panel.ts","../src/components/editing-panel.tsx","../src/hooks/use-selected-elements.ts","../src/sync/get-selected-elements.ts","../src/controls/providers/element-provider.tsx","../src/hooks/use-element-type.ts","../src/sync/get-widgets-cache.ts","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls/settings-control.tsx","../src/controls/hooks/use-widget-settings.ts","../src/controls/sync/get-container.ts","../src/controls/sync/update-settings.ts","../src/components/control-label.tsx","../src/components/accordion-section.tsx","../src/controls/control.tsx","../src/controls/control-types/image-control.tsx","../src/controls/control-types/image-media-control.tsx","../src/controls/control-actions/control-actions.tsx","../src/controls/create-control.tsx","../src/controls/control-types/select-control.tsx","../src/controls/control-types/text-control.tsx","../src/controls/control-types/text-area-control.tsx","../src/controls/control-types/size-control.tsx","../src/controls/hooks/use-sync-external-state.tsx","../src/controls/components/text-field-inner-selection.tsx","../src/controls/controls-registry.tsx","../src/controls/components/control-type-container.tsx","../src/components/style-tab.tsx","../src/contexts/style-context.tsx","../src/hooks/use-element-styles.ts","../src/sync/get-element-styles.ts","../src/components/style-sections/size-section.tsx","../src/controls/style-control.tsx","../src/hooks/use-element-style-prop.ts","../src/sync/update-style.ts","../src/controls/hooks/use-style-control.ts","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/style-sections/typography-section/text-style-control.tsx","../src/components/style-sections/typography-section/font-size-control.tsx","../src/components/style-sections/typography-section/font-weight-control.tsx","../src/components/style-sections/typography-section/text-color-control.tsx","../src/controls/control-types/color-control.tsx","../src/components/style-sections/typography-section/letter-spacing-control.tsx","../src/components/style-sections/typography-section/word-spacing-control.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/transform-control.tsx","../src/controls/control-types/toggle-control.tsx","../src/controls/components/control-toggle-button-group.tsx","../src/components/style-sections/typography-section/text-alignment-control.tsx","../src/components/style-sections/typography-section/text-direction-control.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/z-index-control.tsx","../src/controls/control-types/number-control.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/spacing-section/linked-dimensions-control.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/effects-section/box-shadow-repeater.tsx","../src/controls/components/repeater.tsx","../src/components/style-sections/background-section/background-section.tsx","../src/components/style-sections/background-section/background-color-control.tsx","../src/components/editing-panel-error-fallback.tsx","../src/init.ts","../src/sync/should-use-v2-panel.ts","../src/hooks/use-open-editor-panel.ts","../src/components/editing-panel-hooks.tsx","../src/dynamics/components/dynamic-selection-control.tsx","../src/dynamics/dynamic-control.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/controls/props/is-transformable.ts","../src/dynamics/utils.ts","../src/dynamics/components/dynamic-selection.tsx","../src/dynamics/hooks/use-prop-value-history.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/dynamics/init.ts","../src/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { PropValue } from './props/types';\nimport { ComponentType, createContext, useContext } from 'react';\nimport { useControl } from './control-context';\n\nexport type ReplaceWhenParams = {\n\tvalue: PropValue;\n};\n\nexport type CreateControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ReplaceWhenParams ) => boolean;\n};\n\nconst ControlReplacementContext = createContext< CreateControlReplacement | undefined >( undefined );\n\nexport const ControlReplacementProvider = ( {\n\tcomponent,\n\tcondition,\n\tchildren,\n}: React.PropsWithChildren< CreateControlReplacement > ) => {\n\treturn (\n\t\t<ControlReplacementContext.Provider value={ { component, condition } }>\n\t\t\t{ children }\n\t\t</ControlReplacementContext.Provider>\n\t);\n};\nexport const useControlReplacement = () => {\n\tconst { value } = useControl();\n\tconst controlReplacement = useContext( ControlReplacementContext );\n\n\tlet shouldReplace = false;\n\n\ttry {\n\t\tshouldReplace = !! controlReplacement?.condition( { value } ) && !! controlReplacement.component;\n\t} catch {}\n\n\treturn shouldReplace ? controlReplacement?.component : undefined;\n};\n\nexport const createControlReplacement = () => {\n\tlet controlReplacement: CreateControlReplacement;\n\n\tfunction replaceControl( { component, condition }: CreateControlReplacement ) {\n\t\tcontrolReplacement = { component, condition };\n\t}\n\n\tfunction getControlReplacement() {\n\t\treturn controlReplacement;\n\t}\n\n\treturn { replaceControl, getControlReplacement };\n};\n","import { createContext, useContext } from 'react';\nimport { PropKey, PropValue } from './props/types';\n\nexport type ControlContext< T extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: ( value: T | undefined ) => void;\n\tvalue: T | undefined;\n};\n\nexport const ControlContext = createContext< ControlContext< PropValue > | null >( null );\n\nexport function useControl< T extends PropValue >(): ControlContext< T | undefined >;\nexport function useControl< T extends PropValue >( defaultValue: T ): ControlContext< T >;\nexport function useControl< T extends PropValue >( defaultValue?: T ) {\n\tconst controlContext = useContext< ControlContext< T > >( ControlContext as never );\n\n\tif ( ! controlContext ) {\n\t\tthrow new Error( 'useControl must be used within a ControlContext' );\n\t}\n\n\treturn { ...controlContext, value: controlContext.value ?? defaultValue };\n}\n","import { createControlReplacement } from './controls/create-control-replacement';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import * as React from 'react';\nimport { bindPopover, bindToggle, IconButton, Popover, Stack, Tooltip, Typography, usePopupState } from '@elementor/ui';\nimport { ComponentType, ElementType as ReactElementType, useId } from 'react';\nimport { XIcon } from '@elementor/icons';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tpopoverContent: ComponentType< { closePopover: () => void } >;\n};\n\nexport default function PopoverAction( {\n\ttitle,\n\tvisible = true,\n\ticon: Icon,\n\tpopoverContent: PopoverContent,\n}: PopoverActionProps ) {\n\tconst id = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-popover-action-${ id }`,\n\t} );\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 } key={ id } size={ SIZE } { ...bindToggle( popupState ) }>\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\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'center',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t<Icon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t<Typography variant=\"subtitle2\">{ title }</Typography>\n\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ popupState.close }>\n\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Stack>\n\t\t\t\t<PopoverContent closePopover={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n","import PopoverAction from './actions/popover-action';\nimport { createMenu } from '@elementor/menus';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport useSelectedElements from '../hooks/use-selected-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ElementProvider } from '../controls/providers/element-provider';\nimport useElementType from '../hooks/use-element-type';\nimport { EditingPanelTabs } from './editing-panel-tabs';\nimport { ControlReplacementProvider } from '../controls/create-control-replacement';\nimport { getControlReplacement } from '../control-replacement';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\n\nexport const EditingPanel = () => {\n\tconst elements = useSelectedElements();\n\n\tconst [ selectedElement ] = elements;\n\n\t// TODO: Move this into the provider.\n\tconst elementType = useElementType( selectedElement?.type );\n\n\tif ( elements.length !== 1 || ! elementType ) {\n\t\treturn null;\n\t}\n\n\tconst controlReplacement = getControlReplacement();\n\n\t/* translators: %s: Element type title. */\n\tconst panelTitle = __( 'Edit %s', 'elementor' ).replace( '%s', elementType.title );\n\n\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<Panel>\n\t\t\t\t<PanelHeader>\n\t\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t</PanelHeader>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<ControlReplacementProvider { ...controlReplacement }>\n\t\t\t\t\t\t<ElementProvider element={ selectedElement } elementType={ elementType }>\n\t\t\t\t\t\t\t<EditingPanelTabs />\n\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t</ControlReplacementProvider>\n\t\t\t\t</PanelBody>\n\t\t\t</Panel>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport getSelectedElements from '../sync/get-selected-elements';\n\nexport default function useSelectedElements() {\n\treturn useListenTo(\n\t\t[ commandEndEvent( 'document/elements/select' ), commandEndEvent( 'document/elements/deselect' ) ],\n\t\t() => getSelectedElements()\n\t);\n}\n","import { ExtendedWindow } from './types';\nimport { Element } from '../controls/types';\n\nexport default function getSelectedElements(): Element[] {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\tconst selectedElements = extendedWindow.elementor?.selection?.getElements?.() ?? [];\n\n\treturn selectedElements.reduce< Element[] >( ( acc, el ) => {\n\t\tconst type = el.model.get( 'widgetType' ) || el.model.get( 'elType' );\n\n\t\tif ( type ) {\n\t\t\tacc.push( {\n\t\t\t\tid: el.model.get( 'id' ),\n\t\t\t\ttype,\n\t\t\t} );\n\t\t}\n\n\t\treturn acc;\n\t}, [] );\n}\n","import * as React from 'react';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { Element, ElementType } from '../types';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = {\n\telement: Element;\n\tchildren?: ReactNode;\n\telementType: ElementType;\n};\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 { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport getWidgetsCache from '../sync/get-widgets-cache';\nimport { ElementType } from '../controls/types';\n\nexport default function useElementType( type?: string ) {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'editor/documents/load' ),\n\t\t(): ElementType | null => {\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst widgetsCache = getWidgetsCache();\n\t\t\tconst elementType = widgetsCache?.[ type ];\n\n\t\t\tif ( ! elementType?.atomic_controls ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( ! elementType?.atomic_props_schema ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tkey: type,\n\t\t\t\tcontrols: elementType.atomic_controls,\n\t\t\t\tpropsSchema: elementType.atomic_props_schema,\n\t\t\t\ttitle: elementType.title,\n\t\t\t};\n\t\t},\n\t\t[ type ]\n\t);\n}\n","import { ExtendedWindow } from './types';\n\nexport default function getWidgetsCache() {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow?.elementor?.widgetsCache || null;\n}\n","import { Stack, Tabs, Tab, TabPanel, useTabs } from '@elementor/ui';\nimport * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t<Tabs variant=\"fullWidth\" indicatorColor=\"secondary\" textColor=\"inherit\" { ...getTabsProps() }>\n\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t</Tabs>\n\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t<SettingsTab />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t<StyleTab />\n\t\t\t</TabPanel>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Stack } from '@elementor/ui';\nimport { SettingsControl } from '../controls/settings-control';\nimport { useElement } from '../controls/providers/element-provider';\nimport { AccordionSection } from './accordion-section';\nimport type { Control } from '../controls/types';\nimport { Control as BaseControl } from '../controls/control';\nimport { ControlType, getControlByType } from '../controls/controls-registry';\nimport { ControlTypeContainer } from '../controls/components/control-type-container';\n\nexport const SettingsTab = () => {\n\tconst { elementType } = useElement();\n\n\treturn (\n\t\t<Stack>\n\t\t\t{ elementType.controls.map( ( { type, value }, index ) => {\n\t\t\t\tif ( type === 'control' ) {\n\t\t\t\t\treturn <Control key={ value.bind } control={ value } />;\n\t\t\t\t}\n\n\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<AccordionSection key={ type + '.' + index } title={ value.label }>\n\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</AccordionSection>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t} ) }\n\t\t</Stack>\n\t);\n};\n\n// TODO: Create control wrapper by type for different layouts.\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsControl bind={ control.bind }>\n\t\t\t<ControlTypeContainer controlType={ control.type as ControlType }>\n\t\t\t\t{ control.label ? <SettingsControl.Label>{ control.label }</SettingsControl.Label> : null }\n\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t</ControlTypeContainer>\n\t\t</SettingsControl>\n\t);\n};\n","import * as React from 'react';\nimport { ControlContext } from './control-context';\nimport { PropKey, PropValue } from './props/types';\nimport { useElement } from './providers/element-provider';\nimport { useWidgetSettings } from './hooks/use-widget-settings';\nimport { updateSettings } from './sync/update-settings';\nimport { ControlLabel } from '../components/control-label';\n\ntype Props = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nconst SettingsControl = ( { bind, children }: Props ) => {\n\tconst { element, elementType } = useElement();\n\n\tconst defaultValue = elementType.propsSchema[ bind ]?.default;\n\tconst settingsValue = useWidgetSettings( { id: element.id, bind } );\n\tconst value = settingsValue ?? defaultValue ?? null;\n\n\tconst setValue = ( newValue: PropValue ) => {\n\t\tupdateSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ bind ]: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn <ControlContext.Provider value={ { setValue, value, bind } }>{ children }</ControlContext.Provider>;\n};\n\n// TODO: When we start using useControl inside the label component, we should create a new component for it,\n// and keep ControlLabel as a simple label component without context.\nSettingsControl.Label = ControlLabel;\n\nexport { SettingsControl };\n","import { commandEndEvent, __privateUseListenTo as useListenTo } from '@elementor/editor-v1-adapters';\nimport getContainer from '../sync/get-container';\nimport { PropValue } from '../props/types';\n\nexport const useWidgetSettings = ( { id, bind }: { id: string; bind: string } ): PropValue => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/elements/settings' ),\n\t\t() => {\n\t\t\tconst container = getContainer( id );\n\t\t\tconst value = container?.settings?.get( bind ) ?? null;\n\n\t\t\treturn value;\n\t\t},\n\t\t[ id, bind ]\n\t);\n};\n","import { ExtendedWindow } from '../../sync/types';\n\nexport default function getContainer( id: string ) {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\tconst container = extendedWindow.elementor?.getContainer?.( id );\n\n\treturn container ?? null;\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\nimport { Props } from '../props/types';\nimport getContainer from './get-container';\n\nexport const updateSettings = ( { id, props }: { id: string; props: Props } ) => {\n\tconst container = getContainer( id );\n\n\trunCommand( 'document/elements/settings', {\n\t\tcontainer,\n\t\tsettings: {\n\t\t\t...props,\n\t\t},\n\t} );\n};\n","import * as React from 'react';\nimport { Typography } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: { children: React.ReactNode } ) => {\n\treturn (\n\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t{ children }\n\t\t</Typography>\n\t);\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { Accordion, AccordionSummary, AccordionDetails, AccordionSummaryText, Stack } from '@elementor/ui';\n\nexport type AccordionSectionProps = React.PropsWithChildren< {\n\ttitle: React.ReactNode;\n} >;\n\nexport const AccordionSection = ( { title, children }: AccordionSectionProps ) => {\n\tconst uid = useId();\n\tconst labelId = `label-${ uid }`;\n\tconst contentId = `content-${ uid }`;\n\n\t// TODO: Change to collapsible list item\n\treturn (\n\t\t<Accordion disableGutters defaultExpanded>\n\t\t\t<AccordionSummary aria-controls={ contentId } id={ labelId }>\n\t\t\t\t<AccordionSummaryText primaryTypographyProps={ { variant: 'caption' } }>{ title }</AccordionSummaryText>\n\t\t\t</AccordionSummary>\n\t\t\t<AccordionDetails id={ contentId } aria-labelledby={ labelId }>\n\t\t\t\t<Stack gap={ 2.5 }>{ children }</Stack>\n\t\t\t</AccordionDetails>\n\t\t</Accordion>\n\t);\n};\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { createError } from '@elementor/utils';\nimport { ControlType, ControlTypes, getControlByType } from './controls-registry';\n\nexport type ControlTypeErrorContext = {\n\ttype: string;\n};\n\nconst ControlTypeError = createError< ControlTypeErrorContext >( {\n\tcode: 'CONTROL_TYPE_NOT_FOUND',\n\tmessage: `Control type not found.`,\n} );\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 = getControlByType( type );\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeError( {\n\t\t\tcontext: { type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } />;\n};\n","import * as React from 'react';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { ControlContext, useControl } from '../control-context';\nimport { type ImageSrc, ImageMediaControl } from './image-media-control';\nimport { PropValue, TransformablePropValue } from '../props/types';\nimport { SettingsControl } from '../settings-control';\nimport { SelectControl } from './select-control';\nimport { createControl } from '../create-control';\n\ntype Image = TransformablePropValue<\n\t'image',\n\t{\n\t\tsrc?: ImageSrc;\n\t\tsize?: string;\n\t}\n>;\n\ntype SetContextValue = ( v: PropValue ) => void;\n\nexport type ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n};\n\nexport const ImageControl = createControl( ( props: ImageControlProps ) => {\n\tconst { value, setValue } = useControl< Image >();\n\tconst { src, size } = value?.value || {};\n\n\tconst setImageSrc = ( newValue: ImageSrc ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: newValue,\n\t\t\t\tsize,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst setImageSize = ( newValue: string ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc,\n\t\t\t\tsize: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 2 }>\n\t\t\t<ControlContext.Provider value={ { setValue: setImageSrc as SetContextValue, value: src, bind: 'src' } }>\n\t\t\t\t<ImageMediaControl />\n\t\t\t</ControlContext.Provider>\n\t\t\t<ControlContext.Provider value={ { setValue: setImageSize as SetContextValue, value: size, bind: 'size' } }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SettingsControl.Label> { __( 'Image Resolution', 'elementor' ) }</SettingsControl.Label>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SelectControl options={ props.sizes } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</ControlContext.Provider>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { Button, Card, CardMedia, CardOverlay, Stack } from '@elementor/ui';\nimport { UploadIcon } from '@elementor/icons';\nimport { useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { __ } from '@wordpress/i18n';\nimport { useControl } from '../control-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { TransformablePropValue } from '../props/types';\n\ntype ImageAttachmentID = TransformablePropValue< 'image-attachment-id', number >;\n\ntype Url = TransformablePropValue< 'url', string >;\n\nexport type ImageSrc = TransformablePropValue<\n\t'image-src',\n\t{ id: ImageAttachmentID; url: null } | { url: Url; id: null }\n>;\n\nexport const ImageMediaControl = createControl( () => {\n\tconst { value, setValue } = useControl< ImageSrc >();\n\tconst { id, url } = value?.value ?? {};\n\n\tconst { data: attachment } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url;\n\n\tconst { open } = useWpMediaFrame( {\n\t\ttypes: [ 'image' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\t$$type: 'image-src',\n\t\t\t\tvalue: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t\t},\n\t\t\t\t\turl: null,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<Card variant=\"outlined\">\n\t\t\t<CardMedia image={ src } sx={ { height: 150 } } />\n\t\t\t<CardOverlay>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<Stack gap={ 0.5 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select Image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload Image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</ControlActions>\n\t\t\t</CardOverlay>\n\t\t</Card>\n\t);\n} );\n","import * as React from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\nimport { PropsWithChildren } from 'react';\nimport { controlActionsMenu } from './control-actions-menu';\n\nconst { useMenuItems } = controlActionsMenu;\n\n// CSS hack to hide empty floating bars.\nconst FloatingBar = styled( UnstableFloatingActionBar )`\n\t& .MuiPaper-root:empty {\n\t\tdisplay: none;\n\t}\n\n\t// this is for a fix which would be added later on - to force the width externally\n\twidth: 100%;\n\t& > :first-of-type {\n\t\twidth: 100%;\n\t}\n`;\n\nexport type ControlActionsProps = PropsWithChildren< {\n\tfullWidth?: boolean;\n} >;\n\nexport default function ControlActions( { fullWidth = false, children }: ControlActionsProps ) {\n\tconst items = useMenuItems().default;\n\n\tif ( items.length === 0 ) {\n\t\treturn children;\n\t}\n\n\treturn (\n\t\t<FloatingBar\n\t\t\tactions={ items.map( ( { MenuItem, id } ) => (\n\t\t\t\t<MenuItem key={ id } />\n\t\t\t) ) }\n\t\t\t// TODO - work on a general layouting solution instead\n\t\t\tsx={ fullWidth ? { width: '100%' } : undefined }\n\t\t>\n\t\t\t{ children }\n\t\t</FloatingBar>\n\t);\n}\n","import * as React from 'react';\nimport { ComponentProps, ComponentType } from 'react';\nimport { useControlReplacement } from './create-control-replacement';\nimport { ErrorBoundary } from '@elementor/ui';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\ntype Options = {\n\tsupportsReplacements?: boolean;\n};\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >(\n\tComponent: T,\n\t{ supportsReplacements = true }: Options = {}\n) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst ControlReplacement = useControlReplacement();\n\n\t\tif ( ControlReplacement && supportsReplacements ) {\n\t\t\treturn (\n\t\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t\t<ControlReplacement { ...props } />\n\t\t\t\t</ErrorBoundary>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { MenuItem, Select, SelectChangeEvent } from '@elementor/ui';\nimport { useControl } from '../control-context';\nimport { PropValue } from '../props/types';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props< T > = {\n\toptions: Array< { label: string; value: T; disabled?: boolean } >;\n};\n\nexport const SelectControl = createControl( < T extends PropValue >( { options }: Props< T > ) => {\n\tconst { value, setValue } = useControl< T >();\n\n\tconst handleChange = ( event: SelectChangeEvent< T > ) => {\n\t\tsetValue( event.target.value as T );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Select size=\"tiny\" value={ value ?? '' } onChange={ handleChange }>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuItem key={ props.value } { ...props }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useControl } from '../control-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue } = useControl< string >( '' );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions fullWidth>\n\t\t\t<TextField type=\"text\" size=\"tiny\" value={ value } onChange={ handleChange } placeholder={ placeholder } />\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useControl } from '../control-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder }: Props ) => {\n\tconst { value, setValue } = useControl< string >();\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions fullWidth>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\trows={ 5 }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { InputAdornment } from '@elementor/ui';\nimport { TransformablePropValue } from '../props/types';\nimport { useControl } from '../control-context';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../components/text-field-inner-selection';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type Unit = 'px' | '%' | 'em' | 'rem' | 'vw';\n\nconst defaultUnits: Unit[] = [ 'px', '%', 'em', 'rem', 'vw' ];\n\nexport type SizeControlValue = TransformablePropValue< 'size', { unit: Unit; size: number } >;\n\nexport type SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: Unit[];\n};\n\nexport const SizeControl = createControl( ( { units = defaultUnits, placeholder, startIcon }: SizeControlProps ) => {\n\tconst { value, setValue } = useControl< SizeControlValue >();\n\n\tconst [ state, setState ] = useSyncExternalState< SizeControlValue >( {\n\t\texternal: value,\n\t\tsetExternal: setValue,\n\t\tpersistWhen: ( controlValue ) => !! controlValue?.value.size || controlValue?.value.size === 0,\n\t\tfallback: ( controlValue ) => ( {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: controlValue?.value.unit || 'px', size: NaN },\n\t\t} ),\n\t} );\n\n\tconst handleUnitChange = ( unit: Unit ) => {\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tvalue: {\n\t\t\t\t...prev.value,\n\t\t\t\tunit,\n\t\t\t},\n\t\t} ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tvalue: {\n\t\t\t\t...prev.value,\n\t\t\t\tsize: size || size === '0' ? parseFloat( size ) : NaN,\n\t\t\t},\n\t\t} ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextFieldInnerSelection\n\t\t\t\tendAdornment={\n\t\t\t\t\t<SelectionEndAdornment options={ units } onClick={ handleUnitChange } value={ state.value.unit } />\n\t\t\t\t}\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartAdornment={ startIcon ?? <InputAdornment position=\"start\">{ startIcon }</InputAdornment> }\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ Number.isNaN( state.value.size ) ? '' : state.value.size }\n\t\t\t\tonChange={ handleSizeChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import { useEffect, useState } from 'react';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | undefined;\n\tsetExternal: ( value: TValue | undefined ) => void;\n\tpersistWhen: ( value: TValue | undefined ) => boolean;\n\tfallback: ( value: TValue | undefined ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | undefined ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction toInternal( externalValue: TValue | undefined, internalValue: TValue | undefined ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, undefined ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ) );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { bindMenu, bindTrigger, Button, InputAdornment, Menu, MenuItem, TextField, usePopupState } from '@elementor/ui';\nimport { PropValue } from '../props/types';\n\nexport type TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tendAdornment: React.ReactNode;\n\tstartAdornment?: React.ReactNode;\n};\n\nexport const TextFieldInnerSelection = ( {\n\tplaceholder,\n\ttype,\n\tvalue,\n\tonChange,\n\tendAdornment,\n\tstartAdornment,\n}: TextFieldInnerSelectionProps ) => {\n\treturn (\n\t\t<TextField\n\t\t\tsize=\"tiny\"\n\t\t\ttype={ type }\n\t\t\tvalue={ value }\n\t\t\tonChange={ onChange }\n\t\t\tplaceholder={ placeholder }\n\t\t\tInputProps={ {\n\t\t\t\tendAdornment,\n\t\t\t\tstartAdornment,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nexport type SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\tonClick,\n\tvalue,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<Button\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"inherit\"\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ value.toUpperCase() }\n\t\t\t</Button>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuItem key={ option } onClick={ () => handleMenuItemClick( index ) }>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n","import { ImageControl } from './control-types/image-control';\nimport { TextControl } from './control-types/text-control';\nimport { TextAreaControl } from './control-types/text-area-control';\nimport { SizeControl } from './control-types/size-control';\nimport { SelectControl } from './control-types/select-control';\nimport { ControlComponent } from './create-control';\n\nexport type ControlLayout = 'full' | 'two-columns';\n\ntype ControlRegistry = Record< string, { component: ControlComponent; layout: ControlLayout } >;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full' },\n\ttext: { component: TextControl, layout: 'two-columns' },\n\ttextarea: { component: TextAreaControl, layout: 'full' },\n\tsize: { component: SizeControl, layout: 'two-columns' },\n\tselect: { component: SelectControl, layout: 'two-columns' },\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\nexport const getControlByType = ( type: ControlType ) => controlTypes[ type ]?.component;\n\nexport const getLayoutByType = ( type: ControlType ) => controlTypes[ type ].layout;\n","import * as React from 'react';\nimport { styled, Box, BoxProps } from '@elementor/ui';\nimport { ControlLayout, ControlType, getLayoutByType } from '../controls-registry';\n\nexport const ControlTypeContainer = ( {\n\tcontrolType,\n\tchildren,\n}: React.PropsWithChildren< { controlType: ControlType } > ) => {\n\tconst layout = getLayoutByType( controlType );\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\tgridTemplateColumns: {\n\t\tfull: '1fr',\n\t\t'two-columns': 'repeat(2, 1fr)',\n\t}[ layout ],\n} );\n","import * as React from 'react';\nimport { StyleContext } from '../contexts/style-context';\nimport { useElement } from '../controls/providers/element-provider';\nimport { useElementStyles } from '../hooks/use-element-styles';\nimport { Stack } from '@elementor/ui';\nimport { SizeSection } from './style-sections/size-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { StyleDefinition } from '@elementor/editor-style';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\n\nconst CLASSES_PROP_KEY = 'classes';\n\nexport const StyleTab = () => {\n\tconst styleDefinition = useStyleDefinition();\n\tconst classesProp = useClassesProp();\n\n\treturn (\n\t\t<StyleContext selectedStyleDef={ styleDefinition } selectedClassesProp={ classesProp }>\n\t\t\t<Stack>\n\t\t\t\t<SizeSection />\n\t\t\t\t<PositionSection />\n\t\t\t\t<TypographySection />\n\t\t\t\t<BackgroundSection />\n\t\t\t\t<SpacingSection />\n\t\t\t\t<EffectsSection />\n\t\t\t</Stack>\n\t\t</StyleContext>\n\t);\n};\n\nfunction useClassesProp(): string {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'array' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\tthrow new Error( 'Element does not have a classes prop' );\n\t}\n\n\treturn prop[ 0 ];\n}\n\nfunction useStyleDefinition(): StyleDefinition | null {\n\tconst { element } = useElement();\n\tconst elementStyles = useElementStyles( element.id );\n\n\treturn Object.values( elementStyles || {} )[ 0 ] ?? null;\n}\n","import * as React from 'react';\nimport { createContext, ReactNode, useContext } from 'react';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { StyleDefinition, StyleVariant } from '@elementor/editor-style';\n\ntype ContextValue = {\n\tselectedStyleDef: StyleDefinition | null;\n\tselectedMeta: StyleVariant[ 'meta' ];\n\tselectedClassesProp: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = {\n\tchildren: ReactNode;\n\tselectedStyleDef: StyleDefinition | null;\n\tselectedClassesProp: string;\n};\n\nexport function StyleContext( { children, selectedStyleDef, selectedClassesProp }: Props ) {\n\tconst breakpoint = useActiveBreakpoint();\n\t// TODO: Handle state when we support it.\n\tconst selectedMeta = { breakpoint, state: null } as const;\n\n\treturn (\n\t\t<Context.Provider value={ { selectedStyleDef, selectedMeta, selectedClassesProp } }>\n\t\t\t{ children }\n\t\t</Context.Provider>\n\t);\n}\n\nexport function useStyleContext() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'UseStyleContext must be used within a StyleContextProvider' );\n\t}\n\n\treturn context;\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { getElementStyles } from '../sync/get-element-styles';\nimport { ElementID } from '../controls/types';\n\nexport const useElementStyles = ( elementID: ElementID ) => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/atomic-widgets/styles' ),\n\t\t() => {\n\t\t\treturn getElementStyles( elementID );\n\t\t},\n\t\t[ elementID ]\n\t);\n};\n","import { StyleDefinition } from '@elementor/editor-style';\nimport { ElementID } from '../controls/types';\nimport getContainer from '../controls/sync/get-container';\n\nexport const getElementStyles = ( elementID: ElementID ): Record< string, StyleDefinition > | null => {\n\tconst container = getContainer( elementID );\n\n\treturn container?.model.get( 'styles' ) || null;\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../accordion-section';\nimport { StyleControl, StyleControlProps } from '../../controls/style-control';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { Control as BaseControl } from '../../controls/control';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Size', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<Control bind=\"width\" label={ __( 'Width', 'elementor' ) } />\n\t\t\t\t\t<Control bind=\"height\" label={ __( 'Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<Control bind=\"min-width\" label={ __( 'Min. Width', 'elementor' ) } />\n\t\t\t\t\t<Control bind=\"min-height\" label={ __( 'Min. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<Control bind=\"max-width\" label={ __( 'Max. Width', 'elementor' ) } />\n\t\t\t\t\t<Control bind=\"max-height\" label={ __( 'Max. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StyleControlProps[ 'bind' ];\n\tlabel: string;\n};\n\nconst Control = ( { label, bind }: ControlProps ) => {\n\treturn (\n\t\t<Grid item xs={ 6 }>\n\t\t\t<StyleControl bind={ bind }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<StyleControl.Label>{ label }</StyleControl.Label>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<BaseControl type={ 'size' } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</StyleControl>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { PropKey } from './props/types';\nimport { ControlContext } from '../controls/control-context';\nimport { ControlLabel } from '../components/control-label';\nimport { useStyleControl } from './hooks/use-style-control';\n\nexport type StyleControlProps = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const StyleControl = ( { bind, children }: StyleControlProps ) => {\n\tconst [ value, setValue ] = useStyleControl( bind );\n\n\treturn <ControlContext.Provider value={ { bind, value, setValue } }>{ children }</ControlContext.Provider>;\n};\n\n// TODO: When we start using useControl inside the label component, we should create a new component for it,\n// and keep ControlLabel as a simple label component without context.\nStyleControl.Label = ControlLabel;\n","import { commandEndEvent, __privateUseListenTo as useListenTo } from '@elementor/editor-v1-adapters';\nimport { StyleDefinition, StyleDefinitionID, StyleVariant } from '@elementor/editor-style';\nimport { PropKey, PropValue } from '../controls/props/types';\nimport { ElementID } from '../controls/types';\nimport { getElementStyles } from '../sync/get-element-styles';\n\nexport type UseElementStylePropArgs = {\n\telementID: ElementID;\n\tstyleDefID?: StyleDefinitionID;\n\tmeta: StyleVariant[ 'meta' ];\n\tpropName: PropKey;\n};\n\nexport const useElementStyleProp = < T extends PropValue >( {\n\telementID,\n\tstyleDefID,\n\tmeta,\n\tpropName,\n}: UseElementStylePropArgs ): T | null => {\n\treturn useListenTo(\n\t\tcommandEndEvent( 'document/atomic-widgets/styles' ),\n\t\t() => {\n\t\t\t// TODO: return default value for style prop\n\t\t\tif ( ! styleDefID ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst styleDef = getElementStyles( elementID )?.[ styleDefID ];\n\n\t\t\tif ( ! styleDef ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tconst variant = getVariantByMeta( styleDef, meta );\n\n\t\t\treturn variant?.props[ propName ] ?? null;\n\t\t},\n\t\t[ elementID, styleDefID, propName, meta ]\n\t) as T;\n};\n\nfunction getVariantByMeta( styleDef: StyleDefinition, meta: StyleVariant[ 'meta' ] ) {\n\treturn styleDef.variants.find( ( variant ) => {\n\t\treturn variant.meta.breakpoint === meta.breakpoint && variant.meta.state === meta.state;\n\t} );\n}\n","import { __privateRunCommand as runCommand } from '@elementor/editor-v1-adapters';\nimport { StyleDefinitionID, StyleVariant } from '@elementor/editor-style';\nimport getContainer from '../controls/sync/get-container';\nimport { PropKey, Props } from '../controls/props/types';\nimport { ElementID } from '../controls/types';\n\nexport type UpdateStyleProps = {\n\telementID: ElementID;\n\tstyleDefID?: StyleDefinitionID;\n\tmeta: StyleVariant[ 'meta' ];\n\tprops: Props;\n\tbind: PropKey;\n};\n\nexport const updateStyle = ( { elementID, styleDefID, meta, props, bind }: UpdateStyleProps ) => {\n\tconst container = getContainer( elementID );\n\n\trunCommand( 'document/atomic-widgets/styles', {\n\t\tcontainer,\n\t\tstyleDefID,\n\t\tbind,\n\t\tmeta,\n\t\tprops,\n\t} );\n};\n","import { useElement } from '../providers/element-provider';\nimport { useStyleContext } from '../../contexts/style-context';\nimport { useElementStyleProp } from '../../hooks/use-element-style-prop';\nimport { updateStyle } from '../../sync/update-style';\nimport { PropKey, PropValue } from '../props/types';\n\nexport const useStyleControl = < T extends PropValue >( propName: PropKey ) => {\n\tconst { element } = useElement();\n\tconst { selectedStyleDef, selectedMeta, selectedClassesProp } = useStyleContext();\n\n\tconst value = useElementStyleProp< T >( {\n\t\telementID: element.id,\n\t\tstyleDefID: selectedStyleDef?.id,\n\t\tmeta: selectedMeta,\n\t\tpropName,\n\t} );\n\n\tconst setValue = ( newValue: T ) => {\n\t\tupdateStyle( {\n\t\t\telementID: element.id,\n\t\t\tstyleDefID: selectedStyleDef?.id,\n\t\t\tprops: { [ propName ]: newValue },\n\t\t\tmeta: selectedMeta,\n\t\t\tbind: selectedClassesProp,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ] as const;\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Divider, Stack } from '@elementor/ui';\nimport { TextStyleControl } from './text-style-control';\nimport { __ } from '@wordpress/i18n';\nimport { FontSizeControl } from './font-size-control';\nimport { FontWeightControl } from './font-weight-control';\nimport { TextColorControl } from './text-color-control';\nimport { LetterSpacingControl } from './letter-spacing-control';\nimport { WordSpacingControl } from './word-spacing-control';\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { TransformControl } from './transform-control';\nimport { TextAlignmentControl } from './text-alignment-control';\nimport { TextDirectionControl } from './text-direction-control';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Typography', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<FontWeightControl />\n\t\t\t\t<FontSizeControl />\n\t\t\t\t<Divider />\n\t\t\t\t<TextColorControl />\n\t\t\t\t<CollapsibleContent>\n\t\t\t\t\t<Stack gap={ 1.5 } sx={ { pt: 1.5 } }>\n\t\t\t\t\t\t<LetterSpacingControl />\n\t\t\t\t\t\t<WordSpacingControl />\n\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t<TextAlignmentControl />\n\t\t\t\t\t\t<TextStyleControl />\n\t\t\t\t\t\t<TransformControl />\n\t\t\t\t\t\t<TextDirectionControl />\n\t\t\t\t\t</Stack>\n\t\t\t\t</CollapsibleContent>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, ToggleButton as ToggleButtonBase, ToggleButtonGroup, ToggleButtonProps } from '@elementor/ui';\nimport { ItalicIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { ControlLabel } from '../../control-label';\nimport { useStyleControl } from '../../../controls/hooks/use-style-control';\n\nconst buttonSize = 'tiny';\n\nexport const TextStyleControl = () => {\n\tconst [ fontStyle, setFontStyle ] = useStyleControl< string | null >( 'font-style' );\n\tconst [ textDecoration, setTextDecoration ] = useStyleControl< string | null >( 'text-decoration' );\n\n\tconst formats = [ fontStyle, ...( textDecoration || '' ).split( ' ' ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Style', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleButtonGroup value={ formats }>\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tvalue=\"italic\"\n\t\t\t\t\t\tonChange={ ( v ) => setFontStyle( fontStyle === v ? null : v ) }\n\t\t\t\t\t\taria-label=\"italic\"\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItalicIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t<ShorthandControl\n\t\t\t\t\t\tvalue=\"line-through\"\n\t\t\t\t\t\tcurrentValues={ textDecoration || '' }\n\t\t\t\t\t\tupdateValues={ setTextDecoration }\n\t\t\t\t\t\taria-label=\"line-through\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<StrikethroughIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ShorthandControl>\n\t\t\t\t\t<ShorthandControl\n\t\t\t\t\t\tvalue=\"underline\"\n\t\t\t\t\t\tcurrentValues={ textDecoration || '' }\n\t\t\t\t\t\tupdateValues={ setTextDecoration }\n\t\t\t\t\t\taria-label=\"underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<UnderlineIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ShorthandControl>\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n\ntype ShorthandControlProps = React.PropsWithChildren< {\n\tvalue: string;\n\tcurrentValues: string;\n\tupdateValues: ( newValue: string | null ) => void;\n\t'aria-label': string;\n} >;\n\nexport const ShorthandControl = ( {\n\tchildren,\n\tvalue,\n\tcurrentValues,\n\tupdateValues,\n\t'aria-label': ariaLabel,\n}: ShorthandControlProps ) => {\n\tconst valuesArr = currentValues.split( ' ' ).filter( Boolean );\n\tconst selected = valuesArr.includes( value );\n\n\tconst toggleValue = ( newValue: string ) => {\n\t\tif ( selected ) {\n\t\t\tupdateValues( valuesArr.filter( ( v ) => v !== newValue ).join( ' ' ) || null );\n\t\t} else {\n\t\t\tupdateValues( [ ...valuesArr, newValue ].join( ' ' ) );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ToggleButton value={ value } onChange={ toggleValue } selected={ selected } aria-label={ ariaLabel }>\n\t\t\t{ children }\n\t\t</ToggleButton>\n\t);\n};\n\ntype ControlToggleButtonProps = Omit< ToggleButtonProps, 'onChange' > & {\n\tonChange: ( newValue: string ) => void;\n};\n\nconst ToggleButton = ( { onChange, ...props }: ControlToggleButtonProps ) => {\n\tconst handleChange = ( _e: React.MouseEvent< HTMLElement >, newValue: string ) => {\n\t\tonChange( newValue );\n\t};\n\n\treturn <ToggleButtonBase { ...props } onChange={ handleChange } size={ buttonSize } />;\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { SizeControl } from '../../../controls/control-types/size-control';\n\nexport const FontSizeControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"font-size\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Font Size', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { SelectControl } from '../../../controls/control-types/select-control';\n\nconst fontWeightOptions = [\n\t{ label: __( 'Light - 400', 'elementor' ), value: '400' },\n\t{ label: __( 'Regular - 500', 'elementor' ), value: '500' },\n\t{ label: __( 'Semi Bold - 600', 'elementor' ), value: '600' },\n\t{ label: __( 'Bold - 700', 'elementor' ), value: '700' },\n\t{ label: __( 'Black - 900', 'elementor' ), value: '900' },\n];\n\nexport const FontWeightControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"font-weight\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Font Weight', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ fontWeightOptions } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { ColorControl } from '../../../controls/control-types/color-control';\n\nexport const TextColorControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"color\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Text Color', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { UnstableColorPicker, UnstableColorPickerProps } from '@elementor/ui';\nimport { useControl } from '../control-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { TransformablePropValue } from '../props/types';\n\nexport type ColorPropValue = TransformablePropValue< 'color', string >;\n\nexport const ColorControl = createControl(\n\t( props: Partial< Omit< UnstableColorPickerProps, 'value' | 'onChange' > > ) => {\n\t\tconst { value, setValue } = useControl< ColorPropValue >();\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( {\n\t\t\t\t$$type: 'color',\n\t\t\t\tvalue: selectedColor,\n\t\t\t} );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorPicker size=\"tiny\" { ...props } value={ value?.value } onChange={ handleChange } />\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { SizeControl } from '../../../controls/control-types/size-control';\n\nexport const LetterSpacingControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"letter-spacing\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Letter Spacing', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { SizeControl } from '../../../controls/control-types/size-control';\n\nexport const WordSpacingControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"word-spacing\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Word Spacing', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport { Button, Collapse, Stack, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n} >;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false }: 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 sx={ { py: 0.5 } }>\n\t\t\t<Button\n\t\t\t\tfullWidth\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tonClick={ handleToggle }\n\t\t\t\tendIcon={ <ChevronIcon open={ open } /> }\n\t\t\t>\n\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Collapse in={ open } timeout=\"auto\">\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nconst ChevronIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from '@elementor/icons';\nimport { StyleControl } from '../../../controls/style-control';\nimport { ToggleControl } from '../../../controls/control-types/toggle-control';\n\nconst options = [\n\t{ value: 'capitalize', label: __( 'Capitalize', 'elementor' ), icon: LetterCaseIcon },\n\t{ value: 'uppercase', label: __( 'Uppercase', 'elementor' ), icon: LetterCaseUpperIcon },\n\t{ value: 'lowercase', label: __( 'Lowercase', 'elementor' ), icon: LetterCaseLowerIcon },\n];\n\nexport const TransformControl = () => (\n\t<StyleControl bind={ 'text-transform' }>\n\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<StyleControl.Label>{ __( 'Transform', 'elementor' ) }</StyleControl.Label>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StyleControl>\n);\n","import * as React from 'react';\nimport { useControl } from '../control-context';\nimport { ControlToggleButtonGroup, ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { PropValue } from '../props/types';\nimport { createControl } from '../create-control';\n\ntype ToggleControlProps< T extends PropValue > = {\n\toptions: ToggleButtonGroupItem< T >[];\n};\n\nexport const ToggleControl = createControl( < T extends PropValue >( { options }: ToggleControlProps< T > ) => {\n\tconst { value, setValue } = useControl< T >();\n\n\tconst handleToggle = ( option: T | null ) => {\n\t\tsetValue( option || undefined );\n\t};\n\n\treturn (\n\t\t<ControlToggleButtonGroup\n\t\t\titems={ options }\n\t\t\tvalue={ value || null }\n\t\t\tonChange={ handleToggle }\n\t\t\texclusive={ true }\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { JSX } from 'react';\nimport { StackProps, styled, ToggleButton, ToggleButtonGroup } from '@elementor/ui';\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\ticon: JSX.ElementType;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n`;\n\ntype ExclusiveValue< TValue > = TValue | null;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n\titems: ToggleButtonGroupItem< TValue >[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\texclusive = false,\n}: Props< TValue > ) => {\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\treturn (\n\t\t<StyledToggleButtonGroup justify={ justify } value={ value } onChange={ handleChange } exclusive={ exclusive }>\n\t\t\t{ items.map( ( { label, value: buttonValue, icon: Icon } ) => (\n\t\t\t\t<ToggleButton key={ buttonValue } value={ buttonValue } aria-label={ label } size={ size }>\n\t\t\t\t\t<Icon fontSize={ size } />\n\t\t\t\t</ToggleButton>\n\t\t\t) ) }\n\t\t</StyledToggleButtonGroup>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { AlignLeftIcon, AlignCenterIcon, AlignRightIcon, AlignJustifiedIcon } from '@elementor/icons';\nimport { ToggleButtonGroupItem } from '../../../controls/components/control-toggle-button-group';\nimport { StyleControl } from '../../../controls/style-control';\nimport { ToggleControl } from '../../../controls/control-types/toggle-control';\n\ntype Alignments = 'left' | 'center' | 'right' | 'justify';\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'left',\n\t\tlabel: __( 'Left', 'elementor' ),\n\t\ticon: AlignLeftIcon,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\ticon: AlignCenterIcon,\n\t},\n\t{\n\t\tvalue: 'right',\n\t\tlabel: __( 'Right', 'elementor' ),\n\t\ticon: AlignRightIcon,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\ticon: AlignJustifiedIcon,\n\t},\n];\n\nexport const TextAlignmentControl = () => {\n\treturn (\n\t\t<StyleControl bind={ 'text-align' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Alignment', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { ToggleButtonGroupItem } from '../../../controls/components/control-toggle-button-group';\nimport { StyleControl } from '../../../controls/style-control';\nimport { ToggleControl } from '../../../controls/control-types/toggle-control';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to Right', 'elementor' ),\n\t\ticon: TextDirectionLtrIcon,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to Left', 'elementor' ),\n\t\ticon: TextDirectionRtlIcon,\n\t},\n];\n\nexport const TextDirectionControl = () => {\n\treturn (\n\t\t<StyleControl bind={ 'direction' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Direction', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Stack } from '@elementor/ui';\nimport { ZIndexControl } from './z-index-control';\nimport { __ } from '@wordpress/i18n';\n\nexport const PositionSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Position', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<ZIndexControl />\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StyleControl } from '../../../controls/style-control';\nimport { NumberControl } from '../../../controls/control-types/number-control';\n\nexport const ZIndexControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"z-index\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Z-Index', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<NumberControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useControl } from '../control-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number ) =>\n\tvalue === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue } = useControl< number | undefined >();\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst eventValue: string = event.target.value;\n\t\tsetValue( isEmptyOrNaN( eventValue ) ? undefined : Number( eventValue ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { LinkedDimensionsControl } from './linked-dimensions-control';\nimport { StyleControl } from '../../../controls/style-control';\n\nexport const SpacingSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<StyleControl bind={ 'padding' }>\n\t\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } />\n\t\t\t\t</StyleControl>\n\t\t\t\t<Divider />\n\t\t\t\t<StyleControl bind={ 'margin' }>\n\t\t\t\t\t<LinkedDimensionsControl label={ __( 'Margin', 'elementor' ) } />\n\t\t\t\t</StyleControl>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { PropValue, TransformablePropValue } from '../../../controls/props/types';\nimport { SizeControl } from '../../../controls/control-types/size-control';\nimport { ControlLabel } from '../../control-label';\nimport { ControlContext, useControl } from '../../../controls/control-context';\n\nexport type Position = 'top' | 'right' | 'bottom' | 'left';\n\nexport type LinkedDimensionsValue = TransformablePropValue<\n\t'linked-dimensions',\n\t{\n\t\tisLinked: boolean;\n\t\ttop: PropValue;\n\t\tright: PropValue;\n\t\tbottom: PropValue;\n\t\tleft: PropValue;\n\t}\n>;\n\nexport const LinkedDimensionsControl = ( { label }: { label: string } ) => {\n\tconst { value, setValue } = useControl< LinkedDimensionsValue >();\n\tconst { top, right, bottom, left, isLinked = true } = value?.value || {};\n\n\tconst setLinkedValue = ( position: Position, newValue: PropValue ) => {\n\t\tconst updatedValue = {\n\t\t\tisLinked,\n\t\t\ttop: isLinked ? newValue : top,\n\t\t\tright: isLinked ? newValue : right,\n\t\t\tbottom: isLinked ? newValue : bottom,\n\t\t\tleft: isLinked ? newValue : left,\n\t\t\t[ position ]: newValue,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'linked-dimensions',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\tconst toggleLinked = () => {\n\t\tconst updatedValue = {\n\t\t\tisLinked: ! isLinked,\n\t\t\ttop,\n\t\t\tright: ! isLinked ? top : right,\n\t\t\tbottom: ! isLinked ? top : bottom,\n\t\t\tleft: ! isLinked ? top : left,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'linked-dimensions',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\n\treturn (\n\t\t<>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ toggleLinked }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Top', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'top' }\n\t\t\t\t\t\t\tvalue={ top }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideTopIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Right', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'right' }\n\t\t\t\t\t\t\tvalue={ right }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideRightIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Bottom', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'bottom' }\n\t\t\t\t\t\t\tvalue={ bottom }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideBottomIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Left', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'left' }\n\t\t\t\t\t\t\tvalue={ left }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideLeftIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</>\n\t);\n};\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tvalue,\n\tsetValue,\n}: {\n\tbind: Position;\n\tvalue: PropValue;\n\tstartIcon: React.ReactNode;\n\tsetValue: ( bind: Position, newValue: PropValue ) => void;\n} ) => (\n\t<ControlContext.Provider\n\t\tvalue={ {\n\t\t\tbind,\n\t\t\tsetValue: ( newValue ) => setValue( bind, newValue ),\n\t\t\tvalue,\n\t\t} }\n\t>\n\t\t<SizeControl startIcon={ startIcon } />\n\t</ControlContext.Provider>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@elementor/ui';\nimport { AccordionSection } from '../../accordion-section';\nimport { StyleControl } from '../../../controls/style-control';\nimport { BoxShadowRepeater } from './box-shadow-repeater';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Effects', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<StyleControl bind=\"box-shadow\">\n\t\t\t\t\t<BoxShadowRepeater />\n\t\t\t\t</StyleControl>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, Stack, UnstableColorIndicator } from '@elementor/ui';\nimport { Repeater } from '../../../controls/components/repeater';\nimport { ControlContext, useControl } from '../../../controls/control-context';\nimport { PropValue, TransformablePropValue } from '../../../controls/props/types';\nimport { SizeControl, SizeControlValue } from '../../../controls/control-types/size-control';\nimport { ColorControl, ColorPropValue } from '../../../controls/control-types/color-control';\nimport { ControlLabel } from '../../control-label';\nimport { SelectControl } from '../../../controls/control-types/select-control';\n\ntype SetContextValue = ( v: PropValue ) => void;\n\nexport type BoxShadow = TransformablePropValue< 'box-shadow', Shadow[] >;\n\nexport type Shadow = TransformablePropValue<\n\t'shadow',\n\t{\n\t\tposition: string;\n\t\thOffset: SizeControlValue;\n\t\tvOffset: SizeControlValue;\n\t\tblur: SizeControlValue;\n\t\tspread: SizeControlValue;\n\t\tcolor: ColorPropValue;\n\t}\n>;\n\nexport const BoxShadowRepeater = () => {\n\tconst { value, setValue } = useControl< BoxShadow >();\n\n\tconst boxShadowValues = value?.value;\n\n\tconst setBoxShadow = ( newValue: BoxShadow[ 'value' ] ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'box-shadow',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Repeater\n\t\t\tvalues={ boxShadowValues }\n\t\t\tsetValues={ setBoxShadow }\n\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\titemSettings={ {\n\t\t\t\tIcon: ItemIcon,\n\t\t\t\tLabel: ItemLabel,\n\t\t\t\tContent: ItemContent,\n\t\t\t\tinitialValues: initialShadow,\n\t\t\t} }\n\t\t/>\n\t);\n};\n\nconst ItemIcon = ( { value }: { value: Shadow } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color.value } />\n);\n\nconst ItemContent = ( {\n\tanchorEl,\n\tvalue,\n\tsetValue,\n}: {\n\tanchorEl: HTMLElement | null;\n\tvalue: Shadow;\n\tsetValue: ( newValue: Shadow ) => void;\n} ) => {\n\tconst setShadow = ( newValue: Shadow[ 'value' ] ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'shadow',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"color\"\n\t\t\t\t\tvalue={ value.value.color }\n\t\t\t\t\tlabel={ __( 'Color', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: ColorPropValue ) => setShadow( { ...value.value, color: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<ColorControl\n\t\t\t\t\t\tanchorEl={ anchorEl }\n\t\t\t\t\t\tanchorOrigin={ {\n\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ttransformOrigin={ {\n\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\thorizontal: -10,\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"position\"\n\t\t\t\t\tvalue={ value.value.position }\n\t\t\t\t\tlabel={ __( 'Position', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: string ) => setShadow( { ...value.value, position: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ label: 'Inset', value: 'inset' },\n\t\t\t\t\t\t\t{ label: 'Outset', value: 'outset' },\n\t\t\t\t\t\t] }\n\t\t\t\t\t/>\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"hOffset\"\n\t\t\t\t\tlabel={ __( 'Horizontal', 'elementor' ) }\n\t\t\t\t\tvalue={ value.value.hOffset }\n\t\t\t\t\tsetValue={ ( v: SizeControlValue ) => setShadow( { ...value.value, hOffset: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tlabel={ __( 'Vertical', 'elementor' ) }\n\t\t\t\t\tbind=\"vOffset\"\n\t\t\t\t\tvalue={ value.value.vOffset }\n\t\t\t\t\tsetValue={ ( v: SizeControlValue ) => setShadow( { ...value.value, vOffset: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"blur\"\n\t\t\t\t\tvalue={ value.value.blur }\n\t\t\t\t\tlabel={ __( 'Blur', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: SizeControlValue ) => setShadow( { ...value.value, blur: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"spread\"\n\t\t\t\t\tlabel={ __( 'Spread', 'elementor' ) }\n\t\t\t\t\tvalue={ value.value.spread }\n\t\t\t\t\tsetValue={ ( v: SizeControlValue ) => setShadow( { ...value.value, spread: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t</Stack>\n\t);\n};\n\nconst Control = < T extends PropValue >( {\n\tvalue,\n\tsetValue,\n\tlabel,\n\tbind,\n\tchildren,\n}: {\n\tvalue: T;\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsetValue: ( v: T ) => void;\n} ) => (\n\t<ControlContext.Provider value={ { value, setValue: setValue as SetContextValue, bind } }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container spacing={ 1 } 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{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</ControlContext.Provider>\n);\n\nconst ItemLabel = ( { value }: { value: Shadow } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: hOffsetSize, unit: hOffsetUnit } = hOffset.value;\n\tconst { size: vOffsetSize, unit: vOffsetUnit } = vOffset.value;\n\tconst { size: blurSize, unit: blurUnit } = blur.value;\n\tconst { size: spreadSize, unit: spreadUnit } = spread.value;\n\n\tconst sizes = [\n\t\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\t].join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ position }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: Shadow = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 0)',\n\t\t},\n\t\tposition: 'inset',\n\t},\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { PlusIcon, XIcon, CopyIcon, EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tStack,\n\tPopover,\n\tIconButton,\n\tbindTrigger,\n\tbindPopover,\n\tusePopupState,\n\tUnstableTagProps,\n\tUnstableTag,\n\tTypography,\n} from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\n\nexport type RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\tsetValues: ( newValue: T[] ) => void;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: React.ComponentType< {\n\t\t\tvalue: T;\n\t\t\tsetValue: ( newValue: T ) => void;\n\t\t\tanchorEl: AnchorEl;\n\t\t} >;\n\t};\n};\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n}: RepeaterProps< Item< T > > ) => {\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\n\t\tsetRepeaterValues( [ ...repeaterValues, newItem ] );\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( [\n\t\t\t...repeaterValues.slice( 0, index ),\n\t\t\tstructuredClone( repeaterValues[ index ] ),\n\t\t\t...repeaterValues.slice( index ),\n\t\t] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( repeaterValues.filter( ( _, i ) => i !== index ) );\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues(\n\t\t\trepeaterValues.map( ( value, i ) => {\n\t\t\t\tif ( i === index ) {\n\t\t\t\t\tconst { disabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( disabled ? {} : { disabled: true } ) } as Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Stack direction=\"row\" justifyContent=\"space-between\" sx={ { py: 0.5 } }>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton size={ SIZE } onClick={ addRepeaterItem } aria-label={ __( 'Add item', 'elementor' ) }>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t{ repeaterValues.map( ( value, index ) => (\n\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tdisabled={ value.disabled }\n\t\t\t\t\t\tlabel={ <itemSettings.Label value={ value } /> }\n\t\t\t\t\t\tstartIcon={ <itemSettings.Icon value={ value } /> }\n\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tsetValue={ ( newValue ) =>\n\t\t\t\t\t\t\t\t\tsetRepeaterValues(\n\t\t\t\t\t\t\t\t\t\trepeaterValues.map( ( item, i ) => ( i === index ? newValue : item ) )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</RepeaterItem>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n};\n\ntype RepeaterItemProps = {\n\tlabel: React.ReactNode;\n\tdisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( { anchorEl }: { anchorEl: AnchorEl } ) => React.ReactNode;\n};\n\nconst RepeaterItem = ( {\n\tlabel,\n\tdisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n}: RepeaterItemProps ) => {\n\tconst popupId = useId();\n\tconst tagRef = useRef< HTMLElement >( null );\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\n\tconst popoverState = usePopupState( { popupId, variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tref={ tagRef }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ duplicateItem }\n\t\t\t\t\t\t\taria-label={ __( 'Duplicate item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ toggleDisableItem }\n\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\tdisabled ? __( 'Enable item', 'elementor' ) : __( 'Disable item', 'elementor' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ disabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeItem }\n\t\t\t\t\t\t\taria-label={ __( 'Remove item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { ref: setAnchorEl, sx: { width: tagRef.current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<Box p={ 2 }>{ children( { anchorEl } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@elementor/ui';\nimport { AccordionSection } from '../../accordion-section';\nimport { BackgroundColorControl } from './background-color-control';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Background', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<BackgroundColorControl />\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { StyleControl } from '../../../controls/style-control';\nimport { Grid } from '@elementor/ui';\nimport { ColorControl } from '../../../controls/control-types/color-control';\n\nexport const BackgroundColorControl = () => {\n\treturn (\n\t\t<StyleControl bind=\"background-color\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<StyleControl.Label>{ __( 'Color', 'elementor' ) }</StyleControl.Label>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StyleControl>\n\t);\n};\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 { panel } from './panel';\nimport { injectIntoLogic } from '@elementor/editor';\nimport { shouldUseV2Panel } from './sync/should-use-v2-panel';\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { __privateBlockDataCommand as blockDataCommand } from '@elementor/editor-v1-adapters';\nimport { init as initDynamics } from './dynamics/init';\n\nexport default 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\nconst blockV1Panel = () => {\n\tblockDataCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: shouldUseV2Panel,\n\t} );\n};\n","import getSelectedElements from './get-selected-elements';\nimport getWidgetsCache from './get-widgets-cache';\n\nexport const shouldUseV2Panel = () => {\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 { useEffect } from 'react';\nimport { commandStartEvent, __privateListenTo as listenTo } from '@elementor/editor-v1-adapters';\nimport { usePanelActions } from '../panel';\nimport { shouldUseV2Panel } from '../sync/should-use-v2-panel';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( shouldUseV2Panel() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\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 { useId } from 'react';\nimport { useControl } from '../../controls/control-context';\nimport { DynamicPropValue, DynamicTag } from '../types';\nimport { DynamicControl } from '../dynamic-control';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport type { Control, ControlsSection } from '../../controls/types';\nimport { DynamicSelection } from './dynamic-selection';\nimport { ControlType, getControlByType } from '../../controls/controls-registry';\nimport { ControlLabel } from '../../components/control-label';\nimport { Control as BaseControl } from '../../controls/control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tTabs,\n\tDivider,\n\tuseTabs,\n\tTab,\n\tTabPanel,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { usePropValueHistory } from '../hooks/use-prop-value-history';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { bind, value, setValue } = useControl< DynamicPropValue | null >();\n\tconst [ propValueFromHistory ] = usePropValueHistory( bind );\n\tconst { name: tagName = '' } = value?.value || {};\n\n\tconst selectionPopoverId = useId();\n\tconst selectionPopoverState = usePopupState( { variant: 'popover', popupId: selectionPopoverId } );\n\n\tconst dynamicTag = useDynamicTag( bind, tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetValue( 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: 'left' } }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Dynamic Tags', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ selectionPopoverState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSelection onSelect={ selectionPopoverState.close } />\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupId = useId();\n\tconst settingsPopupState = usePopupState( { variant: 'popover', popupId } );\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( settingsPopupState ) }\n\t\t\t\taria-label={ __( '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\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( settingsPopupState ) }\n\t\t\t>\n\t\t\t\t<Paper component={ Stack } sx={ { minHeight: '300px', width: '220px' } }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" px={ 1.5 } pt={ 2 } pb={ 1 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ dynamicTag.label }</Typography>\n\t\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ settingsPopupState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } />\n\t\t\t\t</Paper>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls }: { controls: DynamicTag[ 'atomic_controls' ] } ) => {\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\treturn (\n\t\t<>\n\t\t\t<Tabs indicatorColor=\"secondary\" textColor=\"secondary\" { ...getTabsProps() }>\n\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t<Tab key={ index } label={ value.label } sx={ { px: 1, py: 0.5 } } { ...getTabProps( index ) } />\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t\t<Divider />\n\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel key={ index } sx={ { flexGrow: 1 } } { ...getTabPanelProps( index ) }>\n\t\t\t\t\t\t<Stack gap={ 1 } px={ 2 }>\n\t\t\t\t\t\t\t{ value.items.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t{ control.label ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t</DynamicControl>\n\t);\n};\n","import * as React from 'react';\nimport { ControlContext, useControl } from '../controls/control-context';\nimport { PropKey, PropValue } from '../controls/props/types';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { DynamicPropValue } from './types';\n\nexport type DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue, bind: propName } = useControl< DynamicPropValue >();\n\tconst { name = '', settings } = value?.value ?? {};\n\n\tconst dynamicTag = useDynamicTag( propName, name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst defaultValue = dynamicTag.props_schema[ bind ]?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue = ( newValue: PropValue ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'dynamic',\n\t\t\tvalue: {\n\t\t\t\tname,\n\t\t\t\tsettings: {\n\t\t\t\t\t...settings,\n\t\t\t\t\t[ bind ]: newValue,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<ControlContext.Provider value={ { setValue: setDynamicValue, value: dynamicValue, bind } }>\n\t\t\t{ children }\n\t\t</ControlContext.Provider>\n\t);\n};\n","import { useMemo } from 'react';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\nimport { PropKey } from '../../controls/props/types';\nimport { DynamicTag } from '../types';\n\nexport const useDynamicTag = ( propName: PropKey, tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags( propName );\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { useElement } from '../../controls/providers/element-provider';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { PropKey } from '../../controls/props/types';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = ( propName: PropKey ) => {\n\tlet categories: string[] = [];\n\n\tconst { elementType } = useElement();\n\n\tconst propType = elementType.propsSchema?.[ propName ];\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 dynamicTags = getAtomicDynamicTags();\n\n\tif ( ! categories.length || ! dynamicTags?.tags ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\treturn Object.values( dynamicTags.tags ).filter( ( dynamicTag ) =>\n\t\tdynamicTag.categories.some( ( category ) => _categories.has( category ) )\n\t);\n};\n","import { 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 { z } from '@elementor/schema';\n\n// TODO: Move this file content a shared package.\nconst transformableSchema = z.object( {\n\t$$type: z.string(),\n\tvalue: z.any(),\n} );\n\nexport type TransformablePropValue = z.infer< typeof transformableSchema >;\n\nexport const isTransformable = ( value: unknown ): value is TransformablePropValue => {\n\treturn transformableSchema.safeParse( value ).success;\n};\n","import { PropType, PropValue, TransformablePropType } from '../controls/props/types';\nimport { DynamicPropType, DynamicPropValue } from './types';\nimport { isTransformable } from '../controls/props/is-transformable';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nexport const 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","import * as React from 'react';\nimport { useState, Fragment } from 'react';\nimport { SearchIcon, PhotoIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tDivider,\n\tInputAdornment,\n\tLink,\n\tListSubheader,\n\tMenuItem,\n\tMenuList,\n\tStack,\n\tTextField,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { useControl } from '../../controls/control-context';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { isDynamicPropValue } from '../utils';\nimport { usePropValueHistory } from '../hooks/use-prop-value-history';\nimport { DynamicPropValue } from '../types';\nimport { PropKey, PropValue } from '../../controls/props/types';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\nexport type DynamicSelectionProps = {\n\tonSelect?: () => void;\n};\n\nexport const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\tconst { bind, value: currentValue, setValue } = useControl< DynamicPropValue | PropValue >();\n\tconst [ , updatePropValueHistory ] = usePropValueHistory( bind );\n\n\tconst isCurrentValueDynamic = isDynamicPropValue( currentValue );\n\n\tconst options = useFilteredOptions( bind, searchValue );\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( currentValue );\n\t\t}\n\n\t\tsetValue( { $$type: 'dynamic', value: { name: value, settings: {} } } );\n\n\t\tonSelect?.();\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t<TextField\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\tplaceholder={ __( 'Search dynamic tag', 'elementor' ) }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t\t<Divider />\n\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t{ options.length > 0 ? (\n\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t{ options.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t<ListSubheader sx={ { typography: 'caption', color: 'text.tertiary' } }>\n\t\t\t\t\t\t\t\t\t{ dynamicGroups?.[ category ]?.title || category }\n\t\t\t\t\t\t\t\t</ListSubheader>\n\t\t\t\t\t\t\t\t{ items.map( ( { value, label: tagLabel } ) => {\n\t\t\t\t\t\t\t\t\tconst isSelected = isCurrentValueDynamic && value === currentValue?.value?.name;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\tsx={ { typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => handleSetDynamicTag( value ) }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ tagLabel }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</Fragment>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</MenuList>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack alignItems=\"center\" p={ 2.5 } gap={ 1.5 }>\n\t\t\t\t\t\t<PhotoIcon fontSize=\"large\" />\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t“{ searchValue }”.\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Clear the filters', 'elementor' ) }\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{ __( 'and try again.', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t</Stack>\n\t);\n};\n\nconst useFilteredOptions = ( bind: PropKey, searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags( bind );\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, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import { PropValue } from '../../controls/props/types';\nimport { useElement } from '../../controls/providers/element-provider';\n\nexport const PROPS_VALUES_HISTORY_KEY = 'elementor/dynamic/non-dynamic-values-history';\n\nexport const usePropValueHistory = ( path: string ) => {\n\tconst valuesHistory = getValues();\n\tconst { element } = useElement();\n\tconst key = `${ element.id }-${ path }`;\n\n\tconst value = valuesHistory[ key ] ?? null;\n\n\tconst setValue = ( newValue: PropValue ) => {\n\t\tsetValues( { ...valuesHistory, [ key ]: newValue } );\n\t};\n\n\treturn [ value, setValue ] as const;\n};\n\nconst getValues = () => {\n\treturn JSON.parse( sessionStorage.getItem( PROPS_VALUES_HISTORY_KEY ) || '{}' );\n};\n\nconst setValues = ( values: Record< string, PropValue > ) => {\n\tsessionStorage.setItem( PROPS_VALUES_HISTORY_KEY, JSON.stringify( values ) );\n};\n","import * as React from 'react';\nimport { useElement } from '../../controls/providers/element-provider';\nimport { supportsDynamic } from '../utils';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\nimport { useControl } from '../../controls/control-context';\nimport { PopoverActionProps } from '../../controls/control-actions/actions/popover-action';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { bind } = useControl();\n\tconst { elementType } = useElement();\n\n\tconst propType = elementType.propsSchema[ bind ];\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic Tags', 'elementor' ),\n\t\tpopoverContent: ( { closePopover } ) => <DynamicSelection onSelect={ closePopover } />,\n\t};\n};\n","import { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { isDynamicPropValue } from './utils';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { controlActionsMenu } from '../controls/control-actions/control-actions-menu';\nimport { replaceControl } from '../control-replacement';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport const init = () => {\n\treplaceControl( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n};\n","export type { PopoverActionProps } from './controls/control-actions/actions/popover-action';\nexport { replaceControl } from './control-replacement';\nexport { useControl } from './controls/control-context';\nexport { controlActionsMenu } from './controls/control-actions/control-actions-menu';\n\nimport init from './init';\n\ninit();\n"],"mappings":"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","names":["createContext","useContext","createContext","useContext","replaceControl","getControlReplacement","React","React","__","React","createContext","useContext","useListenTo","commandEndEvent","useListenTo","commandEndEvent","Stack","React","__","React","Stack","React","commandEndEvent","useListenTo","useListenTo","commandEndEvent","React","Typography","React","useId","Stack","React","React","Stack","__","React","Stack","React","MenuItem","React","Stack","React","options","Stack","__","React","React","TextField","TextField","React","InputAdornment","React","useId","Button","MenuItem","TextField","usePopupState","options","InputAdornment","React","styled","styled","Stack","Control","React","React","createContext","useContext","Context","useListenTo","commandEndEvent","useListenTo","commandEndEvent","Stack","React","React","commandEndEvent","useListenTo","useListenTo","commandEndEvent","runCommand","runCommand","Grid","Stack","__","__","Stack","Grid","Control","React","Stack","React","__","Grid","Grid","__","__","React","__","Grid","Grid","__","React","__","Grid","__","Grid","React","__","Grid","React","Grid","__","React","__","Grid","Grid","__","React","__","Grid","Grid","__","React","useState","Button","Stack","styled","__","React","__","Grid","React","React","styled","ToggleButton","ToggleButtonGroup","options","__","Grid","React","__","Grid","options","__","Grid","React","__","Grid","options","__","Grid","__","Stack","React","Stack","React","__","Grid","React","TextField","TextField","Grid","__","__","Stack","React","Divider","Stack","__","React","__","Grid","Stack","ToggleButton","Stack","ToggleButton","__","Grid","Control","__","Stack","Divider","React","__","Stack","React","__","Grid","Stack","React","useId","useState","__","XIcon","Box","Stack","Popover","IconButton","bindTrigger","bindPopover","usePopupState","Typography","SIZE","__","Stack","Grid","Control","__","Stack","React","__","Stack","React","__","Grid","Grid","__","__","Stack","Stack","Stack","__","ErrorBoundary","React","Box","__","ErrorBoundary","useEffect","useEffect","React","useId","React","useMemo","useMemo","XIcon","React","useState","Fragment","Box","Divider","InputAdornment","MenuItem","Stack","TextField","Typography","__","SIZE","useState","options","Stack","Box","TextField","__","InputAdornment","Divider","Fragment","MenuItem","Typography","bindPopover","bindTrigger","Box","IconButton","Popover","Stack","Typography","usePopupState","Tabs","Divider","useTabs","Tab","TabPanel","__","SIZE","useId","usePopupState","Box","bindTrigger","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","React","DatabaseIcon","__","DatabaseIcon","__","init","init"]}
|
|
1
|
+
{"version":3,"sources":["../src/controls/controls/image-control.tsx","../src/controls/bound-prop-context.tsx","../src/controls/controls/image-media-control.tsx","../src/controls/control-actions/control-actions.tsx","../src/controls/control-actions/control-actions-context.tsx","../src/controls/create-control.tsx","../src/controls/create-control-replacement.tsx","../src/controls/controls/select-control.tsx","../src/components/control-label.tsx","../src/controls/controls/text-control.tsx","../src/controls/controls/text-area-control.tsx","../src/controls/controls/size-control.tsx","../src/controls/hooks/use-sync-external-state.tsx","../src/controls/components/text-field-inner-selection.tsx","../src/controls/controls/stroke-control.tsx","../src/controls/controls/color-control.tsx","../src/controls/controls/box-shadow-repeater-control.tsx","../src/controls/components/repeater.tsx","../src/controls/controls/toggle-control.tsx","../src/controls/components/control-toggle-button-group.tsx","../src/controls/controls/number-control.tsx","../src/controls/control-actions/control-actions-menu.ts","../src/control-replacement.tsx","../src/panel.ts","../src/components/editing-panel.tsx","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls-registry/settings-field.tsx","../src/contexts/element-context.tsx","../src/components/accordion-section.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/components/style-tab.tsx","../src/contexts/style-context.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-field.ts","../src/contexts/classes-prop-context.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/style-sections/typography-section/text-style-field.tsx","../src/components/style-sections/typography-section/font-size-field.tsx","../src/components/style-sections/typography-section/font-weight-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/letter-spacing-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/collapsible-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/controls/controls/linked-dimensions-control.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/background-section/background-section.tsx","../src/components/style-sections/background-section/background-color-field.tsx","../src/components/style-sections/border-section/border-section.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/controls/controls/equal-unequal-sizes-control.tsx","../src/components/style-sections/border-section/border-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/editing-panel-error-fallback.tsx","../src/popover-action.tsx","../src/controls-actions.ts","../src/init.ts","../src/sync/should-use-v2-panel.ts","../src/hooks/use-open-editor-panel.ts","../src/components/editing-panel-hooks.tsx","../src/dynamics/components/dynamic-selection-control.tsx","../src/dynamics/dynamic-control.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.tsx","../src/dynamics/hooks/use-prop-value-history.ts","../src/dynamics/hooks/use-prop-dynamic-action.tsx","../src/dynamics/init.ts","../src/index.ts"],"sourcesContent":["import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { BoundPropProvider, useBoundProp } from '../bound-prop-context';\nimport { Grid, Stack } from '@elementor/ui';\nimport { PropValue, ImagePropValue, SizePropValue, ImageSrcPropValue } from '@elementor/editor-props';\nimport { ImageMediaControl } from './image-media-control';\nimport { SelectControl } from './select-control';\nimport { createControl } from '../create-control';\nimport { ControlLabel } from '../../components/control-label';\n\ntype SetContextValue = ( v: PropValue ) => void;\n\nexport type ImageControlProps = {\n\tsizes: { label: string; value: string }[];\n};\n\nexport const ImageControl = createControl( ( props: ImageControlProps ) => {\n\tconst { value, setValue } = useBoundProp< ImagePropValue | undefined >();\n\tconst { src, size } = value?.value || {};\n\n\tconst setImageSrc = ( newValue: ImageSrcPropValue ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: newValue,\n\t\t\t\tsize: size as SizePropValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\tconst setImageSize = ( newValue: SizePropValue ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'image',\n\t\t\tvalue: {\n\t\t\t\tsrc: src as ImageSrcPropValue,\n\t\t\t\tsize: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 2 }>\n\t\t\t<BoundPropProvider value={ src } setValue={ setImageSrc as SetContextValue } bind={ 'src' }>\n\t\t\t\t<ImageMediaControl />\n\t\t\t</BoundPropProvider>\n\t\t\t<BoundPropProvider value={ size } setValue={ setImageSize as SetContextValue } bind={ 'size' }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<ControlLabel> { __( 'Image Resolution', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t<SelectControl options={ props.sizes } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</BoundPropProvider>\n\t\t</Stack>\n\t);\n} );\n","import * as React from 'react';\nimport { PropKey, PropValue } from '@elementor/editor-props';\nimport { createContext, useContext } from 'react';\n\nexport type BoundPropContext< T extends PropValue > = {\n\tbind: PropKey;\n\tsetValue: ( value: T | undefined ) => void;\n\tvalue: T | undefined;\n};\n\nexport type BoundPropProviderProps< T extends PropValue > = BoundPropContext< T > & {\n\tchildren: React.ReactNode;\n};\n\nconst BoundPropContext = createContext< BoundPropContext< PropValue > | null >( null );\nexport const BoundPropProvider = ( { children, value, setValue, bind }: BoundPropProviderProps< PropValue > ) => {\n\treturn <BoundPropContext.Provider value={ { value, setValue, bind } }>{ children }</BoundPropContext.Provider>;\n};\n\nexport function useBoundProp< T extends PropValue >(): BoundPropContext< T | undefined >;\nexport function useBoundProp< T extends PropValue >( defaultValue: T ): BoundPropContext< T >;\nexport function useBoundProp< T extends PropValue >( defaultValue?: T ) {\n\tconst boundPropContext = useContext< BoundPropContext< T > >( BoundPropContext as never );\n\n\tif ( ! boundPropContext ) {\n\t\tthrow new Error( 'useBoundProp must be used within a BoundPropContext' );\n\t}\n\n\treturn { ...boundPropContext, value: boundPropContext.value ?? defaultValue };\n}\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { ImageSrcPropValue } from '@elementor/editor-props';\nimport { UploadIcon } from '@elementor/icons';\nimport { Button, Card, CardMedia, CardOverlay, Stack } from '@elementor/ui';\nimport { useWpMediaAttachment, useWpMediaFrame } from '@elementor/wp-media';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const ImageMediaControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp< ImageSrcPropValue >();\n\tconst { id, url } = value?.value ?? {};\n\n\tconst { data: attachment } = useWpMediaAttachment( id?.value || null );\n\tconst src = attachment?.url ?? url;\n\n\tconst { open } = useWpMediaFrame( {\n\t\ttypes: [ 'image' ],\n\t\tmultiple: false,\n\t\tselected: id?.value || null,\n\t\tonSelect: ( selectedAttachment ) => {\n\t\t\tsetValue( {\n\t\t\t\t$$type: 'image-src',\n\t\t\t\tvalue: {\n\t\t\t\t\tid: {\n\t\t\t\t\t\t$$type: 'image-attachment-id',\n\t\t\t\t\t\tvalue: selectedAttachment.id,\n\t\t\t\t\t},\n\t\t\t\t\turl: null,\n\t\t\t\t},\n\t\t\t} );\n\t\t},\n\t} );\n\n\treturn (\n\t\t<Card variant=\"outlined\">\n\t\t\t<CardMedia image={ src } sx={ { height: 150 } } />\n\t\t\t<CardOverlay>\n\t\t\t\t<ControlActions>\n\t\t\t\t\t<Stack gap={ 0.5 }>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'browse' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Select Image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tvariant=\"text\"\n\t\t\t\t\t\t\tcolor=\"inherit\"\n\t\t\t\t\t\t\tstartIcon={ <UploadIcon /> }\n\t\t\t\t\t\t\tonClick={ () => open( { mode: 'upload' } ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Upload Image', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Stack>\n\t\t\t\t</ControlActions>\n\t\t\t</CardOverlay>\n\t\t</Card>\n\t);\n} );\n","import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { styled, UnstableFloatingActionBar } from '@elementor/ui';\nimport { useControlActions } from './control-actions-context';\n\n// CSS hack to hide empty floating bars.\nconst FloatingBarContainer = styled( 'span' )`\n\tdisplay: contents;\n\n\t.MuiFloatingActionBar-popper:has( .MuiFloatingActionBar-actions:empty ) {\n\t\tdisplay: none;\n\t}\n`;\n\nexport type ControlActionsProps = PropsWithChildren< object >;\n\nexport default function ControlActions( { children }: ControlActionsProps ) {\n\tconst { items } = useControlActions();\n\n\tif ( items.length === 0 ) {\n\t\treturn children;\n\t}\n\n\tconst menuItems = items.map( ( { MenuItem, id } ) => <MenuItem key={ id } /> );\n\n\treturn (\n\t\t<FloatingBarContainer>\n\t\t\t<UnstableFloatingActionBar actions={ menuItems }>{ children }</UnstableFloatingActionBar>\n\t\t</FloatingBarContainer>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, PropsWithChildren, useContext } from 'react';\n\ntype ControlActionsContext = {\n\titems: Array< {\n\t\tid: string;\n\t\tMenuItem: React.ComponentType;\n\t} >;\n};\n\nconst Context = createContext< ControlActionsContext | null >( null );\n\nexport type ControlActionsProviderProps = PropsWithChildren< ControlActionsContext >;\n\nexport const ControlActionsProvider = ( { children, items }: ControlActionsProviderProps ) => (\n\t<Context.Provider value={ { items } }>{ children }</Context.Provider>\n);\n\nexport const useControlActions = () => {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useControlActions must be used within a ControlActionsProvider' );\n\t}\n\n\treturn context;\n};\n","import * as React from 'react';\nimport { ComponentProps, ComponentType } from 'react';\nimport { useControlReplacement } from './create-control-replacement';\nimport { ErrorBoundary } from '@elementor/ui';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponentType = ComponentType< any >;\n\ntype Options = {\n\tsupportsReplacements?: boolean;\n};\n\nconst brandSymbol = Symbol( 'control' );\n\nexport type ControlComponent< TComponent extends AnyComponentType = AnyComponentType > = TComponent & {\n\t[ brandSymbol ]: true;\n};\n\nexport function createControl< T extends AnyComponentType >(\n\tComponent: T,\n\t{ supportsReplacements = true }: Options = {}\n) {\n\treturn ( ( props: ComponentProps< T > ) => {\n\t\tconst ControlReplacement = useControlReplacement();\n\n\t\tif ( ControlReplacement && supportsReplacements ) {\n\t\t\treturn (\n\t\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t\t<ControlReplacement { ...props } />\n\t\t\t\t</ErrorBoundary>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<ErrorBoundary fallback={ null }>\n\t\t\t\t<Component { ...props } />\n\t\t\t</ErrorBoundary>\n\t\t);\n\t} ) as ControlComponent< T >;\n}\n","import * as React from 'react';\nimport { ComponentType, createContext, useContext } from 'react';\nimport { useBoundProp } from './bound-prop-context';\nimport { PropValue } from '@elementor/editor-props';\n\nexport type ReplaceWhenParams = {\n\tvalue: PropValue;\n};\n\nexport type CreateControlReplacement = {\n\tcomponent: ComponentType;\n\tcondition: ( { value }: ReplaceWhenParams ) => boolean;\n};\n\nconst ControlReplacementContext = createContext< CreateControlReplacement | undefined >( undefined );\n\nexport const ControlReplacementProvider = ( {\n\tcomponent,\n\tcondition,\n\tchildren,\n}: React.PropsWithChildren< CreateControlReplacement > ) => {\n\treturn (\n\t\t<ControlReplacementContext.Provider value={ { component, condition } }>\n\t\t\t{ children }\n\t\t</ControlReplacementContext.Provider>\n\t);\n};\nexport const useControlReplacement = () => {\n\tconst { value } = useBoundProp();\n\tconst controlReplacement = useContext( ControlReplacementContext );\n\n\tlet shouldReplace = false;\n\n\ttry {\n\t\tshouldReplace = !! controlReplacement?.condition( { value } ) && !! controlReplacement.component;\n\t} catch {}\n\n\treturn shouldReplace ? controlReplacement?.component : undefined;\n};\n\nexport const createControlReplacement = () => {\n\tlet controlReplacement: CreateControlReplacement;\n\n\tfunction replaceControl( { component, condition }: CreateControlReplacement ) {\n\t\tcontrolReplacement = { component, condition };\n\t}\n\n\tfunction getControlReplacement() {\n\t\treturn controlReplacement;\n\t}\n\n\treturn { replaceControl, getControlReplacement };\n};\n","import * as React from 'react';\nimport { PropValue } from '@elementor/editor-props';\nimport { MenuItem, Select, SelectChangeEvent } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props< T > = {\n\toptions: Array< { label: string; value: T; disabled?: boolean } >;\n};\n\nexport const SelectControl = createControl( < T extends PropValue >( { options }: Props< T > ) => {\n\tconst { value, setValue } = useBoundProp< T >();\n\n\tconst handleChange = ( event: SelectChangeEvent< T > ) => {\n\t\tsetValue( event.target.value as T );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<Select displayEmpty size=\"tiny\" value={ value ?? '' } onChange={ handleChange } fullWidth>\n\t\t\t\t{ options.map( ( { label, ...props } ) => (\n\t\t\t\t\t<MenuItem key={ props.value } { ...props }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Select>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { Typography } from '@elementor/ui';\n\nexport const ControlLabel = ( { children }: { children: React.ReactNode } ) => {\n\treturn (\n\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t{ children }\n\t\t</Typography>\n\t);\n};\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport const TextControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue } = useBoundProp< string >( '' );\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => setValue( event.target.value );\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField type=\"text\" size=\"tiny\" value={ value } onChange={ handleChange } placeholder={ placeholder } />\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\ntype Props = {\n\tplaceholder?: string;\n};\n\nexport const TextAreaControl = createControl( ( { placeholder }: Props ) => {\n\tconst { value, setValue } = useBoundProp< string >();\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetValue( event.target.value );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tmultiline\n\t\t\t\tfullWidth\n\t\t\t\trows={ 5 }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import * as React from 'react';\nimport { SizePropValue, TransformablePropValue } from '@elementor/editor-props';\nimport { InputAdornment } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport { useSyncExternalState } from '../hooks/use-sync-external-state';\nimport { SelectionEndAdornment, TextFieldInnerSelection } from '../components/text-field-inner-selection';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nexport type Unit = 'px' | '%' | 'em' | 'rem' | 'vw' | 'vh';\n\nconst defaultUnits: Unit[] = [ 'px', '%', 'em', 'rem', 'vw', 'vh' ];\n\nexport type SizeControlProps = {\n\tplaceholder?: string;\n\tstartIcon?: React.ReactNode;\n\tunits?: Unit[];\n};\n\nexport type SizeControlValue = TransformablePropValue< 'size', { unit: Unit; size: number } >;\n\nexport const SizeControl = createControl( ( { units = defaultUnits, placeholder, startIcon }: SizeControlProps ) => {\n\tconst { value, setValue } = useBoundProp< SizePropValue | undefined >();\n\n\tconst [ state, setState ] = useSyncExternalState< SizePropValue >( {\n\t\texternal: value,\n\t\tsetExternal: setValue,\n\t\tpersistWhen: ( controlValue ) => !! controlValue?.value.size || controlValue?.value.size === 0,\n\t\tfallback: ( controlValue ) => ( {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: controlValue?.value.unit || 'px', size: NaN },\n\t\t} ),\n\t} );\n\n\tconst handleUnitChange = ( unit: Unit ) => {\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tvalue: {\n\t\t\t\t...prev.value,\n\t\t\t\tunit,\n\t\t\t},\n\t\t} ) );\n\t};\n\n\tconst handleSizeChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst { value: size } = event.target;\n\n\t\tsetState( ( prev ) => ( {\n\t\t\t...prev,\n\t\t\tvalue: {\n\t\t\t\t...prev.value,\n\t\t\t\tsize: size || size === '0' ? parseFloat( size ) : NaN,\n\t\t\t},\n\t\t} ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextFieldInnerSelection\n\t\t\t\tendAdornment={\n\t\t\t\t\t<SelectionEndAdornment options={ units } onClick={ handleUnitChange } value={ state.value.unit } />\n\t\t\t\t}\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tstartAdornment={ startIcon ?? <InputAdornment position=\"start\">{ startIcon }</InputAdornment> }\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ Number.isNaN( state.value.size ) ? '' : state.value.size }\n\t\t\t\tonChange={ handleSizeChange }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import { useEffect, useState } from 'react';\n\ntype UseInternalStateOptions< TValue > = {\n\texternal: TValue | undefined;\n\tsetExternal: ( value: TValue | undefined ) => void;\n\tpersistWhen: ( value: TValue | undefined ) => boolean;\n\tfallback: ( value: TValue | undefined ) => TValue;\n};\n\nexport const useSyncExternalState = < TValue, >( {\n\texternal,\n\tsetExternal,\n\tpersistWhen,\n\tfallback,\n}: UseInternalStateOptions< TValue > ) => {\n\tfunction toExternal( internalValue: TValue | undefined ) {\n\t\tif ( persistWhen( internalValue ) ) {\n\t\t\treturn internalValue;\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction toInternal( externalValue: TValue | undefined, internalValue: TValue | undefined ) {\n\t\tif ( ! externalValue ) {\n\t\t\treturn fallback( internalValue );\n\t\t}\n\n\t\treturn externalValue;\n\t}\n\n\tconst [ internal, setInternal ] = useState< TValue >( toInternal( external, undefined ) );\n\n\tuseEffect( () => {\n\t\tsetInternal( ( prevInternal ) => toInternal( external, prevInternal ) );\n\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [ external ] );\n\n\ttype SetterFunc = ( value: TValue ) => TValue;\n\n\tconst setInternalValue = ( setter: SetterFunc | TValue ) => {\n\t\tconst setterFn = ( typeof setter === 'function' ? setter : () => setter ) as SetterFunc;\n\t\tconst updated = setterFn( internal );\n\n\t\tsetInternal( updated );\n\t\tsetExternal( toExternal( updated ) );\n\t};\n\n\treturn [ internal, setInternalValue ] as const;\n};\n","import * as React from 'react';\nimport { forwardRef, useId } from 'react';\nimport { PropValue } from '@elementor/editor-props';\nimport { bindMenu, bindTrigger, Button, InputAdornment, Menu, MenuItem, TextField, usePopupState } from '@elementor/ui';\n\nexport type TextFieldInnerSelectionProps = {\n\tplaceholder?: string;\n\ttype: string;\n\tvalue: PropValue;\n\tonChange: ( event: React.ChangeEvent< HTMLInputElement > ) => void;\n\tendAdornment: React.ReactNode;\n\tstartAdornment?: React.ReactNode;\n};\n\nexport const TextFieldInnerSelection = forwardRef(\n\t( { placeholder, type, value, onChange, endAdornment, startAdornment }: TextFieldInnerSelectionProps, ref ) => {\n\t\treturn (\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype={ type }\n\t\t\t\tvalue={ value }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\tInputProps={ {\n\t\t\t\t\tendAdornment,\n\t\t\t\t\tstartAdornment,\n\t\t\t\t} }\n\t\t\t\tref={ ref }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nexport type SelectionEndAdornmentProps< T extends string > = {\n\toptions: T[];\n\tonClick: ( value: T ) => void;\n\tvalue: T;\n};\n\nexport const SelectionEndAdornment = < T extends string >( {\n\toptions,\n\tonClick,\n\tvalue,\n}: SelectionEndAdornmentProps< T > ) => {\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: useId(),\n\t} );\n\n\tconst handleMenuItemClick = ( index: number ) => {\n\t\tonClick( options[ index ] );\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<InputAdornment position=\"end\">\n\t\t\t<Button\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"inherit\"\n\t\t\t\tsx={ { font: 'inherit', minWidth: 'initial' } }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t>\n\t\t\t\t{ value.toUpperCase() }\n\t\t\t</Button>\n\n\t\t\t<Menu MenuListProps={ { dense: true } } { ...bindMenu( popupState ) }>\n\t\t\t\t{ options.map( ( option, index ) => (\n\t\t\t\t\t<MenuItem key={ option } onClick={ () => handleMenuItemClick( index ) }>\n\t\t\t\t\t\t{ option.toUpperCase() }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</InputAdornment>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, Stack } from '@elementor/ui';\nimport { createControl } from '../create-control';\nimport { SizeControl, Unit } from './size-control';\nimport { ControlLabel } from '../../components/control-label';\nimport { ColorControl } from './color-control';\nimport { PropValue, StrokePropValue, TransformablePropValue } from '@elementor/editor-props';\nimport { BoundPropProvider, useBoundProp } from '../bound-prop-context';\n\ntype SetContextValue = ( v: PropValue ) => void;\n\nconst defaultStrokeControlValue: StrokePropValue = {\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: NaN,\n\t\t\t},\n\t\t},\n\t},\n};\n\nconst units: Unit[] = [ 'px', 'em', 'rem' ];\n\nexport const StrokeControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp< StrokePropValue >( defaultStrokeControlValue );\n\n\tconst setStrokeWidth = ( newValue: TransformablePropValue< 'size', { unit: Unit; size: number } > ) => {\n\t\tconst updatedValue = {\n\t\t\t...( value?.value ?? defaultStrokeControlValue.value ),\n\t\t\twidth: newValue,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'stroke',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\tconst setStrokeColor = ( newValue: TransformablePropValue< 'color', string > ) => {\n\t\tconst updatedValue = {\n\t\t\t...( value?.value ?? defaultStrokeControlValue.value ),\n\t\t\tcolor: newValue,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'stroke',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Control\n\t\t\t\tbind=\"width\"\n\t\t\t\tlabel={ __( 'Stroke Width', 'elementor' ) }\n\t\t\t\tvalue={ value?.value.width ?? defaultStrokeControlValue.value.width }\n\t\t\t\tsetValue={ setStrokeWidth }\n\t\t\t>\n\t\t\t\t<SizeControl units={ units } />\n\t\t\t</Control>\n\n\t\t\t<Control\n\t\t\t\tbind=\"color\"\n\t\t\t\tlabel={ __( 'Stroke Color', 'elementor' ) }\n\t\t\t\tvalue={ value?.value.color ?? defaultStrokeControlValue.value.color }\n\t\t\t\tsetValue={ setStrokeColor }\n\t\t\t>\n\t\t\t\t<ColorControl />\n\t\t\t</Control>\n\t\t</Stack>\n\t);\n} );\n\nconst Control = < T extends PropValue >( {\n\tbind,\n\tvalue,\n\tsetValue,\n\tlabel,\n\tchildren,\n}: {\n\tbind: string;\n\tvalue: T;\n\tsetValue: ( v: T ) => void;\n\tlabel: string;\n\tchildren: React.ReactNode;\n} ) => (\n\t<BoundPropProvider bind={ bind } value={ value } setValue={ setValue as SetContextValue }>\n\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t{ children }\n\t\t\t</Grid>\n\t\t</Grid>\n\t</BoundPropProvider>\n);\n","import * as React from 'react';\nimport { UnstableColorField, UnstableColorFieldProps } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\nimport { ColorPropValue } from '@elementor/editor-props';\n\nexport const ColorControl = createControl(\n\t( props: Partial< Omit< UnstableColorFieldProps, 'value' | 'onChange' > > ) => {\n\t\tconst { value, setValue } = useBoundProp< ColorPropValue >();\n\n\t\tconst handleChange = ( selectedColor: string ) => {\n\t\t\tsetValue( {\n\t\t\t\t$$type: 'color',\n\t\t\t\tvalue: selectedColor,\n\t\t\t} );\n\t\t};\n\n\t\treturn (\n\t\t\t<ControlActions>\n\t\t\t\t<UnstableColorField size=\"tiny\" { ...props } value={ value?.value } onChange={ handleChange } />\n\t\t\t</ControlActions>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { PropValue, ShadowPropValue, BoxShadowPropValue } from '@elementor/editor-props';\nimport { Grid, Stack, Typography, UnstableColorIndicator } from '@elementor/ui';\nimport { Repeater } from '../components/repeater';\nimport { SizeControl } from './size-control';\nimport { ColorControl } from './color-control';\nimport { BoundPropProvider, useBoundProp } from '../bound-prop-context';\nimport { SelectControl } from './select-control';\nimport { createControl } from '../create-control';\n\ntype SetContextValue = ( v: PropValue ) => void;\n\nexport const BoxShadowRepeaterControl = createControl( () => {\n\tconst { value, setValue } = useBoundProp< BoxShadowPropValue >();\n\n\tconst boxShadowValues = value?.value;\n\n\tconst setBoxShadow = ( newValue: BoxShadowPropValue[ 'value' ] ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'box-shadow',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Repeater\n\t\t\tvalues={ boxShadowValues }\n\t\t\tsetValues={ setBoxShadow }\n\t\t\tlabel={ __( 'Box shadow', 'elementor' ) }\n\t\t\titemSettings={ {\n\t\t\t\tIcon: ItemIcon,\n\t\t\t\tLabel: ItemLabel,\n\t\t\t\tContent: ItemContent,\n\t\t\t\tinitialValues: initialShadow,\n\t\t\t} }\n\t\t/>\n\t);\n} );\n\nconst ItemIcon = ( { value }: { value: ShadowPropValue } ) => (\n\t<UnstableColorIndicator size=\"inherit\" component=\"span\" value={ value.value.color.value } />\n);\n\nconst ItemContent = ( {\n\tvalue,\n\tsetValue,\n}: {\n\tvalue: ShadowPropValue;\n\tsetValue: ( newValue: ShadowPropValue ) => void;\n} ) => {\n\tconst setShadow = ( newValue: ShadowPropValue[ 'value' ] ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'shadow',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"color\"\n\t\t\t\t\tvalue={ value.value.color }\n\t\t\t\t\tlabel={ __( 'Color', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'color' ] ) =>\n\t\t\t\t\t\tsetShadow( { ...value.value, color: v } )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"position\"\n\t\t\t\t\tvalue={ value.value.position }\n\t\t\t\t\tlabel={ __( 'Position', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'position' ] ) =>\n\t\t\t\t\t\tsetShadow( { ...value.value, position: v || null } )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<SelectControl\n\t\t\t\t\t\toptions={ [\n\t\t\t\t\t\t\t{ label: __( 'Inset', 'elementor' ), value: 'inset' },\n\t\t\t\t\t\t\t{ label: __( 'Outset', 'elementor' ), value: '' },\n\t\t\t\t\t\t] }\n\t\t\t\t\t/>\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"hOffset\"\n\t\t\t\t\tlabel={ __( 'Horizontal', 'elementor' ) }\n\t\t\t\t\tvalue={ value.value.hOffset }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'hOffset' ] ) =>\n\t\t\t\t\t\tsetShadow( { ...value.value, hOffset: v } )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"vOffset\"\n\t\t\t\t\tlabel={ __( 'Vertical', 'elementor' ) }\n\t\t\t\t\tvalue={ value.value.vOffset }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'vOffset' ] ) =>\n\t\t\t\t\t\tsetShadow( { ...value.value, vOffset: v } )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t\t<Grid container spacing={ 1 }>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"blur\"\n\t\t\t\t\tvalue={ value.value.blur }\n\t\t\t\t\tlabel={ __( 'Blur', 'elementor' ) }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'blur' ] ) => setShadow( { ...value.value, blur: v } ) }\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t\t<Control\n\t\t\t\t\tbind=\"spread\"\n\t\t\t\t\tlabel={ __( 'Spread', 'elementor' ) }\n\t\t\t\t\tvalue={ value.value.spread }\n\t\t\t\t\tsetValue={ ( v: ShadowPropValue[ 'value' ][ 'spread' ] ) =>\n\t\t\t\t\t\tsetShadow( { ...value.value, spread: v } )\n\t\t\t\t\t}\n\t\t\t\t>\n\t\t\t\t\t<SizeControl />\n\t\t\t\t</Control>\n\t\t\t</Grid>\n\t\t</Stack>\n\t);\n};\n\nconst Control = < T extends PropValue >( {\n\tvalue,\n\tsetValue,\n\tlabel,\n\tbind,\n\tchildren,\n}: {\n\tvalue: T;\n\tbind: string;\n\tlabel: string;\n\tchildren: React.ReactNode;\n\tsetValue: ( v: T ) => void;\n} ) => (\n\t<BoundPropProvider value={ value } setValue={ setValue as SetContextValue } bind={ bind }>\n\t\t<Grid item xs={ 6 }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</Grid>\n\t</BoundPropProvider>\n);\n\nconst ItemLabel = ( { value }: { value: ShadowPropValue } ) => {\n\tconst { position, hOffset, vOffset, blur, spread } = value.value;\n\n\tconst { size: blurSize = '', unit: blurUnit = '' } = blur?.value || {};\n\tconst { size: spreadSize = '', unit: spreadUnit = '' } = spread?.value || {};\n\tconst { size: hOffsetSize = 'unset', unit: hOffsetUnit = '' } = hOffset?.value || {};\n\tconst { size: vOffsetSize = 'unset', unit: vOffsetUnit = '' } = vOffset?.value || {};\n\n\tconst sizes = [\n\t\thOffsetSize + hOffsetUnit,\n\t\tvOffsetSize + vOffsetUnit,\n\t\tblurSize + blurUnit,\n\t\tspreadSize + spreadUnit,\n\t].join( ' ' );\n\n\treturn (\n\t\t<span style={ { textTransform: 'capitalize' } }>\n\t\t\t{ position ?? 'outset' }: { sizes }\n\t\t</span>\n\t);\n};\n\nconst initialShadow: ShadowPropValue = {\n\t$$type: 'shadow',\n\tvalue: {\n\t\thOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tvOffset: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tblur: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 10 },\n\t\t},\n\t\tspread: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: { unit: 'px', size: 0 },\n\t\t},\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: 'rgba(0, 0, 0, 1)',\n\t\t},\n\t\tposition: null,\n\t},\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { PlusIcon, XIcon, CopyIcon, EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tStack,\n\tPopover,\n\tIconButton,\n\tbindTrigger,\n\tbindPopover,\n\tusePopupState,\n\tUnstableTagProps,\n\tUnstableTag,\n\tTypography,\n} from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\ntype AnchorEl = HTMLElement | null;\n\ntype Item< T > = {\n\tdisabled?: boolean;\n} & T;\n\nexport type RepeaterProps< T > = {\n\tlabel: string;\n\tvalues?: T[];\n\tsetValues: ( newValue: T[] ) => void;\n\titemSettings: {\n\t\tinitialValues: T;\n\t\tLabel: React.ComponentType< { value: T } >;\n\t\tIcon: React.ComponentType< { value: T } >;\n\t\tContent: React.ComponentType< {\n\t\t\tvalue: T;\n\t\t\tsetValue: ( newValue: T ) => void;\n\t\t\tanchorEl: AnchorEl;\n\t\t} >;\n\t};\n};\n\nexport const Repeater = < T, >( {\n\tlabel,\n\titemSettings,\n\tvalues: repeaterValues = [],\n\tsetValues: setRepeaterValues,\n}: RepeaterProps< Item< T > > ) => {\n\tconst addRepeaterItem = () => {\n\t\tconst newItem = structuredClone( itemSettings.initialValues );\n\n\t\tsetRepeaterValues( [ ...repeaterValues, newItem ] );\n\t};\n\n\tconst duplicateRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( [\n\t\t\t...repeaterValues.slice( 0, index ),\n\t\t\tstructuredClone( repeaterValues[ index ] ),\n\t\t\t...repeaterValues.slice( index ),\n\t\t] );\n\t};\n\n\tconst removeRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues( repeaterValues.filter( ( _, i ) => i !== index ) );\n\t};\n\n\tconst toggleDisableRepeaterItem = ( index: number ) => {\n\t\tsetRepeaterValues(\n\t\t\trepeaterValues.map( ( value, i ) => {\n\t\t\t\tif ( i === index ) {\n\t\t\t\t\tconst { disabled, ...rest } = value;\n\n\t\t\t\t\t// If the items should not be disabled, remove the disabled property.\n\t\t\t\t\treturn { ...rest, ...( disabled ? {} : { disabled: true } ) } as Item< T >;\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t} )\n\t\t);\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" sx={ { pb: 1 } }>\n\t\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t\t<IconButton size={ SIZE } onClick={ addRepeaterItem } aria-label={ __( 'Add item', 'elementor' ) }>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t{ repeaterValues.map( ( value, index ) => (\n\t\t\t\t\t<RepeaterItem\n\t\t\t\t\t\tkey={ index }\n\t\t\t\t\t\tdisabled={ value.disabled }\n\t\t\t\t\t\tlabel={ <itemSettings.Label value={ value } /> }\n\t\t\t\t\t\tstartIcon={ <itemSettings.Icon value={ value } /> }\n\t\t\t\t\t\tremoveItem={ () => removeRepeaterItem( index ) }\n\t\t\t\t\t\tduplicateItem={ () => duplicateRepeaterItem( index ) }\n\t\t\t\t\t\ttoggleDisableItem={ () => toggleDisableRepeaterItem( index ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ ( props ) => (\n\t\t\t\t\t\t\t<itemSettings.Content\n\t\t\t\t\t\t\t\t{ ...props }\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tsetValue={ ( newValue ) =>\n\t\t\t\t\t\t\t\t\tsetRepeaterValues(\n\t\t\t\t\t\t\t\t\t\trepeaterValues.map( ( item, i ) => ( i === index ? newValue : item ) )\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</RepeaterItem>\n\t\t\t\t) ) }\n\t\t\t</Stack>\n\t\t</Stack>\n\t);\n};\n\ntype RepeaterItemProps = {\n\tlabel: React.ReactNode;\n\tdisabled?: boolean;\n\tstartIcon: UnstableTagProps[ 'startIcon' ];\n\tremoveItem: () => void;\n\tduplicateItem: () => void;\n\ttoggleDisableItem: () => void;\n\tchildren: ( { anchorEl }: { anchorEl: AnchorEl } ) => React.ReactNode;\n};\n\nconst RepeaterItem = ( {\n\tlabel,\n\tdisabled,\n\tstartIcon,\n\tchildren,\n\tremoveItem,\n\tduplicateItem,\n\ttoggleDisableItem,\n}: RepeaterItemProps ) => {\n\tconst popupId = useId();\n\tconst tagRef = useRef< HTMLElement >( null );\n\tconst [ anchorEl, setAnchorEl ] = useState< AnchorEl >( null );\n\n\tconst popoverState = usePopupState( { popupId, variant: 'popover' } );\n\n\tconst popoverProps = bindPopover( popoverState );\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tref={ tagRef }\n\t\t\t\tlabel={ label }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\taria-label={ __( 'Open item', 'elementor' ) }\n\t\t\t\t{ ...bindTrigger( popoverState ) }\n\t\t\t\tstartIcon={ startIcon }\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ duplicateItem }\n\t\t\t\t\t\t\taria-label={ __( 'Duplicate item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<CopyIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ toggleDisableItem }\n\t\t\t\t\t\t\taria-label={\n\t\t\t\t\t\t\t\tdisabled ? __( 'Enable item', 'elementor' ) : __( 'Disable item', 'elementor' )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ disabled ? <EyeOffIcon fontSize={ SIZE } /> : <EyeIcon fontSize={ SIZE } /> }\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\tonClick={ removeItem }\n\t\t\t\t\t\t\taria-label={ __( 'Remove item', 'elementor' ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { ref: setAnchorEl, sx: { width: tagRef.current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\t{ ...popoverProps }\n\t\t\t>\n\t\t\t\t<Box p={ 2 }>{ children( { anchorEl } ) }</Box>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useBoundProp } from '../bound-prop-context';\nimport { ControlToggleButtonGroup, ToggleButtonGroupItem } from '../components/control-toggle-button-group';\nimport { PropValue } from '@elementor/editor-props';\nimport { createControl } from '../create-control';\n\ntype ToggleControlProps< T extends PropValue > = {\n\toptions: ToggleButtonGroupItem< T >[];\n};\n\nexport const ToggleControl = createControl( < T extends PropValue >( { options }: ToggleControlProps< T > ) => {\n\tconst { value, setValue } = useBoundProp< T | null >();\n\n\tconst handleToggle = ( option: T | null ) => {\n\t\tsetValue( option );\n\t};\n\n\treturn (\n\t\t<ControlToggleButtonGroup\n\t\t\titems={ options }\n\t\t\tvalue={ value || null }\n\t\t\tonChange={ handleToggle }\n\t\t\texclusive={ true }\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { JSX } from 'react';\nimport { StackProps, styled, ToggleButton, ToggleButtonGroup, Tooltip } from '@elementor/ui';\n\nexport type ToggleButtonGroupItem< TValue > = {\n\tvalue: TValue;\n\tlabel: string;\n\ticon: JSX.ElementType;\n\tshowTooltip?: boolean;\n};\n\nconst StyledToggleButtonGroup = styled( ToggleButtonGroup )`\n\t${ ( { justify } ) => `justify-content: ${ justify };` }\n`;\n\ntype ExclusiveValue< TValue > = TValue | null;\ntype NonExclusiveValue< TValue > = TValue[];\n\ntype Props< TValue > = {\n\tjustify?: StackProps[ 'justifyContent' ];\n\tsize?: 'tiny' | 'small' | 'medium' | 'large';\n\titems: ToggleButtonGroupItem< TValue >[];\n} & (\n\t| {\n\t\t\texclusive?: false;\n\t\t\tvalue: NonExclusiveValue< TValue >;\n\t\t\tonChange: ( value: NonExclusiveValue< TValue > ) => void;\n\t }\n\t| {\n\t\t\texclusive: true;\n\t\t\tvalue: ExclusiveValue< TValue >;\n\t\t\tonChange: ( value: ExclusiveValue< TValue > ) => void;\n\t }\n);\n\nexport const ControlToggleButtonGroup = < TValue, >( {\n\tjustify = 'end',\n\tsize = 'tiny',\n\tvalue,\n\tonChange,\n\titems,\n\texclusive = false,\n}: Props< TValue > ) => {\n\tconst handleChange = (\n\t\t_: React.MouseEvent< HTMLElement >,\n\t\tnewValue: typeof exclusive extends true ? ExclusiveValue< TValue > : NonExclusiveValue< TValue >\n\t) => {\n\t\tonChange( newValue as never );\n\t};\n\n\treturn (\n\t\t<StyledToggleButtonGroup justify={ justify } value={ value } onChange={ handleChange } exclusive={ exclusive }>\n\t\t\t{ items.map( ( { label: label, value: buttonValue, icon: Icon, showTooltip: showTooltip } ) =>\n\t\t\t\tshowTooltip ? (\n\t\t\t\t\t<Tooltip title={ label } disableFocusListener={ true } placement=\"top\" key={ buttonValue }>\n\t\t\t\t\t\t<ToggleButton value={ buttonValue } aria-label={ label } size={ size }>\n\t\t\t\t\t\t\t<Icon fontSize={ size } />\n\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t) : (\n\t\t\t\t\t<ToggleButton key={ buttonValue } value={ buttonValue } aria-label={ label } size={ size }>\n\t\t\t\t\t\t<Icon fontSize={ size } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t)\n\t\t\t) }\n\t\t</StyledToggleButtonGroup>\n\t);\n};\n","import * as React from 'react';\nimport { TextField } from '@elementor/ui';\nimport { useBoundProp } from '../bound-prop-context';\nimport ControlActions from '../control-actions/control-actions';\nimport { createControl } from '../create-control';\n\nconst isEmptyOrNaN = ( value?: string | number ) =>\n\tvalue === undefined || value === '' || Number.isNaN( Number( value ) );\n\nexport const NumberControl = createControl( ( { placeholder }: { placeholder?: string } ) => {\n\tconst { value, setValue } = useBoundProp< number | undefined >();\n\n\tconst handleChange = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tconst eventValue: string = event.target.value;\n\t\tsetValue( isEmptyOrNaN( eventValue ) ? undefined : Number( eventValue ) );\n\t};\n\n\treturn (\n\t\t<ControlActions>\n\t\t\t<TextField\n\t\t\t\tsize=\"tiny\"\n\t\t\t\ttype=\"number\"\n\t\t\t\tvalue={ isEmptyOrNaN( value ) ? '' : value }\n\t\t\t\tonChange={ handleChange }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t/>\n\t\t</ControlActions>\n\t);\n} );\n","import { Components, createMenu } from '@elementor/menus';\n\nexport const createControlActionsMenu = ( { components }: { components: Components } ) => {\n\treturn createMenu( {\n\t\tcomponents,\n\t} );\n};\n","import { createControlReplacement } from './controls';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { EditingPanelTabs } from './editing-panel-tabs';\nimport { ControlActionsProvider, ControlReplacementProvider } from '../controls';\nimport { getControlReplacement } from '../control-replacement';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { ElementProvider } from '../contexts/element-context';\nimport { useMenuItems } from '../controls-actions';\n\nexport const EditingPanel = () => {\n\tconst { element, elementType } = useSelectedElement();\n\tconst controlReplacement = getControlReplacement();\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\treturn (\n\t\t<ErrorBoundary fallback={ <EditorPanelErrorFallback /> }>\n\t\t\t<Panel>\n\t\t\t\t<PanelHeader>\n\t\t\t\t\t<PanelHeaderTitle>{ panelTitle }</PanelHeaderTitle>\n\t\t\t\t</PanelHeader>\n\t\t\t\t<PanelBody>\n\t\t\t\t\t<ControlActionsProvider items={ menuItems }>\n\t\t\t\t\t\t<ControlReplacementProvider { ...controlReplacement }>\n\t\t\t\t\t\t\t<ElementProvider element={ element } elementType={ elementType }>\n\t\t\t\t\t\t\t\t<EditingPanelTabs />\n\t\t\t\t\t\t\t</ElementProvider>\n\t\t\t\t\t\t</ControlReplacementProvider>\n\t\t\t\t\t</ControlActionsProvider>\n\t\t\t\t</PanelBody>\n\t\t\t</Panel>\n\t\t</ErrorBoundary>\n\t);\n};\n","import { Stack, Tabs, Tab, TabPanel, useTabs } from '@elementor/ui';\nimport * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t<Tabs variant=\"fullWidth\" indicatorColor=\"secondary\" textColor=\"inherit\" { ...getTabsProps() }>\n\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t</Tabs>\n\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t<SettingsTab />\n\t\t\t</TabPanel>\n\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t<StyleTab />\n\t\t\t</TabPanel>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Stack } from '@elementor/ui';\nimport { type Control } from '@elementor/editor-elements';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { AccordionSection } from './accordion-section';\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlType, getControlByType } from '../controls-registry/controls-registry';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { ControlLabel } from './control-label';\nimport { useElement } from '../contexts/element-context';\n\nexport const SettingsTab = () => {\n\tconst { elementType } = useElement();\n\n\treturn (\n\t\t<Stack>\n\t\t\t{ elementType.controls.map( ( { type, value }, index ) => {\n\t\t\t\tif ( type === 'control' ) {\n\t\t\t\t\treturn <Control key={ value.bind } control={ value } />;\n\t\t\t\t}\n\n\t\t\t\tif ( type === 'section' ) {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<AccordionSection key={ type + '.' + index } title={ value.label } defaultExpanded>\n\t\t\t\t\t\t\t{ value.items?.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// TODO: Handle 2nd level sections\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</AccordionSection>\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn null;\n\t\t\t} ) }\n\t\t</Stack>\n\t);\n};\n\n// TODO: Create control wrapper by type for different layouts.\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<SettingsField bind={ control.bind }>\n\t\t\t<ControlTypeContainer controlType={ control.type as ControlType }>\n\t\t\t\t{ control.label ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t\t</ControlTypeContainer>\n\t\t</SettingsField>\n\t);\n};\n","import * as React from 'react';\nimport { PropKey, PropValue } from '@elementor/editor-props';\nimport { useElementSetting, updateSettings } from '@elementor/editor-elements';\nimport { useElement } from '../contexts/element-context';\nimport { BoundPropProvider } from '../controls';\n\ntype Props = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nconst SettingsField = ( { bind, children }: Props ) => {\n\tconst { element, elementType } = useElement();\n\n\tconst defaultValue = elementType.propsSchema[ bind ]?.default;\n\tconst settingsValue = useElementSetting( { id: element.id, bind } );\n\tconst value = settingsValue ?? defaultValue ?? null;\n\n\tconst setValue = ( newValue: PropValue ) => {\n\t\tupdateSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ bind ]: newValue,\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<BoundPropProvider setValue={ setValue } value={ value } bind={ bind }>\n\t\t\t{ children }\n\t\t</BoundPropProvider>\n\t);\n};\n\nexport { SettingsField };\n","import * as React from 'react';\nimport { createContext, PropsWithChildren, useContext } from 'react';\nimport { ElementType, Element } 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 { useId } from 'react';\nimport { Accordion, AccordionSummary, AccordionDetails, AccordionSummaryText, Stack } from '@elementor/ui';\n\nexport type AccordionSectionProps = React.PropsWithChildren< {\n\ttitle: React.ReactNode;\n\tdefaultExpanded?: boolean;\n} >;\n\nexport const AccordionSection = ( { title, children, defaultExpanded = false }: AccordionSectionProps ) => {\n\tconst uid = useId();\n\tconst labelId = `label-${ uid }`;\n\tconst contentId = `content-${ uid }`;\n\n\t// TODO: Change to collapsible list item\n\treturn (\n\t\t<Accordion disableGutters defaultExpanded={ defaultExpanded }>\n\t\t\t<AccordionSummary aria-controls={ contentId } id={ labelId }>\n\t\t\t\t<AccordionSummaryText primaryTypographyProps={ { variant: 'caption' } }>{ title }</AccordionSummaryText>\n\t\t\t</AccordionSummary>\n\t\t\t<AccordionDetails id={ contentId } aria-labelledby={ labelId }>\n\t\t\t\t<Stack gap={ 2.5 }>{ children }</Stack>\n\t\t\t</AccordionDetails>\n\t\t</Accordion>\n\t);\n};\n","import * as React from 'react';\nimport type { ComponentProps } from 'react';\nimport { createError } from '@elementor/utils';\nimport { ControlType, ControlTypes, getControlByType } from './controls-registry';\n\nexport type ControlTypeErrorContext = {\n\ttype: string;\n};\n\nconst ControlTypeError = createError< ControlTypeErrorContext >( {\n\tcode: 'CONTROL_TYPE_NOT_FOUND',\n\tmessage: `Control type not found.`,\n} );\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 = getControlByType( type );\n\n\tif ( ! ControlByType ) {\n\t\tthrow new ControlTypeError( {\n\t\t\tcontext: { type },\n\t\t} );\n\t}\n\n\t// @ts-expect-error ControlComponent props are inferred from the type (T).\n\treturn <ControlByType { ...props } />;\n};\n","import { ControlComponent, ImageControl, SelectControl, SizeControl, TextAreaControl, TextControl } from '../controls';\n\nexport type ControlLayout = 'full' | 'two-columns';\n\ntype ControlRegistry = Record< string, { component: ControlComponent; layout: ControlLayout } >;\n\nconst controlTypes = {\n\timage: { component: ImageControl, layout: 'full' },\n\ttext: { component: TextControl, layout: 'two-columns' },\n\ttextarea: { component: TextAreaControl, layout: 'full' },\n\tsize: { component: SizeControl, layout: 'two-columns' },\n\tselect: { component: SelectControl, layout: 'two-columns' },\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\nexport const getControlByType = ( type: ControlType ) => controlTypes[ type ]?.component;\n\nexport const getLayoutByType = ( type: ControlType ) => controlTypes[ type ].layout;\n","import * as React from 'react';\nimport { styled, Box, BoxProps } from '@elementor/ui';\nimport { ControlLayout, ControlType, getLayoutByType } from './controls-registry';\n\nexport const ControlTypeContainer = ( {\n\tcontrolType,\n\tchildren,\n}: React.PropsWithChildren< { controlType: ControlType } > ) => {\n\tconst layout = getLayoutByType( controlType );\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\tgridTemplateColumns: {\n\t\tfull: '1fr',\n\t\t'two-columns': 'repeat(2, 1fr)',\n\t}[ layout ],\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Stack } from '@elementor/ui';\nimport { generateId, StyleDefinition } from '@elementor/editor-styles';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { getElementStyles, getElementSetting } from '@elementor/editor-elements';\nimport { StyleProvider } from '../contexts/style-context';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { useElement } from '../contexts/element-context';\nimport { ClassesPropValue, PropKey } from '@elementor/editor-props';\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\n\nconst CLASSES_PROP_KEY = 'classes';\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ selectedStyleDefId ] = useSelectedStyleDefId( currentClassesProp );\n\tconst breakpoint = useActiveBreakpoint();\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider meta={ { breakpoint, state: null } } id={ selectedStyleDefId }>\n\t\t\t\t<Stack>\n\t\t\t\t\t<SpacingSection />\n\t\t\t\t\t<SizeSection />\n\t\t\t\t\t<PositionSection />\n\t\t\t\t\t<TypographySection />\n\t\t\t\t\t<BackgroundSection />\n\t\t\t\t\t<BorderSection />\n\t\t\t\t\t<EffectsSection />\n\t\t\t\t</Stack>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction useSelectedStyleDefId( currentClassesProp: PropKey ) {\n\tconst { element } = useElement();\n\n\tconst [ selectedStyleDefId, setSelectedStyleDefId ] = useState< StyleDefinition[ 'id' ] >( () => {\n\t\tconst styleIds = getElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value ?? [];\n\t\tconst stylesDefs = getElementStyles( element.id ) ?? {};\n\n\t\treturn (\n\t\t\tstyleIds.find( ( id ) => id in stylesDefs ) ?? generateId( `e-${ element.id }-`, Object.keys( stylesDefs ) )\n\t\t);\n\t} );\n\n\treturn [ selectedStyleDefId, setSelectedStyleDefId ] as const;\n}\n\nfunction useCurrentClassesProp(): string {\n\tconst { elementType } = useElement();\n\n\tconst prop = Object.entries( elementType.propsSchema ).find(\n\t\t( [ , propType ] ) => propType.kind === 'array' && propType.key === CLASSES_PROP_KEY\n\t);\n\n\tif ( ! prop ) {\n\t\tthrow new Error( 'Element does not have a classes prop' );\n\t}\n\n\treturn prop[ 0 ];\n}\n","import * as React from 'react';\nimport { createContext, PropsWithChildren, useContext } from 'react';\nimport { StyleDefinition, StyleVariant } from '@elementor/editor-styles';\n\ntype ContextValue = {\n\tid: StyleDefinition[ 'id' ];\n\tmeta: StyleVariant[ 'meta' ];\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function StyleProvider( { children, id, meta }: Props ) {\n\treturn <Context.Provider value={ { id, meta } }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'UseStyleContext must be used within a StyleContextProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { Divider, Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { OverflowField } from './overflow-field';\nimport { AccordionSection } from '../../accordion-section';\nimport { StylesField, StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { SizeControl } from '../../../controls';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Size', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<SizeField bind=\"width\" label={ __( 'Width', 'elementor' ) } />\n\t\t\t\t\t<SizeField bind=\"height\" label={ __( 'Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<SizeField bind=\"min-width\" label={ __( 'Min. Width', 'elementor' ) } />\n\t\t\t\t\t<SizeField bind=\"min-height\" label={ __( 'Min. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 2 }>\n\t\t\t\t\t<SizeField bind=\"max-width\" label={ __( 'Max. Width', 'elementor' ) } />\n\t\t\t\t\t<SizeField bind=\"max-height\" label={ __( 'Max. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Divider />\n\t\t\t\t<Stack>\n\t\t\t\t\t<OverflowField />\n\t\t\t\t</Stack>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n\ntype ControlProps = {\n\tbind: StylesFieldProps[ 'bind' ];\n\tlabel: string;\n};\n\nconst SizeField = ( { label, bind }: ControlProps ) => {\n\treturn (\n\t\t<Grid item xs={ 6 }>\n\t\t\t<StylesField bind={ bind }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</StylesField>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { EyeIcon, EyeOffIcon, ExpandBottomIcon } from '@elementor/icons';\nimport { ToggleButtonGroupItem, ToggleControl } from '../../../controls';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\ticon: EyeIcon,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\ticon: EyeOffIcon,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\ticon: ExpandBottomIcon,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const OverflowField = () => {\n\treturn (\n\t\t<StylesField bind={ 'overflow' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Overflow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t<ToggleControl options={ options } />\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 { PropKey } from '@elementor/editor-props';\nimport { useStylesField } from '../hooks/use-styles-field';\nimport { BoundPropProvider } from '../controls';\n\nexport type StylesFieldProps = {\n\tbind: PropKey;\n\tchildren: React.ReactNode;\n};\n\nexport const StylesField = ( { bind, children }: StylesFieldProps ) => {\n\tconst [ value, setValue ] = useStylesField( bind );\n\n\treturn (\n\t\t<BoundPropProvider setValue={ setValue } value={ value } bind={ bind }>\n\t\t\t{ children }\n\t\t</BoundPropProvider>\n\t);\n};\n","import type { PropKey, PropValue } from '@elementor/editor-props';\nimport { useElementStyleProp, updateStyle } from '@elementor/editor-elements';\nimport { useStyle } from '../contexts/style-context';\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\n\nexport const useStylesField = < T extends PropValue >( propName: PropKey ) => {\n\tconst { element } = useElement();\n\tconst { id, meta } = useStyle();\n\tconst classesProp = useClassesProp();\n\n\tconst value = useElementStyleProp< T >( {\n\t\telementID: element.id,\n\t\tstyleDefID: id,\n\t\tmeta,\n\t\tpropName,\n\t} );\n\n\tconst setValue = ( newValue: T ) => {\n\t\tupdateStyle( {\n\t\t\telementID: element.id,\n\t\t\tstyleDefID: id,\n\t\t\tprops: { [ propName ]: newValue },\n\t\t\tmeta,\n\t\t\tbind: classesProp,\n\t\t} );\n\t};\n\n\treturn [ value, setValue ] as const;\n};\n","import * as React from 'react';\nimport { createContext, 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 { AccordionSection } from '../../accordion-section';\nimport { Divider, Stack } from '@elementor/ui';\nimport { TextStyleField } from './text-style-field';\nimport { __ } from '@wordpress/i18n';\nimport { FontSizeField } from './font-size-field';\nimport { FontWeightField } from './font-weight-field';\nimport { TextColorField } from './text-color-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { WordSpacingField } from './word-spacing-field';\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { TransformField } from './transform-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Typography', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<FontWeightField />\n\t\t\t\t<FontSizeField />\n\t\t\t\t<Divider />\n\t\t\t\t<TextColorField />\n\t\t\t\t<CollapsibleContent>\n\t\t\t\t\t<Stack gap={ 1.5 } sx={ { pt: 1.5 } }>\n\t\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t\t<Divider />\n\t\t\t\t\t\t<TextAlignmentField />\n\t\t\t\t\t\t<TextStyleField />\n\t\t\t\t\t\t<TransformField />\n\t\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t\t<TextStrokeField />\n\t\t\t\t\t</Stack>\n\t\t\t\t</CollapsibleContent>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, ToggleButton as ToggleButtonBase, ToggleButtonGroup, ToggleButtonProps } from '@elementor/ui';\nimport { ItalicIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { ControlLabel } from '../../control-label';\nimport { useStylesField } from '../../../hooks/use-styles-field';\n\nconst buttonSize = 'tiny';\n\nexport const TextStyleField = () => {\n\tconst [ fontStyle, setFontStyle ] = useStylesField< string | null >( 'font-style' );\n\tconst [ textDecoration, setTextDecoration ] = useStylesField< string | null >( 'text-decoration' );\n\n\tconst formats = [ fontStyle, ...( textDecoration || '' ).split( ' ' ) ];\n\n\treturn (\n\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Style', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleButtonGroup value={ formats }>\n\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\tvalue=\"italic\"\n\t\t\t\t\t\tonChange={ ( v ) => setFontStyle( fontStyle === v ? null : v ) }\n\t\t\t\t\t\taria-label=\"italic\"\n\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ItalicIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t<ShorthandControl\n\t\t\t\t\t\tvalue=\"line-through\"\n\t\t\t\t\t\tcurrentValues={ textDecoration || '' }\n\t\t\t\t\t\tupdateValues={ setTextDecoration }\n\t\t\t\t\t\taria-label=\"line-through\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<StrikethroughIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ShorthandControl>\n\t\t\t\t\t<ShorthandControl\n\t\t\t\t\t\tvalue=\"underline\"\n\t\t\t\t\t\tcurrentValues={ textDecoration || '' }\n\t\t\t\t\t\tupdateValues={ setTextDecoration }\n\t\t\t\t\t\taria-label=\"underline\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<UnderlineIcon fontSize={ buttonSize } />\n\t\t\t\t\t</ShorthandControl>\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n\ntype ShorthandControlProps = React.PropsWithChildren< {\n\tvalue: string;\n\tcurrentValues: string;\n\tupdateValues: ( newValue: string | null ) => void;\n\t'aria-label': string;\n} >;\n\nexport const ShorthandControl = ( {\n\tchildren,\n\tvalue,\n\tcurrentValues,\n\tupdateValues,\n\t'aria-label': ariaLabel,\n}: ShorthandControlProps ) => {\n\tconst valuesArr = currentValues.split( ' ' ).filter( Boolean );\n\tconst selected = valuesArr.includes( value );\n\n\tconst toggleValue = ( newValue: string ) => {\n\t\tif ( selected ) {\n\t\t\tupdateValues( valuesArr.filter( ( v ) => v !== newValue ).join( ' ' ) || null );\n\t\t} else {\n\t\t\tupdateValues( [ ...valuesArr, newValue ].join( ' ' ) );\n\t\t}\n\t};\n\n\treturn (\n\t\t<ToggleButton value={ value } onChange={ toggleValue } selected={ selected } aria-label={ ariaLabel }>\n\t\t\t{ children }\n\t\t</ToggleButton>\n\t);\n};\n\ntype ControlToggleButtonProps = Omit< ToggleButtonProps, 'onChange' > & {\n\tonChange: ( newValue: string ) => void;\n};\n\nconst ToggleButton = ( { onChange, ...props }: ControlToggleButtonProps ) => {\n\tconst handleChange = ( _e: React.MouseEvent< HTMLElement >, newValue: string ) => {\n\t\tonChange( newValue );\n\t};\n\n\treturn <ToggleButtonBase { ...props } onChange={ handleChange } size={ buttonSize } />;\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SizeControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nexport const FontSizeField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-size\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font Size', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\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 { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SelectControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nconst fontWeightOptions = [\n\t{ label: __( 'Light - 400', 'elementor' ), value: '400' },\n\t{ label: __( 'Regular - 500', 'elementor' ), value: '500' },\n\t{ label: __( 'Semi Bold - 600', 'elementor' ), value: '600' },\n\t{ label: __( 'Bold - 700', 'elementor' ), value: '700' },\n\t{ label: __( 'Black - 900', 'elementor' ), value: '900' },\n];\n\nexport const FontWeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-weight\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font Weight', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ fontWeightOptions } />\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 { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ColorControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Text Color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SizeControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nexport const LetterSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Letter Spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\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 { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SizeControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nexport const WordSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"word-spacing\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Word Spacing', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeControl />\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 { useState } from 'react';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport { Button, Collapse, Stack, styled } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype CollapsibleContentProps = React.PropsWithChildren< {\n\tdefaultOpen?: boolean;\n} >;\n\nexport const CollapsibleContent = ( { children, defaultOpen = false }: 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 sx={ { py: 0.5 } }>\n\t\t\t<Button\n\t\t\t\tfullWidth\n\t\t\t\tsize=\"small\"\n\t\t\t\tcolor=\"secondary\"\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tonClick={ handleToggle }\n\t\t\t\tendIcon={ <ChevronIcon open={ open } /> }\n\t\t\t>\n\t\t\t\t{ open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }\n\t\t\t</Button>\n\t\t\t<Collapse in={ open } timeout=\"auto\">\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nconst ChevronIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from '@elementor/icons';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ToggleControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nconst options = [\n\t{ value: 'capitalize', label: __( 'Capitalize', 'elementor' ), icon: LetterCaseIcon },\n\t{ value: 'uppercase', label: __( 'Uppercase', 'elementor' ), icon: LetterCaseUpperIcon },\n\t{ value: 'lowercase', label: __( 'Lowercase', 'elementor' ), icon: LetterCaseLowerIcon },\n];\n\nexport const TransformField = () => (\n\t<StylesField bind={ 'text-transform' }>\n\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( 'Transform', 'elementor' ) }</ControlLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t<ToggleControl options={ options } />\n\t\t\t</Grid>\n\t\t</Grid>\n\t</StylesField>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { AlignLeftIcon, AlignCenterIcon, AlignRightIcon, AlignJustifiedIcon } from '@elementor/icons';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ToggleControl, ToggleButtonGroupItem } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\ntype Alignments = 'left' | 'center' | 'right' | 'justify';\n\nconst options: ToggleButtonGroupItem< Alignments >[] = [\n\t{\n\t\tvalue: 'left',\n\t\tlabel: __( 'Left', 'elementor' ),\n\t\ticon: AlignLeftIcon,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\ticon: AlignCenterIcon,\n\t},\n\t{\n\t\tvalue: 'right',\n\t\tlabel: __( 'Right', 'elementor' ),\n\t\ticon: AlignRightIcon,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\ticon: AlignJustifiedIcon,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind={ 'text-align' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Alignment', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\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 { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ToggleControl, ToggleButtonGroupItem } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\ntype Direction = 'ltr' | 'rtl';\n\nconst options: ToggleButtonGroupItem< Direction >[] = [\n\t{\n\t\tvalue: 'ltr',\n\t\tlabel: __( 'Left to Right', 'elementor' ),\n\t\ticon: TextDirectionLtrIcon,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to Left', 'elementor' ),\n\t\ticon: TextDirectionRtlIcon,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind={ 'direction' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } display=\"flex\" justifyContent=\"end\">\n\t\t\t\t\t<ToggleControl options={ options } />\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 { __ } from '@wordpress/i18n';\nimport { CollapsibleField } from '../../collapsible-field';\nimport { ControlLabel } from '../../control-label';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { StrokeControl } from '../../../controls';\n\nexport const TextStrokeField = () => {\n\treturn (\n\t\t<StylesField bind=\"-webkit-text-stroke\">\n\t\t\t<CollapsibleField label={ <ControlLabel>{ __( 'Text Stroke', 'elementor' ) }</ControlLabel> }>\n\t\t\t\t<StrokeControl />\n\t\t\t</CollapsibleField>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\n\ntype CollapsibleFieldProps = React.PropsWithChildren< {\n\tlabel: React.ReactNode;\n\tdefaultOpen?: boolean;\n} >;\n\nexport const CollapsibleField = ( { label, children, defaultOpen = false }: CollapsibleFieldProps ) => {\n\tconst [ open, setOpen ] = useState( defaultOpen );\n\n\tconst handleToggle = () => {\n\t\tsetOpen( ( prevOpen ) => ! prevOpen );\n\t};\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Stack direction=\"row\" justifyContent=\"space-between\" alignItems=\"center\" sx={ { py: 0.5 } }>\n\t\t\t\t{ label }\n\t\t\t\t<IconButton\n\t\t\t\t\tonClick={ handleToggle }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\taria-label={ open ? __( 'Close', 'elementor' ) : __( 'Expand', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t{ open ? <MinusIcon fontSize=\"tiny\" /> : <PlusIcon fontSize=\"tiny\" /> }\n\t\t\t\t</IconButton>\n\t\t\t</Stack>\n\t\t\t<Collapse in={ open }>{ children }</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Stack } from '@elementor/ui';\nimport { ZIndexField } from './z-index-field';\nimport { PositionField } from './position-field';\nimport { __ } from '@wordpress/i18n';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { DimensionsField } from './dimensions-field';\n\nexport const PositionSection = () => {\n\tconst [ positionValue ] = useStylesField( 'position' );\n\n\tconst isNotStatic = positionValue && positionValue !== 'static';\n\n\treturn (\n\t\t<AccordionSection title={ __( 'Position', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<PositionField />\n\t\t\t\t{ isNotStatic ? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t\t<ZIndexField />\n\t\t\t\t\t</>\n\t\t\t\t) : null }\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { NumberControl } from '../../../controls';\nimport { ControlLabel } from '../../control-label';\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Z-Index', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<NumberControl />\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 { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { SelectControl } from '../../../controls';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\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];\n\nexport const PositionField = () => {\n\treturn (\n\t\t<StylesField bind=\"position\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Position', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ positionOptions } />\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 { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { ControlLabel } from '../../control-label';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { SizeControl } from '../../../controls';\n\nexport type Side = 'left' | 'right' | 'top' | 'bottom';\n\nconst sideIcons = {\n\tleft: <SideLeftIcon fontSize={ 'tiny' } />,\n\tright: <SideRightIcon fontSize={ 'tiny' } />,\n\ttop: <SideTopIcon fontSize={ 'tiny' } />,\n\tbottom: <SideBottomIcon fontSize={ 'tiny' } />,\n};\n\nexport const DimensionsField = () => {\n\treturn (\n\t\t<>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<DimensionField side=\"top\" label={ __( 'Top', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"right\" label={ __( 'Right', 'elementor' ) } />\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<DimensionField side=\"bottom\" label={ __( 'Bottom', 'elementor' ) } />\n\t\t\t\t<DimensionField side=\"left\" label={ __( 'Left', 'elementor' ) } />\n\t\t\t</Stack>\n\t\t</>\n\t);\n};\n\nconst DimensionField = ( { side, label }: { side: Side; label: string } ) => {\n\treturn (\n\t\t<Grid container spacing={ 1 } 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<StylesField bind={ side }>\n\t\t\t\t\t<SizeControl startIcon={ sideIcons[ side ] } />\n\t\t\t\t</StylesField>\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { LinkedDimensionsControl } from '../../../controls/controls/linked-dimensions-control';\n\nexport const SpacingSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<StylesField bind={ 'padding' }>\n\t\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } />\n\t\t\t\t</StylesField>\n\t\t\t\t<Divider />\n\t\t\t\t<StylesField bind={ 'margin' }>\n\t\t\t\t\t<LinkedDimensionsControl label={ __( 'Margin', 'elementor' ) } />\n\t\t\t\t</StylesField>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid, Stack, ToggleButton } from '@elementor/ui';\nimport { PropValue, LinkedDimensionsPropValue } from '@elementor/editor-props';\nimport { DetachIcon, LinkIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { createControl } from '../create-control';\nimport { ControlLabel } from '../../components/control-label';\nimport { SizeControl } from './size-control';\nimport { BoundPropProvider, useBoundProp } from '../bound-prop-context';\n\nexport type Position = 'top' | 'right' | 'bottom' | 'left';\n\nexport const LinkedDimensionsControl = createControl( ( { label }: { label: string } ) => {\n\tconst { value, setValue } = useBoundProp< LinkedDimensionsPropValue >();\n\tconst { top, right, bottom, left, isLinked = true } = value?.value || {};\n\n\tconst setLinkedValue = ( position: Position, newValue: PropValue ) => {\n\t\tconst updatedValue = {\n\t\t\tisLinked,\n\t\t\ttop: isLinked ? newValue : top,\n\t\t\tright: isLinked ? newValue : right,\n\t\t\tbottom: isLinked ? newValue : bottom,\n\t\t\tleft: isLinked ? newValue : left,\n\t\t\t[ position ]: newValue,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'linked-dimensions',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\tconst toggleLinked = () => {\n\t\tconst updatedValue = {\n\t\t\tisLinked: ! isLinked,\n\t\t\ttop,\n\t\t\tright: ! isLinked ? top : right,\n\t\t\tbottom: ! isLinked ? top : bottom,\n\t\t\tleft: ! isLinked ? top : left,\n\t\t};\n\n\t\tsetValue( {\n\t\t\t$$type: 'linked-dimensions',\n\t\t\tvalue: updatedValue,\n\t\t} );\n\t};\n\n\tconst LinkedIcon = isLinked ? LinkIcon : DetachIcon;\n\n\treturn (\n\t\t<>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t<ToggleButton\n\t\t\t\t\taria-label={ __( 'Link Inputs', 'elementor' ) }\n\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\tselected={ isLinked }\n\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\tonChange={ toggleLinked }\n\t\t\t\t>\n\t\t\t\t\t<LinkedIcon fontSize={ 'tiny' } />\n\t\t\t\t</ToggleButton>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Top', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'top' }\n\t\t\t\t\t\t\tvalue={ top }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideTopIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Right', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'right' }\n\t\t\t\t\t\t\tvalue={ right }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideRightIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t\t<Stack direction=\"row\" gap={ 2 }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Bottom', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'bottom' }\n\t\t\t\t\t\t\tvalue={ bottom }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideBottomIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Left', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<Control\n\t\t\t\t\t\t\tbind={ 'left' }\n\t\t\t\t\t\t\tvalue={ left }\n\t\t\t\t\t\t\tsetValue={ setLinkedValue }\n\t\t\t\t\t\t\tstartIcon={ <SideLeftIcon fontSize={ 'tiny' } /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Stack>\n\t\t</>\n\t);\n} );\n\nconst Control = ( {\n\tbind,\n\tstartIcon,\n\tvalue,\n\tsetValue,\n}: {\n\tbind: Position;\n\tvalue: PropValue;\n\tstartIcon: React.ReactNode;\n\tsetValue: ( bind: Position, newValue: PropValue ) => void;\n} ) => (\n\t<BoundPropProvider setValue={ ( newValue ) => setValue( bind, newValue ) } value={ value } bind={ bind }>\n\t\t<SizeControl startIcon={ startIcon } />\n\t</BoundPropProvider>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@elementor/ui';\nimport { AccordionSection } from '../../accordion-section';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { BoxShadowRepeaterControl } from '../../../controls';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Effects', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<StylesField bind=\"box-shadow\">\n\t\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t\t</StylesField>\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Stack } from '@elementor/ui';\nimport { AccordionSection } from '../../accordion-section';\nimport { BackgroundColorField } from './background-color-field';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<AccordionSection title={ __( 'Background', 'elementor' ) }>\n\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t<BackgroundColorField />\n\t\t\t</Stack>\n\t\t</AccordionSection>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\nimport { ColorControl } from '../../../controls';\n\nexport const BackgroundColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"background-color\">\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { AccordionSection } from '../../accordion-section';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { BorderRadiusField } from './border-radius-field';\nimport { BorderField } from './border-field';\n\nexport const BorderSection = () => (\n\t<AccordionSection title={ __( 'Border', 'elementor' ) }>\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<BorderRadiusField />\n\t\t\t<Divider />\n\t\t\t<BorderField />\n\t\t</Stack>\n\t</AccordionSection>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport type { BorderRadiusPropValue } from '@elementor/editor-props';\nimport { EqualUnequalItems, EqualUnequalSizesControl } from '../../../controls/controls/equal-unequal-sizes-control';\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst corners: EqualUnequalItems< BorderRadiusPropValue[ '$$type' ], BorderRadiusPropValue > = [\n\t{\n\t\tlabel: __( 'Top Left', 'elementor' ),\n\t\ticon: <RadiusTopLeftIcon fontSize={ 'tiny' } />,\n\t\tbind: 'top-left',\n\t},\n\t{\n\t\tlabel: __( 'Top Right', 'elementor' ),\n\t\ticon: <RadiusTopRightIcon fontSize={ 'tiny' } />,\n\t\tbind: 'top-right',\n\t},\n\t{\n\t\tlabel: __( 'Bottom Right', 'elementor' ),\n\t\ticon: <RadiusBottomRightIcon fontSize={ 'tiny' } />,\n\t\tbind: 'bottom-right',\n\t},\n\t{\n\t\tlabel: __( 'Bottom Left', 'elementor' ),\n\t\ticon: <RadiusBottomLeftIcon fontSize={ 'tiny' } />,\n\t\tbind: 'bottom-left',\n\t},\n];\n\nexport const BorderRadiusField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-radius' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\tlabel={ __( 'Border Radius', 'elementor' ) }\n\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\titems={ corners }\n\t\t\t\tmultiSizeType={ 'border-radius' }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ReactNode, useId, useRef } from 'react';\nimport { PropValue, TransformablePropValue } from '@elementor/editor-props';\nimport { bindPopover, bindToggle, Grid, Popover, Stack, ToggleButton, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { ControlLabel } from '../../components/control-label';\nimport { BoundPropProvider, SizeControl, SizeControlValue, useBoundProp } from '../index';\n\ntype MultiSizePropValue< TMultiPropType extends string > = TransformablePropValue<\n\tTMultiPropType,\n\tRecord< string, SizeControlValue >\n>;\n\ntype Item< TMultiPropType extends string, TPropValue extends MultiSizePropValue< TMultiPropType > > = {\n\ticon: ReactNode;\n\tlabel: string;\n\tbind: keyof TPropValue[ 'value' ];\n};\n\nexport type EqualUnequalItems<\n\tTMultiPropType extends string,\n\tTPropValue extends MultiSizePropValue< TMultiPropType >,\n> = [\n\tItem< TMultiPropType, TPropValue >,\n\tItem< TMultiPropType, TPropValue >,\n\tItem< TMultiPropType, TPropValue >,\n\tItem< TMultiPropType, TPropValue >,\n];\n\ntype Props< TMultiPropType extends string, TPropValue extends MultiSizePropValue< TMultiPropType > > = {\n\tlabel: string;\n\ticon: ReactNode;\n\titems: EqualUnequalItems< TMultiPropType, TPropValue >;\n\tmultiSizeType: TMultiPropType;\n};\n\nfunction hasMixedSizes( values: SizeControlValue[] ): boolean {\n\tconst [ firstValue, ...restValues ] = values;\n\n\treturn restValues.some(\n\t\t( value ) => value?.value?.size !== firstValue?.value?.size || value?.value?.unit !== firstValue?.value?.unit\n\t);\n}\n\nexport function EqualUnequalSizesControl<\n\tTMultiPropType extends string,\n\tTPropValue extends MultiSizePropValue< TMultiPropType >,\n>( { label, icon, items, multiSizeType }: Props< TMultiPropType, TPropValue > ) {\n\tconst popupId = useId();\n\tconst controlRef = useRef< HTMLElement >( null );\n\tconst { value: controlValue, setValue: setControlValue } = useBoundProp< TPropValue >();\n\n\tconst actualValue: TPropValue[ 'value' ] = controlValue?.value ?? {};\n\tconst setActualValue = ( newValue: TPropValue[ 'value' ] ) => {\n\t\tsetControlValue( { $$type: multiSizeType, value: newValue } as TPropValue );\n\t};\n\n\tconst setNestedProp = ( item: Item< TMultiPropType, TPropValue >, newValue: PropValue ) => {\n\t\tconst { bind } = item;\n\n\t\tconst newValues = {\n\t\t\t...actualValue,\n\t\t\t[ bind ]: newValue,\n\t\t};\n\n\t\tsetActualValue( newValues );\n\t};\n\n\tconst setEqualValues = ( newValue: PropValue ) => {\n\t\tconst equalValues = items.reduce( ( values: TPropValue[ 'value' ], item ) => {\n\t\t\treturn {\n\t\t\t\t...values,\n\t\t\t\t[ item.bind ]: newValue,\n\t\t\t};\n\t\t}, {} );\n\n\t\tsetActualValue( equalValues );\n\t};\n\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId,\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container alignItems=\"center\" ref={ controlRef }>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<EqualValuesControl\n\t\t\t\t\t\tvalue={ actualValue }\n\t\t\t\t\t\tsetValue={ setEqualValues }\n\t\t\t\t\t\ticonButton={\n\t\t\t\t\t\t\t<ToggleButton\n\t\t\t\t\t\t\t\tsize={ 'tiny' }\n\t\t\t\t\t\t\t\tvalue={ 'check' }\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t{ ...bindToggle( popupState ) }\n\t\t\t\t\t\t\t\tselected={ popupState.isOpen }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ icon }\n\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpaper: { sx: { mt: 0.5, p: 2, pt: 1, width: controlRef.current?.getBoundingClientRect().width } },\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<Stack gap={ 1.5 }>\n\t\t\t\t\t<Grid container spacing={ 2 } alignItems=\"center\">\n\t\t\t\t\t\t<NestedValueControl item={ items[ 0 ] } value={ actualValue } setNestedProp={ setNestedProp } />\n\t\t\t\t\t\t<NestedValueControl item={ items[ 1 ] } value={ actualValue } setNestedProp={ setNestedProp } />\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid container spacing={ 2 } alignItems=\"center\">\n\t\t\t\t\t\t<NestedValueControl item={ items[ 3 ] } value={ actualValue } setNestedProp={ setNestedProp } />\n\t\t\t\t\t\t<NestedValueControl item={ items[ 2 ] } value={ actualValue } setNestedProp={ setNestedProp } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n\nconst NestedValueControl = < TMultiPropType extends string, TPropValue extends MultiSizePropValue< TMultiPropType > >( {\n\titem,\n\tvalue,\n\tsetNestedProp,\n}: {\n\titem: Item< TMultiPropType, TPropValue >;\n\tvalue: TPropValue[ 'value' ] | undefined;\n\tsetNestedProp: ( item: Item< TMultiPropType, TPropValue >, newValue: PropValue ) => void;\n} ) => {\n\tconst { bind } = item;\n\n\tconst nestedValue = value?.[ bind ] ? value[ bind ] : undefined;\n\n\treturn (\n\t\t<BoundPropProvider bind={ '' } setValue={ ( val ) => setNestedProp( item, val ) } value={ nestedValue }>\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<ControlLabel>{ item.label }</ControlLabel>\n\t\t\t\t\t</Grid>\n\t\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t\t<SizeControl startIcon={ item.icon } />\n\t\t\t\t\t</Grid>\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</BoundPropProvider>\n\t);\n};\n\nconst EqualValuesControl = <\n\tTMultiPropType extends string,\n\tTPropValue extends MultiSizePropValue< TMultiPropType >[ 'value' ],\n>( {\n\tvalue,\n\tsetValue,\n\ticonButton,\n}: {\n\tvalue: TPropValue | undefined;\n\tsetValue: ( newValue: TPropValue ) => void;\n\ticonButton: ReactNode;\n} ) => {\n\tconst values = Object.values( value ?? {} ) as SizeControlValue[];\n\tconst isMixed = hasMixedSizes( values );\n\n\treturn (\n\t\t<BoundPropProvider\n\t\t\tbind={ '' }\n\t\t\tsetValue={ ( val ) => setValue( val as TPropValue ) }\n\t\t\tvalue={ isMixed ? undefined : values[ 0 ] }\n\t\t>\n\t\t\t<Stack direction=\"row\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t<SizeControl placeholder={ __( 'MIXED', 'elementor' ) } />\n\t\t\t\t{ iconButton }\n\t\t\t</Stack>\n\t\t</BoundPropProvider>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { BorderWidthField } from './border-width-field';\nimport { BorderColorField } from './border-color-field';\nimport { BorderStyleField } from './border-style-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { useStylesField } from '../../../hooks/use-styles-field';\n\nconst initialSize = { $$type: 'size', value: { size: 1, unit: 'px' } };\nconst initialBorderWidth = {\n\t$$type: 'border-width',\n\tvalue: { top: initialSize, right: initialSize, bottom: initialSize, left: initialSize },\n};\nconst initialBorderColor = { $$type: 'color', value: '#000000' };\nconst initialBorderStyle = 'solid';\n\nexport const BorderField = () => {\n\tconst [ borderWidth, setBorderWidth ] = useStylesField( 'border-width' );\n\tconst [ borderColor, setBorderColor ] = useStylesField( 'border-color' );\n\tconst [ borderStyle, setBorderStyle ] = useStylesField( 'border-style' );\n\n\tconst addBorder = () => {\n\t\tsetBorderWidth( initialBorderWidth );\n\t\tsetBorderColor( initialBorderColor );\n\t\tsetBorderStyle( initialBorderStyle );\n\t};\n\tconst removeBorder = () => {\n\t\tsetBorderWidth( null );\n\t\tsetBorderColor( null );\n\t\tsetBorderStyle( null );\n\t};\n\n\tconst hasBorder = Boolean( borderWidth || borderColor || borderStyle );\n\n\treturn (\n\t\t<AddOrRemoveContent\n\t\t\tlabel={ __( 'Border', 'elementor' ) }\n\t\t\tisAdded={ hasBorder }\n\t\t\tonAdd={ addBorder }\n\t\t\tonRemove={ removeBorder }\n\t\t>\n\t\t\t<BorderWidthField />\n\t\t\t<BorderColorField />\n\t\t\t<BorderStyleField />\n\t\t</AddOrRemoveContent>\n\t);\n};\n","import * as React from 'react';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon, SideAllIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\nimport { BorderWidthPropValue } from '@elementor/editor-props';\nimport { EqualUnequalItems, EqualUnequalSizesControl } from '../../../controls/controls/equal-unequal-sizes-control';\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst edges: EqualUnequalItems< BorderWidthPropValue[ '$$type' ], BorderWidthPropValue > = [\n\t{\n\t\tlabel: __( 'Top', 'elementor' ),\n\t\ticon: <SideTopIcon fontSize={ 'tiny' } />,\n\t\tbind: 'top',\n\t},\n\t{\n\t\tlabel: __( 'Right', 'elementor' ),\n\t\ticon: <SideRightIcon fontSize={ 'tiny' } />,\n\t\tbind: 'right',\n\t},\n\t{\n\t\tlabel: __( 'Bottom', 'elementor' ),\n\t\ticon: <SideBottomIcon fontSize={ 'tiny' } />,\n\t\tbind: 'bottom',\n\t},\n\t{\n\t\tlabel: __( 'Left', 'elementor' ),\n\t\ticon: <SideLeftIcon fontSize={ 'tiny' } />,\n\t\tbind: 'left',\n\t},\n];\n\nexport const BorderWidthField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-width' }>\n\t\t\t<EqualUnequalSizesControl\n\t\t\t\tlabel={ __( 'Border Width', 'elementor' ) }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\titems={ edges }\n\t\t\t\tmultiSizeType={ 'border-width' }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { Grid } from '@elementor/ui';\nimport { ColorControl } from '../../../controls';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\n\nexport const BorderColorField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-color' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border Color', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ColorControl />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { SelectControl } from '../../../controls';\nimport { Grid } from '@elementor/ui';\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { ControlLabel } from '../../control-label';\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];\nexport const BorderStyleField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-style' }>\n\t\t\t<Grid container spacing={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Border Type', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SelectControl options={ borderStyles } />\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 { PropsWithChildren } from 'react';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\nimport { ControlLabel } from './control-label';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tlabel: string;\n\tisAdded: boolean;\n\tonAdd: () => void;\n\tonRemove: () => void;\n};\n\nexport const AddOrRemoveContent = ( { isAdded, label, onAdd, onRemove, children }: PropsWithChildren< Props > ) => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\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} }\n\t\t\t>\n\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t{ isAdded ? (\n\t\t\t\t\t<IconButton size={ SIZE } onClick={ onRemove }>\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 }>\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 }>\n\t\t\t\t<Stack gap={ 1.5 }>{ children }</Stack>\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\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 * as React from 'react';\nimport { ComponentType, ElementType as ReactElementType, useId } from 'react';\nimport { XIcon } from '@elementor/icons';\nimport { bindPopover, bindToggle, IconButton, Popover, Stack, Tooltip, Typography, usePopupState } from '@elementor/ui';\n\nconst SIZE = 'tiny';\n\nexport type PopoverActionProps = {\n\ttitle: string;\n\tvisible?: boolean;\n\ticon: ReactElementType;\n\tpopoverContent: ComponentType< { closePopover: () => void } >;\n};\n\nexport default function PopoverAction( {\n\ttitle,\n\tvisible = true,\n\ticon: Icon,\n\tpopoverContent: PopoverContent,\n}: PopoverActionProps ) {\n\tconst id = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-popover-action-${ id }`,\n\t} );\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 } key={ id } size={ SIZE } { ...bindToggle( popupState ) }>\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\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'center',\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t<Icon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t<Typography variant=\"subtitle2\">{ title }</Typography>\n\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ popupState.close }>\n\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Stack>\n\t\t\t\t<PopoverContent closePopover={ popupState.close } />\n\t\t\t</Popover>\n\t\t</>\n\t);\n}\n","import { createControlActionsMenu } from './controls';\nimport PopoverAction from './popover-action';\n\nexport const { useMenuItems, registerPopoverAction } = createControlActionsMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import { panel } from './panel';\nimport { injectIntoLogic } from '@elementor/editor';\nimport { shouldUseV2Panel } from './sync/should-use-v2-panel';\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { __privateBlockDataCommand as blockDataCommand } from '@elementor/editor-v1-adapters';\nimport { init as initDynamics } from './dynamics/init';\n\nexport default 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\nconst blockV1Panel = () => {\n\tblockDataCommand( {\n\t\tcommand: 'panel/editor/open',\n\t\tcondition: shouldUseV2Panel,\n\t} );\n};\n","import { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const shouldUseV2Panel = () => {\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 { useEffect } from 'react';\nimport { commandStartEvent, __privateListenTo as listenTo } from '@elementor/editor-v1-adapters';\nimport { usePanelActions } from '../panel';\nimport { shouldUseV2Panel } from '../sync/should-use-v2-panel';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( shouldUseV2Panel() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\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 { useId } from 'react';\nimport { __ } from '@wordpress/i18n';\nimport type { Control, ControlsSection } from '@elementor/editor-elements';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tTabs,\n\tDivider,\n\tuseTabs,\n\tTab,\n\tTabPanel,\n} from '@elementor/ui';\nimport { useBoundProp } from '../../controls';\nimport { DynamicPropValue, DynamicTag } from '../types';\nimport { DynamicControl } from '../dynamic-control';\nimport { DynamicSelection } from './dynamic-selection';\nimport { ControlLabel } from '../../components/control-label';\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { usePropValueHistory } from '../hooks/use-prop-value-history';\nimport { ControlType, getControlByType } from '../../controls-registry/controls-registry';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { bind, value, setValue } = useBoundProp< DynamicPropValue | null >();\n\tconst [ propValueFromHistory ] = usePropValueHistory( bind );\n\tconst { name: tagName = '' } = value?.value || {};\n\n\tconst selectionPopoverId = useId();\n\tconst selectionPopoverState = usePopupState( { variant: 'popover', popupId: selectionPopoverId } );\n\n\tconst dynamicTag = useDynamicTag( bind, tagName );\n\n\tconst removeDynamicTag = () => {\n\t\tsetValue( 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: 'left' } }\n\t\t\t\t{ ...bindPopover( selectionPopoverState ) }\n\t\t\t>\n\t\t\t\t<Stack>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" pl={ 1.5 } pr={ 0.5 } py={ 1.5 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ __( 'Dynamic Tags', 'elementor' ) }</Typography>\n\t\t\t\t\t\t<IconButton size={ SIZE } sx={ { ml: 'auto' } } onClick={ selectionPopoverState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSelection onSelect={ selectionPopoverState.close } />\n\t\t\t\t</Stack>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n\nexport const DynamicSettingsPopover = ( { dynamicTag }: { dynamicTag: DynamicTag } ) => {\n\tconst popupId = useId();\n\tconst settingsPopupState = usePopupState( { variant: 'popover', popupId } );\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( settingsPopupState ) }\n\t\t\t\taria-label={ __( '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\tdisableScrollLock\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'center' } }\n\t\t\t\t{ ...bindPopover( settingsPopupState ) }\n\t\t\t>\n\t\t\t\t<Paper component={ Stack } sx={ { minHeight: '300px', width: '220px' } }>\n\t\t\t\t\t<Stack direction=\"row\" alignItems=\"center\" px={ 1.5 } pt={ 2 } pb={ 1 }>\n\t\t\t\t\t\t<DatabaseIcon fontSize={ SIZE } sx={ { mr: 0.5 } } />\n\t\t\t\t\t\t<Typography variant=\"subtitle2\">{ dynamicTag.label }</Typography>\n\t\t\t\t\t\t<IconButton sx={ { ml: 'auto' } } size={ SIZE } onClick={ settingsPopupState.close }>\n\t\t\t\t\t\t\t<XIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</Stack>\n\t\t\t\t\t<DynamicSettings controls={ dynamicTag.atomic_controls } />\n\t\t\t\t</Paper>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n\nconst DynamicSettings = ( { controls }: { controls: DynamicTag[ 'atomic_controls' ] } ) => {\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\treturn (\n\t\t<>\n\t\t\t<Tabs indicatorColor=\"secondary\" textColor=\"secondary\" { ...getTabsProps() }>\n\t\t\t\t{ tabs.map( ( { value }, index ) => (\n\t\t\t\t\t<Tab key={ index } label={ value.label } sx={ { px: 1, py: 0.5 } } { ...getTabProps( index ) } />\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t\t<Divider />\n\n\t\t\t{ tabs.map( ( { value }, index ) => {\n\t\t\t\treturn (\n\t\t\t\t\t<TabPanel key={ index } sx={ { flexGrow: 1 } } { ...getTabPanelProps( index ) }>\n\t\t\t\t\t\t<Stack gap={ 1 } px={ 2 }>\n\t\t\t\t\t\t\t{ value.items.map( ( item ) => {\n\t\t\t\t\t\t\t\tif ( item.type === 'control' ) {\n\t\t\t\t\t\t\t\t\treturn <Control key={ item.value.bind } control={ item.value } />;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</TabPanel>\n\t\t\t\t);\n\t\t\t} ) }\n\t\t</>\n\t);\n};\n\nconst Control = ( { control }: { control: Control[ 'value' ] } ) => {\n\tif ( ! getControlByType( control.type as ControlType ) ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<DynamicControl bind={ control.bind }>\n\t\t\t{ control.label ? <ControlLabel>{ control.label }</ControlLabel> : null }\n\t\t\t<BaseControl type={ control.type as ControlType } props={ control.props } />\n\t\t</DynamicControl>\n\t);\n};\n","import * as React from 'react';\nimport { useBoundProp } from '../controls';\nimport { PropKey, PropValue } from '@elementor/editor-props';\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { DynamicPropValue } from './types';\nimport { BoundPropProvider } from '../controls/bound-prop-context';\n\nexport type DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue, bind: propName } = useBoundProp< DynamicPropValue >();\n\tconst { name = '', settings } = value?.value ?? {};\n\n\tconst dynamicTag = useDynamicTag( propName, name );\n\n\tif ( ! dynamicTag ) {\n\t\tthrow new Error( `Dynamic tag ${ name } not found` );\n\t}\n\n\tconst defaultValue = dynamicTag.props_schema[ bind ]?.default;\n\tconst dynamicValue = settings?.[ bind ] ?? defaultValue;\n\n\tconst setDynamicValue = ( newValue: PropValue ) => {\n\t\tsetValue( {\n\t\t\t$$type: 'dynamic',\n\t\t\tvalue: {\n\t\t\t\tname,\n\t\t\t\tsettings: {\n\t\t\t\t\t...settings,\n\t\t\t\t\t[ bind ]: newValue,\n\t\t\t\t},\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn (\n\t\t<BoundPropProvider setValue={ setDynamicValue } value={ dynamicValue } bind={ bind }>\n\t\t\t{ children }\n\t\t</BoundPropProvider>\n\t);\n};\n","import { useMemo } from 'react';\nimport { PropKey } from '@elementor/editor-props';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\nimport { DynamicTag } from '../types';\n\nexport const useDynamicTag = ( propName: PropKey, tagName: string ): DynamicTag | null => {\n\tconst dynamicTags = usePropDynamicTags( propName );\n\n\treturn useMemo( () => dynamicTags.find( ( tag ) => tag.name === tagName ) ?? null, [ dynamicTags, tagName ] );\n};\n","import { useMemo } from 'react';\nimport { PropKey } from '@elementor/editor-props';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { useElement } from '../../contexts/element-context';\nimport { getDynamicPropType } from '../utils';\n\nexport const usePropDynamicTags = ( propName: PropKey ) => {\n\tlet categories: string[] = [];\n\n\tconst { elementType } = useElement();\n\n\tconst propType = elementType.propsSchema?.[ propName ];\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 dynamicTags = getAtomicDynamicTags();\n\n\tif ( ! categories.length || ! dynamicTags?.tags ) {\n\t\treturn [];\n\t}\n\n\tconst _categories = new Set( categories );\n\n\treturn Object.values( dynamicTags.tags ).filter( ( dynamicTag ) =>\n\t\tdynamicTag.categories.some( ( category ) => _categories.has( category ) )\n\t);\n};\n","import { 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 { isTransformable, PropType, PropValue, TransformablePropType } from '@elementor/editor-props';\nimport { DynamicPropType, DynamicPropValue } from './types';\n\nconst DYNAMIC_PROP_TYPE_KEY = 'dynamic';\n\nexport const 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","import * as React from 'react';\nimport { useState, Fragment } from 'react';\nimport { PropKey, PropValue } from '@elementor/editor-props';\nimport { SearchIcon, PhotoIcon } from '@elementor/icons';\nimport {\n\tBox,\n\tDivider,\n\tInputAdornment,\n\tLink,\n\tListSubheader,\n\tMenuItem,\n\tMenuList,\n\tStack,\n\tTextField,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\nimport { useBoundProp } from '../../controls';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { isDynamicPropValue } from '../utils';\nimport { usePropValueHistory } from '../hooks/use-prop-value-history';\nimport { DynamicPropValue } from '../types';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n};\n\ntype OptionEntry = [ string, Option[] ];\n\nconst SIZE = 'tiny';\n\nexport type DynamicSelectionProps = {\n\tonSelect?: () => void;\n};\n\nexport const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\tconst { groups: dynamicGroups } = getAtomicDynamicTags() || {};\n\tconst { bind, value: currentValue, setValue } = useBoundProp< DynamicPropValue | PropValue >();\n\tconst [ , updatePropValueHistory ] = usePropValueHistory( bind );\n\n\tconst isCurrentValueDynamic = isDynamicPropValue( currentValue );\n\n\tconst options = useFilteredOptions( bind, searchValue );\n\n\tconst handleSearch = ( event: React.ChangeEvent< HTMLInputElement > ) => {\n\t\tsetSearchValue( event.target.value );\n\t};\n\n\tconst handleSetDynamicTag = ( value: string ) => {\n\t\tif ( ! isCurrentValueDynamic ) {\n\t\t\tupdatePropValueHistory( currentValue );\n\t\t}\n\n\t\tsetValue( { $$type: 'dynamic', value: { name: value, settings: {} } } );\n\n\t\tonSelect?.();\n\t};\n\n\treturn (\n\t\t<Stack>\n\t\t\t<Box px={ 1.5 } pb={ 1 }>\n\t\t\t\t<TextField\n\t\t\t\t\tfullWidth\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tonChange={ handleSearch }\n\t\t\t\t\tplaceholder={ __( 'Search dynamic tag', 'elementor' ) }\n\t\t\t\t\tInputProps={ {\n\t\t\t\t\t\tstartAdornment: (\n\t\t\t\t\t\t\t<InputAdornment position=\"start\">\n\t\t\t\t\t\t\t\t<SearchIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</InputAdornment>\n\t\t\t\t\t\t),\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Box>\n\t\t\t<Divider />\n\t\t\t<Box sx={ { overflowY: 'auto', height: 260, width: 220 } }>\n\t\t\t\t{ options.length > 0 ? (\n\t\t\t\t\t<MenuList role=\"listbox\" tabIndex={ 0 }>\n\t\t\t\t\t\t{ options.map( ( [ category, items ], index ) => (\n\t\t\t\t\t\t\t<Fragment key={ index }>\n\t\t\t\t\t\t\t\t<ListSubheader sx={ { typography: 'caption', color: 'text.tertiary' } }>\n\t\t\t\t\t\t\t\t\t{ dynamicGroups?.[ category ]?.title || category }\n\t\t\t\t\t\t\t\t</ListSubheader>\n\t\t\t\t\t\t\t\t{ items.map( ( { value, label: tagLabel } ) => {\n\t\t\t\t\t\t\t\t\tconst isSelected = isCurrentValueDynamic && value === currentValue?.value?.name;\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\t\t\tkey={ value }\n\t\t\t\t\t\t\t\t\t\t\tselected={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\t\t\t\t\t\t\t\t\tautoFocus={ isSelected }\n\t\t\t\t\t\t\t\t\t\t\tsx={ { typography: 'caption' } }\n\t\t\t\t\t\t\t\t\t\t\tonClick={ () => handleSetDynamicTag( value ) }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t{ tagLabel }\n\t\t\t\t\t\t\t\t\t\t</MenuItem>\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</Fragment>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</MenuList>\n\t\t\t\t) : (\n\t\t\t\t\t<Stack alignItems=\"center\" p={ 2.5 } gap={ 1.5 }>\n\t\t\t\t\t\t<PhotoIcon fontSize=\"large\" />\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t“{ searchValue }”.\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography align=\"center\" variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t\t\t<Link\n\t\t\t\t\t\t\t\tcolor=\"secondary\"\n\t\t\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\t\t\tcomponent=\"button\"\n\t\t\t\t\t\t\t\tonClick={ () => setSearchValue( '' ) }\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{ __( 'Clear the filters', 'elementor' ) }\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t{ __( 'and try again.', 'elementor' ) }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Stack>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t</Stack>\n\t);\n};\n\nconst useFilteredOptions = ( bind: PropKey, searchValue: string ): OptionEntry[] => {\n\tconst dynamicTags = usePropDynamicTags( bind );\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, value: name } );\n\n\t\treturn categories;\n\t}, new Map() );\n\n\treturn [ ...options ];\n};\n","import { PropValue } from '@elementor/editor-props';\nimport { useElement } from '../../contexts/element-context';\n\nexport const PROPS_VALUES_HISTORY_KEY = 'elementor/dynamic/non-dynamic-values-history';\n\nexport const usePropValueHistory = ( path: string ) => {\n\tconst valuesHistory = getValues();\n\tconst { element } = useElement();\n\tconst key = `${ element.id }-${ path }`;\n\n\tconst value = valuesHistory[ key ] ?? null;\n\n\tconst setValue = ( newValue: PropValue ) => {\n\t\tsetValues( { ...valuesHistory, [ key ]: newValue } );\n\t};\n\n\treturn [ value, setValue ] as const;\n};\n\nconst getValues = () => {\n\treturn JSON.parse( sessionStorage.getItem( PROPS_VALUES_HISTORY_KEY ) || '{}' );\n};\n\nconst setValues = ( values: Record< string, PropValue > ) => {\n\tsessionStorage.setItem( PROPS_VALUES_HISTORY_KEY, JSON.stringify( values ) );\n};\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { supportsDynamic } from '../utils';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { useBoundProp } from '../../controls';\nimport { PopoverActionProps } from '../../popover-action';\nimport { useElement } from '../../contexts/element-context';\n\nexport const usePropDynamicAction = (): PopoverActionProps => {\n\tconst { bind } = useBoundProp();\n\tconst { elementType } = useElement();\n\n\tconst propType = elementType.propsSchema[ bind ];\n\tconst visible = !! propType && supportsDynamic( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: DatabaseIcon,\n\t\ttitle: __( 'Dynamic Tags', 'elementor' ),\n\t\tpopoverContent: ( { closePopover } ) => <DynamicSelection onSelect={ closePopover } />,\n\t};\n};\n","import { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { isDynamicPropValue } from './utils';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { replaceControl } from '../control-replacement';\nimport { registerPopoverAction } from '../controls-actions';\n\nexport const init = () => {\n\treplaceControl( {\n\t\tcomponent: DynamicSelectionControl,\n\t\tcondition: ( { value } ) => isDynamicPropValue( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'dynamic-tags',\n\t\tuseProps: usePropDynamicAction,\n\t} );\n};\n","export type { PopoverActionProps } from './popover-action';\nexport { replaceControl } from './control-replacement';\nexport { useBoundProp } from './controls';\n\nimport init from './init';\n\ninit();\n"],"mappings":"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","names":["React","__","Stack","React","React","React","createContext","useContext","MenuItem","React","React","createContext","useContext","createContext","useContext","replaceControl","getControlReplacement","React","options","React","Stack","__","React","React","TextField","TextField","React","InputAdornment","React","Button","MenuItem","TextField","options","units","InputAdornment","React","__","Grid","Stack","React","Stack","__","Grid","React","__","Grid","Stack","Typography","React","useId","useState","__","Stack","bindTrigger","usePopupState","Typography","__","Stack","Grid","Control","Typography","React","React","styled","options","React","TextField","TextField","React","__","Stack","React","__","React","Stack","React","React","createContext","useContext","Context","React","useId","Stack","React","Control","React","styled","Box","styled","Box","Stack","Control","React","useState","Stack","React","createContext","useContext","Context","React","Grid","Stack","__","React","__","Grid","EyeIcon","EyeOffIcon","React","React","createContext","useContext","Context","__","EyeIcon","EyeOffIcon","Grid","__","Stack","Grid","React","Divider","Stack","React","__","Grid","ToggleButtonGroup","Grid","__","ToggleButtonGroup","ToggleButton","__","React","__","Grid","Grid","__","React","__","Grid","__","Grid","React","__","Grid","Grid","__","React","__","Grid","Grid","__","React","__","Grid","Grid","__","React","useState","Button","Stack","styled","__","React","__","Grid","options","__","Grid","React","__","Grid","options","__","Grid","React","__","Grid","options","__","Grid","React","__","React","useState","__","Collapse","IconButton","Stack","PlusIcon","__","__","Stack","Divider","React","Stack","React","__","Grid","Grid","__","React","__","Grid","__","Grid","__","React","Grid","Stack","__","Stack","__","Grid","__","Stack","React","Divider","Stack","__","React","__","Grid","Stack","ToggleButton","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Stack","ToggleButton","__","Grid","Control","SideTopIcon","SideRightIcon","SideBottomIcon","SideLeftIcon","__","Stack","Divider","React","__","Stack","__","Stack","React","__","Stack","React","__","Grid","Grid","__","__","Stack","React","Divider","Stack","__","React","__","React","useId","useRef","bindPopover","Grid","Popover","Stack","ToggleButton","usePopupState","__","useId","useRef","usePopupState","Grid","ToggleButton","Popover","bindPopover","Stack","__","__","React","__","React","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","__","__","SideTopIcon","SideRightIcon","SideBottomIcon","SideLeftIcon","React","__","Grid","Grid","__","React","__","Grid","__","Grid","React","MinusIcon","PlusIcon","Collapse","IconButton","Stack","SIZE","Stack","IconButton","MinusIcon","PlusIcon","Collapse","__","__","Stack","Divider","Stack","useState","Stack","__","ErrorBoundary","React","Box","React","useId","XIcon","bindPopover","bindToggle","IconButton","Popover","Stack","Tooltip","Typography","usePopupState","SIZE","__","ErrorBoundary","useEffect","useEffect","React","useId","__","XIcon","bindPopover","bindTrigger","Box","IconButton","Popover","Stack","Typography","usePopupState","Tabs","Divider","useTabs","Tab","TabPanel","React","useMemo","useMemo","React","useState","Fragment","Box","Divider","InputAdornment","MenuItem","Stack","TextField","Typography","__","SIZE","useState","options","Stack","Box","TextField","__","InputAdornment","Divider","Fragment","MenuItem","Typography","SIZE","useId","usePopupState","Box","bindTrigger","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","React","__","DatabaseIcon","DatabaseIcon","__","init","init"]}
|