@elementor/editor-canvas 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.24.0 build
2
+ > @elementor/editor-canvas@0.25.0 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 43.76 KB
14
- ESM dist/index.mjs.map 92.89 KB
15
- ESM ⚡️ Build success in 255ms
16
- CJS dist/index.js 47.11 KB
17
- CJS dist/index.js.map 93.12 KB
18
- CJS ⚡️ Build success in 263ms
13
+ ESM dist/index.mjs 44.37 KB
14
+ ESM dist/index.mjs.map 94.30 KB
15
+ ESM ⚡️ Build success in 245ms
16
+ CJS dist/index.js 47.71 KB
17
+ CJS dist/index.js.map 94.53 KB
18
+ CJS ⚡️ Build success in 247ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 21418ms
20
+ DTS ⚡️ Build success in 20606ms
21
21
  DTS dist/index.d.mts 2.42 KB
22
22
  DTS dist/index.d.ts 2.42 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.25.0
4
+
5
+ ### Minor Changes
6
+
7
+ - ab6ad10: Adds support for css filter property, blur and brightness only.
8
+ - c694e33: updated overlay styling for small elements
9
+ changed default tab for editing panel for divider widget
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies [e953081]
14
+ - Updated dependencies [ab6ad10]
15
+ - Updated dependencies [ea388a1]
16
+ - Updated dependencies [16df763]
17
+ - @elementor/utils@0.5.0
18
+ - @elementor/editor-props@0.15.0
19
+ - @elementor/editor-elements@0.8.7
20
+ - @elementor/editor-styles-repository@0.10.4
21
+ - @elementor/editor-v1-adapters@0.12.1
22
+ - @elementor/wp-media@0.6.1
23
+ - @elementor/editor-styles@0.6.11
24
+ - @elementor/editor@0.20.1
25
+ - @elementor/editor-responsive@0.13.6
26
+ - @elementor/editor-notifications@1.3.1
27
+
3
28
  ## 0.24.0
4
29
 
5
30
  ### Minor Changes
package/dist/index.js CHANGED
@@ -126,15 +126,18 @@ function useFloatingOnElement({ element, isSelected }) {
126
126
 
127
127
  // src/components/element-overlay.tsx
128
128
  var CANVAS_WRAPPER_ID = "elementor-preview-responsive-wrapper";
129
- var OverlayBox = (0, import_ui.styled)(import_ui.Box, { shouldForwardProp: (prop) => prop !== "isSelected" })(({ theme, isSelected }) => ({
129
+ var OverlayBox = (0, import_ui.styled)(import_ui.Box, {
130
+ shouldForwardProp: (prop) => prop !== "isSelected" && prop !== "isSmallerOffset"
131
+ })(({ theme, isSelected, isSmallerOffset }) => ({
130
132
  outline: `${isSelected ? "2px" : "1px"} solid ${theme.palette.primary.light}`,
131
- outlineOffset: isSelected ? "-2px" : "-1px",
133
+ outlineOffset: isSelected && !isSmallerOffset ? "-2px" : "-1px",
132
134
  pointerEvents: "none"
133
135
  }));
134
136
  function ElementOverlay({ element, isSelected, id }) {
135
137
  const { context, floating, isVisible } = useFloatingOnElement({ element, isSelected });
136
138
  const { getFloatingProps, getReferenceProps } = (0, import_react4.useInteractions)([(0, import_react4.useHover)(context)]);
137
139
  useBindReactPropsToElement(element, getReferenceProps);
140
+ const isSmallerOffset = element.offsetHeight <= 1;
138
141
  return isVisible && /* @__PURE__ */ React.createElement(import_react4.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React.createElement(
139
142
  OverlayBox,
140
143
  {
@@ -143,6 +146,7 @@ function ElementOverlay({ element, isSelected, id }) {
143
146
  style: floating.styles,
144
147
  "data-element-overlay": id,
145
148
  role: "presentation",
149
+ isSmallerOffset,
146
150
  ...getFloatingProps()
147
151
  }
148
152
  ));
@@ -773,6 +777,23 @@ var createMultiPropsTransformer = (keys, keyGenerator) => {
773
777
  });
774
778
  };
775
779
 
780
+ // src/transformers/styles/filter-transformer.ts
781
+ var filterTransformer = createTransformer((filterValues) => {
782
+ if (filterValues?.length < 1) {
783
+ return null;
784
+ }
785
+ return filterValues.map(mapToFilterFunctionString).join(" ");
786
+ });
787
+ var mapToFilterFunctionString = (value) => {
788
+ if ("radius" in value) {
789
+ return `blur(${value.radius})`;
790
+ }
791
+ if ("amount" in value) {
792
+ return `brightness(${value.amount})`;
793
+ }
794
+ return "";
795
+ };
796
+
776
797
  // src/transformers/styles/position-transformer.ts
777
798
  var positionTransformer = createTransformer(({ x, y }) => `${x ?? "0px"} ${y ?? "0px"}`);
778
799
 
@@ -804,7 +825,7 @@ function initStyleTransformers() {
804
825
  ["block-start", "block-end", "inline-start", "inline-end"],
805
826
  ({ propKey, key }) => `${propKey}-${key}`
806
827
  )
807
- ).register("box-shadow", createCombineArrayTransformer(",")).register("background", backgroundTransformer).register("background-overlay", backgroundOverlayTransformer).register("background-color-overlay", backgroundColorOverlayTransformer).register("background-image-overlay", backgroundImageOverlayTransformer).register("background-gradient-overlay", backgroundGradientOverlayTransformer).register("gradient-color-stop", createCombineArrayTransformer(",")).register("color-stop", colorStopTransformer).register("background-image-position-offset", positionTransformer).register("background-image-size-scale", backgroundImageSizeScaleTransformer).register("image-src", imageSrcTransformer).register("image", imageTransformer).register("object-position", positionTransformer).register(
828
+ ).register("filter", filterTransformer).register("box-shadow", createCombineArrayTransformer(",")).register("background", backgroundTransformer).register("background-overlay", backgroundOverlayTransformer).register("background-color-overlay", backgroundColorOverlayTransformer).register("background-image-overlay", backgroundImageOverlayTransformer).register("background-gradient-overlay", backgroundGradientOverlayTransformer).register("gradient-color-stop", createCombineArrayTransformer(",")).register("color-stop", colorStopTransformer).register("background-image-position-offset", positionTransformer).register("background-image-size-scale", backgroundImageSizeScaleTransformer).register("image-src", imageSrcTransformer).register("image", imageTransformer).register("object-position", positionTransformer).register(
808
829
  "layout-direction",
809
830
  createMultiPropsTransformer(["row", "column"], ({ propKey, key }) => `${key}-${propKey}`)
810
831
  ).register(
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/components/style-renderer.tsx","../src/hooks/use-documents-css-links.ts","../src/sync/get-canvas-iframe-document.ts","../src/hooks/use-style-items.ts","../src/utils/abort-previous-runs.ts","../src/utils/signalized-process.ts","../src/hooks/use-on-mount.ts","../src/hooks/use-style-prop-resolver.ts","../src/renderers/create-props-resolver.ts","../src/renderers/multi-props.ts","../src/transformers/create-transformers-registry.ts","../src/style-transformers-registry.ts","../src/sync/enqueue-font.ts","../src/hooks/use-style-renderer.ts","../src/renderers/errors.ts","../src/renderers/create-styles-renderer.ts","../src/settings-transformers-registry.ts","../src/transformers/settings/classes-transformer.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-overlay-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/position-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/legacy/init-legacy-views.ts","../src/renderers/create-dom-renderer.ts","../src/legacy/create-element-type.ts","../src/legacy/create-templated-element-type.ts","../src/prevent-link-in-link-commands.ts","../src/style-commands/paste-style.ts","../src/style-commands/undoable-actions/paste-element-style.ts","../src/style-commands/utils.ts","../src/style-commands/reset-style.ts","../src/style-commands/undoable-actions/reset-element-style.ts","../src/style-commands/init-style-commands.ts"],"sourcesContent":["export { init } from './init';\n\nexport { styleTransformersRegistry } from './style-transformers-registry';\nexport { settingsTransformersRegistry } from './settings-transformers-registry';\nexport { createTransformer } from './transformers/create-transformer';\nexport { createTransformersRegistry } from './transformers/create-transformers-registry';\nexport { createPropsResolver, type PropsResolver } from './renderers/create-props-resolver';\n","import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { StyleRenderer } from './components/style-renderer';\nimport { initSettingsTransformers } from './init-settings-transformers';\nimport { initStyleTransformers } from './init-style-transformers';\nimport { initLegacyViews } from './legacy/init-legacy-views';\nimport { initLinkInLinkPrevention } from './prevent-link-in-link-commands';\nimport { initStyleCommands } from './style-commands/init-style-commands';\n\nexport function init() {\n\tinitStyleTransformers();\n\tinitStyleCommands();\n\n\tinitLinkInLinkPrevention();\n\n\tinitLegacyViews();\n\n\tinitSettingsTransformers();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'canvas-style-render',\n\t\tcomponent: StyleRenderer,\n\t} );\n}\n","import * as React from 'react';\nimport { getElements, useSelectedElement } from '@elementor/editor-elements';\nimport {\n\t__privateUseIsRouteActive as useIsRouteActive,\n\t__privateUseListenTo as useListenTo,\n\tuseEditMode,\n\twindowEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst elements = useElementsDom();\n\tconst currentEditMode = useEditMode();\n\n\tconst isEditMode = currentEditMode === 'edit';\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = isEditMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\telements.map( ( [ id, element ] ) => (\n\t\t\t<ElementOverlay key={ id } id={ id } element={ element } isSelected={ selected.element?.id === id } />\n\t\t) )\n\t);\n}\n\nconst ELEMENTS_DATA_ATTR = 'atomic';\n\ntype IdElementTuple = [ string, HTMLElement ];\n\nfunction useElementsDom() {\n\treturn useListenTo(\n\t\t[ windowEvent( 'elementor/editor/element-rendered' ), windowEvent( 'elementor/editor/element-destroyed' ) ],\n\t\t() => {\n\t\t\treturn getElements()\n\t\t\t\t.filter( ( el ) => ELEMENTS_DATA_ATTR in ( el.view?.el?.dataset ?? {} ) )\n\t\t\t\t.map( ( element ) => [ element.id, element.view?.getDomElement?.()?.get?.( 0 ) ] )\n\t\t\t\t.filter( ( item ): item is IdElementTuple => !! item[ 1 ] );\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n\tid: string;\n};\n\nconst OverlayBox = styled( Box, { shouldForwardProp: ( prop ) => prop !== 'isSelected' } )<\n\tPick< Props, 'isSelected' >\n>( ( { theme, isSelected } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected, id }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useEffect, useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\twhileElementsMounted: autoUpdate,\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width + 2 }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height + 2 }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\tuseEffect( () => {\n\t\t// Update the reference manually because Floating UI does not recalculate\n\t\t// the reference element when it is being used in `option.elements.reference`.\n\t\t// @link https://github.com/floating-ui/floating-ui/blob/master/packages/react/src/hooks/useFloatingRootContext.ts\n\t\trefs.setReference( element );\n\t}, [ element, refs ] );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import * as React from 'react';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { Portal } from '@elementor/ui';\n\nimport { useDocumentsCssLinks } from '../hooks/use-documents-css-links';\nimport { useStyleItems } from '../hooks/use-style-items';\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\n\nexport function StyleRenderer() {\n\tconst container = usePortalContainer();\n\n\tconst styleItems = useStyleItems();\n\tconst linksAttrs = useDocumentsCssLinks();\n\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Portal container={ container }>\n\t\t\t{ styleItems.map( ( item ) => (\n\t\t\t\t<style data-e-style-id={ item.id } key={ item.id }>\n\t\t\t\t\t{ item.value }\n\t\t\t\t</style>\n\t\t\t) ) }\n\t\t\t{ linksAttrs.map( ( attrs ) => (\n\t\t\t\t<link { ...attrs } key={ attrs.id } />\n\t\t\t) ) }\n\t\t</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument()?.head );\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\n\nconst REMOVED_ATTR = 'data-e-removed';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\nconst CSS_LINK_ID_PREFIX = 'elementor-post-';\nconst CSS_LINK_ID_SUFFIX = '-css';\n\nexport function useDocumentsCssLinks() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => {\n\t\tconst iframeDocument = getCanvasIframeDocument();\n\n\t\tif ( ! iframeDocument ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst relevantLinkIds = getDocumentsIdsInCanvas( iframeDocument ).map(\n\t\t\t( id ) => `${ CSS_LINK_ID_PREFIX }${ id }${ CSS_LINK_ID_SUFFIX }`\n\t\t);\n\n\t\tconst links = getDocumentsCssLinks( iframeDocument ).filter( ( link ) =>\n\t\t\trelevantLinkIds.includes( link.getAttribute( 'id' ) ?? '' )\n\t\t);\n\n\t\tlinks.forEach( ( link ) => {\n\t\t\tif ( ! link.hasAttribute( REMOVED_ATTR ) ) {\n\t\t\t\tlink.remove();\n\t\t\t}\n\t\t} );\n\n\t\treturn links.map( ( link ) => ( {\n\t\t\t...getLinkAttrs( link ),\n\t\t\tid: link.getAttribute( 'id' ) ?? '',\n\t\t\t[ REMOVED_ATTR ]: true,\n\t\t} ) );\n\t} );\n}\n\nfunction getDocumentsIdsInCanvas( document: Document ) {\n\treturn [ ...( document.body.querySelectorAll< HTMLElement >( `[${ DOCUMENT_WRAPPER_ATTR }]` ) ?? [] ) ].map(\n\t\t( el ) => el.getAttribute( DOCUMENT_WRAPPER_ATTR ) || ''\n\t);\n}\n\nfunction getDocumentsCssLinks( document: Document ) {\n\treturn [\n\t\t...( document.head.querySelectorAll< HTMLLinkElement >(\n\t\t\t`link[rel=\"stylesheet\"][id^=${ CSS_LINK_ID_PREFIX }][id$=${ CSS_LINK_ID_SUFFIX }]`\n\t\t) ?? [] ),\n\t];\n}\n\nfunction getLinkAttrs( el: HTMLLinkElement ) {\n\tconst entries = [ ...el.attributes ].map( ( attr ) => [ attr.name, attr.value ] as const );\n\n\treturn Object.fromEntries( entries );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeDocument() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument;\n}\n","import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from 'react';\nimport { type StylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\n\nimport { type StyleItem, type StyleRenderer } from '../renderers/create-styles-renderer';\nimport { abortPreviousRuns } from '../utils/abort-previous-runs';\nimport { signalizedProcess } from '../utils/signalized-process';\nimport { useOnMount } from './use-on-mount';\nimport { useStylePropResolver } from './use-style-prop-resolver';\nimport { useStyleRenderer } from './use-style-renderer';\n\ntype ProviderAndStyleItems = { provider: StylesProvider; items: StyleItem[] };\n\ntype ProviderAndSubscriber = { provider: StylesProvider; subscriber: () => Promise< void > };\n\ntype ProviderAndStyleItemsMap = Record< string, ProviderAndStyleItems >;\n\nexport function useStyleItems() {\n\tconst resolve = useStylePropResolver();\n\tconst renderStyles = useStyleRenderer( resolve );\n\n\tconst [ styleItems, setStyleItems ] = useState< ProviderAndStyleItemsMap >( {} );\n\n\tconst providerAndSubscribers = useMemo( () => {\n\t\treturn stylesRepository.getProviders().map( ( provider ): ProviderAndSubscriber => {\n\t\t\treturn {\n\t\t\t\tprovider,\n\t\t\t\tsubscriber: createProviderSubscriber( {\n\t\t\t\t\tprovider,\n\t\t\t\t\trenderStyles,\n\t\t\t\t\tsetStyleItems,\n\t\t\t\t} ),\n\t\t\t};\n\t\t} );\n\t}, [ renderStyles ] );\n\n\tuseEffect( () => {\n\t\tconst unsubscribes = providerAndSubscribers.map( ( { provider, subscriber } ) =>\n\t\t\tprovider.subscribe( subscriber )\n\t\t);\n\n\t\treturn () => {\n\t\t\tunsubscribes.forEach( ( unsubscribe ) => unsubscribe() );\n\t\t};\n\t}, [ providerAndSubscribers ] );\n\n\tuseOnMount( () => {\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tconst promises = providerAndSubscribers.map( async ( { subscriber } ) => subscriber() );\n\n\t\t\tawait Promise.all( promises );\n\t\t} );\n\t} );\n\n\treturn Object.values( styleItems )\n\t\t.sort( ( { provider: providerA }, { provider: providerB } ) => providerA.priority - providerB.priority )\n\t\t.flatMap( ( { items } ) => items );\n}\n\ntype CreateProviderSubscriberArgs = {\n\tprovider: StylesProvider;\n\trenderStyles: StyleRenderer;\n\tsetStyleItems: Dispatch< SetStateAction< ProviderAndStyleItemsMap > >;\n};\n\nfunction createProviderSubscriber( { provider, renderStyles, setStyleItems }: CreateProviderSubscriberArgs ) {\n\treturn abortPreviousRuns( ( abortController ) =>\n\t\tsignalizedProcess( abortController.signal )\n\t\t\t.then( ( _, signal ) => {\n\t\t\t\tconst styles = provider.actions.all().map( ( __, index, items ) => {\n\t\t\t\t\tconst lastPosition = items.length - 1;\n\n\t\t\t\t\tconst style = items[ lastPosition - index ];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tcssName: provider.actions.resolveCssName( style.id ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\treturn renderStyles( { styles, signal } );\n\t\t\t} )\n\t\t\t.then( ( items ) => {\n\t\t\t\tsetStyleItems( ( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ provider.getKey() ]: { provider, items },\n\t\t\t\t} ) );\n\t\t\t} )\n\t\t\t.execute()\n\t);\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function abortPreviousRuns< TArgs extends any[], TReturn >(\n\tcb: ( abortController: AbortController, ...args: TArgs ) => TReturn\n): ( ...args: TArgs ) => TReturn {\n\tlet abortController: AbortController | null = null;\n\n\treturn ( ...args: TArgs ) => {\n\t\tif ( abortController ) {\n\t\t\tabortController.abort();\n\t\t}\n\n\t\tabortController = new AbortController();\n\n\t\treturn cb( abortController, ...args );\n\t};\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyFn = ( ...args: any[] ) => any;\n\ntype SignalizedProcess< TNextArg = never > = {\n\tthen: < TReturn >(\n\t\tcb: ( arg: TNextArg, signal: AbortSignal ) => TReturn\n\t) => SignalizedProcess< Awaited< TReturn > >;\n\n\texecute: () => Promise< void >;\n};\n\nexport function signalizedProcess< TNextArg = never >(\n\tsignal: AbortSignal,\n\tsteps: AnyFn[] = []\n): SignalizedProcess< TNextArg > {\n\treturn {\n\t\tthen: ( cb ) => {\n\t\t\tsteps.push( cb );\n\n\t\t\treturn signalizedProcess( signal, steps );\n\t\t},\n\n\t\texecute: async () => {\n\t\t\tlet lastResult: TNextArg | undefined;\n\n\t\t\tfor ( const step of steps ) {\n\t\t\t\tif ( signal.aborted ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastResult = await step( lastResult, signal );\n\t\t\t}\n\t\t},\n\t};\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useOnMount( cb: () => void ) {\n\tconst mounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( ! mounted.current ) {\n\t\t\tmounted.current = true;\n\n\t\t\tcb();\n\t\t}\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import { useMemo } from 'react';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { createPropsResolver } from '../renderers/create-props-resolver';\nimport { styleTransformersRegistry } from '../style-transformers-registry';\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport function useStylePropResolver() {\n\treturn useMemo( () => {\n\t\treturn createPropsResolver( {\n\t\t\ttransformers: styleTransformersRegistry,\n\t\t\tschema: getStylesSchema(),\n\t\t\tonPropResolve: ( { key, value } ) => {\n\t\t\t\tif ( key !== 'font-family' || typeof value !== 'string' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tenqueueFont( value );\n\t\t\t},\n\t\t} );\n\t}, [] );\n}\n","import {\n\tisTransformable,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { type TransformersRegistry } from '../transformers/create-transformers-registry';\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\n\ntype CreatePropResolverArgs = {\n\ttransformers: TransformersRegistry;\n\tschema: PropsSchema;\n\tonPropResolve?: ( args: { key: string; value: unknown } ) => void;\n};\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema?: PropsSchema;\n\tsignal?: AbortSignal;\n};\n\ntype TransformArgs = {\n\tvalue: unknown;\n\tkey: PropKey;\n\ttype: PropType;\n\tsignal?: AbortSignal;\n\tdepth?: number;\n};\n\ntype ResolvedProps = Record< string, unknown >;\n\nexport type PropsResolver = ReturnType< typeof createPropsResolver >;\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\nexport function createPropsResolver( { transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs ) {\n\tasync function resolve( { props, schema, signal }: ResolveArgs ): Promise< ResolvedProps > {\n\t\tschema = schema ?? initialSchema;\n\n\t\tconst promises = Promise.all(\n\t\t\tObject.entries( schema ).map( async ( [ key, type ] ) => {\n\t\t\t\tconst value = props[ key ] ?? type.default;\n\n\t\t\t\tconst transformed = await transform( { value, key, type, signal } );\n\n\t\t\t\tonPropResolve?.( { key, value: transformed } );\n\n\t\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t\t}\n\n\t\t\t\treturn { [ key ]: transformed };\n\t\t\t} )\n\t\t);\n\n\t\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n\t}\n\n\tasync function transform( { value, key, type, signal, depth = 0 }: TransformArgs ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ! isTransformable( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( value.disabled === true ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( type.kind === 'union' ) {\n\t\t\ttype = type.prop_types[ value.$$type ];\n\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif ( value.$$type !== type.key ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Warning: This variable is loosely-typed - use with caution.\n\t\tlet resolvedValue = value.value;\n\n\t\tif ( type.kind === 'object' ) {\n\t\t\tresolvedValue = await resolve( {\n\t\t\t\tprops: resolvedValue,\n\t\t\t\tschema: type.shape,\n\t\t\t\tsignal,\n\t\t\t} );\n\t\t}\n\n\t\tif ( type.kind === 'array' ) {\n\t\t\tresolvedValue = await Promise.all(\n\t\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\t\ttransform( { value: item, key, type: type.item_prop_type, depth, signal } )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tconst transformer = transformers.get( value.$$type );\n\n\t\tif ( ! transformer ) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst transformed = await transformer( resolvedValue, { key, signal } );\n\n\t\t\treturn transform( { value: transformed, key, type, signal, depth: depth + 1 } );\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn resolve;\n}\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\ntype MultiProps = {\n\t'$$multi-props': true;\n\tvalue: Props;\n};\n\nexport const isMultiProps = ( propValue: PropValue ): propValue is MultiProps => {\n\treturn (\n\t\t!! propValue &&\n\t\ttypeof propValue === 'object' &&\n\t\t'$$multi-props' in propValue &&\n\t\tpropValue[ '$$multi-props' ] === true\n\t);\n};\n\nexport const createMultiPropsValue = ( props: Props ): MultiProps => {\n\treturn {\n\t\t'$$multi-props': true,\n\t\tvalue: props,\n\t};\n};\n\nexport const getMultiPropsValue = ( multiProps: MultiProps ): Props => {\n\treturn multiProps.value;\n};\n","import { type PropTypeKey } from '@elementor/editor-props';\n\nimport { type AnyTransformer, type TransformersMap } from './types';\n\nexport type TransformersRegistry = ReturnType< typeof createTransformersRegistry >;\n\nexport function createTransformersRegistry() {\n\tconst transformers: TransformersMap = {};\n\n\tlet fallbackTransformer: AnyTransformer | null = null;\n\n\treturn {\n\t\tregister( type: PropTypeKey, transformer: AnyTransformer ) {\n\t\t\ttransformers[ type ] = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tregisterFallback( transformer: AnyTransformer ) {\n\t\t\tfallbackTransformer = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tget( type: PropTypeKey ): AnyTransformer | null {\n\t\t\treturn transformers[ type ] ?? fallbackTransformer;\n\t\t},\n\t\tall() {\n\t\t\treturn { ...transformers };\n\t\t},\n\t};\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const styleTransformersRegistry = createTransformersRegistry();\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 { useMemo } from 'react';\nimport { useBreakpointsMap } from '@elementor/editor-responsive';\n\nimport { type PropsResolver } from '../renderers/create-props-resolver';\nimport { createStylesRenderer } from '../renderers/create-styles-renderer';\n\nconst SELECTOR_PREFIX = '.elementor';\n\nexport function useStyleRenderer( resolve: PropsResolver ) {\n\tconst breakpoints = useBreakpointsMap();\n\n\treturn useMemo( () => {\n\t\treturn createStylesRenderer( {\n\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\tbreakpoints,\n\t\t\tresolve,\n\t\t} );\n\t}, [ resolve, breakpoints ] );\n}\n","import { createError } from '@elementor/utils';\n\nexport const UnknownStyleTypeError = createError< { type: string } >( {\n\tcode: 'unknown_style_type',\n\tmessage: 'Unknown style type',\n} );\n","import type { Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleDefinitionState, type StyleDefinitionType } from '@elementor/editor-styles';\n\nimport { type PropsResolver } from './create-props-resolver';\nimport { UnknownStyleTypeError } from './errors';\n\nexport type StyleItem = {\n\tid: string;\n\tvalue: string;\n};\n\nexport type StyleRenderer = ReturnType< typeof createStylesRenderer >;\n\ntype CreateStyleRendererArgs = {\n\tresolve: PropsResolver;\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n};\n\nexport type RendererStyleDefinition = StyleDefinition & {\n\tcssName: string;\n};\n\ntype StyleRendererArgs = {\n\tstyles: RendererStyleDefinition[];\n\tsignal?: AbortSignal;\n};\n\ntype PropsToCssArgs = {\n\tprops: Props;\n\tresolve: PropsResolver;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport function createStylesRenderer( { resolve, breakpoints, selectorPrefix = '' }: CreateStyleRendererArgs ) {\n\treturn async ( { styles, signal }: StyleRendererArgs ): Promise< StyleItem[] > => {\n\t\tconst stylesCssPromises = styles.map( async ( style ) => {\n\t\t\tconst variantCssPromises = Object.values( style.variants ).map( async ( variant ) => {\n\t\t\t\tconst css = await propsToCss( { props: variant.props, resolve, signal } );\n\n\t\t\t\treturn createStyleWrapper()\n\t\t\t\t\t.for( style.cssName, style.type )\n\t\t\t\t\t.withPrefix( selectorPrefix )\n\t\t\t\t\t.withState( variant.meta.state )\n\t\t\t\t\t.withMediaQuery( variant.meta.breakpoint ? breakpoints[ variant.meta.breakpoint ] : null )\n\t\t\t\t\t.wrap( css );\n\t\t\t} );\n\n\t\t\tconst variantsCss = await Promise.all( variantCssPromises );\n\n\t\t\treturn {\n\t\t\t\tid: style.id,\n\t\t\t\tvalue: variantsCss.join( '' ),\n\t\t\t};\n\t\t} );\n\n\t\treturn await Promise.all( stylesCssPromises );\n\t};\n}\n\nfunction createStyleWrapper( value: string = '', wrapper?: ( css: string ) => string ) {\n\treturn {\n\t\tfor: ( cssName: RendererStyleDefinition[ 'cssName' ], type: RendererStyleDefinition[ 'type' ] ) => {\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 }${ cssName }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tif ( propValue === null ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { createTransformer } from '../create-transformer';\n\nexport function createClassesTransformer() {\n\tconst cache = new Map< string, string >();\n\n\treturn createTransformer( ( value: string[] ) => {\n\t\treturn value\n\t\t\t.map( ( id ) => {\n\t\t\t\tif ( ! cache.has( id ) ) {\n\t\t\t\t\tcache.set( id, getCssName( id ) );\n\t\t\t\t}\n\n\t\t\t\treturn cache.get( id );\n\t\t\t} )\n\t\t\t.filter( Boolean );\n\t} );\n}\n\nfunction getCssName( id: string ) {\n\tconst provider = stylesRepository.getProviders().find( ( p ) => {\n\t\treturn p.actions.all().find( ( style ) => style.id === id );\n\t} );\n\n\tif ( ! provider ) {\n\t\treturn id;\n\t}\n\n\treturn provider.actions.resolveCssName( id );\n}\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { createClassesTransformer } from './transformers/settings/classes-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'classes', createClassesTransformer() )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.registerFallback( plainTransformer );\n}\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport type BackgroundImageTransformed = {\n\tsrc: string | null;\n\trepeat: string | null;\n\tattachment: string | null;\n\tsize: string | null;\n\tposition: string | null;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles: BackgroundImageTransformed = {\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize,\n\t\tposition,\n\t};\n\n\treturn backgroundStyles;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width, height }: BackgroundImageSizeScale ) => `${ width ?? 'auto' } ${ height ?? 'auto' }`\n);\n","import { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nimport { createTransformer } from '../create-transformer';\nimport { type BackgroundImageTransformed } from './background-image-overlay-transformer';\n\ntype BackgroundOverlay = ( BackgroundImageTransformed | string )[];\n\nexport type BackgroundOverlayTransformed = {\n\t'background-image'?: string | null;\n\t'background-repeat'?: string | null;\n\t'background-attachment'?: string | null;\n\t'background-size'?: string | null;\n\t'background-position'?: string | null;\n};\n\nexport const backgroundOverlayTransformer = createTransformer(\n\t( value: BackgroundOverlay ): BackgroundOverlayTransformed | null => {\n\t\tif ( ! value || value.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedValues = normalizeOverlayValues( value );\n\n\t\tif ( normalizedValues.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst images = getValuesString( normalizedValues, 'src', 'none', true );\n\t\tconst repeats = getValuesString( normalizedValues, 'repeat', 'repeat' );\n\t\tconst attachments = getValuesString( normalizedValues, 'attachment', 'scroll' );\n\t\tconst sizes = getValuesString( normalizedValues, 'size', 'auto auto' );\n\t\tconst positions = getValuesString( normalizedValues, 'position', '0% 0%' );\n\n\t\treturn {\n\t\t\t'background-image': images,\n\t\t\t'background-repeat': repeats,\n\t\t\t'background-attachment': attachments,\n\t\t\t'background-size': sizes,\n\t\t\t'background-position': positions,\n\t\t};\n\t}\n);\n\nfunction normalizeOverlayValues( overlays: BackgroundOverlay ): BackgroundImageTransformed[] {\n\tconst isVersion330Active = isExperimentActive( 'e_v_3_30' );\n\n\tconst mappedValues = overlays.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn {\n\t\t\t\tsrc: item,\n\t\t\t\trepeat: null,\n\t\t\t\tattachment: null,\n\t\t\t\tsize: null,\n\t\t\t\tposition: null,\n\t\t\t};\n\t\t}\n\n\t\treturn item;\n\t} );\n\n\tif ( ! isVersion330Active ) {\n\t\treturn mappedValues;\n\t}\n\n\treturn mappedValues.filter( ( item ) => item && !! item.src );\n}\n\nfunction getValuesString(\n\titems: Partial< BackgroundImageTransformed >[],\n\tprop: keyof BackgroundImageTransformed,\n\tdefaultValue: string,\n\tpreventUnification: boolean = false\n) {\n\tconst isVersion330Active = isExperimentActive( 'e_v_3_30' );\n\tconst isEmpty = items.filter( ( item ) => item?.[ prop ] ).length === 0;\n\n\tif ( isEmpty ) {\n\t\treturn isVersion330Active ? defaultValue : null;\n\t}\n\n\tconst formattedValues = items.map( ( item ) => item[ prop ] ?? defaultValue );\n\n\tif ( ! preventUnification ) {\n\t\tconst allSame = formattedValues.every( ( value ) => value === formattedValues[ 0 ] );\n\n\t\tif ( allSame ) {\n\t\t\treturn formattedValues[ 0 ];\n\t\t}\n\t}\n\n\treturn formattedValues.join( ',' );\n}\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\nimport { type BackgroundOverlayTransformed } from './background-overlay-transformer';\n\ntype Background = {\n\t'background-overlay'?: BackgroundOverlayTransformed;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst { color = null, 'background-overlay': overlays = null } = value;\n\n\treturn createMultiPropsValue( {\n\t\t...overlays,\n\t\t'background-color': color,\n\t} );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Position = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const positionTransformer = createTransformer( ( { x, y }: Position ) => `${ x ?? '0px' } ${ y ?? '0px' }` );\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn value.unit === 'custom' ? value.size : `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundOverlayTransformer } from './transformers/styles/background-overlay-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { positionTransformer } from './transformers/styles/position-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', backgroundOverlayTransformer )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', positionTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'object-position', positionTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t)\n\t\t.registerFallback( plainTransformer );\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\nimport { __privateListenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createDomRenderer } from '../renderers/create-dom-renderer';\nimport { createElementType } from './create-element-type';\nimport { canBeTemplated, createTemplatedElementType } from './create-templated-element-type';\nimport type { LegacyWindow } from './types';\n\nexport function initLegacyViews() {\n\t__privateListenTo( v1ReadyEvent(), () => {\n\t\tconst config = getWidgetsCache() ?? {};\n\t\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\t\tconst renderer = createDomRenderer();\n\n\t\tObject.entries( config ).forEach( ( [ type, element ] ) => {\n\t\t\tif ( ! element.atomic ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ElementType = canBeTemplated( element )\n\t\t\t\t? createTemplatedElementType( { type, renderer, element } )\n\t\t\t\t: createElementType( type );\n\n\t\t\tlegacyWindow.elementor.elementsManager.registerElementType( new ElementType() );\n\t\t} );\n\t} );\n}\n","import { createArrayLoader, createEnvironment, type TwingArrayLoader, type TwingEnvironment } from '@elementor/twing';\n\nexport type DomRenderer = {\n\tregister: TwingArrayLoader[ 'setTemplate' ];\n\trender: TwingEnvironment[ 'render' ];\n};\n\nexport function createDomRenderer(): DomRenderer {\n\tconst loader = createArrayLoader( {} );\n\tconst environment = createEnvironment( loader );\n\n\tenvironment.registerEscapingStrategy( escapeHtmlTag, 'html_tag' );\n\tenvironment.registerEscapingStrategy( escapeURL, 'full_url' );\n\n\treturn {\n\t\tregister: loader.setTemplate,\n\t\trender: environment.render,\n\t};\n}\n\nfunction escapeHtmlTag( value: string ) {\n\tconst allowedTags = [\n\t\t'a',\n\t\t'article',\n\t\t'aside',\n\t\t'button',\n\t\t'div',\n\t\t'footer',\n\t\t'h1',\n\t\t'h2',\n\t\t'h3',\n\t\t'h4',\n\t\t'h5',\n\t\t'h6',\n\t\t'header',\n\t\t'main',\n\t\t'nav',\n\t\t'p',\n\t\t'section',\n\t\t'span',\n\t];\n\n\treturn allowedTags.includes( value ) ? value : 'div';\n}\n\nfunction escapeURL( value: string ) {\n\tconst allowedProtocols = [ 'http:', 'https:', 'mailto:', 'tel:' ];\n\n\ttry {\n\t\tconst parsed = new URL( value );\n\n\t\treturn allowedProtocols.includes( parsed.protocol ) ? value : '';\n\t} catch {\n\t\treturn '';\n\t}\n}\n","import { type ElementType, type ElementView, type LegacyWindow } from './types';\n\n// Technically it shouldn't have a return type annotation, but for some\n// reason TypeScript can't infer the types properly when emitting DTS.\n//\n// See: https://github.com/microsoft/TypeScript/issues/9944#issuecomment-244448079\nexport function createElementType( type: string ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createElementViewClassDeclaration();\n\t\t}\n\t};\n}\n\nexport function createElementViewClassDeclaration(): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.views.Widget {\n\t\t// Dispatch `render` event so the overlay layer will be updated\n\t\tonRender( ...args: unknown[] ) {\n\t\t\tsuper.onRender( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/render' );\n\t\t\tthis.#dispatchPreviewEvent( 'elementor/element/render' );\n\t\t}\n\n\t\t// Dispatch `destroy` event so the overlay layer will be updated\n\t\tonDestroy( ...args: unknown[] ) {\n\t\t\tsuper.onDestroy( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/destroy' );\n\t\t\tthis.#dispatchPreviewEvent( 'elementor/element/destroy' );\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\n\t\t\t\t// Mark the widget as atomic, so external APIs (such as the overlay layer) can reference it.\n\t\t\t\t'data-atomic': '',\n\n\t\t\t\t// Make the wrapper is non-existent in terms of CSS to mimic the frontend DOM tree.\n\t\t\t\tstyle: 'display: contents !important;',\n\t\t\t};\n\t\t}\n\n\t\t// Removes behaviors that are not needed for atomic widgets (that are implemented in the overlay layer).\n\t\tbehaviors() {\n\t\t\tconst disabledBehaviors = [ 'InlineEditing', 'Draggable', 'Resizable' ];\n\n\t\t\tconst behaviorsAsEntries = Object.entries( super.behaviors() ).filter(\n\t\t\t\t( [ key ] ) => ! disabledBehaviors.includes( key )\n\t\t\t);\n\n\t\t\treturn Object.fromEntries( behaviorsAsEntries );\n\t\t}\n\n\t\t// Change the drag handle because the $el is not the draggable element (`display: contents`).\n\t\tgetDomElement() {\n\t\t\treturn this.$el.find( ':first-child' );\n\t\t}\n\n\t\t// Remove the overlay, so we can use the new overlay layer.\n\t\tgetHandlesOverlay() {\n\t\t\treturn null;\n\t\t}\n\n\t\t#dispatchEvent( eventType: string ) {\n\t\t\twindow.top?.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: { id: this.model.get( 'id' ) },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\t#dispatchPreviewEvent( eventType: string ) {\n\t\t\tlegacyWindow.elementor?.$preview?.[ 0 ]?.contentWindow.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tid: this.model.get( 'id' ),\n\t\t\t\t\t\ttype: this.model.get( 'widgetType' ),\n\t\t\t\t\t\telement: this.getDomElement().get( 0 ),\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\treturn super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t}\n\t};\n}\n","import type { V1ElementConfig } from '@elementor/editor-elements';\n\nimport { type DomRenderer } from '../renderers/create-dom-renderer';\nimport { createPropsResolver, type PropsResolver } from '../renderers/create-props-resolver';\nimport { settingsTransformersRegistry } from '../settings-transformers-registry';\nimport { signalizedProcess } from '../utils/signalized-process';\nimport { createElementViewClassDeclaration } from './create-element-type';\nimport { type ElementType, type ElementView, type LegacyWindow } from './types';\n\ntype CreateTypeOptions = {\n\ttype: string;\n\trenderer: DomRenderer;\n\telement: TemplatedElementConfig;\n};\n\ntype TemplatedElementConfig = Required<\n\tPick< V1ElementConfig, 'twig_templates' | 'twig_main_template' | 'atomic_props_schema' | 'base_styles_dictionary' >\n>;\n\nexport function createTemplatedElementType( { type, renderer, element }: CreateTypeOptions ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\tObject.entries( element.twig_templates ).forEach( ( [ key, template ] ) => {\n\t\trenderer.register( key, template );\n\t} );\n\n\tconst propsResolver = createPropsResolver( {\n\t\ttransformers: settingsTransformersRegistry,\n\t\tschema: element.atomic_props_schema,\n\t} );\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createTemplatedElementViewClassDeclaration( {\n\t\t\t\ttype,\n\t\t\t\trenderer,\n\t\t\t\tpropsResolver,\n\t\t\t\tbaseStylesDictionary: element.base_styles_dictionary,\n\t\t\t\ttemplateKey: element.twig_main_template,\n\t\t\t} );\n\t\t}\n\t};\n}\n\nexport function canBeTemplated( element: Partial< TemplatedElementConfig > ): element is TemplatedElementConfig {\n\treturn !! (\n\t\telement.atomic_props_schema &&\n\t\telement.twig_templates &&\n\t\telement.twig_main_template &&\n\t\telement.base_styles_dictionary\n\t);\n}\n\ntype CreateViewOptions = {\n\ttype: string;\n\trenderer: DomRenderer;\n\tpropsResolver: PropsResolver;\n\ttemplateKey: string;\n\tbaseStylesDictionary: Record< string, string >;\n};\n\nfunction createTemplatedElementViewClassDeclaration( {\n\ttype,\n\trenderer,\n\tpropsResolver: resolveProps,\n\ttemplateKey,\n\tbaseStylesDictionary,\n}: CreateViewOptions ): typeof ElementView {\n\tconst BaseView = createElementViewClassDeclaration();\n\n\treturn class extends BaseView {\n\t\t#abortController: AbortController | null = null;\n\n\t\tgetTemplateType() {\n\t\t\treturn 'twig';\n\t\t}\n\n\t\trenderOnChange() {\n\t\t\tthis.render();\n\t\t}\n\n\t\t// Overriding Marionette original render method to inject our renderer.\n\t\tasync _renderTemplate() {\n\t\t\tthis.#beforeRenderTemplate();\n\n\t\t\tthis.#abortController?.abort();\n\t\t\tthis.#abortController = new AbortController();\n\n\t\t\tconst process = signalizedProcess( this.#abortController.signal )\n\t\t\t\t.then( ( _, signal ) => {\n\t\t\t\t\tconst settings = this.model.get( 'settings' ).toJSON();\n\n\t\t\t\t\treturn resolveProps( {\n\t\t\t\t\t\tprops: settings,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.then( ( resolvedSettings ) => {\n\t\t\t\t\t// Same as the Backend.\n\t\t\t\t\tconst context = {\n\t\t\t\t\t\tid: this.model.get( 'id' ),\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tsettings: resolvedSettings,\n\t\t\t\t\t\tbase_styles: baseStylesDictionary,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn renderer.render( templateKey, context );\n\t\t\t\t} )\n\t\t\t\t.then( ( html ) => this.$el.html( html ) );\n\n\t\t\tawait process.execute();\n\n\t\t\tthis.#afterRenderTemplate();\n\t\t}\n\n\t\t// Emulating the original Marionette behavior.\n\t\t#beforeRenderTemplate() {\n\t\t\tthis.triggerMethod( 'before:render:template' );\n\t\t}\n\n\t\t#afterRenderTemplate() {\n\t\t\tthis.bindUIElements();\n\n\t\t\tthis.triggerMethod( 'render:template' );\n\t\t}\n\t};\n}\n","import {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tisElementAnchored,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { type ButtonProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type CanvasExtendedWindow } from './sync/types';\n\nexport function initLinkInLinkPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockLinkInLinkPaste,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockLinkInLinkMove,\n\t} );\n}\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\nexport type StorageContent = {\n\tclipboard?: {\n\t\telements?: { id?: string }[];\n\t};\n};\n\nconst learnMoreActionProps: Partial< ButtonProps > = {\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n\ttarget: '_blank',\n\tcolor: 'inherit',\n\tvariant: 'text',\n\tsx: {\n\t\tmarginInlineStart: '20px',\n\t},\n\tchildren: 'Learn more',\n};\n\nfunction blockLinkInLinkPaste( args: PasteArgs ): boolean {\n\tconst { containers = [ args.container ], storageType } = args;\n\tconst targetElements = containers;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = ( window as CanvasExtendedWindow )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst sourceElements = data.clipboard.elements;\n\n\tconst notification: NotificationData = {\n\t\ttype: 'default',\n\t\tmessage: __(\n\t\t\t\"To paste a link to this element, first remove the link from it's parent container.\",\n\t\t\t'elementor'\n\t\t),\n\t\tid: 'paste-in-link-blocked',\n\t\tadditionalActionProps: [ learnMoreActionProps ],\n\t};\n\n\tconst blocked = shouldBlock( sourceElements, targetElements );\n\n\tif ( blocked ) {\n\t\tnotify( notification );\n\t}\n\n\treturn blocked;\n}\n\nfunction blockLinkInLinkMove( args: MoveArgs ): boolean {\n\tconst { containers = [ args.container ], target } = args;\n\tconst sourceElements = containers;\n\tconst targetElement = target;\n\n\tconst notification: NotificationData = {\n\t\ttype: 'default',\n\t\tmessage: __( \"To drag a link to this element, first remove the link from it's parent container.\", 'elementor' ),\n\t\tid: 'move-in-link-blocked',\n\t\tadditionalActionProps: [ learnMoreActionProps ],\n\t};\n\n\tconst isBlocked = shouldBlock( sourceElements, [ targetElement ] );\n\n\tif ( isBlocked ) {\n\t\tnotify( notification );\n\t}\n\n\treturn isBlocked;\n}\n\nfunction shouldBlock(\n\tsourceElements?: ( { id?: string } | undefined )[],\n\ttargetElements?: ( V1Element | undefined )[]\n): boolean {\n\tif ( ! sourceElements?.length || ! targetElements?.length ) {\n\t\treturn false;\n\t}\n\n\tconst isSourceContainsAnAnchor = sourceElements.some( ( src ) => {\n\t\treturn src?.id ? isElementAnchored( src.id ) || !! getAnchoredDescendantId( src.id ) : false;\n\t} );\n\n\tif ( ! isSourceContainsAnAnchor ) {\n\t\treturn false;\n\t}\n\n\tconst isTargetContainsAnAnchor = targetElements.some( ( target ) => {\n\t\treturn target?.id ? isElementAnchored( target.id ) || !! getAnchoredAncestorId( target.id ) : false;\n\t} );\n\n\treturn isTargetContainsAnAnchor;\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoablePasteElementStyle } from './undoable-actions/paste-element-style';\nimport { type ContainerArgs, getClipboardElements, hasAtomicWidgets, isAtomicWidget } from './utils';\n\ntype PasteStylesCommandArgs = ContainerArgs & {\n\tstorageKey?: string;\n};\n\nexport function initPasteStyleCommand() {\n\tconst pasteElementStyleCommand = undoablePasteElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/paste-style' ), ( e ) =>\n\t\tpasteStyles( ( e as CommandEvent ).args, pasteElementStyleCommand )\n\t);\n}\n\nfunction pasteStyles( args: PasteStylesCommandArgs, pasteCallback: ReturnType< typeof undoablePasteElementStyle > ) {\n\tconst { containers = [ args.container ], storageKey } = args;\n\n\tconst clipboardElements = getClipboardElements( storageKey );\n\tconst [ clipboardElement ] = clipboardElements ?? [];\n\n\tif ( ! clipboardElement ) {\n\t\treturn;\n\t}\n\n\tconst elementStyles = clipboardElement.styles;\n\tconst elementStyle = Object.values( elementStyles ?? {} )[ 0 ]; // we currently support only one local style\n\n\tif ( ! elementStyle ) {\n\t\treturn;\n\t}\n\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tpasteCallback( { containers: atomicContainers, newStyle: elementStyle } );\n}\n","import {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\tgetElementStyles,\n\tupdateElementStyle,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype PasteElementStyleArgs = {\n\tcontainers: V1Element[];\n\tnewStyle: StyleDefinition;\n};\n\nexport const undoablePasteElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers, newStyle }: PasteElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.id;\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalStyles = getElementStyles( container.id );\n\n\t\t\t\t\tconst [ styleId, styleDef ] = Object.entries( originalStyles ?? {} )[ 0 ] ?? []; // we currently support only one local style\n\t\t\t\t\tconst originalStyle = Object.keys( styleDef ?? {} ).length ? styleDef : null;\n\n\t\t\t\t\tconst revertData = {\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\toriginalStyle,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( styleId ) {\n\t\t\t\t\t\tnewStyle.variants.forEach( ( { meta, props } ) => {\n\t\t\t\t\t\t\tupdateElementStyle( {\n\t\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ firstVariant ] = newStyle.variants;\n\t\t\t\t\t\tconst additionalVariants = newStyle.variants.slice( 1 );\n\n\t\t\t\t\t\trevertData.styleId = createElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn revertData;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst revertData = revertDataItems[ index ];\n\n\t\t\t\t\tif ( ! revertData ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! revertData.originalStyle ) {\n\t\t\t\t\t\t// the container didn't have a style before pasting the new style\n\t\t\t\t\t\tdeleteElementStyle( container.id, revertData.styleId );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ firstVariant ] = revertData.originalStyle.variants;\n\t\t\t\t\tconst additionalVariants = revertData.originalStyle.variants.slice( 1 );\n\n\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\telementId: container.id,\n\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\tstyleId: revertData.styleId,\n\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Pasted', 'elementor' ),\n\t\t}\n\t);\n","import { getElementLabel, getWidgetsCache, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type PropsSchema } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type ContainerArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function hasAtomicWidgets( args: ContainerArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\treturn containers.some( isAtomicWidget );\n}\n\nexport function isAtomicWidget( container: V1Element | undefined ): boolean {\n\tif ( ! container ) {\n\t\treturn false;\n\t}\n\n\treturn Boolean( getContainerSchema( container ) );\n}\n\nexport function getClassesProp( container: V1Element ): string | null {\n\tconst propsSchema = getContainerSchema( container );\n\n\tif ( ! propsSchema ) {\n\t\treturn null;\n\t}\n\n\tconst [ propKey ] =\n\t\tObject.entries( propsSchema ).find(\n\t\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t\t) ?? [];\n\n\treturn propKey ?? null;\n}\n\nfunction getContainerSchema( container: V1Element ): PropsSchema | null {\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\treturn elementType?.atomic_props_schema ?? null;\n}\n\ntype ClipboardElements = V1ElementModelProps[];\n\nexport function getClipboardElements( storageKey: string = 'clipboard' ): ClipboardElements | undefined {\n\ttry {\n\t\tconst storedData = JSON.parse( localStorage.getItem( 'elementor' ) ?? '{}' );\n\n\t\treturn storedData[ storageKey ]?.elements as ClipboardElements;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getTitleForContainers( containers: V1Element[] ): string {\n\treturn containers.length > 1 ? __( 'Elements', 'elementor' ) : getElementLabel( containers[ 0 ].id );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoableResetElementStyle } from './undoable-actions/reset-element-style';\nimport { type ContainerArgs, hasAtomicWidgets, isAtomicWidget } from './utils';\n\nexport function initResetStyleCommand() {\n\tconst resetElementStyles = undoableResetElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/reset-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/reset-style' ), ( e ) =>\n\t\tresetStyles( ( e as CommandEvent ).args, resetElementStyles )\n\t);\n}\n\nfunction resetStyles( args: ContainerArgs, resetElementStyles: ReturnType< typeof undoableResetElementStyle > ) {\n\tconst { containers = [ args.container ] } = args;\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tresetElementStyles( { containers: atomicContainers } );\n}\n","import { createElementStyle, deleteElementStyle, getElementStyles, type V1Element } from '@elementor/editor-elements';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype ResetElementStyleArgs = {\n\tcontainers: V1Element[];\n};\n\nexport const undoableResetElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers }: ResetElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\n\t\t\t\t\tconst containerStyles = getElementStyles( elementId );\n\n\t\t\t\t\tObject.keys( containerStyles ?? {} ).forEach( ( styleId ) =>\n\t\t\t\t\t\tdeleteElementStyle( elementId, styleId )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn containerStyles;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\t\t\t\t\tconst containerStyles = revertDataItems[ index ];\n\n\t\t\t\t\tObject.entries( containerStyles ?? {} ).forEach( ( [ styleId, style ] ) => {\n\t\t\t\t\t\tconst [ firstVariant ] = style.variants;\n\t\t\t\t\t\tconst additionalVariants = style.variants.slice( 1 );\n\n\t\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Reset', 'elementor' ),\n\t\t}\n\t);\n","import { initPasteStyleCommand } from './paste-style';\nimport { initResetStyleCommand } from './reset-style';\n\nexport function initStyleCommands() {\n\tinitPasteStyleCommand();\n\tinitResetStyleCommand();\n}\n"],"mappings":"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","names":["React","import_react","import_react","useIsRouteActive","useListenTo","React","import_editor_v1_adapters","import_ui","import_editor_v1_adapters","useListenTo","import_react","import_editor_v1_adapters","import_react","import_react","import_react","size","__","useListenTo","import_editor_styles_repository","size","size","import_editor_v1_adapters","import_editor_elements","import_editor_v1_adapters","import_editor_elements","import_editor_v1_adapters","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","import_editor_elements","import_editor_props","import_i18n","listenTo","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","listenTo"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/components/style-renderer.tsx","../src/hooks/use-documents-css-links.ts","../src/sync/get-canvas-iframe-document.ts","../src/hooks/use-style-items.ts","../src/utils/abort-previous-runs.ts","../src/utils/signalized-process.ts","../src/hooks/use-on-mount.ts","../src/hooks/use-style-prop-resolver.ts","../src/renderers/create-props-resolver.ts","../src/renderers/multi-props.ts","../src/transformers/create-transformers-registry.ts","../src/style-transformers-registry.ts","../src/sync/enqueue-font.ts","../src/hooks/use-style-renderer.ts","../src/renderers/errors.ts","../src/renderers/create-styles-renderer.ts","../src/settings-transformers-registry.ts","../src/transformers/settings/classes-transformer.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-overlay-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/filter-transformer.ts","../src/transformers/styles/position-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/legacy/init-legacy-views.ts","../src/renderers/create-dom-renderer.ts","../src/legacy/create-element-type.ts","../src/legacy/create-templated-element-type.ts","../src/prevent-link-in-link-commands.ts","../src/style-commands/paste-style.ts","../src/style-commands/undoable-actions/paste-element-style.ts","../src/style-commands/utils.ts","../src/style-commands/reset-style.ts","../src/style-commands/undoable-actions/reset-element-style.ts","../src/style-commands/init-style-commands.ts"],"sourcesContent":["export { init } from './init';\n\nexport { styleTransformersRegistry } from './style-transformers-registry';\nexport { settingsTransformersRegistry } from './settings-transformers-registry';\nexport { createTransformer } from './transformers/create-transformer';\nexport { createTransformersRegistry } from './transformers/create-transformers-registry';\nexport { createPropsResolver, type PropsResolver } from './renderers/create-props-resolver';\n","import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { StyleRenderer } from './components/style-renderer';\nimport { initSettingsTransformers } from './init-settings-transformers';\nimport { initStyleTransformers } from './init-style-transformers';\nimport { initLegacyViews } from './legacy/init-legacy-views';\nimport { initLinkInLinkPrevention } from './prevent-link-in-link-commands';\nimport { initStyleCommands } from './style-commands/init-style-commands';\n\nexport function init() {\n\tinitStyleTransformers();\n\tinitStyleCommands();\n\n\tinitLinkInLinkPrevention();\n\n\tinitLegacyViews();\n\n\tinitSettingsTransformers();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n\n\tinjectIntoTop( {\n\t\tid: 'canvas-style-render',\n\t\tcomponent: StyleRenderer,\n\t} );\n}\n","import * as React from 'react';\nimport { getElements, useSelectedElement } from '@elementor/editor-elements';\nimport {\n\t__privateUseIsRouteActive as useIsRouteActive,\n\t__privateUseListenTo as useListenTo,\n\tuseEditMode,\n\twindowEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst elements = useElementsDom();\n\tconst currentEditMode = useEditMode();\n\n\tconst isEditMode = currentEditMode === 'edit';\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = isEditMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\telements.map( ( [ id, element ] ) => (\n\t\t\t<ElementOverlay key={ id } id={ id } element={ element } isSelected={ selected.element?.id === id } />\n\t\t) )\n\t);\n}\n\nconst ELEMENTS_DATA_ATTR = 'atomic';\n\ntype IdElementTuple = [ string, HTMLElement ];\n\nfunction useElementsDom() {\n\treturn useListenTo(\n\t\t[ windowEvent( 'elementor/editor/element-rendered' ), windowEvent( 'elementor/editor/element-destroyed' ) ],\n\t\t() => {\n\t\t\treturn getElements()\n\t\t\t\t.filter( ( el ) => ELEMENTS_DATA_ATTR in ( el.view?.el?.dataset ?? {} ) )\n\t\t\t\t.map( ( element ) => [ element.id, element.view?.getDomElement?.()?.get?.( 0 ) ] )\n\t\t\t\t.filter( ( item ): item is IdElementTuple => !! item[ 1 ] );\n\t\t}\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n\tid: string;\n\tisSmallerOffset?: boolean;\n};\n\nconst OverlayBox = styled( Box, {\n\tshouldForwardProp: ( prop ) => prop !== 'isSelected' && prop !== 'isSmallerOffset',\n} )< Pick< Props, 'isSelected' | 'isSmallerOffset' > >( ( { theme, isSelected, isSmallerOffset } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected && ! isSmallerOffset ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected, id }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\tconst isSmallerOffset = element.offsetHeight <= 1;\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\tisSmallerOffset={ isSmallerOffset }\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useEffect, useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\twhileElementsMounted: autoUpdate,\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width + 2 }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height + 2 }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\tuseEffect( () => {\n\t\t// Update the reference manually because Floating UI does not recalculate\n\t\t// the reference element when it is being used in `option.elements.reference`.\n\t\t// @link https://github.com/floating-ui/floating-ui/blob/master/packages/react/src/hooks/useFloatingRootContext.ts\n\t\trefs.setReference( element );\n\t}, [ element, refs ] );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import * as React from 'react';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { Portal } from '@elementor/ui';\n\nimport { useDocumentsCssLinks } from '../hooks/use-documents-css-links';\nimport { useStyleItems } from '../hooks/use-style-items';\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\n\nexport function StyleRenderer() {\n\tconst container = usePortalContainer();\n\n\tconst styleItems = useStyleItems();\n\tconst linksAttrs = useDocumentsCssLinks();\n\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Portal container={ container }>\n\t\t\t{ styleItems.map( ( item ) => (\n\t\t\t\t<style data-e-style-id={ item.id } key={ item.id }>\n\t\t\t\t\t{ item.value }\n\t\t\t\t</style>\n\t\t\t) ) }\n\t\t\t{ linksAttrs.map( ( attrs ) => (\n\t\t\t\t<link { ...attrs } key={ attrs.id } />\n\t\t\t) ) }\n\t\t</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeDocument()?.head );\n}\n","import { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\n\nimport { getCanvasIframeDocument } from '../sync/get-canvas-iframe-document';\n\nconst REMOVED_ATTR = 'data-e-removed';\nconst DOCUMENT_WRAPPER_ATTR = 'data-elementor-id';\nconst CSS_LINK_ID_PREFIX = 'elementor-post-';\nconst CSS_LINK_ID_SUFFIX = '-css';\n\nexport function useDocumentsCssLinks() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => {\n\t\tconst iframeDocument = getCanvasIframeDocument();\n\n\t\tif ( ! iframeDocument ) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst relevantLinkIds = getDocumentsIdsInCanvas( iframeDocument ).map(\n\t\t\t( id ) => `${ CSS_LINK_ID_PREFIX }${ id }${ CSS_LINK_ID_SUFFIX }`\n\t\t);\n\n\t\tconst links = getDocumentsCssLinks( iframeDocument ).filter( ( link ) =>\n\t\t\trelevantLinkIds.includes( link.getAttribute( 'id' ) ?? '' )\n\t\t);\n\n\t\tlinks.forEach( ( link ) => {\n\t\t\tif ( ! link.hasAttribute( REMOVED_ATTR ) ) {\n\t\t\t\tlink.remove();\n\t\t\t}\n\t\t} );\n\n\t\treturn links.map( ( link ) => ( {\n\t\t\t...getLinkAttrs( link ),\n\t\t\tid: link.getAttribute( 'id' ) ?? '',\n\t\t\t[ REMOVED_ATTR ]: true,\n\t\t} ) );\n\t} );\n}\n\nfunction getDocumentsIdsInCanvas( document: Document ) {\n\treturn [ ...( document.body.querySelectorAll< HTMLElement >( `[${ DOCUMENT_WRAPPER_ATTR }]` ) ?? [] ) ].map(\n\t\t( el ) => el.getAttribute( DOCUMENT_WRAPPER_ATTR ) || ''\n\t);\n}\n\nfunction getDocumentsCssLinks( document: Document ) {\n\treturn [\n\t\t...( document.head.querySelectorAll< HTMLLinkElement >(\n\t\t\t`link[rel=\"stylesheet\"][id^=${ CSS_LINK_ID_PREFIX }][id$=${ CSS_LINK_ID_SUFFIX }]`\n\t\t) ?? [] ),\n\t];\n}\n\nfunction getLinkAttrs( el: HTMLLinkElement ) {\n\tconst entries = [ ...el.attributes ].map( ( attr ) => [ attr.name, attr.value ] as const );\n\n\treturn Object.fromEntries( entries );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeDocument() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument;\n}\n","import { type Dispatch, type SetStateAction, useEffect, useMemo, useState } from 'react';\nimport { type StylesProvider, stylesRepository } from '@elementor/editor-styles-repository';\nimport { registerDataHook } from '@elementor/editor-v1-adapters';\n\nimport { type StyleItem, type StyleRenderer } from '../renderers/create-styles-renderer';\nimport { abortPreviousRuns } from '../utils/abort-previous-runs';\nimport { signalizedProcess } from '../utils/signalized-process';\nimport { useOnMount } from './use-on-mount';\nimport { useStylePropResolver } from './use-style-prop-resolver';\nimport { useStyleRenderer } from './use-style-renderer';\n\ntype ProviderAndStyleItems = { provider: StylesProvider; items: StyleItem[] };\n\ntype ProviderAndSubscriber = { provider: StylesProvider; subscriber: () => Promise< void > };\n\ntype ProviderAndStyleItemsMap = Record< string, ProviderAndStyleItems >;\n\nexport function useStyleItems() {\n\tconst resolve = useStylePropResolver();\n\tconst renderStyles = useStyleRenderer( resolve );\n\n\tconst [ styleItems, setStyleItems ] = useState< ProviderAndStyleItemsMap >( {} );\n\n\tconst providerAndSubscribers = useMemo( () => {\n\t\treturn stylesRepository.getProviders().map( ( provider ): ProviderAndSubscriber => {\n\t\t\treturn {\n\t\t\t\tprovider,\n\t\t\t\tsubscriber: createProviderSubscriber( {\n\t\t\t\t\tprovider,\n\t\t\t\t\trenderStyles,\n\t\t\t\t\tsetStyleItems,\n\t\t\t\t} ),\n\t\t\t};\n\t\t} );\n\t}, [ renderStyles ] );\n\n\tuseEffect( () => {\n\t\tconst unsubscribes = providerAndSubscribers.map( ( { provider, subscriber } ) =>\n\t\t\tprovider.subscribe( subscriber )\n\t\t);\n\n\t\treturn () => {\n\t\t\tunsubscribes.forEach( ( unsubscribe ) => unsubscribe() );\n\t\t};\n\t}, [ providerAndSubscribers ] );\n\n\tuseOnMount( () => {\n\t\tregisterDataHook( 'after', 'editor/documents/attach-preview', async () => {\n\t\t\tconst promises = providerAndSubscribers.map( async ( { subscriber } ) => subscriber() );\n\n\t\t\tawait Promise.all( promises );\n\t\t} );\n\t} );\n\n\treturn Object.values( styleItems )\n\t\t.sort( ( { provider: providerA }, { provider: providerB } ) => providerA.priority - providerB.priority )\n\t\t.flatMap( ( { items } ) => items );\n}\n\ntype CreateProviderSubscriberArgs = {\n\tprovider: StylesProvider;\n\trenderStyles: StyleRenderer;\n\tsetStyleItems: Dispatch< SetStateAction< ProviderAndStyleItemsMap > >;\n};\n\nfunction createProviderSubscriber( { provider, renderStyles, setStyleItems }: CreateProviderSubscriberArgs ) {\n\treturn abortPreviousRuns( ( abortController ) =>\n\t\tsignalizedProcess( abortController.signal )\n\t\t\t.then( ( _, signal ) => {\n\t\t\t\tconst styles = provider.actions.all().map( ( __, index, items ) => {\n\t\t\t\t\tconst lastPosition = items.length - 1;\n\n\t\t\t\t\tconst style = items[ lastPosition - index ];\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...style,\n\t\t\t\t\t\tcssName: provider.actions.resolveCssName( style.id ),\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\treturn renderStyles( { styles, signal } );\n\t\t\t} )\n\t\t\t.then( ( items ) => {\n\t\t\t\tsetStyleItems( ( prev ) => ( {\n\t\t\t\t\t...prev,\n\t\t\t\t\t[ provider.getKey() ]: { provider, items },\n\t\t\t\t} ) );\n\t\t\t} )\n\t\t\t.execute()\n\t);\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function abortPreviousRuns< TArgs extends any[], TReturn >(\n\tcb: ( abortController: AbortController, ...args: TArgs ) => TReturn\n): ( ...args: TArgs ) => TReturn {\n\tlet abortController: AbortController | null = null;\n\n\treturn ( ...args: TArgs ) => {\n\t\tif ( abortController ) {\n\t\t\tabortController.abort();\n\t\t}\n\n\t\tabortController = new AbortController();\n\n\t\treturn cb( abortController, ...args );\n\t};\n}\n","// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyFn = ( ...args: any[] ) => any;\n\ntype SignalizedProcess< TNextArg = never > = {\n\tthen: < TReturn >(\n\t\tcb: ( arg: TNextArg, signal: AbortSignal ) => TReturn\n\t) => SignalizedProcess< Awaited< TReturn > >;\n\n\texecute: () => Promise< void >;\n};\n\nexport function signalizedProcess< TNextArg = never >(\n\tsignal: AbortSignal,\n\tsteps: AnyFn[] = []\n): SignalizedProcess< TNextArg > {\n\treturn {\n\t\tthen: ( cb ) => {\n\t\t\tsteps.push( cb );\n\n\t\t\treturn signalizedProcess( signal, steps );\n\t\t},\n\n\t\texecute: async () => {\n\t\t\tlet lastResult: TNextArg | undefined;\n\n\t\t\tfor ( const step of steps ) {\n\t\t\t\tif ( signal.aborted ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tlastResult = await step( lastResult, signal );\n\t\t\t}\n\t\t},\n\t};\n}\n","import { useEffect, useRef } from 'react';\n\nexport function useOnMount( cb: () => void ) {\n\tconst mounted = useRef( false );\n\n\tuseEffect( () => {\n\t\tif ( ! mounted.current ) {\n\t\t\tmounted.current = true;\n\n\t\t\tcb();\n\t\t}\n\t}, [] ); // eslint-disable-line react-hooks/exhaustive-deps\n}\n","import { useMemo } from 'react';\nimport { getStylesSchema } from '@elementor/editor-styles';\n\nimport { createPropsResolver } from '../renderers/create-props-resolver';\nimport { styleTransformersRegistry } from '../style-transformers-registry';\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport function useStylePropResolver() {\n\treturn useMemo( () => {\n\t\treturn createPropsResolver( {\n\t\t\ttransformers: styleTransformersRegistry,\n\t\t\tschema: getStylesSchema(),\n\t\t\tonPropResolve: ( { key, value } ) => {\n\t\t\t\tif ( key !== 'font-family' || typeof value !== 'string' ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tenqueueFont( value );\n\t\t\t},\n\t\t} );\n\t}, [] );\n}\n","import {\n\tisTransformable,\n\ttype PropKey,\n\ttype Props,\n\ttype PropsSchema,\n\ttype PropType,\n\ttype PropValue,\n} from '@elementor/editor-props';\n\nimport { type TransformersRegistry } from '../transformers/create-transformers-registry';\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\n\ntype CreatePropResolverArgs = {\n\ttransformers: TransformersRegistry;\n\tschema: PropsSchema;\n\tonPropResolve?: ( args: { key: string; value: unknown } ) => void;\n};\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema?: PropsSchema;\n\tsignal?: AbortSignal;\n};\n\ntype TransformArgs = {\n\tvalue: unknown;\n\tkey: PropKey;\n\ttype: PropType;\n\tsignal?: AbortSignal;\n\tdepth?: number;\n};\n\ntype ResolvedProps = Record< string, unknown >;\n\nexport type PropsResolver = ReturnType< typeof createPropsResolver >;\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\nexport function createPropsResolver( { transformers, schema: initialSchema, onPropResolve }: CreatePropResolverArgs ) {\n\tasync function resolve( { props, schema, signal }: ResolveArgs ): Promise< ResolvedProps > {\n\t\tschema = schema ?? initialSchema;\n\n\t\tconst promises = Promise.all(\n\t\t\tObject.entries( schema ).map( async ( [ key, type ] ) => {\n\t\t\t\tconst value = props[ key ] ?? type.default;\n\n\t\t\t\tconst transformed = await transform( { value, key, type, signal } );\n\n\t\t\t\tonPropResolve?.( { key, value: transformed } );\n\n\t\t\t\tif ( isMultiProps( transformed ) ) {\n\t\t\t\t\treturn getMultiPropsValue( transformed );\n\t\t\t\t}\n\n\t\t\t\treturn { [ key ]: transformed };\n\t\t\t} )\n\t\t);\n\n\t\treturn Object.assign( {}, ...( await promises ).filter( Boolean ) );\n\t}\n\n\tasync function transform( { value, key, type, signal, depth = 0 }: TransformArgs ) {\n\t\tif ( value === null || value === undefined ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( ! isTransformable( value ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( value.disabled === true ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tif ( type.kind === 'union' ) {\n\t\t\ttype = type.prop_types[ value.$$type ];\n\n\t\t\tif ( ! type ) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\n\t\tif ( value.$$type !== type.key ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Warning: This variable is loosely-typed - use with caution.\n\t\tlet resolvedValue = value.value;\n\n\t\tif ( type.kind === 'object' ) {\n\t\t\tresolvedValue = await resolve( {\n\t\t\t\tprops: resolvedValue,\n\t\t\t\tschema: type.shape,\n\t\t\t\tsignal,\n\t\t\t} );\n\t\t}\n\n\t\tif ( type.kind === 'array' ) {\n\t\t\tresolvedValue = await Promise.all(\n\t\t\t\tresolvedValue.map( ( item: PropValue ) =>\n\t\t\t\t\ttransform( { value: item, key, type: type.item_prop_type, depth, signal } )\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\tconst transformer = transformers.get( value.$$type );\n\n\t\tif ( ! transformer ) {\n\t\t\treturn null;\n\t\t}\n\n\t\ttry {\n\t\t\tconst transformed = await transformer( resolvedValue, { key, signal } );\n\n\t\t\treturn transform( { value: transformed, key, type, signal, depth: depth + 1 } );\n\t\t} catch {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\treturn resolve;\n}\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\ntype MultiProps = {\n\t'$$multi-props': true;\n\tvalue: Props;\n};\n\nexport const isMultiProps = ( propValue: PropValue ): propValue is MultiProps => {\n\treturn (\n\t\t!! propValue &&\n\t\ttypeof propValue === 'object' &&\n\t\t'$$multi-props' in propValue &&\n\t\tpropValue[ '$$multi-props' ] === true\n\t);\n};\n\nexport const createMultiPropsValue = ( props: Props ): MultiProps => {\n\treturn {\n\t\t'$$multi-props': true,\n\t\tvalue: props,\n\t};\n};\n\nexport const getMultiPropsValue = ( multiProps: MultiProps ): Props => {\n\treturn multiProps.value;\n};\n","import { type PropTypeKey } from '@elementor/editor-props';\n\nimport { type AnyTransformer, type TransformersMap } from './types';\n\nexport type TransformersRegistry = ReturnType< typeof createTransformersRegistry >;\n\nexport function createTransformersRegistry() {\n\tconst transformers: TransformersMap = {};\n\n\tlet fallbackTransformer: AnyTransformer | null = null;\n\n\treturn {\n\t\tregister( type: PropTypeKey, transformer: AnyTransformer ) {\n\t\t\ttransformers[ type ] = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tregisterFallback( transformer: AnyTransformer ) {\n\t\t\tfallbackTransformer = transformer;\n\n\t\t\treturn this;\n\t\t},\n\t\tget( type: PropTypeKey ): AnyTransformer | null {\n\t\t\treturn transformers[ type ] ?? fallbackTransformer;\n\t\t},\n\t\tall() {\n\t\t\treturn { ...transformers };\n\t\t},\n\t};\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const styleTransformersRegistry = createTransformersRegistry();\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 { useMemo } from 'react';\nimport { useBreakpointsMap } from '@elementor/editor-responsive';\n\nimport { type PropsResolver } from '../renderers/create-props-resolver';\nimport { createStylesRenderer } from '../renderers/create-styles-renderer';\n\nconst SELECTOR_PREFIX = '.elementor';\n\nexport function useStyleRenderer( resolve: PropsResolver ) {\n\tconst breakpoints = useBreakpointsMap();\n\n\treturn useMemo( () => {\n\t\treturn createStylesRenderer( {\n\t\t\tselectorPrefix: SELECTOR_PREFIX,\n\t\t\tbreakpoints,\n\t\t\tresolve,\n\t\t} );\n\t}, [ resolve, breakpoints ] );\n}\n","import { createError } from '@elementor/utils';\n\nexport const UnknownStyleTypeError = createError< { type: string } >( {\n\tcode: 'unknown_style_type',\n\tmessage: 'Unknown style type',\n} );\n","import type { Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleDefinitionState, type StyleDefinitionType } from '@elementor/editor-styles';\n\nimport { type PropsResolver } from './create-props-resolver';\nimport { UnknownStyleTypeError } from './errors';\n\nexport type StyleItem = {\n\tid: string;\n\tvalue: string;\n};\n\nexport type StyleRenderer = ReturnType< typeof createStylesRenderer >;\n\ntype CreateStyleRendererArgs = {\n\tresolve: PropsResolver;\n\tbreakpoints: BreakpointsMap;\n\tselectorPrefix?: string;\n};\n\nexport type RendererStyleDefinition = StyleDefinition & {\n\tcssName: string;\n};\n\ntype StyleRendererArgs = {\n\tstyles: RendererStyleDefinition[];\n\tsignal?: AbortSignal;\n};\n\ntype PropsToCssArgs = {\n\tprops: Props;\n\tresolve: PropsResolver;\n\tsignal?: AbortSignal;\n};\n\nconst SELECTORS_MAP: Record< StyleDefinitionType, string > = {\n\tclass: '.',\n};\n\nexport function createStylesRenderer( { resolve, breakpoints, selectorPrefix = '' }: CreateStyleRendererArgs ) {\n\treturn async ( { styles, signal }: StyleRendererArgs ): Promise< StyleItem[] > => {\n\t\tconst stylesCssPromises = styles.map( async ( style ) => {\n\t\t\tconst variantCssPromises = Object.values( style.variants ).map( async ( variant ) => {\n\t\t\t\tconst css = await propsToCss( { props: variant.props, resolve, signal } );\n\n\t\t\t\treturn createStyleWrapper()\n\t\t\t\t\t.for( style.cssName, style.type )\n\t\t\t\t\t.withPrefix( selectorPrefix )\n\t\t\t\t\t.withState( variant.meta.state )\n\t\t\t\t\t.withMediaQuery( variant.meta.breakpoint ? breakpoints[ variant.meta.breakpoint ] : null )\n\t\t\t\t\t.wrap( css );\n\t\t\t} );\n\n\t\t\tconst variantsCss = await Promise.all( variantCssPromises );\n\n\t\t\treturn {\n\t\t\t\tid: style.id,\n\t\t\t\tvalue: variantsCss.join( '' ),\n\t\t\t};\n\t\t} );\n\n\t\treturn await Promise.all( stylesCssPromises );\n\t};\n}\n\nfunction createStyleWrapper( value: string = '', wrapper?: ( css: string ) => string ) {\n\treturn {\n\t\tfor: ( cssName: RendererStyleDefinition[ 'cssName' ], type: RendererStyleDefinition[ 'type' ] ) => {\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 }${ cssName }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tif ( propValue === null ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { createTransformer } from '../create-transformer';\n\nexport function createClassesTransformer() {\n\tconst cache = new Map< string, string >();\n\n\treturn createTransformer( ( value: string[] ) => {\n\t\treturn value\n\t\t\t.map( ( id ) => {\n\t\t\t\tif ( ! cache.has( id ) ) {\n\t\t\t\t\tcache.set( id, getCssName( id ) );\n\t\t\t\t}\n\n\t\t\t\treturn cache.get( id );\n\t\t\t} )\n\t\t\t.filter( Boolean );\n\t} );\n}\n\nfunction getCssName( id: string ) {\n\tconst provider = stylesRepository.getProviders().find( ( p ) => {\n\t\treturn p.actions.all().find( ( style ) => style.id === id );\n\t} );\n\n\tif ( ! provider ) {\n\t\treturn id;\n\t}\n\n\treturn provider.actions.resolveCssName( id );\n}\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { createClassesTransformer } from './transformers/settings/classes-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'classes', createClassesTransformer() )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.registerFallback( plainTransformer );\n}\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport type BackgroundImageTransformed = {\n\tsrc: string | null;\n\trepeat: string | null;\n\tattachment: string | null;\n\tsize: string | null;\n\tposition: string | null;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles: BackgroundImageTransformed = {\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize,\n\t\tposition,\n\t};\n\n\treturn backgroundStyles;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width, height }: BackgroundImageSizeScale ) => `${ width ?? 'auto' } ${ height ?? 'auto' }`\n);\n","import { isExperimentActive } from '@elementor/editor-v1-adapters';\n\nimport { createTransformer } from '../create-transformer';\nimport { type BackgroundImageTransformed } from './background-image-overlay-transformer';\n\ntype BackgroundOverlay = ( BackgroundImageTransformed | string )[];\n\nexport type BackgroundOverlayTransformed = {\n\t'background-image'?: string | null;\n\t'background-repeat'?: string | null;\n\t'background-attachment'?: string | null;\n\t'background-size'?: string | null;\n\t'background-position'?: string | null;\n};\n\nexport const backgroundOverlayTransformer = createTransformer(\n\t( value: BackgroundOverlay ): BackgroundOverlayTransformed | null => {\n\t\tif ( ! value || value.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst normalizedValues = normalizeOverlayValues( value );\n\n\t\tif ( normalizedValues.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst images = getValuesString( normalizedValues, 'src', 'none', true );\n\t\tconst repeats = getValuesString( normalizedValues, 'repeat', 'repeat' );\n\t\tconst attachments = getValuesString( normalizedValues, 'attachment', 'scroll' );\n\t\tconst sizes = getValuesString( normalizedValues, 'size', 'auto auto' );\n\t\tconst positions = getValuesString( normalizedValues, 'position', '0% 0%' );\n\n\t\treturn {\n\t\t\t'background-image': images,\n\t\t\t'background-repeat': repeats,\n\t\t\t'background-attachment': attachments,\n\t\t\t'background-size': sizes,\n\t\t\t'background-position': positions,\n\t\t};\n\t}\n);\n\nfunction normalizeOverlayValues( overlays: BackgroundOverlay ): BackgroundImageTransformed[] {\n\tconst isVersion330Active = isExperimentActive( 'e_v_3_30' );\n\n\tconst mappedValues = overlays.map( ( item ) => {\n\t\tif ( typeof item === 'string' ) {\n\t\t\treturn {\n\t\t\t\tsrc: item,\n\t\t\t\trepeat: null,\n\t\t\t\tattachment: null,\n\t\t\t\tsize: null,\n\t\t\t\tposition: null,\n\t\t\t};\n\t\t}\n\n\t\treturn item;\n\t} );\n\n\tif ( ! isVersion330Active ) {\n\t\treturn mappedValues;\n\t}\n\n\treturn mappedValues.filter( ( item ) => item && !! item.src );\n}\n\nfunction getValuesString(\n\titems: Partial< BackgroundImageTransformed >[],\n\tprop: keyof BackgroundImageTransformed,\n\tdefaultValue: string,\n\tpreventUnification: boolean = false\n) {\n\tconst isVersion330Active = isExperimentActive( 'e_v_3_30' );\n\tconst isEmpty = items.filter( ( item ) => item?.[ prop ] ).length === 0;\n\n\tif ( isEmpty ) {\n\t\treturn isVersion330Active ? defaultValue : null;\n\t}\n\n\tconst formattedValues = items.map( ( item ) => item[ prop ] ?? defaultValue );\n\n\tif ( ! preventUnification ) {\n\t\tconst allSame = formattedValues.every( ( value ) => value === formattedValues[ 0 ] );\n\n\t\tif ( allSame ) {\n\t\t\treturn formattedValues[ 0 ];\n\t\t}\n\t}\n\n\treturn formattedValues.join( ',' );\n}\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\nimport { type BackgroundOverlayTransformed } from './background-overlay-transformer';\n\ntype Background = {\n\t'background-overlay'?: BackgroundOverlayTransformed;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst { color = null, 'background-overlay': overlays = null } = value;\n\n\treturn createMultiPropsValue( {\n\t\t...overlays,\n\t\t'background-color': color,\n\t} );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { type FilterItemPropValue } from '@elementor/editor-props';\n\nimport { createTransformer } from '../create-transformer';\n\nexport const filterTransformer = createTransformer( ( filterValues: FilterItemPropValue[ 'value' ][] ) => {\n\tif ( filterValues?.length < 1 ) {\n\t\treturn null;\n\t}\n\n\treturn filterValues.map( mapToFilterFunctionString ).join( ' ' );\n} );\n\nconst mapToFilterFunctionString = ( value: FilterItemPropValue[ 'value' ] ): string => {\n\tif ( 'radius' in value ) {\n\t\treturn `blur(${ value.radius })`;\n\t}\n\n\tif ( 'amount' in value ) {\n\t\treturn `brightness(${ value.amount })`;\n\t}\n\n\treturn '';\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Position = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const positionTransformer = createTransformer( ( { x, y }: Position ) => `${ x ?? '0px' } ${ y ?? '0px' }` );\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn value.unit === 'custom' ? value.size : `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundOverlayTransformer } from './transformers/styles/background-overlay-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { filterTransformer } from './transformers/styles/filter-transformer';\nimport { positionTransformer } from './transformers/styles/position-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'filter', filterTransformer )\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', backgroundOverlayTransformer )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', positionTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'object-position', positionTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t)\n\t\t.registerFallback( plainTransformer );\n}\n","import { getWidgetsCache } from '@elementor/editor-elements';\nimport { __privateListenTo, v1ReadyEvent } from '@elementor/editor-v1-adapters';\n\nimport { createDomRenderer } from '../renderers/create-dom-renderer';\nimport { createElementType } from './create-element-type';\nimport { canBeTemplated, createTemplatedElementType } from './create-templated-element-type';\nimport type { LegacyWindow } from './types';\n\nexport function initLegacyViews() {\n\t__privateListenTo( v1ReadyEvent(), () => {\n\t\tconst config = getWidgetsCache() ?? {};\n\t\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\t\tconst renderer = createDomRenderer();\n\n\t\tObject.entries( config ).forEach( ( [ type, element ] ) => {\n\t\t\tif ( ! element.atomic ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst ElementType = canBeTemplated( element )\n\t\t\t\t? createTemplatedElementType( { type, renderer, element } )\n\t\t\t\t: createElementType( type );\n\n\t\t\tlegacyWindow.elementor.elementsManager.registerElementType( new ElementType() );\n\t\t} );\n\t} );\n}\n","import { createArrayLoader, createEnvironment, type TwingArrayLoader, type TwingEnvironment } from '@elementor/twing';\n\nexport type DomRenderer = {\n\tregister: TwingArrayLoader[ 'setTemplate' ];\n\trender: TwingEnvironment[ 'render' ];\n};\n\nexport function createDomRenderer(): DomRenderer {\n\tconst loader = createArrayLoader( {} );\n\tconst environment = createEnvironment( loader );\n\n\tenvironment.registerEscapingStrategy( escapeHtmlTag, 'html_tag' );\n\tenvironment.registerEscapingStrategy( escapeURL, 'full_url' );\n\n\treturn {\n\t\tregister: loader.setTemplate,\n\t\trender: environment.render,\n\t};\n}\n\nfunction escapeHtmlTag( value: string ) {\n\tconst allowedTags = [\n\t\t'a',\n\t\t'article',\n\t\t'aside',\n\t\t'button',\n\t\t'div',\n\t\t'footer',\n\t\t'h1',\n\t\t'h2',\n\t\t'h3',\n\t\t'h4',\n\t\t'h5',\n\t\t'h6',\n\t\t'header',\n\t\t'main',\n\t\t'nav',\n\t\t'p',\n\t\t'section',\n\t\t'span',\n\t];\n\n\treturn allowedTags.includes( value ) ? value : 'div';\n}\n\nfunction escapeURL( value: string ) {\n\tconst allowedProtocols = [ 'http:', 'https:', 'mailto:', 'tel:' ];\n\n\ttry {\n\t\tconst parsed = new URL( value );\n\n\t\treturn allowedProtocols.includes( parsed.protocol ) ? value : '';\n\t} catch {\n\t\treturn '';\n\t}\n}\n","import { type ElementType, type ElementView, type LegacyWindow } from './types';\n\n// Technically it shouldn't have a return type annotation, but for some\n// reason TypeScript can't infer the types properly when emitting DTS.\n//\n// See: https://github.com/microsoft/TypeScript/issues/9944#issuecomment-244448079\nexport function createElementType( type: string ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createElementViewClassDeclaration();\n\t\t}\n\t};\n}\n\nexport function createElementViewClassDeclaration(): typeof ElementView {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\treturn class extends legacyWindow.elementor.modules.elements.views.Widget {\n\t\t// Dispatch `render` event so the overlay layer will be updated\n\t\tonRender( ...args: unknown[] ) {\n\t\t\tsuper.onRender( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/render' );\n\t\t\tthis.#dispatchPreviewEvent( 'elementor/element/render' );\n\t\t}\n\n\t\t// Dispatch `destroy` event so the overlay layer will be updated\n\t\tonDestroy( ...args: unknown[] ) {\n\t\t\tsuper.onDestroy( ...args );\n\n\t\t\tthis.#dispatchEvent( 'elementor/preview/atomic-widget/destroy' );\n\t\t\tthis.#dispatchPreviewEvent( 'elementor/element/destroy' );\n\t\t}\n\n\t\tattributes() {\n\t\t\treturn {\n\t\t\t\t...super.attributes(),\n\n\t\t\t\t// Mark the widget as atomic, so external APIs (such as the overlay layer) can reference it.\n\t\t\t\t'data-atomic': '',\n\n\t\t\t\t// Make the wrapper is non-existent in terms of CSS to mimic the frontend DOM tree.\n\t\t\t\tstyle: 'display: contents !important;',\n\t\t\t};\n\t\t}\n\n\t\t// Removes behaviors that are not needed for atomic widgets (that are implemented in the overlay layer).\n\t\tbehaviors() {\n\t\t\tconst disabledBehaviors = [ 'InlineEditing', 'Draggable', 'Resizable' ];\n\n\t\t\tconst behaviorsAsEntries = Object.entries( super.behaviors() ).filter(\n\t\t\t\t( [ key ] ) => ! disabledBehaviors.includes( key )\n\t\t\t);\n\n\t\t\treturn Object.fromEntries( behaviorsAsEntries );\n\t\t}\n\n\t\t// Change the drag handle because the $el is not the draggable element (`display: contents`).\n\t\tgetDomElement() {\n\t\t\treturn this.$el.find( ':first-child' );\n\t\t}\n\n\t\t// Remove the overlay, so we can use the new overlay layer.\n\t\tgetHandlesOverlay() {\n\t\t\treturn null;\n\t\t}\n\n\t\t#dispatchEvent( eventType: string ) {\n\t\t\twindow.top?.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: { id: this.model.get( 'id' ) },\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\t#dispatchPreviewEvent( eventType: string ) {\n\t\t\tlegacyWindow.elementor?.$preview?.[ 0 ]?.contentWindow.dispatchEvent(\n\t\t\t\tnew CustomEvent( eventType, {\n\t\t\t\t\tdetail: {\n\t\t\t\t\t\tid: this.model.get( 'id' ),\n\t\t\t\t\t\ttype: this.model.get( 'widgetType' ),\n\t\t\t\t\t\telement: this.getDomElement().get( 0 ),\n\t\t\t\t\t},\n\t\t\t\t} )\n\t\t\t);\n\t\t}\n\n\t\tgetContextMenuGroups() {\n\t\t\treturn super.getContextMenuGroups().filter( ( group ) => group.name !== 'save' );\n\t\t}\n\t};\n}\n","import type { V1ElementConfig } from '@elementor/editor-elements';\n\nimport { type DomRenderer } from '../renderers/create-dom-renderer';\nimport { createPropsResolver, type PropsResolver } from '../renderers/create-props-resolver';\nimport { settingsTransformersRegistry } from '../settings-transformers-registry';\nimport { signalizedProcess } from '../utils/signalized-process';\nimport { createElementViewClassDeclaration } from './create-element-type';\nimport { type ElementType, type ElementView, type LegacyWindow } from './types';\n\ntype CreateTypeOptions = {\n\ttype: string;\n\trenderer: DomRenderer;\n\telement: TemplatedElementConfig;\n};\n\ntype TemplatedElementConfig = Required<\n\tPick< V1ElementConfig, 'twig_templates' | 'twig_main_template' | 'atomic_props_schema' | 'base_styles_dictionary' >\n>;\n\nexport function createTemplatedElementType( { type, renderer, element }: CreateTypeOptions ): typeof ElementType {\n\tconst legacyWindow = window as unknown as LegacyWindow;\n\n\tObject.entries( element.twig_templates ).forEach( ( [ key, template ] ) => {\n\t\trenderer.register( key, template );\n\t} );\n\n\tconst propsResolver = createPropsResolver( {\n\t\ttransformers: settingsTransformersRegistry,\n\t\tschema: element.atomic_props_schema,\n\t} );\n\n\treturn class extends legacyWindow.elementor.modules.elements.types.Widget {\n\t\tgetType() {\n\t\t\treturn type;\n\t\t}\n\n\t\tgetView() {\n\t\t\treturn createTemplatedElementViewClassDeclaration( {\n\t\t\t\ttype,\n\t\t\t\trenderer,\n\t\t\t\tpropsResolver,\n\t\t\t\tbaseStylesDictionary: element.base_styles_dictionary,\n\t\t\t\ttemplateKey: element.twig_main_template,\n\t\t\t} );\n\t\t}\n\t};\n}\n\nexport function canBeTemplated( element: Partial< TemplatedElementConfig > ): element is TemplatedElementConfig {\n\treturn !! (\n\t\telement.atomic_props_schema &&\n\t\telement.twig_templates &&\n\t\telement.twig_main_template &&\n\t\telement.base_styles_dictionary\n\t);\n}\n\ntype CreateViewOptions = {\n\ttype: string;\n\trenderer: DomRenderer;\n\tpropsResolver: PropsResolver;\n\ttemplateKey: string;\n\tbaseStylesDictionary: Record< string, string >;\n};\n\nfunction createTemplatedElementViewClassDeclaration( {\n\ttype,\n\trenderer,\n\tpropsResolver: resolveProps,\n\ttemplateKey,\n\tbaseStylesDictionary,\n}: CreateViewOptions ): typeof ElementView {\n\tconst BaseView = createElementViewClassDeclaration();\n\n\treturn class extends BaseView {\n\t\t#abortController: AbortController | null = null;\n\n\t\tgetTemplateType() {\n\t\t\treturn 'twig';\n\t\t}\n\n\t\trenderOnChange() {\n\t\t\tthis.render();\n\t\t}\n\n\t\t// Overriding Marionette original render method to inject our renderer.\n\t\tasync _renderTemplate() {\n\t\t\tthis.#beforeRenderTemplate();\n\n\t\t\tthis.#abortController?.abort();\n\t\t\tthis.#abortController = new AbortController();\n\n\t\t\tconst process = signalizedProcess( this.#abortController.signal )\n\t\t\t\t.then( ( _, signal ) => {\n\t\t\t\t\tconst settings = this.model.get( 'settings' ).toJSON();\n\n\t\t\t\t\treturn resolveProps( {\n\t\t\t\t\t\tprops: settings,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t\t.then( ( resolvedSettings ) => {\n\t\t\t\t\t// Same as the Backend.\n\t\t\t\t\tconst context = {\n\t\t\t\t\t\tid: this.model.get( 'id' ),\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tsettings: resolvedSettings,\n\t\t\t\t\t\tbase_styles: baseStylesDictionary,\n\t\t\t\t\t};\n\n\t\t\t\t\treturn renderer.render( templateKey, context );\n\t\t\t\t} )\n\t\t\t\t.then( ( html ) => this.$el.html( html ) );\n\n\t\t\tawait process.execute();\n\n\t\t\tthis.#afterRenderTemplate();\n\t\t}\n\n\t\t// Emulating the original Marionette behavior.\n\t\t#beforeRenderTemplate() {\n\t\t\tthis.triggerMethod( 'before:render:template' );\n\t\t}\n\n\t\t#afterRenderTemplate() {\n\t\t\tthis.bindUIElements();\n\n\t\t\tthis.triggerMethod( 'render:template' );\n\t\t}\n\t};\n}\n","import {\n\tgetAnchoredAncestorId,\n\tgetAnchoredDescendantId,\n\tisElementAnchored,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type NotificationData, notify } from '@elementor/editor-notifications';\nimport { blockCommand } from '@elementor/editor-v1-adapters';\nimport { type ButtonProps } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type CanvasExtendedWindow } from './sync/types';\n\nexport function initLinkInLinkPrevention() {\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste',\n\t\tcondition: blockLinkInLinkPaste,\n\t} );\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/move',\n\t\tcondition: blockLinkInLinkMove,\n\t} );\n}\n\ntype PasteArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\tstorageType?: string;\n};\n\ntype MoveArgs = {\n\tcontainers?: V1Element[];\n\tcontainer?: V1Element;\n\ttarget?: V1Element;\n};\n\nexport type StorageContent = {\n\tclipboard?: {\n\t\telements?: { id?: string }[];\n\t};\n};\n\nconst learnMoreActionProps: Partial< ButtonProps > = {\n\thref: 'https://go.elementor.com/element-link-inside-link-infotip',\n\ttarget: '_blank',\n\tcolor: 'inherit',\n\tvariant: 'text',\n\tsx: {\n\t\tmarginInlineStart: '20px',\n\t},\n\tchildren: 'Learn more',\n};\n\nfunction blockLinkInLinkPaste( args: PasteArgs ): boolean {\n\tconst { containers = [ args.container ], storageType } = args;\n\tconst targetElements = containers;\n\n\tif ( storageType !== 'localstorage' ) {\n\t\treturn false;\n\t}\n\n\tconst data = ( window as CanvasExtendedWindow )?.elementorCommon?.storage?.get();\n\n\tif ( ! data?.clipboard?.elements ) {\n\t\treturn false;\n\t}\n\n\tconst sourceElements = data.clipboard.elements;\n\n\tconst notification: NotificationData = {\n\t\ttype: 'default',\n\t\tmessage: __(\n\t\t\t\"To paste a link to this element, first remove the link from it's parent container.\",\n\t\t\t'elementor'\n\t\t),\n\t\tid: 'paste-in-link-blocked',\n\t\tadditionalActionProps: [ learnMoreActionProps ],\n\t};\n\n\tconst blocked = shouldBlock( sourceElements, targetElements );\n\n\tif ( blocked ) {\n\t\tnotify( notification );\n\t}\n\n\treturn blocked;\n}\n\nfunction blockLinkInLinkMove( args: MoveArgs ): boolean {\n\tconst { containers = [ args.container ], target } = args;\n\tconst sourceElements = containers;\n\tconst targetElement = target;\n\n\tconst notification: NotificationData = {\n\t\ttype: 'default',\n\t\tmessage: __( \"To drag a link to this element, first remove the link from it's parent container.\", 'elementor' ),\n\t\tid: 'move-in-link-blocked',\n\t\tadditionalActionProps: [ learnMoreActionProps ],\n\t};\n\n\tconst isBlocked = shouldBlock( sourceElements, [ targetElement ] );\n\n\tif ( isBlocked ) {\n\t\tnotify( notification );\n\t}\n\n\treturn isBlocked;\n}\n\nfunction shouldBlock(\n\tsourceElements?: ( { id?: string } | undefined )[],\n\ttargetElements?: ( V1Element | undefined )[]\n): boolean {\n\tif ( ! sourceElements?.length || ! targetElements?.length ) {\n\t\treturn false;\n\t}\n\n\tconst isSourceContainsAnAnchor = sourceElements.some( ( src ) => {\n\t\treturn src?.id ? isElementAnchored( src.id ) || !! getAnchoredDescendantId( src.id ) : false;\n\t} );\n\n\tif ( ! isSourceContainsAnAnchor ) {\n\t\treturn false;\n\t}\n\n\tconst isTargetContainsAnAnchor = targetElements.some( ( target ) => {\n\t\treturn target?.id ? isElementAnchored( target.id ) || !! getAnchoredAncestorId( target.id ) : false;\n\t} );\n\n\treturn isTargetContainsAnAnchor;\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoablePasteElementStyle } from './undoable-actions/paste-element-style';\nimport { type ContainerArgs, getClipboardElements, hasAtomicWidgets, isAtomicWidget } from './utils';\n\ntype PasteStylesCommandArgs = ContainerArgs & {\n\tstorageKey?: string;\n};\n\nexport function initPasteStyleCommand() {\n\tconst pasteElementStyleCommand = undoablePasteElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/paste-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/paste-style' ), ( e ) =>\n\t\tpasteStyles( ( e as CommandEvent ).args, pasteElementStyleCommand )\n\t);\n}\n\nfunction pasteStyles( args: PasteStylesCommandArgs, pasteCallback: ReturnType< typeof undoablePasteElementStyle > ) {\n\tconst { containers = [ args.container ], storageKey } = args;\n\n\tconst clipboardElements = getClipboardElements( storageKey );\n\tconst [ clipboardElement ] = clipboardElements ?? [];\n\n\tif ( ! clipboardElement ) {\n\t\treturn;\n\t}\n\n\tconst elementStyles = clipboardElement.styles;\n\tconst elementStyle = Object.values( elementStyles ?? {} )[ 0 ]; // we currently support only one local style\n\n\tif ( ! elementStyle ) {\n\t\treturn;\n\t}\n\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tpasteCallback( { containers: atomicContainers, newStyle: elementStyle } );\n}\n","import {\n\tcreateElementStyle,\n\tdeleteElementStyle,\n\tgetElementStyles,\n\tupdateElementStyle,\n\ttype V1Element,\n} from '@elementor/editor-elements';\nimport { type StyleDefinition } from '@elementor/editor-styles';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype PasteElementStyleArgs = {\n\tcontainers: V1Element[];\n\tnewStyle: StyleDefinition;\n};\n\nexport const undoablePasteElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers, newStyle }: PasteElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.id;\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalStyles = getElementStyles( container.id );\n\n\t\t\t\t\tconst [ styleId, styleDef ] = Object.entries( originalStyles ?? {} )[ 0 ] ?? []; // we currently support only one local style\n\t\t\t\t\tconst originalStyle = Object.keys( styleDef ?? {} ).length ? styleDef : null;\n\n\t\t\t\t\tconst revertData = {\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\toriginalStyle,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( styleId ) {\n\t\t\t\t\t\tnewStyle.variants.forEach( ( { meta, props } ) => {\n\t\t\t\t\t\t\tupdateElementStyle( {\n\t\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ firstVariant ] = newStyle.variants;\n\t\t\t\t\t\tconst additionalVariants = newStyle.variants.slice( 1 );\n\n\t\t\t\t\t\trevertData.styleId = createElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn revertData;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst revertData = revertDataItems[ index ];\n\n\t\t\t\t\tif ( ! revertData ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! revertData.originalStyle ) {\n\t\t\t\t\t\t// the container didn't have a style before pasting the new style\n\t\t\t\t\t\tdeleteElementStyle( container.id, revertData.styleId );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ firstVariant ] = revertData.originalStyle.variants;\n\t\t\t\t\tconst additionalVariants = revertData.originalStyle.variants.slice( 1 );\n\n\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\telementId: container.id,\n\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\tstyleId: revertData.styleId,\n\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Pasted', 'elementor' ),\n\t\t}\n\t);\n","import { getElementLabel, getWidgetsCache, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type PropsSchema } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type ContainerArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function hasAtomicWidgets( args: ContainerArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\treturn containers.some( isAtomicWidget );\n}\n\nexport function isAtomicWidget( container: V1Element | undefined ): boolean {\n\tif ( ! container ) {\n\t\treturn false;\n\t}\n\n\treturn Boolean( getContainerSchema( container ) );\n}\n\nexport function getClassesProp( container: V1Element ): string | null {\n\tconst propsSchema = getContainerSchema( container );\n\n\tif ( ! propsSchema ) {\n\t\treturn null;\n\t}\n\n\tconst [ propKey ] =\n\t\tObject.entries( propsSchema ).find(\n\t\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t\t) ?? [];\n\n\treturn propKey ?? null;\n}\n\nfunction getContainerSchema( container: V1Element ): PropsSchema | null {\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\treturn elementType?.atomic_props_schema ?? null;\n}\n\ntype ClipboardElements = V1ElementModelProps[];\n\nexport function getClipboardElements( storageKey: string = 'clipboard' ): ClipboardElements | undefined {\n\ttry {\n\t\tconst storedData = JSON.parse( localStorage.getItem( 'elementor' ) ?? '{}' );\n\n\t\treturn storedData[ storageKey ]?.elements as ClipboardElements;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getTitleForContainers( containers: V1Element[] ): string {\n\treturn containers.length > 1 ? __( 'Elements', 'elementor' ) : getElementLabel( containers[ 0 ].id );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoableResetElementStyle } from './undoable-actions/reset-element-style';\nimport { type ContainerArgs, hasAtomicWidgets, isAtomicWidget } from './utils';\n\nexport function initResetStyleCommand() {\n\tconst resetElementStyles = undoableResetElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/reset-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/reset-style' ), ( e ) =>\n\t\tresetStyles( ( e as CommandEvent ).args, resetElementStyles )\n\t);\n}\n\nfunction resetStyles( args: ContainerArgs, resetElementStyles: ReturnType< typeof undoableResetElementStyle > ) {\n\tconst { containers = [ args.container ] } = args;\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tresetElementStyles( { containers: atomicContainers } );\n}\n","import { createElementStyle, deleteElementStyle, getElementStyles, type V1Element } from '@elementor/editor-elements';\nimport { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype ResetElementStyleArgs = {\n\tcontainers: V1Element[];\n};\n\nexport const undoableResetElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers }: ResetElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\n\t\t\t\t\tconst containerStyles = getElementStyles( elementId );\n\n\t\t\t\t\tObject.keys( containerStyles ?? {} ).forEach( ( styleId ) =>\n\t\t\t\t\t\tdeleteElementStyle( elementId, styleId )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn containerStyles;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\t\t\t\t\tconst containerStyles = revertDataItems[ index ];\n\n\t\t\t\t\tObject.entries( containerStyles ?? {} ).forEach( ( [ styleId, style ] ) => {\n\t\t\t\t\t\tconst [ firstVariant ] = style.variants;\n\t\t\t\t\t\tconst additionalVariants = style.variants.slice( 1 );\n\n\t\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\tlabel: ELEMENTS_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Reset', 'elementor' ),\n\t\t}\n\t);\n","import { initPasteStyleCommand } from './paste-style';\nimport { initResetStyleCommand } from './reset-style';\n\nexport function initStyleCommands() {\n\tinitPasteStyleCommand();\n\tinitResetStyleCommand();\n}\n"],"mappings":"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","names":["React","import_react","import_react","useIsRouteActive","useListenTo","React","import_editor_v1_adapters","import_ui","import_editor_v1_adapters","useListenTo","import_react","import_editor_v1_adapters","import_react","import_react","import_react","size","__","useListenTo","import_editor_styles_repository","size","size","import_editor_v1_adapters","import_editor_elements","import_editor_v1_adapters","import_editor_elements","import_editor_v1_adapters","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","import_editor_elements","import_editor_props","import_i18n","listenTo","import_editor_v1_adapters","import_editor_elements","import_editor_styles_repository","import_editor_v1_adapters","import_i18n","listenTo"]}