@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.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +25 -0
- package/dist/index.js +24 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
- package/src/__tests__/styles-prop-resolver.test.ts +19 -0
- package/src/components/element-overlay.tsx +7 -4
- package/src/init-style-transformers.ts +2 -0
- package/src/transformers/styles/filter-transformer.ts +23 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-canvas@0.
|
|
2
|
+
> @elementor/editor-canvas@0.25.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mESM[39m [1mdist/index.mjs [22m[
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
16
|
-
[32mCJS[39m [1mdist/index.js [22m[32m47.
|
|
17
|
-
[32mCJS[39m [1mdist/index.js.map [22m[
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m44.37 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m94.30 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 245ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m47.71 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m94.53 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 247ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 20606ms
|
|
21
21
|
[32mDTS[39m [1mdist/index.d.mts [22m[32m2.42 KB[39m
|
|
22
22
|
[32mDTS[39m [1mdist/index.d.ts [22m[32m2.42 KB[39m
|
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, {
|
|
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"]}
|