@elementor/editor-variables 3.33.0-98 → 3.34.2

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 (59) hide show
  1. package/dist/index.d.mts +11 -3
  2. package/dist/index.d.ts +11 -3
  3. package/dist/index.js +1874 -801
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1819 -737
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +16 -14
  8. package/src/api.ts +24 -0
  9. package/src/batch-operations.ts +86 -0
  10. package/src/components/fields/color-field.tsx +1 -0
  11. package/src/components/fields/font-field.tsx +2 -1
  12. package/src/components/fields/label-field.tsx +42 -6
  13. package/src/components/ui/deleted-variable-alert.tsx +14 -10
  14. package/src/components/ui/{no-variables.tsx → empty-state.tsx} +8 -13
  15. package/src/components/ui/menu-item-content.tsx +14 -11
  16. package/src/components/ui/mismatch-variable-alert.tsx +5 -9
  17. package/src/components/ui/missing-variable-alert.tsx +8 -9
  18. package/src/components/ui/no-search-results.tsx +1 -2
  19. package/src/components/ui/tags/assigned-tag.tsx +6 -3
  20. package/src/components/ui/tags/warning-variable-tag.tsx +44 -0
  21. package/src/components/ui/variable/deleted-variable.tsx +13 -6
  22. package/src/components/ui/variable/mismatch-variable.tsx +11 -4
  23. package/src/components/ui/variable/missing-variable.tsx +2 -2
  24. package/src/components/variable-creation.tsx +10 -3
  25. package/src/components/variable-edit.tsx +11 -12
  26. package/src/components/variable-restore.tsx +3 -2
  27. package/src/components/variables-manager/hooks/use-auto-edit.ts +21 -0
  28. package/src/components/variables-manager/hooks/use-error-navigation.ts +49 -0
  29. package/src/components/variables-manager/hooks/use-variables-manager-state.ts +89 -0
  30. package/src/components/variables-manager/variable-editable-cell.tsx +131 -67
  31. package/src/components/variables-manager/variables-manager-create-menu.tsx +116 -0
  32. package/src/components/variables-manager/variables-manager-panel.tsx +290 -59
  33. package/src/components/variables-manager/variables-manager-table.tsx +111 -14
  34. package/src/components/variables-selection.tsx +61 -15
  35. package/src/controls/variable-control.tsx +1 -1
  36. package/src/hooks/use-prop-variables.ts +11 -8
  37. package/src/hooks/use-variable-bound-prop.ts +42 -0
  38. package/src/index.ts +1 -0
  39. package/src/init.ts +19 -6
  40. package/src/mcp/create-variable-tool.ts +70 -0
  41. package/src/mcp/delete-variable-tool.ts +50 -0
  42. package/src/mcp/index.ts +17 -0
  43. package/src/mcp/list-variables-tool.ts +58 -0
  44. package/src/mcp/update-variable-tool.ts +81 -0
  45. package/src/mcp/variables-resource.ts +28 -0
  46. package/src/register-variable-types.tsx +2 -0
  47. package/src/service.ts +60 -1
  48. package/src/storage.ts +8 -0
  49. package/src/types.ts +1 -0
  50. package/src/utils/filter-by-search.ts +5 -0
  51. package/src/utils/tracking.ts +37 -22
  52. package/src/utils/validations.ts +72 -3
  53. package/src/variables-registry/create-variable-type-registry.ts +10 -1
  54. package/src/variables-registry/variable-type-registry.ts +2 -1
  55. package/src/components/ui/tags/deleted-tag.tsx +0 -37
  56. package/src/components/ui/tags/mismatch-tag.tsx +0 -37
  57. package/src/components/ui/tags/missing-tag.tsx +0 -25
  58. /package/src/components/variables-manager/{variable-edit-menu.tsx → ui/variable-edit-menu.tsx} +0 -0
  59. /package/src/components/variables-manager/{variable-table-cell.tsx → ui/variable-table-cell.tsx} +0 -0
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/init.ts","../src/components/variables-manager/variables-manager-panel.tsx","../src/hooks/use-prop-variables.ts","../src/context/variable-type-context.tsx","../src/variables-registry/create-variable-type-registry.ts","../src/transformers/inheritance-transformer.tsx","../src/components/ui/color-indicator.tsx","../src/prop-types/color-variable-prop-type.ts","../src/service.ts","../src/api.ts","../src/storage.ts","../src/prop-types/font-variable-prop-type.ts","../src/sync/enqueue-font.ts","../src/create-style-variables-repository.ts","../src/style-variables-repository.ts","../src/transformers/utils/resolve-css-variable.ts","../src/transformers/variable-transformer.ts","../src/variables-registry/variable-type-registry.ts","../src/components/variables-manager/variables-manager-table.tsx","../src/components/fields/label-field.tsx","../src/utils/validations.ts","../src/components/variables-manager/variable-edit-menu.tsx","../src/components/variables-manager/variable-editable-cell.tsx","../src/components/variables-manager/variable-table-cell.tsx","../src/controls/variable-control.tsx","../src/components/ui/variable/assigned-variable.tsx","../src/utils/unlink-variable.ts","../src/components/variable-selection-popover.tsx","../src/context/variable-selection-popover.context.tsx","../src/hooks/use-permissions.ts","../src/components/variable-creation.tsx","../src/hooks/use-initial-value.ts","../src/utils/tracking.ts","../src/components/ui/form-field.tsx","../src/components/variable-edit.tsx","../src/components/ui/delete-confirmation-dialog.tsx","../src/components/ui/edit-confirmation-dialog.tsx","../src/components/variables-selection.tsx","../src/components/ui/menu-item-content.tsx","../src/components/ui/no-search-results.tsx","../src/components/ui/no-variables.tsx","../src/components/ui/styled-menu-list.tsx","../src/components/ui/tags/assigned-tag.tsx","../src/components/ui/variable/deleted-variable.tsx","../src/components/variable-restore.tsx","../src/components/ui/deleted-variable-alert.tsx","../src/components/ui/tags/deleted-tag.tsx","../src/components/ui/variable/mismatch-variable.tsx","../src/components/ui/mismatch-variable-alert.tsx","../src/components/ui/tags/mismatch-tag.tsx","../src/components/ui/variable/missing-variable.tsx","../src/components/ui/missing-variable-alert.tsx","../src/components/ui/tags/missing-tag.tsx","../src/hooks/use-prop-variable-action.tsx","../src/register-variable-types.tsx","../src/components/fields/color-field.tsx","../src/components/fields/font-field.tsx","../src/renderers/style-variables-renderer.tsx","../src/sync/get-canvas-iframe-document.ts","../src/repeater-injections.ts","../src/components/variables-repeater-item-slot.tsx"],"sourcesContent":["export { init } from './init';\nexport { registerVariableType } from './variables-registry/variable-type-registry';\n","import { injectIntoTop } from '@elementor/editor';\nimport { controlActionsMenu, registerControlReplacement } from '@elementor/editor-editing-panel';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport type { PropValue } from '@elementor/editor-props';\n\nimport { panel } from './components/variables-manager/variables-manager-panel';\nimport { VariableControl } from './controls/variable-control';\nimport { usePropVariableAction } from './hooks/use-prop-variable-action';\nimport { registerVariableTypes } from './register-variable-types';\nimport { StyleVariablesRenderer } from './renderers/style-variables-renderer';\nimport { registerRepeaterInjections } from './repeater-injections';\nimport { service as variablesService } from './service';\nimport { hasVariableType } from './variables-registry/variable-type-registry';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport function init() {\n\tregisterVariableTypes();\n\tregisterRepeaterInjections();\n\n\tregisterControlReplacement( {\n\t\tcomponent: VariableControl,\n\t\tcondition: ( { value } ) => hasAssignedVariable( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'variables',\n\t\tuseProps: usePropVariableAction,\n\t} );\n\n\tvariablesService.init();\n\n\tinjectIntoTop( {\n\t\tid: 'canvas-style-variables-render',\n\t\tcomponent: StyleVariablesRenderer,\n\t} );\n\n\tregisterPanel( panel );\n}\n\nfunction hasAssignedVariable( propValue: PropValue ) {\n\tif ( propValue && typeof propValue === 'object' && '$$type' in propValue ) {\n\t\treturn hasVariableType( propValue.$$type );\n\t}\n\n\treturn false;\n}\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport {\n\t__createPanel as createPanel,\n\tPanel,\n\tPanelBody,\n\tPanelFooter,\n\tPanelHeader,\n\tPanelHeaderTitle,\n} from '@elementor/editor-panels';\nimport { ThemeProvider } from '@elementor/editor-ui';\nimport { changeEditMode } from '@elementor/editor-v1-adapters';\nimport { ColorFilterIcon, TrashIcon, XIcon } from '@elementor/icons';\nimport { Alert, Box, Button, Divider, ErrorBoundary, IconButton, type IconButtonProps, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { getVariables } from '../../hooks/use-prop-variables';\nimport { type TVariablesList } from '../../storage';\nimport { VariablesManagerTable } from './variables-manager-table';\n\nconst id = 'variables-manager';\n\nexport const { panel, usePanelActions } = createPanel( {\n\tid,\n\tcomponent: VariablesManagerPanel,\n\tallowedEditModes: [ 'edit', id ],\n\tonOpen: () => {\n\t\tchangeEditMode( id );\n\t},\n\tonClose: () => {\n\t\tchangeEditMode( 'edit' );\n\t},\n} );\n\nexport function VariablesManagerPanel() {\n\tconst { close: closePanel } = usePanelActions();\n\tconst [ isDirty, setIsDirty ] = useState( false );\n\tconst [ variables, setVariables ] = useState( getVariables( false ) );\n\tconst [ deletedVariables, setDeletedVariables ] = useState< string[] >( [] );\n\n\tusePreventUnload( isDirty );\n\n\tconst menuActions = [\n\t\t{\n\t\t\tname: __( 'Delete', 'elementor' ),\n\t\t\ticon: TrashIcon,\n\t\t\tcolor: 'error.main',\n\t\t\tonClick: ( itemId: string ) => {\n\t\t\t\tsetDeletedVariables( [ ...deletedVariables, itemId ] );\n\t\t\t\tsetVariables( { ...variables, [ itemId ]: { ...variables[ itemId ], deleted: true } } );\n\t\t\t\tsetIsDirty( true );\n\t\t\t},\n\t\t},\n\t];\n\n\tconst handleOnChange = ( newVariables: TVariablesList ) => {\n\t\tsetVariables( newVariables );\n\t\tsetIsDirty( true );\n\t};\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<ErrorBoundary fallback={ <ErrorBoundaryFallback /> }>\n\t\t\t\t<Panel>\n\t\t\t\t\t<PanelHeader>\n\t\t\t\t\t\t<Stack width=\"100%\" direction=\"column\" alignItems=\"center\">\n\t\t\t\t\t\t\t<Stack p={ 1 } pl={ 2 } width=\"100%\" direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t\t\t\t<Stack width=\"100%\" direction=\"row\" gap={ 1 }>\n\t\t\t\t\t\t\t\t\t<PanelHeaderTitle sx={ { display: 'flex', alignItems: 'center', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t\t<ColorFilterIcon fontSize=\"inherit\" />\n\t\t\t\t\t\t\t\t\t\t{ __( 'Variable Manager', 'elementor' ) }\n\t\t\t\t\t\t\t\t\t</PanelHeaderTitle>\n\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t<CloseButton\n\t\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\t\tonClose={ () => {\n\t\t\t\t\t\t\t\t\t\tclosePanel();\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</Stack>\n\t\t\t\t\t\t\t<Divider sx={ { width: '100%' } } />\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t</PanelHeader>\n\t\t\t\t\t<PanelBody\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<VariablesManagerTable\n\t\t\t\t\t\t\tmenuActions={ menuActions }\n\t\t\t\t\t\t\tvariables={ variables }\n\t\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</PanelBody>\n\n\t\t\t\t\t<PanelFooter>\n\t\t\t\t\t\t<Button fullWidth size=\"small\" color=\"global\" variant=\"contained\" disabled={ ! isDirty }>\n\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</PanelFooter>\n\t\t\t\t</Panel>\n\t\t\t</ErrorBoundary>\n\t\t</ThemeProvider>\n\t);\n}\n\nconst CloseButton = ( { onClose, ...props }: IconButtonProps & { onClose: () => void } ) => (\n\t<IconButton size=\"small\" color=\"secondary\" onClick={ onClose } aria-label=\"Close\" { ...props }>\n\t\t<XIcon fontSize=\"small\" />\n\t</IconButton>\n);\n\nconst ErrorBoundaryFallback = () => (\n\t<Box role=\"alert\" sx={ { minHeight: '100%', p: 2 } }>\n\t\t<Alert severity=\"error\" sx={ { mb: 2, maxWidth: 400, textAlign: 'center' } }>\n\t\t\t<strong>{ __( 'Something went wrong', 'elementor' ) }</strong>\n\t\t</Alert>\n\t</Box>\n);\n\nconst usePreventUnload = ( isDirty: boolean ) => {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { service } from '../service';\nimport { type NormalizedVariable, type Variable } from '../types';\n\nexport const getVariables = ( includeDeleted = true ) => {\n\tconst variables = service.variables();\n\n\tif ( includeDeleted ) {\n\t\treturn variables;\n\t}\n\n\treturn Object.fromEntries( Object.entries( variables ).filter( ( [ , variable ] ) => ! variable.deleted ) );\n};\n\nexport const useVariable = ( key: string ) => {\n\tconst variables = getVariables();\n\n\tif ( ! variables?.[ key ] ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...variables[ key ],\n\t\tkey,\n\t};\n};\n\nexport const useFilteredVariables = ( searchValue: string, propTypeKey: string ) => {\n\tconst baseVariables = usePropVariables( propTypeKey );\n\n\tconst typeFilteredVariables = useVariableSelectionFilter( baseVariables );\n\tconst searchFilteredVariables = filterVariablesBySearchValue( typeFilteredVariables, searchValue );\n\n\treturn {\n\t\tlist: searchFilteredVariables,\n\t\thasMatches: searchFilteredVariables.length > 0,\n\t\tisSourceNotEmpty: typeFilteredVariables.length > 0,\n\t};\n};\n\nconst useVariableSelectionFilter = ( variables: NormalizedVariable[] ): NormalizedVariable[] => {\n\tconst { selectionFilter } = useVariableType();\n\tconst { propType } = useBoundProp();\n\n\treturn selectionFilter ? selectionFilter( variables, propType ) : variables;\n};\n\nconst filterVariablesBySearchValue = ( variables: NormalizedVariable[], searchValue: string ): NormalizedVariable[] => {\n\tconst lowerSearchValue = searchValue.toLowerCase();\n\treturn variables.filter( ( { label } ) => label.toLowerCase().includes( lowerSearchValue ) );\n};\n\nconst usePropVariables = ( propKey: PropKey ): NormalizedVariable[] => {\n\treturn useMemo( () => normalizeVariables( propKey ), [ propKey ] );\n};\n\nconst normalizeVariables = ( propKey: string ) => {\n\tconst variables = getVariables( false );\n\n\treturn Object.entries( variables )\n\t\t.filter( ( [ , variable ] ) => variable.type === propKey )\n\t\t.map( ( [ key, { label, value } ] ) => ( {\n\t\t\tkey,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} ) );\n};\n\nconst extractId = ( { id }: { id: string } ): string => id;\n\nexport const createVariable = ( newVariable: Variable ): Promise< string > => {\n\treturn service.create( newVariable ).then( extractId );\n};\n\nexport const updateVariable = (\n\tupdateId: string,\n\t{ value, label }: { value: string; label: string }\n): Promise< string > => {\n\treturn service.update( updateId, { value, label } ).then( extractId );\n};\n\nexport const deleteVariable = ( deleteId: string ): Promise< string > => {\n\treturn service.delete( deleteId ).then( extractId );\n};\n\nexport const restoreVariable = ( restoreId: string, label?: string, value?: string ): Promise< string > => {\n\treturn service.restore( restoreId, label, value ).then( extractId );\n};\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropTypeKey } from '@elementor/editor-props';\n\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\ntype Props = PropsWithChildren< { propTypeKey: PropTypeKey } >;\n\nconst VariableTypeContext = createContext< PropTypeKey | null >( null );\n\nexport function VariableTypeProvider( { children, propTypeKey }: Props ) {\n\treturn <VariableTypeContext.Provider value={ propTypeKey }>{ children }</VariableTypeContext.Provider>;\n}\n\nexport function useVariableType() {\n\tconst context = useContext( VariableTypeContext );\n\n\tif ( context === null ) {\n\t\tthrow new Error( 'useVariableType must be used within a VariableTypeProvider' );\n\t}\n\n\treturn getVariableType( context );\n}\n","import { type ForwardRefExoticComponent, type JSX, type RefAttributes } from 'react';\nimport { styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { stylesInheritanceTransformersRegistry } from '@elementor/editor-editing-panel';\nimport {\n\ttype createPropUtils,\n\ttype PropType,\n\ttype PropTypeKey,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\nimport { type SvgIconProps } from '@elementor/ui';\n\nimport { inheritanceTransformer } from '../transformers/inheritance-transformer';\nimport { variableTransformer } from '../transformers/variable-transformer';\nimport { type NormalizedVariable, type Variable } from '../types';\n\nexport type ValueFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( value: string ) => void;\n\tpropType?: PropType;\n};\n\ntype FallbackPropTypeUtil = ReturnType< typeof createPropUtils >;\n\ntype VariableTypeOptions = {\n\ticon: ForwardRefExoticComponent< Omit< SvgIconProps, 'ref' > & RefAttributes< SVGSVGElement > >;\n\tstartIcon?: ( { value }: { value: string } ) => JSX.Element;\n\tvalueField: ( { value, onChange, onValidationChange, propType }: ValueFieldProps ) => JSX.Element;\n\tvariableType: string;\n\tfallbackPropTypeUtil: FallbackPropTypeUtil;\n\tpropTypeUtil: PropTypeUtil< string, string >;\n\tselectionFilter?: ( variables: NormalizedVariable[], propType: PropType ) => NormalizedVariable[];\n\tvalueTransformer?: ( value: string ) => PropValue;\n\tisCompatible?: ( propType: PropType, variable: Variable ) => boolean;\n};\n\nexport type VariableTypesMap = Record< string, VariableTypeOptions >;\n\nexport function createVariableTypeRegistry() {\n\tconst variableTypes: VariableTypesMap = {};\n\n\tconst registerVariableType = ( {\n\t\ticon,\n\t\tstartIcon,\n\t\tvalueField,\n\t\tpropTypeUtil,\n\t\tvariableType,\n\t\tselectionFilter,\n\t\tvalueTransformer,\n\t\tfallbackPropTypeUtil,\n\t\tisCompatible,\n\t}: VariableTypeOptions ) => {\n\t\tif ( variableTypes[ propTypeUtil.key ] ) {\n\t\t\tthrow new Error( `Variable with key \"${ propTypeUtil.key }\" is already registered.` );\n\t\t}\n\n\t\tif ( ! isCompatible ) {\n\t\t\tisCompatible = ( propType, variable: Variable ) => {\n\t\t\t\tif ( 'union' === propType.kind ) {\n\t\t\t\t\tif ( variable.type in propType.prop_types ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}\n\n\t\tvariableTypes[ propTypeUtil.key ] = {\n\t\t\ticon,\n\t\t\tstartIcon,\n\t\t\tvalueField,\n\t\t\tpropTypeUtil,\n\t\t\tvariableType,\n\t\t\tselectionFilter,\n\t\t\tvalueTransformer,\n\t\t\tfallbackPropTypeUtil,\n\t\t\tisCompatible,\n\t\t};\n\n\t\tregisterTransformer( propTypeUtil.key );\n\t\tregisterInheritanceTransformer( propTypeUtil.key );\n\t};\n\n\tconst registerTransformer = ( key: PropTypeKey ) => {\n\t\tstyleTransformersRegistry.register( key, variableTransformer );\n\t};\n\n\tconst registerInheritanceTransformer = ( key: PropTypeKey ) => {\n\t\tstylesInheritanceTransformersRegistry.register( key, inheritanceTransformer );\n\t};\n\n\tconst getVariableType = ( key: string ) => {\n\t\treturn variableTypes[ key ];\n\t};\n\n\tconst hasVariableType = ( key: string ) => {\n\t\treturn key in variableTypes;\n\t};\n\n\treturn {\n\t\tregisterVariableType,\n\t\tgetVariableType,\n\t\thasVariableType,\n\t};\n}\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ColorIndicator } from '../components/ui/color-indicator';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { service } from '../service';\nimport { resolveCssVariable } from './utils/resolve-css-variable';\n\nexport const inheritanceTransformer = createTransformer( ( id: string ) => {\n\tconst variables = service.variables();\n\tconst variable = variables[ id ];\n\n\tif ( ! variable ) {\n\t\treturn <span>{ __( 'Missing variable', 'elementor' ) }</span>;\n\t}\n\n\tconst showColorIndicator = variable.type === colorVariablePropTypeUtil.key;\n\tconst css = resolveCssVariable( id, variable );\n\n\treturn (\n\t\t<Stack direction=\"row\" spacing={ 0.5 } sx={ { paddingInline: '1px' } } alignItems=\"center\">\n\t\t\t{ showColorIndicator && <ColorIndicator size=\"inherit\" value={ variable.value } /> }\n\t\t\t<Typography variant=\"caption\" overflow=\"hidden\" whiteSpace=\"nowrap\" textOverflow=\"ellipsis\">\n\t\t\t\t{ css }\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n} );\n","import { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const ColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\tmarginRight: theme.spacing( 0.25 ),\n} ) );\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const colorVariablePropTypeUtil = createPropUtils( 'global-color-variable', z.string() );\n","import { __ } from '@wordpress/i18n';\n\nimport { apiClient } from './api';\nimport { OP_RW, Storage, type TVariablesList } from './storage';\nimport { styleVariablesRepository } from './style-variables-repository';\nimport { type Variable } from './types';\n\nconst storage = new Storage();\n\nexport const service = {\n\tvariables: (): TVariablesList => {\n\t\treturn storage.load();\n\t},\n\n\tinit: () => {\n\t\tservice.load();\n\t},\n\n\tload: () => {\n\t\treturn apiClient\n\t\t\t.list()\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variables, watermark } = data;\n\n\t\t\t\tstorage.fill( variables, watermark );\n\n\t\t\t\tstyleVariablesRepository.update( variables );\n\n\t\t\t\treturn variables;\n\t\t\t} );\n\t},\n\n\tcreate: ( { type, label, value }: Variable ) => {\n\t\treturn apiClient\n\t\t\t.create( type, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tconst errorMessage = payload?.message || __( 'Unexpected response from server', 'elementor' );\n\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...createdVariable } = variable;\n\n\t\t\t\tstorage.add( variableId, createdVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: createdVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: createdVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\tupdate: ( id: string, { label, value }: Omit< Variable, 'type' > ) => {\n\t\treturn apiClient\n\t\t\t.update( id, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tconst errorMessage = payload?.message || __( 'Unexpected response from server', 'elementor' );\n\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...updatedVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, updatedVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: updatedVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: updatedVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\tdelete: ( id: string ) => {\n\t\treturn apiClient\n\t\t\t.delete( id )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...deletedVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, deletedVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: deletedVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: deletedVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\trestore: ( id: string, label?: string, value?: string ) => {\n\t\treturn apiClient\n\t\t\t.restore( id, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...restoredVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, restoredVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: restoredVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: restoredVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n};\n\nconst handleWatermark = ( operation: string, newWatermark: number ) => {\n\tif ( storage.watermarkDiff( operation, newWatermark ) ) {\n\t\tsetTimeout( () => service.load(), 500 );\n\t}\n\tstorage.watermark( newWatermark );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst BASE_PATH = 'elementor/v1/variables';\n\ntype RestoreVariablePayload = {\n\tid: string;\n\tlabel?: string;\n\tvalue?: string;\n};\n\nexport const apiClient = {\n\tlist: () => {\n\t\treturn httpService().get( BASE_PATH + '/list' );\n\t},\n\n\tcreate: ( type: string, label: string, value: string ) => {\n\t\treturn httpService().post( BASE_PATH + '/create', {\n\t\t\ttype,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} );\n\t},\n\n\tupdate: ( id: string, label: string, value: string ) => {\n\t\treturn httpService().put( BASE_PATH + '/update', {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} );\n\t},\n\n\tdelete: ( id: string ) => {\n\t\treturn httpService().post( BASE_PATH + '/delete', { id } );\n\t},\n\n\trestore: ( id: string, label?: string, value?: string ) => {\n\t\tconst payload: RestoreVariablePayload = { id };\n\n\t\tif ( label ) {\n\t\t\tpayload.label = label;\n\t\t}\n\n\t\tif ( value ) {\n\t\t\tpayload.value = value;\n\t\t}\n\n\t\treturn httpService().post( BASE_PATH + '/restore', payload );\n\t},\n};\n","export type TVariable = {\n\ttype: string;\n\tlabel: string;\n\tvalue: string;\n\tdeleted?: boolean;\n\tdeleted_at?: string;\n};\n\nexport type TVariablesList = Record< string, TVariable >;\n\nconst STORAGE_KEY = 'elementor-global-variables';\nconst STORAGE_WATERMARK_KEY = 'elementor-global-variables-watermark';\n\nexport const OP_RW = 'RW';\nconst OP_RO = 'RO';\n\nexport class Storage {\n\tstate: {\n\t\twatermark: number;\n\t\tvariables: TVariablesList;\n\t};\n\n\tconstructor() {\n\t\tthis.state = {\n\t\t\twatermark: -1,\n\t\t\tvariables: {},\n\t\t};\n\t}\n\n\tload() {\n\t\tthis.state.watermark = parseInt( localStorage.getItem( STORAGE_WATERMARK_KEY ) || '-1' );\n\t\tthis.state.variables = JSON.parse( localStorage.getItem( STORAGE_KEY ) || '{}' ) as TVariablesList;\n\t\treturn this.state.variables;\n\t}\n\n\tfill( variables: TVariablesList, watermark: number ) {\n\t\tthis.state.variables = {};\n\t\tif ( variables && Object.keys( variables ).length ) {\n\t\t\tthis.state.variables = variables;\n\t\t}\n\n\t\tthis.state.watermark = watermark;\n\n\t\tlocalStorage.setItem( STORAGE_WATERMARK_KEY, this.state.watermark.toString() );\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t}\n\n\tadd( id: string, variable: TVariable ) {\n\t\tthis.load();\n\t\tthis.state.variables[ id ] = variable;\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t}\n\n\tupdate( id: string, variable: TVariable ) {\n\t\tthis.load();\n\t\tthis.state.variables[ id ] = variable;\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t}\n\n\twatermark( watermark: number ) {\n\t\tthis.state.watermark = watermark;\n\t\tlocalStorage.setItem( STORAGE_WATERMARK_KEY, this.state.watermark.toString() );\n\t}\n\n\twatermarkDiff( operation: string, newWatermark: number ) {\n\t\tconst diff = newWatermark - this.state.watermark;\n\n\t\tif ( OP_RW === operation ) {\n\t\t\treturn 1 !== diff;\n\t\t}\n\n\t\tif ( OP_RO === operation ) {\n\t\t\treturn 0 !== diff;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const fontVariablePropTypeUtil = createPropUtils( 'global-font-variable', z.string() );\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\nimport { enqueueFont } from './sync/enqueue-font';\nimport { type StyleVariables, type Variable } from './types';\n\ntype VariablesChangeCallback = ( variables: StyleVariables ) => void;\ntype Variables = Record< string, Variable >;\n\nexport const createStyleVariablesRepository = () => {\n\tconst variables: StyleVariables = {};\n\tlet subscription: VariablesChangeCallback;\n\n\tconst subscribe = ( cb: VariablesChangeCallback ) => {\n\t\tsubscription = cb;\n\n\t\treturn () => {\n\t\t\tsubscription = () => {};\n\t\t};\n\t};\n\n\tconst notify = () => {\n\t\tif ( typeof subscription === 'function' ) {\n\t\t\tsubscription( { ...variables } );\n\t\t}\n\t};\n\n\tconst shouldUpdate = ( key: string, maybeUpdated: Variable ): boolean => {\n\t\tif ( ! ( key in variables ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ].label !== maybeUpdated.label ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ].value !== maybeUpdated.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! variables[ key ]?.deleted && maybeUpdated?.deleted ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ]?.deleted && ! maybeUpdated?.deleted ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst applyUpdates = ( updatedVars: Variables ): boolean => {\n\t\tlet hasChanges = false;\n\n\t\tfor ( const [ key, variable ] of Object.entries( updatedVars ) ) {\n\t\t\tif ( shouldUpdate( key, variable ) ) {\n\t\t\t\tvariables[ key ] = variable;\n\n\t\t\t\tif ( variable.type === fontVariablePropTypeUtil.key ) {\n\t\t\t\t\tfontEnqueue( variable.value );\n\t\t\t\t}\n\n\t\t\t\thasChanges = true;\n\t\t\t}\n\t\t}\n\n\t\treturn hasChanges;\n\t};\n\n\tconst fontEnqueue = ( value: string ): void => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tenqueueFont( value );\n\t\t} catch {\n\t\t\t// This prevents font enqueueing failures from breaking variable updates\n\t\t}\n\t};\n\n\tconst update = ( updatedVars: Variables ) => {\n\t\tif ( applyUpdates( updatedVars ) ) {\n\t\t\tnotify();\n\t\t}\n\t};\n\n\treturn {\n\t\tsubscribe,\n\t\tupdate,\n\t};\n};\n","import { createStyleVariablesRepository } from './create-style-variables-repository';\n\nexport const styleVariablesRepository = createStyleVariablesRepository();\n","import { type TVariable } from '../../storage';\n\nexport const resolveCssVariable = ( id: string, variable: TVariable ) => {\n\tlet name = id;\n\tlet fallbackValue = '';\n\n\tif ( variable ) {\n\t\tfallbackValue = variable.value;\n\t}\n\n\tif ( variable && ! variable.deleted ) {\n\t\tname = variable.label;\n\t}\n\n\tif ( ! name.trim() ) {\n\t\treturn null;\n\t}\n\n\tif ( ! fallbackValue.trim() ) {\n\t\treturn `var(--${ name })`;\n\t}\n\n\treturn `var(--${ name }, ${ fallbackValue })`;\n};\n","import { createTransformer } from '@elementor/editor-canvas';\n\nimport { service } from '../service';\nimport { resolveCssVariable } from './utils/resolve-css-variable';\n\nexport const variableTransformer = createTransformer( ( id: string ) => {\n\tconst variables = service.variables();\n\n\tif ( ! variables[ id ] ) {\n\t\treturn null;\n\t}\n\n\treturn resolveCssVariable( id, variables[ id ] );\n} );\n","import { createVariableTypeRegistry } from './create-variable-type-registry';\n\nexport const { registerVariableType, getVariableType, hasVariableType } = createVariableTypeRegistry();\n","import * as React from 'react';\nimport { createElement, useState } from 'react';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tIconButton,\n\tStack,\n\ttype SxProps,\n\tTable,\n\tTableBody,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type TVariablesList } from '../../storage';\nimport { getVariableType } from '../../variables-registry/variable-type-registry';\nimport { LabelField } from '../fields/label-field';\nimport { VariableEditMenu, type VariableManagerMenuAction } from './variable-edit-menu';\nimport { VariableEditableCell } from './variable-editable-cell';\nimport { VariableTableCell } from './variable-table-cell';\n\ntype Props = {\n\tmenuActions: VariableManagerMenuAction[];\n\tvariables: TVariablesList;\n\tonChange: ( variables: TVariablesList ) => void;\n};\n\nexport const VariablesManagerTable = ( { menuActions, variables, onChange: handleOnChange }: Props ) => {\n\tconst [ ids, setIds ] = useState< string[] >( Object.keys( variables ) );\n\tconst rows = ids\n\t\t.filter( ( id ) => ! variables[ id ].deleted )\n\t\t.map( ( id ) => {\n\t\t\tconst variable = variables[ id ];\n\t\t\tconst variableType = getVariableType( variable.type );\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\tname: variable.label,\n\t\t\t\tvalue: variable.value,\n\t\t\t\ttype: variable.type,\n\t\t\t\t...variableType,\n\t\t\t};\n\t\t} );\n\n\tconst tableSX: SxProps = {\n\t\tminWidth: 250,\n\t\ttableLayout: 'fixed',\n\t};\n\n\treturn (\n\t\t<TableContainer sx={ { overflow: 'initial' } }>\n\t\t\t<Table sx={ tableSX } aria-label=\"Variables manager list with drag and drop reordering\" stickyHeader>\n\t\t\t\t<TableHead>\n\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t<VariableTableCell isHeader noPadding width={ 10 } maxWidth={ 10 } />\n\t\t\t\t\t\t<VariableTableCell isHeader>{ __( 'Name', 'elementor' ) }</VariableTableCell>\n\t\t\t\t\t\t<VariableTableCell isHeader>{ __( 'Value', 'elementor' ) }</VariableTableCell>\n\t\t\t\t\t\t<VariableTableCell isHeader noPadding width={ 16 } maxWidth={ 16 } />\n\t\t\t\t\t</TableRow>\n\t\t\t\t</TableHead>\n\t\t\t\t<TableBody>\n\t\t\t\t\t<UnstableSortableProvider\n\t\t\t\t\t\tvalue={ ids }\n\t\t\t\t\t\tonChange={ setIds }\n\t\t\t\t\t\tvariant=\"static\"\n\t\t\t\t\t\trestrictAxis\n\t\t\t\t\t\tdragOverlay={ ( { children: dragOverlayChildren, ...dragOverlayProps } ) => (\n\t\t\t\t\t\t\t<Table sx={ tableSX } { ...dragOverlayProps }>\n\t\t\t\t\t\t\t\t<TableBody>{ dragOverlayChildren }</TableBody>\n\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rows.map( ( row ) => (\n\t\t\t\t\t\t\t<UnstableSortableItem\n\t\t\t\t\t\t\t\tkey={ row.id }\n\t\t\t\t\t\t\t\tid={ row.id }\n\t\t\t\t\t\t\t\trender={ ( {\n\t\t\t\t\t\t\t\t\titemProps,\n\t\t\t\t\t\t\t\t\tshowDropIndication,\n\t\t\t\t\t\t\t\t\ttriggerProps,\n\t\t\t\t\t\t\t\t\titemStyle,\n\t\t\t\t\t\t\t\t\ttriggerStyle,\n\t\t\t\t\t\t\t\t\tisDragged,\n\t\t\t\t\t\t\t\t\tdropPosition,\n\t\t\t\t\t\t\t\t\tsetTriggerRef,\n\t\t\t\t\t\t\t\t\tisDragOverlay,\n\t\t\t\t\t\t\t\t\tisSorting,\n\t\t\t\t\t\t\t\t\tindex,\n\t\t\t\t\t\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\t\t\t\t\t\tconst showIndicationBefore = showDropIndication && dropPosition === 'before';\n\t\t\t\t\t\t\t\t\tconst showIndicationAfter = showDropIndication && dropPosition === 'after';\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\t\t{ ...itemProps }\n\t\t\t\t\t\t\t\t\t\t\tselected={ isDragged }\n\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t...( showIndicationBefore && {\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& td, & th': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderTop: '2px solid',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderTopColor: 'primary.main',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t\t\t\t\t\t...( showIndicationAfter && {\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& td, & th': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottom: '2px solid',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottomColor: 'primary.main',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t\t\t\t\t\t'& [role=\"toolbar\"], & [draggable]': {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t'&:hover, &:focus-within': {\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'action.hover',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& [role=\"toolbar\"], & [draggable]': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { ...itemStyle, ...triggerStyle } }\n\t\t\t\t\t\t\t\t\t\t\tdisableDivider={ isDragOverlay || index === rows.length - 1 }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell noPadding width={ 10 } maxWidth={ 10 }>\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tref={ setTriggerRef }\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...triggerProps }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ isSorting }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdraggable\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<GripVerticalIcon fontSize=\"inherit\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditableCell\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( value !== row.name ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOnChange( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...variables,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ row.id ]: { ...variables[ row.id ], label: value },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tprefixElement={ createElement( row.icon, { fontSize: 'inherit' } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\teditableElement={ ( { value, onChange } ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid={ 'variable-label-' + row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfocusOnShow\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { border: '4px solid transparent' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</EllipsisWithTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</VariableEditableCell>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditableCell\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( value !== row.value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOnChange( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...variables,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ row.id ]: { ...variables[ row.id ], value },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\teditableElement={ row.valueField }\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.startIcon && row.startIcon( { value: row.value } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { border: '4px solid transparent' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</EllipsisWithTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</VariableEditableCell>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\tnoPadding\n\t\t\t\t\t\t\t\t\t\t\t\twidth={ 16 }\n\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth={ 16 }\n\t\t\t\t\t\t\t\t\t\t\t\tsx={ { paddingInlineEnd: 1 } }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Stack role=\"toolbar\" direction=\"row\" justifyContent=\"flex-end\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditMenu\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmenuActions={ menuActions }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ isSorting }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemId={ row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</UnstableSortableProvider>\n\t\t\t\t</TableBody>\n\t\t\t</Table>\n\t\t</TableContainer>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nimport { validateLabel, VARIABLE_LABEL_MAX_LENGTH } from '../../utils/validations';\nfunction isLabelEqual( a: string, b: string ) {\n\treturn a.trim().toLowerCase() === b.trim().toLowerCase();\n}\n\ntype LabelErrorProps = {\n\tvalue: string;\n\tmessage: string;\n};\n\nexport const useLabelError = ( initialError?: LabelErrorProps ) => {\n\tconst [ error, setError ] = useState< LabelErrorProps >( initialError ?? { value: '', message: '' } );\n\n\treturn {\n\t\tlabelFieldError: error,\n\t\tsetLabelFieldError: setError,\n\t};\n};\n\ntype LabelFieldProps = {\n\tvalue: string;\n\terror?: LabelErrorProps;\n\tonChange: ( value: string ) => void;\n\tid?: string;\n\tonErrorChange?: ( errorMsg: string ) => void;\n\tsize?: TextFieldProps[ 'size' ];\n\tfocusOnShow?: boolean;\n};\n\nexport const LabelField = ( {\n\tvalue,\n\terror,\n\tonChange,\n\tid,\n\tonErrorChange,\n\tsize = 'tiny',\n\tfocusOnShow = false,\n}: LabelFieldProps ) => {\n\tconst [ label, setLabel ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetLabel( newValue );\n\n\t\tconst errorMsg = validateLabel( newValue );\n\n\t\tsetErrorMessage( errorMsg );\n\t\tonErrorChange?.( errorMsg );\n\n\t\tonChange( isLabelEqual( newValue, error?.value ?? '' ) || errorMsg ? '' : newValue );\n\t};\n\n\tlet errorMsg = errorMessage;\n\tif ( isLabelEqual( label, error?.value ?? '' ) && error?.message ) {\n\t\terrorMsg = error.message;\n\t}\n\n\treturn (\n\t\t<TextField\n\t\t\tid={ id }\n\t\t\tsize={ size }\n\t\t\tfullWidth\n\t\t\tvalue={ label }\n\t\t\terror={ !! errorMsg }\n\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\tinputProps={ { maxLength: VARIABLE_LABEL_MAX_LENGTH } }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\tautoFocus={ focusOnShow }\n\t\t/>\n\t);\n};\n","import { __ } from '@wordpress/i18n';\n\nexport const ERROR_MESSAGES = {\n\tMISSING_VARIABLE_NAME: __( 'Give your variable a name.', 'elementor' ),\n\tMISSING_VARIABLE_VALUE: __( 'Add a value to complete your variable.', 'elementor' ),\n\tINVALID_CHARACTERS: __( 'Use letters, numbers, dashes (-), or underscores (_) for the name.', 'elementor' ),\n\tNO_NON_SPECIAL_CHARACTER: __( 'Names have to include at least one non-special character.', 'elementor' ),\n\tVARIABLE_LABEL_MAX_LENGTH: __( 'Keep names up to 50 characters.', 'elementor' ),\n\tDUPLICATED_LABEL: __( 'This variable name already exists. Please choose a unique name.', 'elementor' ),\n\tUNEXPECTED_ERROR: __( 'There was a glitch. Try saving your variable again.', 'elementor' ),\n} as const;\n\nexport const VARIABLE_LABEL_MAX_LENGTH = 50;\n\ntype ErrorResponse = {\n\tresponse?: {\n\t\tdata?: {\n\t\t\tcode?: string;\n\t\t};\n\t};\n};\n\nexport type MappedError = {\n\tfield: string;\n\tmessage: string;\n};\n\nexport const mapServerError = ( error: ErrorResponse ): MappedError | undefined => {\n\tif ( error?.response?.data?.code === 'duplicated_label' ) {\n\t\treturn {\n\t\t\tfield: 'label',\n\t\t\tmessage: ERROR_MESSAGES.DUPLICATED_LABEL,\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nexport const validateLabel = ( name: string ): string => {\n\tif ( ! name.trim() ) {\n\t\treturn ERROR_MESSAGES.MISSING_VARIABLE_NAME;\n\t}\n\n\tconst allowedChars = /^[a-zA-Z0-9_-]+$/;\n\tif ( ! allowedChars.test( name ) ) {\n\t\treturn ERROR_MESSAGES.INVALID_CHARACTERS;\n\t}\n\n\tconst hasAlphanumeric = /[a-zA-Z0-9]/;\n\tif ( ! hasAlphanumeric.test( name ) ) {\n\t\treturn ERROR_MESSAGES.NO_NON_SPECIAL_CHARACTER;\n\t}\n\n\tif ( VARIABLE_LABEL_MAX_LENGTH < name.length ) {\n\t\treturn ERROR_MESSAGES.VARIABLE_LABEL_MAX_LENGTH;\n\t}\n\n\treturn '';\n};\n\nexport const labelHint = ( name: string ): string => {\n\tconst hintThreshold = VARIABLE_LABEL_MAX_LENGTH * 0.8 - 1;\n\tif ( hintThreshold < name.length ) {\n\t\treturn ERROR_MESSAGES.VARIABLE_LABEL_MAX_LENGTH;\n\t}\n\n\treturn '';\n};\n\nexport const validateValue = ( value: string ): string => {\n\tif ( ! value.trim() ) {\n\t\treturn ERROR_MESSAGES.MISSING_VARIABLE_VALUE;\n\t}\n\n\treturn '';\n};\n","import * as React from 'react';\nimport { createElement } from 'react';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport { bindMenu, bindTrigger, IconButton, Menu, MenuItem, type SvgIconProps, usePopupState } from '@elementor/ui';\n\nexport type VariableManagerMenuAction = {\n\tname: string;\n\ticon: React.ForwardRefExoticComponent< Omit< SvgIconProps, 'ref' > & React.RefAttributes< SVGSVGElement > >;\n\tcolor: string;\n\tonClick: ( id: string ) => void;\n};\n\ntype VariableEditMenuProps = {\n\tmenuActions: VariableManagerMenuAction[];\n\tdisabled?: boolean;\n\titemId: string;\n};\n\nexport const VariableEditMenu = ( { menuActions, disabled, itemId }: VariableEditMenuProps ) => {\n\tconst menuState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton { ...bindTrigger( menuState ) } disabled={ disabled } size=\"tiny\">\n\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\n\t\t\t<Menu\n\t\t\t\tdisablePortal\n\t\t\t\tMenuListProps={ {\n\t\t\t\t\tdense: true,\n\t\t\t\t} }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\televation: 6,\n\t\t\t\t} }\n\t\t\t\t{ ...bindMenu( menuState ) }\n\t\t\t\tanchorEl={ menuState.anchorEl }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\topen={ menuState.isOpen }\n\t\t\t\tonClose={ menuState.close }\n\t\t\t>\n\t\t\t\t{ menuActions.map( ( action ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ action.name }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\taction.onClick?.( itemId );\n\t\t\t\t\t\t\tmenuState.close();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\tcolor: action.color,\n\t\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ action.icon &&\n\t\t\t\t\t\t\tcreateElement( action.icon, {\n\t\t\t\t\t\t\t\tfontSize: 'inherit',\n\t\t\t\t\t\t\t} ) }{ ' ' }\n\t\t\t\t\t\t{ action.name }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { ClickAwayListener, Stack } from '@elementor/ui';\n\nimport { type ValueFieldProps } from '../../variables-registry/create-variable-type-registry';\n\nexport const VariableEditableCell = ( {\n\tinitialValue,\n\tchildren,\n\teditableElement,\n\tonChange,\n\tprefixElement,\n}: {\n\tinitialValue: string;\n\tchildren: React.ReactNode;\n\teditableElement: ( { value, onChange, onValidationChange }: ValueFieldProps ) => JSX.Element;\n\tonChange: ( newValue: string ) => void;\n\tprefixElement?: React.ReactNode;\n} ) => {\n\tconst [ value, setValue ] = useState( initialValue );\n\tconst [ isEditing, setIsEditing ] = useState( false );\n\n\tconst handleDoubleClick = () => {\n\t\tsetIsEditing( true );\n\t};\n\n\tconst handleSave = () => {\n\t\tonChange( value );\n\t\tsetIsEditing( false );\n\t};\n\n\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLDivElement > ) => {\n\t\tif ( event.key === 'Enter' ) {\n\t\t\thandleSave();\n\t\t} else if ( event.key === 'Escape' ) {\n\t\t\tsetIsEditing( false );\n\t\t}\n\t\tif ( event.key === ' ' && ! isEditing ) {\n\t\t\tevent.preventDefault();\n\t\t\tsetIsEditing( true );\n\t\t}\n\t};\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetValue( newValue );\n\t};\n\n\tconst editableContent = editableElement( { value, onChange: handleChange } );\n\n\tif ( isEditing ) {\n\t\treturn (\n\t\t\t<ClickAwayListener onClickAway={ handleSave }>\n\t\t\t\t<Stack\n\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\tonDoubleClick={ handleDoubleClick }\n\t\t\t\t\tonKeyDown={ handleKeyDown }\n\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\trole=\"button\"\n\t\t\t\t\taria-label=\"Double click or press Space to edit\"\n\t\t\t\t>\n\t\t\t\t\t{ prefixElement }\n\t\t\t\t\t{ editableContent }\n\t\t\t\t</Stack>\n\t\t\t</ClickAwayListener>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tgap={ 1 }\n\t\t\tonDoubleClick={ handleDoubleClick }\n\t\t\tonKeyDown={ handleKeyDown }\n\t\t\ttabIndex={ 0 }\n\t\t\trole=\"button\"\n\t\t\taria-label=\"Double click or press Space to edit\"\n\t\t>\n\t\t\t{ prefixElement }\n\t\t\t{ children }\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { type SxProps, TableCell } from '@elementor/ui';\n\ntype VariableTableCellProps = {\n\tchildren?: React.ReactNode;\n\tisHeader?: boolean;\n\twidth?: number;\n\tmaxWidth?: number;\n\talign?: 'left' | 'right' | 'center';\n\tnoPadding?: boolean;\n\tsx?: SxProps;\n};\n\nexport const VariableTableCell = ( {\n\tchildren,\n\tisHeader,\n\twidth,\n\tmaxWidth,\n\talign,\n\tnoPadding,\n\tsx,\n}: VariableTableCellProps ) => {\n\tconst baseSx: SxProps = {\n\t\tmaxWidth: maxWidth ?? 150,\n\t\tcursor: 'initial',\n\t\ttypography: 'caption',\n\t\t...( isHeader && { color: 'text.primary', fontWeight: 'bold' } ),\n\t\t...( isHeader && ! noPadding && { padding: '10px 16px' } ),\n\t\t...( width && { width } ),\n\t\t...sx,\n\t};\n\n\treturn (\n\t\t<TableCell size=\"small\" padding={ noPadding ? 'none' : undefined } align={ align } sx={ baseSx }>\n\t\t\t{ children }\n\t\t</TableCell>\n\t);\n};\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type TransformablePropValue } from '@elementor/editor-props';\n\nimport { AssignedVariable } from '../components/ui/variable/assigned-variable';\nimport { DeletedVariable } from '../components/ui/variable/deleted-variable';\nimport { MismatchVariable } from '../components/ui/variable/mismatch-variable';\nimport { MissingVariable } from '../components/ui/variable/missing-variable';\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport const VariableControl = () => {\n\tconst boundProp = useBoundProp();\n\n\tconst boundPropValue = boundProp.value as TransformablePropValue< string, string >;\n\n\tconst assignedVariable = useVariable( boundPropValue?.value );\n\n\tif ( ! assignedVariable ) {\n\t\treturn <MissingVariable />;\n\t}\n\n\tconst { $$type: propTypeKey } = boundPropValue;\n\n\tif ( assignedVariable?.deleted ) {\n\t\treturn <DeletedVariable variable={ assignedVariable } propTypeKey={ propTypeKey } />;\n\t}\n\n\tconst { isCompatible } = getVariableType( assignedVariable.type );\n\n\tif ( isCompatible && ! isCompatible( boundProp?.propType, assignedVariable ) ) {\n\t\treturn <MismatchVariable variable={ assignedVariable } />;\n\t}\n\n\treturn <AssignedVariable variable={ assignedVariable } propTypeKey={ propTypeKey } />;\n};\n","import { useId, useRef } from 'react';\nimport * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeKey } from '@elementor/editor-props';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Box, Popover, usePopupState } from '@elementor/ui';\n\nimport { type Variable } from '../../../types';\nimport { createUnlinkHandler } from '../../../utils/unlink-variable';\nimport { getVariableType } from '../../../variables-registry/variable-type-registry';\nimport { VariableSelectionPopover } from '../../variable-selection-popover';\nimport { AssignedTag, SIZE } from '../tags/assigned-tag';\n\ntype Props = {\n\tpropTypeKey: PropTypeKey;\n\tvariable: Variable;\n};\n\nexport const AssignedVariable = ( { variable, propTypeKey }: Props ) => {\n\tconst { startIcon, propTypeUtil } = getVariableType( propTypeKey );\n\tconst { setValue } = useBoundProp();\n\tconst anchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-list-${ popupId }`,\n\t} );\n\n\tconst unlinkVariable = createUnlinkHandler( variable, propTypeKey, setValue );\n\n\tconst StartIcon = startIcon || ( () => null );\n\n\treturn (\n\t\t<Box ref={ anchorRef }>\n\t\t\t<AssignedTag\n\t\t\t\tlabel={ variable.label }\n\t\t\t\tstartIcon={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ColorFilterIcon fontSize={ SIZE } />\n\t\t\t\t\t\t<StartIcon value={ variable.value } />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tonUnlink={ unlinkVariable }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<VariableSelectionPopover\n\t\t\t\t\tselectedVariable={ variable }\n\t\t\t\t\tclosePopover={ popupState.close }\n\t\t\t\t\tpropTypeKey={ propTypeUtil.key }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import { type PropValue } from '@elementor/editor-props';\n\nimport { type Variable } from '../types';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport function transformValueBeforeUnlink( variable: Variable, propTypeKey: string ): string | PropValue {\n\tconst { valueTransformer } = getVariableType( propTypeKey );\n\n\tif ( valueTransformer ) {\n\t\treturn valueTransformer( variable.value );\n\t}\n\n\treturn variable.value;\n}\n\nexport function createUnlinkHandler(\n\tvariable: Variable,\n\tpropTypeKey: string,\n\tsetValue: ( value: PropValue ) => void\n): () => void {\n\treturn () => {\n\t\tconst { fallbackPropTypeUtil } = getVariableType( propTypeKey );\n\t\tconst transformedValue = transformValueBeforeUnlink( variable, propTypeKey );\n\n\t\tsetValue( fallbackPropTypeUtil.create( transformedValue ) );\n\t};\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport type { PropTypeKey } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nimport { PopoverContentRefContextProvider } from '../context/variable-selection-popover.context';\nimport { VariableTypeProvider } from '../context/variable-type-context';\nimport { usePermissions } from '../hooks/use-permissions';\nimport { type Variable } from '../types';\nimport { VariableCreation } from './variable-creation';\nimport { VariableEdit } from './variable-edit';\nimport { usePanelActions } from './variables-manager/variables-manager-panel';\nimport { VariablesSelection } from './variables-selection';\n\nconst VIEW_LIST = 'list';\nconst VIEW_ADD = 'add';\nconst VIEW_EDIT = 'edit';\n\ntype View = typeof VIEW_LIST | typeof VIEW_ADD | typeof VIEW_EDIT;\n\ntype Props = {\n\tclosePopover: () => void;\n\tselectedVariable?: Variable;\n\tpropTypeKey: PropTypeKey;\n};\n\nexport const VariableSelectionPopover = ( { closePopover, propTypeKey, selectedVariable }: Props ) => {\n\tconst [ currentView, setCurrentView ] = useState< View >( VIEW_LIST );\n\tconst [ editId, setEditId ] = useState< string >( '' );\n\tconst { open } = usePanelActions();\n\tconst onSettingsAvailable = isExperimentActive( 'e_variables_manager' )\n\t\t? () => {\n\t\t\t\topen();\n\t\t }\n\t\t: undefined;\n\n\treturn (\n\t\t<VariableTypeProvider propTypeKey={ propTypeKey }>\n\t\t\t<PopoverContentRefContextProvider>\n\t\t\t\t{ RenderView( {\n\t\t\t\t\tpropTypeKey,\n\t\t\t\t\tcurrentView,\n\t\t\t\t\tselectedVariable,\n\t\t\t\t\teditId,\n\t\t\t\t\tsetEditId,\n\t\t\t\t\tsetCurrentView,\n\t\t\t\t\tclosePopover,\n\t\t\t\t\tonSettings: onSettingsAvailable,\n\t\t\t\t} ) }\n\t\t\t</PopoverContentRefContextProvider>\n\t\t</VariableTypeProvider>\n\t);\n};\n\ntype ViewProps = {\n\tpropTypeKey: string;\n\tcurrentView: View;\n\tselectedVariable?: Variable;\n\teditId: string;\n\tsetEditId: ( id: string ) => void;\n\tsetCurrentView: ( stage: View ) => void;\n\tclosePopover: () => void;\n\tonSettings?: () => void;\n};\n\ntype Handlers = {\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonAdd?: () => void;\n\tonEdit?: ( key: string ) => void;\n\tonSettings?: () => void;\n};\n\nfunction RenderView( props: ViewProps ): React.ReactNode {\n\tconst userPermissions = usePermissions();\n\n\tconst handlers: Handlers = {\n\t\tonClose: () => {\n\t\t\tprops.closePopover();\n\t\t},\n\t\tonGoBack: () => {\n\t\t\tprops.setCurrentView( VIEW_LIST );\n\t\t},\n\t};\n\n\tif ( userPermissions.canAdd() ) {\n\t\thandlers.onAdd = () => {\n\t\t\tprops.setCurrentView( VIEW_ADD );\n\t\t};\n\t}\n\n\tif ( userPermissions.canEdit() ) {\n\t\thandlers.onEdit = ( key: string ) => {\n\t\t\tprops.setEditId( key );\n\t\t\tprops.setCurrentView( VIEW_EDIT );\n\t\t};\n\t}\n\n\tif ( userPermissions.canManageSettings() && props.onSettings ) {\n\t\thandlers.onSettings = () => {\n\t\t\tprops.closePopover();\n\t\t\tprops.onSettings?.();\n\t\t};\n\t}\n\n\tconst handleSubmitOnEdit = () => {\n\t\tif ( props?.selectedVariable?.key === props.editId ) {\n\t\t\thandlers.onClose();\n\t\t} else {\n\t\t\thandlers.onGoBack?.();\n\t\t}\n\t};\n\n\tif ( VIEW_LIST === props.currentView ) {\n\t\treturn (\n\t\t\t<VariablesSelection\n\t\t\t\tclosePopover={ handlers.onClose }\n\t\t\t\tonAdd={ handlers.onAdd }\n\t\t\t\tonEdit={ handlers.onEdit }\n\t\t\t\tonSettings={ handlers.onSettings }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( VIEW_ADD === props.currentView ) {\n\t\treturn <VariableCreation onGoBack={ handlers.onGoBack } onClose={ handlers.onClose } />;\n\t}\n\n\tif ( VIEW_EDIT === props.currentView ) {\n\t\treturn (\n\t\t\t<VariableEdit\n\t\t\t\teditId={ props.editId }\n\t\t\t\tonGoBack={ handlers.onGoBack }\n\t\t\t\tonClose={ handlers.onClose }\n\t\t\t\tonSubmit={ handleSubmitOnEdit }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, type RefObject, useContext, useState } from 'react';\nimport { Box } from '@elementor/ui';\n\nconst PopoverContentRefContext = createContext< RefObject< HTMLDivElement > | null >( null );\n\nexport const PopoverContentRefContextProvider = ( { children }: PropsWithChildren ) => {\n\tconst [ anchorRef, setAnchorRef ] = useState< RefObject< HTMLDivElement > | null >( null );\n\n\treturn (\n\t\t<PopoverContentRefContext.Provider value={ anchorRef }>\n\t\t\t<Box ref={ setAnchorRef }>{ children }</Box>\n\t\t</PopoverContentRefContext.Provider>\n\t);\n};\n\nexport const usePopoverContentRef = () => {\n\treturn useContext( PopoverContentRefContext );\n};\n","import { useCurrentUserCapabilities } from '@elementor/editor-current-user';\n\nexport const usePermissions = () => {\n\tconst { canUser } = useCurrentUserCapabilities();\n\n\treturn {\n\t\tcanAssign: () => canUser( 'edit_posts' ),\n\t\tcanUnlink: () => canUser( 'edit_posts' ),\n\t\tcanAdd: () => canUser( 'manage_options' ),\n\t\tcanDelete: () => canUser( 'manage_options' ),\n\t\tcanEdit: () => canUser( 'manage_options' ),\n\t\tcanRestore: () => canUser( 'manage_options' ),\n\t\tcanManageSettings: () => canUser( 'manage_options' ),\n\t};\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { ArrowLeftIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { useInitialValue } from '../hooks/use-initial-value';\nimport { createVariable } from '../hooks/use-prop-variables';\nimport { trackVariableEvent } from '../utils/tracking';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tonGoBack?: () => void;\n\tonClose: () => void;\n};\n\nexport const VariableCreation = ( { onGoBack, onClose }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType, propTypeUtil } = useVariableType();\n\n\tconst { setValue: setVariable, path } = useBoundProp( propTypeUtil );\n\tconst { propType } = useBoundProp();\n\n\tconst initialValue = useInitialValue();\n\n\tconst [ value, setValue ] = useState( initialValue );\n\tconst [ label, setLabel ] = useState( '' );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\n\tconst resetFields = () => {\n\t\tsetValue( '' );\n\t\tsetLabel( '' );\n\t\tsetErrorMessage( '' );\n\t\tsetValueFieldError( '' );\n\t};\n\n\tconst closePopover = () => {\n\t\tresetFields();\n\t\tonClose();\n\t};\n\n\tconst handleCreateAndTrack = () => {\n\t\tcreateVariable( {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t\ttype: propTypeUtil.key,\n\t\t} )\n\t\t\t.then( ( key ) => {\n\t\t\t\tsetVariable( key );\n\t\t\t\tclosePopover();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'save',\n\t\t} );\n\t};\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<PopoverBody height=\"auto\">\n\t\t\t<PopoverHeader\n\t\t\t\ticon={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onGoBack && (\n\t\t\t\t\t\t\t<IconButton size={ SIZE } aria-label={ __( 'Go Back', 'elementor' ) } onClick={ onGoBack }>\n\t\t\t\t\t\t\t\t<ArrowLeftIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<VariableIcon fontSize={ SIZE } />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\ttitle={ __( 'Create variable', 'elementor' ) }\n\t\t\t\tonClose={ closePopover }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t<FormField\n\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t>\n\t\t\t\t\t<LabelField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\tmessage: errorMsg,\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</FormField>\n\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t<Typography variant=\"h5\">\n\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Typography>\n\t\t\t\t</FormField>\n\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t</PopoverContent>\n\n\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t<Button size=\"small\" variant=\"contained\" disabled={ isSubmitDisabled } onClick={ handleCreateAndTrack }>\n\t\t\t\t\t{ __( 'Create', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t</CardActions>\n\t\t</PopoverBody>\n\t);\n};\n","import { useBoundProp } from '@elementor/editor-controls';\n\nimport { hasVariableType } from '../variables-registry/variable-type-registry';\nimport { useVariable } from './use-prop-variables';\n\ntype PropValue = {\n\t$$type: string;\n\tvalue: string;\n};\n\nexport const useInitialValue = () => {\n\tconst { value: initial }: { value: PropValue } = useBoundProp();\n\n\tconst hasAssignedVariable = hasVariableType( initial?.$$type ) && Boolean( initial?.value );\n\tconst variable = useVariable( hasAssignedVariable ? initial.value : '' );\n\n\tif ( hasAssignedVariable ) {\n\t\treturn variable ? variable.value : '';\n\t}\n\n\treturn initial?.value ?? '';\n};\n","type VariableEventData = {\n\tvarType: string;\n\tcontrolPath: string;\n\taction: 'open' | 'add' | 'connect' | 'save';\n};\n\nexport const trackVariableEvent = ( { varType, controlPath, action }: VariableEventData ) => {\n\tconst extendedWindow = window as unknown as Window & {\n\t\telementorCommon?: {\n\t\t\teventsManager?: {\n\t\t\t\tdispatchEvent: ( name: string, data: Record< string, string > ) => void;\n\t\t\t\tconfig?: {\n\t\t\t\t\tlocations: Record< string, string >;\n\t\t\t\t\tsecondaryLocations: Record< string, string >;\n\t\t\t\t\tnames: {\n\t\t\t\t\t\tvariables?: Record< string, string >;\n\t\t\t\t\t};\n\t\t\t\t\ttriggers: Record< string, string >;\n\t\t\t\t\telements?: Record< string, string >;\n\t\t\t\t};\n\t\t\t};\n\t\t};\n\t};\n\n\tconst config = extendedWindow?.elementorCommon?.eventsManager?.config;\n\tif ( ! config?.names?.variables?.[ action ] ) {\n\t\treturn;\n\t}\n\n\tconst name = config.names.variables[ action ];\n\textendedWindow.elementorCommon?.eventsManager?.dispatchEvent( name, {\n\t\tlocation: config.locations.variables,\n\t\tsecondaryLocation: config.secondaryLocations.variablesPopover,\n\t\ttrigger: config.triggers.click,\n\t\tvar_type: varType,\n\t\tcontrol_path: controlPath,\n\t\taction_type: name,\n\t} );\n};\n","import * as React from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\n\ntype Props = PropsWithChildren< {\n\tid?: string;\n\tlabel: string;\n\terrorMsg?: string;\n\tnoticeMsg?: string;\n} >;\n\nexport const FormField = ( { id, label, errorMsg, noticeMsg, children }: Props ) => {\n\treturn (\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<FormLabel htmlFor={ id } size=\"tiny\">\n\t\t\t\t\t{ label }\n\t\t\t\t</FormLabel>\n\t\t\t</Grid>\n\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t{ children }\n\t\t\t\t{ errorMsg && <FormHelperText error>{ errorMsg }</FormHelperText> }\n\t\t\t\t{ noticeMsg && <FormHelperText>{ noticeMsg }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { useSuppressedMessage } from '@elementor/editor-current-user';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { ArrowLeftIcon, TrashIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { usePermissions } from '../hooks/use-permissions';\nimport { deleteVariable, updateVariable, useVariable } from '../hooks/use-prop-variables';\nimport { styleVariablesRepository } from '../style-variables-repository';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { DeleteConfirmationDialog } from './ui/delete-confirmation-dialog';\nimport { EDIT_CONFIRMATION_DIALOG_ID, EditConfirmationDialog } from './ui/edit-confirmation-dialog';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\teditId: string;\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const VariableEdit = ( { onClose, onGoBack, onSubmit, editId }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType, propTypeUtil } = useVariableType();\n\n\tconst { setValue: notifyBoundPropChange, value: assignedValue } = useBoundProp( propTypeUtil );\n\tconst { propType } = useBoundProp();\n\tconst [ isMessageSuppressed, suppressMessage ] = useSuppressedMessage( EDIT_CONFIRMATION_DIALOG_ID );\n\tconst [ deleteConfirmation, setDeleteConfirmation ] = useState( false );\n\tconst [ editConfirmation, setEditConfirmation ] = useState( false );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\tconst variable = useVariable( editId );\n\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global ${ variableType } variable not found` );\n\t}\n\n\tconst userPermissions = usePermissions();\n\n\tconst [ value, setValue ] = useState( () => variable.value );\n\tconst [ label, setLabel ] = useState( () => variable.label );\n\n\tuseEffect( () => {\n\t\tstyleVariablesRepository.update( {\n\t\t\t[ editId ]: {\n\t\t\t\t...variable,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t[ editId ]: { ...variable },\n\t\t\t} );\n\t\t};\n\t}, [ editId, value, variable ] );\n\n\tconst handleUpdate = () => {\n\t\tif ( isMessageSuppressed ) {\n\t\t\thandleSaveVariable();\n\t\t} else {\n\t\t\tsetEditConfirmation( true );\n\t\t}\n\t};\n\n\tconst handleSaveVariable = () => {\n\t\tupdateVariable( editId, {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t} )\n\t\t\t.then( () => {\n\t\t\t\tmaybeTriggerBoundPropChange();\n\t\t\t\tonSubmit?.();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\t};\n\n\tconst handleDelete = () => {\n\t\tdeleteVariable( editId ).then( () => {\n\t\t\tmaybeTriggerBoundPropChange();\n\t\t\tonSubmit?.();\n\t\t} );\n\t};\n\n\tconst maybeTriggerBoundPropChange = () => {\n\t\tif ( editId === assignedValue ) {\n\t\t\tnotifyBoundPropChange( editId );\n\t\t}\n\t};\n\n\tconst handleDeleteConfirmation = () => {\n\t\tsetDeleteConfirmation( true );\n\t};\n\n\tconst closeDeleteDialog = () => () => {\n\t\tsetDeleteConfirmation( false );\n\t};\n\n\tconst closeEditDialog = () => () => {\n\t\tsetEditConfirmation( false );\n\t};\n\n\tconst actions = [];\n\n\tif ( userPermissions.canDelete() ) {\n\t\tactions.push(\n\t\t\t<IconButton\n\t\t\t\tkey=\"delete\"\n\t\t\t\tsize={ SIZE }\n\t\t\t\taria-label={ __( 'Delete', 'elementor' ) }\n\t\t\t\tonClick={ handleDeleteConfirmation }\n\t\t\t>\n\t\t\t\t<TrashIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t);\n\t}\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn value === variable.value && label === variable.label;\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<>\n\t\t\t<PopoverBody height=\"auto\">\n\t\t\t\t<PopoverHeader\n\t\t\t\t\ttitle={ __( 'Edit variable', 'elementor' ) }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ onGoBack && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Go Back', 'elementor' ) }\n\t\t\t\t\t\t\t\t\tonClick={ onGoBack }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ArrowLeftIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<VariableIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\tactions={ actions }\n\t\t\t\t/>\n\n\t\t\t\t<Divider />\n\n\t\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\t\tmessage: errorMsg,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t\t<Typography variant=\"h5\">\n\t\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</FormField>\n\n\t\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t\t</PopoverContent>\n\n\t\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t\t<Button size=\"small\" variant=\"contained\" disabled={ isSubmitDisabled } onClick={ handleUpdate }>\n\t\t\t\t\t\t{ __( 'Save', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</PopoverBody>\n\n\t\t\t{ deleteConfirmation && (\n\t\t\t\t<DeleteConfirmationDialog\n\t\t\t\t\topen\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonConfirm={ handleDelete }\n\t\t\t\t\tcloseDialog={ closeDeleteDialog() }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ editConfirmation && ! isMessageSuppressed && (\n\t\t\t\t<EditConfirmationDialog\n\t\t\t\t\tcloseDialog={ closeEditDialog() }\n\t\t\t\t\tonConfirm={ handleSaveVariable }\n\t\t\t\t\tonSuppressMessage={ suppressMessage }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { AlertOctagonFilledIcon } from '@elementor/icons';\nimport {\n\tButton,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst TITLE_ID = 'delete-variable-dialog';\n\nexport const DeleteConfirmationDialog = ( {\n\topen,\n\tlabel,\n\tcloseDialog,\n\tonConfirm,\n}: {\n\topen: boolean;\n\tlabel: string;\n\tcloseDialog: () => void;\n\tonConfirm: () => void;\n} ) => {\n\treturn (\n\t\t<Dialog open={ open } onClose={ closeDialog } aria-labelledby={ TITLE_ID } maxWidth=\"xs\">\n\t\t\t<DialogTitle id={ TITLE_ID } display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { lineHeight: 1 } }>\n\t\t\t\t<AlertOctagonFilledIcon color=\"error\" />\n\t\t\t\t{ __( 'Delete this variable?', 'elementor' ) }\n\t\t\t</DialogTitle>\n\t\t\t<DialogContent>\n\t\t\t\t<DialogContentText variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __( 'All elements using', 'elementor' ) }\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t<Typography variant=\"subtitle2\" component=\"span\" sx={ { lineBreak: 'anywhere' } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t{ __( 'will keep their current values, but the variable itself will be removed.', 'elementor' ) }\n\t\t\t\t</DialogContentText>\n\t\t\t</DialogContent>\n\t\t\t<DialogActions>\n\t\t\t\t<Button color=\"secondary\" onClick={ closeDialog }>\n\t\t\t\t\t{ __( 'Not now', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"contained\" color=\"error\" onClick={ onConfirm }>\n\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t</DialogActions>\n\t\t</Dialog>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport {\n\tButton,\n\tCheckbox,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n\tFormControlLabel,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EDIT_CONFIRMATION_DIALOG_ID = 'edit-confirmation-dialog';\n\nexport const EditConfirmationDialog = ( {\n\tcloseDialog,\n\tonConfirm,\n\tonSuppressMessage,\n}: {\n\tcloseDialog: () => void;\n\tonConfirm?: () => void;\n\tonSuppressMessage?: () => void;\n} ) => {\n\tconst [ dontShowAgain, setDontShowAgain ] = useState( false );\n\n\tconst handleSave = () => {\n\t\tif ( dontShowAgain ) {\n\t\t\tonSuppressMessage?.();\n\t\t}\n\t\tonConfirm?.();\n\t};\n\n\treturn (\n\t\t<Dialog open onClose={ closeDialog } maxWidth=\"xs\">\n\t\t\t<DialogTitle display=\"flex\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t<AlertTriangleFilledIcon color=\"secondary\" />\n\t\t\t\t{ __( 'Changes to variables go live right away.', 'elementor' ) }\n\t\t\t</DialogTitle>\n\t\t\t<DialogContent>\n\t\t\t\t<DialogContentText variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t\"Don't worry - all other changes you make will wait until you publish your site.\",\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</DialogContentText>\n\t\t\t</DialogContent>\n\t\t\t<DialogActions sx={ { justifyContent: 'space-between', alignItems: 'center' } }>\n\t\t\t\t<FormControlLabel\n\t\t\t\t\tcontrol={\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={ dontShowAgain }\n\t\t\t\t\t\t\tonChange={ ( event: React.ChangeEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\t\t\tsetDontShowAgain( event.target.checked )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tlabel={ <Typography variant=\"body2\">{ __( \"Don't show me again\", 'elementor' ) }</Typography> }\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Button color=\"secondary\" onClick={ closeDialog }>\n\t\t\t\t\t\t{ __( 'Keep editing', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"contained\" color=\"secondary\" onClick={ handleSave } sx={ { ml: 1 } }>\n\t\t\t\t\t\t{ __( 'Save', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</DialogActions>\n\t\t</Dialog>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader, PopoverMenuList, PopoverSearch, type VirtualizedItem } from '@elementor/editor-ui';\nimport { ColorFilterIcon, PlusIcon, SettingsIcon } from '@elementor/icons';\nimport { Divider, IconButton } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { useFilteredVariables } from '../hooks/use-prop-variables';\nimport { type ExtendedVirtualizedItem } from '../types';\nimport { trackVariableEvent } from '../utils/tracking';\nimport { MenuItemContent } from './ui/menu-item-content';\nimport { NoSearchResults } from './ui/no-search-results';\nimport { NoVariables } from './ui/no-variables';\nimport { VariablesStyledMenuList } from './ui/styled-menu-list';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tclosePopover: () => void;\n\tonAdd?: () => void;\n\tonEdit?: ( key: string ) => void;\n\tonSettings?: () => void;\n};\n\nexport const VariablesSelection = ( { closePopover, onAdd, onEdit, onSettings }: Props ) => {\n\tconst { icon: VariableIcon, startIcon, variableType, propTypeUtil } = useVariableType();\n\n\tconst { value: variable, setValue: setVariable, path } = useBoundProp( propTypeUtil );\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst {\n\t\tlist: variables,\n\t\thasMatches: hasSearchResults,\n\t\tisSourceNotEmpty: hasVariables,\n\t} = useFilteredVariables( searchValue, propTypeUtil.key );\n\n\tconst handleSetVariable = ( key: string ) => {\n\t\tsetVariable( key );\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'connect',\n\t\t} );\n\t\tclosePopover();\n\t};\n\n\tconst onAddAndTrack = () => {\n\t\tonAdd?.();\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'add',\n\t\t} );\n\t};\n\n\tconst actions = [];\n\n\tif ( onAdd ) {\n\t\tactions.push(\n\t\t\t<IconButton key=\"add\" size={ SIZE } onClick={ onAddAndTrack }>\n\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t);\n\t}\n\n\tif ( onSettings ) {\n\t\tactions.push(\n\t\t\t<IconButton key=\"settings\" size={ SIZE } onClick={ onSettings }>\n\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t);\n\t}\n\n\tconst StartIcon = startIcon || ( () => <VariableIcon fontSize={ SIZE } /> );\n\n\tconst items: ExtendedVirtualizedItem[] = variables.map( ( { value, label, key } ) => ( {\n\t\ttype: 'item' as const,\n\t\tvalue: key,\n\t\tlabel,\n\t\ticon: <StartIcon value={ value } />,\n\t\tsecondaryText: value,\n\t\tonEdit: onEdit ? () => onEdit?.( key ) : undefined,\n\t} ) );\n\n\tconst handleSearch = ( search: string ) => {\n\t\tsetSearchValue( search );\n\t};\n\n\tconst handleClearSearch = () => {\n\t\tsetSearchValue( '' );\n\t};\n\n\tconst noVariableTitle = sprintf(\n\t\t/* translators: %s: Variable Type. */\n\t\t__( 'Create your first %s variable', 'elementor' ),\n\t\tvariableType\n\t);\n\n\treturn (\n\t\t<PopoverBody>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Variables', 'elementor' ) }\n\t\t\t\ticon={ <ColorFilterIcon fontSize={ SIZE } /> }\n\t\t\t\tonClose={ closePopover }\n\t\t\t\tactions={ actions }\n\t\t\t/>\n\n\t\t\t{ hasVariables && (\n\t\t\t\t<PopoverSearch\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tonSearch={ handleSearch }\n\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<Divider />\n\n\t\t\t{ hasVariables && hasSearchResults && (\n\t\t\t\t<PopoverMenuList\n\t\t\t\t\titems={ items }\n\t\t\t\t\tonSelect={ handleSetVariable }\n\t\t\t\t\tonClose={ () => {} }\n\t\t\t\t\tselectedValue={ variable }\n\t\t\t\t\tdata-testid={ `${ variableType }-variables-list` }\n\t\t\t\t\tmenuListTemplate={ VariablesStyledMenuList }\n\t\t\t\t\tmenuItemContentTemplate={ ( item: VirtualizedItem< 'item', string > ) => (\n\t\t\t\t\t\t<MenuItemContent item={ item } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasSearchResults && hasVariables && (\n\t\t\t\t<NoSearchResults\n\t\t\t\t\tsearchValue={ searchValue }\n\t\t\t\t\tonClear={ handleClearSearch }\n\t\t\t\t\ticon={ <VariableIcon fontSize=\"large\" /> }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasVariables && (\n\t\t\t\t<NoVariables title={ noVariableTitle } icon={ <VariableIcon fontSize=\"large\" /> } onAdd={ onAdd } />\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n","import * as React from 'react';\nimport { EllipsisWithTooltip, type VirtualizedItem } from '@elementor/editor-ui';\nimport { EditIcon } from '@elementor/icons';\nimport { Box, IconButton, ListItemIcon, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst SIZE = 'tiny';\n\nexport const MenuItemContent = < T, V extends string >( { item }: { item: VirtualizedItem< T, V > } ) => {\n\tconst onEdit = item.onEdit as ( ( value: V ) => void ) | undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemIcon>{ item.icon }</ListItemIcon>\n\t\t\t<Box\n\t\t\t\tsx={ {\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminWidth: 0,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\ttitle={ item.label || item.value }\n\t\t\t\t\tas={ Typography }\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"text.primary\"\n\t\t\t\t\tsx={ { marginTop: '1px', lineHeight: '2' } }\n\t\t\t\t\tmaxWidth=\"50%\"\n\t\t\t\t/>\n\t\t\t\t{ item.secondaryText && (\n\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\ttitle={ item.secondaryText }\n\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.tertiary\"\n\t\t\t\t\t\tsx={ { marginTop: '1px', lineHeight: '1' } }\n\t\t\t\t\t\tmaxWidth=\"50%\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t{ !! onEdit && (\n\t\t\t\t<IconButton\n\t\t\t\t\tsx={ { mx: 1, opacity: '0' } }\n\t\t\t\t\tonClick={ ( e: React.MouseEvent< HTMLButtonElement > ) => {\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\tonEdit( item.value );\n\t\t\t\t\t} }\n\t\t\t\t\taria-label={ __( 'Edit', 'elementor' ) }\n\t\t\t\t>\n\t\t\t\t\t<EditIcon color=\"action\" fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t) }\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { Link, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tsearchValue: string;\n\tonClear?: () => void;\n\ticon?: React.ReactNode;\n};\n\nexport const NoSearchResults = ( { searchValue, onClear, icon }: Props ) => {\n\treturn (\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5 } }\n\t\t>\n\t\t\t{ icon }\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" sx={ { display: 'flex', flexDirection: 'column' } }>\n\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePermissions } from '../../hooks/use-permissions';\n\ntype Props = {\n\ticon?: React.ReactNode;\n\ttitle?: string;\n\tonAdd?: () => void;\n};\n\nexport const NoVariables = ( { icon, title, onAdd }: Props ) => {\n\tconst canAdd = usePermissions().canAdd();\n\n\treturn (\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pb: 5.5 } }\n\t\t>\n\t\t\t{ icon }\n\n\t\t\t{ canAdd ? (\n\t\t\t\t<>\n\t\t\t\t\t<NoVariablesContent\n\t\t\t\t\t\ttitle={ title || __( 'Create your first variable', 'elementor' ) }\n\t\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t\t'Variables are saved attributes that you can apply anywhere on your site.',\n\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t) }\n\t\t\t\t\t/>\n\t\t\t\t\t{ onAdd && (\n\t\t\t\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" onClick={ onAdd }>\n\t\t\t\t\t\t\t{ __( 'Create a variable', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<NoVariablesContent\n\t\t\t\t\ttitle={ __( 'There are no variables', 'elementor' ) }\n\t\t\t\t\tmessage={ __( 'With your current role, you can only connect and detach variables.', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\ntype NoVariablesContentProps = {\n\ttitle: string;\n\tmessage: string;\n};\n\nfunction NoVariablesContent( { title, message }: NoVariablesContentProps ) {\n\treturn (\n\t\t<>\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ title }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"180px\">\n\t\t\t\t{ message }\n\t\t\t</Typography>\n\t\t</>\n\t);\n}\n","import { MenuList, styled } from '@elementor/ui';\n\nexport const VariablesStyledMenuList = styled( MenuList )( ( { theme } ) => ( {\n\t'& > li': {\n\t\theight: 32,\n\t\twidth: '100%',\n\t\tdisplay: 'flex',\n\t\talignItems: 'center',\n\t},\n\t'& > [role=\"option\"]': {\n\t\t...theme.typography.caption,\n\t\tlineHeight: 'inherit',\n\t\tpadding: theme.spacing( 0.5, 1, 0.5, 2 ),\n\t\t'&:hover, &:focus': {\n\t\t\tbackgroundColor: theme.palette.action.hover,\n\t\t},\n\t\t'&[aria-selected=\"true\"]': {\n\t\t\tbackgroundColor: theme.palette.action.selected,\n\t\t},\n\t\tcursor: 'pointer',\n\t\ttextOverflow: 'ellipsis',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\t'&:hover .MuiIconButton-root, .MuiIconButton-root:focus': {\n\t\t\topacity: 1,\n\t\t},\n\t},\n\twidth: '100%',\n\tposition: 'relative',\n} ) );\n","import * as React from 'react';\nimport { DetachIcon } from '@elementor/icons';\nimport { Box, IconButton, Stack, Tooltip, Typography, UnstableTag as Tag, type UnstableTagProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SIZE = 'tiny';\n\ninterface VariableTagProps extends UnstableTagProps {\n\tonUnlink?: () => void;\n}\n\nexport const AssignedTag = ( { startIcon, label, onUnlink, ...props }: VariableTagProps ) => {\n\tconst actions = [];\n\n\tif ( onUnlink ) {\n\t\tactions.push(\n\t\t\t<IconButton key=\"unlink\" size={ SIZE } onClick={ onUnlink } aria-label={ __( 'Unlink', 'elementor' ) }>\n\t\t\t\t<DetachIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tooltip title={ label } placement=\"top\">\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tstartIcon={\n\t\t\t\t\t<Stack gap={ 0.5 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t</Stack>\n\t\t\t\t}\n\t\t\t\tlabel={\n\t\t\t\t\t<Box sx={ { display: 'inline-grid', minWidth: 0 } }>\n\t\t\t\t\t\t<Typography sx={ { lineHeight: 1.34 } } variant=\"caption\" noWrap>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t}\n\t\t\t\tactions={ actions }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeKey } from '@elementor/editor-props';\nimport { Backdrop, bindPopover, Box, Infotip, Popover, usePopupState } from '@elementor/ui';\n\nimport { VariableTypeProvider } from '../../../context/variable-type-context';\nimport { usePermissions } from '../../../hooks/use-permissions';\nimport { restoreVariable } from '../../../hooks/use-prop-variables';\nimport { type Variable } from '../../../types';\nimport { createUnlinkHandler } from '../../../utils/unlink-variable';\nimport { getVariableType } from '../../../variables-registry/variable-type-registry';\nimport { VariableRestore } from '../../variable-restore';\nimport { DeletedVariableAlert } from '../deleted-variable-alert';\nimport { DeletedTag } from '../tags/deleted-tag';\n\ntype Props = {\n\tvariable: Variable;\n\tpropTypeKey: PropTypeKey;\n};\n\ntype Handlers = {\n\tonUnlink?: () => void;\n\tonRestore?: () => void;\n};\n\nexport const DeletedVariable = ( { variable, propTypeKey }: Props ) => {\n\tconst { propTypeUtil } = getVariableType( propTypeKey );\n\n\tconst { setValue } = useBoundProp();\n\n\tconst userPermissions = usePermissions();\n\n\tconst [ showInfotip, setShowInfotip ] = useState< boolean >( false );\n\tconst toggleInfotip = () => setShowInfotip( ( prev ) => ! prev );\n\tconst closeInfotip = () => setShowInfotip( false );\n\n\tconst deletedChipAnchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-restore-${ popupId }`,\n\t} );\n\n\tconst handlers: Handlers = {};\n\n\tif ( userPermissions.canUnlink() ) {\n\t\thandlers.onUnlink = createUnlinkHandler( variable, propTypeKey, setValue );\n\t}\n\n\tif ( userPermissions.canRestore() ) {\n\t\thandlers.onRestore = () => {\n\t\t\tif ( ! variable.key ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trestoreVariable( variable.key )\n\t\t\t\t.then( ( key ) => {\n\t\t\t\t\tsetValue( propTypeUtil.create( key ) );\n\t\t\t\t\tcloseInfotip();\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tcloseInfotip();\n\t\t\t\t\tpopupState.setAnchorEl( deletedChipAnchorRef.current );\n\t\t\t\t\tpopupState.open();\n\t\t\t\t} );\n\t\t};\n\t}\n\n\tconst handleRestoreWithOverrides = () => {\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Box ref={ deletedChipAnchorRef }>\n\t\t\t\t{ showInfotip && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t\t<Infotip\n\t\t\t\t\tcolor=\"warning\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tdisableHoverListener\n\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\tcontent={\n\t\t\t\t\t\t<DeletedVariableAlert\n\t\t\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\t\t\tonUnlink={ handlers.onUnlink }\n\t\t\t\t\t\t\tonRestore={ handlers.onRestore }\n\t\t\t\t\t\t\tlabel={ variable.label }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<DeletedTag label={ variable.label } onClick={ toggleInfotip } />\n\t\t\t\t</Infotip>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tPaperProps={ {\n\t\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\t>\n\t\t\t\t\t<VariableTypeProvider propTypeKey={ propTypeKey }>\n\t\t\t\t\t\t<VariableRestore\n\t\t\t\t\t\t\tvariableId={ variable.key ?? '' }\n\t\t\t\t\t\t\tonClose={ popupState.close }\n\t\t\t\t\t\t\tonSubmit={ handleRestoreWithOverrides }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VariableTypeProvider>\n\t\t\t\t</Popover>\n\t\t\t</Box>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { Button, CardActions, Divider, FormHelperText, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContentRefContextProvider } from '../context/variable-selection-popover.context';\nimport { useVariableType } from '../context/variable-type-context';\nimport { restoreVariable, useVariable } from '../hooks/use-prop-variables';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tvariableId: string;\n\tonClose: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const VariableRestore = ( { variableId, onClose, onSubmit }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType, propTypeUtil } = useVariableType();\n\n\tconst { setValue: notifyBoundPropChange } = useBoundProp( propTypeUtil );\n\tconst { propType } = useBoundProp();\n\n\tconst variable = useVariable( variableId );\n\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global ${ variableType } variable not found` );\n\t}\n\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\tconst [ label, setLabel ] = useState( variable.label );\n\tconst [ value, setValue ] = useState( variable.value );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError( {\n\t\tvalue: variable.label,\n\t\tmessage: ERROR_MESSAGES.DUPLICATED_LABEL,\n\t} );\n\n\tconst handleRestore = () => {\n\t\trestoreVariable( variableId, label, value )\n\t\t\t.then( () => {\n\t\t\t\tnotifyBoundPropChange( variableId );\n\t\t\t\tonSubmit?.();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\t};\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn value === variable.value && label === variable.label;\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<PopoverContentRefContextProvider>\n\t\t\t<PopoverBody height=\"auto\">\n\t\t\t\t<PopoverHeader\n\t\t\t\t\ticon={ <VariableIcon fontSize={ SIZE } /> }\n\t\t\t\t\ttitle={ __( 'Restore variable', 'elementor' ) }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t/>\n\n\t\t\t\t<Divider />\n\n\t\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\t\tmessage: errorMsg,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t\t<Typography variant=\"h5\">\n\t\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</FormField>\n\n\t\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t\t</PopoverContent>\n\n\t\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t\t<Button size=\"small\" variant=\"contained\" disabled={ isSubmitDisabled } onClick={ handleRestore }>\n\t\t\t\t\t\t{ __( 'Restore', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</PopoverBody>\n\t\t</PopoverContentRefContextProvider>\n\t);\n};\n","import * as React from 'react';\nimport { useSectionWidth } from '@elementor/editor-editing-panel';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype DeletedVariableAlertProps = {\n\tonClose: () => void;\n\tonUnlink?: () => void;\n\tonRestore?: () => void;\n\tlabel: string;\n};\n\nexport const DeletedVariableAlert = ( { onClose, onUnlink, onRestore, label }: DeletedVariableAlertProps ) => {\n\tconst sectionWidth = useSectionWidth();\n\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onUnlink && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onUnlink }>\n\t\t\t\t\t\t\t\t{ __( 'Unlink', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ onRestore && (\n\t\t\t\t\t\t\t<AlertAction variant=\"outlined\" onClick={ onRestore }>\n\t\t\t\t\t\t\t\t{ __( 'Restore', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ { width: sectionWidth } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ __( 'Deleted variable', 'elementor' ) }</AlertTitle>\n\t\t\t\t{ __( 'The variable', 'elementor' ) } &apos;{ label }&apos;{ ' ' }\n\t\t\t\t{ __(\n\t\t\t\t\t'has been deleted, but it is still referenced in this location. You may restore the variable or unlink it to assign a different value.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { Box, Chip, type ChipProps, type Theme, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const DeletedTag = React.forwardRef< HTMLDivElement, ChipProps >( ( { label, onClick, ...props }, ref ) => {\n\treturn (\n\t\t<Chip\n\t\t\tref={ ref }\n\t\t\tsize=\"tiny\"\n\t\t\tcolor=\"warning\"\n\t\t\tshape=\"rounded\"\n\t\t\tvariant=\"standard\"\n\t\t\tonClick={ onClick }\n\t\t\ticon={ <AlertTriangleFilledIcon /> }\n\t\t\tlabel={\n\t\t\t\t<Tooltip title={ label } placement=\"top\">\n\t\t\t\t\t<Box sx={ { display: 'flex', gap: 0.5, alignItems: 'center' } }>\n\t\t\t\t\t\t<Typography variant=\"caption\" noWrap>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant=\"caption\" noWrap sx={ { textOverflow: 'initial', overflow: 'visible' } }>\n\t\t\t\t\t\t\t({ __( 'deleted', 'elementor' ) })\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t</Tooltip>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\theight: ( theme: Theme ) => theme.spacing( 3.5 ),\n\t\t\t\tborderRadius: ( theme: Theme ) => theme.spacing( 1 ),\n\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\twidth: '100%',\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { Backdrop, bindPopover, Box, Infotip, Popover, usePopupState } from '@elementor/ui';\n\nimport { type Variable } from '../../../types';\nimport { VariableSelectionPopover } from '../../variable-selection-popover';\nimport { MismatchVariableAlert } from '../mismatch-variable-alert';\nimport { MismatchTag } from '../tags/mismatch-tag';\n\ntype Props = {\n\tvariable: Variable;\n};\n\nexport const MismatchVariable = ( { variable }: Props ) => {\n\tconst { setValue } = useBoundProp();\n\n\tconst anchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-list-${ popupId }`,\n\t} );\n\n\tconst [ infotipVisible, setInfotipVisible ] = useState( false );\n\n\tconst toggleInfotip = () => setInfotipVisible( ( prev ) => ! prev );\n\tconst closeInfotip = () => setInfotipVisible( false );\n\n\tconst triggerSelect = () => {\n\t\tcloseInfotip();\n\n\t\tpopupState.setAnchorEl( anchorRef.current );\n\t\tpopupState.open();\n\t};\n\n\tconst clearValue = () => {\n\t\tcloseInfotip();\n\t\tsetValue( null );\n\t};\n\n\treturn (\n\t\t<Box ref={ anchorRef }>\n\t\t\t{ infotipVisible && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t<Infotip\n\t\t\t\tcolor=\"warning\"\n\t\t\t\tplacement=\"right-start\"\n\t\t\t\topen={ infotipVisible }\n\t\t\t\tdisableHoverListener\n\t\t\t\tonClose={ closeInfotip }\n\t\t\t\tcontent={\n\t\t\t\t\t<MismatchVariableAlert\n\t\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\t\tonClear={ clearValue }\n\t\t\t\t\t\ttriggerSelect={ triggerSelect }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpopper: {\n\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\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\t\t<MismatchTag label={ variable.label } onClick={ toggleInfotip } />\n\t\t\t</Infotip>\n\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<VariableSelectionPopover\n\t\t\t\t\tselectedVariable={ variable }\n\t\t\t\t\tclosePopover={ popupState.close }\n\t\t\t\t\tpropTypeKey={ variable.type }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useSectionWidth } from '@elementor/editor-editing-panel';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype AlertProps = {\n\tonClose: () => void;\n\tonClear?: () => void;\n\ttriggerSelect?: () => void;\n};\n\nconst i18n = {\n\ttitle: __( 'Variable has changed', 'elementor' ),\n\tmessage: __(\n\t\t`This variable is no longer compatible with this property. You can clear it or select a different one.`,\n\t\t'elementor'\n\t),\n\tbuttons: {\n\t\tclear: __( 'Clear', 'elementor' ),\n\t\tselect: __( 'Select variable', 'elementor' ),\n\t},\n};\n\nexport const MismatchVariableAlert = ( { onClose, onClear, triggerSelect }: AlertProps ) => {\n\tconst sectionWidth = useSectionWidth();\n\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onClear && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onClear }>\n\t\t\t\t\t\t\t\t{ i18n.buttons.clear }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ triggerSelect && (\n\t\t\t\t\t\t\t<AlertAction variant=\"outlined\" onClick={ triggerSelect }>\n\t\t\t\t\t\t\t\t{ i18n.buttons.select }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ {\n\t\t\t\t\twidth: sectionWidth,\n\t\t\t\t\tminWidth: 300,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ i18n.title }</AlertTitle>\n\t\t\t\t{ i18n.message }\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { Box, Chip, type ChipProps, type Theme, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const MismatchTag = React.forwardRef< HTMLDivElement, ChipProps >( ( { label, onClick, ...props }, ref ) => {\n\treturn (\n\t\t<Chip\n\t\t\tref={ ref }\n\t\t\tsize=\"tiny\"\n\t\t\tcolor=\"warning\"\n\t\t\tshape=\"rounded\"\n\t\t\tvariant=\"standard\"\n\t\t\tonClick={ onClick }\n\t\t\ticon={ <AlertTriangleFilledIcon /> }\n\t\t\tlabel={\n\t\t\t\t<Tooltip title={ label } placement=\"top\">\n\t\t\t\t\t<Box sx={ { display: 'flex', gap: 0.5, alignItems: 'center' } }>\n\t\t\t\t\t\t<Typography variant=\"caption\" noWrap>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t<Typography variant=\"caption\" noWrap sx={ { textOverflow: 'initial', overflow: 'visible' } }>\n\t\t\t\t\t\t\t({ __( 'changed', 'elementor' ) })\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t</Tooltip>\n\t\t\t}\n\t\t\tsx={ {\n\t\t\t\theight: ( theme: Theme ) => theme.spacing( 3.5 ),\n\t\t\t\tborderRadius: ( theme: Theme ) => theme.spacing( 1 ),\n\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\twidth: '100%',\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { Backdrop, Infotip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { MissingVariableAlert } from '../missing-variable-alert';\nimport { MissingTag } from '../tags/missing-tag';\n\nexport const MissingVariable = () => {\n\tconst { setValue } = useBoundProp();\n\n\tconst [ infotipVisible, setInfotipVisible ] = useState< boolean >( false );\n\tconst toggleInfotip = () => setInfotipVisible( ( prev ) => ! prev );\n\tconst closeInfotip = () => setInfotipVisible( false );\n\n\tconst clearValue = () => setValue( null );\n\n\treturn (\n\t\t<>\n\t\t\t{ infotipVisible && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t<Infotip\n\t\t\t\tcolor=\"warning\"\n\t\t\t\tplacement=\"right-start\"\n\t\t\t\topen={ infotipVisible }\n\t\t\t\tdisableHoverListener\n\t\t\t\tonClose={ closeInfotip }\n\t\t\t\tcontent={ <MissingVariableAlert onClose={ closeInfotip } onClear={ clearValue } /> }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpopper: {\n\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\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\t\t<MissingTag label={ __( 'Missing variable', 'elementor' ) } onClick={ toggleInfotip } />\n\t\t\t</Infotip>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useSectionWidth } from '@elementor/editor-editing-panel';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype MissingVariableAlertProps = {\n\tonClose: () => void;\n\tonClear?: () => void;\n};\n\nexport const MissingVariableAlert = ( { onClose, onClear }: MissingVariableAlertProps ) => {\n\tconst sectionWidth = useSectionWidth();\n\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onClear && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onClear }>\n\t\t\t\t\t\t\t\t{ __( 'Clear', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ { width: sectionWidth } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ __( 'This variable is missing', 'elementor' ) }</AlertTitle>\n\t\t\t\t{ __(\n\t\t\t\t\t'It may have been deleted. Try clearing this field and select a different value or variable.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { Chip, type ChipProps, type Theme } from '@elementor/ui';\n\nexport const MissingTag = React.forwardRef< HTMLDivElement, ChipProps >( ( { label, onClick, ...props }, ref ) => {\n\treturn (\n\t\t<Chip\n\t\t\tref={ ref }\n\t\t\tsize=\"tiny\"\n\t\t\tcolor=\"warning\"\n\t\t\tshape=\"rounded\"\n\t\t\tvariant=\"standard\"\n\t\t\tonClick={ onClick }\n\t\t\ticon={ <AlertTriangleFilledIcon /> }\n\t\t\tlabel={ label }\n\t\t\tsx={ {\n\t\t\t\theight: ( theme: Theme ) => theme.spacing( 3.5 ),\n\t\t\t\tborderRadius: ( theme: Theme ) => theme.spacing( 1 ),\n\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\twidth: '100%',\n\t\t\t} }\n\t\t\t{ ...props }\n\t\t/>\n\t);\n} );\n","import * as React from 'react';\nimport { type PopoverActionProps, useBoundProp } from '@elementor/editor-editing-panel';\nimport { type PropType } from '@elementor/editor-props';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { VariableSelectionPopover } from '../components/variable-selection-popover';\nimport { trackVariableEvent } from '../utils/tracking';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport const usePropVariableAction = (): PopoverActionProps => {\n\tconst { propType, path } = useBoundProp();\n\tconst variable = resolveVariableFromPropType( propType );\n\n\treturn {\n\t\tvisible: Boolean( variable ),\n\t\ticon: ColorFilterIcon,\n\t\ttitle: __( 'Variables', 'elementor' ),\n\t\tcontent: ( { close: closePopover } ) => {\n\t\t\tif ( ! variable ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttrackOpenVariablePopover( path, variable.variableType );\n\n\t\t\treturn <VariableSelectionPopover closePopover={ closePopover } propTypeKey={ variable.propTypeUtil.key } />;\n\t\t},\n\t};\n};\n\nconst resolveVariableFromPropType = ( propType: PropType ) => {\n\tif ( propType.kind !== 'union' ) {\n\t\treturn undefined;\n\t}\n\n\tfor ( const key of Object.keys( propType.prop_types ) ) {\n\t\tconst variable = getVariableType( key );\n\n\t\tif ( variable ) {\n\t\t\treturn variable;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nconst trackOpenVariablePopover = ( path: string[], variableType: string ) => {\n\ttrackVariableEvent( {\n\t\tvarType: variableType,\n\t\tcontrolPath: path.join( '.' ),\n\t\taction: 'open',\n\t} );\n};\n","import * as React from 'react';\nimport { colorPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { BrushIcon, TextIcon } from '@elementor/icons';\n\nimport { ColorField } from './components/fields/color-field';\nimport { FontField } from './components/fields/font-field';\nimport { ColorIndicator } from './components/ui/color-indicator';\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\nimport { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\nimport { registerVariableType } from './variables-registry/variable-type-registry';\n\nexport function registerVariableTypes() {\n\tregisterVariableType( {\n\t\tvalueField: ColorField,\n\t\ticon: BrushIcon,\n\t\tpropTypeUtil: colorVariablePropTypeUtil,\n\t\tfallbackPropTypeUtil: colorPropTypeUtil,\n\t\tvariableType: 'color',\n\t\tstartIcon: ( { value } ) => <ColorIndicator size=\"inherit\" component=\"span\" value={ value } />,\n\t} );\n\n\tregisterVariableType( {\n\t\tvalueField: FontField,\n\t\ticon: TextIcon,\n\t\tpropTypeUtil: fontVariablePropTypeUtil,\n\t\tfallbackPropTypeUtil: stringPropTypeUtil,\n\t\tvariableType: 'font',\n\t} );\n}\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { UnstableColorField } from '@elementor/ui';\n\nimport { usePopoverContentRef } from '../../context/variable-selection-popover.context';\nimport { validateValue } from '../../utils/validations';\n\ntype ColorFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( errorMessage: string ) => void;\n};\n\nexport const ColorField = ( { value, onChange, onValidationChange }: ColorFieldProps ) => {\n\tconst [ color, setColor ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef.current;\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetColor( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tsetErrorMessage( errorMsg );\n\t\tonValidationChange?.( errorMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\n\treturn (\n\t\t<UnstableColorField\n\t\t\tsize=\"tiny\"\n\t\t\tfullWidth\n\t\t\tvalue={ color }\n\t\t\tonChange={ handleChange }\n\t\t\terror={ errorMessage || undefined }\n\t\t\tslotProps={ {\n\t\t\t\tcolorPicker: {\n\t\t\t\t\tanchorEl: anchorRef,\n\t\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'right' },\n\t\t\t\t\ttransformOrigin: { vertical: 'top', horizontal: -10 },\n\t\t\t\t\tslotProps: {\n\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\tsize: 'inherit',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\tborderRadius: 0.5,\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/>\n\t);\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { enqueueFont, ItemSelector } from '@elementor/editor-controls';\nimport { useFontFamilies, useSectionWidth } from '@elementor/editor-editing-panel';\nimport { ChevronDownIcon, TextIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopoverContentRef } from '../../context/variable-selection-popover.context';\nimport { validateValue } from '../../utils/validations';\n\ntype FontFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( errorMessage: string ) => void;\n};\n\nexport const FontField = ( { value, onChange, onValidationChange }: FontFieldProps ) => {\n\tconst [ fontFamily, setFontFamily ] = useState( value );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef.current;\n\n\tconst fontPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst fontFamilies = useFontFamilies();\n\tconst sectionWidth = useSectionWidth();\n\n\tconst mapFontSubs = React.useMemo( () => {\n\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\tlabel,\n\t\t\titems: fonts,\n\t\t} ) );\n\t}, [ fontFamilies ] );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetFontFamily( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tonValidationChange?.( errorMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\n\tconst handleFontFamilyChange = ( newFontFamily: string ) => {\n\t\thandleChange( newFontFamily );\n\t\tfontPopoverState.close();\n\t};\n\n\tconst id = useId();\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tid={ id }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ fontFamily }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( fontPopoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: -28 } }\n\t\t\t\t{ ...bindPopover( fontPopoverState ) }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\tonItemChange={ handleFontFamilyChange }\n\t\t\t\t\tonClose={ fontPopoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { Portal } from '@elementor/ui';\n\nimport { styleVariablesRepository } from '../style-variables-repository';\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\nimport { type StyleVariables, type Variable } from '../types';\n\nconst VARIABLES_WRAPPER = 'body';\n\nexport function StyleVariablesRenderer() {\n\tconst container = usePortalContainer();\n\tconst styleVariables = useStyleVariables();\n\n\tconst hasVariables = Object.keys( styleVariables ).length > 0;\n\n\tif ( ! container || ! hasVariables ) {\n\t\treturn null;\n\t}\n\n\tconst cssVariables = convertToCssVariables( styleVariables );\n\tconst wrappedCss = `${ VARIABLES_WRAPPER }{${ cssVariables }}`;\n\n\treturn (\n\t\t<Portal container={ container }>\n\t\t\t<style data-e-style-id=\"e-variables\" key={ wrappedCss }>\n\t\t\t\t{ wrappedCss }\n\t\t\t</style>\n\t\t</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument()?.head );\n}\n\nfunction useStyleVariables() {\n\tconst [ variables, setVariables ] = useState< StyleVariables >( {} );\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = styleVariablesRepository.subscribe( setVariables );\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, [] );\n\n\treturn variables;\n}\n\nfunction cssVariableDeclaration( key: string, variable: Variable ) {\n\tconst variableName = variable?.deleted ? key : variable.label;\n\tconst value = variable.value;\n\n\treturn `--${ variableName }:${ value };`;\n}\n\nfunction convertToCssVariables( variables: StyleVariables ): string {\n\tconst listOfVariables = Object.entries( variables );\n\treturn listOfVariables.map( ( [ key, variable ] ) => cssVariableDeclaration( key, variable ) ).join( '' );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeDocument() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument;\n}\n","import { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from '@elementor/editor-controls';\nimport { backgroundColorOverlayPropTypeUtil, type PropValue, shadowPropTypeUtil } from '@elementor/editor-props';\n\nimport {\n\tBackgroundRepeaterColorIndicator,\n\tBackgroundRepeaterLabel,\n\tBoxShadowRepeaterColorIndicator,\n} from './components/variables-repeater-item-slot';\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\n\nexport function registerRepeaterInjections() {\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'color-variables-background-icon',\n\t\tcomponent: BackgroundRepeaterColorIndicator,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( backgroundColorOverlayPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'color-variables-icon',\n\t\tcomponent: BoxShadowRepeaterColorIndicator,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( shadowPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n\n\tinjectIntoRepeaterItemLabel( {\n\t\tid: 'color-variables-label',\n\t\tcomponent: BackgroundRepeaterLabel,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( backgroundColorOverlayPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n}\n\nconst hasAssignedColorVariable = ( propValue: PropValue ): boolean => {\n\treturn !! colorVariablePropTypeUtil.isValid( propValue );\n};\n","import * as React from 'react';\nimport { type BackgroundColorOverlayPropValue, type BoxShadowPropValue, type PropValue } from '@elementor/editor-props';\n\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { ColorIndicator } from './ui/color-indicator';\n\nconst useColorVariable = ( value: BackgroundColorOverlayPropValue | BoxShadowPropValue ) => {\n\tconst variableId = value?.value?.color?.value;\n\n\treturn useVariable( variableId || '' );\n};\n\nexport const BackgroundRepeaterColorIndicator = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BackgroundColorOverlayPropValue );\n\n\treturn <ColorIndicator component=\"span\" size=\"inherit\" value={ colorVariable?.value } />;\n};\n\nexport const BackgroundRepeaterLabel = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BackgroundColorOverlayPropValue );\n\n\treturn <span>{ colorVariable?.label }</span>;\n};\n\nexport const BoxShadowRepeaterColorIndicator = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BoxShadowPropValue );\n\n\treturn <ColorIndicator component=\"span\" size=\"inherit\" value={ colorVariable?.value } />;\n};\n"],"mappings":"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","names":["import_editor_editing_panel","import_editor_panels","React","import_react","import_editor_ui","import_icons","import_ui","import_i18n","import_react","React","import_editor_canvas","import_ui","import_i18n","id","id","import_editor_props","import_schema","id","id","id","import_editor_canvas","id","registerVariableType","getVariableType","hasVariableType","id","React","import_react","import_icons","import_ui","import_i18n","React","import_react","import_ui","import_i18n","id","errorMsg","React","import_react","import_ui","React","import_react","import_ui","React","import_ui","id","createPanel","React","import_editor_controls","import_react","React","import_editor_controls","import_icons","import_ui","React","import_react","import_editor_v1_adapters","React","import_react","import_ui","React","import_react","import_editor_controls","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","import_editor_controls","hasAssignedVariable","React","import_ui","id","React","import_react","import_editor_controls","import_editor_current_user","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","SIZE","React","import_react","import_editor_controls","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","React","import_editor_ui","import_icons","import_ui","import_i18n","SIZE","React","import_ui","import_i18n","React","import_ui","import_i18n","import_ui","SIZE","React","import_icons","import_ui","import_i18n","SIZE","Tag","SIZE","React","import_react","import_editor_controls","import_ui","React","import_react","import_editor_controls","import_editor_editing_panel","import_editor_ui","import_ui","import_i18n","SIZE","React","import_editor_editing_panel","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_controls","import_ui","React","import_editor_editing_panel","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_react","import_editor_controls","import_ui","import_i18n","React","import_editor_editing_panel","import_ui","import_i18n","React","import_icons","import_ui","React","import_editor_editing_panel","import_icons","import_i18n","React","import_editor_props","import_icons","React","import_react","import_ui","React","import_react","import_editor_controls","import_editor_editing_panel","import_icons","import_ui","import_i18n","id","React","import_react","import_editor_v1_adapters","import_ui","useListenTo","import_editor_controls","import_editor_props","React","registerPanel"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/init.ts","../src/components/variables-manager/variables-manager-panel.tsx","../src/utils/tracking.ts","../src/utils/validations.ts","../src/variables-registry/create-variable-type-registry.ts","../src/transformers/inheritance-transformer.tsx","../src/components/ui/color-indicator.tsx","../src/prop-types/color-variable-prop-type.ts","../src/service.ts","../src/api.ts","../src/batch-operations.ts","../src/storage.ts","../src/prop-types/font-variable-prop-type.ts","../src/sync/enqueue-font.ts","../src/create-style-variables-repository.ts","../src/style-variables-repository.ts","../src/transformers/utils/resolve-css-variable.ts","../src/transformers/variable-transformer.ts","../src/variables-registry/variable-type-registry.ts","../src/components/ui/delete-confirmation-dialog.tsx","../src/components/ui/empty-state.tsx","../src/hooks/use-permissions.ts","../src/components/ui/no-search-results.tsx","../src/components/variables-manager/hooks/use-auto-edit.ts","../src/components/variables-manager/hooks/use-error-navigation.ts","../src/components/variables-manager/hooks/use-variables-manager-state.ts","../src/hooks/use-prop-variables.ts","../src/context/variable-type-context.tsx","../src/utils/filter-by-search.ts","../src/components/variables-manager/variables-manager-create-menu.tsx","../src/components/variables-manager/variables-manager-table.tsx","../src/components/fields/label-field.tsx","../src/components/variables-manager/ui/variable-edit-menu.tsx","../src/components/variables-manager/ui/variable-table-cell.tsx","../src/components/variables-manager/variable-editable-cell.tsx","../src/controls/variable-control.tsx","../src/components/ui/variable/assigned-variable.tsx","../src/utils/unlink-variable.ts","../src/components/variable-selection-popover.tsx","../src/context/variable-selection-popover.context.tsx","../src/components/variable-creation.tsx","../src/hooks/use-initial-value.ts","../src/hooks/use-variable-bound-prop.ts","../src/components/ui/form-field.tsx","../src/components/variable-edit.tsx","../src/components/ui/edit-confirmation-dialog.tsx","../src/components/variables-selection.tsx","../src/components/ui/menu-item-content.tsx","../src/components/ui/styled-menu-list.tsx","../src/components/ui/tags/assigned-tag.tsx","../src/components/ui/variable/deleted-variable.tsx","../src/components/variable-restore.tsx","../src/components/ui/deleted-variable-alert.tsx","../src/components/ui/tags/warning-variable-tag.tsx","../src/components/ui/variable/mismatch-variable.tsx","../src/components/ui/mismatch-variable-alert.tsx","../src/components/ui/variable/missing-variable.tsx","../src/components/ui/missing-variable-alert.tsx","../src/hooks/use-prop-variable-action.tsx","../src/mcp/index.ts","../src/mcp/create-variable-tool.ts","../src/mcp/delete-variable-tool.ts","../src/mcp/list-variables-tool.ts","../src/mcp/update-variable-tool.ts","../src/mcp/variables-resource.ts","../src/register-variable-types.tsx","../src/components/fields/color-field.tsx","../src/components/fields/font-field.tsx","../src/renderers/style-variables-renderer.tsx","../src/sync/get-canvas-iframe-document.ts","../src/repeater-injections.ts","../src/components/variables-repeater-item-slot.tsx"],"sourcesContent":["export { init } from './init';\nexport { registerVariableType } from './variables-registry/variable-type-registry';\nexport { registerVariableTypes } from './register-variable-types';\n","import { injectIntoTop } from '@elementor/editor';\nimport { controlActionsMenu, registerControlReplacement } from '@elementor/editor-editing-panel';\nimport { __registerPanel as registerPanel } from '@elementor/editor-panels';\nimport { isTransformable, type PropValue } from '@elementor/editor-props';\n\nimport { panel } from './components/variables-manager/variables-manager-panel';\nimport { VariableControl } from './controls/variable-control';\nimport { usePropVariableAction } from './hooks/use-prop-variable-action';\nimport { initMcp } from './mcp';\nimport { registerVariableTypes } from './register-variable-types';\nimport { StyleVariablesRenderer } from './renderers/style-variables-renderer';\nimport { registerRepeaterInjections } from './repeater-injections';\nimport { service as variablesService } from './service';\nimport { hasVariableType } from './variables-registry/variable-type-registry';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport function init() {\n\tregisterVariableTypes();\n\tregisterRepeaterInjections();\n\n\tregisterControlReplacement( {\n\t\tcomponent: VariableControl,\n\t\tcondition: ( { value, placeholder } ) => {\n\t\t\tif ( hasVariableAssigned( value ) ) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif ( value ) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn hasVariableAssigned( placeholder );\n\t\t},\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'variables',\n\t\tuseProps: usePropVariableAction,\n\t} );\n\n\tvariablesService.init().then( () => {\n\t\tinitMcp();\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'canvas-style-variables-render',\n\t\tcomponent: StyleVariablesRenderer,\n\t} );\n\n\tregisterPanel( panel );\n}\n\nfunction hasVariableAssigned( value: PropValue ) {\n\tif ( isTransformable( value ) ) {\n\t\treturn hasVariableType( value.$$type );\n\t}\n\n\treturn false;\n}\n","import * as React from 'react';\nimport { useCallback, useEffect, useState } from 'react';\nimport {\n\t__createPanel as createPanel,\n\tPanel,\n\tPanelBody,\n\tPanelFooter,\n\tPanelHeader,\n\tPanelHeaderTitle,\n} from '@elementor/editor-panels';\nimport { SaveChangesDialog, SearchField, ThemeProvider, useDialog } from '@elementor/editor-ui';\nimport { changeEditMode } from '@elementor/editor-v1-adapters';\nimport { AlertTriangleFilledIcon, ColorFilterIcon, TrashIcon } from '@elementor/icons';\nimport {\n\tAlert,\n\tAlertAction,\n\tAlertTitle,\n\tButton,\n\tCloseButton,\n\tDivider,\n\tInfotip,\n\tStack,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { trackVariablesManagerEvent } from '../../utils/tracking';\nimport { type ErrorResponse, type MappedError, mapServerError } from '../../utils/validations';\nimport { getVariableType } from '../../variables-registry/variable-type-registry';\nimport { DeleteConfirmationDialog } from '../ui/delete-confirmation-dialog';\nimport { EmptyState } from '../ui/empty-state';\nimport { NoSearchResults } from '../ui/no-search-results';\nimport { useAutoEdit } from './hooks/use-auto-edit';\nimport { useErrorNavigation } from './hooks/use-error-navigation';\nimport { useVariablesManagerState } from './hooks/use-variables-manager-state';\nimport { SIZE, VariableManagerCreateMenu } from './variables-manager-create-menu';\nimport { VariablesManagerTable } from './variables-manager-table';\n\nconst id = 'variables-manager';\n\nexport const { panel, usePanelActions } = createPanel( {\n\tid,\n\tcomponent: VariablesManagerPanel,\n\tallowedEditModes: [ 'edit', id ],\n\tonOpen: () => {\n\t\tchangeEditMode( id );\n\t},\n\tonClose: () => {\n\t\tchangeEditMode( 'edit' );\n\t},\n\tisOpenPreviousElement: true,\n} );\n\nexport function VariablesManagerPanel() {\n\tconst { close: closePanel } = usePanelActions();\n\tconst { open: openSaveChangesDialog, close: closeSaveChangesDialog, isOpen: isSaveChangesDialogOpen } = useDialog();\n\n\tconst createMenuState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\n\tconst {\n\t\tvariables,\n\t\tisDirty,\n\t\tsearchValue,\n\t\tisSaveDisabled,\n\t\thandleOnChange,\n\t\tcreateVariable,\n\t\thandleDeleteVariable,\n\t\thandleSave,\n\t\tisSaving,\n\t\thandleSearch,\n\t\tsetIsSaving,\n\t\tsetIsSaveDisabled,\n\t} = useVariablesManagerState();\n\n\tconst { autoEditVariableId, startAutoEdit, handleAutoEditComplete } = useAutoEdit();\n\tconst { createNavigationCallback, resetNavigation } = useErrorNavigation();\n\n\tconst [ deleteConfirmation, setDeleteConfirmation ] = useState< { id: string; label: string } | null >( null );\n\tconst [ serverError, setServerError ] = useState< MappedError | null >( null );\n\n\tusePreventUnload( isDirty );\n\n\tconst handleClosePanel = () => {\n\t\tif ( isDirty ) {\n\t\t\topenSaveChangesDialog();\n\t\t\treturn;\n\t\t}\n\n\t\tclosePanel();\n\t};\n\n\tconst handleCreateVariable = useCallback(\n\t\t( type: string, defaultName: string, defaultValue: string ) => {\n\t\t\tconst newId = createVariable( type, defaultName, defaultValue );\n\t\t\tif ( newId ) {\n\t\t\t\tstartAutoEdit( newId );\n\t\t\t}\n\t\t},\n\t\t[ createVariable, startAutoEdit ]\n\t);\n\n\tconst handleSaveClick = async () => {\n\t\ttry {\n\t\t\tsetServerError( null );\n\t\t\tresetNavigation();\n\n\t\t\tconst result = await handleSave();\n\t\t\ttrackVariablesManagerEvent( { action: 'saveChanges' } );\n\t\t\treturn result;\n\t\t} catch ( error ) {\n\t\t\tconst mappedError = mapServerError( error as ErrorResponse );\n\t\t\tconst duplicatedIds = mappedError?.action?.data?.duplicatedIds;\n\n\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\tif ( duplicatedIds && mappedError.action ) {\n\t\t\t\t\tmappedError.action.callback = createNavigationCallback( duplicatedIds, startAutoEdit, () => {\n\t\t\t\t\t\tsetIsSaveDisabled( false );\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tsetServerError( mappedError );\n\t\t\t\tsetIsSaveDisabled( true );\n\t\t\t\tresetNavigation();\n\t\t\t}\n\n\t\t\treturn { success: false, error: mappedError };\n\t\t} finally {\n\t\t\tsetIsSaving( false );\n\t\t}\n\t};\n\n\tconst handleDeleteVariableWithConfirmation = useCallback(\n\t\t( itemId: string ) => {\n\t\t\thandleDeleteVariable( itemId );\n\t\t\tsetDeleteConfirmation( null );\n\t\t},\n\t\t[ handleDeleteVariable ]\n\t);\n\n\tconst menuActions = [\n\t\t{\n\t\t\tname: __( 'Delete', 'elementor' ),\n\t\t\ticon: TrashIcon,\n\t\t\tcolor: 'error.main',\n\t\t\tonClick: ( itemId: string ) => {\n\t\t\t\tconst variable = variables[ itemId ];\n\t\t\t\tif ( variable ) {\n\t\t\t\t\tsetDeleteConfirmation( { id: itemId, label: variable.label } );\n\n\t\t\t\t\tconst variableTypeOptions = getVariableType( variable.type );\n\t\t\t\t\ttrackVariablesManagerEvent( { action: 'delete', varType: variableTypeOptions?.variableType } );\n\t\t\t\t}\n\t\t\t},\n\t\t},\n\t];\n\n\tconst hasVariables = Object.values( variables ).some( ( variable ) => ! variable.deleted );\n\n\treturn (\n\t\t<ThemeProvider>\n\t\t\t<Panel>\n\t\t\t\t<PanelHeader\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\theight: 'unset',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<Stack width=\"100%\" direction=\"column\" alignItems=\"center\">\n\t\t\t\t\t\t<Stack p={ 1 } pl={ 2 } width=\"100%\" direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t\t\t<Stack width=\"100%\" direction=\"row\" gap={ 1 }>\n\t\t\t\t\t\t\t\t<PanelHeaderTitle sx={ { display: 'flex', alignItems: 'center', gap: 0.5 } }>\n\t\t\t\t\t\t\t\t\t<ColorFilterIcon fontSize=\"inherit\" />\n\t\t\t\t\t\t\t\t\t{ __( 'Variables Manager', 'elementor' ) }\n\t\t\t\t\t\t\t\t</PanelHeaderTitle>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t<Stack direction=\"row\" gap={ 0.5 } alignItems=\"center\">\n\t\t\t\t\t\t\t\t<VariableManagerCreateMenu\n\t\t\t\t\t\t\t\t\tonCreate={ handleCreateVariable }\n\t\t\t\t\t\t\t\t\tvariables={ variables }\n\t\t\t\t\t\t\t\t\tmenuState={ createMenuState }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<CloseButton\n\t\t\t\t\t\t\t\t\taria-label=\"Close\"\n\t\t\t\t\t\t\t\t\tslotProps={ { icon: { fontSize: SIZE } } }\n\t\t\t\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\t\t\t\thandleClosePanel();\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</Stack>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t<Stack width=\"100%\" direction=\"row\" gap={ 1 }>\n\t\t\t\t\t\t\t<SearchField\n\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\t\t\tflex: 1,\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\t\t\t\tonSearch={ handleSearch }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t<Divider sx={ { width: '100%' } } />\n\t\t\t\t\t</Stack>\n\t\t\t\t</PanelHeader>\n\t\t\t\t<PanelBody\n\t\t\t\t\tsx={ {\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\tflexDirection: 'column',\n\t\t\t\t\t\theight: '100%',\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ hasVariables && (\n\t\t\t\t\t\t<VariablesManagerTable\n\t\t\t\t\t\t\tmenuActions={ menuActions }\n\t\t\t\t\t\t\tvariables={ variables }\n\t\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\t\tautoEditVariableId={ autoEditVariableId }\n\t\t\t\t\t\t\tonAutoEditComplete={ handleAutoEditComplete }\n\t\t\t\t\t\t\tonFieldError={ setIsSaveDisabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! hasVariables && searchValue && (\n\t\t\t\t\t\t<NoSearchResults\n\t\t\t\t\t\t\tsearchValue={ searchValue }\n\t\t\t\t\t\t\tonClear={ () => handleSearch( '' ) }\n\t\t\t\t\t\t\ticon={ <ColorFilterIcon fontSize=\"large\" /> }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\n\t\t\t\t\t{ ! hasVariables && ! searchValue && (\n\t\t\t\t\t\t<EmptyState\n\t\t\t\t\t\t\ttitle={ __( 'Create your first variable', 'elementor' ) }\n\t\t\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t\t\t'Variables are saved attributes that you can apply anywhere on your site.',\n\t\t\t\t\t\t\t\t'elementor'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\ticon={ <ColorFilterIcon fontSize=\"large\" /> }\n\t\t\t\t\t\t\tonAdd={ createMenuState.open }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</PanelBody>\n\n\t\t\t\t<PanelFooter>\n\t\t\t\t\t<Infotip\n\t\t\t\t\t\tplacement=\"right\"\n\t\t\t\t\t\topen={ !! serverError }\n\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\tserverError ? (\n\t\t\t\t\t\t\t\t<Alert\n\t\t\t\t\t\t\t\t\tseverity={ serverError.severity ?? 'error' }\n\t\t\t\t\t\t\t\t\taction={\n\t\t\t\t\t\t\t\t\t\tserverError.action?.label ? (\n\t\t\t\t\t\t\t\t\t\t\t<AlertAction onClick={ serverError.action.callback }>\n\t\t\t\t\t\t\t\t\t\t\t\t{ serverError.action.label }\n\t\t\t\t\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t\t\t\t\t) : undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tonClose={\n\t\t\t\t\t\t\t\t\t\t! serverError.action?.label\n\t\t\t\t\t\t\t\t\t\t\t? () => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetServerError( null );\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetIsSaveDisabled( false );\n\t\t\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\t\tserverError.IconComponent ? (\n\t\t\t\t\t\t\t\t\t\t\t<serverError.IconComponent />\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t<AlertTriangleFilledIcon />\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<AlertTitle>{ serverError.message }</AlertTitle>\n\t\t\t\t\t\t\t\t\t{ serverError.action?.message }\n\t\t\t\t\t\t\t\t</Alert>\n\t\t\t\t\t\t\t) : null\n\t\t\t\t\t\t}\n\t\t\t\t\t\tarrow={ false }\n\t\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\t\toptions: { offset: [ -10, 10 ] },\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tcolor=\"global\"\n\t\t\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\t\t\tdisabled={ isSaveDisabled || ! isDirty || isSaving }\n\t\t\t\t\t\t\tonClick={ handleSaveClick }\n\t\t\t\t\t\t\tloading={ isSaving }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Save changes', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Infotip>\n\t\t\t\t</PanelFooter>\n\t\t\t</Panel>\n\n\t\t\t{ deleteConfirmation && (\n\t\t\t\t<DeleteConfirmationDialog\n\t\t\t\t\topen\n\t\t\t\t\tlabel={ deleteConfirmation.label }\n\t\t\t\t\tonConfirm={ () => handleDeleteVariableWithConfirmation( deleteConfirmation.id ) }\n\t\t\t\t\tcloseDialog={ () => setDeleteConfirmation( null ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ isSaveChangesDialogOpen && (\n\t\t\t\t<SaveChangesDialog>\n\t\t\t\t\t<SaveChangesDialog.Title onClose={ closeSaveChangesDialog }>\n\t\t\t\t\t\t{ __( 'You have unsaved changes', 'elementor' ) }\n\t\t\t\t\t</SaveChangesDialog.Title>\n\t\t\t\t\t<SaveChangesDialog.Content>\n\t\t\t\t\t\t<SaveChangesDialog.ContentText>\n\t\t\t\t\t\t\t{ __( 'To avoid losing your updates, save your changes before leaving.', 'elementor' ) }\n\t\t\t\t\t\t</SaveChangesDialog.ContentText>\n\t\t\t\t\t</SaveChangesDialog.Content>\n\t\t\t\t\t<SaveChangesDialog.Actions\n\t\t\t\t\t\tactions={ {\n\t\t\t\t\t\t\tdiscard: {\n\t\t\t\t\t\t\t\tlabel: __( 'Discard', 'elementor' ),\n\t\t\t\t\t\t\t\taction: () => {\n\t\t\t\t\t\t\t\t\tcloseSaveChangesDialog();\n\t\t\t\t\t\t\t\t\tclosePanel();\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tconfirm: {\n\t\t\t\t\t\t\t\tlabel: __( 'Save', 'elementor' ),\n\t\t\t\t\t\t\t\taction: async () => {\n\t\t\t\t\t\t\t\t\tconst result = await handleSaveClick();\n\t\t\t\t\t\t\t\t\tcloseSaveChangesDialog();\n\t\t\t\t\t\t\t\t\tif ( result?.success ) {\n\t\t\t\t\t\t\t\t\t\tclosePanel();\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t</SaveChangesDialog>\n\t\t\t) }\n\t\t</ThemeProvider>\n\t);\n}\n\nconst usePreventUnload = ( isDirty: boolean ) => {\n\tuseEffect( () => {\n\t\tconst handleBeforeUnload = ( event: BeforeUnloadEvent ) => {\n\t\t\tif ( isDirty ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener( 'beforeunload', handleBeforeUnload );\n\n\t\treturn () => {\n\t\t\twindow.removeEventListener( 'beforeunload', handleBeforeUnload );\n\t\t};\n\t}, [ isDirty ] );\n};\n","import { getMixpanel } from '@elementor/mixpanel';\n\ntype VariableEventData = {\n\tvarType: string;\n\tcontrolPath: string;\n\taction: 'open' | 'add' | 'connect' | 'save';\n};\n\nexport const trackVariableEvent = ( { varType, controlPath, action }: VariableEventData ) => {\n\tconst { dispatchEvent, config } = getMixpanel();\n\tif ( ! config?.names?.variables?.[ action ] ) {\n\t\treturn;\n\t}\n\n\tconst name = config.names.variables[ action ];\n\tdispatchEvent?.( name, {\n\t\tlocation: config?.locations?.variables || '',\n\t\tsecondaryLocation: config?.secondaryLocations?.variablesPopover || '',\n\t\ttrigger: config?.triggers?.click || '',\n\t\tvar_type: varType,\n\t\tcontrol_path: controlPath,\n\t\taction_type: name,\n\t} );\n};\n\ntype VariablesManagerEventData = {\n\taction: 'openManager' | 'add' | 'saveChanges' | 'delete';\n\tvarType?: string;\n\tcontrolPath?: string;\n};\n\nexport const trackVariablesManagerEvent = ( { action, varType, controlPath }: VariablesManagerEventData ) => {\n\tconst { dispatchEvent, config } = getMixpanel();\n\tif ( ! config?.names?.variables?.[ action ] ) {\n\t\treturn;\n\t}\n\n\tconst name = config.names.variables[ action ];\n\tconst eventData: Record< string, string > = {\n\t\tlocation: config?.locations?.variablesManager || '',\n\t\ttrigger: config?.triggers?.click || '',\n\t\taction_type: name,\n\t};\n\n\tif ( varType ) {\n\t\teventData.var_type = varType;\n\t}\n\n\tif ( controlPath ) {\n\t\teventData.style_control_path = controlPath;\n\t}\n\n\tdispatchEvent?.( name, eventData );\n};\n","import type * as React from 'react';\nimport { AlertTriangleFilledIcon, InfoCircleFilledIcon } from '@elementor/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { type TVariable, type TVariablesList } from '../storage';\n\nexport const ERROR_MESSAGES = {\n\tMISSING_VARIABLE_NAME: __( 'Give your variable a name.', 'elementor' ),\n\tMISSING_VARIABLE_VALUE: __( 'Add a value to complete your variable.', 'elementor' ),\n\tINVALID_CHARACTERS: __( 'Use letters, numbers, dashes (-), or underscores (_) for the name.', 'elementor' ),\n\tNO_NON_SPECIAL_CHARACTER: __( 'Names have to include at least one non-special character.', 'elementor' ),\n\tVARIABLE_LABEL_MAX_LENGTH: __( 'Keep names up to 50 characters.', 'elementor' ),\n\tDUPLICATED_LABEL: __( 'This variable name already exists. Please choose a unique name.', 'elementor' ),\n\tUNEXPECTED_ERROR: __( 'There was a glitch. Try saving your variable again.', 'elementor' ),\n\tBATCH: {\n\t\tDUPLICATED_LABELS: ( count: number, name: string ) =>\n\t\t\t// eslint-disable-next-line @wordpress/i18n-translator-comments\n\t\t\tsprintf( __( 'We found %1$d duplicated %2$s.', 'elementor' ), count, name ),\n\t\tUNEXPECTED_ERROR: __( 'There was a glitch.', 'elementor' ),\n\t\tDUPLICATED_LABEL_ACTION: __( 'Take me there', 'elementor' ),\n\t\tDUPLICATED_LABEL_ACTION_MESSAGE: __( 'Please rename the variables.', 'elementor' ),\n\t\tUNEXPECTED_ERROR_ACTION_MESSAGE: __( 'Try saving your variables again.', 'elementor' ),\n\t},\n} as const;\n\nexport const VARIABLE_LABEL_MAX_LENGTH = 50;\n\ntype BatchErrorData = {\n\t[ id: string ]: {\n\t\tstatus?: number;\n\t\tmessage?: string;\n\t};\n};\nexport type ErrorResponse = {\n\tresponse?: {\n\t\tdata?: {\n\t\t\tcode?: string;\n\t\t\tdata?: BatchErrorData;\n\t\t};\n\t};\n};\n\nexport type ErrorAction = {\n\tlabel?: string;\n\tmessage?: string;\n\tcallback?: () => void;\n\tdata?: {\n\t\tduplicatedIds?: string[];\n\t};\n};\n\nexport type MappedError = {\n\tfield: string;\n\tmessage: string;\n\taction?: ErrorAction;\n\tseverity?: 'error' | 'secondary';\n\tIconComponent?: React.ElementType;\n};\n\nexport const mapServerError = ( error: ErrorResponse ): MappedError | undefined => {\n\tif ( error?.response?.data?.code === 'duplicated_label' ) {\n\t\treturn {\n\t\t\tfield: 'label',\n\t\t\tmessage: ERROR_MESSAGES.DUPLICATED_LABEL,\n\t\t};\n\t}\n\n\tif ( error?.response?.data?.code === 'batch_duplicated_label' ) {\n\t\tconst errorData = error?.response?.data?.data ?? {};\n\t\tconst count = Object.keys( errorData ).length;\n\t\tconst name = count === 1 ? 'name' : 'names';\n\t\tconst duplicatedIds = Object.keys( errorData );\n\n\t\treturn {\n\t\t\tfield: 'label',\n\t\t\tmessage: ERROR_MESSAGES.BATCH.DUPLICATED_LABELS( count, name ),\n\t\t\tseverity: 'error',\n\t\t\tIconComponent: AlertTriangleFilledIcon,\n\t\t\taction: {\n\t\t\t\tlabel: ERROR_MESSAGES.BATCH.DUPLICATED_LABEL_ACTION,\n\t\t\t\tmessage: ERROR_MESSAGES.BATCH.DUPLICATED_LABEL_ACTION_MESSAGE,\n\t\t\t\tdata: {\n\t\t\t\t\tduplicatedIds,\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tif ( error?.response?.data?.code === 'batch_operation_failed' ) {\n\t\treturn {\n\t\t\tfield: 'label',\n\t\t\tmessage: ERROR_MESSAGES.BATCH.UNEXPECTED_ERROR,\n\t\t\tseverity: 'secondary',\n\t\t\tIconComponent: InfoCircleFilledIcon,\n\t\t\taction: {\n\t\t\t\tmessage: ERROR_MESSAGES.BATCH.UNEXPECTED_ERROR_ACTION_MESSAGE,\n\t\t\t},\n\t\t};\n\t}\n\n\treturn undefined;\n};\n\nexport const validateLabel = ( name: string, variables?: TVariablesList ): string => {\n\tif ( ! name.trim() ) {\n\t\treturn ERROR_MESSAGES.MISSING_VARIABLE_NAME;\n\t}\n\n\tconst allowedChars = /^[a-zA-Z0-9_-]+$/;\n\tif ( ! allowedChars.test( name ) ) {\n\t\treturn ERROR_MESSAGES.INVALID_CHARACTERS;\n\t}\n\n\tconst hasAlphanumeric = /[a-zA-Z0-9]/;\n\tif ( ! hasAlphanumeric.test( name ) ) {\n\t\treturn ERROR_MESSAGES.NO_NON_SPECIAL_CHARACTER;\n\t}\n\n\tif ( VARIABLE_LABEL_MAX_LENGTH < name.length ) {\n\t\treturn ERROR_MESSAGES.VARIABLE_LABEL_MAX_LENGTH;\n\t}\n\n\tif ( Object.values( variables ?? {} ).some( ( variable: TVariable ) => variable.label === name ) ) {\n\t\treturn ERROR_MESSAGES.DUPLICATED_LABEL;\n\t}\n\n\treturn '';\n};\n\nexport const labelHint = ( name: string ): string => {\n\tconst hintThreshold = VARIABLE_LABEL_MAX_LENGTH * 0.8 - 1;\n\tif ( hintThreshold < name.length ) {\n\t\treturn ERROR_MESSAGES.VARIABLE_LABEL_MAX_LENGTH;\n\t}\n\n\treturn '';\n};\n\nexport const validateValue = ( value: string ): string => {\n\tif ( ! value.trim() ) {\n\t\treturn ERROR_MESSAGES.MISSING_VARIABLE_VALUE;\n\t}\n\n\treturn '';\n};\n","import { type ForwardRefExoticComponent, type JSX, type RefAttributes } from 'react';\nimport { styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { stylesInheritanceTransformersRegistry } from '@elementor/editor-editing-panel';\nimport {\n\ttype createPropUtils,\n\ttype PropType,\n\ttype PropTypeKey,\n\ttype PropTypeUtil,\n\ttype PropValue,\n} from '@elementor/editor-props';\nimport { type SvgIconProps } from '@elementor/ui';\n\nimport { inheritanceTransformer } from '../transformers/inheritance-transformer';\nimport { variableTransformer } from '../transformers/variable-transformer';\nimport { type NormalizedVariable, type Variable } from '../types';\n\nexport type ValueFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( value: string ) => void;\n\tpropType?: PropType;\n\terror?: { value: string; message: string };\n};\n\ntype FallbackPropTypeUtil = ReturnType< typeof createPropUtils >;\n\ntype VariableTypeOptions = {\n\ticon: ForwardRefExoticComponent< Omit< SvgIconProps, 'ref' > & RefAttributes< SVGSVGElement > >;\n\tstartIcon?: ( { value }: { value: string } ) => JSX.Element;\n\tvalueField: ( { value, onChange, onValidationChange, propType, error }: ValueFieldProps ) => JSX.Element;\n\tvariableType: string;\n\tdefaultValue?: string;\n\tfallbackPropTypeUtil: FallbackPropTypeUtil;\n\tpropTypeUtil: PropTypeUtil< string, string >;\n\tselectionFilter?: ( variables: NormalizedVariable[], propType: PropType ) => NormalizedVariable[];\n\tvalueTransformer?: ( value: string ) => PropValue;\n\tisCompatible?: ( propType: PropType, variable: Variable ) => boolean;\n};\n\nexport type VariableTypesMap = Record< string, VariableTypeOptions >;\n\nexport function createVariableTypeRegistry() {\n\tconst variableTypes: VariableTypesMap = {};\n\n\tconst registerVariableType = ( {\n\t\ticon,\n\t\tstartIcon,\n\t\tvalueField,\n\t\tpropTypeUtil,\n\t\tvariableType,\n\t\tdefaultValue,\n\t\tselectionFilter,\n\t\tvalueTransformer,\n\t\tfallbackPropTypeUtil,\n\t\tisCompatible,\n\t}: VariableTypeOptions ) => {\n\t\tif ( variableTypes[ propTypeUtil.key ] ) {\n\t\t\tthrow new Error( `Variable with key \"${ propTypeUtil.key }\" is already registered.` );\n\t\t}\n\n\t\tif ( ! isCompatible ) {\n\t\t\tisCompatible = ( propType, variable: Variable ) => {\n\t\t\t\tif ( 'union' === propType.kind ) {\n\t\t\t\t\tif ( variable.type in propType.prop_types ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}\n\n\t\tvariableTypes[ propTypeUtil.key ] = {\n\t\t\ticon,\n\t\t\tstartIcon,\n\t\t\tvalueField,\n\t\t\tpropTypeUtil,\n\t\t\tvariableType,\n\t\t\tdefaultValue,\n\t\t\tselectionFilter,\n\t\t\tvalueTransformer,\n\t\t\tfallbackPropTypeUtil,\n\t\t\tisCompatible,\n\t\t};\n\n\t\tregisterTransformer( propTypeUtil.key );\n\t\tregisterInheritanceTransformer( propTypeUtil.key );\n\t};\n\n\tconst registerTransformer = ( key: PropTypeKey ) => {\n\t\tstyleTransformersRegistry.register( key, variableTransformer );\n\t};\n\n\tconst registerInheritanceTransformer = ( key: PropTypeKey ) => {\n\t\tstylesInheritanceTransformersRegistry.register( key, inheritanceTransformer );\n\t};\n\n\tconst getVariableType = ( key: string ) => {\n\t\treturn variableTypes[ key ];\n\t};\n\n\tconst getVariableTypes = () => {\n\t\treturn variableTypes;\n\t};\n\n\tconst hasVariableType = ( key: string ) => {\n\t\treturn key in variableTypes;\n\t};\n\n\treturn {\n\t\tregisterVariableType,\n\t\tgetVariableType,\n\t\tgetVariableTypes,\n\t\thasVariableType,\n\t};\n}\n","import * as React from 'react';\nimport { createTransformer } from '@elementor/editor-canvas';\nimport { Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { ColorIndicator } from '../components/ui/color-indicator';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { service } from '../service';\nimport { resolveCssVariable } from './utils/resolve-css-variable';\n\nexport const inheritanceTransformer = createTransformer( ( id: string ) => {\n\tconst variables = service.variables();\n\tconst variable = variables[ id ];\n\n\tif ( ! variable ) {\n\t\treturn <span>{ __( 'Missing variable', 'elementor' ) }</span>;\n\t}\n\n\tconst showColorIndicator = variable.type === colorVariablePropTypeUtil.key;\n\tconst css = resolveCssVariable( id, variable );\n\n\treturn (\n\t\t<Stack direction=\"row\" spacing={ 0.5 } sx={ { paddingInline: '1px' } } alignItems=\"center\">\n\t\t\t{ showColorIndicator && <ColorIndicator size=\"inherit\" value={ variable.value } /> }\n\t\t\t<Typography variant=\"caption\" overflow=\"hidden\" whiteSpace=\"nowrap\" textOverflow=\"ellipsis\">\n\t\t\t\t{ css }\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n} );\n","import { styled, UnstableColorIndicator } from '@elementor/ui';\n\nexport const ColorIndicator = styled( UnstableColorIndicator )( ( { theme } ) => ( {\n\tborderRadius: `${ theme.shape.borderRadius / 2 }px`,\n\tmarginRight: theme.spacing( 0.25 ),\n} ) );\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const colorVariablePropTypeUtil = createPropUtils( 'global-color-variable', z.string() );\n","import { __ } from '@wordpress/i18n';\n\nimport { apiClient } from './api';\nimport { buildOperationsArray, type OperationResult } from './batch-operations';\nimport { OP_RW, Storage, type TVariablesList } from './storage';\nimport { styleVariablesRepository } from './style-variables-repository';\nimport { type Variable } from './types';\n\nconst storage = new Storage();\n\nexport const service = {\n\tvariables: (): TVariablesList => {\n\t\treturn storage.load();\n\t},\n\n\tgetWatermark: (): number => {\n\t\treturn storage.state.watermark;\n\t},\n\n\tinit: () => {\n\t\treturn service.load();\n\t},\n\n\tload: () => {\n\t\treturn apiClient\n\t\t\t.list()\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variables, watermark } = data;\n\n\t\t\t\tstorage.fill( variables, watermark );\n\n\t\t\t\tstyleVariablesRepository.update( variables );\n\n\t\t\t\treturn variables;\n\t\t\t} );\n\t},\n\n\tcreate: ( { type, label, value }: Variable ) => {\n\t\treturn apiClient\n\t\t\t.create( type, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tconst errorMessage = payload?.message || __( 'Unexpected response from server', 'elementor' );\n\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...createdVariable } = variable;\n\n\t\t\t\tstorage.add( variableId, createdVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: createdVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: createdVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\tupdate: ( id: string, { label, value }: Omit< Variable, 'type' > ) => {\n\t\treturn apiClient\n\t\t\t.update( id, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tconst errorMessage = payload?.message || __( 'Unexpected response from server', 'elementor' );\n\t\t\t\t\tthrow new Error( errorMessage );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...updatedVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, updatedVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: updatedVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: updatedVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\tdelete: ( id: string ) => {\n\t\treturn apiClient\n\t\t\t.delete( id )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...deletedVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, deletedVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: deletedVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: deletedVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\trestore: ( id: string, label?: string, value?: string ) => {\n\t\treturn apiClient\n\t\t\t.restore( id, label, value )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { variable, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tconst { id: variableId, ...restoredVariable } = variable;\n\n\t\t\t\tstorage.update( variableId, restoredVariable );\n\n\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t[ variableId ]: restoredVariable,\n\t\t\t\t} );\n\n\t\t\t\treturn {\n\t\t\t\t\tid: variableId,\n\t\t\t\t\tvariable: restoredVariable,\n\t\t\t\t};\n\t\t\t} );\n\t},\n\n\tbatchSave: ( originalVariables: TVariablesList, currentVariables: TVariablesList ) => {\n\t\tconst operations = buildOperationsArray( originalVariables, currentVariables );\n\t\tconst batchPayload = { operations, watermark: storage.state.watermark };\n\n\t\tif ( operations.length === 0 ) {\n\t\t\treturn Promise.resolve( {\n\t\t\t\tsuccess: true,\n\t\t\t\twatermark: storage.state.watermark,\n\t\t\t\toperations: 0,\n\t\t\t} );\n\t\t}\n\n\t\treturn apiClient\n\t\t\t.batch( batchPayload )\n\t\t\t.then( ( response ) => {\n\t\t\t\tconst { success, data: payload } = response.data;\n\n\t\t\t\tif ( ! success ) {\n\t\t\t\t\tthrow new Error( 'Unexpected response from server' );\n\t\t\t\t}\n\n\t\t\t\treturn payload;\n\t\t\t} )\n\t\t\t.then( ( data ) => {\n\t\t\t\tconst { results, watermark } = data;\n\n\t\t\t\thandleWatermark( OP_RW, watermark );\n\n\t\t\t\tif ( results ) {\n\t\t\t\t\tresults.forEach( ( result: OperationResult ) => {\n\t\t\t\t\t\tif ( result.variable ) {\n\t\t\t\t\t\t\tconst { id: variableId, ...variableData } = result.variable;\n\n\t\t\t\t\t\t\tif ( result.type === 'create' ) {\n\t\t\t\t\t\t\t\tstorage.add( variableId, variableData );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstorage.update( variableId, variableData );\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t\t\t\t\t[ variableId ]: variableData,\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\n\t\t\t\treturn {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\twatermark,\n\t\t\t\t\toperations: operations.length,\n\t\t\t\t};\n\t\t\t} );\n\t},\n};\n\nconst handleWatermark = ( operation: string, newWatermark: number ) => {\n\tif ( storage.watermarkDiff( operation, newWatermark ) ) {\n\t\tsetTimeout( () => service.load(), 500 );\n\t}\n\tstorage.watermark( newWatermark );\n};\n","import { httpService } from '@elementor/http-client';\n\nimport { type OperationType } from './batch-operations';\n\nconst BASE_PATH = 'elementor/v1/variables';\n\ntype RestoreVariablePayload = {\n\tid: string;\n\tlabel?: string;\n\tvalue?: string;\n};\n\nexport type BatchOperation = {\n\ttype: OperationType;\n\tid?: string;\n\tvariable?: {\n\t\tid?: string;\n\t\ttype?: string;\n\t\tlabel?: string;\n\t\tvalue?: string;\n\t};\n\tlabel?: string;\n\tvalue?: string;\n};\n\nexport type BatchPayload = {\n\twatermark: number;\n\toperations: BatchOperation[];\n};\n\nexport const apiClient = {\n\tlist: () => {\n\t\treturn httpService().get( BASE_PATH + '/list' );\n\t},\n\n\tcreate: ( type: string, label: string, value: string ) => {\n\t\treturn httpService().post( BASE_PATH + '/create', {\n\t\t\ttype,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} );\n\t},\n\n\tupdate: ( id: string, label: string, value: string ) => {\n\t\treturn httpService().put( BASE_PATH + '/update', {\n\t\t\tid,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} );\n\t},\n\n\tdelete: ( id: string ) => {\n\t\treturn httpService().post( BASE_PATH + '/delete', { id } );\n\t},\n\n\trestore: ( id: string, label?: string, value?: string ) => {\n\t\tconst payload: RestoreVariablePayload = { id };\n\n\t\tif ( label ) {\n\t\t\tpayload.label = label;\n\t\t}\n\n\t\tif ( value ) {\n\t\t\tpayload.value = value;\n\t\t}\n\n\t\treturn httpService().post( BASE_PATH + '/restore', payload );\n\t},\n\n\tbatch: ( payload: BatchPayload ) => {\n\t\treturn httpService().post( BASE_PATH + '/batch', payload );\n\t},\n};\n","import { type BatchOperation } from './api';\nimport { type TVariable, type TVariablesList } from './storage';\n\nexport type OperationType = 'create' | 'update' | 'delete' | 'restore';\n\nexport type OperationResult = {\n\tid: string;\n\ttype: OperationType;\n\tvariable?: TVariable & { id: string };\n\tdeleted?: boolean;\n};\n\nexport const generateTempId = (): string => {\n\tconst timestamp = Date.now().toString( 36 );\n\tconst random = Math.random().toString( 36 ).substring( 2, 8 );\n\treturn `tmp-${ timestamp }-${ random }`;\n};\n\nexport const isTempId = ( id: string ): boolean => {\n\treturn id.startsWith( 'tmp-' );\n};\n\nexport const buildOperationsArray = (\n\toriginalVariables: TVariablesList,\n\tcurrentVariables: TVariablesList\n): BatchOperation[] => {\n\tconst operations: BatchOperation[] = [];\n\n\tObject.entries( currentVariables ).forEach( ( [ id, variable ] ) => {\n\t\tif ( isTempId( id ) ) {\n\t\t\toperations.push( {\n\t\t\t\ttype: 'create',\n\t\t\t\tvariable: {\n\t\t\t\t\t...variable,\n\t\t\t\t\tid,\n\t\t\t\t},\n\t\t\t} );\n\t\t} else if ( originalVariables[ id ] ) {\n\t\t\tconst original = originalVariables[ id ];\n\n\t\t\tif ( original.deleted && ! variable.deleted ) {\n\t\t\t\toperations.push( {\n\t\t\t\t\ttype: 'restore',\n\t\t\t\t\tid,\n\t\t\t\t\t...( original.label !== variable.label && { label: variable.label } ),\n\t\t\t\t\t...( original.value !== variable.value && { value: variable.value } ),\n\t\t\t\t} );\n\t\t\t} else if (\n\t\t\t\t! variable.deleted &&\n\t\t\t\t( original.label !== variable.label ||\n\t\t\t\t\toriginal.value !== variable.value ||\n\t\t\t\t\toriginal.order !== variable.order )\n\t\t\t) {\n\t\t\t\toperations.push( {\n\t\t\t\t\ttype: 'update',\n\t\t\t\t\tid,\n\t\t\t\t\tvariable: {\n\t\t\t\t\t\t...( original.label !== variable.label && { label: variable.label } ),\n\t\t\t\t\t\t...( original.value !== variable.value && { value: variable.value } ),\n\t\t\t\t\t\t...( original.order !== variable.order && { order: variable.order } ),\n\t\t\t\t\t},\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\t} );\n\n\tObject.entries( originalVariables ).forEach( ( [ id, variable ] ) => {\n\t\tif ( isTempId( id ) || variable.deleted ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst currentVariable = currentVariables[ id ];\n\n\t\tif ( ! currentVariable || currentVariable.deleted ) {\n\t\t\toperations.push( {\n\t\t\t\ttype: 'delete',\n\t\t\t\tid,\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn operations.filter( ( op ) => {\n\t\tconst id = op.id || op.variable?.id;\n\t\treturn id && ! ( isTempId( id ) && currentVariables[ id ]?.deleted );\n\t} );\n};\n","export type TVariable = {\n\ttype: string;\n\tlabel: string;\n\tvalue: string;\n\torder?: number;\n\tdeleted?: boolean;\n\tdeleted_at?: string;\n};\n\nexport type TVariablesList = Record< string, TVariable >;\n\nconst STORAGE_KEY = 'elementor-global-variables';\nconst STORAGE_WATERMARK_KEY = 'elementor-global-variables-watermark';\n\nexport const OP_RW = 'RW';\nconst OP_RO = 'RO';\n\nexport class Storage {\n\tstate: {\n\t\twatermark: number;\n\t\tvariables: TVariablesList;\n\t};\n\n\tnotifyChange() {\n\t\twindow.dispatchEvent( new Event( 'variables:updated' ) );\n\t}\n\n\tconstructor() {\n\t\tthis.state = {\n\t\t\twatermark: -1,\n\t\t\tvariables: {},\n\t\t};\n\t}\n\n\tload() {\n\t\tthis.state.watermark = parseInt( localStorage.getItem( STORAGE_WATERMARK_KEY ) || '-1' );\n\t\tthis.state.variables = JSON.parse( localStorage.getItem( STORAGE_KEY ) || '{}' ) as TVariablesList;\n\t\treturn this.state.variables;\n\t}\n\n\tfill( variables: TVariablesList, watermark: number ) {\n\t\tthis.state.variables = {};\n\t\tif ( variables && Object.keys( variables ).length ) {\n\t\t\tthis.state.variables = variables;\n\t\t}\n\n\t\tthis.state.watermark = watermark;\n\n\t\tlocalStorage.setItem( STORAGE_WATERMARK_KEY, this.state.watermark.toString() );\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t\tthis.notifyChange();\n\t}\n\n\tadd( id: string, variable: TVariable ) {\n\t\tthis.load();\n\t\tthis.state.variables[ id ] = variable;\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t\tthis.notifyChange();\n\t}\n\n\tupdate( id: string, variable: TVariable ) {\n\t\tthis.load();\n\t\tthis.state.variables[ id ] = variable;\n\t\tlocalStorage.setItem( STORAGE_KEY, JSON.stringify( this.state.variables ) );\n\t\tthis.notifyChange();\n\t}\n\n\twatermark( watermark: number ) {\n\t\tthis.state.watermark = watermark;\n\t\tlocalStorage.setItem( STORAGE_WATERMARK_KEY, this.state.watermark.toString() );\n\t}\n\n\twatermarkDiff( operation: string, newWatermark: number ) {\n\t\tconst diff = newWatermark - this.state.watermark;\n\n\t\tif ( OP_RW === operation ) {\n\t\t\treturn 1 !== diff;\n\t\t}\n\n\t\tif ( OP_RO === operation ) {\n\t\t\treturn 0 !== diff;\n\t\t}\n\n\t\treturn false;\n\t}\n}\n","import { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const fontVariablePropTypeUtil = createPropUtils( 'global-font-variable', z.string() );\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\nimport { enqueueFont } from './sync/enqueue-font';\nimport { type StyleVariables, type Variable } from './types';\n\ntype VariablesChangeCallback = ( variables: StyleVariables ) => void;\ntype Variables = Record< string, Variable >;\n\nexport const createStyleVariablesRepository = () => {\n\tconst variables: StyleVariables = {};\n\tlet subscription: VariablesChangeCallback;\n\n\tconst subscribe = ( cb: VariablesChangeCallback ) => {\n\t\tsubscription = cb;\n\n\t\treturn () => {\n\t\t\tsubscription = () => {};\n\t\t};\n\t};\n\n\tconst notify = () => {\n\t\tif ( typeof subscription === 'function' ) {\n\t\t\tsubscription( { ...variables } );\n\t\t}\n\t};\n\n\tconst shouldUpdate = ( key: string, maybeUpdated: Variable ): boolean => {\n\t\tif ( ! ( key in variables ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ].label !== maybeUpdated.label ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ].value !== maybeUpdated.value ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( ! variables[ key ]?.deleted && maybeUpdated?.deleted ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( variables[ key ]?.deleted && ! maybeUpdated?.deleted ) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t};\n\n\tconst applyUpdates = ( updatedVars: Variables ): boolean => {\n\t\tlet hasChanges = false;\n\n\t\tfor ( const [ key, variable ] of Object.entries( updatedVars ) ) {\n\t\t\tif ( shouldUpdate( key, variable ) ) {\n\t\t\t\tvariables[ key ] = variable;\n\n\t\t\t\tif ( variable.type === fontVariablePropTypeUtil.key ) {\n\t\t\t\t\tfontEnqueue( variable.value );\n\t\t\t\t}\n\n\t\t\t\thasChanges = true;\n\t\t\t}\n\t\t}\n\n\t\treturn hasChanges;\n\t};\n\n\tconst fontEnqueue = ( value: string ): void => {\n\t\tif ( ! value ) {\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tenqueueFont( value );\n\t\t} catch {\n\t\t\t// This prevents font enqueueing failures from breaking variable updates\n\t\t}\n\t};\n\n\tconst update = ( updatedVars: Variables ) => {\n\t\tif ( applyUpdates( updatedVars ) ) {\n\t\t\tnotify();\n\t\t}\n\t};\n\n\treturn {\n\t\tsubscribe,\n\t\tupdate,\n\t};\n};\n","import { createStyleVariablesRepository } from './create-style-variables-repository';\n\nexport const styleVariablesRepository = createStyleVariablesRepository();\n","import { type TVariable } from '../../storage';\n\nexport const resolveCssVariable = ( id: string, variable: TVariable ) => {\n\tlet name = id;\n\tlet fallbackValue = '';\n\n\tif ( variable ) {\n\t\tfallbackValue = variable.value;\n\t}\n\n\tif ( variable && ! variable.deleted ) {\n\t\tname = variable.label;\n\t}\n\n\tif ( ! name.trim() ) {\n\t\treturn null;\n\t}\n\n\tif ( ! fallbackValue.trim() ) {\n\t\treturn `var(--${ name })`;\n\t}\n\n\treturn `var(--${ name }, ${ fallbackValue })`;\n};\n","import { createTransformer } from '@elementor/editor-canvas';\n\nimport { service } from '../service';\nimport { resolveCssVariable } from './utils/resolve-css-variable';\n\nexport const variableTransformer = createTransformer( ( id: string ) => {\n\tconst variables = service.variables();\n\n\tif ( ! variables[ id ] ) {\n\t\treturn null;\n\t}\n\n\treturn resolveCssVariable( id, variables[ id ] );\n} );\n","import { createVariableTypeRegistry } from './create-variable-type-registry';\n\nexport const { registerVariableType, getVariableType, getVariableTypes, hasVariableType } =\n\tcreateVariableTypeRegistry();\n","import * as React from 'react';\nimport { AlertOctagonFilledIcon } from '@elementor/icons';\nimport {\n\tButton,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst TITLE_ID = 'delete-variable-dialog';\n\nexport const DeleteConfirmationDialog = ( {\n\topen,\n\tlabel,\n\tcloseDialog,\n\tonConfirm,\n}: {\n\topen: boolean;\n\tlabel: string;\n\tcloseDialog: () => void;\n\tonConfirm: () => void;\n} ) => {\n\treturn (\n\t\t<Dialog open={ open } onClose={ closeDialog } aria-labelledby={ TITLE_ID } maxWidth=\"xs\">\n\t\t\t<DialogTitle id={ TITLE_ID } display=\"flex\" alignItems=\"center\" gap={ 1 } sx={ { lineHeight: 1 } }>\n\t\t\t\t<AlertOctagonFilledIcon color=\"error\" />\n\t\t\t\t{ __( 'Delete this variable?', 'elementor' ) }\n\t\t\t</DialogTitle>\n\t\t\t<DialogContent>\n\t\t\t\t<DialogContentText variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __( 'All elements using', 'elementor' ) }\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t<Typography variant=\"subtitle2\" component=\"span\" sx={ { lineBreak: 'anywhere' } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t&nbsp;\n\t\t\t\t\t{ __( 'will keep their current values, but the variable itself will be removed.', 'elementor' ) }\n\t\t\t\t</DialogContentText>\n\t\t\t</DialogContent>\n\t\t\t<DialogActions>\n\t\t\t\t<Button color=\"secondary\" onClick={ closeDialog }>\n\t\t\t\t\t{ __( 'Not now', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t\t<Button variant=\"contained\" color=\"error\" onClick={ onConfirm }>\n\t\t\t\t\t{ __( 'Delete', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t</DialogActions>\n\t\t</Dialog>\n\t);\n};\n","import * as React from 'react';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePermissions } from '../../hooks/use-permissions';\n\ntype Props = {\n\ticon?: React.ReactNode;\n\ttitle: string;\n\tmessage: string;\n\tonAdd?: () => void;\n};\n\nexport const EmptyState = ( { icon, title, message, onAdd }: Props ) => {\n\tconst canAdd = usePermissions().canAdd();\n\n\treturn (\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"flex-start\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t>\n\t\t\t{ icon }\n\n\t\t\t{ canAdd ? (\n\t\t\t\t<>\n\t\t\t\t\t<Content title={ title } message={ message } />\n\t\t\t\t\t{ onAdd && (\n\t\t\t\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" onClick={ onAdd }>\n\t\t\t\t\t\t\t{ __( 'Create a variable', 'elementor' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t) }\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<Content\n\t\t\t\t\ttitle={ __( 'There are no variables', 'elementor' ) }\n\t\t\t\t\tmessage={ __( 'With your current role, you can only connect and detach variables.', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</Stack>\n\t);\n};\n\ntype NoVariablesContentProps = {\n\ttitle: string;\n\tmessage: string;\n};\n\nfunction Content( { title, message }: NoVariablesContentProps ) {\n\treturn (\n\t\t<>\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ title }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"180px\">\n\t\t\t\t{ message }\n\t\t\t</Typography>\n\t\t</>\n\t);\n}\n","import { useCurrentUserCapabilities } from '@elementor/editor-current-user';\n\nexport const usePermissions = () => {\n\tconst { canUser } = useCurrentUserCapabilities();\n\n\treturn {\n\t\tcanAssign: () => canUser( 'edit_posts' ),\n\t\tcanUnlink: () => canUser( 'edit_posts' ),\n\t\tcanAdd: () => canUser( 'manage_options' ),\n\t\tcanDelete: () => canUser( 'manage_options' ),\n\t\tcanEdit: () => canUser( 'manage_options' ),\n\t\tcanRestore: () => canUser( 'manage_options' ),\n\t\tcanManageSettings: () => canUser( 'manage_options' ),\n\t};\n};\n","import * as React from 'react';\nimport { Link, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype Props = {\n\tsearchValue: string;\n\tonClear?: () => void;\n\ticon?: React.ReactNode;\n};\n\nexport const NoSearchResults = ( { searchValue, onClear, icon }: Props ) => {\n\treturn (\n\t\t<Stack\n\t\t\tgap={ 1 }\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\tp={ 2.5 }\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { pb: 3.5, pt: 8 } }\n\t\t>\n\t\t\t{ icon }\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Sorry, nothing matched', 'elementor' ) }\n\t\t\t\t<br />\n\t\t\t\t&ldquo;{ searchValue }&rdquo;.\n\t\t\t</Typography>\n\t\t\t<Typography align=\"center\" variant=\"caption\" sx={ { display: 'flex', flexDirection: 'column' } }>\n\t\t\t\t{ __( 'Try something else.', 'elementor' ) }\n\t\t\t\t<Link color=\"text.secondary\" variant=\"caption\" component=\"button\" onClick={ onClear }>\n\t\t\t\t\t{ __( 'Clear & try again', 'elementor' ) }\n\t\t\t\t</Link>\n\t\t\t</Typography>\n\t\t</Stack>\n\t);\n};\n","import { useCallback, useState } from 'react';\n\nexport const useAutoEdit = () => {\n\tconst [ autoEditVariableId, setAutoEditVariableId ] = useState< string | undefined >( undefined );\n\n\tconst startAutoEdit = useCallback( ( variableId: string ) => {\n\t\tsetAutoEditVariableId( variableId );\n\t}, [] );\n\n\tconst handleAutoEditComplete = useCallback( () => {\n\t\tsetTimeout( () => {\n\t\t\tsetAutoEditVariableId( undefined );\n\t\t}, 100 );\n\t}, [] );\n\n\treturn {\n\t\tautoEditVariableId,\n\t\tstartAutoEdit,\n\t\thandleAutoEditComplete,\n\t};\n};\n","import { useCallback, useRef } from 'react';\n\nexport interface UseErrorNavigationReturn {\n\tcreateNavigationCallback: (\n\t\tids: string[],\n\t\tonNavigate: ( id: string ) => void,\n\t\tonComplete: () => void\n\t) => () => void;\n\tresetNavigation: () => void;\n}\n\nexport const useErrorNavigation = (): UseErrorNavigationReturn => {\n\tconst currentIndexRef = useRef( 0 );\n\n\tconst createNavigationCallback = useCallback(\n\t\t( ids: string[], onNavigate: ( id: string ) => void, onComplete: () => void ) => {\n\t\t\treturn () => {\n\t\t\t\tif ( ! ids?.length ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst currentIndex = currentIndexRef.current;\n\t\t\t\tconst currentId = ids[ currentIndex ];\n\n\t\t\t\tif ( currentId ) {\n\t\t\t\t\tonNavigate( currentId );\n\n\t\t\t\t\tconst nextIndex = currentIndex + 1;\n\t\t\t\t\tif ( nextIndex >= ids.length ) {\n\t\t\t\t\t\tonComplete();\n\t\t\t\t\t\tcurrentIndexRef.current = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcurrentIndexRef.current = nextIndex;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst resetNavigation = useCallback( () => {\n\t\tcurrentIndexRef.current = 0;\n\t}, [] );\n\n\treturn {\n\t\tcreateNavigationCallback,\n\t\tresetNavigation,\n\t};\n};\n","import { useCallback, useState } from 'react';\n\nimport { generateTempId } from '../../../batch-operations';\nimport { getVariables } from '../../../hooks/use-prop-variables';\nimport { service } from '../../../service';\nimport { type TVariablesList } from '../../../storage';\nimport { filterBySearch } from '../../../utils/filter-by-search';\n\nexport const useVariablesManagerState = () => {\n\tconst [ variables, setVariables ] = useState( () => getVariables( false ) );\n\tconst [ deletedVariables, setDeletedVariables ] = useState< string[] >( [] );\n\tconst [ isSaveDisabled, setIsSaveDisabled ] = useState( false );\n\tconst [ isDirty, setIsDirty ] = useState( false );\n\tconst [ isSaving, setIsSaving ] = useState( false );\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst handleOnChange = useCallback(\n\t\t( newVariables: TVariablesList ) => {\n\t\t\tsetVariables( { ...variables, ...newVariables } );\n\t\t\tsetIsDirty( true );\n\t\t},\n\t\t[ variables ]\n\t);\n\n\tconst createVariable = useCallback( ( type: string, defaultName: string, defaultValue: string ) => {\n\t\tconst newId = generateTempId();\n\t\tconst newVariable = {\n\t\t\tid: newId,\n\t\t\tlabel: defaultName.trim(),\n\t\t\tvalue: defaultValue.trim(),\n\t\t\ttype,\n\t\t};\n\n\t\tsetVariables( ( prev ) => ( { ...prev, [ newId ]: newVariable } ) );\n\t\tsetIsDirty( true );\n\n\t\treturn newId;\n\t}, [] );\n\n\tconst handleDeleteVariable = useCallback( ( itemId: string ) => {\n\t\tsetDeletedVariables( ( prev ) => [ ...prev, itemId ] );\n\t\tsetVariables( ( prev ) => ( { ...prev, [ itemId ]: { ...prev[ itemId ], deleted: true } } ) );\n\t\tsetIsDirty( true );\n\t}, [] );\n\n\tconst handleSearch = ( searchTerm: string ) => {\n\t\tsetSearchValue( searchTerm );\n\t};\n\n\tconst handleSave = useCallback( async (): Promise< { success: boolean } > => {\n\t\tconst originalVariables = getVariables( false );\n\t\tsetIsSaving( true );\n\t\tconst result = await service.batchSave( originalVariables, variables );\n\n\t\tif ( result.success ) {\n\t\t\tawait service.load();\n\t\t\tconst updatedVariables = service.variables();\n\n\t\t\tsetVariables( updatedVariables );\n\t\t\tsetDeletedVariables( [] );\n\t\t\tsetIsDirty( false );\n\t\t}\n\n\t\treturn { success: result.success };\n\t}, [ variables ] );\n\n\tconst filteredVariables = () => {\n\t\tconst list = Object.entries( variables ).map( ( [ id, value ] ) => ( { ...value, id } ) );\n\t\tconst filtered = filterBySearch( list, searchValue );\n\n\t\treturn Object.fromEntries( filtered.map( ( { id, ...rest } ) => [ id, rest ] ) );\n\t};\n\n\treturn {\n\t\tvariables: filteredVariables(),\n\t\tdeletedVariables,\n\t\tisDirty,\n\t\tisSaveDisabled,\n\t\thandleOnChange,\n\t\tcreateVariable,\n\t\thandleDeleteVariable,\n\t\thandleSave,\n\t\tisSaving,\n\t\thandleSearch,\n\t\tsearchValue,\n\t\tsetIsSaving,\n\t\tsetIsSaveDisabled,\n\t};\n};\n","import { useMemo } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { service } from '../service';\nimport { type NormalizedVariable, type Variable } from '../types';\nimport { filterBySearch } from '../utils/filter-by-search';\n\nexport const getVariables = ( includeDeleted = true ) => {\n\tconst variables = service.variables();\n\n\tif ( includeDeleted ) {\n\t\treturn variables;\n\t}\n\n\treturn Object.fromEntries( Object.entries( variables ).filter( ( [ , variable ] ) => ! variable.deleted ) );\n};\n\nexport const useVariable = ( key: string ) => {\n\tconst variables = getVariables();\n\n\tif ( ! variables?.[ key ] ) {\n\t\treturn null;\n\t}\n\n\treturn {\n\t\t...variables[ key ],\n\t\tkey,\n\t};\n};\n\nexport const useFilteredVariables = ( searchValue: string, propTypeKey: string ) => {\n\tconst baseVariables = usePropVariables( propTypeKey );\n\n\tconst typeFilteredVariables = useVariableSelectionFilter( baseVariables );\n\tconst searchFilteredVariables = filterBySearch( typeFilteredVariables, searchValue );\n\tconst sortedVariables = searchFilteredVariables.sort( ( a, b ) => {\n\t\tconst orderA = a.order ?? Number.MAX_SAFE_INTEGER;\n\t\tconst orderB = b.order ?? Number.MAX_SAFE_INTEGER;\n\t\treturn orderA - orderB;\n\t} );\n\n\treturn {\n\t\tlist: sortedVariables,\n\t\thasMatches: searchFilteredVariables.length > 0,\n\t\tisSourceNotEmpty: typeFilteredVariables.length > 0,\n\t\thasNoCompatibleVariables: baseVariables.length > 0 && typeFilteredVariables.length === 0,\n\t};\n};\n\nconst useVariableSelectionFilter = ( variables: NormalizedVariable[] ): NormalizedVariable[] => {\n\tconst { selectionFilter } = useVariableType();\n\tconst { propType } = useBoundProp();\n\n\treturn selectionFilter ? selectionFilter( variables, propType ) : variables;\n};\n\nconst usePropVariables = ( propKey: PropKey ): NormalizedVariable[] => {\n\treturn useMemo( () => normalizeVariables( propKey ), [ propKey ] );\n};\n\nconst normalizeVariables = ( propKey: string ) => {\n\tconst variables = getVariables( false );\n\n\treturn Object.entries( variables )\n\t\t.filter( ( [ , variable ] ) => variable.type === propKey )\n\t\t.map( ( [ key, { label, value, order } ] ) => ( {\n\t\t\tkey,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t\torder,\n\t\t} ) );\n};\n\nconst extractId = ( { id }: { id: string } ): string => id;\n\nexport const createVariable = ( newVariable: Variable ): Promise< string > => {\n\treturn service.create( newVariable ).then( extractId );\n};\n\nexport const updateVariable = (\n\tupdateId: string,\n\t{ value, label }: { value: string; label: string }\n): Promise< string > => {\n\treturn service.update( updateId, { value, label } ).then( extractId );\n};\n\nexport const deleteVariable = ( deleteId: string ): Promise< string > => {\n\treturn service.delete( deleteId ).then( extractId );\n};\n\nexport const restoreVariable = ( restoreId: string, label?: string, value?: string ): Promise< string > => {\n\treturn service.restore( restoreId, label, value ).then( extractId );\n};\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, useContext } from 'react';\nimport { type PropTypeKey } from '@elementor/editor-props';\n\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\ntype Props = PropsWithChildren< { propTypeKey: PropTypeKey } >;\n\nconst VariableTypeContext = createContext< PropTypeKey | null >( null );\n\nexport function VariableTypeProvider( { children, propTypeKey }: Props ) {\n\treturn <VariableTypeContext.Provider value={ propTypeKey }>{ children }</VariableTypeContext.Provider>;\n}\n\nexport function useVariableType() {\n\tconst context = useContext( VariableTypeContext );\n\n\tif ( context === null ) {\n\t\tthrow new Error( 'useVariableType must be used within a VariableTypeProvider' );\n\t}\n\n\treturn getVariableType( context );\n}\n","export function filterBySearch< T extends { label: string } >( variables: T[], searchValue: string ): T[] {\n\tconst lowerSearchValue = searchValue.toLowerCase();\n\n\treturn variables.filter( ( variable ) => variable.label.toLowerCase().includes( lowerSearchValue ) );\n}\n","import * as React from 'react';\nimport { createElement, useRef } from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { bindMenu, bindTrigger, IconButton, Menu, MenuItem, type PopupState, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type TVariablesList } from '../../storage';\nimport { trackVariablesManagerEvent } from '../../utils/tracking';\nimport { getVariableTypes } from '../../variables-registry/variable-type-registry';\n\nexport const SIZE = 'tiny';\n\ntype VariableManagerCreateMenuProps = {\n\tvariables: TVariablesList;\n\tonCreate: ( type: string, defaultName: string, defaultValue: string ) => void;\n\tdisabled?: boolean;\n\tmenuState: PopupState;\n};\n\nexport const VariableManagerCreateMenu = ( {\n\tvariables,\n\tonCreate,\n\tdisabled,\n\tmenuState,\n}: VariableManagerCreateMenuProps ) => {\n\tconst buttonRef = useRef< HTMLButtonElement >( null );\n\n\tconst variableTypes = getVariableTypes();\n\n\tconst menuOptions = Object.entries( variableTypes ).map( ( [ key, variable ] ) => {\n\t\tconst displayName = variable.variableType.charAt( 0 ).toUpperCase() + variable.variableType.slice( 1 );\n\n\t\treturn {\n\t\t\tkey,\n\t\t\tname: displayName,\n\t\t\ticon: variable.icon,\n\t\t\tonClick: () => {\n\t\t\t\tconst defaultName = getDefaultName( variables, key, variable.variableType );\n\t\t\t\tonCreate( key, defaultName, variable.defaultValue || '' );\n\t\t\t\ttrackVariablesManagerEvent( { action: 'add', varType: variable.variableType } );\n\t\t\t},\n\t\t};\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton\n\t\t\t\t{ ...bindTrigger( menuState ) }\n\t\t\t\tref={ buttonRef }\n\t\t\t\tdisabled={ disabled }\n\t\t\t\tsize={ SIZE }\n\t\t\t\taria-label={ __( 'Add variable', 'elementor' ) }\n\t\t\t>\n\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t</IconButton>\n\n\t\t\t<Menu\n\t\t\t\tdisablePortal\n\t\t\t\tMenuListProps={ {\n\t\t\t\t\tdense: true,\n\t\t\t\t} }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\televation: 6,\n\t\t\t\t} }\n\t\t\t\t{ ...bindMenu( menuState ) }\n\t\t\t\tanchorEl={ buttonRef.current }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\tdata-testid=\"variable-manager-create-menu\"\n\t\t\t>\n\t\t\t\t{ menuOptions.map( ( option ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ option.key }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\toption.onClick?.();\n\t\t\t\t\t\t\tmenuState.close();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\tgap: 1.5,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ createElement( option.icon, {\n\t\t\t\t\t\t\tfontSize: SIZE,\n\t\t\t\t\t\t\tcolor: 'action',\n\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t<Typography variant=\"caption\" color=\"text.primary\">\n\t\t\t\t\t\t\t{ option.name }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n\nconst getDefaultName = ( variables: TVariablesList, type: string, baseName: string ) => {\n\tconst existingNames = Object.values( variables )\n\t\t.filter( ( variable ) => variable.type === type )\n\t\t.map( ( variable ) => variable.label );\n\n\tlet counter = 1;\n\tlet name = `${ baseName }-${ counter }`;\n\n\twhile ( existingNames.includes( name ) ) {\n\t\tcounter++;\n\t\tname = `${ baseName }-${ counter }`;\n\t}\n\n\treturn name;\n};\n","import * as React from 'react';\nimport { createElement, useEffect, useRef } from 'react';\nimport { EllipsisWithTooltip } from '@elementor/editor-ui';\nimport { GripVerticalIcon } from '@elementor/icons';\nimport {\n\tIconButton,\n\tStack,\n\ttype SxProps,\n\tTable,\n\tTableBody,\n\tTableContainer,\n\tTableHead,\n\tTableRow,\n\tUnstableSortableItem,\n\ttype UnstableSortableItemRenderProps,\n\tUnstableSortableProvider,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type TVariablesList } from '../../storage';\nimport { getVariableType } from '../../variables-registry/variable-type-registry';\nimport { LabelField } from '../fields/label-field';\nimport { VariableEditMenu, type VariableManagerMenuAction } from './ui/variable-edit-menu';\nimport { VariableTableCell } from './ui/variable-table-cell';\nimport { VariableEditableCell } from './variable-editable-cell';\n\ntype Props = {\n\tmenuActions: VariableManagerMenuAction[];\n\tvariables: TVariablesList;\n\tonChange: ( variables: TVariablesList ) => void;\n\tautoEditVariableId?: string;\n\tonAutoEditComplete?: () => void;\n\tonFieldError?: ( hasError: boolean ) => void;\n};\n\nexport const VariablesManagerTable = ( {\n\tmenuActions,\n\tvariables,\n\tonChange: handleOnChange,\n\tautoEditVariableId,\n\tonAutoEditComplete,\n\tonFieldError,\n}: Props ) => {\n\tconst tableContainerRef = useRef< HTMLDivElement >( null );\n\tconst variableRowRefs = useRef< Map< string, HTMLTableRowElement > >( new Map() );\n\n\tuseEffect( () => {\n\t\tif ( autoEditVariableId && tableContainerRef.current ) {\n\t\t\tconst rowElement = variableRowRefs.current.get( autoEditVariableId );\n\t\t\tif ( rowElement ) {\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\trowElement.scrollIntoView( {\n\t\t\t\t\t\tbehavior: 'smooth',\n\t\t\t\t\t\tblock: 'center',\n\t\t\t\t\t\tinline: 'nearest',\n\t\t\t\t\t} );\n\t\t\t\t}, 100 );\n\t\t\t}\n\t\t}\n\t}, [ autoEditVariableId ] );\n\n\tconst handleRowRef = ( id: string ) => ( ref: HTMLTableRowElement | null ) => {\n\t\tif ( ref ) {\n\t\t\tvariableRowRefs.current.set( id, ref );\n\t\t} else {\n\t\t\tvariableRowRefs.current.delete( id );\n\t\t}\n\t};\n\n\tconst ids = Object.keys( variables ).sort( sortVariablesOrder( variables ) );\n\tconst rows = ids\n\t\t.filter( ( id ) => ! variables[ id ].deleted )\n\t\t.map( ( id ) => {\n\t\t\tconst variable = variables[ id ];\n\t\t\tconst variableType = getVariableType( variable.type );\n\n\t\t\treturn {\n\t\t\t\tid,\n\t\t\t\ttype: variable.type,\n\t\t\t\tname: variable.label,\n\t\t\t\tvalue: variable.value,\n\t\t\t\t...variableType,\n\t\t\t};\n\t\t} );\n\n\tconst tableSX: SxProps = {\n\t\tminWidth: 250,\n\t\ttableLayout: 'fixed',\n\t};\n\n\tconst handleReorder = ( newIds: string[] ) => {\n\t\tconst updatedVariables = { ...variables };\n\n\t\tnewIds.forEach( ( id, index ) => {\n\t\t\tconst current = updatedVariables[ id ];\n\n\t\t\tif ( ! current ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdatedVariables[ id ] = Object.assign( {}, current, { order: index + 1 } );\n\t\t} );\n\n\t\thandleOnChange( updatedVariables );\n\t};\n\n\treturn (\n\t\t<TableContainer ref={ tableContainerRef } sx={ { overflow: 'initial' } }>\n\t\t\t<Table sx={ tableSX } aria-label=\"Variables manager list with drag and drop reordering\" stickyHeader>\n\t\t\t\t<TableHead>\n\t\t\t\t\t<TableRow>\n\t\t\t\t\t\t<VariableTableCell isHeader noPadding width={ 10 } maxWidth={ 10 } />\n\t\t\t\t\t\t<VariableTableCell isHeader>{ __( 'Name', 'elementor' ) }</VariableTableCell>\n\t\t\t\t\t\t<VariableTableCell isHeader>{ __( 'Value', 'elementor' ) }</VariableTableCell>\n\t\t\t\t\t\t<VariableTableCell isHeader noPadding width={ 16 } maxWidth={ 16 } />\n\t\t\t\t\t</TableRow>\n\t\t\t\t</TableHead>\n\t\t\t\t<TableBody>\n\t\t\t\t\t<UnstableSortableProvider\n\t\t\t\t\t\tvalue={ ids }\n\t\t\t\t\t\tonChange={ handleReorder }\n\t\t\t\t\t\tvariant=\"static\"\n\t\t\t\t\t\trestrictAxis\n\t\t\t\t\t\tdragOverlay={ ( { children: dragOverlayChildren, ...dragOverlayProps } ) => (\n\t\t\t\t\t\t\t<Table sx={ tableSX } { ...dragOverlayProps }>\n\t\t\t\t\t\t\t\t<TableBody>{ dragOverlayChildren }</TableBody>\n\t\t\t\t\t\t\t</Table>\n\t\t\t\t\t\t) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ rows.map( ( row ) => (\n\t\t\t\t\t\t\t<UnstableSortableItem\n\t\t\t\t\t\t\t\tkey={ row.id }\n\t\t\t\t\t\t\t\tid={ row.id }\n\t\t\t\t\t\t\t\trender={ ( {\n\t\t\t\t\t\t\t\t\titemProps,\n\t\t\t\t\t\t\t\t\tshowDropIndication,\n\t\t\t\t\t\t\t\t\ttriggerProps,\n\t\t\t\t\t\t\t\t\titemStyle,\n\t\t\t\t\t\t\t\t\ttriggerStyle,\n\t\t\t\t\t\t\t\t\tisDragged,\n\t\t\t\t\t\t\t\t\tdropPosition,\n\t\t\t\t\t\t\t\t\tsetTriggerRef,\n\t\t\t\t\t\t\t\t\tisSorting,\n\t\t\t\t\t\t\t\t}: UnstableSortableItemRenderProps ) => {\n\t\t\t\t\t\t\t\t\tconst showIndicationBefore = showDropIndication && dropPosition === 'before';\n\t\t\t\t\t\t\t\t\tconst showIndicationAfter = showDropIndication && dropPosition === 'after';\n\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t<TableRow\n\t\t\t\t\t\t\t\t\t\t\t{ ...itemProps }\n\t\t\t\t\t\t\t\t\t\t\tselected={ isDragged }\n\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t...( showIndicationBefore && {\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& td, & th': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderTop: '2px solid',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderTopColor: 'primary.main',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t\t\t\t\t\t...( showIndicationAfter && {\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& td, & th': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottom: '2px solid',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborderBottomColor: 'primary.main',\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t} ),\n\t\t\t\t\t\t\t\t\t\t\t\t'& [role=\"toolbar\"], & [draggable]': {\n\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t'&:hover, &:focus-within': {\n\t\t\t\t\t\t\t\t\t\t\t\t\tbackgroundColor: 'action.hover',\n\t\t\t\t\t\t\t\t\t\t\t\t\t'& [role=\"toolbar\"], & [draggable]': {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topacity: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\tstyle={ { ...itemStyle, ...triggerStyle } }\n\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell noPadding width={ 10 } maxWidth={ 10 }>\n\t\t\t\t\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\t\t\t\t\t\tref={ setTriggerRef }\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ ...triggerProps }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ isSorting }\n\t\t\t\t\t\t\t\t\t\t\t\t\tdraggable\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<GripVerticalIcon fontSize=\"inherit\" />\n\t\t\t\t\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditableCell\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( value !== row.name ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOnChange( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...variables,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ row.id ]: { ...variables[ row.id ], label: value },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\tprefixElement={ createElement( row.icon, { fontSize: 'inherit' } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\teditableElement={ ( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonValidationChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) => (\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tid={ 'variable-label-' + row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonValidationChange?.( errorMsg );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonFieldError?.( !! errorMsg );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror={ error }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfocusOnShow\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tselectOnShow={ autoEditVariableId === row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tshowWarningInfotip={ true }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvariables={ variables }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tautoEdit={ autoEditVariableId === row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowRef={ handleRowRef( row.id ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonAutoEditComplete={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tautoEditVariableId === row.id ? onAutoEditComplete : undefined\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tfieldType=\"label\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ { border: '4px solid transparent' } }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.name }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</EllipsisWithTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</VariableEditableCell>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditableCell\n\t\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif ( value !== row.value ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleOnChange( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t...variables,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[ row.id ]: { ...variables[ row.id ], value },\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\teditableElement={ ( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonValidationChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t\t\t\t} ) =>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trow.valueField( {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonChange,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonValidationChange: ( errorMsg ) => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonValidationChange?.( errorMsg );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tonFieldError?.( !! errorMsg );\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\tonRowRef={ handleRowRef( row.id ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\tgap={ 0.25 }\n\t\t\t\t\t\t\t\t\t\t\t\t\tfieldType=\"value\"\n\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.startIcon && row.startIcon( { value: row.value } ) }\n\t\t\t\t\t\t\t\t\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttitle={ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: '4px solid transparent',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlineHeight: '1',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpt: 0.25,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ row.value }\n\t\t\t\t\t\t\t\t\t\t\t\t\t</EllipsisWithTooltip>\n\t\t\t\t\t\t\t\t\t\t\t\t</VariableEditableCell>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t\t<VariableTableCell\n\t\t\t\t\t\t\t\t\t\t\t\talign=\"right\"\n\t\t\t\t\t\t\t\t\t\t\t\tnoPadding\n\t\t\t\t\t\t\t\t\t\t\t\twidth={ 16 }\n\t\t\t\t\t\t\t\t\t\t\t\tmaxWidth={ 16 }\n\t\t\t\t\t\t\t\t\t\t\t\tsx={ { paddingInlineEnd: 1 } }\n\t\t\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t\t\t<Stack role=\"toolbar\" direction=\"row\" justifyContent=\"flex-end\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<VariableEditMenu\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmenuActions={ menuActions }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdisabled={ isSorting }\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titemId={ row.id }\n\t\t\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t\t\t\t\t\t</VariableTableCell>\n\t\t\t\t\t\t\t\t\t\t</TableRow>\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) ) }\n\t\t\t\t\t</UnstableSortableProvider>\n\t\t\t\t</TableBody>\n\t\t\t</Table>\n\t\t</TableContainer>\n\t);\n};\nfunction sortVariablesOrder( variables: TVariablesList ): ( a: string, b: string ) => number {\n\treturn ( a, b ) => {\n\t\tconst orderA = variables[ a ]?.order ?? Number.MAX_SAFE_INTEGER;\n\t\tconst orderB = variables[ b ]?.order ?? Number.MAX_SAFE_INTEGER;\n\t\treturn orderA - orderB;\n\t};\n}\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { WarningInfotip } from '@elementor/editor-ui';\nimport { TextField, type TextFieldProps } from '@elementor/ui';\n\nimport { type TVariablesList } from '../../storage';\nimport { labelHint, validateLabel, VARIABLE_LABEL_MAX_LENGTH } from '../../utils/validations';\nfunction isLabelEqual( a: string, b: string ) {\n\treturn a.trim().toLowerCase() === b.trim().toLowerCase();\n}\n\ntype LabelErrorProps = {\n\tvalue: string;\n\tmessage: string;\n};\n\nexport const useLabelError = ( initialError?: LabelErrorProps ) => {\n\tconst [ error, setError ] = useState< LabelErrorProps >( initialError ?? { value: '', message: '' } );\n\n\treturn {\n\t\tlabelFieldError: error,\n\t\tsetLabelFieldError: setError,\n\t};\n};\n\nexport type LabelFieldProps = {\n\tvalue: string;\n\terror?: LabelErrorProps;\n\tonChange: ( value: string ) => void;\n\tid?: string;\n\tonErrorChange?: ( errorMsg: string ) => void;\n\tsize?: TextFieldProps[ 'size' ];\n\tfocusOnShow?: boolean;\n\tselectOnShow?: boolean;\n\tshowWarningInfotip?: boolean;\n\tvariables?: TVariablesList;\n};\n\nexport const LabelField = ( {\n\tvalue,\n\terror,\n\tonChange,\n\tid,\n\tonErrorChange,\n\tsize = 'tiny',\n\tfocusOnShow = false,\n\tselectOnShow = false,\n\tshowWarningInfotip = false,\n\tvariables,\n}: LabelFieldProps ) => {\n\tconst [ label, setLabel ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst fieldRef = useRef< HTMLElement >( null );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetLabel( newValue );\n\n\t\tconst errorMsg = validateLabel( newValue, variables );\n\n\t\tsetErrorMessage( errorMsg );\n\t\tonErrorChange?.( errorMsg );\n\n\t\tonChange( isLabelEqual( newValue, error?.value ?? '' ) || errorMsg ? '' : newValue );\n\t};\n\n\tlet errorMsg = errorMessage;\n\tif ( isLabelEqual( label, error?.value ?? '' ) && error?.message ) {\n\t\terrorMsg = error.message;\n\t}\n\n\tconst hintMsg = ! errorMsg ? labelHint( label ) : '';\n\n\tconst textField = (\n\t\t<TextField\n\t\t\tref={ fieldRef }\n\t\t\tid={ id }\n\t\t\tsize={ size }\n\t\t\tfullWidth\n\t\t\tvalue={ label }\n\t\t\terror={ !! errorMsg }\n\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\tinputProps={ {\n\t\t\t\tmaxLength: VARIABLE_LABEL_MAX_LENGTH,\n\t\t\t\t...( selectOnShow && { onFocus: ( e: React.FocusEvent< HTMLInputElement > ) => e.target.select() } ),\n\t\t\t\t'aria-label': 'Name',\n\t\t\t} }\n\t\t\t// eslint-disable-next-line jsx-a11y/no-autofocus\n\t\t\tautoFocus={ focusOnShow }\n\t\t/>\n\t);\n\n\tif ( showWarningInfotip ) {\n\t\tconst tooltipWidth = Math.max( 240, fieldRef.current?.getBoundingClientRect().width ?? 240 );\n\n\t\treturn (\n\t\t\t<WarningInfotip\n\t\t\t\topen={ Boolean( errorMsg || hintMsg ) }\n\t\t\t\ttext={ errorMsg || hintMsg }\n\t\t\t\tplacement=\"bottom-start\"\n\t\t\t\twidth={ tooltipWidth }\n\t\t\t\toffset={ [ 0, -15 ] }\n\t\t\t\t{ ...( hintMsg && { hasError: false } ) }\n\t\t\t>\n\t\t\t\t{ textField }\n\t\t\t</WarningInfotip>\n\t\t);\n\t}\n\n\treturn textField;\n};\n","import * as React from 'react';\nimport { createElement } from 'react';\nimport { DotsVerticalIcon } from '@elementor/icons';\nimport { bindMenu, bindTrigger, IconButton, Menu, MenuItem, type SvgIconProps, usePopupState } from '@elementor/ui';\n\nexport type VariableManagerMenuAction = {\n\tname: string;\n\ticon: React.ForwardRefExoticComponent< Omit< SvgIconProps, 'ref' > & React.RefAttributes< SVGSVGElement > >;\n\tcolor: string;\n\tonClick: ( id: string ) => void;\n};\n\ntype VariableEditMenuProps = {\n\tmenuActions: VariableManagerMenuAction[];\n\tdisabled?: boolean;\n\titemId: string;\n};\n\nexport const VariableEditMenu = ( { menuActions, disabled, itemId }: VariableEditMenuProps ) => {\n\tconst menuState = usePopupState( {\n\t\tvariant: 'popover',\n\t} );\n\n\treturn (\n\t\t<>\n\t\t\t<IconButton { ...bindTrigger( menuState ) } disabled={ disabled } size=\"tiny\">\n\t\t\t\t<DotsVerticalIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\n\t\t\t<Menu\n\t\t\t\tdisablePortal\n\t\t\t\tMenuListProps={ {\n\t\t\t\t\tdense: true,\n\t\t\t\t} }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\televation: 6,\n\t\t\t\t} }\n\t\t\t\t{ ...bindMenu( menuState ) }\n\t\t\t\tanchorEl={ menuState.anchorEl }\n\t\t\t\tanchorOrigin={ {\n\t\t\t\t\tvertical: 'bottom',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\ttransformOrigin={ {\n\t\t\t\t\tvertical: 'top',\n\t\t\t\t\thorizontal: 'right',\n\t\t\t\t} }\n\t\t\t\topen={ menuState.isOpen }\n\t\t\t\tonClose={ menuState.close }\n\t\t\t>\n\t\t\t\t{ menuActions.map( ( action ) => (\n\t\t\t\t\t<MenuItem\n\t\t\t\t\t\tkey={ action.name }\n\t\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\t\taction.onClick?.( itemId );\n\t\t\t\t\t\t\tmenuState.close();\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\tcolor: action.color,\n\t\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t\t} }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ action.icon &&\n\t\t\t\t\t\t\tcreateElement( action.icon, {\n\t\t\t\t\t\t\t\tfontSize: 'inherit',\n\t\t\t\t\t\t\t} ) }{ ' ' }\n\t\t\t\t\t\t{ action.name }\n\t\t\t\t\t</MenuItem>\n\t\t\t\t) ) }\n\t\t\t</Menu>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { type SxProps, TableCell } from '@elementor/ui';\n\ntype VariableTableCellProps = {\n\tchildren?: React.ReactNode;\n\tisHeader?: boolean;\n\twidth?: number;\n\tmaxWidth?: number;\n\talign?: 'left' | 'right' | 'center';\n\tnoPadding?: boolean;\n\tsx?: SxProps;\n};\n\nexport const VariableTableCell = ( {\n\tchildren,\n\tisHeader,\n\twidth,\n\tmaxWidth,\n\talign,\n\tnoPadding,\n\tsx,\n}: VariableTableCellProps ) => {\n\tconst baseSx: SxProps = {\n\t\tmaxWidth: maxWidth ?? 150,\n\t\tcursor: 'initial',\n\t\ttypography: 'caption',\n\t\t...( isHeader && { color: 'text.primary', fontWeight: 'bold' } ),\n\t\t...( isHeader && ! noPadding && { padding: '10px 16px' } ),\n\t\t...( width && { width } ),\n\t\t...sx,\n\t};\n\n\treturn (\n\t\t<TableCell size=\"small\" padding={ noPadding ? 'none' : undefined } align={ align } sx={ baseSx }>\n\t\t\t{ children }\n\t\t</TableCell>\n\t);\n};\n","import * as React from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { ClickAwayListener, Stack } from '@elementor/ui';\n\nimport { type ValueFieldProps } from '../../variables-registry/create-variable-type-registry';\nimport { useLabelError } from '../fields/label-field';\n\ntype VariableEditableCellProps = {\n\tinitialValue: string;\n\tchildren: React.ReactNode;\n\teditableElement: ( { value, onChange, onValidationChange, error }: ValueFieldProps ) => JSX.Element;\n\tonChange: ( newValue: string ) => void;\n\tprefixElement?: React.ReactNode;\n\tautoEdit?: boolean;\n\tonRowRef?: ( ref: HTMLTableRowElement | null ) => void;\n\tonAutoEditComplete?: () => void;\n\tgap?: number;\n\tfieldType?: 'label' | 'value';\n};\n\nexport const VariableEditableCell = React.memo(\n\t( {\n\t\tinitialValue,\n\t\tchildren,\n\t\teditableElement,\n\t\tonChange,\n\t\tprefixElement,\n\t\tautoEdit = false,\n\t\tonRowRef,\n\t\tonAutoEditComplete,\n\t\tgap = 1,\n\t\tfieldType,\n\t}: VariableEditableCellProps ) => {\n\t\tconst [ value, setValue ] = useState( initialValue );\n\t\tconst [ isEditing, setIsEditing ] = useState( false );\n\n\t\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\t\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\n\t\tconst rowRef = useRef< HTMLTableRowElement >( null );\n\n\t\tconst handleSave = useCallback( () => {\n\t\t\tconst hasError =\n\t\t\t\t( fieldType === 'label' && labelFieldError?.message ) || ( fieldType === 'value' && valueFieldError );\n\n\t\t\tif ( ! hasError ) {\n\t\t\t\tonChange( value );\n\t\t\t}\n\t\t\tsetIsEditing( false );\n\t\t}, [ value, onChange, fieldType, labelFieldError, valueFieldError ] );\n\n\t\tuseEffect( () => {\n\t\t\tonRowRef?.( rowRef?.current );\n\t\t}, [ onRowRef ] );\n\n\t\tuseEffect( () => {\n\t\t\tif ( autoEdit && ! isEditing ) {\n\t\t\t\tsetIsEditing( true );\n\t\t\t\tonAutoEditComplete?.();\n\t\t\t}\n\t\t}, [ autoEdit, isEditing, onAutoEditComplete ] );\n\n\t\tconst handleDoubleClick = () => {\n\t\t\tsetIsEditing( true );\n\t\t};\n\n\t\tconst handleKeyDown = ( event: React.KeyboardEvent< HTMLDivElement > ) => {\n\t\t\tif ( event.key === 'Enter' ) {\n\t\t\t\thandleSave();\n\t\t\t} else if ( event.key === 'Escape' ) {\n\t\t\t\tsetIsEditing( false );\n\t\t\t}\n\t\t\tif ( event.key === ' ' && ! isEditing ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tsetIsEditing( true );\n\t\t\t}\n\t\t};\n\n\t\tconst handleChange = useCallback( ( newValue: string ) => {\n\t\t\tsetValue( newValue );\n\t\t}, [] );\n\n\t\tconst handleValidationChange = useCallback(\n\t\t\t( errorMsg: string ) => {\n\t\t\t\tif ( fieldType === 'label' ) {\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\tmessage: errorMsg,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tsetValueFieldError( errorMsg );\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ fieldType, value, setLabelFieldError, setValueFieldError ]\n\t\t);\n\n\t\tlet currentError;\n\t\tif ( fieldType === 'label' ) {\n\t\t\tcurrentError = labelFieldError;\n\t\t} else if ( fieldType === 'value' ) {\n\t\t\tcurrentError = { value, message: valueFieldError };\n\t\t}\n\n\t\tconst editableContent = editableElement( {\n\t\t\tvalue,\n\t\t\tonChange: handleChange,\n\t\t\tonValidationChange: handleValidationChange,\n\t\t\terror: currentError,\n\t\t} );\n\n\t\tif ( isEditing ) {\n\t\t\treturn (\n\t\t\t\t<ClickAwayListener onClickAway={ handleSave }>\n\t\t\t\t\t<Stack\n\t\t\t\t\t\tref={ rowRef }\n\t\t\t\t\t\tdirection=\"row\"\n\t\t\t\t\t\talignItems=\"center\"\n\t\t\t\t\t\tgap={ gap }\n\t\t\t\t\t\tonDoubleClick={ handleDoubleClick }\n\t\t\t\t\t\tonKeyDown={ handleKeyDown }\n\t\t\t\t\t\ttabIndex={ 0 }\n\t\t\t\t\t\trole=\"button\"\n\t\t\t\t\t\taria-label=\"Double click or press Space to edit\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{ prefixElement }\n\t\t\t\t\t\t{ editableContent }\n\t\t\t\t\t</Stack>\n\t\t\t\t</ClickAwayListener>\n\t\t\t);\n\t\t}\n\n\t\treturn (\n\t\t\t<Stack\n\t\t\t\tref={ rowRef }\n\t\t\t\tdirection=\"row\"\n\t\t\t\talignItems=\"center\"\n\t\t\t\tgap={ gap }\n\t\t\t\tonDoubleClick={ handleDoubleClick }\n\t\t\t\tonKeyDown={ handleKeyDown }\n\t\t\t\ttabIndex={ 0 }\n\t\t\t\trole=\"button\"\n\t\t\t\taria-label=\"Double click or press Space to edit\"\n\t\t\t>\n\t\t\t\t{ prefixElement }\n\t\t\t\t{ children }\n\t\t\t</Stack>\n\t\t);\n\t}\n);\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type TransformablePropValue } from '@elementor/editor-props';\n\nimport { AssignedVariable } from '../components/ui/variable/assigned-variable';\nimport { DeletedVariable } from '../components/ui/variable/deleted-variable';\nimport { MismatchVariable } from '../components/ui/variable/mismatch-variable';\nimport { MissingVariable } from '../components/ui/variable/missing-variable';\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport const VariableControl = () => {\n\tconst boundProp = useBoundProp();\n\n\tconst boundPropValue = ( boundProp.value ?? boundProp.placeholder ) as TransformablePropValue< string, string >;\n\n\tconst assignedVariable = useVariable( boundPropValue?.value );\n\n\tif ( ! assignedVariable ) {\n\t\treturn <MissingVariable />;\n\t}\n\n\tconst { $$type: propTypeKey } = boundPropValue;\n\n\tif ( assignedVariable?.deleted ) {\n\t\treturn <DeletedVariable variable={ assignedVariable } propTypeKey={ propTypeKey } />;\n\t}\n\n\tconst { isCompatible } = getVariableType( assignedVariable.type );\n\n\tif ( isCompatible && ! isCompatible( boundProp?.propType, assignedVariable ) ) {\n\t\treturn <MismatchVariable variable={ assignedVariable } />;\n\t}\n\n\treturn <AssignedVariable variable={ assignedVariable } propTypeKey={ propTypeKey } />;\n};\n","import { useId, useRef } from 'react';\nimport * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeKey } from '@elementor/editor-props';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Box, Popover, usePopupState } from '@elementor/ui';\n\nimport { type Variable } from '../../../types';\nimport { createUnlinkHandler } from '../../../utils/unlink-variable';\nimport { getVariableType } from '../../../variables-registry/variable-type-registry';\nimport { VariableSelectionPopover } from '../../variable-selection-popover';\nimport { AssignedTag, SIZE } from '../tags/assigned-tag';\n\ntype Props = {\n\tpropTypeKey: PropTypeKey;\n\tvariable: Variable;\n};\n\nexport const AssignedVariable = ( { variable, propTypeKey }: Props ) => {\n\tconst { startIcon, propTypeUtil } = getVariableType( propTypeKey );\n\tconst { setValue } = useBoundProp();\n\tconst anchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-list-${ popupId }`,\n\t} );\n\n\tconst unlinkVariable = createUnlinkHandler( variable, propTypeKey, setValue );\n\n\tconst StartIcon = startIcon || ( () => null );\n\n\treturn (\n\t\t<Box ref={ anchorRef }>\n\t\t\t<AssignedTag\n\t\t\t\tlabel={ variable.label }\n\t\t\t\tstartIcon={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ColorFilterIcon fontSize={ SIZE } />\n\t\t\t\t\t\t<StartIcon value={ variable.value } />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tonUnlink={ unlinkVariable }\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<VariableSelectionPopover\n\t\t\t\t\tselectedVariable={ variable }\n\t\t\t\t\tclosePopover={ popupState.close }\n\t\t\t\t\tpropTypeKey={ propTypeUtil.key }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import { type PropValue } from '@elementor/editor-props';\n\nimport { type Variable } from '../types';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport function transformValueBeforeUnlink( variable: Variable, propTypeKey: string ): string | PropValue {\n\tconst { valueTransformer } = getVariableType( propTypeKey );\n\n\tif ( valueTransformer ) {\n\t\treturn valueTransformer( variable.value );\n\t}\n\n\treturn variable.value;\n}\n\nexport function createUnlinkHandler(\n\tvariable: Variable,\n\tpropTypeKey: string,\n\tsetValue: ( value: PropValue ) => void\n): () => void {\n\treturn () => {\n\t\tconst { fallbackPropTypeUtil } = getVariableType( propTypeKey );\n\t\tconst transformedValue = transformValueBeforeUnlink( variable, propTypeKey );\n\n\t\tsetValue( fallbackPropTypeUtil.create( transformedValue ) );\n\t};\n}\n","import * as React from 'react';\nimport { useState } from 'react';\nimport type { PropTypeKey } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nimport { PopoverContentRefContextProvider } from '../context/variable-selection-popover.context';\nimport { VariableTypeProvider } from '../context/variable-type-context';\nimport { usePermissions } from '../hooks/use-permissions';\nimport { type Variable } from '../types';\nimport { VariableCreation } from './variable-creation';\nimport { VariableEdit } from './variable-edit';\nimport { usePanelActions } from './variables-manager/variables-manager-panel';\nimport { VariablesSelection } from './variables-selection';\n\nconst VIEW_LIST = 'list';\nconst VIEW_ADD = 'add';\nconst VIEW_EDIT = 'edit';\n\ntype View = typeof VIEW_LIST | typeof VIEW_ADD | typeof VIEW_EDIT;\n\ntype Props = {\n\tclosePopover: () => void;\n\tselectedVariable?: Variable;\n\tpropTypeKey: PropTypeKey;\n};\n\nexport const VariableSelectionPopover = ( { closePopover, propTypeKey, selectedVariable }: Props ) => {\n\tconst [ currentView, setCurrentView ] = useState< View >( VIEW_LIST );\n\tconst [ editId, setEditId ] = useState< string >( '' );\n\tconst { open } = usePanelActions();\n\tconst onSettingsAvailable = isExperimentActive( 'e_variables_manager' )\n\t\t? () => {\n\t\t\t\topen();\n\t\t }\n\t\t: undefined;\n\n\treturn (\n\t\t<VariableTypeProvider propTypeKey={ propTypeKey }>\n\t\t\t<PopoverContentRefContextProvider>\n\t\t\t\t{ RenderView( {\n\t\t\t\t\tpropTypeKey,\n\t\t\t\t\tcurrentView,\n\t\t\t\t\tselectedVariable,\n\t\t\t\t\teditId,\n\t\t\t\t\tsetEditId,\n\t\t\t\t\tsetCurrentView,\n\t\t\t\t\tclosePopover,\n\t\t\t\t\tonSettings: onSettingsAvailable,\n\t\t\t\t} ) }\n\t\t\t</PopoverContentRefContextProvider>\n\t\t</VariableTypeProvider>\n\t);\n};\n\ntype ViewProps = {\n\tpropTypeKey: string;\n\tcurrentView: View;\n\tselectedVariable?: Variable;\n\teditId: string;\n\tsetEditId: ( id: string ) => void;\n\tsetCurrentView: ( stage: View ) => void;\n\tclosePopover: () => void;\n\tonSettings?: () => void;\n};\n\ntype Handlers = {\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonAdd?: () => void;\n\tonEdit?: ( key: string ) => void;\n\tonSettings?: () => void;\n};\n\nfunction RenderView( props: ViewProps ): React.ReactNode {\n\tconst userPermissions = usePermissions();\n\n\tconst handlers: Handlers = {\n\t\tonClose: () => {\n\t\t\tprops.closePopover();\n\t\t},\n\t\tonGoBack: () => {\n\t\t\tprops.setCurrentView( VIEW_LIST );\n\t\t},\n\t};\n\n\tif ( userPermissions.canAdd() ) {\n\t\thandlers.onAdd = () => {\n\t\t\tprops.setCurrentView( VIEW_ADD );\n\t\t};\n\t}\n\n\tif ( userPermissions.canEdit() ) {\n\t\thandlers.onEdit = ( key: string ) => {\n\t\t\tprops.setEditId( key );\n\t\t\tprops.setCurrentView( VIEW_EDIT );\n\t\t};\n\t}\n\n\tif ( userPermissions.canManageSettings() && props.onSettings ) {\n\t\thandlers.onSettings = () => {\n\t\t\tprops.closePopover();\n\t\t\tprops.onSettings?.();\n\t\t};\n\t}\n\n\tconst handleSubmitOnEdit = () => {\n\t\tif ( props?.selectedVariable?.key === props.editId ) {\n\t\t\thandlers.onClose();\n\t\t} else {\n\t\t\thandlers.onGoBack?.();\n\t\t}\n\t};\n\n\tif ( VIEW_LIST === props.currentView ) {\n\t\treturn (\n\t\t\t<VariablesSelection\n\t\t\t\tclosePopover={ handlers.onClose }\n\t\t\t\tonAdd={ handlers.onAdd }\n\t\t\t\tonEdit={ handlers.onEdit }\n\t\t\t\tonSettings={ handlers.onSettings }\n\t\t\t/>\n\t\t);\n\t}\n\n\tif ( VIEW_ADD === props.currentView ) {\n\t\treturn <VariableCreation onGoBack={ handlers.onGoBack } onClose={ handlers.onClose } />;\n\t}\n\n\tif ( VIEW_EDIT === props.currentView ) {\n\t\treturn (\n\t\t\t<VariableEdit\n\t\t\t\teditId={ props.editId }\n\t\t\t\tonGoBack={ handlers.onGoBack }\n\t\t\t\tonClose={ handlers.onClose }\n\t\t\t\tonSubmit={ handleSubmitOnEdit }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n","import * as React from 'react';\nimport { createContext, type PropsWithChildren, type RefObject, useContext, useState } from 'react';\nimport { Box } from '@elementor/ui';\n\nconst PopoverContentRefContext = createContext< RefObject< HTMLDivElement > | null >( null );\n\nexport const PopoverContentRefContextProvider = ( { children }: PropsWithChildren ) => {\n\tconst [ anchorRef, setAnchorRef ] = useState< RefObject< HTMLDivElement > | null >( null );\n\n\treturn (\n\t\t<PopoverContentRefContext.Provider value={ anchorRef }>\n\t\t\t<Box ref={ setAnchorRef }>{ children }</Box>\n\t\t</PopoverContentRefContext.Provider>\n\t);\n};\n\nexport const usePopoverContentRef = () => {\n\treturn useContext( PopoverContentRefContext );\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { ArrowLeftIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { useInitialValue } from '../hooks/use-initial-value';\nimport { createVariable } from '../hooks/use-prop-variables';\nimport { useVariableBoundProp } from '../hooks/use-variable-bound-prop';\nimport { trackVariableEvent } from '../utils/tracking';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tonGoBack?: () => void;\n\tonClose: () => void;\n};\n\nexport const VariableCreation = ( { onGoBack, onClose }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType, propTypeUtil } = useVariableType();\n\n\tconst { setVariableValue: setVariable, path } = useVariableBoundProp();\n\tconst { propType } = useBoundProp();\n\n\tconst initialValue = useInitialValue();\n\n\tconst [ value, setValue ] = useState( initialValue );\n\tconst [ label, setLabel ] = useState( '' );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\n\tconst resetFields = () => {\n\t\tsetValue( '' );\n\t\tsetLabel( '' );\n\t\tsetErrorMessage( '' );\n\t\tsetValueFieldError( '' );\n\t};\n\n\tconst closePopover = () => {\n\t\tresetFields();\n\t\tonClose();\n\t};\n\n\tconst handleCreateAndTrack = () => {\n\t\tcreateVariable( {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t\ttype: propTypeUtil.key,\n\t\t} )\n\t\t\t.then( ( key ) => {\n\t\t\t\tsetVariable( key );\n\t\t\t\tclosePopover();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'save',\n\t\t} );\n\t};\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<PopoverBody height=\"auto\">\n\t\t\t<PopoverHeader\n\t\t\t\ticon={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onGoBack && (\n\t\t\t\t\t\t\t<IconButton size={ SIZE } aria-label={ __( 'Go Back', 'elementor' ) } onClick={ onGoBack }>\n\t\t\t\t\t\t\t\t<ArrowLeftIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t<VariableIcon fontSize={ SIZE } />\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\ttitle={ __( 'Create variable', 'elementor' ) }\n\t\t\t\tonClose={ closePopover }\n\t\t\t/>\n\n\t\t\t<Divider />\n\n\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t<FormField\n\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t>\n\t\t\t\t\t<LabelField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\tmessage: errorMsg,\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</FormField>\n\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t<Typography variant=\"h5\" id=\"variable-value-wrapper\">\n\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Typography>\n\t\t\t\t</FormField>\n\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t</PopoverContent>\n\n\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t<Button\n\t\t\t\t\tid=\"create-variable-button\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tvariant=\"contained\"\n\t\t\t\t\tdisabled={ isSubmitDisabled }\n\t\t\t\t\tonClick={ handleCreateAndTrack }\n\t\t\t\t>\n\t\t\t\t\t{ __( 'Create', 'elementor' ) }\n\t\t\t\t</Button>\n\t\t\t</CardActions>\n\t\t</PopoverBody>\n\t);\n};\n","import { useBoundProp } from '@elementor/editor-controls';\n\nimport { hasVariableType } from '../variables-registry/variable-type-registry';\nimport { useVariable } from './use-prop-variables';\n\ntype PropValue = {\n\t$$type: string;\n\tvalue: string;\n};\n\nexport const useInitialValue = () => {\n\tconst { value: initial }: { value: PropValue } = useBoundProp();\n\n\tconst hasAssignedVariable = hasVariableType( initial?.$$type ) && Boolean( initial?.value );\n\tconst variable = useVariable( hasAssignedVariable ? initial.value : '' );\n\n\tif ( hasAssignedVariable ) {\n\t\treturn variable ? variable.value : '';\n\t}\n\n\treturn initial?.value ?? '';\n};\n","import { useBoundProp } from '@elementor/editor-controls';\nimport { isTransformable, type PropValue } from '@elementor/editor-props';\n\nimport { useVariableType } from '../context/variable-type-context';\n\ntype BoundProp = ReturnType< typeof useBoundProp< PropValue > >;\n\ntype VariableBoundProp = ReturnType< typeof useBoundProp< string > > & {\n\tsetVariableValue: ( value: PropValue ) => void;\n\tvariableId: string | null;\n};\n\nexport const useVariableBoundProp = (): VariableBoundProp => {\n\tconst { propTypeUtil } = useVariableType();\n\tconst boundProp = useBoundProp( propTypeUtil );\n\n\treturn {\n\t\t...boundProp,\n\t\tsetVariableValue: ( value: PropValue ) => resolveBoundPropAndSetValue( value, boundProp as BoundProp ),\n\t\tvariableId: boundProp.value ?? boundProp.placeholder,\n\t};\n};\n\nexport const resolveBoundPropAndSetValue = ( value: PropValue, boundProp: BoundProp ) => {\n\tconst propValue = unwrapValue( boundProp.value );\n\tconst placeholder = unwrapValue( boundProp.placeholder );\n\tconst newValue = unwrapValue( value );\n\n\tif ( ! propValue && placeholder === newValue ) {\n\t\treturn boundProp.setValue( null );\n\t}\n\n\treturn boundProp.setValue( value );\n};\n\nconst unwrapValue = ( input: PropValue ): PropValue => {\n\tif ( isTransformable( input ) ) {\n\t\treturn input.value;\n\t}\n\n\treturn input;\n};\n","import * as React from 'react';\nimport type { PropsWithChildren } from 'react';\nimport { FormHelperText, FormLabel, Grid } from '@elementor/ui';\n\ntype Props = PropsWithChildren< {\n\tid?: string;\n\tlabel: string;\n\terrorMsg?: string;\n\tnoticeMsg?: string;\n} >;\n\nexport const FormField = ( { id, label, errorMsg, noticeMsg, children }: Props ) => {\n\treturn (\n\t\t<Grid container gap={ 0.75 } alignItems=\"center\">\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<FormLabel htmlFor={ id } size=\"tiny\">\n\t\t\t\t\t{ label }\n\t\t\t\t</FormLabel>\n\t\t\t</Grid>\n\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t{ children }\n\t\t\t\t{ errorMsg && <FormHelperText error>{ errorMsg }</FormHelperText> }\n\t\t\t\t{ noticeMsg && <FormHelperText>{ noticeMsg }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { useSuppressedMessage } from '@elementor/editor-current-user';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { ArrowLeftIcon, TrashIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { usePermissions } from '../hooks/use-permissions';\nimport { deleteVariable, updateVariable, useVariable } from '../hooks/use-prop-variables';\nimport { useVariableBoundProp } from '../hooks/use-variable-bound-prop';\nimport { styleVariablesRepository } from '../style-variables-repository';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { DeleteConfirmationDialog } from './ui/delete-confirmation-dialog';\nimport { EDIT_CONFIRMATION_DIALOG_ID, EditConfirmationDialog } from './ui/edit-confirmation-dialog';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\nconst DELETE_LABEL = __( 'Delete variable', 'elementor' );\n\ntype Props = {\n\teditId: string;\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const VariableEdit = ( { onClose, onGoBack, onSubmit, editId }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType } = useVariableType();\n\n\tconst { setVariableValue: notifyBoundPropChange, variableId } = useVariableBoundProp();\n\tconst { propType } = useBoundProp();\n\tconst [ isMessageSuppressed, suppressMessage ] = useSuppressedMessage( EDIT_CONFIRMATION_DIALOG_ID );\n\tconst [ deleteConfirmation, setDeleteConfirmation ] = useState( false );\n\tconst [ editConfirmation, setEditConfirmation ] = useState( false );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\tconst variable = useVariable( editId );\n\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global ${ variableType } variable not found` );\n\t}\n\n\tconst userPermissions = usePermissions();\n\n\tconst [ value, setValue ] = useState( () => variable.value );\n\tconst [ label, setLabel ] = useState( () => variable.label );\n\n\tuseEffect( () => {\n\t\tstyleVariablesRepository.update( {\n\t\t\t[ editId ]: {\n\t\t\t\t...variable,\n\t\t\t\tvalue,\n\t\t\t},\n\t\t} );\n\n\t\treturn () => {\n\t\t\tstyleVariablesRepository.update( {\n\t\t\t\t[ editId ]: { ...variable },\n\t\t\t} );\n\t\t};\n\t}, [ editId, value, variable ] );\n\n\tconst handleUpdate = () => {\n\t\tif ( isMessageSuppressed ) {\n\t\t\thandleSaveVariable();\n\t\t} else {\n\t\t\tsetEditConfirmation( true );\n\t\t}\n\t};\n\n\tconst handleSaveVariable = () => {\n\t\tupdateVariable( editId, {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t} )\n\t\t\t.then( () => {\n\t\t\t\tmaybeTriggerBoundPropChange();\n\t\t\t\tonSubmit?.();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\t};\n\n\tconst handleDelete = () => {\n\t\tdeleteVariable( editId ).then( () => {\n\t\t\tmaybeTriggerBoundPropChange();\n\t\t\tonSubmit?.();\n\t\t} );\n\t};\n\n\tconst maybeTriggerBoundPropChange = () => {\n\t\tif ( editId === variableId ) {\n\t\t\tnotifyBoundPropChange( editId );\n\t\t}\n\t};\n\n\tconst handleDeleteConfirmation = () => {\n\t\tsetDeleteConfirmation( true );\n\t};\n\n\tconst closeDeleteDialog = () => () => {\n\t\tsetDeleteConfirmation( false );\n\t};\n\n\tconst closeEditDialog = () => () => {\n\t\tsetEditConfirmation( false );\n\t};\n\n\tconst actions = [];\n\n\tif ( userPermissions.canDelete() ) {\n\t\tactions.push(\n\t\t\t<Tooltip key=\"delete\" placement=\"top\" title={ DELETE_LABEL }>\n\t\t\t\t<IconButton size={ SIZE } onClick={ handleDeleteConfirmation } aria-label={ DELETE_LABEL }>\n\t\t\t\t\t<TrashIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn value === variable.value && label === variable.label;\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<>\n\t\t\t<PopoverBody height=\"auto\">\n\t\t\t\t<PopoverHeader\n\t\t\t\t\ttitle={ __( 'Edit variable', 'elementor' ) }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t\ticon={\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{ onGoBack && (\n\t\t\t\t\t\t\t\t<IconButton\n\t\t\t\t\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\t\t\t\t\taria-label={ __( 'Go Back', 'elementor' ) }\n\t\t\t\t\t\t\t\t\tonClick={ onGoBack }\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<ArrowLeftIcon fontSize={ SIZE } />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t<VariableIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\tactions={ actions }\n\t\t\t\t/>\n\n\t\t\t\t<Divider />\n\n\t\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\t\tmessage: errorMsg,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t\t<Typography variant=\"h5\">\n\t\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</FormField>\n\n\t\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t\t</PopoverContent>\n\n\t\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t\t<Button size=\"small\" variant=\"contained\" disabled={ isSubmitDisabled } onClick={ handleUpdate }>\n\t\t\t\t\t\t{ __( 'Save', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</PopoverBody>\n\n\t\t\t{ deleteConfirmation && (\n\t\t\t\t<DeleteConfirmationDialog\n\t\t\t\t\topen\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tonConfirm={ handleDelete }\n\t\t\t\t\tcloseDialog={ closeDeleteDialog() }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ editConfirmation && ! isMessageSuppressed && (\n\t\t\t\t<EditConfirmationDialog\n\t\t\t\t\tcloseDialog={ closeEditDialog() }\n\t\t\t\t\tonConfirm={ handleSaveVariable }\n\t\t\t\t\tonSuppressMessage={ suppressMessage }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport {\n\tButton,\n\tCheckbox,\n\tDialog,\n\tDialogActions,\n\tDialogContent,\n\tDialogContentText,\n\tDialogTitle,\n\tFormControlLabel,\n\tTypography,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EDIT_CONFIRMATION_DIALOG_ID = 'edit-confirmation-dialog';\n\nexport const EditConfirmationDialog = ( {\n\tcloseDialog,\n\tonConfirm,\n\tonSuppressMessage,\n}: {\n\tcloseDialog: () => void;\n\tonConfirm?: () => void;\n\tonSuppressMessage?: () => void;\n} ) => {\n\tconst [ dontShowAgain, setDontShowAgain ] = useState( false );\n\n\tconst handleSave = () => {\n\t\tif ( dontShowAgain ) {\n\t\t\tonSuppressMessage?.();\n\t\t}\n\t\tonConfirm?.();\n\t};\n\n\treturn (\n\t\t<Dialog open onClose={ closeDialog } maxWidth=\"xs\">\n\t\t\t<DialogTitle display=\"flex\" alignItems=\"center\" gap={ 1 }>\n\t\t\t\t<AlertTriangleFilledIcon color=\"secondary\" />\n\t\t\t\t{ __( 'Changes to variables go live right away.', 'elementor' ) }\n\t\t\t</DialogTitle>\n\t\t\t<DialogContent>\n\t\t\t\t<DialogContentText variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t\"Don't worry - all other changes you make will wait until you publish your site.\",\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</DialogContentText>\n\t\t\t</DialogContent>\n\t\t\t<DialogActions sx={ { justifyContent: 'space-between', alignItems: 'center' } }>\n\t\t\t\t<FormControlLabel\n\t\t\t\t\tcontrol={\n\t\t\t\t\t\t<Checkbox\n\t\t\t\t\t\t\tchecked={ dontShowAgain }\n\t\t\t\t\t\t\tonChange={ ( event: React.ChangeEvent< HTMLInputElement > ) =>\n\t\t\t\t\t\t\t\tsetDontShowAgain( event.target.checked )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tlabel={ <Typography variant=\"body2\">{ __( \"Don't show me again\", 'elementor' ) }</Typography> }\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t<Button color=\"secondary\" onClick={ closeDialog }>\n\t\t\t\t\t\t{ __( 'Keep editing', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button variant=\"contained\" color=\"secondary\" onClick={ handleSave } sx={ { ml: 1 } }>\n\t\t\t\t\t\t{ __( 'Save', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t</DialogActions>\n\t\t</Dialog>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader, PopoverMenuList, SearchField, type VirtualizedItem } from '@elementor/editor-ui';\nimport { ColorFilterIcon, PlusIcon, SettingsIcon } from '@elementor/icons';\nimport { Divider, IconButton, Tooltip } from '@elementor/ui';\nimport { __, sprintf } from '@wordpress/i18n';\n\nimport { useVariableType } from '../context/variable-type-context';\nimport { useFilteredVariables } from '../hooks/use-prop-variables';\nimport { useVariableBoundProp } from '../hooks/use-variable-bound-prop';\nimport { type ExtendedVirtualizedItem } from '../types';\nimport { trackVariableEvent, trackVariablesManagerEvent } from '../utils/tracking';\nimport { EmptyState } from './ui/empty-state';\nimport { MenuItemContent } from './ui/menu-item-content';\nimport { NoSearchResults } from './ui/no-search-results';\nimport { VariablesStyledMenuList } from './ui/styled-menu-list';\n\nconst SIZE = 'tiny';\nconst CREATE_LABEL = __( 'Create variable', 'elementor' );\nconst MANAGER_LABEL = __( 'Variables Manager', 'elementor' );\n\ntype Props = {\n\tclosePopover: () => void;\n\tonAdd?: () => void;\n\tonEdit?: ( key: string ) => void;\n\tonSettings?: () => void;\n};\n\nexport const VariablesSelection = ( { closePopover, onAdd, onEdit, onSettings }: Props ) => {\n\tconst { icon: VariableIcon, startIcon, variableType, propTypeUtil } = useVariableType();\n\n\tconst { value: variable, setValue: setVariable, path } = useVariableBoundProp();\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst {\n\t\tlist: variables,\n\t\thasMatches: hasSearchResults,\n\t\tisSourceNotEmpty: hasVariables,\n\t\thasNoCompatibleVariables,\n\t} = useFilteredVariables( searchValue, propTypeUtil.key );\n\n\tconst handleSetVariable = ( key: string ) => {\n\t\tsetVariable( key );\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'connect',\n\t\t} );\n\t\tclosePopover();\n\t};\n\n\tconst onAddAndTrack = () => {\n\t\tonAdd?.();\n\t\ttrackVariableEvent( {\n\t\t\tvarType: variableType,\n\t\t\tcontrolPath: path.join( '.' ),\n\t\t\taction: 'add',\n\t\t} );\n\t};\n\n\tconst actions = [];\n\n\tif ( onAdd ) {\n\t\tactions.push(\n\t\t\t<Tooltip key=\"add\" placement=\"top\" title={ CREATE_LABEL }>\n\t\t\t\t<IconButton\n\t\t\t\t\tid=\"add-variable-button\"\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tonClick={ onAddAndTrack }\n\t\t\t\t\taria-label={ CREATE_LABEL }\n\t\t\t\t>\n\t\t\t\t\t<PlusIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\tif ( onSettings ) {\n\t\tconst handleOpenManager = () => {\n\t\t\tonSettings();\n\t\t\ttrackVariablesManagerEvent( {\n\t\t\t\taction: 'openManager',\n\t\t\t\tvarType: variableType,\n\t\t\t\tcontrolPath: path.join( '.' ),\n\t\t\t} );\n\t\t};\n\n\t\tactions.push(\n\t\t\t<Tooltip key=\"settings\" placement=\"top\" title={ MANAGER_LABEL }>\n\t\t\t\t<IconButton\n\t\t\t\t\tid=\"variables-manager-button\"\n\t\t\t\t\tsize={ SIZE }\n\t\t\t\t\tonClick={ handleOpenManager }\n\t\t\t\t\taria-label={ MANAGER_LABEL }\n\t\t\t\t>\n\t\t\t\t\t<SettingsIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\tconst StartIcon = startIcon || ( () => <VariableIcon fontSize={ SIZE } /> );\n\n\tconst items: ExtendedVirtualizedItem[] = variables.map( ( { value, label, key } ) => ( {\n\t\ttype: 'item' as const,\n\t\tvalue: key,\n\t\tlabel,\n\t\ticon: <StartIcon value={ value } />,\n\t\tsecondaryText: value,\n\t\tonEdit: onEdit ? () => onEdit?.( key ) : undefined,\n\t} ) );\n\n\tconst handleSearch = ( search: string ) => {\n\t\tsetSearchValue( search );\n\t};\n\n\tconst handleClearSearch = () => {\n\t\tsetSearchValue( '' );\n\t};\n\n\tconst noVariableTitle = sprintf(\n\t\t/* translators: %s: Variable Type. */\n\t\t__( 'Create your first %s variable', 'elementor' ),\n\t\tvariableType\n\t);\n\n\treturn (\n\t\t<PopoverBody>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Variables', 'elementor' ) }\n\t\t\t\ticon={ <ColorFilterIcon fontSize={ SIZE } /> }\n\t\t\t\tonClose={ closePopover }\n\t\t\t\tactions={ actions }\n\t\t\t/>\n\n\t\t\t{ hasVariables && (\n\t\t\t\t<SearchField\n\t\t\t\t\tvalue={ searchValue }\n\t\t\t\t\tonSearch={ handleSearch }\n\t\t\t\t\tplaceholder={ __( 'Search', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t<Divider />\n\n\t\t\t{ hasVariables && hasSearchResults && (\n\t\t\t\t<PopoverMenuList\n\t\t\t\t\titems={ items }\n\t\t\t\t\tonSelect={ handleSetVariable }\n\t\t\t\t\tonClose={ () => {} }\n\t\t\t\t\tselectedValue={ variable }\n\t\t\t\t\tdata-testid={ `${ variableType }-variables-list` }\n\t\t\t\t\tmenuListTemplate={ VariablesStyledMenuList }\n\t\t\t\t\tmenuItemContentTemplate={ ( item: VirtualizedItem< 'item', string > ) => (\n\t\t\t\t\t\t<MenuItemContent item={ item } />\n\t\t\t\t\t) }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasSearchResults && hasVariables && (\n\t\t\t\t<NoSearchResults\n\t\t\t\t\tsearchValue={ searchValue }\n\t\t\t\t\tonClear={ handleClearSearch }\n\t\t\t\t\ticon={ <VariableIcon fontSize=\"large\" /> }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasVariables && ! hasNoCompatibleVariables && (\n\t\t\t\t<EmptyState\n\t\t\t\t\ttitle={ noVariableTitle }\n\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t'Variables are saved attributes that you can apply anywhere on your site.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t\ticon={ <VariableIcon fontSize=\"large\" /> }\n\t\t\t\t\tonAdd={ onAdd }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ hasNoCompatibleVariables && (\n\t\t\t\t<EmptyState\n\t\t\t\t\ttitle={ __( 'No compatible variables', 'elementor' ) }\n\t\t\t\t\tmessage={ __(\n\t\t\t\t\t\t'Looks like none of your variables work with this control. Create a new variable to use it here.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t\ticon={ <VariableIcon fontSize=\"large\" /> }\n\t\t\t\t\tonAdd={ onAdd }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</PopoverBody>\n\t);\n};\n","import * as React from 'react';\nimport { EllipsisWithTooltip, type VirtualizedItem } from '@elementor/editor-ui';\nimport { EditIcon } from '@elementor/icons';\nimport { Box, IconButton, ListItemIcon, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nconst SIZE = 'tiny';\nconst EDIT_LABEL = __( 'Edit variable', 'elementor' );\n\nexport const MenuItemContent = < T, V extends string >( { item }: { item: VirtualizedItem< T, V > } ) => {\n\tconst onEdit = item.onEdit as ( ( value: V ) => void ) | undefined;\n\n\treturn (\n\t\t<>\n\t\t\t<ListItemIcon>{ item.icon }</ListItemIcon>\n\t\t\t<Box\n\t\t\t\tsx={ {\n\t\t\t\t\tflex: 1,\n\t\t\t\t\tminWidth: 0,\n\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 1,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\ttitle={ item.label || item.value }\n\t\t\t\t\tas={ Typography }\n\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\tcolor=\"text.primary\"\n\t\t\t\t\tsx={ { marginTop: '1px', lineHeight: '2' } }\n\t\t\t\t\tmaxWidth=\"50%\"\n\t\t\t\t/>\n\t\t\t\t{ item.secondaryText && (\n\t\t\t\t\t<EllipsisWithTooltip\n\t\t\t\t\t\ttitle={ item.secondaryText }\n\t\t\t\t\t\tas={ Typography }\n\t\t\t\t\t\tvariant=\"caption\"\n\t\t\t\t\t\tcolor=\"text.tertiary\"\n\t\t\t\t\t\tsx={ { marginTop: '1px', lineHeight: '1' } }\n\t\t\t\t\t\tmaxWidth=\"50%\"\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</Box>\n\t\t\t{ !! onEdit && (\n\t\t\t\t<Tooltip placement=\"top\" title={ EDIT_LABEL }>\n\t\t\t\t\t<IconButton\n\t\t\t\t\t\tsx={ { mx: 1, opacity: '0' } }\n\t\t\t\t\t\tonClick={ ( e: React.MouseEvent< HTMLButtonElement > ) => {\n\t\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t\t\t\tonEdit( item.value );\n\t\t\t\t\t\t} }\n\t\t\t\t\t\taria-label={ EDIT_LABEL }\n\t\t\t\t\t>\n\t\t\t\t\t\t<EditIcon color=\"action\" fontSize={ SIZE } />\n\t\t\t\t\t</IconButton>\n\t\t\t\t</Tooltip>\n\t\t\t) }\n\t\t</>\n\t);\n};\n","import { MenuList, styled } from '@elementor/ui';\n\nexport const VariablesStyledMenuList = styled( MenuList )( ( { theme } ) => ( {\n\t'& > li': {\n\t\theight: 32,\n\t\twidth: '100%',\n\t\tdisplay: 'flex',\n\t\talignItems: 'center',\n\t},\n\t'& > [role=\"option\"]': {\n\t\t...theme.typography.caption,\n\t\tlineHeight: 'inherit',\n\t\tpadding: theme.spacing( 0.5, 1, 0.5, 2 ),\n\t\t'&:hover, &:focus': {\n\t\t\tbackgroundColor: theme.palette.action.hover,\n\t\t},\n\t\t'&[aria-selected=\"true\"]': {\n\t\t\tbackgroundColor: theme.palette.action.selected,\n\t\t},\n\t\tcursor: 'pointer',\n\t\ttextOverflow: 'ellipsis',\n\t\tposition: 'absolute',\n\t\ttop: 0,\n\t\tleft: 0,\n\t\t'&:hover .MuiIconButton-root, .MuiIconButton-root:focus': {\n\t\t\topacity: 1,\n\t\t},\n\t},\n\twidth: '100%',\n\tposition: 'relative',\n} ) );\n","import * as React from 'react';\nimport { DetachIcon } from '@elementor/icons';\nimport { Box, IconButton, Stack, Tooltip, Typography, UnstableTag as Tag, type UnstableTagProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const SIZE = 'tiny';\nconst UNLINK_LABEL = __( 'Unlink variable', 'elementor' );\n\ninterface VariableTagProps extends UnstableTagProps {\n\tonUnlink?: () => void;\n}\n\nexport const AssignedTag = ( { startIcon, label, onUnlink, ...props }: VariableTagProps ) => {\n\tconst actions = [];\n\n\tif ( onUnlink ) {\n\t\tactions.push(\n\t\t\t<Tooltip key=\"unlink\" title={ UNLINK_LABEL } placement=\"bottom\">\n\t\t\t\t<IconButton size={ SIZE } onClick={ onUnlink } aria-label={ UNLINK_LABEL }>\n\t\t\t\t\t<DetachIcon fontSize={ SIZE } />\n\t\t\t\t</IconButton>\n\t\t\t</Tooltip>\n\t\t);\n\t}\n\n\treturn (\n\t\t<Tooltip title={ label } placement=\"top\">\n\t\t\t<Tag\n\t\t\t\tfullWidth\n\t\t\t\tshowActionsOnHover\n\t\t\t\tstartIcon={\n\t\t\t\t\t<Stack gap={ 0.5 } direction=\"row\" alignItems=\"center\">\n\t\t\t\t\t\t{ startIcon }\n\t\t\t\t\t</Stack>\n\t\t\t\t}\n\t\t\t\tlabel={\n\t\t\t\t\t<Box sx={ { display: 'inline-grid', minWidth: 0 } }>\n\t\t\t\t\t\t<Typography sx={ { lineHeight: 1.34 } } variant=\"caption\" noWrap>\n\t\t\t\t\t\t\t{ label }\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</Box>\n\t\t\t\t}\n\t\t\t\tactions={ actions }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t</Tooltip>\n\t);\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeKey } from '@elementor/editor-props';\nimport { Backdrop, bindPopover, Box, Infotip, Popover, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { VariableTypeProvider } from '../../../context/variable-type-context';\nimport { usePermissions } from '../../../hooks/use-permissions';\nimport { restoreVariable } from '../../../hooks/use-prop-variables';\nimport { resolveBoundPropAndSetValue } from '../../../hooks/use-variable-bound-prop';\nimport { type Variable } from '../../../types';\nimport { createUnlinkHandler } from '../../../utils/unlink-variable';\nimport { getVariableType } from '../../../variables-registry/variable-type-registry';\nimport { VariableRestore } from '../../variable-restore';\nimport { DeletedVariableAlert } from '../deleted-variable-alert';\nimport { WarningVariableTag } from '../tags/warning-variable-tag';\n\ntype Props = {\n\tvariable: Variable;\n\tpropTypeKey: PropTypeKey;\n};\n\ntype Handlers = {\n\tonUnlink?: () => void;\n\tonRestore?: () => void;\n};\n\nexport const DeletedVariable = ( { variable, propTypeKey }: Props ) => {\n\tconst { propTypeUtil } = getVariableType( propTypeKey );\n\n\tconst boundProp = useBoundProp();\n\n\tconst userPermissions = usePermissions();\n\n\tconst [ showInfotip, setShowInfotip ] = useState< boolean >( false );\n\tconst toggleInfotip = () => setShowInfotip( ( prev ) => ! prev );\n\tconst closeInfotip = () => setShowInfotip( false );\n\n\tconst deletedChipAnchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-restore-${ popupId }`,\n\t} );\n\n\tconst handlers: Handlers = {};\n\n\tif ( userPermissions.canUnlink() ) {\n\t\thandlers.onUnlink = createUnlinkHandler( variable, propTypeKey, boundProp.setValue );\n\t}\n\n\tif ( userPermissions.canRestore() ) {\n\t\thandlers.onRestore = () => {\n\t\t\tif ( ! variable.key ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trestoreVariable( variable.key )\n\t\t\t\t.then( ( id ) => {\n\t\t\t\t\tresolveBoundPropAndSetValue( propTypeUtil.create( id ), boundProp );\n\n\t\t\t\t\tcloseInfotip();\n\t\t\t\t} )\n\t\t\t\t.catch( () => {\n\t\t\t\t\tcloseInfotip();\n\t\t\t\t\tpopupState.setAnchorEl( deletedChipAnchorRef.current );\n\t\t\t\t\tpopupState.open();\n\t\t\t\t} );\n\t\t};\n\t}\n\n\tconst handleRestoreWithOverrides = () => {\n\t\tpopupState.close();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Box ref={ deletedChipAnchorRef }>\n\t\t\t\t{ showInfotip && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t\t<Infotip\n\t\t\t\t\tcolor=\"warning\"\n\t\t\t\t\tplacement=\"right-start\"\n\t\t\t\t\topen={ showInfotip }\n\t\t\t\t\tdisableHoverListener\n\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\tcontent={\n\t\t\t\t\t\t<DeletedVariableAlert\n\t\t\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\t\t\tonUnlink={ handlers.onUnlink }\n\t\t\t\t\t\t\tonRestore={ handlers.onRestore }\n\t\t\t\t\t\t\tlabel={ variable.label }\n\t\t\t\t\t\t/>\n\t\t\t\t\t}\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tpopper: {\n\t\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t<WarningVariableTag\n\t\t\t\t\t\tlabel={ variable.label }\n\t\t\t\t\t\tonClick={ toggleInfotip }\n\t\t\t\t\t\tsuffix={ __( 'deleted', 'elementor' ) }\n\t\t\t\t\t/>\n\t\t\t\t</Infotip>\n\n\t\t\t\t<Popover\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\tPaperProps={ {\n\t\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t\t} }\n\t\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\t>\n\t\t\t\t\t<VariableTypeProvider propTypeKey={ propTypeKey }>\n\t\t\t\t\t\t<VariableRestore\n\t\t\t\t\t\t\tvariableId={ variable.key ?? '' }\n\t\t\t\t\t\t\tonClose={ popupState.close }\n\t\t\t\t\t\t\tonSubmit={ handleRestoreWithOverrides }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</VariableTypeProvider>\n\t\t\t\t</Popover>\n\t\t\t</Box>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { PopoverContent, useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader } from '@elementor/editor-ui';\nimport { Button, CardActions, Divider, FormHelperText, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { PopoverContentRefContextProvider } from '../context/variable-selection-popover.context';\nimport { useVariableType } from '../context/variable-type-context';\nimport { restoreVariable, useVariable } from '../hooks/use-prop-variables';\nimport { useVariableBoundProp } from '../hooks/use-variable-bound-prop';\nimport { ERROR_MESSAGES, labelHint, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-field';\nimport { FormField } from './ui/form-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tvariableId: string;\n\tonClose: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const VariableRestore = ( { variableId, onClose, onSubmit }: Props ) => {\n\tconst { icon: VariableIcon, valueField: ValueField, variableType } = useVariableType();\n\n\tconst { setVariableValue: notifyBoundPropChange } = useVariableBoundProp();\n\tconst { propType } = useBoundProp();\n\n\tconst variable = useVariable( variableId );\n\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global ${ variableType } variable not found` );\n\t}\n\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ valueFieldError, setValueFieldError ] = useState( '' );\n\tconst [ label, setLabel ] = useState( variable.label );\n\tconst [ value, setValue ] = useState( variable.value );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError( {\n\t\tvalue: variable.label,\n\t\tmessage: ERROR_MESSAGES.DUPLICATED_LABEL,\n\t} );\n\n\tconst handleRestore = () => {\n\t\trestoreVariable( variableId, label, value )\n\t\t\t.then( () => {\n\t\t\t\tnotifyBoundPropChange( variableId );\n\t\t\t\tonSubmit?.();\n\t\t\t} )\n\t\t\t.catch( ( error ) => {\n\t\t\t\tconst mappedError = mapServerError( error );\n\t\t\t\tif ( mappedError && 'label' === mappedError.field ) {\n\t\t\t\t\tsetLabel( '' );\n\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\tmessage: mappedError.message,\n\t\t\t\t\t} );\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsetErrorMessage( ERROR_MESSAGES.UNEXPECTED_ERROR );\n\t\t\t} );\n\t};\n\n\tconst hasEmptyFields = () => {\n\t\tif ( '' === label.trim() ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tif ( 'string' === typeof value ) {\n\t\t\treturn '' === value.trim();\n\t\t}\n\n\t\treturn false === Boolean( value );\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn value === variable.value && label === variable.label;\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyFields() || hasErrors();\n\n\treturn (\n\t\t<PopoverContentRefContextProvider>\n\t\t\t<PopoverBody height=\"auto\">\n\t\t\t\t<PopoverHeader\n\t\t\t\t\ticon={ <VariableIcon fontSize={ SIZE } /> }\n\t\t\t\t\ttitle={ __( 'Restore variable', 'elementor' ) }\n\t\t\t\t\tonClose={ onClose }\n\t\t\t\t/>\n\n\t\t\t\t<Divider />\n\n\t\t\t\t<PopoverContent p={ 2 }>\n\t\t\t\t\t<FormField\n\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\tlabel={ __( 'Name', 'elementor' ) }\n\t\t\t\t\t\terrorMsg={ labelFieldError?.message }\n\t\t\t\t\t\tnoticeMsg={ labelHint( label ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t<LabelField\n\t\t\t\t\t\t\tid=\"variable-label\"\n\t\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\tonErrorChange={ ( errorMsg ) => {\n\t\t\t\t\t\t\t\tsetLabelFieldError( {\n\t\t\t\t\t\t\t\t\tvalue: label,\n\t\t\t\t\t\t\t\t\tmessage: errorMsg,\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</FormField>\n\t\t\t\t\t<FormField errorMsg={ valueFieldError } label={ __( 'Value', 'elementor' ) }>\n\t\t\t\t\t\t<Typography variant=\"h5\">\n\t\t\t\t\t\t\t<ValueField\n\t\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t\t\t\tsetValueFieldError( '' );\n\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\tonValidationChange={ setValueFieldError }\n\t\t\t\t\t\t\t\tpropType={ propType }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t</FormField>\n\n\t\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t\t</PopoverContent>\n\n\t\t\t\t<CardActions sx={ { pt: 0.5, pb: 1 } }>\n\t\t\t\t\t<Button size=\"small\" variant=\"contained\" disabled={ isSubmitDisabled } onClick={ handleRestore }>\n\t\t\t\t\t\t{ __( 'Restore', 'elementor' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</CardActions>\n\t\t\t</PopoverBody>\n\t\t</PopoverContentRefContextProvider>\n\t);\n};\n","import * as React from 'react';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype DeletedVariableAlertProps = {\n\tonClose: () => void;\n\tonUnlink?: () => void;\n\tonRestore?: () => void;\n\tlabel: string;\n};\n\nexport const DeletedVariableAlert = ( { onClose, onUnlink, onRestore, label }: DeletedVariableAlertProps ) => {\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onUnlink && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onUnlink }>\n\t\t\t\t\t\t\t\t{ __( 'Unlink', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ onRestore && (\n\t\t\t\t\t\t\t<AlertAction variant=\"outlined\" onClick={ onRestore }>\n\t\t\t\t\t\t\t\t{ __( 'Restore', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ { maxWidth: 300 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ __( 'Deleted variable', 'elementor' ) }</AlertTitle>\n\t\t\t\t<Typography variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __( 'The variable', 'elementor' ) }\n\t\t\t\t\t&nbsp;&apos;\n\t\t\t\t\t<Typography variant=\"body2\" component=\"span\" sx={ { lineBreak: 'anywhere' } }>\n\t\t\t\t\t\t{ label }\n\t\t\t\t\t</Typography>\n\t\t\t\t\t&apos;&nbsp;\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'has been deleted, but it is still referenced in this location. You may restore the variable or unlink it to assign a different value.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</Typography>\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { AlertTriangleFilledIcon } from '@elementor/icons';\nimport { Box, Chip, type ChipProps, type Theme, Tooltip, Typography } from '@elementor/ui';\n\ninterface WarningVariableTagProps extends ChipProps {\n\tlabel: string;\n\tsuffix?: string;\n}\n\nexport const WarningVariableTag = React.forwardRef< HTMLDivElement, WarningVariableTagProps >(\n\t( { label, suffix, onClick, icon, ...props }, ref ) => {\n\t\tconst displayText = suffix ? `${ label } (${ suffix })` : label;\n\n\t\treturn (\n\t\t\t<Chip\n\t\t\t\tref={ ref }\n\t\t\t\tsize=\"tiny\"\n\t\t\t\tcolor=\"warning\"\n\t\t\t\tshape=\"rounded\"\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tonClick={ onClick }\n\t\t\t\ticon={ <AlertTriangleFilledIcon /> }\n\t\t\t\tlabel={\n\t\t\t\t\t<Tooltip title={ displayText } placement=\"top\">\n\t\t\t\t\t\t<Box sx={ { display: 'inline-grid', minWidth: 0 } }>\n\t\t\t\t\t\t\t<Typography variant=\"caption\" noWrap sx={ { lineHeight: 1.34 } }>\n\t\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t</Box>\n\t\t\t\t\t</Tooltip>\n\t\t\t\t}\n\t\t\t\tsx={ {\n\t\t\t\t\theight: ( theme: Theme ) => theme.spacing( 3.5 ),\n\t\t\t\t\tborderRadius: ( theme: Theme ) => theme.spacing( 1 ),\n\t\t\t\t\tjustifyContent: 'flex-start',\n\t\t\t\t\twidth: '100%',\n\t\t\t\t} }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t);\n\t}\n);\n\nWarningVariableTag.displayName = 'WarningVariableTag';\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { Backdrop, bindPopover, Box, Infotip, Popover, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type Variable } from '../../../types';\nimport { VariableSelectionPopover } from '../../variable-selection-popover';\nimport { MismatchVariableAlert } from '../mismatch-variable-alert';\nimport { WarningVariableTag } from '../tags/warning-variable-tag';\n\ntype Props = {\n\tvariable: Variable;\n};\n\nexport const MismatchVariable = ( { variable }: Props ) => {\n\tconst { setValue, value } = useBoundProp();\n\n\tconst anchorRef = useRef< HTMLDivElement >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-variables-list-${ popupId }`,\n\t} );\n\n\tconst [ infotipVisible, setInfotipVisible ] = useState( false );\n\n\tconst toggleInfotip = () => setInfotipVisible( ( prev ) => ! prev );\n\tconst closeInfotip = () => setInfotipVisible( false );\n\n\tconst triggerSelect = () => {\n\t\tcloseInfotip();\n\n\t\tpopupState.setAnchorEl( anchorRef.current );\n\t\tpopupState.open();\n\t};\n\n\tconst clearValue = () => {\n\t\tcloseInfotip();\n\t\tsetValue( null );\n\t};\n\n\tconst showClearButton = !! value;\n\n\treturn (\n\t\t<Box ref={ anchorRef }>\n\t\t\t{ infotipVisible && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t<Infotip\n\t\t\t\tcolor=\"warning\"\n\t\t\t\tplacement=\"right-start\"\n\t\t\t\topen={ infotipVisible }\n\t\t\t\tdisableHoverListener\n\t\t\t\tonClose={ closeInfotip }\n\t\t\t\tcontent={\n\t\t\t\t\t<MismatchVariableAlert\n\t\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\t\tonClear={ showClearButton ? clearValue : undefined }\n\t\t\t\t\t\ttriggerSelect={ triggerSelect }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpopper: {\n\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\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\t\t<WarningVariableTag\n\t\t\t\t\tlabel={ variable.label }\n\t\t\t\t\tonClick={ toggleInfotip }\n\t\t\t\t\tsuffix={ __( 'changed', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Infotip>\n\n\t\t\t<Popover\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t>\n\t\t\t\t<VariableSelectionPopover\n\t\t\t\t\tselectedVariable={ variable }\n\t\t\t\t\tclosePopover={ popupState.close }\n\t\t\t\t\tpropTypeKey={ variable.type }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype AlertProps = {\n\tonClose: () => void;\n\tonClear?: () => void;\n\ttriggerSelect?: () => void;\n};\n\nconst i18n = {\n\ttitle: __( 'Variable has changed', 'elementor' ),\n\tmessage: __(\n\t\t`This variable is no longer compatible with this property. You can clear it or select a different one.`,\n\t\t'elementor'\n\t),\n\tbuttons: {\n\t\tclear: __( 'Clear', 'elementor' ),\n\t\tselect: __( 'Select variable', 'elementor' ),\n\t},\n};\n\nexport const MismatchVariableAlert = ( { onClose, onClear, triggerSelect }: AlertProps ) => {\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onClear && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onClear }>\n\t\t\t\t\t\t\t\t{ i18n.buttons.clear }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ triggerSelect && (\n\t\t\t\t\t\t\t<AlertAction variant=\"outlined\" onClick={ triggerSelect }>\n\t\t\t\t\t\t\t\t{ i18n.buttons.select }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ { maxWidth: 300 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ i18n.title }</AlertTitle>\n\t\t\t\t<Typography variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ i18n.message }\n\t\t\t\t</Typography>\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { Backdrop, Infotip } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { MissingVariableAlert } from '../missing-variable-alert';\nimport { WarningVariableTag } from '../tags/warning-variable-tag';\n\nexport const MissingVariable = () => {\n\tconst { setValue } = useBoundProp();\n\n\tconst [ infotipVisible, setInfotipVisible ] = useState< boolean >( false );\n\tconst toggleInfotip = () => setInfotipVisible( ( prev ) => ! prev );\n\tconst closeInfotip = () => setInfotipVisible( false );\n\n\tconst clearValue = () => setValue( null );\n\n\treturn (\n\t\t<>\n\t\t\t{ infotipVisible && <Backdrop open onClick={ closeInfotip } invisible /> }\n\t\t\t<Infotip\n\t\t\t\tcolor=\"warning\"\n\t\t\t\tplacement=\"right-start\"\n\t\t\t\topen={ infotipVisible }\n\t\t\t\tdisableHoverListener\n\t\t\t\tonClose={ closeInfotip }\n\t\t\t\tcontent={ <MissingVariableAlert onClose={ closeInfotip } onClear={ clearValue } /> }\n\t\t\t\tslotProps={ {\n\t\t\t\t\tpopper: {\n\t\t\t\t\t\tmodifiers: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'offset',\n\t\t\t\t\t\t\t\toptions: { offset: [ 0, 24 ] },\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\t\t<WarningVariableTag label={ __( 'Missing variable', 'elementor' ) } onClick={ toggleInfotip } />\n\t\t\t</Infotip>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { Alert, AlertAction, AlertTitle, ClickAwayListener, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\ntype MissingVariableAlertProps = {\n\tonClose: () => void;\n\tonClear?: () => void;\n};\n\nexport const MissingVariableAlert = ( { onClose, onClear }: MissingVariableAlertProps ) => {\n\treturn (\n\t\t<ClickAwayListener onClickAway={ onClose }>\n\t\t\t<Alert\n\t\t\t\tvariant=\"standard\"\n\t\t\t\tseverity=\"warning\"\n\t\t\t\tonClose={ onClose }\n\t\t\t\taction={\n\t\t\t\t\t<>\n\t\t\t\t\t\t{ onClear && (\n\t\t\t\t\t\t\t<AlertAction variant=\"contained\" onClick={ onClear }>\n\t\t\t\t\t\t\t\t{ __( 'Clear', 'elementor' ) }\n\t\t\t\t\t\t\t</AlertAction>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t\tsx={ { maxWidth: 300 } }\n\t\t\t>\n\t\t\t\t<AlertTitle>{ __( 'This variable is missing', 'elementor' ) }</AlertTitle>\n\t\t\t\t<Typography variant=\"body2\" color=\"textPrimary\">\n\t\t\t\t\t{ __(\n\t\t\t\t\t\t'It may have been deleted. Try clearing this field and select a different value or variable.',\n\t\t\t\t\t\t'elementor'\n\t\t\t\t\t) }\n\t\t\t\t</Typography>\n\t\t\t</Alert>\n\t\t</ClickAwayListener>\n\t);\n};\n","import * as React from 'react';\nimport { type PopoverActionProps, useBoundProp } from '@elementor/editor-editing-panel';\nimport { type PropType } from '@elementor/editor-props';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { VariableSelectionPopover } from '../components/variable-selection-popover';\nimport { trackVariableEvent } from '../utils/tracking';\nimport { getVariableType } from '../variables-registry/variable-type-registry';\n\nexport const usePropVariableAction = (): PopoverActionProps => {\n\tconst { propType, path } = useBoundProp();\n\tconst variable = resolveVariableFromPropType( propType );\n\n\treturn {\n\t\tvisible: Boolean( variable ),\n\t\ticon: ColorFilterIcon,\n\t\ttitle: __( 'Variables', 'elementor' ),\n\t\tcontent: ( { close: closePopover } ) => {\n\t\t\tif ( ! variable ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\ttrackOpenVariablePopover( path, variable.variableType );\n\n\t\t\treturn <VariableSelectionPopover closePopover={ closePopover } propTypeKey={ variable.propTypeUtil.key } />;\n\t\t},\n\t};\n};\n\nconst resolveVariableFromPropType = ( propType: PropType ) => {\n\tif ( propType.kind !== 'union' ) {\n\t\treturn undefined;\n\t}\n\n\tfor ( const key of Object.keys( propType.prop_types ) ) {\n\t\tconst variable = getVariableType( key );\n\n\t\tif ( variable ) {\n\t\t\treturn variable;\n\t\t}\n\t}\n\n\treturn undefined;\n};\n\nconst trackOpenVariablePopover = ( path: string[], variableType: string ) => {\n\ttrackVariableEvent( {\n\t\tvarType: variableType,\n\t\tcontrolPath: path.join( '.' ),\n\t\taction: 'open',\n\t} );\n};\n","import { getMCPByDomain } from '@elementor/editor-mcp';\n\nimport { initCreateVariableTool } from './create-variable-tool';\nimport { initDeleteVariableTool } from './delete-variable-tool';\nimport { initListVariablesTool } from './list-variables-tool';\nimport { initUpdateVariableTool } from './update-variable-tool';\nimport { initVariablesResource } from './variables-resource';\n\nexport function initMcp() {\n\tconst { setMCPDescription } = getMCPByDomain( 'variables' );\n\tsetMCPDescription( `Elementor Editor Variables MCP` );\n\tinitListVariablesTool();\n\tinitCreateVariableTool();\n\tinitUpdateVariableTool();\n\tinitDeleteVariableTool();\n\tinitVariablesResource();\n}\n","import { getMCPByDomain } from '@elementor/editor-mcp';\nimport { z } from '@elementor/schema';\n\nimport { service } from '../service';\n\nconst InputSchema = {\n\ttype: z\n\t\t.string()\n\t\t.describe( 'The type of the variable. Example values: \"global-color-variable\" or \"global-font-variable\".' ),\n\tlabel: z.string().describe( 'The label of the variable, displayed to the user' ),\n\tvalue: z.string().describe( 'The value of the variable, should correspond to the type' ),\n};\n\nconst OutputSchema = {\n\tstatus: z.enum( [ 'ok', 'error' ] ).describe( 'The status of the operation' ),\n\tmessage: z.string().optional().describe( 'Optional message providing additional information about the operation' ),\n};\n\nexport const initCreateVariableTool = () => {\n\tgetMCPByDomain( 'variables' ).addTool( {\n\t\tname: 'create-global-variable',\n\t\tschema: InputSchema,\n\t\toutputSchema: OutputSchema,\n\t\tdescription: `Create a new global variable\n## When to use this tool:\n- When a user requests to create a new global variable in the Elementor editor.\n- When you need to add a new variable to be used in the editor.\n\n## Prequisites:\n- Ensure you have the most up-to-date list of existing global variables to avoid label duplication. You can use the \"list-global-variables\" tool to fetch the current variables.\n- Make sure when creating a new variable, the label is unique and not already in use.\n- If the user does not provide a label, ask them to provide one before proceeding.\n- If the user does not provide a type, ask them to provide one before proceeding.\n- If the user does not provide a value, ask them to provide one before proceeding.\n\n## Required parameters:\n- type: The type of the variable. Possible values are 'global-color-variable' or 'global-font-variable'.\n- label: The label of the variable, displayed to the user. Must be unique and not already in use.\n- value: The value of the variable. For color variables, this should be a valid CSS color (e.g., 'rgb(255,0,0)', '#ff0000', 'red'). For font variables, this should be a valid font family (e.g., 'Arial', 'serif').\n\n## Example tool call (JSON format):\n\\`\\`\\`json\n{ \"type\": \"global-color-variable\", \"label\": \"My Cool Color\", \"value\": \"rgb(1,2,3)\" }\n\\`\\`\\`\n\n## Example tool response (JSON format):\n\\`\\`\\`json\n{ \"status\": \"ok\" }\n\\`\\`\\`\n\n## Example to a failed tool response, which must be displayed to the end user. If the error message is not plain, attempt to find the most useful part of the message and display it.\n{ \"status\": \"error\", \"message\": \"Unsupported type 'global-kuku-variable'\" }\n\nIn that case, inform the user the type is unsupported and they should try another type, perhaps consult to online documentation.\n`,\n\t\thandler: async ( params ) => {\n\t\t\tconst { type, label, value } = params;\n\t\t\ttry {\n\t\t\t\tawait service.create( { type, label, value } );\n\t\t\t} catch ( error ) {\n\t\t\t\tconst message: string = ( error as Error ).message || 'Unknown server error';\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\tmessage: `There was an error creating the variable: ${ message }`,\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn { status: 'ok' };\n\t\t},\n\t} );\n};\n","import { getMCPByDomain } from '@elementor/editor-mcp';\nimport { z } from '@elementor/schema';\n\nimport { service } from '../service';\n\nexport const initDeleteVariableTool = () => {\n\tgetMCPByDomain( 'variables' ).addTool( {\n\t\tname: 'delete-global-variable',\n\t\tschema: {\n\t\t\tid: z.string().describe( 'The unique identifier of the variable to be deleted.' ),\n\t\t},\n\t\toutputSchema: {\n\t\t\tstatus: z.enum( [ 'ok', 'error' ] ).describe( 'The status of the operation' ),\n\t\t},\n\t\tdescription: `Delete an existing global variable\n \n## When to use this tool:\n- When a user requests to delete an existing global variable in the Elementor editor.\n- When you need to remove a variable that is no longer needed or relevant, with the user's confirmation.\n\n## Prerequisites:\n- Ensure you have the most up-to-date list of existing global variables. You can use the \"list-global-variables\" tool to fetch the current variables.\n- Reference the variable by the \"id\" property, given from the \"list-global-variables\" tool.\n- Make sure you have the unique identifier of the variable to be deleted before using this tool.\n- Confirm with the user that they want to proceed with the deletion, as this action is irreversible.\n\n<notice>\nA use might reference a variable by it's label, but you must always use the unique identifier (id) to delete it.\nIf you only have the label, use the \"list-global-variables\" tool to find the corresponding id.\n</notice>\n\n<important>\nThis operation is destructive and cannot be undone. Ensure that the user is fully aware of the consequences before proceeding.\nWhen a variable is deleted, all references to it in all pages accross the website will lose their effect.\n</important>`,\n\t\thandler: async ( params ) => {\n\t\t\tconst { id } = params;\n\t\t\ttry {\n\t\t\t\tawait service.delete( id );\n\t\t\t\treturn { status: 'ok' };\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t} catch ( err: unknown ) {\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t\tisDestrcutive: true,\n\t} );\n};\n","import { getMCPByDomain } from '@elementor/editor-mcp';\nimport { z } from '@elementor/schema';\n\nimport { service } from '../service';\nimport { type TVariable } from '../storage';\n\nconst VariableSchema = {\n\ttype: z.string().describe( 'The type of the variable.' ),\n\tlabel: z.string().describe( 'The label of the variable, displayed to the user' ),\n\tvalue: z.string().describe( 'The value of the variable.' ),\n\tid: z\n\t\t.string()\n\t\t.describe(\n\t\t\t'The unique identifier of the variable. Used for internal reference, not to be exposed to end users'\n\t\t),\n};\nconst VariableListSchema = {\n\tvariables: z.array( z.object( VariableSchema ) ).describe( 'List of variables' ),\n};\n\nexport const initListVariablesTool = () => {\n\tgetMCPByDomain( 'variables' ).addTool( {\n\t\tname: 'list-global-variables',\n\t\tdescription: `List editor global variables\n \n ## When to use this tool:\n - When a user requests to see all available global variables in the Elementor editor.\n - When you need to be exact on a variable label, to avoid any mistakes.\n - When you want to see the most up-to-date list of global variables.\n - Before using any other variables related tools that makes changes, such as deletion, creation, or updates. This ensures you have the latest information and there is no naming collision or mismatching.\n \n ## Example tool response (JSON format):\n \\`\\`\\`json\n { variables: [\n { type: 'global-color-variable', label: 'Cool', value: 'rgb(1,2,3)', id: 'some-unique-id' },\n { type: 'global-font-variable', label: 'Headline', value: 'serif', id: 'some-other-unique-id' },\n ] }\n \\`\\`\\`\n \n Once you get the response, please display the variables in a user-friendly way, unless explicitly requested otherwise.\n Unless explicitly requested otherwise, response in HTML Format, prefer to use tables or unordered lists.\n \n Note: **The label is most improtant to be seen as-is without any changes.**\n \n <important>\n **Do not omit the label**. This is important for the user to identify the variable.\n **Do not change the label**, it must be displayed exactly as it is, in it's original characters as received from this tool.\n </important>\n `,\n\t\toutputSchema: VariableListSchema,\n\t\thandler: async () => {\n\t\t\tconst variables = service.variables() as Record< string, TVariable >;\n\t\t\treturn {\n\t\t\t\tvariables: Object.entries( variables ).map( ( [ id, varData ] ) => ( { id, ...varData } ) ),\n\t\t\t};\n\t\t},\n\t} );\n};\n","import { getMCPByDomain } from '@elementor/editor-mcp';\nimport { z } from '@elementor/schema';\n\nimport { service } from '../service';\n\nexport const initUpdateVariableTool = () => {\n\tgetMCPByDomain( 'variables' ).addTool( {\n\t\tschema: {\n\t\t\tid: z.string().describe( 'The unique identifier of the variable to be updated or renamed.' ),\n\t\t\tlabel: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\n\t\t\t\t\t'The label of the variable to be stored after the change. If the user only wishes to update the value, this must be strictly equal to the current label.'\n\t\t\t\t),\n\t\t\tvalue: z\n\t\t\t\t.string()\n\t\t\t\t.describe(\n\t\t\t\t\t\"The new value for the variable. For color variables, this should be a valid CSS color (e.g., 'rgb(255,0,0)', '#ff0000', 'red'). For font variables, this should be a valid font family (e.g., 'Arial', 'serif'). If the user wishes to rename only, make sure you provide the existing value.\"\n\t\t\t\t),\n\t\t},\n\t\toutputSchema: {\n\t\t\tstatus: z.enum( [ 'ok', 'error' ] ).describe( 'The status of the operation' ),\n\t\t\tmessage: z\n\t\t\t\t.string()\n\t\t\t\t.optional()\n\t\t\t\t.describe( 'Optional message providing additional information about the operation' ),\n\t\t},\n\t\tname: 'update-global-variable',\n\t\tdescription: `Update an existing global variable\n\n## When to use this tool:\n- When a user requests to update an existing global variable in the Elementor editor.\n- When you need to modify the value of an existing variable.\n- When you want to rename an existing variable (change its label).\n- When you want to both rename and modify the value of an existing variable.\n\n## Prerequisites:\n- Ensure you have the most up-to-date list of existing global variables to avoid label duplication. You can use the \"list-global-variables\" tool to fetch the current variables.\n- Make sure when updating a variable, the new label is unique and not already in use by another variable.\n- Make sure you understand whether you are updating a value, renaming, or both.\n- Reference the variable by the \"id\" property, given from the \"list-global-variables\" tool.\n- If the user wishes to rename, make sure you have the existing value.\n- If the user wishes to update the value, make sure you have to **correct label**.\n- You must have the unique identifier, the current label, the current value, and the new value or label or both, before using this tool.\n\n## Required parameters:\n- id: The unique identifier of the variable to be updated or renamed.\n- label: The label of the variable to be stored after the change. If the user only wishes to update the value, this must be strictly equal to the current label.\n- value: The new value for the variable. For color variables, this should be a valid CSS color (e.g., 'rgb(255,0,0)', '#ff0000', 'red'). For font variables, this should be a valid font family (e.g., 'Arial', 'serif'). If the user wishes to rename only, make sure you provide the existing value.\n\n## Example tool call (JSON format):\n\\`\\`\\`json\n{ \"id\": \"some-unique-id\", \"label\": \"Cool\", \"value\": \"rgb(0,140,250)\" }\n\\`\\`\\`\n\n## Example responses (JSON format):\nSuccessful update:\n\\`\\`\\`json\n{ \"status\": \"ok\" }\n\\`\\`\\`\n\nFailed update, which must be displayed to the end user. If the error message is not plain, attempt to find the most useful part of the message and display it.\n\\`\\`\\`json\n{ \"status\": \"error\", \"message\": \"Label 'Cool' is already in use by another variable.\" }\n\\`\\`\\`\n`,\n\t\thandler: async ( params ) => {\n\t\t\tconst { id, label, value } = params;\n\t\t\ttry {\n\t\t\t\tawait service.update( id, { label, value } );\n\t\t\t\treturn { status: 'ok' };\n\t\t\t} catch ( error ) {\n\t\t\t\tconst message: string = ( error as Error ).message || 'Unknown server error';\n\t\t\t\treturn {\n\t\t\t\t\tstatus: 'error',\n\t\t\t\t\tmessage: `There was an error creating the variable: ${ message }`,\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t} );\n};\n","import { getMCPByDomain } from '@elementor/editor-mcp';\n\nexport const GLOBAL_VARIABLES_URI = 'elementor://variables';\n\nexport const initVariablesResource = () => {\n\tconst { mcpServer } = getMCPByDomain( 'variables' );\n\n\tmcpServer.resource(\n\t\t'global-variables',\n\t\tGLOBAL_VARIABLES_URI,\n\t\t{\n\t\t\tdescription:\n\t\t\t\t'Global variables list. Variables are being used in this way: If it is directly in the schema, you need to put the ID which is the key inside the object.',\n\t\t},\n\t\tasync () => {\n\t\t\treturn {\n\t\t\t\tcontents: [ { uri: GLOBAL_VARIABLES_URI, text: localStorage[ 'elementor-global-variables' ] } ],\n\t\t\t};\n\t\t}\n\t);\n\n\twindow.addEventListener( 'variables:updated', () => {\n\t\tmcpServer.server.sendResourceUpdated( {\n\t\t\turi: GLOBAL_VARIABLES_URI,\n\t\t\tcontents: [ { uri: GLOBAL_VARIABLES_URI, text: localStorage[ 'elementor-global-variables' ] } ],\n\t\t} );\n\t} );\n};\n","import * as React from 'react';\nimport { colorPropTypeUtil, stringPropTypeUtil } from '@elementor/editor-props';\nimport { BrushIcon, TextIcon } from '@elementor/icons';\n\nimport { ColorField } from './components/fields/color-field';\nimport { FontField } from './components/fields/font-field';\nimport { ColorIndicator } from './components/ui/color-indicator';\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\nimport { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\nimport { registerVariableType } from './variables-registry/variable-type-registry';\n\nexport function registerVariableTypes() {\n\tregisterVariableType( {\n\t\tvalueField: ColorField,\n\t\ticon: BrushIcon,\n\t\tpropTypeUtil: colorVariablePropTypeUtil,\n\t\tfallbackPropTypeUtil: colorPropTypeUtil,\n\t\tvariableType: 'color',\n\t\tstartIcon: ( { value } ) => <ColorIndicator size=\"inherit\" component=\"span\" value={ value } />,\n\t\tdefaultValue: '#ffffff',\n\t} );\n\n\tregisterVariableType( {\n\t\tvalueField: FontField,\n\t\ticon: TextIcon,\n\t\tpropTypeUtil: fontVariablePropTypeUtil,\n\t\tfallbackPropTypeUtil: stringPropTypeUtil,\n\t\tvariableType: 'font',\n\t\tdefaultValue: 'Roboto',\n\t} );\n}\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { UnstableColorField } from '@elementor/ui';\n\nimport { usePopoverContentRef } from '../../context/variable-selection-popover.context';\nimport { validateValue } from '../../utils/validations';\n\ntype ColorFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( errorMessage: string ) => void;\n};\n\nexport const ColorField = ( { value, onChange, onValidationChange }: ColorFieldProps ) => {\n\tconst [ color, setColor ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef.current;\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetColor( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tsetErrorMessage( errorMsg );\n\t\tonValidationChange?.( errorMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\n\treturn (\n\t\t<UnstableColorField\n\t\t\tid=\"color-variable-field\"\n\t\t\tsize=\"tiny\"\n\t\t\tfullWidth\n\t\t\tvalue={ color }\n\t\t\tonChange={ handleChange }\n\t\t\terror={ errorMessage || undefined }\n\t\t\tslotProps={ {\n\t\t\t\tcolorPicker: {\n\t\t\t\t\tanchorEl: anchorRef,\n\t\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'right' },\n\t\t\t\t\ttransformOrigin: { vertical: 'top', horizontal: -10 },\n\t\t\t\t\tslotProps: {\n\t\t\t\t\t\tcolorIndicator: {\n\t\t\t\t\t\t\tsize: 'inherit',\n\t\t\t\t\t\t\tsx: {\n\t\t\t\t\t\t\t\tborderRadius: 0.5,\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/>\n\t);\n};\n","import * as React from 'react';\nimport { useId, useRef, useState } from 'react';\nimport { enqueueFont, ItemSelector } from '@elementor/editor-controls';\nimport { useFontFamilies, useSectionWidth } from '@elementor/editor-editing-panel';\nimport { ChevronDownIcon, TextIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, Popover, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopoverContentRef } from '../../context/variable-selection-popover.context';\nimport { validateValue } from '../../utils/validations';\n\ntype FontFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n\tonValidationChange?: ( errorMessage: string ) => void;\n};\n\nexport const FontField = ( { value, onChange, onValidationChange }: FontFieldProps ) => {\n\tconst [ fontFamily, setFontFamily ] = useState( value );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef.current;\n\n\tconst fontPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst fontFamilies = useFontFamilies();\n\tconst sectionWidth = useSectionWidth();\n\n\tconst mapFontSubs = React.useMemo( () => {\n\t\treturn fontFamilies.map( ( { label, fonts } ) => ( {\n\t\t\tlabel,\n\t\t\titems: fonts,\n\t\t} ) );\n\t}, [ fontFamilies ] );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetFontFamily( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tonValidationChange?.( errorMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\n\tconst handleFontFamilyChange = ( newFontFamily: string ) => {\n\t\thandleChange( newFontFamily );\n\t\tfontPopoverState.close();\n\t};\n\n\tconst id = useId();\n\n\treturn (\n\t\t<>\n\t\t\t<UnstableTag\n\t\t\t\tid={ id }\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ fontFamily }\n\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t{ ...bindTrigger( fontPopoverState ) }\n\t\t\t\tfullWidth\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\tdisablePortal\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorRef }\n\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: -28 } }\n\t\t\t\t{ ...bindPopover( fontPopoverState ) }\n\t\t\t>\n\t\t\t\t<ItemSelector\n\t\t\t\t\tid=\"font-family-variables-selector\"\n\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\tonItemChange={ handleFontFamilyChange }\n\t\t\t\t\tonClose={ fontPopoverState.close }\n\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\ttitle={ __( 'Font family', 'elementor' ) }\n\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { Portal } from '@elementor/ui';\n\nimport { styleVariablesRepository } from '../style-variables-repository';\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\nimport { type StyleVariables, type Variable } from '../types';\n\nconst VARIABLES_WRAPPER = 'body';\n\nexport function StyleVariablesRenderer() {\n\tconst container = usePortalContainer();\n\tconst styleVariables = useStyleVariables();\n\n\tconst hasVariables = Object.keys( styleVariables ).length > 0;\n\n\tif ( ! container || ! hasVariables ) {\n\t\treturn null;\n\t}\n\n\tconst cssVariables = convertToCssVariables( styleVariables );\n\tconst wrappedCss = `${ VARIABLES_WRAPPER }{${ cssVariables }}`;\n\n\treturn (\n\t\t<Portal container={ container }>\n\t\t\t<style data-e-style-id=\"e-variables\" key={ wrappedCss }>\n\t\t\t\t{ wrappedCss }\n\t\t\t</style>\n\t\t</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument()?.head );\n}\n\nfunction useStyleVariables() {\n\tconst [ variables, setVariables ] = useState< StyleVariables >( {} );\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = styleVariablesRepository.subscribe( setVariables );\n\n\t\treturn () => {\n\t\t\tunsubscribe();\n\t\t};\n\t}, [] );\n\n\treturn variables;\n}\n\nfunction cssVariableDeclaration( key: string, variable: Variable ) {\n\tconst variableName = variable?.deleted ? key : variable.label;\n\tconst value = variable.value;\n\n\treturn `--${ variableName }:${ value };`;\n}\n\nfunction convertToCssVariables( variables: StyleVariables ): string {\n\tconst listOfVariables = Object.entries( variables );\n\treturn listOfVariables.map( ( [ key, variable ] ) => cssVariableDeclaration( key, variable ) ).join( '' );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeDocument() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument;\n}\n","import { injectIntoRepeaterItemIcon, injectIntoRepeaterItemLabel } from '@elementor/editor-controls';\nimport { backgroundColorOverlayPropTypeUtil, type PropValue, shadowPropTypeUtil } from '@elementor/editor-props';\n\nimport {\n\tBackgroundRepeaterColorIndicator,\n\tBackgroundRepeaterLabel,\n\tBoxShadowRepeaterColorIndicator,\n} from './components/variables-repeater-item-slot';\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\n\nexport function registerRepeaterInjections() {\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'color-variables-background-icon',\n\t\tcomponent: BackgroundRepeaterColorIndicator,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( backgroundColorOverlayPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n\n\tinjectIntoRepeaterItemIcon( {\n\t\tid: 'color-variables-icon',\n\t\tcomponent: BoxShadowRepeaterColorIndicator,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( shadowPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n\n\tinjectIntoRepeaterItemLabel( {\n\t\tid: 'color-variables-label',\n\t\tcomponent: BackgroundRepeaterLabel,\n\t\tcondition: ( { value: prop }: { value: PropValue } ) => {\n\t\t\treturn hasAssignedColorVariable( backgroundColorOverlayPropTypeUtil.extract( prop )?.color );\n\t\t},\n\t} );\n}\n\nconst hasAssignedColorVariable = ( propValue: PropValue ): boolean => {\n\treturn !! colorVariablePropTypeUtil.isValid( propValue );\n};\n","import * as React from 'react';\nimport { type BackgroundColorOverlayPropValue, type BoxShadowPropValue, type PropValue } from '@elementor/editor-props';\n\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { ColorIndicator } from './ui/color-indicator';\n\nconst useColorVariable = ( value: BackgroundColorOverlayPropValue | BoxShadowPropValue ) => {\n\tconst variableId = value?.value?.color?.value;\n\n\treturn useVariable( variableId || '' );\n};\n\nexport const BackgroundRepeaterColorIndicator = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BackgroundColorOverlayPropValue );\n\n\treturn <ColorIndicator component=\"span\" size=\"inherit\" value={ colorVariable?.value } />;\n};\n\nexport const BackgroundRepeaterLabel = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BackgroundColorOverlayPropValue );\n\n\treturn <span>{ colorVariable?.label }</span>;\n};\n\nexport const BoxShadowRepeaterColorIndicator = ( { value }: { value: PropValue } ) => {\n\tconst colorVariable = useColorVariable( value as BoxShadowPropValue );\n\n\treturn <ColorIndicator component=\"span\" size=\"inherit\" value={ colorVariable?.value } />;\n};\n"],"mappings":"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","names":["import_editor_editing_panel","import_editor_panels","import_editor_props","React","import_react","import_editor_ui","import_icons","import_ui","import_i18n","import_editor_canvas","import_ui","import_i18n","import_i18n","id","id","id","import_editor_props","import_schema","id","id","id","import_editor_canvas","id","registerVariableType","getVariableType","getVariableTypes","hasVariableType","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_ui","import_i18n","import_react","import_react","import_react","React","import_react","id","createVariable","id","React","import_react","import_icons","import_ui","import_i18n","React","import_react","import_editor_ui","import_icons","import_ui","import_i18n","React","import_react","import_ui","id","errorMsg","React","import_react","import_icons","import_ui","React","import_ui","React","import_react","import_ui","id","createPanel","createVariable","React","import_editor_controls","import_react","React","import_editor_controls","import_icons","import_ui","React","import_react","import_editor_v1_adapters","React","import_react","import_ui","React","import_react","import_editor_controls","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","import_editor_controls","import_editor_controls","import_editor_props","React","import_ui","id","SIZE","React","import_react","import_editor_controls","import_editor_current_user","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","React","import_react","import_icons","import_ui","import_i18n","SIZE","React","import_react","import_editor_editing_panel","import_editor_ui","import_icons","import_ui","import_i18n","React","import_editor_ui","import_icons","import_ui","import_i18n","SIZE","import_ui","SIZE","React","import_icons","import_ui","import_i18n","SIZE","Tag","SIZE","React","import_react","import_editor_controls","import_ui","import_i18n","React","import_react","import_editor_controls","import_editor_editing_panel","import_editor_ui","import_ui","import_i18n","SIZE","React","import_ui","import_i18n","React","import_icons","import_ui","id","React","import_react","import_editor_controls","import_ui","import_i18n","React","import_ui","import_i18n","React","import_react","import_editor_controls","import_ui","import_i18n","React","import_ui","import_i18n","React","import_editor_editing_panel","import_icons","import_i18n","import_editor_mcp","import_schema","import_editor_mcp","import_schema","id","import_editor_mcp","import_schema","id","import_editor_mcp","import_schema","id","import_editor_mcp","React","import_editor_props","import_icons","React","import_react","import_ui","React","import_react","import_editor_controls","import_editor_editing_panel","import_icons","import_ui","import_i18n","id","React","import_react","import_editor_v1_adapters","import_ui","useListenTo","import_editor_controls","import_editor_props","React","registerPanel"]}