@elementor/editor-variables 0.18.0 → 3.32.0-21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +0 -28
- package/dist/index.d.mts +19 -1
- package/dist/index.d.ts +19 -1
- package/dist/index.js +1282 -1026
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1262 -990
- package/dist/index.mjs.map +1 -1
- package/package.json +16 -14
- package/src/api.ts +18 -2
- package/src/components/fields/color-field.tsx +3 -3
- package/src/components/fields/font-field.tsx +21 -10
- package/src/components/fields/label-field.tsx +31 -5
- package/src/components/ui/edit-confirmation-dialog.tsx +75 -0
- package/src/components/ui/missing-variable-alert.tsx +39 -0
- package/src/components/ui/no-variables.tsx +59 -26
- package/src/components/ui/tags/missing-tag.tsx +25 -0
- package/src/components/ui/variable/assigned-variable.tsx +11 -14
- package/src/components/ui/variable/deleted-variable.tsx +102 -50
- package/src/components/ui/variable/missing-variable.tsx +44 -0
- package/src/components/{color-variable-creation.tsx → variable-creation.tsx} +51 -22
- package/src/components/variable-edit.tsx +221 -0
- package/src/components/variable-restore.tsx +117 -0
- package/src/components/variable-selection-popover.tsx +91 -92
- package/src/components/variables-manager/variables-manager-panel.tsx +115 -0
- package/src/components/{font-variables-selection.tsx → variables-selection.tsx} +38 -17
- package/src/context/variable-selection-popover.context.tsx +19 -0
- package/src/context/variable-type-context.tsx +23 -0
- package/src/controls/variable-control.tsx +26 -0
- package/src/hooks/use-initial-value.ts +22 -0
- package/src/hooks/use-permissions.ts +15 -0
- package/src/hooks/use-prop-variable-action.tsx +53 -0
- package/src/hooks/use-prop-variables.ts +2 -2
- package/src/index.ts +1 -0
- package/src/init.ts +33 -4
- package/src/register-variable-types.tsx +29 -0
- package/src/repeater-injections.ts +5 -1
- package/src/service.ts +2 -19
- package/src/transformers/inheritance-transformer.tsx +30 -0
- package/src/transformers/utils/resolve-css-variable.ts +24 -0
- package/src/transformers/variable-transformer.ts +3 -16
- package/src/utils/tracking.ts +39 -0
- package/src/utils/validations.ts +40 -6
- package/src/variables-registry/create-variable-type-registry.ts +77 -0
- package/src/variables-registry/variable-type-registry.ts +3 -0
- package/src/components/color-variable-edit.tsx +0 -157
- package/src/components/color-variables-selection.tsx +0 -128
- package/src/components/font-variable-creation.tsx +0 -106
- package/src/components/font-variable-edit.tsx +0 -157
- package/src/components/variable-selection-popover.context.ts +0 -7
- package/src/controls/color-variable-control.tsx +0 -39
- package/src/controls/font-variable-control.tsx +0 -37
- package/src/hooks/use-prop-color-variable-action.tsx +0 -25
- package/src/hooks/use-prop-font-variable-action.tsx +0 -25
- package/src/init-color-variables.ts +0 -27
- package/src/init-font-variables.ts +0 -24
- package/src/utils.ts +0 -20
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/init.ts","../src/init-color-variables.ts","../src/controls/color-variable-control.tsx","../src/components/ui/color-indicator.tsx","../src/components/ui/variable/assigned-variable.tsx","../src/components/variable-selection-popover.tsx","../src/prop-types/color-variable-prop-type.ts","../src/prop-types/font-variable-prop-type.ts","../src/components/color-variable-creation.tsx","../src/hooks/use-prop-variables.ts","../src/service.ts","../src/api.ts","../src/storage.ts","../src/sync/enqueue-font.ts","../src/create-style-variables-repository.ts","../src/style-variables-repository.ts","../src/components/fields/color-field.tsx","../src/utils/validations.ts","../src/components/variable-selection-popover.context.ts","../src/components/fields/label-field.tsx","../src/components/color-variable-edit.tsx","../src/components/ui/delete-confirmation-dialog.tsx","../src/components/color-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/font-variable-creation.tsx","../src/components/fields/font-field.tsx","../src/components/font-variable-edit.tsx","../src/components/font-variables-selection.tsx","../src/components/ui/tags/assigned-tag.tsx","../src/components/ui/variable/deleted-variable.tsx","../src/components/ui/deleted-variable-alert.tsx","../src/components/ui/tags/deleted-tag.tsx","../src/hooks/use-prop-color-variable-action.tsx","../src/utils.ts","../src/repeater-injections.ts","../src/components/variables-repeater-item-slot.tsx","../src/transformers/variable-transformer.ts","../src/init-font-variables.ts","../src/controls/font-variable-control.tsx","../src/hooks/use-prop-font-variable-action.tsx","../src/renderers/style-variables-renderer.tsx","../src/sync/get-canvas-iframe-document.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { initColorVariables } from './init-color-variables';\nimport { initFontVariables } from './init-font-variables';\nimport { StyleVariablesRenderer } from './renderers/style-variables-renderer';\nimport { service as variablesService } from './service';\n\nexport function init() {\n\tinitColorVariables();\n\tinitFontVariables();\n\n\tvariablesService.init();\n\n\tinjectIntoTop( {\n\t\tid: 'canvas-style-variables-render',\n\t\tcomponent: StyleVariablesRenderer,\n\t} );\n}\n","import { styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { controlActionsMenu, registerControlReplacement } from '@elementor/editor-editing-panel';\n\nimport { ColorVariableControl } from './controls/color-variable-control';\nimport { usePropColorVariableAction } from './hooks/use-prop-color-variable-action';\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\nimport { registerRepeaterInjections } from './repeater-injections';\nimport { variableTransformer } from './transformers/variable-transformer';\nimport { hasAssignedColorVariable } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport function initColorVariables() {\n\tregisterControlReplacement( {\n\t\tcomponent: ColorVariableControl,\n\t\tcondition: ( { value } ) => hasAssignedColorVariable( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'color-variables',\n\t\tuseProps: usePropColorVariableAction,\n\t} );\n\n\tstyleTransformersRegistry.register( colorVariablePropTypeUtil.key, variableTransformer );\n\n\tregisterRepeaterInjections();\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { colorPropTypeUtil } from '@elementor/editor-props';\n\nimport { ColorIndicator } from '../components/ui/color-indicator';\nimport { AssignedVariable } from '../components/ui/variable/assigned-variable';\nimport { DeletedVariable } from '../components/ui/variable/deleted-variable';\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\n\nexport const ColorVariableControl = () => {\n\tconst { value: variableValue } = useBoundProp( colorVariablePropTypeUtil );\n\tconst assignedVariable = useVariable( variableValue );\n\n\tif ( ! assignedVariable ) {\n\t\tthrow new Error( `Global color variable ${ variableValue } not found` );\n\t}\n\n\tconst isVariableDeleted = assignedVariable?.deleted;\n\n\tif ( isVariableDeleted ) {\n\t\treturn (\n\t\t\t<DeletedVariable\n\t\t\t\tvariable={ assignedVariable }\n\t\t\t\tvariablePropTypeUtil={ colorVariablePropTypeUtil }\n\t\t\t\tfallbackPropTypeUtil={ colorPropTypeUtil }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<AssignedVariable\n\t\t\tvariable={ assignedVariable }\n\t\t\tvariablePropTypeUtil={ colorVariablePropTypeUtil }\n\t\t\tfallbackPropTypeUtil={ colorPropTypeUtil }\n\t\t\tadditionalStartIcon={ <ColorIndicator size=\"inherit\" value={ assignedVariable.value } component=\"span\" /> }\n\t\t/>\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 { useId, useRef } from 'react';\nimport * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeUtil } 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 { VariableSelectionPopover } from '../../variable-selection-popover';\nimport { AssignedTag, SIZE } from '../tags/assigned-tag';\n\ntype Props = {\n\tvariablePropTypeUtil: PropTypeUtil< string, string >;\n\tfallbackPropTypeUtil: PropTypeUtil< string, string | null > | PropTypeUtil< string, string >;\n\tadditionalStartIcon?: React.ReactNode;\n\tvariable: Variable;\n};\n\nexport const AssignedVariable = ( {\n\tvariable,\n\tvariablePropTypeUtil,\n\tfallbackPropTypeUtil,\n\tadditionalStartIcon,\n}: Props ) => {\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 = () => {\n\t\tsetValue( fallbackPropTypeUtil.create( variable.value ) );\n\t};\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\n\t\t\t\t\t\t{ additionalStartIcon }\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={ variablePropTypeUtil.key }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Box>\n\t);\n};\n","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { Box } from '@elementor/ui';\n\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\nimport { type Variable } from '../types';\nimport { ColorVariableCreation } from './color-variable-creation';\nimport { ColorVariableEdit } from './color-variable-edit';\nimport { ColorVariablesSelection } from './color-variables-selection';\nimport { FontVariableCreation } from './font-variable-creation';\nimport { FontVariableEdit } from './font-variable-edit';\nimport { FontVariablesSelection } from './font-variables-selection';\nimport { PopoverContentRefContext } from './variable-selection-popover.context';\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\tpropTypeKey: string;\n\tselectedVariable?: Variable;\n};\n\nexport const VariableSelectionPopover = ( { closePopover, propTypeKey, selectedVariable }: Props ) => {\n\tconst [ currentView, setCurrentView ] = useState< View >( VIEW_LIST );\n\tconst editIdRef = useRef< string >( '' );\n\tconst anchorRef = useRef< HTMLDivElement >( null );\n\n\treturn (\n\t\t<PopoverContentRefContext.Provider value={ anchorRef }>\n\t\t\t<Box ref={ anchorRef }>\n\t\t\t\t{ renderStage( {\n\t\t\t\t\tpropTypeKey,\n\t\t\t\t\tcurrentView,\n\t\t\t\t\tselectedVariable,\n\t\t\t\t\teditIdRef,\n\t\t\t\t\tsetCurrentView,\n\t\t\t\t\tclosePopover,\n\t\t\t\t} ) }\n\t\t\t</Box>\n\t\t</PopoverContentRefContext.Provider>\n\t);\n};\n\ntype StageProps = {\n\tpropTypeKey: string;\n\tcurrentView: View;\n\tselectedVariable?: Variable;\n\teditIdRef: React.MutableRefObject< string >;\n\tsetCurrentView: ( stage: View ) => void;\n\tclosePopover: () => void;\n};\n\nfunction renderStage( props: StageProps ): React.ReactNode {\n\tconst handleSubmitOnEdit = () => {\n\t\tif ( props?.selectedVariable?.key === props.editIdRef.current ) {\n\t\t\tprops.closePopover();\n\t\t} else {\n\t\t\tprops.setCurrentView( VIEW_LIST );\n\t\t}\n\t};\n\n\tif ( fontVariablePropTypeUtil.key === props.propTypeKey ) {\n\t\tif ( VIEW_LIST === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<FontVariablesSelection\n\t\t\t\t\tclosePopover={ props.closePopover }\n\t\t\t\t\tonAdd={ () => {\n\t\t\t\t\t\tprops.setCurrentView( VIEW_ADD );\n\t\t\t\t\t} }\n\t\t\t\t\tonEdit={ ( key ) => {\n\t\t\t\t\t\tprops.editIdRef.current = key;\n\t\t\t\t\t\tprops.setCurrentView( VIEW_EDIT );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif ( VIEW_ADD === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<FontVariableCreation\n\t\t\t\t\tonGoBack={ () => props.setCurrentView( VIEW_LIST ) }\n\t\t\t\t\tonClose={ props.closePopover }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif ( VIEW_EDIT === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<FontVariableEdit\n\t\t\t\t\teditId={ props.editIdRef.current ?? '' }\n\t\t\t\t\tonGoBack={ () => props.setCurrentView( VIEW_LIST ) }\n\t\t\t\t\tonClose={ props.closePopover }\n\t\t\t\t\tonSubmit={ handleSubmitOnEdit }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t}\n\n\tif ( colorVariablePropTypeUtil.key === props.propTypeKey ) {\n\t\tif ( VIEW_LIST === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<ColorVariablesSelection\n\t\t\t\t\tclosePopover={ props.closePopover }\n\t\t\t\t\tonAdd={ () => {\n\t\t\t\t\t\tprops.setCurrentView( VIEW_ADD );\n\t\t\t\t\t} }\n\t\t\t\t\tonEdit={ ( key ) => {\n\t\t\t\t\t\tprops.editIdRef.current = key;\n\t\t\t\t\t\tprops.setCurrentView( VIEW_EDIT );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif ( VIEW_ADD === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<ColorVariableCreation\n\t\t\t\t\tonGoBack={ () => props.setCurrentView( VIEW_LIST ) }\n\t\t\t\t\tonClose={ props.closePopover }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tif ( VIEW_EDIT === props.currentView ) {\n\t\t\treturn (\n\t\t\t\t<ColorVariableEdit\n\t\t\t\t\teditId={ props.editIdRef.current ?? '' }\n\t\t\t\t\tonGoBack={ () => props.setCurrentView( VIEW_LIST ) }\n\t\t\t\t\tonClose={ props.closePopover }\n\t\t\t\t\tonSubmit={ handleSubmitOnEdit }\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t}\n\n\treturn null;\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 { createPropUtils } from '@elementor/editor-props';\nimport { z } from '@elementor/schema';\n\nexport const fontVariablePropTypeUtil = createPropUtils( 'global-font-variable', z.string() );\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, BrushIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { createVariable } from '../hooks/use-prop-variables';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { ColorField } from './fields/color-field';\nimport { LabelField } from './fields/label-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tonGoBack?: () => void;\n\tonClose: () => void;\n};\n\nexport const ColorVariableCreation = ( { onGoBack, onClose }: Props ) => {\n\tconst { setValue: setVariable } = useBoundProp( colorVariablePropTypeUtil );\n\n\tconst [ color, setColor ] = useState( '' );\n\tconst [ label, setLabel ] = useState( '' );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst resetFields = () => {\n\t\tsetColor( '' );\n\t\tsetLabel( '' );\n\t\tsetErrorMessage( '' );\n\t};\n\n\tconst closePopover = () => {\n\t\tresetFields();\n\t\tonClose();\n\t};\n\n\tconst handleCreate = () => {\n\t\tcreateVariable( {\n\t\t\tvalue: color,\n\t\t\tlabel,\n\t\t\ttype: colorVariablePropTypeUtil.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\tsetErrorMessage( error.message );\n\t\t\t} );\n\t};\n\n\tconst hasEmptyValue = () => {\n\t\treturn '' === color.trim() || '' === label.trim();\n\t};\n\n\tconst isSubmitDisabled = hasEmptyValue();\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<BrushIcon 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<LabelField\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetLabel( value );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<ColorField\n\t\t\t\t\tvalue={ color }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetColor( value );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\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={ handleCreate }>\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 { useMemo } from 'react';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { service } from '../service';\nimport { type Variable } from '../types';\n\nexport const useVariable = ( key: string ) => {\n\tconst variables = service.variables();\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 variables = usePropVariables( propTypeKey );\n\n\tconst filteredVariables = variables.filter( ( { label } ) => {\n\t\treturn label.toLowerCase().includes( searchValue.toLowerCase() );\n\t} );\n\n\treturn {\n\t\tlist: filteredVariables,\n\t\thasMatches: filteredVariables.length > 0,\n\t\tisSourceNotEmpty: variables.length > 0,\n\t};\n};\n\nconst usePropVariables = ( propKey: PropKey ) => {\n\treturn useMemo( () => normalizeVariables( propKey ), [ propKey ] );\n};\n\nconst isNotDeleted = ( { deleted }: { deleted?: boolean } ) => ! deleted;\n\nconst normalizeVariables = ( propKey: string ) => {\n\tconst variables = service.variables();\n\n\treturn Object.entries( variables )\n\t\t.filter( ( [ , variable ] ) => variable.type === propKey && isNotDeleted( variable ) )\n\t\t.map( ( [ key, { label, value } ] ) => ( {\n\t\t\tkey,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} ) );\n};\n\nexport const createVariable = ( newVariable: Variable ): Promise< string > => {\n\treturn service.create( newVariable ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const updateVariable = ( updateId: string, { value, label }: { value: string; label: string } ) => {\n\treturn service.update( updateId, { value, label } ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const deleteVariable = ( deleteId: string ) => {\n\treturn service.delete( deleteId ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const restoreVariable = ( restoreId: string ) => {\n\treturn service.restore( restoreId ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n","import { type AxiosResponse } from '@elementor/http-client';\nimport { __ } 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\t\t.catch( ( error ) => {\n\t\t\t\tconst message = getErrorMessage( error.response );\n\t\t\t\tthrow message ? new Error( message ) : error;\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\t\t.catch( ( error ) => {\n\t\t\t\tconst message = getErrorMessage( error.response );\n\t\t\t\tthrow message ? new Error( message ) : error;\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 ) => {\n\t\treturn apiClient\n\t\t\t.restore( 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, ...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\nconst getErrorMessage = ( response: AxiosResponse ) => {\n\tif ( response?.data?.code === 'duplicated_label' ) {\n\t\treturn __( 'This variable name already exists. Please choose a unique name.', 'elementor' );\n\t}\n\n\treturn __( 'There was a glitch. Try saving your variable again.', 'elementor' );\n};\n","import { httpService } from '@elementor/http-client';\n\nconst BASE_PATH = 'elementor/v1/variables';\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 ) => {\n\t\treturn httpService().post( BASE_PATH + '/restore', { id } );\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 { 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 * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { FormHelperText, FormLabel, Grid, UnstableColorField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { validateValue } from '../../utils/validations';\nimport { usePopoverContentRef } from '../variable-selection-popover.context';\n\ntype ColorFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n};\n\nexport const ColorField = ( { value, onChange }: ColorFieldProps ) => {\n\tconst [ color, setColor ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef;\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetColor( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tsetErrorMessage( errorMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\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 size=\"tiny\">{ __( 'Value', 'elementor' ) }</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ color }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\terror={ errorMessage ?? undefined }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl: anchorRef.current,\n\t\t\t\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'right' },\n\t\t\t\t\t\t\ttransformOrigin: { vertical: 'top', horizontal: -10 },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import { __ } from '@wordpress/i18n';\n\nexport const VARIABLE_LABEL_MAX_LENGTH = 50;\n\nexport const validateLabel = ( name: string ): string => {\n\tif ( ! name.trim() ) {\n\t\treturn __( 'Give your variable a name.', 'elementor' );\n\t}\n\n\tconst allowedChars = /^[a-zA-Z0-9_-]+$/;\n\tif ( ! allowedChars.test( name ) ) {\n\t\treturn __( 'Use letters, numbers, dashes (-), or underscores (_) for the name.', 'elementor' );\n\t}\n\n\tconst hasAlphanumeric = /[a-zA-Z0-9]/;\n\tif ( ! hasAlphanumeric.test( name ) ) {\n\t\treturn __( 'Names have to include at least one non-special character.', 'elementor' );\n\t}\n\n\tif ( VARIABLE_LABEL_MAX_LENGTH < name.length ) {\n\t\treturn __( 'Keep names up to 50 characters.', 'elementor' );\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 __( 'Keep names up to 50 characters.', 'elementor' );\n\t}\n\n\treturn '';\n};\n\nexport const validateValue = ( value: string ): string => {\n\tif ( ! value.trim() ) {\n\t\treturn __( 'Add a value to complete your variable.', 'elementor' );\n\t}\n\n\treturn '';\n};\n","import { createContext, useContext } from 'react';\n\nexport const PopoverContentRefContext = createContext< React.RefObject< HTMLDivElement > | null >( null );\n\nexport const usePopoverContentRef = () => {\n\treturn useContext( PopoverContentRefContext );\n};\n","import * as React from 'react';\nimport { useId, useState } from 'react';\nimport { FormHelperText, FormLabel, Grid, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { labelHint, validateLabel, VARIABLE_LABEL_MAX_LENGTH } from '../../utils/validations';\n\ntype LabelFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n};\n\nexport const LabelField = ( { value, onChange }: LabelFieldProps ) => {\n\tconst [ label, setLabel ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ noticeMessage, setNoticeMessage ] = useState( () => labelHint( value ) );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetLabel( newValue );\n\n\t\tconst errorMsg = validateLabel( newValue );\n\t\tconst hintMsg = labelHint( newValue );\n\n\t\tsetErrorMessage( errorMsg );\n\t\tsetNoticeMessage( errorMsg ? '' : hintMsg );\n\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\n\tconst id = useId();\n\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{ __( 'Name', 'elementor' ) }\n\t\t\t\t</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<TextField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\terror={ !! errorMessage }\n\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\t\t\tinputProps={ { maxLength: VARIABLE_LABEL_MAX_LENGTH } }\n\t\t\t\t/>\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t\t{ noticeMessage && <FormHelperText>{ noticeMessage }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\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, BrushIcon, TrashIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { deleteVariable, updateVariable, useVariable } from '../hooks/use-prop-variables';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { ColorField } from './fields/color-field';\nimport { LabelField } from './fields/label-field';\nimport { DeleteConfirmationDialog } from './ui/delete-confirmation-dialog';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\teditId: string;\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const ColorVariableEdit = ( { onClose, onGoBack, onSubmit, editId }: Props ) => {\n\tconst { setValue: notifyBoundPropChange, value: assignedValue } = useBoundProp( colorVariablePropTypeUtil );\n\tconst [ deleteConfirmation, setDeleteConfirmation ] = useState( false );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst variable = useVariable( editId );\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global color variable not found` );\n\t}\n\n\tconst [ color, setColor ] = useState( variable.value );\n\tconst [ label, setLabel ] = useState( variable.label );\n\n\tconst handleUpdate = () => {\n\t\tupdateVariable( editId, {\n\t\t\tvalue: color,\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\tsetErrorMessage( error.message );\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 actions = [];\n\n\tactions.push(\n\t\t<IconButton\n\t\t\tkey=\"delete\"\n\t\t\tsize={ SIZE }\n\t\t\taria-label={ __( 'Delete', 'elementor' ) }\n\t\t\tonClick={ handleDeleteConfirmation }\n\t\t>\n\t\t\t<TrashIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\tconst hasEmptyValues = () => {\n\t\treturn ! color.trim() || ! label.trim();\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn color === variable.value && label === variable.label;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyValues();\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<BrushIcon 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<LabelField\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetLabel( value );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<ColorField\n\t\t\t\t\t\tvalue={ color }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetColor( value );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\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\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<Typography variant=\"subtitle2\" component=\"span\">\n\t\t\t\t\t\t { label } \n\t\t\t\t\t</Typography>\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 { useBoundProp } from '@elementor/editor-controls';\nimport { PopoverBody } from '@elementor/editor-editing-panel';\nimport { PopoverHeader, PopoverMenuList, PopoverSearch, type VirtualizedItem } from '@elementor/editor-ui';\nimport { BrushIcon, ColorFilterIcon, PlusIcon, SettingsIcon } from '@elementor/icons';\nimport { Divider, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useFilteredVariables } from '../hooks/use-prop-variables';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { type ExtendedVirtualizedItem } from '../types';\nimport { ColorIndicator } from './ui/color-indicator';\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 ColorVariablesSelection = ( { closePopover, onAdd, onEdit, onSettings }: Props ) => {\n\tconst { value: variable, setValue: setVariable } = useBoundProp( colorVariablePropTypeUtil );\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst {\n\t\tlist: variables,\n\t\thasMatches: hasSearchResults,\n\t\tisSourceNotEmpty: hasVariables,\n\t} = useFilteredVariables( searchValue, colorVariablePropTypeUtil.key );\n\n\tconst handleSetColorVariable = ( key: string ) => {\n\t\tsetVariable( key );\n\t\tclosePopover();\n\t};\n\n\tconst actions = [];\n\n\tif ( onAdd ) {\n\t\tactions.push(\n\t\t\t<IconButton key=\"add\" size={ SIZE } onClick={ onAdd }>\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 items: ExtendedVirtualizedItem[] = variables.map( ( { value, label, key } ) => ( {\n\t\ttype: 'item' as const,\n\t\tvalue: key,\n\t\tlabel,\n\t\ticon: <ColorIndicator size=\"inherit\" component=\"span\" value={ value } />,\n\t\tsecondaryText: value,\n\t\tonEdit: () => onEdit?.( key ),\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\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={ handleSetColorVariable }\n\t\t\t\t\tonClose={ () => {} }\n\t\t\t\t\tselectedValue={ variable }\n\t\t\t\t\tdata-testid=\"color-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={ <BrushIcon fontSize=\"large\" /> }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasVariables && (\n\t\t\t\t<NoVariables\n\t\t\t\t\ttitle={ __( 'Create your first color variable', 'elementor' ) }\n\t\t\t\t\ticon={ <BrushIcon 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, 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“{ searchValue }”.\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\ntype Props = {\n\ticon?: React.ReactNode;\n\ttitle?: string;\n\tonAdd?: () => void;\n};\n\nexport const NoVariables = ( { icon, title, onAdd }: Props ) => (\n\t<Stack\n\t\tgap={ 1 }\n\t\talignItems=\"center\"\n\t\tjustifyContent=\"center\"\n\t\theight=\"100%\"\n\t\tcolor=\"text.secondary\"\n\t\tsx={ { p: 2.5, pb: 5.5 } }\n\t>\n\t\t{ icon }\n\n\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t{ title }\n\t\t</Typography>\n\n\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"180px\">\n\t\t\t{ __( 'Variables are saved attributes that you can apply anywhere on your site.', 'elementor' ) }\n\t\t</Typography>\n\n\t\t{ onAdd && (\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" onClick={ onAdd }>\n\t\t\t\t{ __( 'Create a variable', 'elementor' ) }\n\t\t\t</Button>\n\t\t) }\n\t</Stack>\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 { 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, TextIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { createVariable } from '../hooks/use-prop-variables';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\nimport { FontField } from './fields/font-field';\nimport { LabelField } from './fields/label-field';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\tonGoBack?: () => void;\n\tonClose: () => void;\n};\n\nexport const FontVariableCreation = ( { onClose, onGoBack }: Props ) => {\n\tconst { setValue: setVariable } = useBoundProp( fontVariablePropTypeUtil );\n\n\tconst [ fontFamily, setFontFamily ] = useState( '' );\n\tconst [ label, setLabel ] = useState( '' );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst resetFields = () => {\n\t\tsetFontFamily( '' );\n\t\tsetLabel( '' );\n\t\tsetErrorMessage( '' );\n\t};\n\n\tconst closePopover = () => {\n\t\tresetFields();\n\t\tonClose();\n\t};\n\n\tconst handleCreate = () => {\n\t\tcreateVariable( {\n\t\t\tvalue: fontFamily,\n\t\t\tlabel,\n\t\t\ttype: fontVariablePropTypeUtil.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\tsetErrorMessage( error.message );\n\t\t\t} );\n\t};\n\n\tconst hasEmptyValue = () => {\n\t\treturn '' === fontFamily.trim() || '' === label.trim();\n\t};\n\n\tconst isSubmitDisabled = hasEmptyValue();\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<TextIcon 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<LabelField\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetLabel( value );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<FontField\n\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\tsetFontFamily( value );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\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={ handleCreate }>\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 * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { FontFamilySelector } from '@elementor/editor-controls';\nimport { useFontFamilies, useSectionWidth } from '@elementor/editor-editing-panel';\nimport { ChevronDownIcon } from '@elementor/icons';\nimport {\n\tbindPopover,\n\tbindTrigger,\n\tFormHelperText,\n\tFormLabel,\n\tGrid,\n\tPopover,\n\tUnstableTag,\n\tusePopupState,\n} from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { validateValue } from '../../utils/validations';\nimport { usePopoverContentRef } from '../variable-selection-popover.context';\n\ntype FontFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\n};\n\nexport const FontField = ( { value, onChange }: FontFieldProps ) => {\n\tconst [ fontFamily, setFontFamily ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst defaultRef = useRef< HTMLDivElement >( null );\n\tconst anchorRef = usePopoverContentRef() ?? defaultRef;\n\n\tconst fontPopoverState = usePopupState( { variant: 'popover' } );\n\n\tconst fontFamilies = useFontFamilies();\n\tconst sectionWidth = useSectionWidth();\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetFontFamily( newValue );\n\n\t\tconst errorMsg = validateValue( newValue );\n\t\tsetErrorMessage( 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\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 size=\"tiny\">{ __( 'Value', 'elementor' ) }</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( fontPopoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\n\t\t\t\t\tanchorEl={ anchorRef.current }\n\t\t\t\t\tanchorOrigin={ { vertical: 'top', horizontal: 'right' } }\n\t\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: -20 } }\n\t\t\t\t\t{ ...bindPopover( fontPopoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<FontFamilySelector\n\t\t\t\t\t\tfontFamilies={ fontFamilies }\n\t\t\t\t\t\tfontFamily={ fontFamily }\n\t\t\t\t\t\tonFontFamilyChange={ handleFontFamilyChange }\n\t\t\t\t\t\tonClose={ fontPopoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\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, TextIcon, TrashIcon } from '@elementor/icons';\nimport { Button, CardActions, Divider, FormHelperText, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { deleteVariable, updateVariable, useVariable } from '../hooks/use-prop-variables';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\nimport { FontField } from './fields/font-field';\nimport { LabelField } from './fields/label-field';\nimport { DeleteConfirmationDialog } from './ui/delete-confirmation-dialog';\n\nconst SIZE = 'tiny';\n\ntype Props = {\n\teditId: string;\n\tonClose: () => void;\n\tonGoBack?: () => void;\n\tonSubmit?: () => void;\n};\n\nexport const FontVariableEdit = ( { onClose, onGoBack, onSubmit, editId }: Props ) => {\n\tconst { setValue: notifyBoundPropChange, value: assignedValue } = useBoundProp( fontVariablePropTypeUtil );\n\tconst [ deleteConfirmation, setDeleteConfirmation ] = useState( false );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst variable = useVariable( editId );\n\tif ( ! variable ) {\n\t\tthrow new Error( `Global font variable \"${ editId }\" not found` );\n\t}\n\n\tconst [ fontFamily, setFontFamily ] = useState( variable.value );\n\tconst [ label, setLabel ] = useState( variable.label );\n\n\tconst handleUpdate = () => {\n\t\tupdateVariable( editId, {\n\t\t\tvalue: fontFamily,\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\tsetErrorMessage( error.message );\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 hasEmptyValue = () => {\n\t\treturn ! fontFamily.trim() || ! label.trim();\n\t};\n\n\tconst noValueChanged = () => {\n\t\treturn fontFamily === variable.value && label === variable.label;\n\t};\n\n\tconst isSubmitDisabled = noValueChanged() || hasEmptyValue();\n\n\tconst actions = [];\n\n\tactions.push(\n\t\t<IconButton\n\t\t\tkey=\"delete\"\n\t\t\tsize={ SIZE }\n\t\t\taria-label={ __( 'Delete', 'elementor' ) }\n\t\t\tonClick={ handleDeleteConfirmation }\n\t\t>\n\t\t\t<TrashIcon fontSize={ SIZE } />\n\t\t</IconButton>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<PopoverBody height=\"auto\">\n\t\t\t\t<PopoverHeader\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<TextIcon fontSize={ SIZE } />\n\t\t\t\t\t\t</>\n\t\t\t\t\t}\n\t\t\t\t\ttitle={ __( 'Edit variable', 'elementor' ) }\n\t\t\t\t\tonClose={ onClose }\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<LabelField\n\t\t\t\t\t\tvalue={ label }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetLabel( value );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t\t<FontField\n\t\t\t\t\t\tvalue={ fontFamily }\n\t\t\t\t\t\tonChange={ ( value ) => {\n\t\t\t\t\t\t\tsetFontFamily( value );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\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\t\t</>\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, TextIcon } from '@elementor/icons';\nimport { Divider, IconButton } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { useFilteredVariables } from '../hooks/use-prop-variables';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\nimport { type ExtendedVirtualizedItem } from '../types';\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 FontVariablesSelection = ( { closePopover, onAdd, onEdit, onSettings }: Props ) => {\n\tconst { value: variable, setValue: setVariable } = useBoundProp( fontVariablePropTypeUtil );\n\tconst [ searchValue, setSearchValue ] = useState( '' );\n\n\tconst {\n\t\tlist: variables,\n\t\thasMatches: hasSearchResults,\n\t\tisSourceNotEmpty: hasVariables,\n\t} = useFilteredVariables( searchValue, fontVariablePropTypeUtil.key );\n\n\tconst handleSetVariable = ( key: string ) => {\n\t\tsetVariable( key );\n\t\tclosePopover();\n\t};\n\n\tconst actions = [];\n\n\tif ( onAdd ) {\n\t\tactions.push(\n\t\t\t<IconButton key=\"add\" size={ SIZE } onClick={ onAdd }>\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 items: ExtendedVirtualizedItem[] = variables.map( ( { value, label, key } ) => ( {\n\t\ttype: 'item' as const,\n\t\tvalue: key,\n\t\tlabel,\n\t\ticon: <TextIcon fontSize={ SIZE } />,\n\t\tsecondaryText: value,\n\t\tonEdit: () => onEdit?.( key ),\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\treturn (\n\t\t<PopoverBody>\n\t\t\t<PopoverHeader\n\t\t\t\ttitle={ __( 'Variables', 'elementor' ) }\n\t\t\t\tonClose={ closePopover }\n\t\t\t\ticon={ <ColorFilterIcon fontSize={ SIZE } /> }\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=\"font-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={ <TextIcon fontSize=\"large\" /> }\n\t\t\t\t/>\n\t\t\t) }\n\n\t\t\t{ ! hasVariables && (\n\t\t\t\t<NoVariables\n\t\t\t\t\ttitle={ __( 'Create your first font variable', 'elementor' ) }\n\t\t\t\t\ticon={ <TextIcon 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 { 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 { useState } from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { type PropTypeUtil } from '@elementor/editor-props';\nimport { isExperimentActive } from '@elementor/editor-v1-adapters';\nimport { Backdrop, Infotip } from '@elementor/ui';\n\nimport { restoreVariable } from '../../../hooks/use-prop-variables';\nimport { type Variable } from '../../../types';\nimport { DeletedVariableAlert } from '../deleted-variable-alert';\nimport { DeletedTag } from '../tags/deleted-tag';\n\nconst isV331Active = isExperimentActive( 'e_v_3_31' );\n\ntype Props = {\n\tvariable: Variable;\n\tvariablePropTypeUtil: PropTypeUtil< string, string >;\n\tfallbackPropTypeUtil: PropTypeUtil< string, string | null > | PropTypeUtil< string, string >;\n};\n\nexport const DeletedVariable = ( { variable, variablePropTypeUtil, fallbackPropTypeUtil }: Props ) => {\n\tconst { setValue } = useBoundProp();\n\tconst [ showInfotip, setShowInfotip ] = useState< boolean >( false );\n\n\tconst toggleInfotip = () => setShowInfotip( ( prev ) => ! prev );\n\n\tconst closeInfotip = () => setShowInfotip( false );\n\n\tconst unlinkVariable = () => {\n\t\tsetValue( fallbackPropTypeUtil.create( variable.value ) );\n\t};\n\n\tconst handleRestore = () => {\n\t\tif ( ! variable.key ) {\n\t\t\treturn;\n\t\t}\n\n\t\trestoreVariable( variable.key ).then( ( key ) => {\n\t\t\tsetValue( variablePropTypeUtil.create( key ) );\n\t\t\tcloseInfotip();\n\t\t} );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{ showInfotip && <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={ showInfotip }\n\t\t\t\tdisableHoverListener\n\t\t\t\tonClose={ closeInfotip }\n\t\t\t\tcontent={\n\t\t\t\t\t<DeletedVariableAlert\n\t\t\t\t\t\tonClose={ closeInfotip }\n\t\t\t\t\t\tonUnlink={ unlinkVariable }\n\t\t\t\t\t\tonRestore={ isV331Active ? handleRestore : undefined }\n\t\t\t\t\t\tlabel={ variable.label }\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<DeletedTag label={ variable.label } 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 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' ) } '{ label }'{ ' ' }\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 { type PopoverActionProps, useBoundProp } from '@elementor/editor-editing-panel';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { VariableSelectionPopover } from '../components/variable-selection-popover';\nimport { colorVariablePropTypeUtil } from '../prop-types/color-variable-prop-type';\nimport { supportsColorVariables } from '../utils';\n\nexport const usePropColorVariableAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsColorVariables( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: ColorFilterIcon,\n\t\ttitle: __( 'Variables', 'elementor' ),\n\t\tcontent: ( { close: closePopover } ) => {\n\t\t\treturn (\n\t\t\t\t<VariableSelectionPopover closePopover={ closePopover } propTypeKey={ colorVariablePropTypeUtil.key } />\n\t\t\t);\n\t\t},\n\t};\n};\n","import { type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { colorVariablePropTypeUtil } from './prop-types/color-variable-prop-type';\nimport { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\n\nexport const hasAssignedColorVariable = ( propValue: PropValue ): boolean => {\n\treturn !! colorVariablePropTypeUtil.isValid( propValue );\n};\n\nexport const supportsColorVariables = ( propType: PropType ): boolean => {\n\treturn propType.kind === 'union' && colorVariablePropTypeUtil.key in propType.prop_types;\n};\n\nexport const hasAssignedFontVariable = ( propValue: PropValue ): boolean => {\n\treturn !! fontVariablePropTypeUtil.isValid( propValue );\n};\n\nexport const supportsFontVariables = ( propType: PropType ): boolean => {\n\treturn propType.kind === 'union' && fontVariablePropTypeUtil.key in propType.prop_types;\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 { hasAssignedColorVariable } from './utils';\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","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","import { createTransformer } from '@elementor/editor-canvas';\n\nimport { service } from '../service';\n\nexport const variableTransformer = createTransformer( ( id: string ) => {\n\tconst variables = service.variables();\n\n\tlet name = id;\n\tlet fallbackValue = '';\n\n\tif ( variables[ id ] ) {\n\t\tfallbackValue = variables[ id ].value;\n\t\tif ( ! variables[ id ]?.deleted ) {\n\t\t\tname = variables[ id ].label;\n\t\t}\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 { styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { controlActionsMenu, registerControlReplacement } from '@elementor/editor-editing-panel';\n\nimport { FontVariableControl } from './controls/font-variable-control';\nimport { usePropFontVariableAction } from './hooks/use-prop-font-variable-action';\nimport { fontVariablePropTypeUtil } from './prop-types/font-variable-prop-type';\nimport { variableTransformer } from './transformers/variable-transformer';\nimport { hasAssignedFontVariable } from './utils';\n\nconst { registerPopoverAction } = controlActionsMenu;\n\nexport function initFontVariables() {\n\tregisterControlReplacement( {\n\t\tcomponent: FontVariableControl,\n\t\tcondition: ( { value } ) => hasAssignedFontVariable( value ),\n\t} );\n\n\tregisterPopoverAction( {\n\t\tid: 'font-variables',\n\t\tuseProps: usePropFontVariableAction,\n\t} );\n\n\tstyleTransformersRegistry.register( fontVariablePropTypeUtil.key, variableTransformer );\n}\n","import * as React from 'react';\nimport { useBoundProp } from '@elementor/editor-controls';\nimport { stringPropTypeUtil } from '@elementor/editor-props';\n\nimport { AssignedVariable } from '../components/ui/variable/assigned-variable';\nimport { DeletedVariable } from '../components/ui/variable/deleted-variable';\nimport { useVariable } from '../hooks/use-prop-variables';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\n\nexport const FontVariableControl = () => {\n\tconst { value: variableValue } = useBoundProp( fontVariablePropTypeUtil );\n\tconst assignedVariable = useVariable( variableValue );\n\n\tif ( ! assignedVariable ) {\n\t\tthrow new Error( `Global font variable ${ variableValue } not found` );\n\t}\n\n\tconst isVariableDeleted = assignedVariable?.deleted;\n\n\tif ( isVariableDeleted ) {\n\t\treturn (\n\t\t\t<DeletedVariable\n\t\t\t\tvariable={ assignedVariable }\n\t\t\t\tvariablePropTypeUtil={ fontVariablePropTypeUtil }\n\t\t\t\tfallbackPropTypeUtil={ stringPropTypeUtil }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<AssignedVariable\n\t\t\tvariable={ assignedVariable }\n\t\t\tvariablePropTypeUtil={ fontVariablePropTypeUtil }\n\t\t\tfallbackPropTypeUtil={ stringPropTypeUtil }\n\t\t/>\n\t);\n};\n","import * as React from 'react';\nimport { type PopoverActionProps, useBoundProp } from '@elementor/editor-editing-panel';\nimport { ColorFilterIcon } from '@elementor/icons';\nimport { __ } from '@wordpress/i18n';\n\nimport { VariableSelectionPopover } from '../components/variable-selection-popover';\nimport { fontVariablePropTypeUtil } from '../prop-types/font-variable-prop-type';\nimport { supportsFontVariables } from '../utils';\n\nexport const usePropFontVariableAction = (): PopoverActionProps => {\n\tconst { propType } = useBoundProp();\n\n\tconst visible = !! propType && supportsFontVariables( propType );\n\n\treturn {\n\t\tvisible,\n\t\ticon: ColorFilterIcon,\n\t\ttitle: __( 'Variables', 'elementor' ),\n\t\tcontent: ( { close: closePopover } ) => {\n\t\t\treturn (\n\t\t\t\t<VariableSelectionPopover closePopover={ closePopover } propTypeKey={ fontVariablePropTypeUtil.key } />\n\t\t\t);\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"],"mappings":"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","names":["React","useBoundProp","useId","useRef","React","useBoundProp","ColorFilterIcon","bindPopover","bindTrigger","Box","Popover","usePopupState","React","useRef","useState","Box","createPropUtils","z","React","useState","FormHelperText","__","__","__","__","React","useState","FormHelperText","FormLabel","Grid","__","useState","Grid","FormLabel","__","FormHelperText","useState","__","FormHelperText","React","useState","PopoverContent","useBoundProp","PopoverBody","PopoverHeader","ArrowLeftIcon","BrushIcon","Button","CardActions","Divider","FormHelperText","IconButton","__","React","Button","__","SIZE","useBoundProp","useState","IconButton","__","PopoverBody","PopoverHeader","ArrowLeftIcon","BrushIcon","Divider","PopoverContent","FormHelperText","CardActions","Button","React","useState","useBoundProp","PopoverBody","PopoverHeader","BrushIcon","Divider","IconButton","__","React","IconButton","Typography","__","SIZE","React","Typography","__","React","Button","Stack","Typography","__","styled","SIZE","useBoundProp","useState","IconButton","PopoverBody","PopoverHeader","__","Divider","BrushIcon","React","useState","PopoverContent","useBoundProp","PopoverBody","PopoverHeader","ArrowLeftIcon","Button","CardActions","Divider","FormHelperText","IconButton","__","React","useRef","useState","FormHelperText","FormLabel","Grid","__","useState","useRef","Grid","FormLabel","__","FormHelperText","SIZE","useBoundProp","useState","PopoverBody","PopoverHeader","IconButton","__","ArrowLeftIcon","Divider","PopoverContent","FormHelperText","CardActions","Button","React","useState","PopoverContent","useBoundProp","PopoverBody","PopoverHeader","ArrowLeftIcon","TextIcon","TrashIcon","Button","CardActions","Divider","FormHelperText","IconButton","__","SIZE","useBoundProp","useState","IconButton","__","TrashIcon","PopoverBody","PopoverHeader","ArrowLeftIcon","TextIcon","Divider","PopoverContent","FormHelperText","CardActions","Button","React","useState","useBoundProp","PopoverBody","PopoverHeader","PopoverMenuList","PopoverSearch","ColorFilterIcon","PlusIcon","SettingsIcon","TextIcon","Divider","IconButton","__","SIZE","useBoundProp","useState","IconButton","PlusIcon","SettingsIcon","TextIcon","PopoverBody","PopoverHeader","__","ColorFilterIcon","PopoverSearch","Divider","PopoverMenuList","useState","useRef","Box","React","Box","IconButton","Stack","Typography","__","SIZE","useBoundProp","useRef","useId","usePopupState","Box","ColorFilterIcon","SIZE","bindTrigger","Popover","bindPopover","React","useState","useBoundProp","React","useSectionWidth","__","React","Box","Tooltip","Typography","__","useBoundProp","useState","useBoundProp","React","useBoundProp","ColorFilterIcon","__","useBoundProp","ColorFilterIcon","__","React","styleTransformersRegistry","controlActionsMenu","registerControlReplacement","React","useBoundProp","useBoundProp","React","useBoundProp","ColorFilterIcon","__","useBoundProp","ColorFilterIcon","__","registerPopoverAction","controlActionsMenu","registerControlReplacement","styleTransformersRegistry","React","useState","useState"]}
|
|
1
|
+
{"version":3,"sources":["../src/init.ts","../src/components/variables-manager/variables-manager-panel.tsx","../src/controls/variable-control.tsx","../src/components/ui/variable/assigned-variable.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/variable-selection-popover.tsx","../src/context/variable-selection-popover.context.tsx","../src/context/variable-type-context.tsx","../src/hooks/use-permissions.ts","../src/components/variable-creation.tsx","../src/hooks/use-initial-value.ts","../src/hooks/use-prop-variables.ts","../src/utils/tracking.ts","../src/utils/validations.ts","../src/components/fields/label-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/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":["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 } 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 { FilterIcon, XIcon } from '@elementor/icons';\nimport { Alert, Box, Button, Divider, ErrorBoundary, IconButton, type IconButtonProps, Stack } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\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 = false;\n\n\tusePreventUnload( isDirty );\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 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<FilterIcon 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<CloseButton\n\t\t\t\t\t\t\t\tsx={ { marginLeft: 'auto' } }\n\t\t\t\t\t\t\t\tonClose={ () => {\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</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<Divider />\n\t\t\t\t\t\t<Box\n\t\t\t\t\t\t\tpx={ 2 }\n\t\t\t\t\t\t\tsx={ {\n\t\t\t\t\t\t\t\tflexGrow: 1,\n\t\t\t\t\t\t\t\toverflowY: 'auto',\n\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\tList\n\t\t\t\t\t\t</Box>\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 * 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 { MissingVariable } from '../components/ui/variable/missing-variable';\nimport { useVariable } from '../hooks/use-prop-variables';\n\nexport const VariableControl = () => {\n\tconst boundProp = useBoundProp().value as TransformablePropValue< string, string >;\n\n\tconst assignedVariable = useVariable( boundProp?.value );\n\n\tif ( ! assignedVariable ) {\n\t\treturn <MissingVariable />;\n\t}\n\n\tconst { $$type: propTypeKey } = boundProp;\n\n\tif ( assignedVariable?.deleted ) {\n\t\treturn <DeletedVariable variable={ assignedVariable } propTypeKey={ propTypeKey } />;\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 { 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 { fallbackPropTypeUtil, 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 = () => {\n\t\tconst fallbackValue = fallbackPropTypeUtil.create( variable.value );\n\t\tsetValue( fallbackValue );\n\t};\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 ForwardRefExoticComponent, type JSX, type RefAttributes } from 'react';\nimport { styleTransformersRegistry } from '@elementor/editor-canvas';\nimport { stylesInheritanceTransformersRegistry } from '@elementor/editor-editing-panel';\nimport { type createPropUtils, type PropTypeKey, type PropTypeUtil } from '@elementor/editor-props';\nimport { type SvgIconProps } from '@elementor/ui';\n\nimport { inheritanceTransformer } from '../transformers/inheritance-transformer';\nimport { variableTransformer } from '../transformers/variable-transformer';\n\ntype ValueFieldProps = {\n\tvalue: string;\n\tonChange: ( value: string ) => void;\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 }: ValueFieldProps ) => JSX.Element;\n\tvariableType: string;\n\tfallbackPropTypeUtil: FallbackPropTypeUtil;\n\tpropTypeUtil: PropTypeUtil< string, string >;\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\tfallbackPropTypeUtil,\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\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\tfallbackPropTypeUtil,\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 { 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_settings' )\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.onSettings?.();\n\t\t\tprops.closePopover();\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 { 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 { 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 } 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, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-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\n\tconst initialValue = useInitialValue();\n\n\tconst [ value, setValue ] = useState( initialValue );\n\tconst [ label, setLabel ] = useState( '' );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\n\tconst { labelFieldError, setLabelFieldError } = useLabelError();\n\n\tconst resetFields = () => {\n\t\tsetValue( '' );\n\t\tsetLabel( '' );\n\t\tsetErrorMessage( '' );\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 hasEmptyValue = () => {\n\t\treturn '' === value.trim() || '' === label.trim();\n\t};\n\n\tconst hasErrors = () => {\n\t\treturn !! errorMessage;\n\t};\n\n\tconst isSubmitDisabled = hasEmptyValue() || 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<LabelField\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\terror={ labelFieldError }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tsetLabel( newValue );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t<ValueField\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t} }\n\t\t\t\t/>\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","import { useMemo } from 'react';\nimport { type PropKey } from '@elementor/editor-props';\n\nimport { service } from '../service';\nimport { type Variable } from '../types';\n\nexport const useVariable = ( key: string ) => {\n\tconst variables = service.variables();\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 variables = usePropVariables( propTypeKey );\n\n\tconst filteredVariables = variables.filter( ( { label } ) => {\n\t\treturn label.toLowerCase().includes( searchValue.toLowerCase() );\n\t} );\n\n\treturn {\n\t\tlist: filteredVariables,\n\t\thasMatches: filteredVariables.length > 0,\n\t\tisSourceNotEmpty: variables.length > 0,\n\t};\n};\n\nconst usePropVariables = ( propKey: PropKey ) => {\n\treturn useMemo( () => normalizeVariables( propKey ), [ propKey ] );\n};\n\nconst isNotDeleted = ( { deleted }: { deleted?: boolean } ) => ! deleted;\n\nconst normalizeVariables = ( propKey: string ) => {\n\tconst variables = service.variables();\n\n\treturn Object.entries( variables )\n\t\t.filter( ( [ , variable ] ) => variable.type === propKey && isNotDeleted( variable ) )\n\t\t.map( ( [ key, { label, value } ] ) => ( {\n\t\t\tkey,\n\t\t\tlabel,\n\t\t\tvalue,\n\t\t} ) );\n};\n\nexport const createVariable = ( newVariable: Variable ): Promise< string > => {\n\treturn service.create( newVariable ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const updateVariable = ( updateId: string, { value, label }: { value: string; label: string } ) => {\n\treturn service.update( updateId, { value, label } ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const deleteVariable = ( deleteId: string ) => {\n\treturn service.delete( deleteId ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\n};\n\nexport const restoreVariable = ( restoreId: string, label?: string, value?: string ) => {\n\treturn service.restore( restoreId, label, value ).then( ( { id }: { id: string } ) => {\n\t\treturn id;\n\t} );\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 { __ } 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 { useId, useState } from 'react';\nimport { FormHelperText, FormLabel, Grid, TextField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { labelHint, validateLabel, VARIABLE_LABEL_MAX_LENGTH } from '../../utils/validations';\n\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};\n\nexport const LabelField = ( { value, error, onChange }: LabelFieldProps ) => {\n\tconst [ label, setLabel ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\n\tconst [ noticeMessage, setNoticeMessage ] = useState( () => labelHint( value ) );\n\n\tconst handleChange = ( newValue: string ) => {\n\t\tsetLabel( newValue );\n\n\t\tconst errorMsg = validateLabel( newValue );\n\t\tconst hintMsg = labelHint( newValue );\n\n\t\tsetErrorMessage( errorMsg );\n\t\tsetNoticeMessage( errorMsg ? '' : hintMsg );\n\n\t\tonChange( isLabelEqual( newValue, error?.value ?? '' ) || errorMsg ? '' : newValue );\n\t};\n\n\tconst id = useId();\n\n\tlet errorMsg = errorMessage;\n\tif ( isLabelEqual( label, error?.value ?? '' ) && error?.message ) {\n\t\terrorMsg = error.message;\n\t}\n\n\tconst noticeMsg = errorMsg ? '' : noticeMessage;\n\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{ __( 'Name', 'elementor' ) }\n\t\t\t\t</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<TextField\n\t\t\t\t\tid={ id }\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ label }\n\t\t\t\t\terror={ !! errorMsg }\n\t\t\t\t\tonChange={ ( e: React.ChangeEvent< HTMLInputElement > ) => handleChange( e.target.value ) }\n\t\t\t\t\tinputProps={ { maxLength: VARIABLE_LABEL_MAX_LENGTH } }\n\t\t\t\t/>\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 } 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, 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';\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 [ 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\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 hasEmptyValues = () => {\n\t\treturn ! value.trim() || ! label.trim();\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() || hasEmptyValues() || 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<LabelField\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/>\n\t\t\t\t\t<ValueField\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\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<Typography variant=\"subtitle2\" component=\"span\">\n\t\t\t\t\t\t { label } \n\t\t\t\t\t</Typography>\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“{ searchValue }”.\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 { 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 { fallbackPropTypeUtil, 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 = () => {\n\t\t\tsetValue( fallbackPropTypeUtil.create( variable.value ) );\n\t\t};\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 } 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, mapServerError } from '../utils/validations';\nimport { LabelField, useLabelError } from './fields/label-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\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 [ 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 hasEmptyValues = () => {\n\t\treturn ! value.trim() || ! label.trim();\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() || hasEmptyValues() || 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<LabelField\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/>\n\t\t\t\t\t<ValueField\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ ( newValue ) => {\n\t\t\t\t\t\t\tsetValue( newValue );\n\t\t\t\t\t\t\tsetErrorMessage( '' );\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\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' ) } '{ label }'{ ' ' }\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 { 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 { FormHelperText, FormLabel, Grid, UnstableColorField } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\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};\n\nexport const ColorField = ( { value, onChange }: 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\n\t\tonChange( errorMsg ? '' : newValue );\n\t};\n\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 size=\"tiny\">{ __( 'Value', 'elementor' ) }</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<UnstableColorField\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tfullWidth\n\t\t\t\t\tvalue={ color }\n\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\terror={ errorMessage ?? undefined }\n\t\t\t\t\tslotProps={ {\n\t\t\t\t\t\tcolorPicker: {\n\t\t\t\t\t\t\tanchorEl: anchorRef,\n\t\t\t\t\t\t\tanchorOrigin: { vertical: 'top', horizontal: 'right' },\n\t\t\t\t\t\t\ttransformOrigin: { vertical: 'top', horizontal: -10 },\n\t\t\t\t\t\t},\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</FormHelperText> }\n\t\t\t</Grid>\n\t\t</Grid>\n\t);\n};\n","import * as React from 'react';\nimport { 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 {\n\tbindPopover,\n\tbindTrigger,\n\tFormHelperText,\n\tFormLabel,\n\tGrid,\n\tPopover,\n\tUnstableTag,\n\tusePopupState,\n} 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};\n\nexport const FontField = ( { value, onChange }: FontFieldProps ) => {\n\tconst [ fontFamily, setFontFamily ] = useState( value );\n\tconst [ errorMessage, setErrorMessage ] = useState( '' );\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\tsetErrorMessage( 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\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 size=\"tiny\">{ __( 'Value', 'elementor' ) }</FormLabel>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 }>\n\t\t\t\t<UnstableTag\n\t\t\t\t\tvariant=\"outlined\"\n\t\t\t\t\tlabel={ fontFamily }\n\t\t\t\t\tendIcon={ <ChevronDownIcon fontSize=\"tiny\" /> }\n\t\t\t\t\t{ ...bindTrigger( fontPopoverState ) }\n\t\t\t\t\tfullWidth\n\t\t\t\t/>\n\t\t\t\t<Popover\n\t\t\t\t\tdisablePortal\n\t\t\t\t\tdisableScrollLock\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: -28 } }\n\t\t\t\t\t{ ...bindPopover( fontPopoverState ) }\n\t\t\t\t>\n\t\t\t\t\t<ItemSelector\n\t\t\t\t\t\titemsList={ mapFontSubs }\n\t\t\t\t\t\tselectedItem={ fontFamily }\n\t\t\t\t\t\tonItemChange={ handleFontFamilyChange }\n\t\t\t\t\t\tonClose={ fontPopoverState.close }\n\t\t\t\t\t\tsectionWidth={ sectionWidth }\n\t\t\t\t\t\ttitle={ __( 'Font Family', 'elementor' ) }\n\t\t\t\t\t\titemStyle={ ( item ) => ( { fontFamily: item.value } ) }\n\t\t\t\t\t\tonDebounce={ enqueueFont }\n\t\t\t\t\t\ticon={ TextIcon as React.ElementType< { fontSize: string } > }\n\t\t\t\t\t/>\n\t\t\t\t</Popover>\n\t\t\t\t{ errorMessage && <FormHelperText error>{ errorMessage }</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 { __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":["React","useBoundProp","useId","React","useBoundProp","ColorFilterIcon","Box","React","Stack","__","__","id","id","createPropUtils","z","__","id","id","id","__","Stack","createTransformer","createTransformer","id","registerVariableType","getVariableType","hasVariableType","React","useState","React","Box","React","createContext","useContext","createContext","useContext","React","useState","useBoundProp","Button","Divider","FormHelperText","IconButton","__","id","hasAssignedVariable","__","React","useState","__","useState","errorMsg","id","__","useBoundProp","useState","IconButton","__","Divider","FormHelperText","Button","React","useEffect","useState","PopoverContent","useBoundProp","PopoverBody","PopoverHeader","ArrowLeftIcon","Button","CardActions","Divider","FormHelperText","IconButton","__","React","Button","Typography","__","React","useState","Button","Dialog","DialogActions","DialogContent","DialogContentText","DialogTitle","Typography","__","SIZE","useBoundProp","useState","useEffect","IconButton","__","PopoverBody","PopoverHeader","ArrowLeftIcon","Divider","PopoverContent","FormHelperText","CardActions","Button","React","useState","useBoundProp","PopoverBody","PopoverHeader","Divider","IconButton","__","React","Box","IconButton","Typography","__","SIZE","React","Stack","Typography","__","React","Button","Stack","Typography","__","Stack","__","Button","Typography","styled","SIZE","useBoundProp","useState","IconButton","__","PopoverBody","PopoverHeader","Divider","useState","React","Box","IconButton","Stack","Typography","__","SIZE","useBoundProp","useId","Box","ColorFilterIcon","SIZE","React","useId","useRef","useState","useBoundProp","bindPopover","Box","Popover","usePopupState","React","useState","PopoverContent","useBoundProp","PopoverBody","PopoverHeader","Button","CardActions","Divider","FormHelperText","__","SIZE","useBoundProp","useState","PopoverBody","PopoverHeader","__","Divider","PopoverContent","FormHelperText","CardActions","Button","React","Alert","__","React","AlertTriangleFilledIcon","Box","Tooltip","Typography","__","useBoundProp","useState","useRef","useId","usePopupState","Box","Popover","bindPopover","React","useState","useBoundProp","Backdrop","Infotip","__","React","useSectionWidth","Alert","AlertAction","AlertTitle","ClickAwayListener","__","React","AlertTriangleFilledIcon","Chip","useBoundProp","useState","Backdrop","Infotip","__","useBoundProp","React","useBoundProp","ColorFilterIcon","__","useBoundProp","ColorFilterIcon","__","React","TextIcon","React","useRef","useState","FormHelperText","FormLabel","Grid","__","useState","useRef","Grid","FormLabel","__","FormHelperText","React","useRef","useState","enqueueFont","useSectionWidth","bindPopover","bindTrigger","FormHelperText","FormLabel","Grid","Popover","usePopupState","__","useState","useRef","usePopupState","useSectionWidth","Grid","FormLabel","__","bindTrigger","Popover","bindPopover","enqueueFont","FormHelperText","TextIcon","React","useEffect","useState","useState","useEffect","React"]}
|