@elementor/editor-editing-panel 1.1.0 → 1.3.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.
Files changed (34) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/dist/index.js +868 -444
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +851 -403
  5. package/dist/index.mjs.map +1 -1
  6. package/package.json +15 -14
  7. package/src/components/css-class-selector.tsx +131 -0
  8. package/src/components/multi-combobox/multi-combobox.tsx +34 -32
  9. package/src/components/multi-combobox/types.ts +2 -0
  10. package/src/components/multi-combobox/use-combobox-actions.ts +4 -4
  11. package/src/components/style-sections/border-section/border-radius-field.tsx +4 -4
  12. package/src/components/style-sections/border-section/border-width-field.tsx +4 -4
  13. package/src/components/style-sections/layout-section/align-items-field.tsx +72 -0
  14. package/src/components/style-sections/layout-section/align-self-child-field.tsx +72 -0
  15. package/src/components/style-sections/layout-section/flex-direction-field.tsx +64 -0
  16. package/src/components/style-sections/layout-section/flex-order-field.tsx +120 -0
  17. package/src/components/style-sections/layout-section/flex-size-field.tsx +164 -0
  18. package/src/components/style-sections/layout-section/justify-content-field.tsx +62 -62
  19. package/src/components/style-sections/layout-section/layout-section.tsx +27 -3
  20. package/src/components/style-sections/layout-section/utils/rotated-icon.tsx +52 -0
  21. package/src/components/style-sections/layout-section/wrap-field.tsx +52 -0
  22. package/src/components/style-sections/position-section/position-section.tsx +3 -3
  23. package/src/components/style-sections/typography-section/line-height-field.tsx +21 -0
  24. package/src/components/style-sections/typography-section/text-stroke-field.tsx +41 -6
  25. package/src/components/style-sections/typography-section/text-style-field.tsx +31 -8
  26. package/src/components/style-sections/typography-section/typography-section.tsx +3 -1
  27. package/src/components/style-tab.tsx +2 -2
  28. package/src/controls-registry/controls-registry.tsx +4 -0
  29. package/src/dynamics/components/dynamic-selection-control.tsx +8 -5
  30. package/src/dynamics/components/dynamic-selection.tsx +10 -8
  31. package/src/dynamics/dynamic-control.tsx +9 -11
  32. package/src/dynamics/utils.ts +20 -3
  33. package/src/components/css-class-selector-section.tsx +0 -76
  34. package/src/components/style-sections/layout-section/utils/rotate-flex-icon.ts +0 -12
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/control-replacement.tsx","../src/init.ts","../src/hooks/use-close-editor-panel.ts","../src/panel.ts","../src/components/editing-panel.tsx","../src/contexts/element-context.tsx","../src/controls-actions.ts","../src/popover-action.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/components/section.tsx","../src/components/collapse-icon.tsx","../src/components/sections-list.tsx","../src/components/style-tab.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/style-context.tsx","../src/components/css-class-selector-section.tsx","../src/components/multi-combobox/multi-combobox.tsx","../src/components/multi-combobox/use-combobox-actions.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-field.ts","../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-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/hooks/use-direction.ts","../src/components/style-sections/layout-section/utils/rotate-flex-icon.ts","../src/components/style-sections/position-section/position-section.tsx","../src/hooks/use-style-prop-history.ts","../src/hooks/use-prop-value-history.ts","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/sync/get-elementor-config.ts","../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/letter-spacing-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/collapsible-field.tsx","../src/components/style-sections/typography-section/text-style-field.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/sync/is-atomic-widget-selected.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-dynamic-action.tsx","../src/dynamics/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { replaceControl } from './control-replacement';\n\nimport init from './init';\n\ninit();\n","import { createControlReplacement } from '@elementor/editor-controls';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import { injectIntoLogic } from '@elementor/editor';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { __privateBlockDataCommand as blockDataCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\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: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { getSelectedElements, isElementInContainer, type V1Element } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, type CommandEvent, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useCloseEditorPanel = () => {\n\tconst { close } = usePanelActions();\n\n\treturn useEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'document/elements/delete' ), ( e ) => {\n\t\t\tconst selectedElement = getSelectedElements()[ 0 ];\n\t\t\tconst { container: deletedContainer } = ( e as CommandEvent< { container: V1Element } > )?.args;\n\t\t\tconst isSelectedElementInDeletedContainer =\n\t\t\t\tdeletedContainer && selectedElement && isElementInContainer( selectedElement, deletedContainer );\n\n\t\t\tif ( isSelectedElementInDeletedContainer && isAtomicWidgetSelected() ) {\n\t\t\t\tclose();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nconst { useMenuItems } = controlActionsMenu;\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 * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import { createMenu } from '@elementor/menus';\n\nimport PopoverAction from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ComponentType, type 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 * 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 { Fragment } from 'react';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Tabs variant=\"fullWidth\" indicatorColor=\"secondary\" textColor=\"inherit\" { ...getTabsProps() }>\n\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t</Tabs>\n\t\t\t\t<Divider />\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t</Stack>\n\t\t</Fragment>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { type Control } from '@elementor/editor-elements';\n\nimport { useElement } from '../contexts/element-context';\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { type ControlType, getControlByType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\n\nexport const SettingsTab = () => {\n\tconst { elementType } = useElement();\n\n\treturn (\n\t\t<SectionsList>\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<Section title={ value.label } key={ type + '.' + index } defaultExpanded={ true }>\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</Section>\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</SectionsList>\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<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 type { ComponentProps } from 'react';\nimport { createError } from '@elementor/utils';\n\nimport { type ControlType, type 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 {\n\ttype ControlComponent,\n\tImageControl,\n\tSelectControl,\n\tSizeControl,\n\tTextAreaControl,\n\tTextControl,\n} from '@elementor/editor-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 { Box, type BoxProps, styled } from '@elementor/ui';\n\nimport { type ControlLayout, type 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 { BoundPropProvider } from '@elementor/editor-controls';\nimport { updateSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\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( 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 { type PropsWithChildren, useId, useState } from 'react';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useState( !! defaultExpanded );\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\tonClick={ () => setIsOpen( ( prev ) => ! prev ) }\n\t\t\t>\n\t\t\t\t<ListItemText secondary={ title } />\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\" unmountOnExit>\n\t\t\t\t<Stack gap={ 2.5 } p={ 2 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { ChevronDownIcon } from '@elementor/icons';\nimport { styled } from '@elementor/ui';\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nexport const CollapseIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useElementSetting, useElementStyles } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { generateId, type StyleDefinition } from '@elementor/editor-styles';\nimport { Divider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { CssClassSelectorSection } from './css-class-selector-section';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\n\nconst CLASSES_PROP_KEY = 'classes';\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp );\n\tconst breakpoint = useActiveBreakpoint();\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider meta={ { breakpoint, state: null } } id={ activeStyleDefId } setId={ setActiveStyleDefId }>\n\t\t\t\t<CssClassSelectorSection />\n\t\t\t\t<Divider />\n\t\t\t\t<SectionsList>\n\t\t\t\t\t<Section title={ __( 'Layout', 'elementor' ) }>\n\t\t\t\t\t\t<LayoutSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t\t\t\t<SpacingSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Size', 'elementor' ) }>\n\t\t\t\t\t\t<SizeSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Position', 'elementor' ) }>\n\t\t\t\t\t\t<PositionSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Typography', 'elementor' ) }>\n\t\t\t\t\t\t<TypographySection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Background', 'elementor' ) }>\n\t\t\t\t\t\t<BackgroundSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Border', 'elementor' ) }>\n\t\t\t\t\t\t<BorderSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Effects', 'elementor' ) }>\n\t\t\t\t\t\t<EffectsSection />\n\t\t\t\t\t</Section>\n\t\t\t\t</SectionsList>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction useActiveStyleDefId( currentClassesProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinition[ 'id' ] | null >( null );\n\n\tconst fallback = useFirstElementStyleDef( currentClassesProp );\n\n\tconst newId = useGeneratedId();\n\n\treturn [ activeStyledDefId || fallback?.id || newId, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstElementStyleDef( currentClassesProp: PropKey ) {\n\tconst { element } = useElement();\n\n\tconst classesIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst stylesDefs = useElementStyles( element.id );\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => classesIds.includes( styleDef.id ) );\n}\n\nfunction useGeneratedId() {\n\tconst { element } = useElement();\n\tconst stylesDefs = useElementStyles( element.id );\n\n\treturn generateId( `e-${ element.id }-`, Object.keys( stylesDefs ) );\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, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport { type StyleDefinition, type StyleVariant } from '@elementor/editor-styles';\n\ntype ContextValue = {\n\tid: StyleDefinition[ 'id' ];\n\tsetId: Dispatch< 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, setId, meta }: Props ) {\n\treturn <Context.Provider value={ { id, setId, meta } }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { useElementSetting, useElementStyles } from '@elementor/editor-elements';\nimport { type ClassesPropValue } from '@elementor/editor-props';\nimport { Chip, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { MultiCombobox, type Option } from './multi-combobox';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 8;\n\nexport function CssClassSelectorSection() {\n\tconst options = useOptions();\n\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst appliedIds = useAppliedClassesIds();\n\n\tconst applied = options.filter( ( option ) => appliedIds.includes( option.value ) );\n\tconst active = options.find( ( option ) => option.value === activeId ) || null;\n\n\treturn (\n\t\t<Stack gap={ 1 } p={ 2 }>\n\t\t\t<Typography component=\"label\" variant=\"caption\" htmlFor={ ID }>\n\t\t\t\t{ __( 'CSS Classes', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<MultiCombobox\n\t\t\t\tid={ ID }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\toptions={ options }\n\t\t\t\tselected={ applied }\n\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\toptionsLabel={ __( 'Global CSS Classes', 'elementor' ) }\n\t\t\t\trenderTags={ ( tagValue, getTagProps ) =>\n\t\t\t\t\ttagValue.map( ( option, index ) => {\n\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t{ ...chipProps }\n\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tlabel={ option.label }\n\t\t\t\t\t\t\t\tvariant={ option.value === active?.value ? 'filled' : 'standard' }\n\t\t\t\t\t\t\t\tcolor={ option.color ?? 'default' }\n\t\t\t\t\t\t\t\tonClick={ () => setActiveId( option.value ) }\n\t\t\t\t\t\t\t\tonDelete={ null }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n\nfunction useAppliedClassesIds() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\treturn useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n}\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst styleDefs = useElementStyles( element.id );\n\n\treturn Object.values( styleDefs ).map< Option >( ( styleDef ) => ( {\n\t\tlabel: styleDef.label,\n\t\tvalue: styleDef.id,\n\t\tcolor: 'primary',\n\t} ) );\n}\n","import * as React from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tChip,\n\tstyled,\n\tTextField,\n} from '@elementor/ui';\nimport { type FilterOptionsState } from '@mui/base';\n\nimport { type ActionOption, type Actions, type Option } from './types';\nimport { useComboboxActions } from './use-combobox-actions';\n\ntype Props = Omit< AutocompleteProps< Option, true, true, true >, 'renderInput' | 'getLimitTagsText' > & {\n\tactions?: Actions;\n\tselected: Option[];\n\toptions: Option[];\n\toptionsLabel?: string;\n\tonApply?: ( value: Option[] ) => void;\n\tonCreate?: ( value: string ) => void;\n};\n\nexport const MultiCombobox = ( {\n\tactions = {},\n\tselected,\n\toptions,\n\toptionsLabel,\n\tonApply,\n\tonCreate,\n\t...props\n}: Props ) => {\n\tconst { action: actionProps, option: optionProps } = useComboboxActions( selected, actions, optionsLabel, onApply );\n\n\tconst handleSelectOption = ( values: Array< ActionOption | Option | string > ) => {\n\t\tconst action = values.find( ( value ) => actionProps.is( value as ActionOption ) );\n\n\t\tif ( action ) {\n\t\t\treturn actionProps.onChange( action as ActionOption );\n\t\t}\n\n\t\treturn optionProps.onChange( values as Option[] );\n\t};\n\n\tconst handleCreateOption = ( values: Array< ActionOption | Option | string > ) => {\n\t\tconst value = values.find( ( option ) => typeof option === 'string' );\n\n\t\tonCreate?.( value as string );\n\t};\n\n\treturn (\n\t\t<Autocomplete\n\t\t\t{ ...props }\n\t\t\tfreeSolo\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tvalue={ selected }\n\t\t\toptions={ options }\n\t\t\trenderGroup={ renderGroup }\n\t\t\trenderInput={ ( params ) => <TextField { ...params } /> }\n\t\t\tgetLimitTagsText={ ( more ) => <Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable /> }\n\t\t\tonChange={ ( _, values, reason ) => {\n\t\t\t\tif ( reason === 'selectOption' ) {\n\t\t\t\t\treturn handleSelectOption( values );\n\t\t\t\t}\n\n\t\t\t\tif ( reason === 'createOption' ) {\n\t\t\t\t\treturn handleCreateOption( values );\n\t\t\t\t}\n\n\t\t\t\tonApply?.( values as ActionOption[] );\n\t\t\t} }\n\t\t\tgetOptionLabel={ ( option ) => {\n\t\t\t\tif ( optionProps.is( option as ActionOption ) ) {\n\t\t\t\t\treturn optionProps.getLabel( option as Option );\n\t\t\t\t}\n\n\t\t\t\treturn actionProps.getLabel( option as ActionOption ) ?? '';\n\t\t\t} }\n\t\t\tfilterOptions={ ( optionList: Option[], params: FilterOptionsState< ActionOption | Option > ) => {\n\t\t\t\tconst filteredoptions = optionProps.getFilteredOptions( optionList, params );\n\n\t\t\t\tconst actionOptions = actionProps.getFilteredActions( optionList, params );\n\n\t\t\t\treturn [ ...actionOptions, ...filteredoptions ];\n\t\t\t} }\n\t\t\tgroupBy={ ( option ) =>\n\t\t\t\t( optionProps.is( option ) ? optionProps.groupBy() : actionProps.groupBy( option ) ) ?? ''\n\t\t\t}\n\t\t/>\n\t);\n};\n\nexport const renderGroup = ( params: AutocompleteRenderGroupParams ) => (\n\t<Group key={ params.key }>\n\t\t<GroupHeader>{ params.group }</GroupHeader>\n\t\t<GroupItems>{ params.children }</GroupItems>\n\t</Group>\n);\n\nconst Group = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst GroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n} ) );\n\nconst GroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n","import { createFilterOptions } from '@elementor/ui';\nimport { type FilterOptionsState } from '@mui/base';\n\nimport { type Action, type ActionOption, type Actions, type Option } from './types';\n\nexport const useComboboxActions = (\n\tapplied: Option[],\n\tactions: Actions,\n\toptionsLabel?: string,\n\tonApply?: ( value: Option[] ) => void\n) => ( {\n\taction: {\n\t\tis: ( opt: ActionOption ): opt is ActionOption => !! opt.action,\n\t\tgetLabel: ( option: ActionOption ) => option.action.getLabel( option.label ),\n\t\tgroupBy: ( option: ActionOption ) => option.action.groupLabel,\n\t\tonChange: ( { action, label }: ActionOption ) => action?.apply( label ),\n\t\tgetFilteredActions: ( optionList: Option[], params: FilterOptionsState< ActionOption > ) => {\n\t\t\tconst actionGroups = Object.values( actions );\n\n\t\t\treturn actionGroups.reduce< Option[] >( ( groups, group ) => {\n\t\t\t\tconst actionOptions = group.actions.reduce< Option[] >( ( groupActions, action ) => {\n\t\t\t\t\tconst shouldShowAction = action.condition( optionList, params.inputValue );\n\n\t\t\t\t\tif ( shouldShowAction ) {\n\t\t\t\t\t\tconst actionOption = createActionOption( group.label, action, params.inputValue );\n\t\t\t\t\t\tgroupActions.unshift( actionOption );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn groupActions;\n\t\t\t\t}, [] );\n\n\t\t\t\treturn [ ...groups, ...actionOptions ];\n\t\t\t}, [] );\n\t\t},\n\t},\n\toption: {\n\t\tis: ( opt: ActionOption | Option ): opt is Option => ! ( 'action' in opt ),\n\t\tgetLabel: ( option: Option ) => option.label,\n\t\tgroupBy: () => optionsLabel ?? '',\n\t\tonChange: ( optionValues: Option[] ) => onApply?.( optionValues ),\n\t\tgetFilteredOptions: ( optionList: Option[], params: FilterOptionsState< Option > ) => {\n\t\t\tconst appliedValues = applied.map( ( option ) => option.value );\n\n\t\t\tconst optionsWithoutApplied = optionList.filter( ( option ) => ! appliedValues.includes( option.value ) );\n\n\t\t\treturn filter( optionsWithoutApplied, params );\n\t\t},\n\t},\n} );\n\n// Helper functions.\nconst filter = createFilterOptions< Option >();\n\nconst createActionOption = ( groupLabel: string, action: Action, inputValue: string ): ActionOption => ( {\n\tvalue: '',\n\tlabel: inputValue,\n\taction: {\n\t\tgroupLabel,\n\t\tapply: action.apply,\n\t\tgetLabel: action.getLabel,\n\t},\n} );\n","import * as React from 'react';\nimport { BackgroundOverlayRepeaterControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { BackgroundColorField } from './background-color-field';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind=\"background-image\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<BackgroundColorField />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { BoundPropProvider } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useStylesField } from '../hooks/use-styles-field';\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 { useEffect, useRef } from 'react';\nimport { updateStyle, useElementStyleProp } from '@elementor/editor-elements';\nimport type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesField = < T extends PropValue >(\n\tpropName: PropKey\n): [\n\tT | null,\n\t( newValue: T ) => void,\n\t( callback: ( newValue: T | null, previousValue: T | null ) => void ) => void,\n] => {\n\tconst { element } = useElement();\n\tconst { id, meta } = useStyle();\n\tconst classesProp = useClassesProp();\n\tconst previousValue = useRef< T | null >( null );\n\tconst onChangeCallbacks = useRef< Set< ( newValue: T | null, previousValue: T | null ) => void > >( new Set() );\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\tconst registerChangeListener = ( callback: ( newValue: T | null, previousValue: T | null ) => void ) => {\n\t\tonChangeCallbacks.current.add( callback );\n\t};\n\n\tuseEffect( () => {\n\t\tonChangeCallbacks.current.forEach( ( cb ) => {\n\t\t\tcb( value, previousValue.current );\n\t\t} );\n\t\tpreviousValue.current = value;\n\t}, [ value ] );\n\n\treturn [ value, setValue, registerChangeListener ];\n};\n","import * as React from 'react';\nimport { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BackgroundColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"background-color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { Divider, Stack } from '@elementor/ui';\n\nimport { BorderField } from './border-field';\nimport { BorderRadiusField } from './border-radius-field';\n\nexport const BorderSection = () => (\n\t<Stack gap={ 1.5 }>\n\t\t<BorderRadiusField />\n\t\t<Divider />\n\t\t<BorderField />\n\t</Stack>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-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 { type PropsWithChildren } from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\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 } unmountOnExit>\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 { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BorderColorField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-color' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { type BorderWidthPropValue } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\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 { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport type { BorderRadiusPropValue } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\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 { BoxShadowRepeaterControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind=\"box-shadow\">\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Stack } from '@elementor/ui';\n\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { DisplayField } from './display-field';\nimport { JustifyContentField } from './justify-content-field';\n\nexport const LayoutSection = () => {\n\tconst [ display ] = useStylesField( 'display' );\n\n\treturn (\n\t\t<Stack gap={ 2 }>\n\t\t\t<DisplayField />\n\t\t\t{ 'flex' === display && <JustifyContentField /> }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Displays = 'block' | 'flex';\n\nexport const DisplayField = () => {\n\tconst options: ToggleButtonGroupItem< Displays >[] = [\n\t\t{\n\t\t\tvalue: 'block',\n\t\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\t\tlabel: __( 'Block', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tvalue: 'flex',\n\t\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t},\n\t];\n\n\treturn (\n\t\t<StylesField bind=\"display\">\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon,\n\tJustifyDistributeVerticalIcon,\n\tJustifySpaceAroundVerticalIcon,\n\tJustifySpaceBetweenVerticalIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { rotateFlexIcon } from './utils/rotate-flex-icon';\n\ntype JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nexport const JustifyContentField = () => {\n\tconst [ direction ] = useStylesField( 'flex-direction' );\n\n\tconst { isUiRtl, isSiteRtl } = useDirection(),\n\t\tsx = { transform: rotateFlexIcon( direction as string, -1 ) } as const,\n\t\tshouldReverseOrder = isSiteRtl !== isUiRtl;\n\n\tconst StartIcon = isSiteRtl ? JustifyBottomIcon : JustifyTopIcon,\n\t\tEndIcon = isSiteRtl ? JustifyTopIcon : JustifyBottomIcon;\n\n\tconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t\t{\n\t\t\tvalue: 'start',\n\t\t\tlabel: __( 'Start', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <StartIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'center',\n\t\t\tlabel: __( 'Center', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <JustifyCenterIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'end',\n\t\t\tlabel: __( 'End', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <EndIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'space-between',\n\t\t\tlabel: __( 'Space Between', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <JustifySpaceBetweenVerticalIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'space-around',\n\t\t\tlabel: __( 'Space Around', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <JustifySpaceAroundVerticalIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t\t{\n\t\t\tvalue: 'space-evenly',\n\t\t\tlabel: __( 'Space Evenly', 'elementor' ),\n\t\t\trenderContent: ( { size } ) => <JustifyDistributeVerticalIcon fontSize={ size } sx={ sx } />,\n\t\t\tshowTooltip: true,\n\t\t},\n\t];\n\n\tif ( shouldReverseOrder ) {\n\t\toptions.reverse();\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"justify-content\">\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t<ControlLabel>{ __( 'Justify Content', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useDirection() {\n\tconst theme = useTheme(),\n\t\textendedWindow: ExtendedWindow = window;\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! extendedWindow.elementorFrontend?.config?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","export function rotateFlexIcon( direction: string | null = 'row', initValue: number ) {\n\tconst rotationIndexMap: Record< string, number > = {\n\t\trow: 0,\n\t\tcolumn: 1,\n\t\t'row-reverse': 2,\n\t\t'column-reverse': 3,\n\t};\n\n\tconst rotationIndex = initValue + ( rotationIndexMap[ direction || 'row' ] ?? 0 );\n\n\treturn `rotate(calc(90deg * ${ rotationIndex }))`;\n}\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport type { PropValue } from '@elementor/editor-props';\nimport { Stack } from '@elementor/ui';\n\nimport { useStylePropsHistory } from '../../../hooks/use-style-prop-history';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { DimensionsField } from './dimensions-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\nconst dimensionsPropKeys = [ 'top', 'bottom', 'left', 'right' ];\n\nexport const PositionSection = () => {\n\tconst [ positionValue ] = useStylesField( 'position' );\n\tusePositionChangeHandler();\n\n\tconst isNotStatic = positionValue && positionValue !== 'static';\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<PositionField />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</Stack>\n\t);\n};\n\nconst usePositionChangeHandler = () => {\n\tconst dimensionsHistory = useStylePropsHistory( dimensionsPropKeys );\n\n\tconst onPositionChange = useCallback(\n\t\t( newPositionValue: PropValue, previousPosition: PropValue ) => {\n\t\t\tif ( ! dimensionsHistory ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps } = dimensionsHistory;\n\n\t\t\tif ( newPositionValue === 'static' ) {\n\t\t\t\tsaveStylePropsHistory();\n\t\t\t\tclearCurrentStyleProps();\n\t\t\t} else if ( previousPosition === 'static' ) {\n\t\t\t\tupdateStylePropsFromHistory();\n\t\t\t}\n\n\t\t\tpreviousPosition = newPositionValue;\n\t\t},\n\t\t[ dimensionsHistory ]\n\t);\n\n\tconst [ , , registerChangeListener ] = useStylesField< PropValue >( 'position' );\n\tregisterChangeListener?.( onPositionChange );\n};\n","import { useCallback, useMemo } from 'react';\nimport { getElementStyles, getVariantByMeta, updateStyle } from '@elementor/editor-elements';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { usePropValueHistory } from './use-prop-value-history';\n\nexport const useStylePropsHistory = ( props: PropKey[] ) => {\n\tconst { element } = useElement();\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst { getPropValue, setPropValue, removeProp } = usePropValueHistory();\n\n\tconst styleDef = getElementStyles( element.id )?.[ styleDefID ];\n\tconst styleVariant = styleDef ? getVariantByMeta( styleDef, meta ) : null;\n\tconst styleVariantPath = `${ styleDefID }-${ styleVariant?.meta.breakpoint }-${ styleVariant?.meta.state }`;\n\n\tconst saveStylePropsHistory = useCallback( () => {\n\t\tprops.forEach( ( propKey ) => {\n\t\t\tconst propValue = styleVariant?.props[ propKey ];\n\n\t\t\tif ( propValue ) {\n\t\t\t\tconst propPath = `${ styleVariantPath }-${ propKey }`;\n\t\t\t\tsetPropValue( propPath, propValue );\n\t\t\t}\n\t\t} );\n\t}, [ props, setPropValue, styleVariant?.props, styleVariantPath ] );\n\n\tconst updateStylePropsFromHistory = useCallback( () => {\n\t\tconst propValuesFromHistory = props.reduce( ( allProps, currentPropKey ) => {\n\t\t\tconst propPath = `${ styleVariantPath }-${ currentPropKey }`;\n\t\t\tconst propHistory = getPropValue( propPath );\n\n\t\t\tif ( propHistory ) {\n\t\t\t\tremoveProp( propPath );\n\t\t\t\treturn { ...allProps, [ currentPropKey ]: propHistory };\n\t\t\t}\n\n\t\t\treturn allProps;\n\t\t}, {} );\n\n\t\tif ( Object.keys( propValuesFromHistory ).length ) {\n\t\t\tupdateStyle( {\n\t\t\t\telementID: element.id,\n\t\t\t\tstyleDefID,\n\t\t\t\tmeta,\n\t\t\t\tprops: propValuesFromHistory,\n\t\t\t\tbind: 'classes',\n\t\t\t} );\n\t\t}\n\t}, [ element.id, getPropValue, meta, props, removeProp, styleDefID, styleVariantPath ] );\n\n\tconst clearCurrentStyleProps = useCallback( () => {\n\t\tconst resetValues = props.reduce(\n\t\t\t( allProps, currentPropKey ) => ( {\n\t\t\t\t...allProps,\n\t\t\t\t[ currentPropKey ]: undefined,\n\t\t\t} ),\n\t\t\t{}\n\t\t);\n\n\t\tupdateStyle( {\n\t\t\telementID: element.id,\n\t\t\tstyleDefID,\n\t\t\tmeta,\n\t\t\tprops: resetValues,\n\t\t\tbind: 'classes',\n\t\t} );\n\t}, [ element.id, meta, props, styleDefID ] );\n\n\treturn useMemo(\n\t\t() => ( { saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps } ),\n\t\t[ saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps ]\n\t);\n};\n","import { useCallback, useMemo } from 'react';\nimport { getSessionStorageItem, setSessionStorageItem } from '@elementor/utils';\n\nimport { useElement } from '../contexts/element-context';\n\nexport const PROPS_VALUES_HISTORY_PREFIX = 'elementor/editor-editing-panel/prop-value-history';\n\nexport const usePropValueHistory = () => {\n\tconst { element } = useElement();\n\tconst elementKey = `${ PROPS_VALUES_HISTORY_PREFIX }/${ element.id }`;\n\n\tconst getElementPropsHistory = useCallback( () => {\n\t\treturn getSessionStorageItem< Record< string, unknown > >( elementKey );\n\t}, [ elementKey ] );\n\n\tconst getPropValue = useCallback(\n\t\t< T >( propKey: string ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\treturn ( elementPropValues?.[ propKey ] ?? null ) as T | null;\n\t\t},\n\t\t[ getElementPropsHistory ]\n\t);\n\n\tconst setPropValue = useCallback(\n\t\t( propKey: string, propValue: unknown ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\tconst updatedElementPropValues = { ...elementPropValues, [ propKey ]: propValue };\n\t\t\tsetSessionStorageItem( elementKey, updatedElementPropValues );\n\t\t},\n\t\t[ getElementPropsHistory, elementKey ]\n\t);\n\n\tconst removeProp = useCallback(\n\t\t( propKey: string ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\tconst updatedElementPropValues = Object.fromEntries(\n\t\t\t\tObject.entries( elementPropValues || {} ).filter( ( [ key ] ) => key !== propKey )\n\t\t\t);\n\t\t\tsetSessionStorageItem( elementKey, updatedElementPropValues );\n\t\t},\n\t\t[ getElementPropsHistory, elementKey ]\n\t);\n\n\treturn useMemo( () => ( { getPropValue, setPropValue, removeProp } ), [ getPropValue, removeProp, setPropValue ] );\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 } flexWrap=\"nowrap\">\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 } flexWrap=\"nowrap\">\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 gap={ 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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { ControlLabel, NumberControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Divider, Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { OverflowField } from './overflow-field';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"width\" label={ __( 'Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"height\" label={ __( 'Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"min-width\" label={ __( 'Min. Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"min-height\" label={ __( 'Min. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-width\" label={ __( 'Max. Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-height\" label={ __( 'Max. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\t\t</Stack>\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<StylesField bind={ bind }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ExpandBottomIcon, EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandBottomIcon fontSize={ size } />,\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const SpacingSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind={ 'padding' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t\t<Divider />\n\t\t\t<StylesField bind={ 'margin' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Margin', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Divider, Stack } from '@elementor/ui';\n\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TextStyleField } from './text-style-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<Divider />\n\t\t\t<TextColorField />\n\t\t\t<CollapsibleContent>\n\t\t\t\t<Stack gap={ 1.5 } sx={ { pt: 1.5 } }>\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<TextAlignmentField />\n\t\t\t\t\t<TextStyleField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</Stack>\n\t\t\t</CollapsibleContent>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Button, Collapse, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CollapseIcon } from './collapse-icon';\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={ <CollapseIcon 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\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, FontFamilyControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { getElementorConfig } from '../../../sync/get-elementor-config';\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\tif ( ! fontFamilies ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font Family', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<FontFamilyControl fontFamilies={ fontFamilies } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const FontSizeField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-size\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const LetterSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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\trenderContent: ( { size } ) => <AlignLeftIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'right',\n\t\tlabel: __( 'Right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignRightIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind={ 'text-align' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to Left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind={ 'direction' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { CollapsibleField } from '../../collapsible-field';\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 { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\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 } unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { ItalicIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { Grid, ToggleButton as ToggleButtonBase, ToggleButtonGroup, type ToggleButtonProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Transforms = 'capitalize' | 'uppercase' | 'lowercase';\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind={ 'text-transform' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const WordSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"word-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { useCloseEditorPanel } from '../hooks/use-close-editor-panel';\nimport { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\tuseCloseEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { ControlLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlsSection } from '@elementor/editor-elements';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { type ControlType, getControlByType } from '../../controls-registry/controls-registry';\nimport { usePropValueHistory } from '../../hooks/use-prop-value-history';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicPropValue, type DynamicTag } from '../types';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { bind, value, setValue } = useBoundProp< DynamicPropValue | null >();\n\tconst { getPropValue: getPropValueFromHistory } = usePropValueHistory();\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\tconst propValue = getPropValueFromHistory< DynamicPropValue >( bind );\n\t\tsetValue( propValue ?? 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 { BoundPropProvider, useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { type 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 } = 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 { type PropKey } from '@elementor/editor-props';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\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 { type PropKey } from '@elementor/editor-props';\n\nimport { useElement } from '../../contexts/element-context';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\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 { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import { isTransformable, type PropType, type PropValue, type TransformablePropType } from '@elementor/editor-props';\n\nimport { type DynamicPropType, type 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 { Fragment, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\nimport { PhotoIcon, SearchIcon } 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';\n\nimport { usePropValueHistory } from '../../hooks/use-prop-value-history';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { type DynamicPropValue } from '../types';\nimport { isDynamicPropValue } from '../utils';\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 { setPropValue: updatePropValueHistory } = usePropValueHistory();\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( bind, 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&ldquo;{ searchValue }&rdquo;.\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&nbsp;\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 * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../contexts/element-context';\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\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 { replaceControl } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\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"],"mappings":"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","names":["useBoundProp","useEffect","getSelectedElements","React","__","React","React","React","Fragment","Divider","Stack","__","React","React","React","Box","Box","React","React","useId","Stack","styled","useId","Stack","React","Control","React","useState","useElementSetting","useElementStyles","Divider","__","React","createContext","useContext","Context","React","createContext","useContext","Context","React","useElementSetting","Chip","Stack","Typography","React","Box","styled","options","styled","Box","options","Stack","Typography","Chip","useElementSetting","React","Stack","React","BoundPropProvider","BoundPropProvider","React","ControlLabel","__","ControlLabel","__","Stack","React","Divider","Stack","React","__","React","ControlLabel","Collapse","IconButton","Stack","SIZE","React","ColorControl","ControlLabel","Grid","__","Grid","ControlLabel","__","ColorControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","__","__","__","React","EqualUnequalSizesControl","__","__","EqualUnequalSizesControl","Stack","Divider","React","Stack","Stack","React","Stack","React","ControlLabel","Stack","__","options","__","Stack","ControlLabel","React","ControlLabel","ToggleControl","Stack","__","options","__","Stack","ControlLabel","ToggleControl","Stack","React","useCallback","Stack","useCallback","useMemo","updateStyle","useCallback","updateStyle","useMemo","React","ControlLabel","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","__","SideLeftIcon","SideRightIcon","SideTopIcon","SideBottomIcon","Stack","__","Grid","ControlLabel","SizeControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","ControlLabel","Grid","__","Grid","ControlLabel","__","Stack","useCallback","React","ControlLabel","SizeControl","Divider","Grid","Stack","__","React","ControlLabel","ToggleControl","Grid","__","__","Grid","ControlLabel","ToggleControl","Stack","Grid","__","Divider","ControlLabel","SizeControl","React","Divider","Stack","__","Stack","__","Divider","React","Divider","Stack","React","useState","Collapse","Stack","__","useState","Stack","__","Collapse","React","ControlLabel","Grid","__","Grid","ControlLabel","__","options","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","ColorControl","ControlLabel","Grid","__","Grid","ControlLabel","__","ColorControl","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","ControlLabel","__","React","useState","MinusIcon","PlusIcon","Collapse","IconButton","Stack","__","ControlLabel","__","React","ControlLabel","Grid","__","Grid","ControlLabel","__","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","Stack","Divider","Divider","__","useState","useElementSetting","useElementStyles","Fragment","Stack","__","Divider","__","useEffect","getSelectedElements","useEffect","listenTo","commandStartEvent","useEffect","listenTo","commandStartEvent","React","useId","ControlLabel","useBoundProp","XIcon","bindPopover","Box","Divider","IconButton","Popover","Stack","Tab","TabPanel","Tabs","Typography","usePopupState","useTabs","__","React","BoundPropProvider","useMemo","useMemo","getElementorConfig","getElementorConfig","useMemo","useMemo","BoundPropProvider","React","Fragment","useState","useBoundProp","Box","Divider","Stack","TextField","Typography","__","SIZE","useState","useBoundProp","options","Stack","Box","TextField","__","Divider","Fragment","Typography","SIZE","useBoundProp","useId","usePopupState","Box","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","ControlLabel","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","init","init"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/control-replacement.tsx","../src/init.ts","../src/hooks/use-close-editor-panel.ts","../src/panel.ts","../src/components/editing-panel.tsx","../src/contexts/element-context.tsx","../src/controls-actions.ts","../src/popover-action.tsx","../src/components/editing-panel-error-fallback.tsx","../src/components/editing-panel-tabs.tsx","../src/components/settings-tab.tsx","../src/controls-registry/control.tsx","../src/controls-registry/controls-registry.tsx","../src/controls-registry/control-type-container.tsx","../src/controls-registry/settings-field.tsx","../src/components/section.tsx","../src/components/collapse-icon.tsx","../src/components/sections-list.tsx","../src/components/style-tab.tsx","../src/contexts/classes-prop-context.tsx","../src/contexts/style-context.tsx","../src/components/css-class-selector.tsx","../src/components/multi-combobox/multi-combobox.tsx","../src/components/multi-combobox/use-combobox-actions.ts","../src/components/style-sections/background-section/background-section.tsx","../src/controls-registry/styles-field.tsx","../src/hooks/use-styles-field.ts","../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-field.tsx","../src/components/add-or-remove-content.tsx","../src/components/style-sections/border-section/border-color-field.tsx","../src/components/style-sections/border-section/border-style-field.tsx","../src/components/style-sections/border-section/border-width-field.tsx","../src/components/style-sections/border-section/border-radius-field.tsx","../src/components/style-sections/effects-section/effects-section.tsx","../src/components/style-sections/layout-section/layout-section.tsx","../src/components/style-sections/layout-section/align-items-field.tsx","../src/hooks/use-direction.ts","../src/components/style-sections/layout-section/utils/rotated-icon.tsx","../src/components/style-sections/layout-section/align-self-child-field.tsx","../src/components/style-sections/layout-section/display-field.tsx","../src/components/style-sections/layout-section/flex-direction-field.tsx","../src/components/style-sections/layout-section/flex-order-field.tsx","../src/components/style-sections/layout-section/flex-size-field.tsx","../src/components/style-sections/layout-section/justify-content-field.tsx","../src/components/style-sections/layout-section/wrap-field.tsx","../src/components/style-sections/position-section/position-section.tsx","../src/hooks/use-style-prop-history.ts","../src/hooks/use-prop-value-history.ts","../src/components/style-sections/position-section/dimensions-field.tsx","../src/components/style-sections/position-section/position-field.tsx","../src/components/style-sections/position-section/z-index-field.tsx","../src/components/style-sections/size-section/size-section.tsx","../src/components/style-sections/size-section/overflow-field.tsx","../src/components/style-sections/spacing-section/spacing-section.tsx","../src/components/style-sections/typography-section/typography-section.tsx","../src/components/collapsible-content.tsx","../src/components/style-sections/typography-section/font-family-field.tsx","../src/sync/get-elementor-config.ts","../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/letter-spacing-field.tsx","../src/components/style-sections/typography-section/line-height-field.tsx","../src/components/style-sections/typography-section/text-alignment-field.tsx","../src/components/style-sections/typography-section/text-color-field.tsx","../src/components/style-sections/typography-section/text-direction-field.tsx","../src/components/style-sections/typography-section/text-stroke-field.tsx","../src/components/style-sections/typography-section/text-style-field.tsx","../src/components/style-sections/typography-section/transform-field.tsx","../src/components/style-sections/typography-section/word-spacing-field.tsx","../src/sync/is-atomic-widget-selected.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-dynamic-action.tsx","../src/dynamics/init.ts"],"sourcesContent":["export { useBoundProp } from '@elementor/editor-controls';\nexport type { PopoverActionProps } from './popover-action';\nexport { replaceControl } from './control-replacement';\n\nimport init from './init';\n\ninit();\n","import { createControlReplacement } from '@elementor/editor-controls';\n\nexport const { replaceControl, getControlReplacement } = createControlReplacement();\n","import { injectIntoLogic } from '@elementor/editor';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { __privateBlockDataCommand as blockDataCommand } from '@elementor/editor-v1-adapters';\n\nimport { EditingPanelHooks } from './components/editing-panel-hooks';\nimport { init as initDynamics } from './dynamics/init';\nimport { panel } from './panel';\nimport { isAtomicWidgetSelected } from './sync/is-atomic-widget-selected';\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: isAtomicWidgetSelected,\n\t} );\n};\n","import { useEffect } from 'react';\nimport { getSelectedElements, isElementInContainer, type V1Element } from '@elementor/editor-elements';\nimport { __privateListenTo as listenTo, type CommandEvent, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useCloseEditorPanel = () => {\n\tconst { close } = usePanelActions();\n\n\treturn useEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'document/elements/delete' ), ( e ) => {\n\t\t\tconst selectedElement = getSelectedElements()[ 0 ];\n\t\t\tconst { container: deletedContainer } = ( e as CommandEvent< { container: V1Element } > )?.args;\n\t\t\tconst isSelectedElementInDeletedContainer =\n\t\t\t\tdeletedContainer && selectedElement && isElementInContainer( selectedElement, deletedContainer );\n\n\t\t\tif ( isSelectedElementInDeletedContainer && isAtomicWidgetSelected() ) {\n\t\t\t\tclose();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { __createPanel as createPanel } from '@elementor/editor-panels';\n\nimport { EditingPanel } from './components/editing-panel';\n\nexport const { panel, usePanelActions, usePanelStatus } = createPanel( {\n\tid: 'editing-panel',\n\tcomponent: EditingPanel,\n} );\n","import * as React from 'react';\nimport { ControlActionsProvider, ControlReplacementProvider } from '@elementor/editor-controls';\nimport { useSelectedElement } from '@elementor/editor-elements';\nimport { Panel, PanelBody, PanelHeader, PanelHeaderTitle } from '@elementor/editor-panels';\nimport { ErrorBoundary } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ElementProvider } from '../contexts/element-context';\nimport { getControlReplacement } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { EditorPanelErrorFallback } from './editing-panel-error-fallback';\nimport { EditingPanelTabs } from './editing-panel-tabs';\n\nconst { useMenuItems } = controlActionsMenu;\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 * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type Element, type ElementType } from '@elementor/editor-elements';\n\ntype ContextValue = {\n\telement: Element;\n\telementType: ElementType;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ElementProvider( { children, element, elementType }: Props ) {\n\treturn <Context.Provider value={ { element, elementType } }>{ children }</Context.Provider>;\n}\n\nexport function useElement() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useElement must be used within a ElementProvider' );\n\t}\n\n\treturn context;\n}\n","import { createMenu } from '@elementor/menus';\n\nimport PopoverAction from './popover-action';\n\nexport const controlActionsMenu = createMenu( {\n\tcomponents: {\n\t\tPopoverAction,\n\t},\n} );\n","import * as React from 'react';\nimport { type ComponentType, type 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 * 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 { Fragment } from 'react';\nimport { Divider, Stack, Tab, TabPanel, Tabs, useTabs } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../contexts/element-context';\nimport { SettingsTab } from './settings-tab';\nimport { StyleTab } from './style-tab';\n\ntype TabValue = 'settings' | 'style';\n\nexport const EditingPanelTabs = () => {\n\tconst { element } = useElement();\n\n\tconst { getTabProps, getTabPanelProps, getTabsProps } = useTabs< TabValue >( 'settings' );\n\n\treturn (\n\t\t// When switching between elements, the local states should be reset. We are using key to rerender the tabs.\n\t\t// Reference: https://react.dev/learn/preserving-and-resetting-state#resetting-a-form-with-a-key\n\t\t<Fragment key={ element.id }>\n\t\t\t<Stack direction=\"column\" sx={ { width: '100%' } }>\n\t\t\t\t<Tabs variant=\"fullWidth\" indicatorColor=\"secondary\" textColor=\"inherit\" { ...getTabsProps() }>\n\t\t\t\t\t<Tab label={ __( 'General', 'elementor' ) } { ...getTabProps( 'settings' ) } />\n\t\t\t\t\t<Tab label={ __( 'Style', 'elementor' ) } { ...getTabProps( 'style' ) } />\n\t\t\t\t</Tabs>\n\t\t\t\t<Divider />\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'settings' ) } disablePadding>\n\t\t\t\t\t<SettingsTab />\n\t\t\t\t</TabPanel>\n\t\t\t\t<TabPanel { ...getTabPanelProps( 'style' ) } disablePadding>\n\t\t\t\t\t<StyleTab />\n\t\t\t\t</TabPanel>\n\t\t\t</Stack>\n\t\t</Fragment>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { type Control } from '@elementor/editor-elements';\n\nimport { useElement } from '../contexts/element-context';\nimport { Control as BaseControl } from '../controls-registry/control';\nimport { ControlTypeContainer } from '../controls-registry/control-type-container';\nimport { type ControlType, getControlByType } from '../controls-registry/controls-registry';\nimport { SettingsField } from '../controls-registry/settings-field';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\n\nexport const SettingsTab = () => {\n\tconst { elementType } = useElement();\n\n\treturn (\n\t\t<SectionsList>\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<Section title={ value.label } key={ type + '.' + index } defaultExpanded={ true }>\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</Section>\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</SectionsList>\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<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 type { ComponentProps } from 'react';\nimport { createError } from '@elementor/utils';\n\nimport { type ControlType, type 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 {\n\ttype ControlComponent,\n\tImageControl,\n\tLinkControl,\n\tSelectControl,\n\tSizeControl,\n\tTextAreaControl,\n\tTextControl,\n\tUrlControl,\n} from '@elementor/editor-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\tlink: { component: LinkControl, layout: 'full' },\n\turl: { component: UrlControl, layout: 'full' },\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 { Box, type BoxProps, styled } from '@elementor/ui';\n\nimport { type ControlLayout, type 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 { BoundPropProvider } from '@elementor/editor-controls';\nimport { updateSettings, useElementSetting } from '@elementor/editor-elements';\nimport { type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\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( 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 { type PropsWithChildren, useId, useState } from 'react';\nimport { Collapse, Divider, ListItemButton, ListItemText, Stack } from '@elementor/ui';\n\nimport { CollapseIcon } from './collapse-icon';\n\ntype Props = PropsWithChildren< {\n\ttitle: string;\n\tdefaultExpanded?: boolean;\n} >;\n\nexport function Section( { title, children, defaultExpanded = false }: Props ) {\n\tconst [ isOpen, setIsOpen ] = useState( !! defaultExpanded );\n\n\tconst id = useId();\n\tconst labelId = `label-${ id }`;\n\tconst contentId = `content-${ id }`;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemButton\n\t\t\t\tid={ labelId }\n\t\t\t\taria-controls={ contentId }\n\t\t\t\tonClick={ () => setIsOpen( ( prev ) => ! prev ) }\n\t\t\t>\n\t\t\t\t<ListItemText secondary={ title } />\n\t\t\t\t<CollapseIcon open={ isOpen } color=\"secondary\" />\n\t\t\t</ListItemButton>\n\t\t\t<Collapse id={ contentId } aria-labelledby={ labelId } in={ isOpen } timeout=\"auto\" unmountOnExit>\n\t\t\t\t<Stack gap={ 2.5 } p={ 2 }>\n\t\t\t\t\t{ children }\n\t\t\t\t</Stack>\n\t\t\t</Collapse>\n\t\t\t<Divider />\n\t\t</>\n\t);\n}\n","import { ChevronDownIcon } from '@elementor/icons';\nimport { styled } from '@elementor/ui';\n\n// TODO: Replace this with future Rotate component that will be implemented in elementor-ui\nexport const CollapseIcon = styled( ChevronDownIcon, {\n\tshouldForwardProp: ( prop ) => prop !== 'open',\n} )< { open: boolean } >( ( { theme, open } ) => ( {\n\ttransform: open ? 'rotate(180deg)' : 'rotate(0deg)',\n\ttransition: theme.transitions.create( 'transform', {\n\t\tduration: theme.transitions.duration.standard,\n\t} ),\n} ) );\n","import * as React from 'react';\nimport { List, type ListProps } from '@elementor/ui';\n\nexport function SectionsList( props: ListProps ) {\n\treturn <List disablePadding component=\"div\" { ...props } />;\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useElementSetting, useElementStyles } from '@elementor/editor-elements';\nimport { type ClassesPropValue, type PropKey } from '@elementor/editor-props';\nimport { useActiveBreakpoint } from '@elementor/editor-responsive';\nimport { generateId, type StyleDefinition } from '@elementor/editor-styles';\nimport { Divider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ClassesPropProvider } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { StyleProvider } from '../contexts/style-context';\nimport { CssClassSelector } from './css-class-selector';\nimport { Section } from './section';\nimport { SectionsList } from './sections-list';\nimport { BackgroundSection } from './style-sections/background-section/background-section';\nimport { BorderSection } from './style-sections/border-section/border-section';\nimport { EffectsSection } from './style-sections/effects-section/effects-section';\nimport { LayoutSection } from './style-sections/layout-section/layout-section';\nimport { PositionSection } from './style-sections/position-section/position-section';\nimport { SizeSection } from './style-sections/size-section/size-section';\nimport { SpacingSection } from './style-sections/spacing-section/spacing-section';\nimport { TypographySection } from './style-sections/typography-section/typography-section';\n\nconst CLASSES_PROP_KEY = 'classes';\n\nexport const StyleTab = () => {\n\tconst currentClassesProp = useCurrentClassesProp();\n\tconst [ activeStyleDefId, setActiveStyleDefId ] = useActiveStyleDefId( currentClassesProp );\n\tconst breakpoint = useActiveBreakpoint();\n\n\treturn (\n\t\t<ClassesPropProvider prop={ currentClassesProp }>\n\t\t\t<StyleProvider meta={ { breakpoint, state: null } } id={ activeStyleDefId } setId={ setActiveStyleDefId }>\n\t\t\t\t<CssClassSelector />\n\t\t\t\t<Divider />\n\t\t\t\t<SectionsList>\n\t\t\t\t\t<Section title={ __( 'Layout', 'elementor' ) }>\n\t\t\t\t\t\t<LayoutSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Spacing', 'elementor' ) }>\n\t\t\t\t\t\t<SpacingSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Size', 'elementor' ) }>\n\t\t\t\t\t\t<SizeSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Position', 'elementor' ) }>\n\t\t\t\t\t\t<PositionSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Typography', 'elementor' ) }>\n\t\t\t\t\t\t<TypographySection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Background', 'elementor' ) }>\n\t\t\t\t\t\t<BackgroundSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Border', 'elementor' ) }>\n\t\t\t\t\t\t<BorderSection />\n\t\t\t\t\t</Section>\n\t\t\t\t\t<Section title={ __( 'Effects', 'elementor' ) }>\n\t\t\t\t\t\t<EffectsSection />\n\t\t\t\t\t</Section>\n\t\t\t\t</SectionsList>\n\t\t\t</StyleProvider>\n\t\t</ClassesPropProvider>\n\t);\n};\n\nfunction useActiveStyleDefId( currentClassesProp: PropKey ) {\n\tconst [ activeStyledDefId, setActiveStyledDefId ] = useState< StyleDefinition[ 'id' ] | null >( null );\n\n\tconst fallback = useFirstElementStyleDef( currentClassesProp );\n\n\tconst newId = useGeneratedId();\n\n\treturn [ activeStyledDefId || fallback?.id || newId, setActiveStyledDefId ] as const;\n}\n\nfunction useFirstElementStyleDef( currentClassesProp: PropKey ) {\n\tconst { element } = useElement();\n\n\tconst classesIds = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\tconst stylesDefs = useElementStyles( element.id );\n\n\treturn Object.values( stylesDefs ).find( ( styleDef ) => classesIds.includes( styleDef.id ) );\n}\n\nfunction useGeneratedId() {\n\tconst { element } = useElement();\n\tconst stylesDefs = useElementStyles( element.id );\n\n\treturn generateId( `e-${ element.id }-`, Object.keys( stylesDefs ) );\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, type PropsWithChildren, useContext } from 'react';\n\ntype ContextValue = {\n\tprop: string;\n};\n\nconst Context = createContext< ContextValue | null >( null );\n\ntype Props = PropsWithChildren< ContextValue >;\n\nexport function ClassesPropProvider( { children, prop }: Props ) {\n\treturn <Context.Provider value={ { prop } }>{ children }</Context.Provider>;\n}\n\nexport function useClassesProp() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useClassesProp must be used within a ClassesPropProvider' );\n\t}\n\n\treturn context.prop;\n}\n","import * as React from 'react';\nimport { createContext, type Dispatch, type PropsWithChildren, useContext } from 'react';\nimport { type StyleDefinition, type StyleVariant } from '@elementor/editor-styles';\n\ntype ContextValue = {\n\tid: StyleDefinition[ 'id' ];\n\tsetId: Dispatch< 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, setId, meta }: Props ) {\n\treturn <Context.Provider value={ { id, setId, meta } }>{ children }</Context.Provider>;\n}\n\nexport function useStyle() {\n\tconst context = useContext( Context );\n\n\tif ( ! context ) {\n\t\tthrow new Error( 'useStyle must be used within a StyleProvider' );\n\t}\n\n\treturn context;\n}\n","import * as React from 'react';\nimport { updateSettings, useElementSetting, useElementStyles } from '@elementor/editor-elements';\nimport { classesPropTypeUtil, type ClassesPropValue } from '@elementor/editor-props';\nimport { type StyleDefinitionID } from '@elementor/editor-styles';\nimport { Chip, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { MultiCombobox, type Option } from './multi-combobox';\n\nconst ID = 'elementor-css-class-selector';\nconst TAGS_LIMIT = 8;\n\nexport function CssClassSelector() {\n\tconst options = useOptions();\n\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst [ appliedIds ] = useAppliedClassesIds();\n\n\tconst handleApply = useHandleApply();\n\tconst handleActivate = ( { value }: Option ) => setActiveId( value );\n\n\tconst active = options.find( ( option ) => option.value === activeId ) || null;\n\n\tconst applied = appliedIds\n\t\t.map( ( id ) => options.find( ( option ) => option.value === id ) )\n\t\t.filter( ( option ) => !! option );\n\n\treturn (\n\t\t<Stack gap={ 1 } p={ 2 }>\n\t\t\t<Typography component=\"label\" variant=\"caption\" htmlFor={ ID }>\n\t\t\t\t{ __( 'CSS Classes', 'elementor' ) }\n\t\t\t</Typography>\n\t\t\t<MultiCombobox\n\t\t\t\tid={ ID }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\toptions={ options }\n\t\t\t\tselected={ applied }\n\t\t\t\tonSelect={ handleApply }\n\t\t\t\tlimitTags={ TAGS_LIMIT }\n\t\t\t\toptionsLabel={ __( 'Global CSS Classes', 'elementor' ) }\n\t\t\t\trenderTags={ ( values, getTagProps ) =>\n\t\t\t\t\tvalues.map( ( value, index ) => {\n\t\t\t\t\t\tconst chipProps = getTagProps( { index } );\n\t\t\t\t\t\tconst isActive = value.value === active?.value;\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Chip\n\t\t\t\t\t\t\t\t{ ...chipProps }\n\t\t\t\t\t\t\t\tkey={ chipProps.key }\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tlabel={ value.label }\n\t\t\t\t\t\t\t\tvariant={ isActive ? 'filled' : 'standard' }\n\t\t\t\t\t\t\t\tcolor={ isActive && value.color ? value.color : 'default' }\n\t\t\t\t\t\t\t\tonClick={ () => handleActivate( value ) }\n\t\t\t\t\t\t\t\tonDelete={ null }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t);\n\t\t\t\t\t} )\n\t\t\t\t}\n\t\t\t/>\n\t\t</Stack>\n\t);\n}\n\nfunction useOptions() {\n\tconst { element } = useElement();\n\n\tconst styleDefs = useElementStyles( element.id );\n\n\treturn Object.values( styleDefs ).map< Option >( ( styleDef ) => ( {\n\t\tlabel: styleDef.label,\n\t\tvalue: styleDef.id,\n\t\tfixed: true,\n\t\tcolor: 'primary',\n\t} ) );\n}\n\nfunction useAppliedClassesIds() {\n\tconst { element } = useElement();\n\tconst currentClassesProp = useClassesProp();\n\n\tconst value = useElementSetting< ClassesPropValue >( element.id, currentClassesProp )?.value || [];\n\n\tconst setValue = ( ids: StyleDefinitionID[] ) => {\n\t\tupdateSettings( {\n\t\t\tid: element.id,\n\t\t\tprops: {\n\t\t\t\t[ currentClassesProp ]: classesPropTypeUtil.create( ids ),\n\t\t\t},\n\t\t} );\n\t};\n\n\treturn [ value, setValue ] as const;\n}\n\nfunction useHandleApply() {\n\tconst { id: activeId, setId: setActiveId } = useStyle();\n\tconst [ appliedIds, setAppliedIds ] = useAppliedClassesIds();\n\n\treturn ( selectedOptions: Option[] ) => {\n\t\tconst selectedValues = selectedOptions.map( ( { value } ) => value );\n\n\t\tconst isSameClassesAlreadyApplied =\n\t\t\tselectedValues.length === appliedIds.length &&\n\t\t\tselectedValues.every( ( value ) => appliedIds.includes( value ) );\n\n\t\t// Should not trigger to avoid register an undo step.\n\t\tif ( isSameClassesAlreadyApplied ) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetAppliedIds( selectedValues );\n\n\t\tconst addedValue = selectedValues.find( ( id ) => ! appliedIds.includes( id ) );\n\n\t\tif ( addedValue ) {\n\t\t\tsetActiveId( addedValue );\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst removedValue = appliedIds.find( ( id ) => ! selectedValues.includes( id ) );\n\n\t\tif ( removedValue && removedValue === activeId ) {\n\t\t\tsetActiveId( selectedValues[ 0 ] ?? null );\n\t\t}\n\t};\n}\n","import * as React from 'react';\nimport {\n\tAutocomplete,\n\ttype AutocompleteProps,\n\ttype AutocompleteRenderGroupParams,\n\tBox,\n\tChip,\n\tstyled,\n\tTextField,\n} from '@elementor/ui';\nimport { type FilterOptionsState } from '@mui/base';\n\nimport { type ActionOption, type Actions, type Option } from './types';\nimport { useComboboxActions } from './use-combobox-actions';\n\ntype Props = Omit< AutocompleteProps< Option, true, true, true >, 'renderInput' | 'getLimitTagsText' | 'onSelect' > & {\n\tactions?: Actions;\n\tselected: Option[];\n\toptions: Option[];\n\toptionsLabel?: string;\n\tonSelect?: ( value: Option[] ) => void;\n\tonCreate?: ( value: string ) => void;\n};\n\nexport const MultiCombobox = ( {\n\tactions = {},\n\tselected,\n\toptions,\n\toptionsLabel,\n\tonSelect,\n\tonCreate,\n\t...props\n}: Props ) => {\n\tconst { action: actionProps, option: optionProps } = useComboboxActions(\n\t\tselected,\n\t\tactions,\n\t\t// TODO: make the group mechanism more generic, allow passing list of groups.\n\t\toptionsLabel,\n\t\tonSelect\n\t);\n\n\treturn (\n\t\t<Autocomplete\n\t\t\t{ ...props }\n\t\t\tfreeSolo\n\t\t\tmultiple\n\t\t\tclearOnBlur\n\t\t\tselectOnFocus\n\t\t\tdisableClearable\n\t\t\thandleHomeEndKeys\n\t\t\tvalue={ selected }\n\t\t\toptions={ options }\n\t\t\trenderGroup={ renderGroup }\n\t\t\trenderInput={ ( params ) => <TextField { ...params } /> }\n\t\t\t// TODO: is it relevant for the combobox? or should be in the parent component?\n\t\t\tgetLimitTagsText={ ( more ) => <Chip size=\"tiny\" variant=\"standard\" label={ `+${ more }` } clickable /> }\n\t\t\tonChange={ ( _, selectedOrTypedValue, reason ) => {\n\t\t\t\tif ( reason === 'createOption' ) {\n\t\t\t\t\tconst typedValue = selectedOrTypedValue.find( ( option ) => typeof option === 'string' );\n\n\t\t\t\t\treturn typedValue && onCreate?.( typedValue );\n\t\t\t\t}\n\n\t\t\t\tconst action = selectedOrTypedValue.find( ( value ) => actionProps.is( value ) );\n\n\t\t\t\tif ( reason === 'selectOption' && action ) {\n\t\t\t\t\treturn actionProps.onChange( action );\n\t\t\t\t}\n\n\t\t\t\tconst selectedValues = selectedOrTypedValue.filter( ( v ) => typeof v !== 'string' );\n\t\t\t\tconst fixedValues = options.filter( ( option ) => option.fixed );\n\n\t\t\t\toptionProps.onChange( [ ...new Set( [ ...fixedValues, ...selectedValues ] ) ] );\n\t\t\t} }\n\t\t\tgetOptionLabel={ ( option ) => {\n\t\t\t\tif ( optionProps.is( option ) ) {\n\t\t\t\t\treturn optionProps.getLabel( option );\n\t\t\t\t}\n\n\t\t\t\tif ( actionProps.is( option ) ) {\n\t\t\t\t\treturn actionProps.getLabel( option );\n\t\t\t\t}\n\n\t\t\t\treturn '';\n\t\t\t} }\n\t\t\tfilterOptions={ ( optionList: Option[], params: FilterOptionsState< ActionOption | Option > ) => {\n\t\t\t\tconst filteredOptions = optionProps.getFilteredOptions( optionList, params );\n\n\t\t\t\tconst actionOptions = actionProps.getFilteredActions( optionList, params );\n\n\t\t\t\treturn [ ...actionOptions, ...filteredOptions ];\n\t\t\t} }\n\t\t\tgroupBy={ ( option ) =>\n\t\t\t\t( optionProps.is( option ) ? optionProps.groupBy() : actionProps.groupBy( option ) ) ?? ''\n\t\t\t}\n\t\t/>\n\t);\n};\n\nconst renderGroup = ( params: AutocompleteRenderGroupParams ) => (\n\t<Group key={ params.key }>\n\t\t<GroupHeader>{ params.group }</GroupHeader>\n\t\t<GroupItems>{ params.children }</GroupItems>\n\t</Group>\n);\n\nconst Group = styled( 'li' )`\n\t&:not( :last-of-type ) {\n\t\tborder-bottom: 1px solid ${ ( { theme } ) => theme.palette.divider };\n\t}\n`;\n\nconst GroupHeader = styled( Box )( ( { theme } ) => ( {\n\tposition: 'sticky',\n\ttop: '-8px',\n\tpadding: theme.spacing( 1, 2 ),\n\tcolor: theme.palette.text.tertiary,\n} ) );\n\nconst GroupItems = styled( 'ul' )`\n\tpadding: 0;\n`;\n","import { createFilterOptions } from '@elementor/ui';\nimport { type FilterOptionsState } from '@mui/base';\n\nimport { type Action, type ActionOption, type Actions, type Option } from './types';\n\nexport const useComboboxActions = (\n\tapplied: Option[],\n\tactions: Actions,\n\toptionsLabel?: string,\n\tonSelect?: ( value: Option[] ) => void\n) => ( {\n\taction: {\n\t\tis: ( opt: ActionOption | Option | string ): opt is ActionOption => typeof opt !== 'string' && 'action' in opt,\n\t\tgetLabel: ( option: ActionOption ) => option.action.getLabel( option.label ),\n\t\tgroupBy: ( option: ActionOption ) => option.action.groupLabel,\n\t\tonChange: ( { action, label }: ActionOption ) => action?.apply( label ),\n\t\tgetFilteredActions: ( optionList: Option[], params: FilterOptionsState< ActionOption > ) => {\n\t\t\tconst actionGroups = Object.values( actions );\n\n\t\t\treturn actionGroups.reduce< Option[] >( ( groups, group ) => {\n\t\t\t\tconst actionOptions = group.actions.reduce< Option[] >( ( groupActions, action ) => {\n\t\t\t\t\tconst shouldShowAction = action.condition( optionList, params.inputValue );\n\n\t\t\t\t\tif ( shouldShowAction ) {\n\t\t\t\t\t\tconst actionOption = createActionOption( group.label, action, params.inputValue );\n\t\t\t\t\t\tgroupActions.unshift( actionOption );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn groupActions;\n\t\t\t\t}, [] );\n\n\t\t\t\treturn [ ...groups, ...actionOptions ];\n\t\t\t}, [] );\n\t\t},\n\t},\n\toption: {\n\t\tis: ( opt: ActionOption | Option | string ): opt is Option => typeof opt !== 'string' && ! ( 'action' in opt ),\n\t\tgetLabel: ( option: Option ) => option.label,\n\t\tgroupBy: () => optionsLabel ?? '',\n\t\tonChange: ( optionValues: Option[] ) => onSelect?.( optionValues ),\n\t\tgetFilteredOptions: ( optionList: Option[], params: FilterOptionsState< Option > ) => {\n\t\t\tconst appliedValues = applied.map( ( option ) => option.value );\n\n\t\t\tconst optionsWithoutApplied = optionList.filter( ( option ) => ! appliedValues.includes( option.value ) );\n\n\t\t\treturn filter( optionsWithoutApplied, params );\n\t\t},\n\t},\n} );\n\n// Helper functions.\nconst filter = createFilterOptions< Option >();\n\nconst createActionOption = ( groupLabel: string, action: Action, inputValue: string ): ActionOption => ( {\n\tvalue: '',\n\tlabel: inputValue,\n\taction: {\n\t\tgroupLabel,\n\t\tapply: action.apply,\n\t\tgetLabel: action.getLabel,\n\t},\n} );\n","import * as React from 'react';\nimport { BackgroundOverlayRepeaterControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { BackgroundColorField } from './background-color-field';\n\nexport const BackgroundSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind=\"background-image\">\n\t\t\t\t<BackgroundOverlayRepeaterControl />\n\t\t\t</StylesField>\n\t\t\t<BackgroundColorField />\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { BoundPropProvider } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useStylesField } from '../hooks/use-styles-field';\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 { useEffect, useRef } from 'react';\nimport { updateStyle, useElementStyleProp } from '@elementor/editor-elements';\nimport type { PropKey, PropValue } from '@elementor/editor-props';\n\nimport { useClassesProp } from '../contexts/classes-prop-context';\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\n\nexport const useStylesField = < T extends PropValue >(\n\tpropName: PropKey\n): [\n\tT | null,\n\t( newValue: T ) => void,\n\t( callback: ( newValue: T | null, previousValue: T | null ) => void ) => void,\n] => {\n\tconst { element } = useElement();\n\tconst { id, meta } = useStyle();\n\tconst classesProp = useClassesProp();\n\tconst previousValue = useRef< T | null >( null );\n\tconst onChangeCallbacks = useRef< Set< ( newValue: T | null, previousValue: T | null ) => void > >( new Set() );\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\tconst registerChangeListener = ( callback: ( newValue: T | null, previousValue: T | null ) => void ) => {\n\t\tonChangeCallbacks.current.add( callback );\n\t};\n\n\tuseEffect( () => {\n\t\tonChangeCallbacks.current.forEach( ( cb ) => {\n\t\t\tcb( value, previousValue.current );\n\t\t} );\n\t\tpreviousValue.current = value;\n\t}, [ value ] );\n\n\treturn [ value, setValue, registerChangeListener ];\n};\n","import * as React from 'react';\nimport { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BackgroundColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"background-color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { Divider, Stack } from '@elementor/ui';\n\nimport { BorderField } from './border-field';\nimport { BorderRadiusField } from './border-radius-field';\n\nexport const BorderSection = () => (\n\t<Stack gap={ 1.5 }>\n\t\t<BorderRadiusField />\n\t\t<Divider />\n\t\t<BorderField />\n\t</Stack>\n);\n","import * as React from 'react';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\nimport { BorderColorField } from './border-color-field';\nimport { BorderStyleField } from './border-style-field';\nimport { BorderWidthField } from './border-width-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 { type PropsWithChildren } from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { MinusIcon, PlusIcon } from '@elementor/icons';\nimport { Collapse, IconButton, Stack } from '@elementor/ui';\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 } unmountOnExit>\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 { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const BorderColorField = () => {\n\treturn (\n\t\t<StylesField bind={ 'border-color' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderWidthPropTypeUtil } from '@elementor/editor-props';\nimport { SideAllIcon, SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst edges: EqualUnequalItems = [\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\titems={ edges }\n\t\t\t\tlabel={ __( 'Border Width', 'elementor' ) }\n\t\t\t\ticon={ <SideAllIcon fontSize={ 'tiny' } /> }\n\t\t\t\tmultiSizePropTypeUtil={ borderWidthPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { type EqualUnequalItems, EqualUnequalSizesControl } from '@elementor/editor-controls';\nimport { borderRadiusPropTypeUtil } from '@elementor/editor-props';\nimport {\n\tBorderCornersIcon,\n\tRadiusBottomLeftIcon,\n\tRadiusBottomRightIcon,\n\tRadiusTopLeftIcon,\n\tRadiusTopRightIcon,\n} from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nconst corners: EqualUnequalItems = [\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\titems={ corners }\n\t\t\t\tlabel={ __( 'Border Radius', 'elementor' ) }\n\t\t\t\ticon={ <BorderCornersIcon fontSize={ 'tiny' } /> }\n\t\t\t\tmultiSizePropTypeUtil={ borderRadiusPropTypeUtil }\n\t\t\t/>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { BoxShadowRepeaterControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const EffectsSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind=\"box-shadow\">\n\t\t\t\t<BoxShadowRepeaterControl />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AlignItemsField } from './align-items-field';\nimport { AlignSelfChild } from './align-self-child-field';\nimport { DisplayField } from './display-field';\nimport { FlexDirectionField } from './flex-direction-field';\nimport { FlexOrderField } from './flex-order-field';\nimport { FlexSizeField } from './flex-size-field';\nimport { JustifyContentField } from './justify-content-field';\nimport { WrapField } from './wrap-field';\n\nexport const LayoutSection = () => {\n\tconst [ display ] = useStylesField< StringPropValue >( 'display' );\n\n\treturn (\n\t\t<Stack gap={ 2 }>\n\t\t\t<DisplayField />\n\t\t\t{ 'flex' === display?.value && <FlexFields /> }\n\t\t</Stack>\n\t);\n};\n\nconst FlexFields = () => (\n\t<>\n\t\t<FlexDirectionField />\n\t\t<JustifyContentField />\n\t\t<AlignItemsField />\n\t\t<Divider />\n\t\t<WrapField />\n\t\t<Divider />\n\t\t<ControlLabel>{ __( 'Flex child', 'elementor' ) }</ControlLabel>\n\t\t<AlignSelfChild />\n\t\t<FlexOrderField />\n\t\t<FlexSizeField />\n\t</>\n);\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignItemsField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"align-items\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align items', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import { useTheme } from '@elementor/ui';\n\nimport { type ExtendedWindow } from '../sync/types';\n\nexport function useDirection() {\n\tconst theme = useTheme(),\n\t\textendedWindow: ExtendedWindow = window;\n\n\tconst isUiRtl = 'rtl' === theme.direction,\n\t\tisSiteRtl = !! extendedWindow.elementorFrontend?.config?.is_rtl;\n\n\treturn { isSiteRtl, isUiRtl };\n}\n","import * as React from 'react';\nimport { useRef } from 'react';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { type ToggleButtonProps, useTheme } from '@elementor/ui';\n\nimport { useStylesField } from '../../../../hooks/use-styles-field';\nimport type { FlexDirection } from '../flex-direction-field';\n\ntype Props = {\n\ticon: React.JSX.ElementType;\n\tsize: ToggleButtonProps[ 'size' ];\n\tisClockwise?: boolean;\n\toffset?: number;\n};\n\nconst CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: 90,\n\t'row-reverse': 180,\n\t'column-reverse': 270,\n};\n\nconst COUNTER_CLOCKWISE_ANGLES: Record< FlexDirection, number > = {\n\trow: 0,\n\tcolumn: -90,\n\t'row-reverse': -180,\n\t'column-reverse': -270,\n};\n\nexport const RotatedIcon = ( { icon: Icon, size, isClockwise = true, offset = 0 }: Props ) => {\n\tconst rotate = useRef( useGetTargetAngle( isClockwise, offset ) );\n\trotate.current = useGetTargetAngle( isClockwise, offset, rotate );\n\n\treturn <Icon fontSize={ size } sx={ { transition: '.3s', rotate: `${ rotate.current }deg` } } />;\n};\n\nconst useGetTargetAngle = ( isClockwise: boolean, offset: number, existingRef?: React.MutableRefObject< number > ) => {\n\tconst [ direction ] = useStylesField< StringPropValue >( 'flex-direction' );\n\tconst isRtl = 'rtl' === useTheme().direction;\n\tconst rotationMultiplier = isRtl ? -1 : 1;\n\tconst angleMap = isClockwise ? CLOCKWISE_ANGLES : COUNTER_CLOCKWISE_ANGLES;\n\n\tconst currentAngle = existingRef\n\t\t? existingRef.current * rotationMultiplier // Multiply by rotationMultiplier to get the correct angle for RTL, as it will have returned multiplied by this\n\t\t: angleMap[ ( direction?.value as FlexDirection ) || 'row' ] + offset;\n\tconst targetAngle = angleMap[ ( direction?.value as FlexDirection ) || 'row' ] + offset;\n\n\tconst diffToTargetAngle = ( targetAngle - currentAngle + 360 ) % 360; // Make sure the diff is between 0, 360;\n\tconst formattedDiff = ( ( diffToTargetAngle + 180 ) % 360 ) - 180; // Get the angle to rotate as a value between -180, 180\n\n\treturn ( currentAngle + formattedDiff ) * rotationMultiplier;\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tLayoutAlignCenterIcon as CenterIcon,\n\tLayoutAlignLeftIcon,\n\tLayoutAlignRightIcon,\n\tLayoutDistributeVerticalIcon as JustifyIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype AlignItems = 'start' | 'center' | 'end' | 'stretch';\n\nconst StartIcon = withDirection( LayoutAlignLeftIcon );\nconst EndIcon = withDirection( LayoutAlignRightIcon );\n\nconst iconProps = {\n\tisClockwise: false,\n\toffset: 90,\n};\n\nconst options: ToggleButtonGroupItem< AlignItems >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'stretch',\n\t\tlabel: __( 'Stretch', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ JustifyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const AlignSelfChild = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'align-self' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Align self', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Displays = 'block' | 'flex';\n\nexport const DisplayField = () => {\n\tconst options: ToggleButtonGroupItem< Displays >[] = [\n\t\t{\n\t\t\tvalue: 'block',\n\t\t\trenderContent: () => __( 'Block', 'elementor' ),\n\t\t\tlabel: __( 'Block', 'elementor' ),\n\t\t},\n\t\t{\n\t\t\tvalue: 'flex',\n\t\t\trenderContent: () => __( 'Flex', 'elementor' ),\n\t\t\tlabel: __( 'Flex', 'elementor' ),\n\t\t},\n\t];\n\n\treturn (\n\t\t<StylesField bind=\"display\">\n\t\t\t<Stack gap={ 1 }>\n\t\t\t\t<ControlLabel>{ __( 'Display', 'elementor' ) }</ControlLabel>\n\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t</Stack>\n\t\t</StylesField>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'column' | 'column-reverse';\n\nconst options: ToggleButtonGroupItem< FlexDirection >[] = [\n\t{\n\t\tvalue: 'row',\n\t\tlabel: __( 'Row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst StartIcon = withDirection( ArrowRightIcon );\n\t\t\treturn <StartIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column',\n\t\tlabel: __( 'Column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'row-reverse',\n\t\tlabel: __( 'Reversed row', 'elementor' ),\n\t\trenderContent: ( { size } ) => {\n\t\t\tconst EndIcon = withDirection( ArrowLeftIcon );\n\t\t\treturn <EndIcon fontSize={ size } />;\n\t\t},\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'column-reverse',\n\t\tlabel: __( 'Reversed column', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexDirectionField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"flex-direction\">\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Direction', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport {\n\tControlLabel,\n\tControlToggleButtonGroup,\n\tNumberControl,\n\ttype ToggleButtonGroupItem,\n} from '@elementor/editor-controls';\nimport { type NumberPropValue } from '@elementor/editor-props';\nimport { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, Stack, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\n\ntype GroupControlItemOption = 'first' | 'last' | 'custom';\n\nexport const FIRST_DEFAULT_VALUE = -99999,\n\tLAST_DEFAULT_VALUE = 99999,\n\tFIRST = 'first',\n\tLAST = 'last',\n\tCUSTOM = 'custom';\n\nconst orderValueMap = {\n\t[ FIRST ]: FIRST_DEFAULT_VALUE,\n\t[ LAST ]: LAST_DEFAULT_VALUE,\n};\n\nconst items: ToggleButtonGroupItem< GroupControlItemOption >[] = [\n\t{\n\t\tvalue: FIRST,\n\t\tlabel: __( 'First', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowUpSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: LAST,\n\t\tlabel: __( 'Last', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowDownSmallIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: CUSTOM,\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexOrderField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ order, setOrder ] = useStylesField< NumberPropValue | null >( 'order' );\n\n\tconst [ groupControlValue, setGroupControlValue ] = useState( getGroupControlValue( order?.value || null ) );\n\n\tconst handleToggleButtonChange = ( group: GroupControlItemOption | null ) => {\n\t\tsetGroupControlValue( group );\n\n\t\tif ( ! group || group === CUSTOM ) {\n\t\t\tsetOrder( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetOrder( { $$type: 'number', value: orderValueMap[ group ] } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<Stack gap={ 2 }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\tvalue={ groupControlValue }\n\t\t\t\t\t\t\t\tonChange={ handleToggleButtonChange }\n\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\n\t\t\t\t\t{ CUSTOM === groupControlValue && (\n\t\t\t\t\t\t<StylesField bind={ 'order' }>\n\t\t\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t\t\t<ControlLabel>{ __( 'Custom order', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t\t\t<NumberControl\n\t\t\t\t\t\t\t\t\t\tmin={ FIRST_DEFAULT_VALUE + 1 }\n\t\t\t\t\t\t\t\t\t\tmax={ LAST_DEFAULT_VALUE - 1 }\n\t\t\t\t\t\t\t\t\t\tshouldForceInt={ true }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t</StylesField>\n\t\t\t\t\t) }\n\t\t\t\t</Stack>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst getGroupControlValue = ( order: number | null ): GroupControlItemOption | null => {\n\tif ( LAST_DEFAULT_VALUE === order ) {\n\t\treturn LAST;\n\t}\n\n\tif ( FIRST_DEFAULT_VALUE === order ) {\n\t\treturn FIRST;\n\t}\n\n\treturn 0 === order || order ? CUSTOM : null;\n};\n","import * as React from 'react';\nimport {\n\tControlLabel,\n\tControlToggleButtonGroup,\n\tNumberControl,\n\tSizeControl,\n\ttype ToggleButtonGroupItem,\n} from '@elementor/editor-controls';\nimport type { NumberPropValue, SizePropValue } from '@elementor/editor-props';\nimport { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, Stack, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { useStylesField } from '../../../hooks/use-styles-field';\n\ntype GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';\n\nexport const DEFAULT = 1;\n\nconst items: ToggleButtonGroupItem< GroupItem >[] = [\n\t{\n\t\tvalue: 'flex-grow',\n\t\tlabel: __( 'Grow', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'flex-shrink',\n\t\tlabel: __( 'Shrink', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ShrinkIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'custom',\n\t\tlabel: __( 'Custom', 'elementor' ),\n\t\trenderContent: ( { size } ) => <PencilIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const FlexSizeField = () => {\n\tconst { isSiteRtl } = useDirection(),\n\t\t[ growField, setGrowField ] = useStylesField< NumberPropValue | null >( 'flex-grow' ),\n\t\t[ shrinkField, setShrinkField ] = useStylesField< NumberPropValue | null >( 'flex-shrink' ),\n\t\t[ basisField, setBasisField ] = useStylesField< SizePropValue | null >( 'flex-basis' );\n\n\tconst grow = growField?.value || null,\n\t\tshrink = shrinkField?.value || null,\n\t\tbasis = basisField?.value || null;\n\n\tconst currentGroup = React.useMemo( () => getActiveGroup( { grow, shrink, basis } ), [ grow, shrink, basis ] ),\n\t\t[ activeGroup, setActiveGroup ] = React.useState( currentGroup );\n\n\tconst onChangeGroup = ( group: GroupItem | null = null ) => {\n\t\tsetActiveGroup( group );\n\t\tsetBasisField( null );\n\n\t\tif ( ! group || group === 'custom' ) {\n\t\t\tsetGrowField( null );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( group === 'flex-grow' ) {\n\t\t\tsetGrowField( { $$type: 'number', value: DEFAULT } );\n\t\t\tsetShrinkField( null );\n\n\t\t\treturn;\n\t\t}\n\n\t\tsetGrowField( null );\n\t\tsetShrinkField( { $$type: 'number', value: DEFAULT } );\n\t};\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<Stack gap={ 2 }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Size', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t\t\t<ControlToggleButtonGroup\n\t\t\t\t\t\t\t\tvalue={ activeGroup }\n\t\t\t\t\t\t\t\tonChange={ onChangeGroup }\n\t\t\t\t\t\t\t\titems={ items }\n\t\t\t\t\t\t\t\texclusive={ true }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\n\t\t\t\t\t{ 'custom' === activeGroup && <FlexCustomField /> }\n\t\t\t\t</Stack>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n\nconst FlexCustomField = () => (\n\t<>\n\t\t<StylesField bind={ 'flex-grow' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Grow', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-shrink' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Shrink', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\n\t\t\t\t\t<NumberControl min={ 0 } shouldForceInt={ true } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t\t<StylesField bind={ 'flex-basis' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Basis', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'end' } }>\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\nconst getActiveGroup = ( {\n\tgrow,\n\tshrink,\n\tbasis,\n}: {\n\tgrow: NumberPropValue[ 'value' ] | null;\n\tshrink: NumberPropValue[ 'value' ] | null;\n\tbasis: SizePropValue[ 'value' ] | null;\n} ): GroupItem | null => {\n\tif ( null === grow && null === shrink && ! basis ) {\n\t\treturn null;\n\t}\n\n\tif ( ( shrink && grow ) || basis ) {\n\t\treturn 'custom';\n\t}\n\n\tif ( grow === DEFAULT ) {\n\t\treturn 'flex-grow';\n\t}\n\n\tif ( shrink === DEFAULT ) {\n\t\treturn 'flex-shrink';\n\t}\n\n\treturn 'custom';\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport {\n\tJustifyBottomIcon,\n\tJustifyCenterIcon as CenterIcon,\n\tJustifyDistributeVerticalIcon as EvenlyIcon,\n\tJustifySpaceAroundVerticalIcon as AroundIcon,\n\tJustifySpaceBetweenVerticalIcon as BetweenIcon,\n\tJustifyTopIcon,\n} from '@elementor/icons';\nimport { DirectionProvider, Stack, ThemeProvider, withDirection } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\nimport { RotatedIcon } from './utils/rotated-icon';\n\ntype JustifyContent = 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';\n\nconst StartIcon = withDirection( JustifyTopIcon );\nconst EndIcon = withDirection( JustifyBottomIcon );\n\nconst iconProps = {\n\tisClockwise: true,\n\toffset: -90,\n};\n\nconst options: ToggleButtonGroupItem< JustifyContent >[] = [\n\t{\n\t\tvalue: 'start',\n\t\tlabel: __( 'Start', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ StartIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ CenterIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'end',\n\t\tlabel: __( 'End', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EndIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-between',\n\t\tlabel: __( 'Space between', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ BetweenIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-around',\n\t\tlabel: __( 'Space around', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ AroundIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'space-evenly',\n\t\tlabel: __( 'Space evenly', 'elementor' ),\n\t\trenderContent: ( { size } ) => <RotatedIcon icon={ EvenlyIcon } size={ size } { ...iconProps } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const JustifyContentField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind=\"justify-content\">\n\t\t\t\t\t<Stack gap={ 1 }>\n\t\t\t\t\t\t<ControlLabel>{ __( 'Justify content', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t<ToggleControl options={ options } fullWidth={ true } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ArrowBackIcon, ArrowForwardIcon, ArrowRightIcon } from '@elementor/icons';\nimport { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useDirection } from '../../../hooks/use-direction';\n\ntype FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\n\nconst options: ToggleButtonGroupItem< FlexWrap >[] = [\n\t{\n\t\tvalue: 'nowrap',\n\t\tlabel: __( 'No wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowRightIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap',\n\t\tlabel: __( 'Wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowBackIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'wrap-reverse',\n\t\tlabel: __( 'Reversed wrap', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ArrowForwardIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n];\n\nexport const WrapField = () => {\n\tconst { isSiteRtl } = useDirection();\n\n\treturn (\n\t\t<DirectionProvider rtl={ isSiteRtl }>\n\t\t\t<ThemeProvider>\n\t\t\t\t<StylesField bind={ 'flex-wrap' }>\n\t\t\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t\t\t<ControlLabel>{ __( 'Wrap', 'elementor' ) }</ControlLabel>\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t\t<Grid item xs={ 6 } sx={ { display: 'flex', justifyContent: 'flex-end' } }>\n\t\t\t\t\t\t\t<ToggleControl options={ options } />\n\t\t\t\t\t\t</Grid>\n\t\t\t\t\t</Grid>\n\t\t\t\t</StylesField>\n\t\t\t</ThemeProvider>\n\t\t</DirectionProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback } from 'react';\nimport type { PropValue, StringPropValue } from '@elementor/editor-props';\nimport { Stack } from '@elementor/ui';\n\nimport { useStylePropsHistory } from '../../../hooks/use-style-prop-history';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { DimensionsField } from './dimensions-field';\nimport { PositionField } from './position-field';\nimport { ZIndexField } from './z-index-field';\n\nconst dimensionsPropKeys = [ 'top', 'bottom', 'left', 'right' ];\n\nexport const PositionSection = () => {\n\tconst [ positionValue ] = useStylesField< StringPropValue >( 'position' );\n\tusePositionChangeHandler();\n\n\tconst isNotStatic = positionValue && positionValue?.value !== 'static';\n\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<PositionField />\n\t\t\t{ isNotStatic ? (\n\t\t\t\t<>\n\t\t\t\t\t<DimensionsField />\n\t\t\t\t\t<ZIndexField />\n\t\t\t\t</>\n\t\t\t) : null }\n\t\t</Stack>\n\t);\n};\n\nconst usePositionChangeHandler = () => {\n\tconst dimensionsHistory = useStylePropsHistory( dimensionsPropKeys );\n\n\tconst onPositionChange = useCallback(\n\t\t( newPositionValue: PropValue, previousPosition: PropValue ) => {\n\t\t\tif ( ! dimensionsHistory ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps } = dimensionsHistory;\n\n\t\t\tif ( newPositionValue === 'static' ) {\n\t\t\t\tsaveStylePropsHistory();\n\t\t\t\tclearCurrentStyleProps();\n\t\t\t} else if ( previousPosition === 'static' ) {\n\t\t\t\tupdateStylePropsFromHistory();\n\t\t\t}\n\n\t\t\tpreviousPosition = newPositionValue;\n\t\t},\n\t\t[ dimensionsHistory ]\n\t);\n\n\tconst [ , , registerChangeListener ] = useStylesField< PropValue >( 'position' );\n\tregisterChangeListener?.( onPositionChange );\n};\n","import { useCallback, useMemo } from 'react';\nimport { getElementStyles, getVariantByMeta, updateStyle } from '@elementor/editor-elements';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useElement } from '../contexts/element-context';\nimport { useStyle } from '../contexts/style-context';\nimport { usePropValueHistory } from './use-prop-value-history';\n\nexport const useStylePropsHistory = ( props: PropKey[] ) => {\n\tconst { element } = useElement();\n\tconst { id: styleDefID, meta } = useStyle();\n\tconst { getPropValue, setPropValue, removeProp } = usePropValueHistory();\n\n\tconst styleDef = getElementStyles( element.id )?.[ styleDefID ];\n\tconst styleVariant = styleDef ? getVariantByMeta( styleDef, meta ) : null;\n\tconst styleVariantPath = `${ styleDefID }-${ styleVariant?.meta.breakpoint }-${ styleVariant?.meta.state }`;\n\n\tconst saveStylePropsHistory = useCallback( () => {\n\t\tprops.forEach( ( propKey ) => {\n\t\t\tconst propValue = styleVariant?.props[ propKey ];\n\n\t\t\tif ( propValue ) {\n\t\t\t\tconst propPath = `${ styleVariantPath }-${ propKey }`;\n\t\t\t\tsetPropValue( propPath, propValue );\n\t\t\t}\n\t\t} );\n\t}, [ props, setPropValue, styleVariant?.props, styleVariantPath ] );\n\n\tconst updateStylePropsFromHistory = useCallback( () => {\n\t\tconst propValuesFromHistory = props.reduce( ( allProps, currentPropKey ) => {\n\t\t\tconst propPath = `${ styleVariantPath }-${ currentPropKey }`;\n\t\t\tconst propHistory = getPropValue( propPath );\n\n\t\t\tif ( propHistory ) {\n\t\t\t\tremoveProp( propPath );\n\t\t\t\treturn { ...allProps, [ currentPropKey ]: propHistory };\n\t\t\t}\n\n\t\t\treturn allProps;\n\t\t}, {} );\n\n\t\tif ( Object.keys( propValuesFromHistory ).length ) {\n\t\t\tupdateStyle( {\n\t\t\t\telementID: element.id,\n\t\t\t\tstyleDefID,\n\t\t\t\tmeta,\n\t\t\t\tprops: propValuesFromHistory,\n\t\t\t\tbind: 'classes',\n\t\t\t} );\n\t\t}\n\t}, [ element.id, getPropValue, meta, props, removeProp, styleDefID, styleVariantPath ] );\n\n\tconst clearCurrentStyleProps = useCallback( () => {\n\t\tconst resetValues = props.reduce(\n\t\t\t( allProps, currentPropKey ) => ( {\n\t\t\t\t...allProps,\n\t\t\t\t[ currentPropKey ]: undefined,\n\t\t\t} ),\n\t\t\t{}\n\t\t);\n\n\t\tupdateStyle( {\n\t\t\telementID: element.id,\n\t\t\tstyleDefID,\n\t\t\tmeta,\n\t\t\tprops: resetValues,\n\t\t\tbind: 'classes',\n\t\t} );\n\t}, [ element.id, meta, props, styleDefID ] );\n\n\treturn useMemo(\n\t\t() => ( { saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps } ),\n\t\t[ saveStylePropsHistory, updateStylePropsFromHistory, clearCurrentStyleProps ]\n\t);\n};\n","import { useCallback, useMemo } from 'react';\nimport { getSessionStorageItem, setSessionStorageItem } from '@elementor/utils';\n\nimport { useElement } from '../contexts/element-context';\n\nexport const PROPS_VALUES_HISTORY_PREFIX = 'elementor/editor-editing-panel/prop-value-history';\n\nexport const usePropValueHistory = () => {\n\tconst { element } = useElement();\n\tconst elementKey = `${ PROPS_VALUES_HISTORY_PREFIX }/${ element.id }`;\n\n\tconst getElementPropsHistory = useCallback( () => {\n\t\treturn getSessionStorageItem< Record< string, unknown > >( elementKey );\n\t}, [ elementKey ] );\n\n\tconst getPropValue = useCallback(\n\t\t< T >( propKey: string ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\treturn ( elementPropValues?.[ propKey ] ?? null ) as T | null;\n\t\t},\n\t\t[ getElementPropsHistory ]\n\t);\n\n\tconst setPropValue = useCallback(\n\t\t( propKey: string, propValue: unknown ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\tconst updatedElementPropValues = { ...elementPropValues, [ propKey ]: propValue };\n\t\t\tsetSessionStorageItem( elementKey, updatedElementPropValues );\n\t\t},\n\t\t[ getElementPropsHistory, elementKey ]\n\t);\n\n\tconst removeProp = useCallback(\n\t\t( propKey: string ) => {\n\t\t\tconst elementPropValues = getElementPropsHistory();\n\t\t\tconst updatedElementPropValues = Object.fromEntries(\n\t\t\t\tObject.entries( elementPropValues || {} ).filter( ( [ key ] ) => key !== propKey )\n\t\t\t);\n\t\t\tsetSessionStorageItem( elementKey, updatedElementPropValues );\n\t\t},\n\t\t[ getElementPropsHistory, elementKey ]\n\t);\n\n\treturn useMemo( () => ( { getPropValue, setPropValue, removeProp } ), [ getPropValue, removeProp, setPropValue ] );\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { SideBottomIcon, SideLeftIcon, SideRightIcon, SideTopIcon } from '@elementor/icons';\nimport { Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 } flexWrap=\"nowrap\">\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 } flexWrap=\"nowrap\">\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 gap={ 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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { ControlLabel, NumberControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const ZIndexField = () => {\n\treturn (\n\t\t<StylesField bind=\"z-index\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Divider, Grid, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';\nimport { OverflowField } from './overflow-field';\n\nexport const SizeSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"width\" label={ __( 'Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"height\" label={ __( 'Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"min-width\" label={ __( 'Min. Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"min-height\" label={ __( 'Min. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Grid container gap={ 2 } flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-width\" label={ __( 'Max. Width', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<SizeField bind=\"max-height\" label={ __( 'Max. Height', 'elementor' ) } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Stack>\n\t\t\t\t<OverflowField />\n\t\t\t</Stack>\n\t\t</Stack>\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<StylesField bind={ bind }>\n\t\t\t<Grid container gap={ 1 } alignItems=\"center\">\n\t\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t\t<ControlLabel>{ label }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 12 }>\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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { ExpandBottomIcon, EyeIcon, EyeOffIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Overflows = 'visible' | 'hidden' | 'auto';\n\nconst options: ToggleButtonGroupItem< Overflows >[] = [\n\t{\n\t\tvalue: 'visible',\n\t\tlabel: __( 'Visible', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'hidden',\n\t\tlabel: __( 'Hidden', 'elementor' ),\n\t\trenderContent: ( { size } ) => <EyeOffIcon fontSize={ size } />,\n\t\tshowTooltip: true,\n\t},\n\t{\n\t\tvalue: 'auto',\n\t\tlabel: __( 'Auto', 'elementor' ),\n\t\trenderContent: ( { size } ) => <ExpandBottomIcon fontSize={ size } />,\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { LinkedDimensionsControl } from '@elementor/editor-controls';\nimport { Divider, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const SpacingSection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<StylesField bind={ 'padding' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t\t<Divider />\n\t\t\t<StylesField bind={ 'margin' }>\n\t\t\t\t<LinkedDimensionsControl label={ __( 'Margin', 'elementor' ) } />\n\t\t\t</StylesField>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Divider, Stack } from '@elementor/ui';\n\nimport { CollapsibleContent } from '../../collapsible-content';\nimport { FontFamilyField } from './font-family-field';\nimport { FontSizeField } from './font-size-field';\nimport { FontWeightField } from './font-weight-field';\nimport { LetterSpacingField } from './letter-spacing-field';\nimport { LineHeightField } from './line-height-field';\nimport { TextAlignmentField } from './text-alignment-field';\nimport { TextColorField } from './text-color-field';\nimport { TextDirectionField } from './text-direction-field';\nimport { TextStrokeField } from './text-stroke-field';\nimport { TextStyleField } from './text-style-field';\nimport { TransformField } from './transform-field';\nimport { WordSpacingField } from './word-spacing-field';\n\nexport const TypographySection = () => {\n\treturn (\n\t\t<Stack gap={ 1.5 }>\n\t\t\t<FontFamilyField />\n\t\t\t<FontWeightField />\n\t\t\t<FontSizeField />\n\t\t\t<Divider />\n\t\t\t<TextAlignmentField />\n\t\t\t<TextColorField />\n\t\t\t<CollapsibleContent>\n\t\t\t\t<Stack gap={ 1.5 } sx={ { pt: 1.5 } }>\n\t\t\t\t\t<LineHeightField />\n\t\t\t\t\t<LetterSpacingField />\n\t\t\t\t\t<WordSpacingField />\n\t\t\t\t\t<Divider />\n\t\t\t\t\t<TextStyleField />\n\t\t\t\t\t<TransformField />\n\t\t\t\t\t<TextDirectionField />\n\t\t\t\t\t<TextStrokeField />\n\t\t\t\t</Stack>\n\t\t\t</CollapsibleContent>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { Button, Collapse, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { CollapseIcon } from './collapse-icon';\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={ <CollapseIcon 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\" unmountOnExit>\n\t\t\t\t{ children }\n\t\t\t</Collapse>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel, FontFamilyControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { getElementorConfig } from '../../../sync/get-elementor-config';\n\nexport const FontFamilyField = () => {\n\tconst fontFamilies = getFontFamilies();\n\n\tif ( ! fontFamilies ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<StylesField bind=\"font-family\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Font Family', 'elementor' ) }</ControlLabel>\n\t\t\t\t</Grid>\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<FontFamilyControl fontFamilies={ fontFamilies } />\n\t\t\t\t</Grid>\n\t\t\t</Grid>\n\t\t</StylesField>\n\t);\n};\n\nconst getFontFamilies = () => {\n\tconst { controls } = getElementorConfig();\n\n\tconst options = controls?.font?.options;\n\n\tif ( ! options ) {\n\t\treturn null;\n\t}\n\n\treturn options;\n};\n","import { type ExtendedWindow } from './types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import * as React from 'react';\nimport { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const FontSizeField = () => {\n\treturn (\n\t\t<StylesField bind=\"font-size\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SelectControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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 gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const LetterSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"letter-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const LineHeightField = () => {\n\treturn (\n\t\t<StylesField bind=\"line-height\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( 'Line Height', '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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { AlignCenterIcon, AlignJustifiedIcon, AlignLeftIcon, AlignRightIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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\trenderContent: ( { size } ) => <AlignLeftIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'center',\n\t\tlabel: __( 'Center', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignCenterIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'right',\n\t\tlabel: __( 'Right', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignRightIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'justify',\n\t\tlabel: __( 'Justify', 'elementor' ),\n\t\trenderContent: ( { size } ) => <AlignJustifiedIcon fontSize={ size } />,\n\t},\n];\n\nexport const TextAlignmentField = () => {\n\treturn (\n\t\t<StylesField bind={ 'text-align' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ColorControl, ControlLabel } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const TextColorField = () => {\n\treturn (\n\t\t<StylesField bind=\"color\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { TextDirectionLtrIcon, TextDirectionRtlIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\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\trenderContent: ( { size } ) => <TextDirectionLtrIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'rtl',\n\t\tlabel: __( 'Right to Left', 'elementor' ),\n\t\trenderContent: ( { size } ) => <TextDirectionRtlIcon fontSize={ size } />,\n\t},\n];\n\nexport const TextDirectionField = () => {\n\treturn (\n\t\t<StylesField bind={ 'direction' }>\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { StrokeControl } from '@elementor/editor-controls';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\nimport { useStylesField } from '../../../hooks/use-styles-field';\nimport { AddOrRemoveContent } from '../../add-or-remove-content';\n\nconst initTextStroke = {\n\t$$type: 'stroke',\n\tvalue: {\n\t\tcolor: {\n\t\t\t$$type: 'color',\n\t\t\tvalue: '#000000',\n\t\t},\n\t\twidth: {\n\t\t\t$$type: 'size',\n\t\t\tvalue: {\n\t\t\t\tunit: 'px',\n\t\t\t\tsize: 1,\n\t\t\t},\n\t\t},\n\t},\n};\n\nexport const TextStrokeField = () => {\n\tconst [ textStroke, setTextStroke ] = useStylesField( '-webkit-text-stroke' );\n\n\tconst addTextStroke = () => {\n\t\tsetTextStroke( initTextStroke );\n\t};\n\n\tconst removeTextStroke = () => {\n\t\tsetTextStroke( null );\n\t};\n\n\tconst hasTextStroke = Boolean( textStroke );\n\n\treturn (\n\t\t<AddOrRemoveContent\n\t\t\tlabel={ __( 'Text Stroke', 'elementor' ) }\n\t\t\tisAdded={ hasTextStroke }\n\t\t\tonAdd={ addTextStroke }\n\t\t\tonRemove={ removeTextStroke }\n\t\t>\n\t\t\t<StylesField bind={ '-webkit-text-stroke' }>\n\t\t\t\t<StrokeControl />\n\t\t\t</StylesField>\n\t\t</AddOrRemoveContent>\n\t);\n};\n","import * as React from 'react';\nimport { ControlLabel } from '@elementor/editor-controls';\nimport { type StringPropValue } from '@elementor/editor-props';\nimport { ItalicIcon, StrikethroughIcon, UnderlineIcon } from '@elementor/icons';\nimport { Grid, ToggleButton as ToggleButtonBase, ToggleButtonGroup, type ToggleButtonProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useStylesField } from '../../../hooks/use-styles-field';\n\nconst buttonSize = 'tiny';\n\nexport const TextStyleField = () => {\n\tconst [ fontStyle, setFontStyle ] = useStylesField< StringPropValue | null >( 'font-style' );\n\tconst [ textDecoration, setTextDecoration ] = useStylesField< StringPropValue | null >( 'text-decoration' );\n\n\tconst formats = [ fontStyle?.value, ...( textDecoration?.value || '' ).split( ' ' ) ];\n\n\tconst handleSetFontStyle = ( newValue: string | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\treturn setFontStyle( null );\n\t\t}\n\n\t\tsetFontStyle( {\n\t\t\t$$type: 'string',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\tconst handleSetTextDecoration = ( newValue: string | null ) => {\n\t\tif ( newValue === null ) {\n\t\t\treturn setTextDecoration( null );\n\t\t}\n\n\t\tsetTextDecoration( {\n\t\t\t$$type: 'string',\n\t\t\tvalue: newValue,\n\t\t} );\n\t};\n\n\treturn (\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( '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 ) => handleSetFontStyle( fontStyle?.value === 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?.value || '' }\n\t\t\t\t\t\tupdateValues={ handleSetTextDecoration }\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?.value || '' }\n\t\t\t\t\t\tupdateValues={ handleSetTextDecoration }\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 { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';\nimport { LetterCaseIcon, LetterCaseLowerIcon, LetterCaseUpperIcon } from '@elementor/icons';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\ntype Transforms = 'capitalize' | 'uppercase' | 'lowercase';\n\nconst options: ToggleButtonGroupItem< Transforms >[] = [\n\t{\n\t\tvalue: 'capitalize',\n\t\tlabel: __( 'Capitalize', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'uppercase',\n\t\tlabel: __( 'Uppercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseUpperIcon fontSize={ size } />,\n\t},\n\t{\n\t\tvalue: 'lowercase',\n\t\tlabel: __( 'Lowercase', 'elementor' ),\n\t\trenderContent: ( { size } ) => <LetterCaseLowerIcon fontSize={ size } />,\n\t},\n];\n\nexport const TransformField = () => (\n\t<StylesField bind={ 'text-transform' }>\n\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t<ControlLabel>{ __( '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 { ControlLabel, SizeControl } from '@elementor/editor-controls';\nimport { Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { StylesField } from '../../../controls-registry/styles-field';\n\nexport const WordSpacingField = () => {\n\treturn (\n\t\t<StylesField bind=\"word-spacing\">\n\t\t\t<Grid container gap={ 2 } alignItems=\"center\" flexWrap=\"nowrap\">\n\t\t\t\t<Grid item xs={ 6 }>\n\t\t\t\t\t<ControlLabel>{ __( '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 { getSelectedElements, getWidgetsCache } from '@elementor/editor-elements';\n\nexport const isAtomicWidgetSelected = () => {\n\tconst selectedElements = getSelectedElements();\n\tconst widgetCache = getWidgetsCache();\n\n\tif ( selectedElements.length !== 1 ) {\n\t\treturn false;\n\t}\n\n\t// Check if the selected element has atomic controls, meaning it's a V2 element.\n\treturn !! widgetCache?.[ selectedElements[ 0 ].type ]?.atomic_controls;\n};\n","import { useEffect } from 'react';\nimport { __privateListenTo as listenTo, commandStartEvent } from '@elementor/editor-v1-adapters';\n\nimport { usePanelActions } from '../panel';\nimport { isAtomicWidgetSelected } from '../sync/is-atomic-widget-selected';\n\nexport const useOpenEditorPanel = () => {\n\tconst { open } = usePanelActions();\n\n\tuseEffect( () => {\n\t\treturn listenTo( commandStartEvent( 'panel/editor/open' ), () => {\n\t\t\tif ( isAtomicWidgetSelected() ) {\n\t\t\t\topen();\n\t\t\t}\n\t\t} );\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n};\n","import { useCloseEditorPanel } from '../hooks/use-close-editor-panel';\nimport { useOpenEditorPanel } from '../hooks/use-open-editor-panel';\n\nexport const EditingPanelHooks = () => {\n\tuseOpenEditorPanel();\n\tuseCloseEditorPanel();\n\n\treturn null;\n};\n","import * as React from 'react';\nimport { useId } from 'react';\nimport { ControlLabel, useBoundProp } from '@elementor/editor-controls';\nimport type { Control, ControlsSection } from '@elementor/editor-elements';\nimport { DatabaseIcon, SettingsIcon, XIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tBox,\n\tDivider,\n\tIconButton,\n\tPaper,\n\tPopover,\n\tStack,\n\tTab,\n\tTabPanel,\n\tTabs,\n\tTypography,\n\tUnstableTag as Tag,\n\tusePopupState,\n\tuseTabs,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Control as BaseControl } from '../../controls-registry/control';\nimport { type ControlType, getControlByType } from '../../controls-registry/controls-registry';\nimport { usePropValueHistory } from '../../hooks/use-prop-value-history';\nimport { DynamicControl } from '../dynamic-control';\nimport { useDynamicTag } from '../hooks/use-dynamic-tag';\nimport { type DynamicTag } from '../types';\nimport { dynamicPropTypeUtil } from '../utils';\nimport { DynamicSelection } from './dynamic-selection';\n\nconst SIZE = 'tiny';\n\nexport const DynamicSelectionControl = () => {\n\tconst { setValue: setAnyValue } = useBoundProp();\n\tconst { bind, value } = useBoundProp( dynamicPropTypeUtil );\n\tconst { getPropValue: getPropValueFromHistory } = usePropValueHistory();\n\tconst { name: tagName = '' } = 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\tconst propValue = getPropValueFromHistory( bind );\n\n\t\tsetAnyValue( propValue ?? 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 { BoundPropProvider, useBoundProp } from '@elementor/editor-controls';\nimport { isTransformable, type PropKey, type PropValue } from '@elementor/editor-props';\n\nimport { useDynamicTag } from './hooks/use-dynamic-tag';\nimport { dynamicPropTypeUtil } from './utils';\n\nexport type DynamicControlProps = React.PropsWithChildren< {\n\tbind: PropKey;\n} >;\n\nexport const DynamicControl = ( { bind, children }: DynamicControlProps ) => {\n\tconst { value, setValue, bind: propName } = useBoundProp( dynamicPropTypeUtil );\n\tconst { name = '', settings } = 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\tname,\n\t\t\tsettings: {\n\t\t\t\t...settings,\n\t\t\t\t// The value inside the dynamic is not a transformable value, so we need to store the whole object.\n\t\t\t\t[ bind ]: isTransformable( newValue ) ? newValue.value : newValue,\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 { type PropKey } from '@elementor/editor-props';\n\nimport { type DynamicTag } from '../types';\nimport { usePropDynamicTags } from './use-prop-dynamic-tags';\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 { type PropKey } from '@elementor/editor-props';\n\nimport { useElement } from '../../contexts/element-context';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\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 { type ExtendedWindow } from '../types';\n\nexport const getElementorConfig = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config ?? {};\n};\n","import { getElementorConfig } from './get-elementor-config';\n\nexport const getAtomicDynamicTags = () => {\n\tconst { atomicDynamicTags } = getElementorConfig();\n\n\tif ( ! atomicDynamicTags ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\ttags: atomicDynamicTags.tags,\n\t\tgroups: atomicDynamicTags.groups,\n\t};\n};\n","import {\n\tcreatePropUtils,\n\tisTransformable,\n\ttype PropType,\n\ttype PropValue,\n\ttype TransformablePropType,\n} from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nimport { type DynamicPropType } from './types';\n\nexport const 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\nexport const dynamicPropTypeUtil = createPropUtils(\n\tDYNAMIC_PROP_TYPE_KEY,\n\tz.strictObject( {\n\t\tname: z.string(),\n\t\tsettings: z.record( z.any() ).optional(),\n\t} )\n);\n\nexport type DynamicPropValue = z.infer< typeof dynamicPropTypeUtil.schema >;\n","import * as React from 'react';\nimport { Fragment, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\nimport { PhotoIcon, SearchIcon } 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';\n\nimport { usePropValueHistory } from '../../hooks/use-prop-value-history';\nimport { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';\nimport { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';\nimport { dynamicPropTypeUtil } from '../utils';\n\ntype Option = {\n\tlabel: string;\n\tvalue: string;\n};\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\n\tconst { value: anyValue } = useBoundProp();\n\tconst { bind, value: dynamicvalue, setValue } = useBoundProp( dynamicPropTypeUtil );\n\n\tconst { setPropValue: updatePropValueHistory } = usePropValueHistory();\n\n\tconst isCurrentValueDynamic = !! dynamicvalue;\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( bind, anyValue );\n\t\t}\n\n\t\tsetValue( { 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 === dynamicvalue?.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&ldquo;{ searchValue }&rdquo;.\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&nbsp;\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 * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { DatabaseIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { useElement } from '../../contexts/element-context';\nimport { type PopoverActionProps } from '../../popover-action';\nimport { DynamicSelection } from '../components/dynamic-selection';\nimport { supportsDynamic } from '../utils';\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 { replaceControl } from '../control-replacement';\nimport { controlActionsMenu } from '../controls-actions';\nimport { DynamicSelectionControl } from './components/dynamic-selection-control';\nimport { usePropDynamicAction } from './hooks/use-prop-dynamic-action';\nimport { isDynamicPropValue } from './utils';\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"],"mappings":"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","names":["useBoundProp","useEffect","getSelectedElements","React","__","React","React","React","Fragment","Divider","Stack","__","React","React","React","Box","Box","React","React","useId","Stack","styled","useId","Stack","React","Control","React","useState","useElementSetting","useElementStyles","Divider","__","React","createContext","useContext","Context","React","createContext","useContext","Context","React","updateSettings","useElementSetting","Chip","Stack","Typography","React","Box","styled","options","styled","Box","options","Stack","Typography","Chip","useElementSetting","updateSettings","React","Stack","React","BoundPropProvider","BoundPropProvider","React","ControlLabel","__","ControlLabel","__","Stack","React","Divider","Stack","React","__","React","ControlLabel","Collapse","IconButton","Stack","SIZE","React","ColorControl","ControlLabel","Grid","__","Grid","ControlLabel","__","ColorControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","__","__","__","React","EqualUnequalSizesControl","__","__","EqualUnequalSizesControl","Stack","Divider","React","Stack","Stack","React","ControlLabel","Divider","Stack","__","React","ControlLabel","Grid","__","React","useRef","useTheme","useRef","useTheme","__","Grid","ControlLabel","React","ControlLabel","ToggleControl","CenterIcon","LayoutAlignLeftIcon","LayoutAlignRightIcon","JustifyIcon","DirectionProvider","Grid","ThemeProvider","withDirection","__","StartIcon","withDirection","LayoutAlignLeftIcon","EndIcon","LayoutAlignRightIcon","iconProps","options","__","CenterIcon","JustifyIcon","DirectionProvider","ThemeProvider","Grid","ControlLabel","ToggleControl","React","ControlLabel","ToggleControl","Stack","__","options","__","Stack","ControlLabel","ToggleControl","React","ControlLabel","ToggleControl","DirectionProvider","Grid","ThemeProvider","withDirection","__","options","__","StartIcon","withDirection","EndIcon","DirectionProvider","ThemeProvider","Grid","ControlLabel","ToggleControl","React","useState","ControlLabel","ArrowDownSmallIcon","ArrowUpSmallIcon","DirectionProvider","Grid","Stack","ThemeProvider","__","__","ArrowUpSmallIcon","ArrowDownSmallIcon","useState","DirectionProvider","ThemeProvider","Stack","Grid","ControlLabel","React","ControlLabel","ControlToggleButtonGroup","NumberControl","SizeControl","PencilIcon","DirectionProvider","Grid","Stack","ThemeProvider","__","items","__","PencilIcon","DirectionProvider","ThemeProvider","Stack","Grid","ControlLabel","ControlToggleButtonGroup","NumberControl","SizeControl","React","ControlLabel","ToggleControl","CenterIcon","DirectionProvider","Stack","ThemeProvider","withDirection","__","StartIcon","withDirection","EndIcon","iconProps","options","__","CenterIcon","DirectionProvider","ThemeProvider","Stack","ControlLabel","ToggleControl","React","ControlLabel","ToggleControl","ArrowRightIcon","DirectionProvider","Grid","ThemeProvider","__","options","__","ArrowRightIcon","DirectionProvider","ThemeProvider","Grid","ControlLabel","ToggleControl","Stack","Divider","ControlLabel","__","React","useCallback","Stack","useCallback","useMemo","updateStyle","useMemo","useMemo","useCallback","updateStyle","useMemo","React","ControlLabel","SizeControl","SideBottomIcon","SideLeftIcon","SideRightIcon","SideTopIcon","Grid","Stack","__","SideLeftIcon","SideRightIcon","SideTopIcon","SideBottomIcon","Stack","__","Grid","ControlLabel","SizeControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","ControlLabel","NumberControl","Grid","__","Grid","ControlLabel","__","NumberControl","Stack","useCallback","React","ControlLabel","SizeControl","Divider","Grid","Stack","__","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","Stack","Grid","__","Divider","ControlLabel","SizeControl","React","Divider","Stack","__","Stack","__","Divider","React","Divider","Stack","React","useState","Collapse","Stack","__","useState","Stack","__","Collapse","React","ControlLabel","Grid","__","Grid","ControlLabel","__","options","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","React","ControlLabel","SelectControl","Grid","__","__","Grid","ControlLabel","SelectControl","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","ColorControl","ControlLabel","Grid","__","Grid","ControlLabel","__","ColorControl","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","__","__","React","ControlLabel","Grid","__","Grid","ControlLabel","__","React","ControlLabel","ToggleControl","Grid","__","options","__","Grid","ControlLabel","ToggleControl","React","ControlLabel","SizeControl","Grid","__","Grid","ControlLabel","__","SizeControl","Stack","Divider","Divider","__","useState","useElementSetting","useElementStyles","Fragment","Stack","__","Divider","__","useEffect","getSelectedElements","useEffect","listenTo","commandStartEvent","useEffect","listenTo","commandStartEvent","React","useId","ControlLabel","useBoundProp","XIcon","bindPopover","Box","Divider","IconButton","Popover","Stack","Tab","TabPanel","Tabs","Typography","usePopupState","useTabs","__","React","BoundPropProvider","isTransformable","useMemo","useMemo","getElementorConfig","getElementorConfig","useMemo","useMemo","isTransformable","BoundPropProvider","React","Fragment","useState","useBoundProp","Box","Divider","Stack","TextField","Typography","__","SIZE","useState","useBoundProp","options","Stack","Box","TextField","__","Divider","items","Fragment","Typography","SIZE","useBoundProp","useId","usePopupState","Box","IconButton","__","XIcon","Popover","bindPopover","Stack","Typography","useTabs","Tabs","Tab","Divider","TabPanel","Control","ControlLabel","React","useBoundProp","DatabaseIcon","__","useBoundProp","DatabaseIcon","__","init","init"]}