@elementor/editor-canvas 0.13.0 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/transformers/create-transformers-registry.ts","../src/settings-transformers-registry.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/array-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/style-transformers-registry.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-position-offset-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/renderers/multi-props.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/init-styles-renderer.ts","../src/renderers/create-props-resolver.ts","../src/renderers/errors.ts","../src/renderers/render-styles.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/legacy/init-legacy-views.ts","../src/legacy/create-element-type.ts","../src/style-commands/paste-style.ts","../src/style-commands/undoable-actions/paste-element-style.ts","../src/style-commands/utils.ts","../src/style-commands/reset-style.ts","../src/style-commands/undoable-actions/reset-element-style.ts","../src/style-commands/init-style-commands.ts"],"sourcesContent":["import { init } from './init';\n\nexport { styleTransformersRegistry } from './style-transformers-registry';\nexport { settingsTransformersRegistry } from './settings-transformers-registry';\n\ninit();\n","import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initSettingsTransformers } from './init-settings-transformers';\nimport { initStyleTransformers } from './init-style-transformers';\nimport { initStylesRenderer } from './init-styles-renderer';\nimport { initLegacyViews } from './legacy/init-legacy-views';\nimport { initStyleCommands } from './style-commands/init-style-commands';\n\nexport function init() {\n\tinitStyleTransformers();\n\tinitStylesRenderer();\n\tinitStyleCommands();\n\n\tinitLegacyViews();\n\n\tinitSettingsTransformers();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n}\n","import * as React from 'react';\nimport { useElementsDomRef, useSelectedElement } from '@elementor/editor-elements';\nimport { __privateUseIsRouteActive as useIsRouteActive, useEditMode } from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\tconst currentEditMode = useEditMode();\n\n\tconst isEditMode = currentEditMode === 'edit';\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = isEditMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\tdomElements.map( ( el ) => (\n\t\t\t<ElementOverlay\n\t\t\t\telement={ el }\n\t\t\t\tkey={ el.dataset.id }\n\t\t\t\tisSelected={ selected.element?.id === el.dataset.id }\n\t\t\t/>\n\t\t) )\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nconst OverlayBox = styled( Box, { shouldForwardProp: ( prop ) => prop !== 'isSelected' } )<\n\tPick< Props, 'isSelected' >\n>( ( { theme, isSelected } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ element.dataset.id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\t// Add an animation frame to support scroll events (without it the floating element will stay in the same position).\n\t\twhileElementsMounted: ( ...args ) => autoUpdate( ...args, { animationFrame: true } ),\n\n\t\t// The first element in the canvas is `display: contents` so we need to use the first child.\n\t\telements: { reference: element.firstElementChild },\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import { type AnyTransformer, type TransformerName, type TransformersMap } from './types';\n\nexport function createTransformersRegistry() {\n\tconst transformers: TransformersMap = {};\n\n\treturn {\n\t\tregister( name: TransformerName, transformer: AnyTransformer ) {\n\t\t\ttransformers[ name ] = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tall() {\n\t\t\treturn transformers;\n\t\t},\n\t};\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\nexport const arrayTransformer = createTransformer( ( value: unknown[] ) => {\n\treturn value.filter( Boolean );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { arrayTransformer } from './transformers/settings/array-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'string', plainTransformer )\n\t\t.register( 'url', plainTransformer )\n\t\t.register( 'number', plainTransformer )\n\t\t.register( 'boolean', plainTransformer )\n\t\t.register( 'classes', arrayTransformer )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image-attachment-id', plainTransformer );\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const styleTransformersRegistry = createTransformersRegistry();\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\nconst DEFAULT_POSITION_VALUE = '0% 0%';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles = [\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize ? `${ position || DEFAULT_POSITION_VALUE } / ${ size }` : position,\n\t].filter( Boolean );\n\n\treturn backgroundStyles.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImagePositionOffset = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const backgroundImagePositionOffsetTransformer = createTransformer(\n\t( { x = '0px', y = '0px' }: BackgroundImagePositionOffset ) => `${ x } ${ y }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width = 'auto', height = 'auto' }: BackgroundImageSizeScale ) => `${ width } ${ height }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype Background = {\n\t'background-overlay'?: string;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\ntype MultiProps = {\n\t'$$multi-props': true;\n\tvalue: Props;\n};\n\nexport const isMultiProps = ( propValue: PropValue ): propValue is MultiProps => {\n\treturn (\n\t\t!! propValue &&\n\t\ttypeof propValue === 'object' &&\n\t\t'$$multi-props' in propValue &&\n\t\tpropValue[ '$$multi-props' ] === true\n\t);\n};\n\nexport const createMultiPropsValue = ( props: Props ): MultiProps => {\n\treturn {\n\t\t'$$multi-props': true,\n\t\tvalue: props,\n\t};\n};\n\nexport const getMultiPropsValue = ( multiProps: MultiProps ): Props => {\n\treturn multiProps.value;\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImagePositionOffsetTransformer } from './transformers/styles/background-image-position-offset-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'color', plainTransformer )\n\t\t.register( 'number', plainTransformer )\n\t\t.register( 'string', plainTransformer )\n\t\t.register( 'url', plainTransformer )\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', backgroundImagePositionOffsetTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-attachment-id', plainTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t);\n}\n","import { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { getStylesSchema } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __privateListenTo as listenTo, registerDataHook, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createPropsResolver } from './renderers/create-props-resolver';\nimport renderStyles from './renderers/render-styles';\nimport { styleTransformersRegistry } from './style-transformers-registry';\nimport { enqueueFont } from './sync/enqueue-font';\nimport { getCanvasIframeBody } from './sync/get-canvas-iframe-body';\n\nconst WRAPPER_DATA_ATTR = 'data-styles-container';\nconst SELECTOR_PREFIX = '.elementor';\n\nexport function initStylesRenderer() {\n\tlistenTo( v1ReadyEvent(), () => {\n\t\tlet abortController: AbortController | null = null;\n\n\t\tconst resolve = createPropsResolver( {\n\t\t\ttransformers: styleTransformersRegistry.all(),\n\t\t\tschema: getStylesSchema(),\n\t\t\tonPropResolve: enqueueUsedFonts,\n\t\t} );\n\n\t\tconst injectStyleElements = async () => {\n\t\t\tconst styleContainer = getStylesContainer();\n\n\t\t\t// Styles should be printed in a reversed order, so the high priority styles will be printed last.\n\t\t\tconst styles = stylesRepository.all().reverse();\n\t\t\tconst breakpoints = getBreakpointsMap();\n\n\t\t\tif ( abortController ) {\n\t\t\t\tabortController.abort();\n\t\t\t}\n\n\t\t\tabortController = new AbortController();\n\n\t\t\tstyleContainer.innerHTML = await renderStyles( {\n\t\t\t\tstyles,\n\t\t\t\tresolve,\n\t\t\t\tbreakpoints,\n\t\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t} );\n\t\t};\n\n\t\tstylesRepository.subscribe( injectStyleElements );\n\n\t\t// Add initial styles rendering as a hook to ensure the whole editor\n\t\t// waits for styles to render before hiding the loaders.\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', injectStyleElements );\n\t} );\n}\n\nfunction getStylesContainer() {\n\tconst preview = getCanvasIframeBody();\n\tconst stylesContainer = preview?.querySelector( `[${ WRAPPER_DATA_ATTR }]` );\n\n\tif ( stylesContainer ) {\n\t\treturn stylesContainer;\n\t}\n\n\tconst el = createStylesContainer();\n\n\tpreview?.prepend( el );\n\n\treturn el;\n}\n\nfunction createStylesContainer() {\n\tconst el = document.createElement( 'div' );\n\tel.style.display = 'none';\n\tel.setAttribute( WRAPPER_DATA_ATTR, '' );\n\n\treturn el;\n}\n\nfunction enqueueUsedFonts( { key, value }: { key: string; value: unknown } ) {\n\tif ( key !== 'font-family' || typeof value !== 'string' ) {\n\t\treturn;\n\t}\n\n\tenqueueFont( value );\n}\n","import {\n\tisTransformable,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { type TransformersMap } from '../transformers/types';\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\n\ntype CreatePropResolverArgs = {\n\ttransformers: TransformersMap;\n\tschema: PropsSchema;\n\tonPropResolve?: ( args: { key: string; value: unknown } ) => void;\n};\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema?: PropsSchema;\n\tsignal?: AbortSignal;\n};\n\ntype TransformArgs = {\n\tvalue: unknown;\n\tkey: PropKey;\n\ttype: PropType;\n\tsignal?: AbortSignal;\n\tdepth?: number;\n};\n\nexport type PropsResolver = ReturnType< typeof createPropsResolver >;\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\nexport function createPropsResolver( { transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs ) {\n\tasync function resolve( { props, schema, signal }: ResolveArgs ) {\n\t\tschema = schema ?? initialSchema;\n\n\t\tconst promises = Promise.all(\n\t\t\tObject.entries( schema ).map( async ( [ key, type ] ) => {\n\t\t\t\tconst value = props[ key ] ?? type.default;\n\n\t\t\t\tconst transformed = await transform( { value, key, type, signal } );\n\n\t\t\t\tif ( transformed === null ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tonPropResolve?.( { key, value: transformed } );\n\n\t\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t\t}\n\n\t\t\t\treturn { [ key ]: transformed };\n\t\t\t} )\n\t\t);\n\n\t\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n\t}\n\n\tasync function transform( { value, key, type, signal, depth = 0 }: TransformArgs ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ! isTransformable( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( value.disabled === true ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( type.kind === 'union' ) {\n\t\t\ttype = type.prop_types[ value.$$type ];\n\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\t// Warning: This variable is loosely-typed - use with caution.\n\t\tlet resolvedValue = value.value;\n\n\t\tif ( type.kind === 'object' ) {\n\t\t\tresolvedValue = await resolve( {\n\t\t\t\tprops: resolvedValue,\n\t\t\t\tschema: type.shape,\n\t\t\t\tsignal,\n\t\t\t} );\n\t\t}\n\n\t\tif ( type.kind === 'array' ) {\n\t\t\tresolvedValue = await Promise.all(\n\t\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\t\ttransform( { value: item, key, type: type.item_prop_type, depth, signal } )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tconst transformer = transformers[ value.$$type ];\n\n\t\tif ( ! transformer ) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst transformed = await transformer( resolvedValue, { key, signal } );\n\n\t\t\treturn transform( { value: transformed, key, type, signal, depth: depth + 1 } );\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn resolve;\n}\n","import { createError } from '@elementor/utils';\n\nexport const UnknownStyleTypeError = createError< { type: string } >( {\n\tcode: 'unknown_style_type',\n\tmessage: 'Unknown style type',\n} );\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleDefinitionState, type StyleDefinitionType } from '@elementor/editor-styles';\n\nimport { type PropsResolver } from './create-props-resolver';\nimport { UnknownStyleTypeError } from './errors';\n\ntype RenderParams = {\n\tresolve: PropsResolver;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\ntype PropsToCssArgs = {\n\tprops: Props;\n\tresolve: PropsResolver;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function renderStyles( {\n\tresolve,\n\tstyles,\n\tbreakpoints,\n\tselectorPrefix = '',\n\tsignal,\n}: RenderParams ) {\n\tconst stylesCssPromises = styles.map( async ( style ) => {\n\t\tconst variantCssPromises = Object.values( style.variants ).map( async ( variant ) => {\n\t\t\tconst css = await propsToCss( { props: variant.props, resolve, signal } );\n\n\t\t\treturn createStyleWrapper()\n\t\t\t\t.forStyle( style )\n\t\t\t\t.withPrefix( selectorPrefix )\n\t\t\t\t.withState( variant.meta.state )\n\t\t\t\t.withMediaQuery( variant.meta.breakpoint ? breakpoints[ variant.meta.breakpoint ] : null )\n\t\t\t\t.wrap( css );\n\t\t} );\n\n\t\tconst variantsCss = await Promise.all( variantCssPromises );\n\n\t\treturn wrapCssWithStyleElement( style.id, variantsCss.join( '' ) );\n\t} );\n\n\tconst stylesCss = await Promise.all( stylesCssPromises );\n\n\treturn stylesCss.join( '' );\n}\n\nfunction createStyleWrapper( value: string = '', wrapper?: ( css: string ) => string ) {\n\treturn {\n\t\tforStyle: ( { id, type }: StyleDefinition ) => {\n\t\t\tconst symbol = SELECTORS_MAP[ type ];\n\n\t\t\tif ( ! symbol ) {\n\t\t\t\tthrow new UnknownStyleTypeError( { context: { type } } );\n\t\t\t}\n\n\t\t\treturn createStyleWrapper( `${ value }${ symbol }${ id }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n\nfunction wrapCssWithStyleElement( id: string, css: string ) {\n\treturn `<style data-style-id=\"${ id }\">${ css }</style>`;\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 type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeBody() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.body;\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\nimport { __privateListenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createElementType } from './create-element-type';\nimport type { LegacyWindow } from './types';\n\nexport function initLegacyViews() {\n\t__privateListenTo( v1ReadyEvent(), () => {\n\t\tconst config = getWidgetsCache() ?? {};\n\t\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\t\tObject.entries( config ).forEach( ( [ type, element ] ) => {\n\t\t\tif ( ! element.atomic ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ElementType = createElementType( type );\n\n\t\t\tlegacyWindow.elementor.elementsManager.registerElementType( new ElementType() );\n\t\t} );\n\t} );\n}\n","import { type ElementType, type ElementView, type LegacyWindow } from './types';\n\n// Technically it shouldn't have a return type annotation, but for some\n// reason TypeScript can't infer the types properly when emitting DTS.\n//\n// See: https://github.com/microsoft/TypeScript/issues/9944#issuecomment-244448079\nexport function createElementType( type: string ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createElementView();\n\t\t}\n\t};\n}\n\nfunction createElementView(): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.views.Widget {\n\t\t// Dispatch `render` event so the overlay layer will be updated\n\t\tonRender( ...args: unknown[] ) {\n\t\t\tsuper.onRender( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/render' );\n\t\t}\n\n\t\t// Dispatch `destroy` event so the overlay layer will be updated\n\t\tonDestroy( ...args: unknown[] ) {\n\t\t\tsuper.onDestroy( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/destroy' );\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\n\t\t\t\t// Mark the widget as atomic, so external APIs (such as the overlay layer) can reference it.\n\t\t\t\t'data-atomic': '',\n\n\t\t\t\t// Make the wrapper is non-existent in terms of CSS to mimic the frontend DOM tree.\n\t\t\t\tstyle: 'display: contents !important;',\n\t\t\t};\n\t\t}\n\n\t\t// Removes behaviors that are not needed for atomic widgets (that are implemented in the overlay layer).\n\t\tbehaviors() {\n\t\t\tconst disabledBehaviors = [ 'InlineEditing', 'Draggable', 'Resizable' ];\n\n\t\t\tconst behaviorsAsEntries = Object.entries( super.behaviors() ).filter(\n\t\t\t\t( [ key ] ) => ! disabledBehaviors.includes( key )\n\t\t\t);\n\n\t\t\treturn Object.fromEntries( behaviorsAsEntries );\n\t\t}\n\n\t\t// Change the drag handle because the $el is not the draggable element (`display: contents`).\n\t\tgetDomElement() {\n\t\t\treturn this.$el.find( ':first-child' );\n\t\t}\n\n\t\t// Remove the overlay, so we can use the new overlay layer.\n\t\tgetHandlesOverlay() {\n\t\t\treturn null;\n\t\t}\n\n\t\t#dispatchEvent( eventType: string ) {\n\t\t\twindow.top?.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: { id: this.model.get( 'id' ) },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\treturn super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t}\n\t};\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoablePasteElementStyle } from './undoable-actions/paste-element-style';\nimport { type ContainerArgs, getClipboardElements, hasAtomicWidgets, isAtomicWidget } from './utils';\n\ntype PasteStylesCommandArgs = ContainerArgs & {\n\tstorageKey?: string;\n};\n\nexport function initPasteStyleCommand() {\n\tconst pasteElementStyleCommand = undoablePasteElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/paste-style' ), ( e ) =>\n\t\tpasteStyles( ( e as CommandEvent ).args, pasteElementStyleCommand )\n\t);\n}\n\nfunction pasteStyles( args: PasteStylesCommandArgs, pasteCallback: ReturnType< typeof undoablePasteElementStyle > ) {\n\tconst { containers = [ args.container ], storageKey } = args;\n\n\tconst clipboardElements = getClipboardElements( storageKey );\n\tconst [ clipboardElement ] = clipboardElements ?? [];\n\n\tif ( ! clipboardElement ) {\n\t\treturn;\n\t}\n\n\tconst elementStyles = clipboardElement.styles;\n\tconst elementStyle = Object.values( elementStyles ?? {} )[ 0 ]; // we currently support only one local style\n\n\tif ( ! elementStyle ) {\n\t\treturn;\n\t}\n\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tpasteCallback( { containers: atomicContainers, newStyle: elementStyle } );\n}\n","import {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\tgetElementStyles,\n\tupdateElementStyle,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype PasteElementStyleArgs = {\n\tcontainers: V1Element[];\n\tnewStyle: StyleDefinition;\n};\n\nexport const undoablePasteElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers, newStyle }: PasteElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.id;\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalStyles = getElementStyles( container.id );\n\n\t\t\t\t\tconst [ styleId, styleDef ] = Object.entries( originalStyles ?? {} )[ 0 ] ?? []; // we currently support only one local style\n\t\t\t\t\tconst originalStyle = Object.keys( styleDef ?? {} ).length ? styleDef : null;\n\n\t\t\t\t\tconst revertData = {\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\toriginalStyle,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( styleId ) {\n\t\t\t\t\t\tnewStyle.variants.forEach( ( { meta, props } ) => {\n\t\t\t\t\t\t\tupdateElementStyle( {\n\t\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ firstVariant ] = newStyle.variants;\n\t\t\t\t\t\tconst additionalVariants = newStyle.variants.slice( 1 );\n\n\t\t\t\t\t\trevertData.styleId = createElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn revertData;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst revertData = revertDataItems[ index ];\n\n\t\t\t\t\tif ( ! revertData ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! revertData.originalStyle ) {\n\t\t\t\t\t\t// the container didn't have a style before pasting the new style\n\t\t\t\t\t\tdeleteElementStyle( container.id, revertData.styleId );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ firstVariant ] = revertData.originalStyle.variants;\n\t\t\t\t\tconst additionalVariants = revertData.originalStyle.variants.slice( 1 );\n\n\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\telementId: container.id,\n\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\tstyleId: revertData.styleId,\n\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Pasted', 'elementor' ),\n\t\t}\n\t);\n","import { getElementLabel, getWidgetsCache, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type PropsSchema } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type ContainerArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function hasAtomicWidgets( args: ContainerArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\treturn containers.some( isAtomicWidget );\n}\n\nexport function isAtomicWidget( container: V1Element | undefined ): boolean {\n\tif ( ! container ) {\n\t\treturn false;\n\t}\n\n\treturn Boolean( getContainerSchema( container ) );\n}\n\nexport function getClassesProp( container: V1Element ): string | null {\n\tconst propsSchema = getContainerSchema( container );\n\n\tif ( ! propsSchema ) {\n\t\treturn null;\n\t}\n\n\tconst [ propKey ] =\n\t\tObject.entries( propsSchema ).find(\n\t\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t\t) ?? [];\n\n\treturn propKey ?? null;\n}\n\nfunction getContainerSchema( container: V1Element ): PropsSchema | null {\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\treturn elementType?.atomic_props_schema ?? null;\n}\n\ntype ClipboardElements = V1ElementModelProps[];\n\nexport function getClipboardElements( storageKey: string = 'clipboard' ): ClipboardElements | undefined {\n\ttry {\n\t\tconst storedData = JSON.parse( localStorage.getItem( 'elementor' ) ?? '{}' );\n\n\t\treturn storedData[ storageKey ]?.elements as ClipboardElements;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getTitleForContainers( containers: V1Element[] ): string {\n\treturn containers.length > 1 ? __( 'Elements', 'elementor' ) : getElementLabel( containers[ 0 ].id );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoableResetElementStyle } from './undoable-actions/reset-element-style';\nimport { type ContainerArgs, hasAtomicWidgets, isAtomicWidget } from './utils';\n\nexport function initResetStyleCommand() {\n\tconst resetElementStyles = undoableResetElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/reset-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/reset-style' ), ( e ) =>\n\t\tresetStyles( ( e as CommandEvent ).args, resetElementStyles )\n\t);\n}\n\nfunction resetStyles( args: ContainerArgs, resetElementStyles: ReturnType< typeof undoableResetElementStyle > ) {\n\tconst { containers = [ args.container ] } = args;\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tresetElementStyles( { containers: atomicContainers } );\n}\n","import { createElementStyle, deleteElementStyle, getElementStyles, type V1Element } from '@elementor/editor-elements';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype ResetElementStyleArgs = {\n\tcontainers: V1Element[];\n};\n\nexport const undoableResetElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers }: ResetElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\n\t\t\t\t\tconst containerStyles = getElementStyles( elementId );\n\n\t\t\t\t\tObject.keys( containerStyles ?? {} ).forEach( ( styleId ) =>\n\t\t\t\t\t\tdeleteElementStyle( elementId, styleId )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn containerStyles;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\t\t\t\t\tconst containerStyles = revertDataItems[ index ];\n\n\t\t\t\t\tObject.entries( containerStyles ?? {} ).forEach( ( [ styleId, style ] ) => {\n\t\t\t\t\t\tconst [ firstVariant ] = style.variants;\n\t\t\t\t\t\tconst additionalVariants = style.variants.slice( 1 );\n\n\t\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Reset', 'elementor' ),\n\t\t}\n\t);\n","import { initPasteStyleCommand } from './paste-style';\nimport { initResetStyleCommand } from './reset-style';\n\nexport function initStyleCommands() {\n\tinitPasteStyleCommand();\n\tinitResetStyleCommand();\n}\n"],"mappings":"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","names":["React","import_react","import_react","useIsRouteActive","size","size","import_editor_v1_adapters","size","listenTo","import_editor_elements","import_editor_v1_adapters","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","import_editor_elements","import_editor_props","listenTo","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","listenTo"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/transformers/create-transformers-registry.ts","../src/settings-transformers-registry.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/array-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/style-transformers-registry.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-position-offset-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/renderers/multi-props.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/init-styles-renderer.ts","../src/renderers/create-props-resolver.ts","../src/renderers/errors.ts","../src/renderers/render-styles.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/legacy/init-legacy-views.ts","../src/legacy/create-element-type.ts","../src/style-commands/paste-style.ts","../src/style-commands/undoable-actions/paste-element-style.ts","../src/style-commands/utils.ts","../src/style-commands/reset-style.ts","../src/style-commands/undoable-actions/reset-element-style.ts","../src/style-commands/init-style-commands.ts"],"sourcesContent":["import { init } from './init';\n\nexport { styleTransformersRegistry } from './style-transformers-registry';\nexport { settingsTransformersRegistry } from './settings-transformers-registry';\n\ninit();\n","import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initSettingsTransformers } from './init-settings-transformers';\nimport { initStyleTransformers } from './init-style-transformers';\nimport { initStylesRenderer } from './init-styles-renderer';\nimport { initLegacyViews } from './legacy/init-legacy-views';\nimport { initStyleCommands } from './style-commands/init-style-commands';\n\nexport function init() {\n\tinitStyleTransformers();\n\tinitStylesRenderer();\n\tinitStyleCommands();\n\n\tinitLegacyViews();\n\n\tinitSettingsTransformers();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n}\n","import * as React from 'react';\nimport { getElements, useSelectedElement } from '@elementor/editor-elements';\nimport {\n\t__privateUseIsRouteActive as useIsRouteActive,\n\t__privateUseListenTo as useListenTo,\n\tuseEditMode,\n\twindowEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst elements = useElementsDom();\n\tconst currentEditMode = useEditMode();\n\n\tconst isEditMode = currentEditMode === 'edit';\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = isEditMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\telements.map( ( [ id, element ] ) => (\n\t\t\t<ElementOverlay key={ id } id={ id } element={ element } isSelected={ selected.element?.id === id } />\n\t\t) )\n\t);\n}\n\nconst ELEMENTS_DATA_ATTR = 'atomic';\n\ntype IdElementTuple = [ string, HTMLElement ];\n\nfunction useElementsDom() {\n\treturn useListenTo(\n\t\t[ windowEvent( 'elementor/editor/element-rendered' ), windowEvent( 'elementor/editor/element-destroyed' ) ],\n\t\t() => {\n\t\t\treturn getElements()\n\t\t\t\t.filter( ( el ) => ELEMENTS_DATA_ATTR in ( el.view?.el?.dataset ?? {} ) )\n\t\t\t\t.map( ( element ) => [ element.id, element.view?.getDomElement?.()?.get?.( 0 ) ] )\n\t\t\t\t.filter( ( item ): item is IdElementTuple => !! item[ 1 ] );\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n\tid: string;\n};\n\nconst OverlayBox = styled( Box, { shouldForwardProp: ( prop ) => prop !== 'isSelected' } )<\n\tPick< Props, 'isSelected' >\n>( ( { theme, isSelected } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected, id }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useEffect, useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\twhileElementsMounted: autoUpdate,\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\tuseEffect( () => {\n\t\t// Update the reference manually because Floating UI does not recalculate\n\t\t// the reference element when it is being used in `option.elements.reference`.\n\t\t// @link https://github.com/floating-ui/floating-ui/blob/master/packages/react/src/hooks/useFloatingRootContext.ts\n\t\trefs.setReference( element );\n\t}, [ element, refs ] );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import { type PropTypeKey } from '@elementor/editor-props';\n\nimport { type AnyTransformer, type TransformersMap } from './types';\n\nexport type TransformersRegistry = ReturnType< typeof createTransformersRegistry >;\n\nexport function createTransformersRegistry() {\n\tconst transformers: TransformersMap = {};\n\n\tlet fallbackTransformer: AnyTransformer | null = null;\n\n\treturn {\n\t\tregister( type: PropTypeKey, transformer: AnyTransformer ) {\n\t\t\ttransformers[ type ] = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tregisterFallback( transformer: AnyTransformer ) {\n\t\t\tfallbackTransformer = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tget( type: PropTypeKey ): AnyTransformer | null {\n\t\t\treturn transformers[ type ] ?? fallbackTransformer;\n\t\t},\n\t};\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\nexport const arrayTransformer = createTransformer( ( value: unknown[] ) => {\n\treturn value.filter( Boolean );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { arrayTransformer } from './transformers/settings/array-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'classes', arrayTransformer )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.registerFallback( plainTransformer );\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const styleTransformersRegistry = createTransformersRegistry();\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\nconst DEFAULT_POSITION_VALUE = '0% 0%';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles = [\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize ? `${ position || DEFAULT_POSITION_VALUE } / ${ size }` : position,\n\t].filter( Boolean );\n\n\treturn backgroundStyles.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImagePositionOffset = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const backgroundImagePositionOffsetTransformer = createTransformer(\n\t( { x, y }: BackgroundImagePositionOffset ) => `${ x ?? '0px' } ${ y ?? '0px' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width, height }: BackgroundImageSizeScale ) => `${ width ?? 'auto' } ${ height ?? 'auto' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype Background = {\n\t'background-overlay'?: string;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\ntype MultiProps = {\n\t'$$multi-props': true;\n\tvalue: Props;\n};\n\nexport const isMultiProps = ( propValue: PropValue ): propValue is MultiProps => {\n\treturn (\n\t\t!! propValue &&\n\t\ttypeof propValue === 'object' &&\n\t\t'$$multi-props' in propValue &&\n\t\tpropValue[ '$$multi-props' ] === true\n\t);\n};\n\nexport const createMultiPropsValue = ( props: Props ): MultiProps => {\n\treturn {\n\t\t'$$multi-props': true,\n\t\tvalue: props,\n\t};\n};\n\nexport const getMultiPropsValue = ( multiProps: MultiProps ): Props => {\n\treturn multiProps.value;\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImagePositionOffsetTransformer } from './transformers/styles/background-image-position-offset-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', backgroundImagePositionOffsetTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t)\n\t\t.registerFallback( plainTransformer );\n}\n","import { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { getStylesSchema } from '@elementor/editor-styles';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __privateListenTo as listenTo, registerDataHook, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createPropsResolver } from './renderers/create-props-resolver';\nimport renderStyles from './renderers/render-styles';\nimport { styleTransformersRegistry } from './style-transformers-registry';\nimport { enqueueFont } from './sync/enqueue-font';\nimport { getCanvasIframeBody } from './sync/get-canvas-iframe-body';\n\nconst WRAPPER_DATA_ATTR = 'data-styles-container';\nconst SELECTOR_PREFIX = '.elementor';\n\nexport function initStylesRenderer() {\n\tlistenTo( v1ReadyEvent(), () => {\n\t\tlet abortController: AbortController | null = null;\n\n\t\tconst resolve = createPropsResolver( {\n\t\t\ttransformers: styleTransformersRegistry,\n\t\t\tschema: getStylesSchema(),\n\t\t\tonPropResolve: enqueueUsedFonts,\n\t\t} );\n\n\t\tconst injectStyleElements = async () => {\n\t\t\tconst styleContainer = getStylesContainer();\n\n\t\t\t// Styles should be printed in a reversed order, so the high priority styles will be printed last.\n\t\t\tconst styles = stylesRepository.all().reverse();\n\t\t\tconst breakpoints = getBreakpointsMap();\n\n\t\t\tif ( abortController ) {\n\t\t\t\tabortController.abort();\n\t\t\t}\n\n\t\t\tabortController = new AbortController();\n\n\t\t\tstyleContainer.innerHTML = await renderStyles( {\n\t\t\t\tstyles,\n\t\t\t\tresolve,\n\t\t\t\tbreakpoints,\n\t\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t} );\n\t\t};\n\n\t\tstylesRepository.subscribe( injectStyleElements );\n\n\t\t// Add initial styles rendering as a hook to ensure the whole editor\n\t\t// waits for styles to render before hiding the loaders.\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', injectStyleElements );\n\t} );\n}\n\nfunction getStylesContainer() {\n\tconst preview = getCanvasIframeBody();\n\tconst stylesContainer = preview?.querySelector( `[${ WRAPPER_DATA_ATTR }]` );\n\n\tif ( stylesContainer ) {\n\t\treturn stylesContainer;\n\t}\n\n\tconst el = createStylesContainer();\n\n\tpreview?.prepend( el );\n\n\treturn el;\n}\n\nfunction createStylesContainer() {\n\tconst el = document.createElement( 'div' );\n\tel.style.display = 'none';\n\tel.setAttribute( WRAPPER_DATA_ATTR, '' );\n\n\treturn el;\n}\n\nfunction enqueueUsedFonts( { key, value }: { key: string; value: unknown } ) {\n\tif ( key !== 'font-family' || typeof value !== 'string' ) {\n\t\treturn;\n\t}\n\n\tenqueueFont( value );\n}\n","import {\n\tisTransformable,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { type TransformersRegistry } from '../transformers/create-transformers-registry';\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\n\ntype CreatePropResolverArgs = {\n\ttransformers: TransformersRegistry;\n\tschema: PropsSchema;\n\tonPropResolve?: ( args: { key: string; value: unknown } ) => void;\n};\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema?: PropsSchema;\n\tsignal?: AbortSignal;\n};\n\ntype TransformArgs = {\n\tvalue: unknown;\n\tkey: PropKey;\n\ttype: PropType;\n\tsignal?: AbortSignal;\n\tdepth?: number;\n};\n\nexport type PropsResolver = ReturnType< typeof createPropsResolver >;\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\nexport function createPropsResolver( { transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs ) {\n\tasync function resolve( { props, schema, signal }: ResolveArgs ) {\n\t\tschema = schema ?? initialSchema;\n\n\t\tconst promises = Promise.all(\n\t\t\tObject.entries( schema ).map( async ( [ key, type ] ) => {\n\t\t\t\tconst value = props[ key ] ?? type.default;\n\n\t\t\t\tconst transformed = await transform( { value, key, type, signal } );\n\n\t\t\t\tonPropResolve?.( { key, value: transformed } );\n\n\t\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t\t}\n\n\t\t\t\treturn { [ key ]: transformed };\n\t\t\t} )\n\t\t);\n\n\t\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n\t}\n\n\tasync function transform( { value, key, type, signal, depth = 0 }: TransformArgs ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ! isTransformable( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( value.disabled === true ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( type.kind === 'union' ) {\n\t\t\ttype = type.prop_types[ value.$$type ];\n\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif ( value.$$type !== type.key ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Warning: This variable is loosely-typed - use with caution.\n\t\tlet resolvedValue = value.value;\n\n\t\tif ( type.kind === 'object' ) {\n\t\t\tresolvedValue = await resolve( {\n\t\t\t\tprops: resolvedValue,\n\t\t\t\tschema: type.shape,\n\t\t\t\tsignal,\n\t\t\t} );\n\t\t}\n\n\t\tif ( type.kind === 'array' ) {\n\t\t\tresolvedValue = await Promise.all(\n\t\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\t\ttransform( { value: item, key, type: type.item_prop_type, depth, signal } )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tconst transformer = transformers.get( value.$$type );\n\n\t\tif ( ! transformer ) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst transformed = await transformer( resolvedValue, { key, signal } );\n\n\t\t\treturn transform( { value: transformed, key, type, signal, depth: depth + 1 } );\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn resolve;\n}\n","import { createError } from '@elementor/utils';\n\nexport const UnknownStyleTypeError = createError< { type: string } >( {\n\tcode: 'unknown_style_type',\n\tmessage: 'Unknown style type',\n} );\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleDefinitionState, type StyleDefinitionType } from '@elementor/editor-styles';\n\nimport { type PropsResolver } from './create-props-resolver';\nimport { UnknownStyleTypeError } from './errors';\n\ntype RenderParams = {\n\tresolve: PropsResolver;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\ntype PropsToCssArgs = {\n\tprops: Props;\n\tresolve: PropsResolver;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function renderStyles( {\n\tresolve,\n\tstyles,\n\tbreakpoints,\n\tselectorPrefix = '',\n\tsignal,\n}: RenderParams ) {\n\tconst stylesCssPromises = styles.map( async ( style ) => {\n\t\tconst variantCssPromises = Object.values( style.variants ).map( async ( variant ) => {\n\t\t\tconst css = await propsToCss( { props: variant.props, resolve, signal } );\n\n\t\t\treturn createStyleWrapper()\n\t\t\t\t.forStyle( style )\n\t\t\t\t.withPrefix( selectorPrefix )\n\t\t\t\t.withState( variant.meta.state )\n\t\t\t\t.withMediaQuery( variant.meta.breakpoint ? breakpoints[ variant.meta.breakpoint ] : null )\n\t\t\t\t.wrap( css );\n\t\t} );\n\n\t\tconst variantsCss = await Promise.all( variantCssPromises );\n\n\t\treturn wrapCssWithStyleElement( style.id, variantsCss.join( '' ) );\n\t} );\n\n\tconst stylesCss = await Promise.all( stylesCssPromises );\n\n\treturn stylesCss.join( '' );\n}\n\nfunction createStyleWrapper( value: string = '', wrapper?: ( css: string ) => string ) {\n\treturn {\n\t\tforStyle: ( { id, type }: StyleDefinition ) => {\n\t\t\tconst symbol = SELECTORS_MAP[ type ];\n\n\t\t\tif ( ! symbol ) {\n\t\t\t\tthrow new UnknownStyleTypeError( { context: { type } } );\n\t\t\t}\n\n\t\t\treturn createStyleWrapper( `${ value }${ symbol }${ id }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tif ( propValue === null ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n\nfunction wrapCssWithStyleElement( id: string, css: string ) {\n\treturn `<style data-style-id=\"${ id }\">${ css }</style>`;\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 type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeBody() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.body;\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\nimport { __privateListenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createElementType } from './create-element-type';\nimport type { LegacyWindow } from './types';\n\nexport function initLegacyViews() {\n\t__privateListenTo( v1ReadyEvent(), () => {\n\t\tconst config = getWidgetsCache() ?? {};\n\t\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\t\tObject.entries( config ).forEach( ( [ type, element ] ) => {\n\t\t\tif ( ! element.atomic ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ElementType = createElementType( type );\n\n\t\t\tlegacyWindow.elementor.elementsManager.registerElementType( new ElementType() );\n\t\t} );\n\t} );\n}\n","import { type ElementType, type ElementView, type LegacyWindow } from './types';\n\n// Technically it shouldn't have a return type annotation, but for some\n// reason TypeScript can't infer the types properly when emitting DTS.\n//\n// See: https://github.com/microsoft/TypeScript/issues/9944#issuecomment-244448079\nexport function createElementType( type: string ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createElementView();\n\t\t}\n\t};\n}\n\nfunction createElementView(): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.views.Widget {\n\t\t// Dispatch `render` event so the overlay layer will be updated\n\t\tonRender( ...args: unknown[] ) {\n\t\t\tsuper.onRender( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/render' );\n\t\t}\n\n\t\t// Dispatch `destroy` event so the overlay layer will be updated\n\t\tonDestroy( ...args: unknown[] ) {\n\t\t\tsuper.onDestroy( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/destroy' );\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\n\t\t\t\t// Mark the widget as atomic, so external APIs (such as the overlay layer) can reference it.\n\t\t\t\t'data-atomic': '',\n\n\t\t\t\t// Make the wrapper is non-existent in terms of CSS to mimic the frontend DOM tree.\n\t\t\t\tstyle: 'display: contents !important;',\n\t\t\t};\n\t\t}\n\n\t\t// Removes behaviors that are not needed for atomic widgets (that are implemented in the overlay layer).\n\t\tbehaviors() {\n\t\t\tconst disabledBehaviors = [ 'InlineEditing', 'Draggable', 'Resizable' ];\n\n\t\t\tconst behaviorsAsEntries = Object.entries( super.behaviors() ).filter(\n\t\t\t\t( [ key ] ) => ! disabledBehaviors.includes( key )\n\t\t\t);\n\n\t\t\treturn Object.fromEntries( behaviorsAsEntries );\n\t\t}\n\n\t\t// Change the drag handle because the $el is not the draggable element (`display: contents`).\n\t\tgetDomElement() {\n\t\t\treturn this.$el.find( ':first-child' );\n\t\t}\n\n\t\t// Remove the overlay, so we can use the new overlay layer.\n\t\tgetHandlesOverlay() {\n\t\t\treturn null;\n\t\t}\n\n\t\t#dispatchEvent( eventType: string ) {\n\t\t\twindow.top?.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: { id: this.model.get( 'id' ) },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\treturn super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t}\n\t};\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoablePasteElementStyle } from './undoable-actions/paste-element-style';\nimport { type ContainerArgs, getClipboardElements, hasAtomicWidgets, isAtomicWidget } from './utils';\n\ntype PasteStylesCommandArgs = ContainerArgs & {\n\tstorageKey?: string;\n};\n\nexport function initPasteStyleCommand() {\n\tconst pasteElementStyleCommand = undoablePasteElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/paste-style' ), ( e ) =>\n\t\tpasteStyles( ( e as CommandEvent ).args, pasteElementStyleCommand )\n\t);\n}\n\nfunction pasteStyles( args: PasteStylesCommandArgs, pasteCallback: ReturnType< typeof undoablePasteElementStyle > ) {\n\tconst { containers = [ args.container ], storageKey } = args;\n\n\tconst clipboardElements = getClipboardElements( storageKey );\n\tconst [ clipboardElement ] = clipboardElements ?? [];\n\n\tif ( ! clipboardElement ) {\n\t\treturn;\n\t}\n\n\tconst elementStyles = clipboardElement.styles;\n\tconst elementStyle = Object.values( elementStyles ?? {} )[ 0 ]; // we currently support only one local style\n\n\tif ( ! elementStyle ) {\n\t\treturn;\n\t}\n\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tpasteCallback( { containers: atomicContainers, newStyle: elementStyle } );\n}\n","import {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\tgetElementStyles,\n\tupdateElementStyle,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype PasteElementStyleArgs = {\n\tcontainers: V1Element[];\n\tnewStyle: StyleDefinition;\n};\n\nexport const undoablePasteElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers, newStyle }: PasteElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.id;\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalStyles = getElementStyles( container.id );\n\n\t\t\t\t\tconst [ styleId, styleDef ] = Object.entries( originalStyles ?? {} )[ 0 ] ?? []; // we currently support only one local style\n\t\t\t\t\tconst originalStyle = Object.keys( styleDef ?? {} ).length ? styleDef : null;\n\n\t\t\t\t\tconst revertData = {\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\toriginalStyle,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( styleId ) {\n\t\t\t\t\t\tnewStyle.variants.forEach( ( { meta, props } ) => {\n\t\t\t\t\t\t\tupdateElementStyle( {\n\t\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ firstVariant ] = newStyle.variants;\n\t\t\t\t\t\tconst additionalVariants = newStyle.variants.slice( 1 );\n\n\t\t\t\t\t\trevertData.styleId = createElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn revertData;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst revertData = revertDataItems[ index ];\n\n\t\t\t\t\tif ( ! revertData ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! revertData.originalStyle ) {\n\t\t\t\t\t\t// the container didn't have a style before pasting the new style\n\t\t\t\t\t\tdeleteElementStyle( container.id, revertData.styleId );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ firstVariant ] = revertData.originalStyle.variants;\n\t\t\t\t\tconst additionalVariants = revertData.originalStyle.variants.slice( 1 );\n\n\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\telementId: container.id,\n\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\tstyleId: revertData.styleId,\n\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Pasted', 'elementor' ),\n\t\t}\n\t);\n","import { getElementLabel, getWidgetsCache, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type PropsSchema } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type ContainerArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function hasAtomicWidgets( args: ContainerArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\treturn containers.some( isAtomicWidget );\n}\n\nexport function isAtomicWidget( container: V1Element | undefined ): boolean {\n\tif ( ! container ) {\n\t\treturn false;\n\t}\n\n\treturn Boolean( getContainerSchema( container ) );\n}\n\nexport function getClassesProp( container: V1Element ): string | null {\n\tconst propsSchema = getContainerSchema( container );\n\n\tif ( ! propsSchema ) {\n\t\treturn null;\n\t}\n\n\tconst [ propKey ] =\n\t\tObject.entries( propsSchema ).find(\n\t\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t\t) ?? [];\n\n\treturn propKey ?? null;\n}\n\nfunction getContainerSchema( container: V1Element ): PropsSchema | null {\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\treturn elementType?.atomic_props_schema ?? null;\n}\n\ntype ClipboardElements = V1ElementModelProps[];\n\nexport function getClipboardElements( storageKey: string = 'clipboard' ): ClipboardElements | undefined {\n\ttry {\n\t\tconst storedData = JSON.parse( localStorage.getItem( 'elementor' ) ?? '{}' );\n\n\t\treturn storedData[ storageKey ]?.elements as ClipboardElements;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getTitleForContainers( containers: V1Element[] ): string {\n\treturn containers.length > 1 ? __( 'Elements', 'elementor' ) : getElementLabel( containers[ 0 ].id );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoableResetElementStyle } from './undoable-actions/reset-element-style';\nimport { type ContainerArgs, hasAtomicWidgets, isAtomicWidget } from './utils';\n\nexport function initResetStyleCommand() {\n\tconst resetElementStyles = undoableResetElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/reset-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/reset-style' ), ( e ) =>\n\t\tresetStyles( ( e as CommandEvent ).args, resetElementStyles )\n\t);\n}\n\nfunction resetStyles( args: ContainerArgs, resetElementStyles: ReturnType< typeof undoableResetElementStyle > ) {\n\tconst { containers = [ args.container ] } = args;\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tresetElementStyles( { containers: atomicContainers } );\n}\n","import { createElementStyle, deleteElementStyle, getElementStyles, type V1Element } from '@elementor/editor-elements';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype ResetElementStyleArgs = {\n\tcontainers: V1Element[];\n};\n\nexport const undoableResetElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers }: ResetElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\n\t\t\t\t\tconst containerStyles = getElementStyles( elementId );\n\n\t\t\t\t\tObject.keys( containerStyles ?? {} ).forEach( ( styleId ) =>\n\t\t\t\t\t\tdeleteElementStyle( elementId, styleId )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn containerStyles;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\t\t\t\t\tconst containerStyles = revertDataItems[ index ];\n\n\t\t\t\t\tObject.entries( containerStyles ?? {} ).forEach( ( [ styleId, style ] ) => {\n\t\t\t\t\t\tconst [ firstVariant ] = style.variants;\n\t\t\t\t\t\tconst additionalVariants = style.variants.slice( 1 );\n\n\t\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Reset', 'elementor' ),\n\t\t}\n\t);\n","import { initPasteStyleCommand } from './paste-style';\nimport { initResetStyleCommand } from './reset-style';\n\nexport function initStyleCommands() {\n\tinitPasteStyleCommand();\n\tinitResetStyleCommand();\n}\n"],"mappings":"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","names":["React","import_react","import_react","useIsRouteActive","useListenTo","size","size","import_editor_v1_adapters","size","listenTo","import_editor_elements","import_editor_v1_adapters","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","import_editor_elements","import_editor_props","listenTo","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","listenTo"]}
package/dist/index.mjs CHANGED
@@ -3,8 +3,13 @@ import { injectIntoTop } from "@elementor/editor";
3
3
 
4
4
  // src/components/elements-overlays.tsx
5
5
  import * as React2 from "react";
6
- import { useElementsDomRef, useSelectedElement } from "@elementor/editor-elements";
7
- import { __privateUseIsRouteActive as useIsRouteActive, useEditMode } from "@elementor/editor-v1-adapters";
6
+ import { getElements, useSelectedElement } from "@elementor/editor-elements";
7
+ import {
8
+ __privateUseIsRouteActive as useIsRouteActive,
9
+ __privateUseListenTo as useListenTo,
10
+ useEditMode,
11
+ windowEvent
12
+ } from "@elementor/editor-v1-adapters";
8
13
 
9
14
  // src/components/element-overlay.tsx
10
15
  import * as React from "react";
@@ -46,7 +51,7 @@ function groupProps(props) {
46
51
  }
47
52
 
48
53
  // src/hooks/use-floating-on-element.ts
49
- import { useState } from "react";
54
+ import { useEffect as useEffect2, useState } from "react";
50
55
  import { autoUpdate, offset, size, useFloating } from "@floating-ui/react";
51
56
  function useFloatingOnElement({ element, isSelected }) {
52
57
  const [isOpen, setIsOpen] = useState(false);
@@ -54,10 +59,7 @@ function useFloatingOnElement({ element, isSelected }) {
54
59
  // Must be controlled for interactions (like hover) to work.
55
60
  open: isOpen || isSelected,
56
61
  onOpenChange: setIsOpen,
57
- // Add an animation frame to support scroll events (without it the floating element will stay in the same position).
58
- whileElementsMounted: (...args) => autoUpdate(...args, { animationFrame: true }),
59
- // The first element in the canvas is `display: contents` so we need to use the first child.
60
- elements: { reference: element.firstElementChild },
62
+ whileElementsMounted: autoUpdate,
61
63
  middleware: [
62
64
  // Match the floating element's size to the reference element.
63
65
  size({
@@ -72,6 +74,9 @@ function useFloatingOnElement({ element, isSelected }) {
72
74
  offset(({ rects }) => -rects.reference.height / 2 - rects.floating.height / 2)
73
75
  ]
74
76
  });
77
+ useEffect2(() => {
78
+ refs.setReference(element);
79
+ }, [element, refs]);
75
80
  return {
76
81
  isVisible: isOpen || isSelected,
77
82
  context,
@@ -90,7 +95,7 @@ var OverlayBox = styled(Box, { shouldForwardProp: (prop) => prop !== "isSelected
90
95
  outlineOffset: isSelected ? "-2px" : "-1px",
91
96
  pointerEvents: "none"
92
97
  }));
93
- function ElementOverlay({ element, isSelected }) {
98
+ function ElementOverlay({ element, isSelected, id }) {
94
99
  const { context, floating, isVisible } = useFloatingOnElement({ element, isSelected });
95
100
  const { getFloatingProps, getReferenceProps } = useInteractions([useHover(context)]);
96
101
  useBindReactPropsToElement(element, getReferenceProps);
@@ -100,7 +105,7 @@ function ElementOverlay({ element, isSelected }) {
100
105
  ref: floating.setRef,
101
106
  isSelected,
102
107
  style: floating.styles,
103
- "data-element-overlay": element.dataset.id,
108
+ "data-element-overlay": id,
104
109
  role: "presentation",
105
110
  ...getFloatingProps()
106
111
  }
@@ -110,31 +115,38 @@ function ElementOverlay({ element, isSelected }) {
110
115
  // src/components/elements-overlays.tsx
111
116
  function ElementsOverlays() {
112
117
  const selected = useSelectedElement();
113
- const domElements = useElementsDomRef();
118
+ const elements = useElementsDom();
114
119
  const currentEditMode = useEditMode();
115
120
  const isEditMode = currentEditMode === "edit";
116
121
  const isKitRouteActive = useIsRouteActive("panel/global");
117
122
  const isActive = isEditMode && !isKitRouteActive;
118
- return isActive && domElements.map((el) => /* @__PURE__ */ React2.createElement(
119
- ElementOverlay,
120
- {
121
- element: el,
122
- key: el.dataset.id,
123
- isSelected: selected.element?.id === el.dataset.id
123
+ return isActive && elements.map(([id, element]) => /* @__PURE__ */ React2.createElement(ElementOverlay, { key: id, id, element, isSelected: selected.element?.id === id }));
124
+ }
125
+ var ELEMENTS_DATA_ATTR = "atomic";
126
+ function useElementsDom() {
127
+ return useListenTo(
128
+ [windowEvent("elementor/editor/element-rendered"), windowEvent("elementor/editor/element-destroyed")],
129
+ () => {
130
+ return getElements().filter((el) => ELEMENTS_DATA_ATTR in (el.view?.el?.dataset ?? {})).map((element) => [element.id, element.view?.getDomElement?.()?.get?.(0)]).filter((item) => !!item[1]);
124
131
  }
125
- ));
132
+ );
126
133
  }
127
134
 
128
135
  // src/transformers/create-transformers-registry.ts
129
136
  function createTransformersRegistry() {
130
137
  const transformers = {};
138
+ let fallbackTransformer = null;
131
139
  return {
132
- register(name, transformer) {
133
- transformers[name] = transformer;
140
+ register(type, transformer) {
141
+ transformers[type] = transformer;
142
+ return this;
143
+ },
144
+ registerFallback(transformer) {
145
+ fallbackTransformer = transformer;
134
146
  return this;
135
147
  },
136
- all() {
137
- return transformers;
148
+ get(type) {
149
+ return transformers[type] ?? fallbackTransformer;
138
150
  }
139
151
  };
140
152
  }
@@ -200,7 +212,7 @@ var plainTransformer = createTransformer((value) => {
200
212
 
201
213
  // src/init-settings-transformers.ts
202
214
  function initSettingsTransformers() {
203
- settingsTransformersRegistry.register("string", plainTransformer).register("url", plainTransformer).register("number", plainTransformer).register("boolean", plainTransformer).register("classes", arrayTransformer).register("link", linkTransformer).register("image", imageTransformer).register("image-src", imageSrcTransformer).register("image-attachment-id", plainTransformer);
215
+ settingsTransformersRegistry.register("classes", arrayTransformer).register("link", linkTransformer).register("image", imageTransformer).register("image-src", imageSrcTransformer).registerFallback(plainTransformer);
204
216
  }
205
217
 
206
218
  // src/style-transformers-registry.ts
@@ -242,12 +254,12 @@ var backgroundImageOverlayTransformer = createTransformer((value) => {
242
254
 
243
255
  // src/transformers/styles/background-image-position-offset-transformer.ts
244
256
  var backgroundImagePositionOffsetTransformer = createTransformer(
245
- ({ x = "0px", y = "0px" }) => `${x} ${y}`
257
+ ({ x, y }) => `${x ?? "0px"} ${y ?? "0px"}`
246
258
  );
247
259
 
248
260
  // src/transformers/styles/background-image-size-scale-transformer.ts
249
261
  var backgroundImageSizeScaleTransformer = createTransformer(
250
- ({ width = "auto", height = "auto" }) => `${width} ${height}`
262
+ ({ width, height }) => `${width ?? "auto"} ${height ?? "auto"}`
251
263
  );
252
264
 
253
265
  // src/transformers/styles/background-transformer.ts
@@ -317,7 +329,7 @@ function initStyleTransformers() {
317
329
  ["block-start", "block-end", "inline-start", "inline-end"],
318
330
  ({ propKey, key }) => `${propKey}-${key}`
319
331
  )
320
- ).register("color", plainTransformer).register("number", plainTransformer).register("string", plainTransformer).register("url", plainTransformer).register("box-shadow", createCombineArrayTransformer(",")).register("background", backgroundTransformer).register("background-overlay", createCombineArrayTransformer(",")).register("background-color-overlay", backgroundColorOverlayTransformer).register("background-image-overlay", backgroundImageOverlayTransformer).register("background-gradient-overlay", backgroundGradientOverlayTransformer).register("gradient-color-stop", createCombineArrayTransformer(",")).register("color-stop", colorStopTransformer).register("background-image-position-offset", backgroundImagePositionOffsetTransformer).register("background-image-size-scale", backgroundImageSizeScaleTransformer).register("image-attachment-id", plainTransformer).register("image-src", imageSrcTransformer).register("image", imageTransformer).register(
332
+ ).register("box-shadow", createCombineArrayTransformer(",")).register("background", backgroundTransformer).register("background-overlay", createCombineArrayTransformer(",")).register("background-color-overlay", backgroundColorOverlayTransformer).register("background-image-overlay", backgroundImageOverlayTransformer).register("background-gradient-overlay", backgroundGradientOverlayTransformer).register("gradient-color-stop", createCombineArrayTransformer(",")).register("color-stop", colorStopTransformer).register("background-image-position-offset", backgroundImagePositionOffsetTransformer).register("background-image-size-scale", backgroundImageSizeScaleTransformer).register("image-src", imageSrcTransformer).register("image", imageTransformer).register(
321
333
  "layout-direction",
322
334
  createMultiPropsTransformer(["row", "column"], ({ propKey, key }) => `${key}-${propKey}`)
323
335
  ).register(
@@ -332,7 +344,7 @@ function initStyleTransformers() {
332
344
  ["start-start", "start-end", "end-start", "end-end"],
333
345
  ({ key }) => `border-${key}-radius`
334
346
  )
335
- );
347
+ ).registerFallback(plainTransformer);
336
348
  }
337
349
 
338
350
  // src/init-styles-renderer.ts
@@ -353,9 +365,6 @@ function createPropsResolver({ transformers, schema: initialSchema, onPropResolv
353
365
  Object.entries(schema).map(async ([key, type]) => {
354
366
  const value = props[key] ?? type.default;
355
367
  const transformed = await transform({ value, key, type, signal });
356
- if (transformed === null) {
357
- return;
358
- }
359
368
  onPropResolve?.({ key, value: transformed });
360
369
  if (isMultiProps(transformed)) {
361
370
  return getMultiPropsValue(transformed);
@@ -384,6 +393,9 @@ function createPropsResolver({ transformers, schema: initialSchema, onPropResolv
384
393
  return null;
385
394
  }
386
395
  }
396
+ if (value.$$type !== type.key) {
397
+ return null;
398
+ }
387
399
  let resolvedValue = value.value;
388
400
  if (type.kind === "object") {
389
401
  resolvedValue = await resolve({
@@ -399,7 +411,7 @@ function createPropsResolver({ transformers, schema: initialSchema, onPropResolv
399
411
  )
400
412
  );
401
413
  }
402
- const transformer = transformers[value.$$type];
414
+ const transformer = transformers.get(value.$$type);
403
415
  if (!transformer) {
404
416
  return null;
405
417
  }
@@ -472,6 +484,9 @@ function createStyleWrapper(value = "", wrapper) {
472
484
  async function propsToCss({ props, resolve, signal }) {
473
485
  const transformed = await resolve({ props, signal });
474
486
  return Object.entries(transformed).reduce((acc, [propName, propValue]) => {
487
+ if (propValue === null) {
488
+ return acc;
489
+ }
475
490
  acc.push(propName + ":" + propValue + ";");
476
491
  return acc;
477
492
  }, []).join("");
@@ -499,7 +514,7 @@ function initStylesRenderer() {
499
514
  listenTo(v1ReadyEvent(), () => {
500
515
  let abortController = null;
501
516
  const resolve = createPropsResolver({
502
- transformers: styleTransformersRegistry.all(),
517
+ transformers: styleTransformersRegistry,
503
518
  schema: getStylesSchema(),
504
519
  onPropResolve: enqueueUsedFonts
505
520
  });