@elementor/editor-canvas 0.7.0 → 0.7.1

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.7.0 build
2
+ > @elementor/editor-canvas@0.7.1 build
3
3
  > tsup --config=../../tsup.build.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- ESM dist/index.mjs 17.35 KB
14
- ESM dist/index.mjs.map 35.87 KB
15
- ESM ⚡️ Build success in 160ms
16
- CJS dist/index.js 18.93 KB
17
- CJS dist/index.js.map 35.87 KB
18
- CJS ⚡️ Build success in 161ms
13
+ ESM dist/index.mjs 17.52 KB
14
+ ESM dist/index.mjs.map 36.24 KB
15
+ ESM ⚡️ Build success in 124ms
16
+ CJS dist/index.js 19.16 KB
17
+ CJS dist/index.js.map 36.27 KB
18
+ CJS ⚡️ Build success in 125ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 15999ms
20
+ DTS ⚡️ Build success in 18510ms
21
21
  DTS dist/index.d.mts 13.00 B
22
22
  DTS dist/index.d.ts 13.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 6c4d4a7: refactored CSS class menu and fix it's keyboard navigation
8
+ - b34f498: Fix global class styles not updating
9
+ - Updated dependencies [d61b1bc]
10
+ - Updated dependencies [6c4d4a7]
11
+ - Updated dependencies [a8b60c9]
12
+ - Updated dependencies [b34f498]
13
+ - Updated dependencies [19b0381]
14
+ - @elementor/editor-styles-repository@0.6.0
15
+ - @elementor/editor-elements@0.5.1
16
+ - @elementor/editor@0.17.5
17
+ - @elementor/editor-v1-adapters@0.9.1
18
+ - @elementor/editor-styles@0.5.4
19
+ - @elementor/editor-responsive@0.12.6
20
+
3
21
  ## 0.7.0
4
22
 
5
23
  ### Minor Changes
package/dist/index.js CHANGED
@@ -151,6 +151,7 @@ function ElementsOverlays() {
151
151
  // src/init-styles-renderer.ts
152
152
  var import_editor_responsive = require("@elementor/editor-responsive");
153
153
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
154
+ var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
154
155
 
155
156
  // src/styles-renderer/transformers/background-color-overlay-transformer.ts
156
157
  var backgroundColorOverlayTransformer = (value) => {
@@ -496,22 +497,24 @@ var WRAPPER_DATA_ATTR = "data-styles-container";
496
497
  var SELECTOR_PREFIX = ".elementor";
497
498
  function initStylesRenderer() {
498
499
  let abortController = null;
499
- import_editor_styles_repository.stylesRepository.subscribe(async () => {
500
- const styleContainer = getStylesContainer();
501
- const styles = import_editor_styles_repository.stylesRepository.all();
502
- const breakpoints = (0, import_editor_responsive.getBreakpointsMap)();
503
- if (abortController) {
504
- abortController.abort();
505
- }
506
- abortController = new AbortController();
507
- styleContainer.innerHTML = await render({
508
- transformers: transformers_default,
509
- styles,
510
- breakpoints,
511
- selectorPrefix: SELECTOR_PREFIX,
512
- signal: abortController.signal
500
+ (0, import_editor_v1_adapters2.__privateListenTo)((0, import_editor_v1_adapters2.v1ReadyEvent)(), () => {
501
+ import_editor_styles_repository.stylesRepository.subscribe(async () => {
502
+ const styleContainer = getStylesContainer();
503
+ const breakpoints = (0, import_editor_responsive.getBreakpointsMap)();
504
+ const styles = import_editor_styles_repository.stylesRepository.all().reverse();
505
+ if (abortController) {
506
+ abortController.abort();
507
+ }
508
+ abortController = new AbortController();
509
+ styleContainer.innerHTML = await render({
510
+ transformers: transformers_default,
511
+ styles,
512
+ breakpoints,
513
+ selectorPrefix: SELECTOR_PREFIX,
514
+ signal: abortController.signal
515
+ });
516
+ enqueueUsedFonts(styles);
513
517
  });
514
- enqueueUsedFonts(styles);
515
518
  });
516
519
  }
517
520
  function getStylesContainer() {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../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/init-styles-renderer.ts","../src/styles-renderer/transformers/background-color-overlay-transformer.ts","../src/styles-renderer/transformers/background-image-overlay-transformer.ts","../src/styles-renderer/transformers/background-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/multi-props.ts","../src/styles-renderer/transformers/create-corner-sizes-transformer.ts","../src/styles-renderer/transformers/create-edge-sizes-transformer.ts","../src/styles-renderer/transformers/dimensions.ts","../src/styles-renderer/transformers/image-attachment.ts","../src/styles-renderer/transformers/image-src.ts","../src/styles-renderer/transformers/layout-direction-transformer.ts","../src/styles-renderer/transformers/primitive-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/errors.ts","../src/styles-renderer/resolve.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\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 {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! 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 { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\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\tlet abortController: AbortController | null = null;\n\n\tstylesRepository.subscribe( async () => {\n\t\tconst styleContainer = getStylesContainer();\n\t\tconst styles = stylesRepository.all();\n\t\tconst breakpoints = getBreakpointsMap();\n\n\t\tif ( abortController ) {\n\t\t\tabortController.abort();\n\t\t}\n\n\t\tabortController = new AbortController();\n\n\t\tstyleContainer.innerHTML = await render( {\n\t\t\ttransformers,\n\t\t\tstyles,\n\t\t\tbreakpoints,\n\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\tsignal: abortController.signal,\n\t\t} );\n\n\t\tenqueueUsedFonts( styles );\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","import { type BackgroundColorOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundColorOverlayTransformer: Transformer< BackgroundColorOverlayPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value }, ${ value })`;\n};\n\nexport default backgroundColorOverlayTransformer;\n","import { type BackgroundImageOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const defaultPositionValue = '0% 0%';\n\nconst backgroundImageOverlayTransformer: Transformer< BackgroundImageOverlayPropValue[ 'value' ] > = ( value ) => {\n\tconst { 'image-src': imageSrc, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tlet resultBackgroundStyle = imageSrc;\n\n\tif ( repeat ) {\n\t\tresultBackgroundStyle += ` ${ repeat }`;\n\t}\n\n\tif ( attachment ) {\n\t\tresultBackgroundStyle += ` ${ attachment }`;\n\t}\n\n\tif ( position && ! size ) {\n\t\tresultBackgroundStyle += ` ${ position }`;\n\t}\n\n\tif ( size ) {\n\t\tresultBackgroundStyle += ` ${ position || defaultPositionValue } / ${ size }`;\n\t}\n\n\treturn resultBackgroundStyle;\n};\n\nexport default backgroundImageOverlayTransformer;\n","import { type BackgroundPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n};\n\nexport default backgroundTransformer;\n","import { type Transformer } from '../types';\n\ntype CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;\n\nconst createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {\n\treturn ( value ) => value.filter( Boolean ).join( delimiter );\n};\n\nexport default createCombineArrayTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nexport type 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 { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type CornerSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateCornerSizesTransformer = (\n\tkeyGenerator: ( cornerKey: string ) => string\n) => Transformer< CornerSizes >;\n\nconst validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];\n\nconst createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {\n\t\tif ( validCorners.includes( corner ) ) {\n\t\t\tconst key = keyGenerator( corner );\n\n\t\t\tacc[ key ] = cornerValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createCornerSizesTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type EdgeSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;\n\nconst validEdges = [ 'top', 'right', 'bottom', 'left' ];\n\nconst createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {\n\t\tif ( validEdges.includes( edge ) ) {\n\t\t\tconst key = keyGenerator( edge );\n\n\t\t\tacc[ key ] = edgeValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createEdgeSizesTransformer;\n","import { type DimensionsPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'top', 'right', 'bottom', 'left' ];\n\nconst dimensions: Transformer< DimensionsPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ key }-${ dimensionKey }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default dimensions;\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\nimport { getMediaAttachment } from '@elementor/wp-media';\n\nimport { type Transformer } from '../types';\n\nexport const imageAttachmentTransformer: Transformer< ImageSrcPropValue[ 'value' ][ 'id' ] > = async ( value ) => {\n\tconst attachment = await getMediaAttachment( { id: value } );\n\n\tif ( ! attachment ) {\n\t\treturn null;\n\t}\n\n\treturn attachment.url;\n};\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const imageSrcTransformer: Transformer< ImageSrcPropValue[ 'value' ] > = ( value ) => {\n\tconst url = value.id ?? value.url?.value;\n\n\tif ( url ) {\n\t\treturn `url(${ url })`;\n\t}\n};\n","import { type LayoutDirectionPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'row', 'column' ];\n\nconst layoutDirectionTransformer: Transformer< LayoutDirectionPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ dimensionKey }-${ key }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default layoutDirectionTransformer;\n","import { type Transformer } from '../types';\n\ntype Primitive = string | number | boolean;\n\nexport const primitiveTransformer: Transformer< Primitive > = ( value ) => {\n\treturn value;\n};\n","import { type ShadowPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {\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\nexport default shadowTransformer;\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.size }${ value.unit }`;\n};\n\nexport default sizeTransformer;\n","import { type StrokePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.width } ${ value.color }`;\n};\n\nexport default strokeTransformer;\n","import { type TransformersMap } from '../types';\nimport backgroundColorOverlayTransformer from './background-color-overlay-transformer';\nimport backgroundImageOverlayTransformer from './background-image-overlay-transformer';\nimport { default as background } from './background-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport createCornerSizesTransformer from './create-corner-sizes-transformer';\nimport createEdgeSizesTransformer from './create-edge-sizes-transformer';\nimport { default as dimensions } from './dimensions';\nimport { imageAttachmentTransformer } from './image-attachment';\nimport { imageSrcTransformer } from './image-src';\nimport { default as layoutDirection } from './layout-direction-transformer';\nimport { primitiveTransformer } from './primitive-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tsize,\n\tshadow,\n\tstroke,\n\tbackground,\n\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\tdimensions,\n\t'background-color-overlay': backgroundColorOverlayTransformer,\n\t'background-image-overlay': backgroundImageOverlayTransformer,\n\t'background-overlay': createCombineArrayTransformer( ',' ),\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\n\t'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),\n\t'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),\n\n\t'image-attachment-id': imageAttachmentTransformer,\n\t'image-src': imageSrcTransformer,\n\n\t'layout-direction': layoutDirection,\n} satisfies TransformersMap;\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport {\n\tgetStylesSchema,\n\ttype StyleDefinition,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionType,\n} from '@elementor/editor-styles';\n\nimport { UnknownStyleTypeError } from './errors';\nimport { resolve } from './resolve';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function render( {\n\ttransformers,\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( variant.props, transformers, 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: Props, transformers: TransformersMap, signal?: AbortSignal ) {\n\tconst schema = getStylesSchema();\n\n\tconst transformed = await resolve( { props, schema, transformers, 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 { 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 PropsSchema } from '@elementor/editor-elements';\nimport { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\nimport { type TransformersMap } from './types';\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema: PropsSchema;\n\ttransformers: TransformersMap;\n\tsignal?: AbortSignal;\n};\n\nexport async function resolve( { props, schema, transformers, signal }: ResolveArgs ) {\n\tconst promises = Promise.all(\n\t\tObject.entries( schema ).map( async ( [ propKey, propType ] ) => {\n\t\t\tconst value = props[ propKey ] ?? propType.default;\n\n\t\t\tconst transformed = await transform( value, propKey, propType, transformers, 0, signal );\n\n\t\t\tif ( transformed === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t}\n\n\t\t\treturn { [ propKey ]: transformed };\n\t\t} )\n\t);\n\n\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n}\n\nasync function transform(\n\tvalue: PropValue,\n\tpropKey: PropKey,\n\tpropType: PropType,\n\ttransformers: TransformersMap,\n\tdepth: number = 0,\n\tsignal?: AbortSignal\n): Promise< unknown > {\n\tif ( ! value && value !== 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\treturn null;\n\t}\n\n\tif ( value.disabled === true ) {\n\t\treturn null;\n\t}\n\n\tif ( propType.kind === 'union' ) {\n\t\tpropType = propType.prop_types[ value.$$type ];\n\n\t\tif ( ! propType ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Warning: This variable is loosely-typed - use with caution.\n\tlet resolvedValue = value.value;\n\n\tif ( propType.kind === 'object' ) {\n\t\tresolvedValue = await resolve( {\n\t\t\ttransformers,\n\t\t\tprops: resolvedValue,\n\t\t\tschema: propType.shape,\n\t\t\tsignal,\n\t\t} );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\tresolvedValue = await Promise.all(\n\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\ttransform( item, propKey, propType.item_prop_type, transformers, depth, signal )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst transformed = await transformer( resolvedValue, { key: propKey, signal } );\n\n\t\treturn transform( transformed, propKey, propType, transformers, depth + 1, signal );\n\t} catch {\n\t\treturn null;\n\t}\n}\n","import { type StringPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] as StringPropValue;\n\n\t\t\t\tif ( fontFamily?.value ) {\n\t\t\t\t\tenqueueFont( fontFamily.value );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import 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 { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","import_react","import_react","useIsPreviewMode","useIsRouteActive","size","validKeys","size","import_utils"]}
1
+ {"version":3,"sources":["../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/init-styles-renderer.ts","../src/styles-renderer/transformers/background-color-overlay-transformer.ts","../src/styles-renderer/transformers/background-image-overlay-transformer.ts","../src/styles-renderer/transformers/background-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/multi-props.ts","../src/styles-renderer/transformers/create-corner-sizes-transformer.ts","../src/styles-renderer/transformers/create-edge-sizes-transformer.ts","../src/styles-renderer/transformers/dimensions.ts","../src/styles-renderer/transformers/image-attachment.ts","../src/styles-renderer/transformers/image-src.ts","../src/styles-renderer/transformers/layout-direction-transformer.ts","../src/styles-renderer/transformers/primitive-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/errors.ts","../src/styles-renderer/resolve.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\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 {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! 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 { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __privateListenTo as listenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\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\tlet abortController: AbortController | null = null;\n\n\tlistenTo( v1ReadyEvent(), () => {\n\t\tstylesRepository.subscribe( async () => {\n\t\t\tconst styleContainer = getStylesContainer();\n\t\t\tconst breakpoints = getBreakpointsMap();\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\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 render( {\n\t\t\t\ttransformers,\n\t\t\t\tstyles,\n\t\t\t\tbreakpoints,\n\t\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t} );\n\n\t\t\tenqueueUsedFonts( styles );\n\t\t} );\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","import { type BackgroundColorOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundColorOverlayTransformer: Transformer< BackgroundColorOverlayPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value }, ${ value })`;\n};\n\nexport default backgroundColorOverlayTransformer;\n","import { type BackgroundImageOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const defaultPositionValue = '0% 0%';\n\nconst backgroundImageOverlayTransformer: Transformer< BackgroundImageOverlayPropValue[ 'value' ] > = ( value ) => {\n\tconst { 'image-src': imageSrc, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tlet resultBackgroundStyle = imageSrc;\n\n\tif ( repeat ) {\n\t\tresultBackgroundStyle += ` ${ repeat }`;\n\t}\n\n\tif ( attachment ) {\n\t\tresultBackgroundStyle += ` ${ attachment }`;\n\t}\n\n\tif ( position && ! size ) {\n\t\tresultBackgroundStyle += ` ${ position }`;\n\t}\n\n\tif ( size ) {\n\t\tresultBackgroundStyle += ` ${ position || defaultPositionValue } / ${ size }`;\n\t}\n\n\treturn resultBackgroundStyle;\n};\n\nexport default backgroundImageOverlayTransformer;\n","import { type BackgroundPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n};\n\nexport default backgroundTransformer;\n","import { type Transformer } from '../types';\n\ntype CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;\n\nconst createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {\n\treturn ( value ) => value.filter( Boolean ).join( delimiter );\n};\n\nexport default createCombineArrayTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nexport type 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 { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type CornerSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateCornerSizesTransformer = (\n\tkeyGenerator: ( cornerKey: string ) => string\n) => Transformer< CornerSizes >;\n\nconst validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];\n\nconst createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {\n\t\tif ( validCorners.includes( corner ) ) {\n\t\t\tconst key = keyGenerator( corner );\n\n\t\t\tacc[ key ] = cornerValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createCornerSizesTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type EdgeSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;\n\nconst validEdges = [ 'top', 'right', 'bottom', 'left' ];\n\nconst createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {\n\t\tif ( validEdges.includes( edge ) ) {\n\t\t\tconst key = keyGenerator( edge );\n\n\t\t\tacc[ key ] = edgeValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createEdgeSizesTransformer;\n","import { type DimensionsPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'top', 'right', 'bottom', 'left' ];\n\nconst dimensions: Transformer< DimensionsPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ key }-${ dimensionKey }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default dimensions;\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\nimport { getMediaAttachment } from '@elementor/wp-media';\n\nimport { type Transformer } from '../types';\n\nexport const imageAttachmentTransformer: Transformer< ImageSrcPropValue[ 'value' ][ 'id' ] > = async ( value ) => {\n\tconst attachment = await getMediaAttachment( { id: value } );\n\n\tif ( ! attachment ) {\n\t\treturn null;\n\t}\n\n\treturn attachment.url;\n};\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const imageSrcTransformer: Transformer< ImageSrcPropValue[ 'value' ] > = ( value ) => {\n\tconst url = value.id ?? value.url?.value;\n\n\tif ( url ) {\n\t\treturn `url(${ url })`;\n\t}\n};\n","import { type LayoutDirectionPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'row', 'column' ];\n\nconst layoutDirectionTransformer: Transformer< LayoutDirectionPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ dimensionKey }-${ key }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default layoutDirectionTransformer;\n","import { type Transformer } from '../types';\n\ntype Primitive = string | number | boolean;\n\nexport const primitiveTransformer: Transformer< Primitive > = ( value ) => {\n\treturn value;\n};\n","import { type ShadowPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {\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\nexport default shadowTransformer;\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.size }${ value.unit }`;\n};\n\nexport default sizeTransformer;\n","import { type StrokePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.width } ${ value.color }`;\n};\n\nexport default strokeTransformer;\n","import { type TransformersMap } from '../types';\nimport backgroundColorOverlayTransformer from './background-color-overlay-transformer';\nimport backgroundImageOverlayTransformer from './background-image-overlay-transformer';\nimport { default as background } from './background-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport createCornerSizesTransformer from './create-corner-sizes-transformer';\nimport createEdgeSizesTransformer from './create-edge-sizes-transformer';\nimport { default as dimensions } from './dimensions';\nimport { imageAttachmentTransformer } from './image-attachment';\nimport { imageSrcTransformer } from './image-src';\nimport { default as layoutDirection } from './layout-direction-transformer';\nimport { primitiveTransformer } from './primitive-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tsize,\n\tshadow,\n\tstroke,\n\tbackground,\n\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\tdimensions,\n\t'background-color-overlay': backgroundColorOverlayTransformer,\n\t'background-image-overlay': backgroundImageOverlayTransformer,\n\t'background-overlay': createCombineArrayTransformer( ',' ),\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\n\t'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),\n\t'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),\n\n\t'image-attachment-id': imageAttachmentTransformer,\n\t'image-src': imageSrcTransformer,\n\n\t'layout-direction': layoutDirection,\n} satisfies TransformersMap;\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport {\n\tgetStylesSchema,\n\ttype StyleDefinition,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionType,\n} from '@elementor/editor-styles';\n\nimport { UnknownStyleTypeError } from './errors';\nimport { resolve } from './resolve';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function render( {\n\ttransformers,\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( variant.props, transformers, 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: Props, transformers: TransformersMap, signal?: AbortSignal ) {\n\tconst schema = getStylesSchema();\n\n\tconst transformed = await resolve( { props, schema, transformers, 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 { 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 PropsSchema } from '@elementor/editor-elements';\nimport { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\nimport { type TransformersMap } from './types';\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema: PropsSchema;\n\ttransformers: TransformersMap;\n\tsignal?: AbortSignal;\n};\n\nexport async function resolve( { props, schema, transformers, signal }: ResolveArgs ) {\n\tconst promises = Promise.all(\n\t\tObject.entries( schema ).map( async ( [ propKey, propType ] ) => {\n\t\t\tconst value = props[ propKey ] ?? propType.default;\n\n\t\t\tconst transformed = await transform( value, propKey, propType, transformers, 0, signal );\n\n\t\t\tif ( transformed === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t}\n\n\t\t\treturn { [ propKey ]: transformed };\n\t\t} )\n\t);\n\n\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n}\n\nasync function transform(\n\tvalue: PropValue,\n\tpropKey: PropKey,\n\tpropType: PropType,\n\ttransformers: TransformersMap,\n\tdepth: number = 0,\n\tsignal?: AbortSignal\n): Promise< unknown > {\n\tif ( ! value && value !== 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\treturn null;\n\t}\n\n\tif ( value.disabled === true ) {\n\t\treturn null;\n\t}\n\n\tif ( propType.kind === 'union' ) {\n\t\tpropType = propType.prop_types[ value.$$type ];\n\n\t\tif ( ! propType ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Warning: This variable is loosely-typed - use with caution.\n\tlet resolvedValue = value.value;\n\n\tif ( propType.kind === 'object' ) {\n\t\tresolvedValue = await resolve( {\n\t\t\ttransformers,\n\t\t\tprops: resolvedValue,\n\t\t\tschema: propType.shape,\n\t\t\tsignal,\n\t\t} );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\tresolvedValue = await Promise.all(\n\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\ttransform( item, propKey, propType.item_prop_type, transformers, depth, signal )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst transformed = await transformer( resolvedValue, { key: propKey, signal } );\n\n\t\treturn transform( transformed, propKey, propType, transformers, depth + 1, signal );\n\t} catch {\n\t\treturn null;\n\t}\n}\n","import { type StringPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] as StringPropValue;\n\n\t\t\t\tif ( fontFamily?.value ) {\n\t\t\t\t\tenqueueFont( fontFamily.value );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import 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 { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","import_react","import_react","useIsPreviewMode","useIsRouteActive","import_editor_v1_adapters","size","validKeys","size","import_utils","listenTo"]}
package/dist/index.mjs CHANGED
@@ -130,6 +130,7 @@ function ElementsOverlays() {
130
130
  // src/init-styles-renderer.ts
131
131
  import { getBreakpointsMap } from "@elementor/editor-responsive";
132
132
  import { stylesRepository } from "@elementor/editor-styles-repository";
133
+ import { __privateListenTo as listenTo, v1ReadyEvent } from "@elementor/editor-v1-adapters";
133
134
 
134
135
  // src/styles-renderer/transformers/background-color-overlay-transformer.ts
135
136
  var backgroundColorOverlayTransformer = (value) => {
@@ -477,22 +478,24 @@ var WRAPPER_DATA_ATTR = "data-styles-container";
477
478
  var SELECTOR_PREFIX = ".elementor";
478
479
  function initStylesRenderer() {
479
480
  let abortController = null;
480
- stylesRepository.subscribe(async () => {
481
- const styleContainer = getStylesContainer();
482
- const styles = stylesRepository.all();
483
- const breakpoints = getBreakpointsMap();
484
- if (abortController) {
485
- abortController.abort();
486
- }
487
- abortController = new AbortController();
488
- styleContainer.innerHTML = await render({
489
- transformers: transformers_default,
490
- styles,
491
- breakpoints,
492
- selectorPrefix: SELECTOR_PREFIX,
493
- signal: abortController.signal
481
+ listenTo(v1ReadyEvent(), () => {
482
+ stylesRepository.subscribe(async () => {
483
+ const styleContainer = getStylesContainer();
484
+ const breakpoints = getBreakpointsMap();
485
+ const styles = stylesRepository.all().reverse();
486
+ if (abortController) {
487
+ abortController.abort();
488
+ }
489
+ abortController = new AbortController();
490
+ styleContainer.innerHTML = await render({
491
+ transformers: transformers_default,
492
+ styles,
493
+ breakpoints,
494
+ selectorPrefix: SELECTOR_PREFIX,
495
+ signal: abortController.signal
496
+ });
497
+ enqueueUsedFonts(styles);
494
498
  });
495
- enqueueUsedFonts(styles);
496
499
  });
497
500
  }
498
501
  function getStylesContainer() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../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/init-styles-renderer.ts","../src/styles-renderer/transformers/background-color-overlay-transformer.ts","../src/styles-renderer/transformers/background-image-overlay-transformer.ts","../src/styles-renderer/transformers/background-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/multi-props.ts","../src/styles-renderer/transformers/create-corner-sizes-transformer.ts","../src/styles-renderer/transformers/create-edge-sizes-transformer.ts","../src/styles-renderer/transformers/dimensions.ts","../src/styles-renderer/transformers/image-attachment.ts","../src/styles-renderer/transformers/image-src.ts","../src/styles-renderer/transformers/layout-direction-transformer.ts","../src/styles-renderer/transformers/primitive-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/errors.ts","../src/styles-renderer/resolve.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\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 {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! 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 { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\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\tlet abortController: AbortController | null = null;\n\n\tstylesRepository.subscribe( async () => {\n\t\tconst styleContainer = getStylesContainer();\n\t\tconst styles = stylesRepository.all();\n\t\tconst breakpoints = getBreakpointsMap();\n\n\t\tif ( abortController ) {\n\t\t\tabortController.abort();\n\t\t}\n\n\t\tabortController = new AbortController();\n\n\t\tstyleContainer.innerHTML = await render( {\n\t\t\ttransformers,\n\t\t\tstyles,\n\t\t\tbreakpoints,\n\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\tsignal: abortController.signal,\n\t\t} );\n\n\t\tenqueueUsedFonts( styles );\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","import { type BackgroundColorOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundColorOverlayTransformer: Transformer< BackgroundColorOverlayPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value }, ${ value })`;\n};\n\nexport default backgroundColorOverlayTransformer;\n","import { type BackgroundImageOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const defaultPositionValue = '0% 0%';\n\nconst backgroundImageOverlayTransformer: Transformer< BackgroundImageOverlayPropValue[ 'value' ] > = ( value ) => {\n\tconst { 'image-src': imageSrc, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tlet resultBackgroundStyle = imageSrc;\n\n\tif ( repeat ) {\n\t\tresultBackgroundStyle += ` ${ repeat }`;\n\t}\n\n\tif ( attachment ) {\n\t\tresultBackgroundStyle += ` ${ attachment }`;\n\t}\n\n\tif ( position && ! size ) {\n\t\tresultBackgroundStyle += ` ${ position }`;\n\t}\n\n\tif ( size ) {\n\t\tresultBackgroundStyle += ` ${ position || defaultPositionValue } / ${ size }`;\n\t}\n\n\treturn resultBackgroundStyle;\n};\n\nexport default backgroundImageOverlayTransformer;\n","import { type BackgroundPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n};\n\nexport default backgroundTransformer;\n","import { type Transformer } from '../types';\n\ntype CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;\n\nconst createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {\n\treturn ( value ) => value.filter( Boolean ).join( delimiter );\n};\n\nexport default createCombineArrayTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nexport type 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 { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type CornerSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateCornerSizesTransformer = (\n\tkeyGenerator: ( cornerKey: string ) => string\n) => Transformer< CornerSizes >;\n\nconst validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];\n\nconst createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {\n\t\tif ( validCorners.includes( corner ) ) {\n\t\t\tconst key = keyGenerator( corner );\n\n\t\t\tacc[ key ] = cornerValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createCornerSizesTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type EdgeSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;\n\nconst validEdges = [ 'top', 'right', 'bottom', 'left' ];\n\nconst createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {\n\t\tif ( validEdges.includes( edge ) ) {\n\t\t\tconst key = keyGenerator( edge );\n\n\t\t\tacc[ key ] = edgeValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createEdgeSizesTransformer;\n","import { type DimensionsPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'top', 'right', 'bottom', 'left' ];\n\nconst dimensions: Transformer< DimensionsPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ key }-${ dimensionKey }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default dimensions;\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\nimport { getMediaAttachment } from '@elementor/wp-media';\n\nimport { type Transformer } from '../types';\n\nexport const imageAttachmentTransformer: Transformer< ImageSrcPropValue[ 'value' ][ 'id' ] > = async ( value ) => {\n\tconst attachment = await getMediaAttachment( { id: value } );\n\n\tif ( ! attachment ) {\n\t\treturn null;\n\t}\n\n\treturn attachment.url;\n};\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const imageSrcTransformer: Transformer< ImageSrcPropValue[ 'value' ] > = ( value ) => {\n\tconst url = value.id ?? value.url?.value;\n\n\tif ( url ) {\n\t\treturn `url(${ url })`;\n\t}\n};\n","import { type LayoutDirectionPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'row', 'column' ];\n\nconst layoutDirectionTransformer: Transformer< LayoutDirectionPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ dimensionKey }-${ key }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default layoutDirectionTransformer;\n","import { type Transformer } from '../types';\n\ntype Primitive = string | number | boolean;\n\nexport const primitiveTransformer: Transformer< Primitive > = ( value ) => {\n\treturn value;\n};\n","import { type ShadowPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {\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\nexport default shadowTransformer;\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.size }${ value.unit }`;\n};\n\nexport default sizeTransformer;\n","import { type StrokePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.width } ${ value.color }`;\n};\n\nexport default strokeTransformer;\n","import { type TransformersMap } from '../types';\nimport backgroundColorOverlayTransformer from './background-color-overlay-transformer';\nimport backgroundImageOverlayTransformer from './background-image-overlay-transformer';\nimport { default as background } from './background-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport createCornerSizesTransformer from './create-corner-sizes-transformer';\nimport createEdgeSizesTransformer from './create-edge-sizes-transformer';\nimport { default as dimensions } from './dimensions';\nimport { imageAttachmentTransformer } from './image-attachment';\nimport { imageSrcTransformer } from './image-src';\nimport { default as layoutDirection } from './layout-direction-transformer';\nimport { primitiveTransformer } from './primitive-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tsize,\n\tshadow,\n\tstroke,\n\tbackground,\n\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\tdimensions,\n\t'background-color-overlay': backgroundColorOverlayTransformer,\n\t'background-image-overlay': backgroundImageOverlayTransformer,\n\t'background-overlay': createCombineArrayTransformer( ',' ),\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\n\t'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),\n\t'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),\n\n\t'image-attachment-id': imageAttachmentTransformer,\n\t'image-src': imageSrcTransformer,\n\n\t'layout-direction': layoutDirection,\n} satisfies TransformersMap;\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport {\n\tgetStylesSchema,\n\ttype StyleDefinition,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionType,\n} from '@elementor/editor-styles';\n\nimport { UnknownStyleTypeError } from './errors';\nimport { resolve } from './resolve';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function render( {\n\ttransformers,\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( variant.props, transformers, 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: Props, transformers: TransformersMap, signal?: AbortSignal ) {\n\tconst schema = getStylesSchema();\n\n\tconst transformed = await resolve( { props, schema, transformers, 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 { 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 PropsSchema } from '@elementor/editor-elements';\nimport { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\nimport { type TransformersMap } from './types';\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema: PropsSchema;\n\ttransformers: TransformersMap;\n\tsignal?: AbortSignal;\n};\n\nexport async function resolve( { props, schema, transformers, signal }: ResolveArgs ) {\n\tconst promises = Promise.all(\n\t\tObject.entries( schema ).map( async ( [ propKey, propType ] ) => {\n\t\t\tconst value = props[ propKey ] ?? propType.default;\n\n\t\t\tconst transformed = await transform( value, propKey, propType, transformers, 0, signal );\n\n\t\t\tif ( transformed === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t}\n\n\t\t\treturn { [ propKey ]: transformed };\n\t\t} )\n\t);\n\n\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n}\n\nasync function transform(\n\tvalue: PropValue,\n\tpropKey: PropKey,\n\tpropType: PropType,\n\ttransformers: TransformersMap,\n\tdepth: number = 0,\n\tsignal?: AbortSignal\n): Promise< unknown > {\n\tif ( ! value && value !== 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\treturn null;\n\t}\n\n\tif ( value.disabled === true ) {\n\t\treturn null;\n\t}\n\n\tif ( propType.kind === 'union' ) {\n\t\tpropType = propType.prop_types[ value.$$type ];\n\n\t\tif ( ! propType ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Warning: This variable is loosely-typed - use with caution.\n\tlet resolvedValue = value.value;\n\n\tif ( propType.kind === 'object' ) {\n\t\tresolvedValue = await resolve( {\n\t\t\ttransformers,\n\t\t\tprops: resolvedValue,\n\t\t\tschema: propType.shape,\n\t\t\tsignal,\n\t\t} );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\tresolvedValue = await Promise.all(\n\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\ttransform( item, propKey, propType.item_prop_type, transformers, depth, signal )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst transformed = await transformer( resolvedValue, { key: propKey, signal } );\n\n\t\treturn transform( transformed, propKey, propType, transformers, depth + 1, signal );\n\t} catch {\n\t\treturn null;\n\t}\n}\n","import { type StringPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] as StringPropValue;\n\n\t\t\t\tif ( fontFamily?.value ) {\n\t\t\t\t\tenqueueFont( fontFamily.value );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import 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 { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","size","validKeys","size"]}
1
+ {"version":3,"sources":["../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/init-styles-renderer.ts","../src/styles-renderer/transformers/background-color-overlay-transformer.ts","../src/styles-renderer/transformers/background-image-overlay-transformer.ts","../src/styles-renderer/transformers/background-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/multi-props.ts","../src/styles-renderer/transformers/create-corner-sizes-transformer.ts","../src/styles-renderer/transformers/create-edge-sizes-transformer.ts","../src/styles-renderer/transformers/dimensions.ts","../src/styles-renderer/transformers/image-attachment.ts","../src/styles-renderer/transformers/image-src.ts","../src/styles-renderer/transformers/layout-direction-transformer.ts","../src/styles-renderer/transformers/primitive-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/errors.ts","../src/styles-renderer/resolve.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\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 {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! 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 { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\nimport { __privateListenTo as listenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\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\tlet abortController: AbortController | null = null;\n\n\tlistenTo( v1ReadyEvent(), () => {\n\t\tstylesRepository.subscribe( async () => {\n\t\t\tconst styleContainer = getStylesContainer();\n\t\t\tconst breakpoints = getBreakpointsMap();\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\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 render( {\n\t\t\t\ttransformers,\n\t\t\t\tstyles,\n\t\t\t\tbreakpoints,\n\t\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\t\tsignal: abortController.signal,\n\t\t\t} );\n\n\t\t\tenqueueUsedFonts( styles );\n\t\t} );\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","import { type BackgroundColorOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundColorOverlayTransformer: Transformer< BackgroundColorOverlayPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value }, ${ value })`;\n};\n\nexport default backgroundColorOverlayTransformer;\n","import { type BackgroundImageOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const defaultPositionValue = '0% 0%';\n\nconst backgroundImageOverlayTransformer: Transformer< BackgroundImageOverlayPropValue[ 'value' ] > = ( value ) => {\n\tconst { 'image-src': imageSrc, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tlet resultBackgroundStyle = imageSrc;\n\n\tif ( repeat ) {\n\t\tresultBackgroundStyle += ` ${ repeat }`;\n\t}\n\n\tif ( attachment ) {\n\t\tresultBackgroundStyle += ` ${ attachment }`;\n\t}\n\n\tif ( position && ! size ) {\n\t\tresultBackgroundStyle += ` ${ position }`;\n\t}\n\n\tif ( size ) {\n\t\tresultBackgroundStyle += ` ${ position || defaultPositionValue } / ${ size }`;\n\t}\n\n\treturn resultBackgroundStyle;\n};\n\nexport default backgroundImageOverlayTransformer;\n","import { type BackgroundPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n};\n\nexport default backgroundTransformer;\n","import { type Transformer } from '../types';\n\ntype CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;\n\nconst createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {\n\treturn ( value ) => value.filter( Boolean ).join( delimiter );\n};\n\nexport default createCombineArrayTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nexport type 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 { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type CornerSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateCornerSizesTransformer = (\n\tkeyGenerator: ( cornerKey: string ) => string\n) => Transformer< CornerSizes >;\n\nconst validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];\n\nconst createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {\n\t\tif ( validCorners.includes( corner ) ) {\n\t\t\tconst key = keyGenerator( corner );\n\n\t\t\tacc[ key ] = cornerValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createCornerSizesTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type EdgeSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;\n\nconst validEdges = [ 'top', 'right', 'bottom', 'left' ];\n\nconst createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {\n\t\tif ( validEdges.includes( edge ) ) {\n\t\t\tconst key = keyGenerator( edge );\n\n\t\t\tacc[ key ] = edgeValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createEdgeSizesTransformer;\n","import { type DimensionsPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'top', 'right', 'bottom', 'left' ];\n\nconst dimensions: Transformer< DimensionsPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ key }-${ dimensionKey }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default dimensions;\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\nimport { getMediaAttachment } from '@elementor/wp-media';\n\nimport { type Transformer } from '../types';\n\nexport const imageAttachmentTransformer: Transformer< ImageSrcPropValue[ 'value' ][ 'id' ] > = async ( value ) => {\n\tconst attachment = await getMediaAttachment( { id: value } );\n\n\tif ( ! attachment ) {\n\t\treturn null;\n\t}\n\n\treturn attachment.url;\n};\n","import { type ImageSrcPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nexport const imageSrcTransformer: Transformer< ImageSrcPropValue[ 'value' ] > = ( value ) => {\n\tconst url = value.id ?? value.url?.value;\n\n\tif ( url ) {\n\t\treturn `url(${ url })`;\n\t}\n};\n","import { type LayoutDirectionPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'row', 'column' ];\n\nconst layoutDirectionTransformer: Transformer< LayoutDirectionPropValue[ 'value' ] > = ( value, { key } ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ dimensionKey }-${ key }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default layoutDirectionTransformer;\n","import { type Transformer } from '../types';\n\ntype Primitive = string | number | boolean;\n\nexport const primitiveTransformer: Transformer< Primitive > = ( value ) => {\n\treturn value;\n};\n","import { type ShadowPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {\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\nexport default shadowTransformer;\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.size }${ value.unit }`;\n};\n\nexport default sizeTransformer;\n","import { type StrokePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.width } ${ value.color }`;\n};\n\nexport default strokeTransformer;\n","import { type TransformersMap } from '../types';\nimport backgroundColorOverlayTransformer from './background-color-overlay-transformer';\nimport backgroundImageOverlayTransformer from './background-image-overlay-transformer';\nimport { default as background } from './background-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport createCornerSizesTransformer from './create-corner-sizes-transformer';\nimport createEdgeSizesTransformer from './create-edge-sizes-transformer';\nimport { default as dimensions } from './dimensions';\nimport { imageAttachmentTransformer } from './image-attachment';\nimport { imageSrcTransformer } from './image-src';\nimport { default as layoutDirection } from './layout-direction-transformer';\nimport { primitiveTransformer } from './primitive-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tsize,\n\tshadow,\n\tstroke,\n\tbackground,\n\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\tdimensions,\n\t'background-color-overlay': backgroundColorOverlayTransformer,\n\t'background-image-overlay': backgroundImageOverlayTransformer,\n\t'background-overlay': createCombineArrayTransformer( ',' ),\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\n\t'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),\n\t'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),\n\n\t'image-attachment-id': imageAttachmentTransformer,\n\t'image-src': imageSrcTransformer,\n\n\t'layout-direction': layoutDirection,\n} satisfies TransformersMap;\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport {\n\tgetStylesSchema,\n\ttype StyleDefinition,\n\ttype StyleDefinitionState,\n\ttype StyleDefinitionType,\n} from '@elementor/editor-styles';\n\nimport { UnknownStyleTypeError } from './errors';\nimport { resolve } from './resolve';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport default async function render( {\n\ttransformers,\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( variant.props, transformers, 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: Props, transformers: TransformersMap, signal?: AbortSignal ) {\n\tconst schema = getStylesSchema();\n\n\tconst transformed = await resolve( { props, schema, transformers, 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 { 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 PropsSchema } from '@elementor/editor-elements';\nimport { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\nimport { type TransformersMap } from './types';\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema: PropsSchema;\n\ttransformers: TransformersMap;\n\tsignal?: AbortSignal;\n};\n\nexport async function resolve( { props, schema, transformers, signal }: ResolveArgs ) {\n\tconst promises = Promise.all(\n\t\tObject.entries( schema ).map( async ( [ propKey, propType ] ) => {\n\t\t\tconst value = props[ propKey ] ?? propType.default;\n\n\t\t\tconst transformed = await transform( value, propKey, propType, transformers, 0, signal );\n\n\t\t\tif ( transformed === null ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t}\n\n\t\t\treturn { [ propKey ]: transformed };\n\t\t} )\n\t);\n\n\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n}\n\nasync function transform(\n\tvalue: PropValue,\n\tpropKey: PropKey,\n\tpropType: PropType,\n\ttransformers: TransformersMap,\n\tdepth: number = 0,\n\tsignal?: AbortSignal\n): Promise< unknown > {\n\tif ( ! value && value !== 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\treturn null;\n\t}\n\n\tif ( value.disabled === true ) {\n\t\treturn null;\n\t}\n\n\tif ( propType.kind === 'union' ) {\n\t\tpropType = propType.prop_types[ value.$$type ];\n\n\t\tif ( ! propType ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Warning: This variable is loosely-typed - use with caution.\n\tlet resolvedValue = value.value;\n\n\tif ( propType.kind === 'object' ) {\n\t\tresolvedValue = await resolve( {\n\t\t\ttransformers,\n\t\t\tprops: resolvedValue,\n\t\t\tschema: propType.shape,\n\t\t\tsignal,\n\t\t} );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\tresolvedValue = await Promise.all(\n\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\ttransform( item, propKey, propType.item_prop_type, transformers, depth, signal )\n\t\t\t)\n\t\t);\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst transformed = await transformer( resolvedValue, { key: propKey, signal } );\n\n\t\treturn transform( transformed, propKey, propType, transformers, depth + 1, signal );\n\t} catch {\n\t\treturn null;\n\t}\n}\n","import { type StringPropValue } from '@elementor/editor-props';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] as StringPropValue;\n\n\t\t\t\tif ( fontFamily?.value ) {\n\t\t\t\t\tenqueueFont( fontFamily.value );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import 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 { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","size","validKeys","size"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/editor-canvas",
3
3
  "description": "Elementor Editor Canvas",
4
- "version": "0.7.0",
4
+ "version": "0.7.1",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -36,16 +36,16 @@
36
36
  "react": "^18.3.1"
37
37
  },
38
38
  "dependencies": {
39
- "@elementor/editor": "0.17.4",
40
- "@elementor/ui": "1.23.3",
39
+ "@elementor/editor": "0.17.5",
40
+ "@elementor/ui": "1.24.1",
41
41
  "@floating-ui/react": "^0.26.28",
42
- "@elementor/editor-elements": "0.5.0",
43
- "@elementor/editor-v1-adapters": "0.9.0",
42
+ "@elementor/editor-elements": "0.5.1",
43
+ "@elementor/editor-v1-adapters": "0.9.1",
44
44
  "@elementor/editor-props": "0.8.0",
45
45
  "@elementor/utils": "0.3.0",
46
- "@elementor/editor-styles-repository": "0.5.0",
47
- "@elementor/editor-responsive": "0.12.5",
48
- "@elementor/editor-styles": "0.5.3",
46
+ "@elementor/editor-styles-repository": "0.6.0",
47
+ "@elementor/editor-responsive": "0.12.6",
48
+ "@elementor/editor-styles": "0.5.4",
49
49
  "@elementor/wp-media": "0.4.0"
50
50
  }
51
51
  }
@@ -1,9 +1,9 @@
1
- import { createDOMElement, createMockStyleDefinition } from 'test-utils';
1
+ import { createDOMElement, createMockStyleDefinition, dispatchV1ReadyEvent } from 'test-utils';
2
2
  import { type BreakpointsMap, getBreakpointsMap } from '@elementor/editor-responsive';
3
3
  import { stylesRepository } from '@elementor/editor-styles-repository';
4
4
  import { waitFor } from '@testing-library/react';
5
5
 
6
- import { initStylesRenderer } from '../init-styles-renderer';
6
+ import { initStylesRenderer as initStylesRendererBase } from '../init-styles-renderer';
7
7
  import { render, transformers } from '../styles-renderer';
8
8
  import { getCanvasIframeBody } from '../sync/get-canvas-iframe-body';
9
9
 
@@ -13,6 +13,11 @@ jest.mock( '../styles-renderer/index' );
13
13
  jest.mock( '../sync/get-canvas-iframe-body' );
14
14
  jest.mock( '../styles-renderer/enqueue-used-fonts' );
15
15
 
16
+ const initStylesRenderer = () => {
17
+ initStylesRendererBase();
18
+ dispatchV1ReadyEvent();
19
+ };
20
+
16
21
  describe( 'initStylesRenderer', () => {
17
22
  it( 'should trigger styles render on each change in the styles repo', async () => {
18
23
  // Arrange.
@@ -1,5 +1,6 @@
1
1
  import { getBreakpointsMap } from '@elementor/editor-responsive';
2
2
  import { stylesRepository } from '@elementor/editor-styles-repository';
3
+ import { __privateListenTo as listenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';
3
4
 
4
5
  import { render, transformers } from './styles-renderer';
5
6
  import enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';
@@ -11,26 +12,30 @@ const SELECTOR_PREFIX = '.elementor';
11
12
  export function initStylesRenderer() {
12
13
  let abortController: AbortController | null = null;
13
14
 
14
- stylesRepository.subscribe( async () => {
15
- const styleContainer = getStylesContainer();
16
- const styles = stylesRepository.all();
17
- const breakpoints = getBreakpointsMap();
15
+ listenTo( v1ReadyEvent(), () => {
16
+ stylesRepository.subscribe( async () => {
17
+ const styleContainer = getStylesContainer();
18
+ const breakpoints = getBreakpointsMap();
18
19
 
19
- if ( abortController ) {
20
- abortController.abort();
21
- }
20
+ // Styles should be printed in a reversed order, so the high priority styles will be printed last.
21
+ const styles = stylesRepository.all().reverse();
22
22
 
23
- abortController = new AbortController();
23
+ if ( abortController ) {
24
+ abortController.abort();
25
+ }
24
26
 
25
- styleContainer.innerHTML = await render( {
26
- transformers,
27
- styles,
28
- breakpoints,
29
- selectorPrefix: SELECTOR_PREFIX,
30
- signal: abortController.signal,
31
- } );
27
+ abortController = new AbortController();
28
+
29
+ styleContainer.innerHTML = await render( {
30
+ transformers,
31
+ styles,
32
+ breakpoints,
33
+ selectorPrefix: SELECTOR_PREFIX,
34
+ signal: abortController.signal,
35
+ } );
32
36
 
33
- enqueueUsedFonts( styles );
37
+ enqueueUsedFonts( styles );
38
+ } );
34
39
  } );
35
40
  }
36
41