@elementor/editor-canvas 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.17.0 build
2
+ > @elementor/editor-canvas@0.18.0 build
3
3
  > tsup --config=../../tsup.build.ts
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -10,13 +10,13 @@
10
10
  CLI Cleaning output folder
11
11
  ESM Build start
12
12
  CJS Build start
13
- ESM dist/index.mjs 39.11 KB
14
- ESM dist/index.mjs.map 83.52 KB
15
- ESM ⚡️ Build success in 216ms
16
- CJS dist/index.js 42.21 KB
17
- CJS dist/index.js.map 83.29 KB
18
- CJS ⚡️ Build success in 220ms
13
+ ESM dist/index.mjs 39.07 KB
14
+ ESM dist/index.mjs.map 83.22 KB
15
+ ESM ⚡️ Build success in 299ms
16
+ CJS dist/index.js 42.18 KB
17
+ CJS dist/index.js.map 83.28 KB
18
+ CJS ⚡️ Build success in 301ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 21039ms
21
- DTS dist/index.d.mts 1.24 KB
22
- DTS dist/index.d.ts 1.24 KB
20
+ DTS ⚡️ Build success in 19889ms
21
+ DTS dist/index.d.mts 1.28 KB
22
+ DTS dist/index.d.ts 1.28 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,28 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - f9d5d33: Change element selection overlay position
8
+
9
+ ### Patch Changes
10
+
11
+ - 42c42ee: Remove side-effects
12
+ - 5fa575c: Fix when switching documents it removes all the previous document styles
13
+ - 64574e3: Refactor styles provider as a preparation for header/footer styles not being rendered
14
+ - Updated dependencies [42c42ee]
15
+ - Updated dependencies [5fa575c]
16
+ - Updated dependencies [64574e3]
17
+ - Updated dependencies [fe0ab45]
18
+ - Updated dependencies [fd5251c]
19
+ - @elementor/editor-styles-repository@0.8.4
20
+ - @elementor/editor-notifications@1.0.1
21
+ - @elementor/editor@0.18.6
22
+ - @elementor/editor-elements@0.8.1
23
+ - @elementor/editor-props@0.12.0
24
+ - @elementor/editor-styles@0.6.6
25
+
3
26
  ## 0.17.0
4
27
 
5
28
  ### Minor Changes
package/dist/index.d.mts CHANGED
@@ -1,6 +1,8 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable } from '@elementor/editor-props';
3
3
 
4
+ declare function init(): void;
5
+
4
6
  type UnbrandedTransformer<TValue> = (value: TValue, options: {
5
7
  key: string;
6
8
  signal?: AbortSignal;
@@ -24,4 +26,4 @@ declare const settingsTransformersRegistry: {
24
26
 
25
27
  declare function createTransformer<TValue = never>(cb: TValue extends AnyTransformable ? 'Transformable values are invalid, use the actual value instead.' : UnbrandedTransformer<TValue>): Transformer<NoInfer<TValue>>;
26
28
 
27
- export { createTransformer, settingsTransformersRegistry, styleTransformersRegistry };
29
+ export { createTransformer, init, settingsTransformersRegistry, styleTransformersRegistry };
package/dist/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
1
  import * as _elementor_editor_props from '@elementor/editor-props';
2
2
  import { AnyTransformable } from '@elementor/editor-props';
3
3
 
4
+ declare function init(): void;
5
+
4
6
  type UnbrandedTransformer<TValue> = (value: TValue, options: {
5
7
  key: string;
6
8
  signal?: AbortSignal;
@@ -24,4 +26,4 @@ declare const settingsTransformersRegistry: {
24
26
 
25
27
  declare function createTransformer<TValue = never>(cb: TValue extends AnyTransformable ? 'Transformable values are invalid, use the actual value instead.' : UnbrandedTransformer<TValue>): Transformer<NoInfer<TValue>>;
26
28
 
27
- export { createTransformer, settingsTransformersRegistry, styleTransformersRegistry };
29
+ export { createTransformer, init, settingsTransformersRegistry, styleTransformersRegistry };
package/dist/index.js CHANGED
@@ -31,6 +31,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
31
31
  var index_exports = {};
32
32
  __export(index_exports, {
33
33
  createTransformer: () => createTransformer,
34
+ init: () => init,
34
35
  settingsTransformersRegistry: () => settingsTransformersRegistry,
35
36
  styleTransformersRegistry: () => styleTransformersRegistry
36
37
  });
@@ -98,8 +99,8 @@ function useFloatingOnElement({ element, isSelected }) {
98
99
  (0, import_react3.size)({
99
100
  apply({ elements, rects }) {
100
101
  Object.assign(elements.floating.style, {
101
- width: `${rects.reference.width}px`,
102
- height: `${rects.reference.height}px`
102
+ width: `${rects.reference.width + 2}px`,
103
+ height: `${rects.reference.height + 2}px`
103
104
  });
104
105
  }
105
106
  }),
@@ -469,10 +470,10 @@ function useStyleItems() {
469
470
  }
470
471
  function createProviderSubscriber({ provider, renderStyles, setStyleItems }) {
471
472
  return abortPreviousRuns(
472
- (abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: provider.actions.get(), signal })).then((items) => {
473
+ (abortController) => signalizedProcess(abortController.signal).then((_, signal) => renderStyles({ styles: provider.actions.all(), signal })).then((items) => {
473
474
  setStyleItems((prev) => ({
474
475
  ...prev,
475
- [provider.key]: { provider, items }
476
+ [provider.getKey()]: { provider, items }
476
477
  }));
477
478
  }).execute()
478
479
  );
@@ -491,7 +492,7 @@ function StyleRenderer() {
491
492
  if (!container) {
492
493
  return null;
493
494
  }
494
- return /* @__PURE__ */ React3.createElement(import_ui2.Portal, { container }, /* @__PURE__ */ React3.createElement(React3.Fragment, null, styleItems.map((item) => /* @__PURE__ */ React3.createElement("style", { "data-e-style-id": item.id, key: item.id }, item.value))));
495
+ return /* @__PURE__ */ React3.createElement(import_ui2.Portal, { container }, styleItems.map((item) => /* @__PURE__ */ React3.createElement("style", { "data-e-style-id": item.id, key: item.id }, item.value)));
495
496
  }
496
497
  function usePortalContainer() {
497
498
  return (0, import_editor_v1_adapters3.__privateUseListenTo)((0, import_editor_v1_adapters3.commandEndEvent)("editor/documents/attach-preview"), () => getCanvasIframeHead());
@@ -1061,7 +1062,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1061
1062
  revertData.styleId = (0, import_editor_elements5.createElementStyle)({
1062
1063
  elementId,
1063
1064
  classesProp,
1064
- label: import_editor_styles_repository2.LOCAL_STYLES_RESERVED_LABEL,
1065
+ label: import_editor_styles_repository2.ELEMENTS_STYLES_RESERVED_LABEL,
1065
1066
  ...firstVariant,
1066
1067
  additionalVariants
1067
1068
  });
@@ -1088,7 +1089,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters6.undoable)(
1088
1089
  (0, import_editor_elements5.createElementStyle)({
1089
1090
  elementId: container.id,
1090
1091
  classesProp,
1091
- label: import_editor_styles_repository2.LOCAL_STYLES_RESERVED_LABEL,
1092
+ label: import_editor_styles_repository2.ELEMENTS_STYLES_RESERVED_LABEL,
1092
1093
  styleId: revertData.styleId,
1093
1094
  ...firstVariant,
1094
1095
  additionalVariants
@@ -1168,7 +1169,7 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters8.undoable)(
1168
1169
  elementId,
1169
1170
  classesProp,
1170
1171
  styleId,
1171
- label: import_editor_styles_repository3.LOCAL_STYLES_RESERVED_LABEL,
1172
+ label: import_editor_styles_repository3.ELEMENTS_STYLES_RESERVED_LABEL,
1172
1173
  ...firstVariant,
1173
1174
  additionalVariants
1174
1175
  });
@@ -1225,12 +1226,10 @@ function init() {
1225
1226
  component: StyleRenderer
1226
1227
  });
1227
1228
  }
1228
-
1229
- // src/index.ts
1230
- init();
1231
1229
  // Annotate the CommonJS export names for ESM import in node:
1232
1230
  0 && (module.exports = {
1233
1231
  createTransformer,
1232
+ init,
1234
1233
  settingsTransformersRegistry,
1235
1234
  styleTransformersRegistry
1236
1235
  });
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-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/sync/get-canvas-iframe-head.ts","../src/settings-transformers-registry.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/array-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-position-offset-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/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":["import { init } from './init';\n\nexport { styleTransformersRegistry } from './style-transformers-registry';\nexport { settingsTransformersRegistry } from './settings-transformers-registry';\nexport { createTransformer } from './transformers/create-transformer';\n\ninit();\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 }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\tuseEffect( () => {\n\t\t// Update the reference manually because Floating UI does not recalculate\n\t\t// the reference element when it is being used in `option.elements.reference`.\n\t\t// @link https://github.com/floating-ui/floating-ui/blob/master/packages/react/src/hooks/useFloatingRootContext.ts\n\t\trefs.setReference( element );\n\t}, [ element, refs ] );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import * as React from 'react';\nimport { __privateUseListenTo as useListenTo, commandEndEvent } from '@elementor/editor-v1-adapters';\nimport { Portal } from '@elementor/ui';\n\nimport { useStyleItems } from '../hooks/use-style-items';\nimport { getCanvasIframeHead } from '../sync/get-canvas-iframe-head';\n\nexport function StyleRenderer() {\n\tconst container = usePortalContainer();\n\n\tconst styleItems = useStyleItems();\n\n\tif ( ! container ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Portal container={ container }>\n\t\t\t<>\n\t\t\t\t{ styleItems.map( ( item ) => (\n\t\t\t\t\t<style data-e-style-id={ item.id } key={ item.id }>\n\t\t\t\t\t\t{ item.value }\n\t\t\t\t\t</style>\n\t\t\t\t) ) }\n\t\t\t</>\n\t\t</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeHead() );\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 ) => renderStyles( { styles: provider.actions.get(), signal } ) )\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.key ]: { 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};\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\ntype StyleRendererArgs = {\n\tstyles: StyleDefinition[];\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.forStyle( style )\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\tforStyle: ( { id, type }: StyleDefinition ) => {\n\t\t\tconst symbol = SELECTORS_MAP[ type ];\n\n\t\t\tif ( ! symbol ) {\n\t\t\t\tthrow new UnknownStyleTypeError( { context: { type } } );\n\t\t\t}\n\n\t\t\treturn createStyleWrapper( `${ value }${ symbol }${ id }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tif ( propValue === null ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeHead() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.head;\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\nexport const arrayTransformer = createTransformer( ( value: unknown[] ) => {\n\treturn value.filter( Boolean );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { arrayTransformer } from './transformers/settings/array-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'classes', arrayTransformer )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.registerFallback( plainTransformer );\n}\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\nconst DEFAULT_POSITION_VALUE = '0% 0%';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles = [\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize ? `${ position || DEFAULT_POSITION_VALUE } / ${ size }` : position,\n\t].filter( Boolean );\n\n\treturn backgroundStyles.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImagePositionOffset = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const backgroundImagePositionOffsetTransformer = createTransformer(\n\t( { x, y }: BackgroundImagePositionOffset ) => `${ x ?? '0px' } ${ y ?? '0px' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width, height }: BackgroundImageSizeScale ) => `${ width ?? 'auto' } ${ height ?? 'auto' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype Background = {\n\t'background-overlay'?: string;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImagePositionOffsetTransformer } from './transformers/styles/background-image-position-offset-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', backgroundImagePositionOffsetTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t)\n\t\t.registerFallback( plainTransformer );\n}\n","import { 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 { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype PasteElementStyleArgs = {\n\tcontainers: V1Element[];\n\tnewStyle: StyleDefinition;\n};\n\nexport const undoablePasteElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers, newStyle }: PasteElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.id;\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst originalStyles = getElementStyles( container.id );\n\n\t\t\t\t\tconst [ styleId, styleDef ] = Object.entries( originalStyles ?? {} )[ 0 ] ?? []; // we currently support only one local style\n\t\t\t\t\tconst originalStyle = Object.keys( styleDef ?? {} ).length ? styleDef : null;\n\n\t\t\t\t\tconst revertData = {\n\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\toriginalStyle,\n\t\t\t\t\t};\n\n\t\t\t\t\tif ( styleId ) {\n\t\t\t\t\t\tnewStyle.variants.forEach( ( { meta, props } ) => {\n\t\t\t\t\t\t\tupdateElementStyle( {\n\t\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\t\tmeta,\n\t\t\t\t\t\t\t\tprops,\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst [ firstVariant ] = newStyle.variants;\n\t\t\t\t\t\tconst additionalVariants = newStyle.variants.slice( 1 );\n\n\t\t\t\t\t\trevertData.styleId = createElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn revertData;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst revertData = revertDataItems[ index ];\n\n\t\t\t\t\tif ( ! revertData ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( ! revertData.originalStyle ) {\n\t\t\t\t\t\t// the container didn't have a style before pasting the new style\n\t\t\t\t\t\tdeleteElementStyle( container.id, revertData.styleId );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst [ firstVariant ] = revertData.originalStyle.variants;\n\t\t\t\t\tconst additionalVariants = revertData.originalStyle.variants.slice( 1 );\n\n\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\telementId: container.id,\n\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\tstyleId: revertData.styleId,\n\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Pasted', 'elementor' ),\n\t\t}\n\t);\n","import { getElementLabel, getWidgetsCache, type V1Element, type V1ElementModelProps } from '@elementor/editor-elements';\nimport { CLASSES_PROP_KEY, type PropsSchema } from '@elementor/editor-props';\nimport { __ } from '@wordpress/i18n';\n\nexport type ContainerArgs = {\n\tcontainer?: V1Element;\n\tcontainers?: V1Element[];\n};\n\nexport function hasAtomicWidgets( args: ContainerArgs ): boolean {\n\tconst { containers = [ args.container ] } = args;\n\n\treturn containers.some( isAtomicWidget );\n}\n\nexport function isAtomicWidget( container: V1Element | undefined ): boolean {\n\tif ( ! container ) {\n\t\treturn false;\n\t}\n\n\treturn Boolean( getContainerSchema( container ) );\n}\n\nexport function getClassesProp( container: V1Element ): string | null {\n\tconst propsSchema = getContainerSchema( container );\n\n\tif ( ! propsSchema ) {\n\t\treturn null;\n\t}\n\n\tconst [ propKey ] =\n\t\tObject.entries( propsSchema ).find(\n\t\t\t( [ , propType ] ) => propType.kind === 'plain' && propType.key === CLASSES_PROP_KEY\n\t\t) ?? [];\n\n\treturn propKey ?? null;\n}\n\nfunction getContainerSchema( container: V1Element ): PropsSchema | null {\n\tconst type = container?.model.get( 'widgetType' ) || container?.model.get( 'elType' );\n\n\tconst widgetsCache = getWidgetsCache();\n\tconst elementType = widgetsCache?.[ type ];\n\n\treturn elementType?.atomic_props_schema ?? null;\n}\n\ntype ClipboardElements = V1ElementModelProps[];\n\nexport function getClipboardElements( storageKey: string = 'clipboard' ): ClipboardElements | undefined {\n\ttry {\n\t\tconst storedData = JSON.parse( localStorage.getItem( 'elementor' ) ?? '{}' );\n\n\t\treturn storedData[ storageKey ]?.elements as ClipboardElements;\n\t} catch {\n\t\treturn undefined;\n\t}\n}\n\nexport function getTitleForContainers( containers: V1Element[] ): string {\n\treturn containers.length > 1 ? __( 'Elements', 'elementor' ) : getElementLabel( containers[ 0 ].id );\n}\n","import { type V1Element } from '@elementor/editor-elements';\nimport {\n\t__privateListenTo as listenTo,\n\tblockCommand,\n\ttype CommandEvent,\n\tcommandStartEvent,\n} from '@elementor/editor-v1-adapters';\n\nimport { undoableResetElementStyle } from './undoable-actions/reset-element-style';\nimport { type ContainerArgs, hasAtomicWidgets, isAtomicWidget } from './utils';\n\nexport function initResetStyleCommand() {\n\tconst resetElementStyles = undoableResetElementStyle();\n\n\tblockCommand( {\n\t\tcommand: 'document/elements/reset-style',\n\t\tcondition: hasAtomicWidgets,\n\t} );\n\n\tlistenTo( commandStartEvent( 'document/elements/reset-style' ), ( e ) =>\n\t\tresetStyles( ( e as CommandEvent ).args, resetElementStyles )\n\t);\n}\n\nfunction resetStyles( args: ContainerArgs, resetElementStyles: ReturnType< typeof undoableResetElementStyle > ) {\n\tconst { containers = [ args.container ] } = args;\n\tconst atomicContainers = containers.filter( isAtomicWidget ) as V1Element[];\n\n\tif ( ! atomicContainers.length ) {\n\t\treturn;\n\t}\n\n\tresetElementStyles( { containers: atomicContainers } );\n}\n","import { createElementStyle, deleteElementStyle, getElementStyles, type V1Element } from '@elementor/editor-elements';\nimport { LOCAL_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';\nimport { undoable } from '@elementor/editor-v1-adapters';\nimport { __ } from '@wordpress/i18n';\n\nimport { getClassesProp, getTitleForContainers } from '../utils';\n\ntype ResetElementStyleArgs = {\n\tcontainers: V1Element[];\n};\n\nexport const undoableResetElementStyle = () =>\n\tundoable(\n\t\t{\n\t\t\tdo: ( { containers }: ResetElementStyleArgs ) => {\n\t\t\t\treturn containers.map( ( container ) => {\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\n\t\t\t\t\tconst containerStyles = getElementStyles( elementId );\n\n\t\t\t\t\tObject.keys( containerStyles ?? {} ).forEach( ( styleId ) =>\n\t\t\t\t\t\tdeleteElementStyle( elementId, styleId )\n\t\t\t\t\t);\n\n\t\t\t\t\treturn containerStyles;\n\t\t\t\t} );\n\t\t\t},\n\n\t\t\tundo: ( { containers }, revertDataItems ) => {\n\t\t\t\tcontainers.forEach( ( container, index ) => {\n\t\t\t\t\tconst classesProp = getClassesProp( container );\n\n\t\t\t\t\tif ( ! classesProp ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementId = container.model.get( 'id' );\n\t\t\t\t\tconst containerStyles = revertDataItems[ index ];\n\n\t\t\t\t\tObject.entries( containerStyles ?? {} ).forEach( ( [ styleId, style ] ) => {\n\t\t\t\t\t\tconst [ firstVariant ] = style.variants;\n\t\t\t\t\t\tconst additionalVariants = style.variants.slice( 1 );\n\n\t\t\t\t\t\tcreateElementStyle( {\n\t\t\t\t\t\t\telementId,\n\t\t\t\t\t\t\tclassesProp,\n\t\t\t\t\t\t\tstyleId,\n\t\t\t\t\t\t\tlabel: LOCAL_STYLES_RESERVED_LABEL,\n\t\t\t\t\t\t\t...firstVariant,\n\t\t\t\t\t\t\tadditionalVariants,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} );\n\t\t\t\t} );\n\t\t\t},\n\t\t},\n\t\t{\n\t\t\ttitle: ( { containers } ) => getTitleForContainers( containers ),\n\t\t\tsubtitle: __( 'Style Reset', 'elementor' ),\n\t\t}\n\t);\n","import { initPasteStyleCommand } from './paste-style';\nimport { initResetStyleCommand } from './reset-style';\n\nexport function initStyleCommands() {\n\tinitPasteStyleCommand();\n\tinitResetStyleCommand();\n}\n"],"mappings":"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","names":["React","import_react","import_react","useIsRouteActive","useListenTo","React","import_editor_v1_adapters","import_ui","import_react","import_editor_v1_adapters","import_react","import_react","import_react","size","useListenTo","size","size","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-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/sync/get-canvas-iframe-head.ts","../src/settings-transformers-registry.ts","../src/transformers/create-transformer.ts","../src/transformers/settings/array-transformer.ts","../src/transformers/settings/link-transformer.ts","../src/transformers/shared/image-src-transformer.ts","../src/transformers/shared/image-transformer.ts","../src/transformers/shared/plain-transformer.ts","../src/init-settings-transformers.ts","../src/transformers/styles/background-color-overlay-transformer.ts","../src/transformers/styles/background-gradient-overlay-transformer.ts","../src/transformers/styles/background-image-overlay-transformer.ts","../src/transformers/styles/background-image-position-offset-transformer.ts","../src/transformers/styles/background-image-size-scale-transformer.ts","../src/transformers/styles/background-transformer.ts","../src/transformers/styles/color-stop-transformer.ts","../src/transformers/styles/create-combine-array-transformer.ts","../src/transformers/styles/create-multi-props-transformer.ts","../src/transformers/styles/shadow-transformer.ts","../src/transformers/styles/size-transformer.ts","../src/transformers/styles/stroke-transformer.ts","../src/init-style-transformers.ts","../src/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';\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 { useStyleItems } from '../hooks/use-style-items';\nimport { getCanvasIframeHead } from '../sync/get-canvas-iframe-head';\n\nexport function StyleRenderer() {\n\tconst container = usePortalContainer();\n\n\tconst styleItems = useStyleItems();\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</Portal>\n\t);\n}\n\nfunction usePortalContainer() {\n\treturn useListenTo( commandEndEvent( 'editor/documents/attach-preview' ), () => getCanvasIframeHead() );\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 ) => renderStyles( { styles: provider.actions.all(), signal } ) )\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};\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\ntype StyleRendererArgs = {\n\tstyles: StyleDefinition[];\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.forStyle( style )\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\tforStyle: ( { id, type }: StyleDefinition ) => {\n\t\t\tconst symbol = SELECTORS_MAP[ type ];\n\n\t\t\tif ( ! symbol ) {\n\t\t\t\tthrow new UnknownStyleTypeError( { context: { type } } );\n\t\t\t}\n\n\t\t\treturn createStyleWrapper( `${ value }${ symbol }${ id }`, wrapper );\n\t\t},\n\n\t\twithPrefix: ( prefix: string ) =>\n\t\t\tcreateStyleWrapper( [ prefix, value ].filter( Boolean ).join( ' ' ), wrapper ),\n\n\t\twithState: ( state: StyleDefinitionState ) =>\n\t\t\tcreateStyleWrapper( state ? `${ value }:${ state }` : value, wrapper ),\n\n\t\twithMediaQuery: ( breakpoint: Breakpoint | null ) => {\n\t\t\tif ( ! breakpoint?.type ) {\n\t\t\t\treturn createStyleWrapper( value, wrapper );\n\t\t\t}\n\n\t\t\tconst size = `${ breakpoint.type }:${ breakpoint.width }px`;\n\n\t\t\treturn createStyleWrapper( value, ( css ) => `@media(${ size }){${ css }}` );\n\t\t},\n\n\t\twrap: ( css: string ) => {\n\t\t\tconst res = `${ value }{${ css }}`;\n\n\t\t\tif ( ! wrapper ) {\n\t\t\t\treturn res;\n\t\t\t}\n\n\t\t\treturn wrapper( res );\n\t\t},\n\t};\n}\n\nasync function propsToCss( { props, resolve, signal }: PropsToCssArgs ) {\n\tconst transformed = await resolve( { props, signal } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tif ( propValue === null ) {\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeHead() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.head;\n}\n","import { createTransformersRegistry } from './transformers/create-transformers-registry';\n\nexport const settingsTransformersRegistry = createTransformersRegistry();\n","import { type AnyTransformable } from '@elementor/editor-props';\n\nimport { type Transformer, type UnbrandedTransformer } from './types';\n\n// Wrap transformer for better DX (types).\n// Inspired by: https://tkdodo.eu/blog/the-query-options-api\nexport function createTransformer< TValue = never >(\n\tcb: TValue extends AnyTransformable\n\t\t? 'Transformable values are invalid, use the actual value instead.'\n\t\t: UnbrandedTransformer< TValue >\n): Transformer< NoInfer< TValue > > {\n\treturn cb as never;\n}\n","import { createTransformer } from '../create-transformer';\n\nexport const arrayTransformer = createTransformer( ( value: unknown[] ) => {\n\treturn value.filter( Boolean );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Link = {\n\tdestination: string | number;\n\tisTargetBlank: boolean;\n};\n\nexport const linkTransformer = createTransformer( ( { destination, isTargetBlank }: Link ) => {\n\treturn {\n\t\t// The real post URL is not relevant in the Editor.\n\t\thref: typeof destination === 'number' ? '#post-id-' + destination : destination,\n\t\ttarget: isTargetBlank ? '_blank' : '_self',\n\t};\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ImageSrc = {\n\tid?: unknown;\n\turl?: unknown;\n};\n\nexport const imageSrcTransformer = createTransformer( ( value: ImageSrc ) => ( {\n\tid: value.id ?? null,\n\turl: value.url ?? null,\n} ) );\n","import { getMediaAttachment } from '@elementor/wp-media';\n\nimport { createTransformer } from '../create-transformer';\n\ntype Image = {\n\tsrc?: {\n\t\tid: number | null;\n\t\turl: string | null;\n\t};\n\tsize?: string;\n};\n\nexport const imageTransformer = createTransformer( async ( value: Image ) => {\n\tconst { src, size } = value;\n\n\tif ( ! src?.id ) {\n\t\treturn src?.url ? { src: src.url } : null;\n\t}\n\n\tconst attachment = await getMediaAttachment( { id: src.id } );\n\n\tconst sizedAttachment = attachment?.sizes?.[ size ?? '' ];\n\n\tif ( sizedAttachment ) {\n\t\treturn {\n\t\t\tsrc: sizedAttachment.url,\n\t\t\theight: sizedAttachment.height,\n\t\t\twidth: sizedAttachment.width,\n\t\t};\n\t}\n\n\tif ( attachment ) {\n\t\treturn {\n\t\t\tsrc: attachment.url,\n\t\t\theight: attachment.height,\n\t\t\twidth: attachment.width,\n\t\t};\n\t}\n\n\treturn null;\n} );\n","import { createTransformer } from '../create-transformer';\n\nexport const plainTransformer = createTransformer( ( value: unknown ) => {\n\treturn value;\n} );\n","import { settingsTransformersRegistry } from './settings-transformers-registry';\nimport { arrayTransformer } from './transformers/settings/array-transformer';\nimport { linkTransformer } from './transformers/settings/link-transformer';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\n\nexport function initSettingsTransformers() {\n\tsettingsTransformersRegistry\n\t\t.register( 'classes', arrayTransformer )\n\t\t.register( 'link', linkTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.registerFallback( plainTransformer );\n}\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundColorOverlay = {\n\tcolor?: string;\n};\n\nexport const backgroundColorOverlayTransformer = createTransformer( ( value: BackgroundColorOverlay ) => {\n\tconst { color = null } = value;\n\n\tif ( ! color ) {\n\t\treturn null;\n\t}\n\n\treturn `linear-gradient(${ color }, ${ color })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundGradientOverlay = {\n\ttype?: 'linear' | 'radial';\n\tangle?: string;\n\tstops?: string;\n\tpositions?: string;\n};\n\nexport const backgroundGradientOverlayTransformer = createTransformer( ( value: BackgroundGradientOverlay ) => {\n\tif ( value.type === 'radial' ) {\n\t\treturn `radial-gradient(circle at ${ value.positions }, ${ value.stops })`;\n\t}\n\n\treturn `linear-gradient(${ value.angle }deg, ${ value.stops })`;\n} );\n","import { createTransformer } from '../create-transformer';\n\nconst DEFAULT_POSITION_VALUE = '0% 0%';\n\ntype BackgroundImageOverlay = {\n\timage?: {\n\t\tsrc?: string;\n\t};\n\tsize?: string;\n\tposition?: string;\n\trepeat?: string;\n\tattachment?: string;\n};\n\nexport const backgroundImageOverlayTransformer = createTransformer( ( value: BackgroundImageOverlay ) => {\n\tconst { image, size = null, position = null, repeat = null, attachment = null } = value;\n\n\tif ( ! image ) {\n\t\treturn null;\n\t}\n\n\tconst src = image.src ? `url(${ image.src })` : null;\n\n\tconst backgroundStyles = [\n\t\tsrc,\n\t\trepeat,\n\t\tattachment,\n\t\tsize ? `${ position || DEFAULT_POSITION_VALUE } / ${ size }` : position,\n\t].filter( Boolean );\n\n\treturn backgroundStyles.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImagePositionOffset = {\n\tx?: string;\n\ty?: string;\n};\n\nexport const backgroundImagePositionOffsetTransformer = createTransformer(\n\t( { x, y }: BackgroundImagePositionOffset ) => `${ x ?? '0px' } ${ y ?? '0px' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype BackgroundImageSizeScale = {\n\twidth?: string;\n\theight?: string;\n};\n\nexport const backgroundImageSizeScaleTransformer = createTransformer(\n\t( { width, height }: BackgroundImageSizeScale ) => `${ width ?? 'auto' } ${ height ?? 'auto' }`\n);\n","import { createTransformer } from '../create-transformer';\n\ntype Background = {\n\t'background-overlay'?: string;\n\tcolor?: string;\n};\n\nexport const backgroundTransformer = createTransformer( ( value: Background ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype ColorStop = {\n\tcolor?: string;\n\toffset?: number;\n};\n\nexport const colorStopTransformer = createTransformer(\n\t( value: ColorStop ) => `${ value?.color } ${ value?.offset ?? 0 }%`\n);\n","import { createTransformer } from '../create-transformer';\n\nexport const createCombineArrayTransformer = ( delimiter: string ) => {\n\treturn createTransformer( ( value: Array< string | number > ) => value.filter( Boolean ).join( delimiter ) );\n};\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype KeyGenerator = ( { propKey, key }: { propKey: string; key: string } ) => string;\n\nexport const createMultiPropsTransformer = ( keys: string[], keyGenerator: KeyGenerator ) => {\n\treturn createTransformer< Record< string, string > >( ( value, { key: propKey } ) => {\n\t\tconst entries = keys\n\t\t\t.filter( ( key ) => value[ key ] )\n\t\t\t.map( ( key ) => [ keyGenerator( { propKey, key } ), value[ key ] ] );\n\n\t\treturn createMultiPropsValue( Object.fromEntries( entries ) );\n\t} );\n};\n","import { createTransformer } from '../create-transformer';\n\ntype Shadow = {\n\thOffset?: string;\n\tvOffset?: string;\n\tblur?: string;\n\tspread?: string;\n\tcolor?: string;\n\tposition?: string;\n};\n\nexport const shadowTransformer = createTransformer( ( value: Shadow ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n} );\n","import { createTransformer } from '../create-transformer';\n\ntype Size = {\n\tsize?: number;\n\tunit?: string;\n};\n\nexport const sizeTransformer = createTransformer( ( value: Size ) => {\n\treturn `${ value.size }${ value.unit }`;\n} );\n","import { createMultiPropsValue } from '../../renderers/multi-props';\nimport { createTransformer } from '../create-transformer';\n\ntype Stroke = {\n\twidth?: string;\n\tcolor?: string;\n};\n\nexport const strokeTransformer = createTransformer( ( value: Stroke ) => {\n\tconst parsed = {\n\t\t'-webkit-text-stroke': `${ value.width } ${ value.color }`,\n\t\tstroke: `${ value.color }`,\n\t\t'stroke-width': `${ value.width }`,\n\t};\n\n\treturn createMultiPropsValue( parsed );\n} );\n","import { styleTransformersRegistry } from './style-transformers-registry';\nimport { imageSrcTransformer } from './transformers/shared/image-src-transformer';\nimport { imageTransformer } from './transformers/shared/image-transformer';\nimport { plainTransformer } from './transformers/shared/plain-transformer';\nimport { backgroundColorOverlayTransformer } from './transformers/styles/background-color-overlay-transformer';\nimport { backgroundGradientOverlayTransformer } from './transformers/styles/background-gradient-overlay-transformer';\nimport { backgroundImageOverlayTransformer } from './transformers/styles/background-image-overlay-transformer';\nimport { backgroundImagePositionOffsetTransformer } from './transformers/styles/background-image-position-offset-transformer';\nimport { backgroundImageSizeScaleTransformer } from './transformers/styles/background-image-size-scale-transformer';\nimport { backgroundTransformer } from './transformers/styles/background-transformer';\nimport { colorStopTransformer } from './transformers/styles/color-stop-transformer';\nimport { createCombineArrayTransformer } from './transformers/styles/create-combine-array-transformer';\nimport { createMultiPropsTransformer } from './transformers/styles/create-multi-props-transformer';\nimport { shadowTransformer } from './transformers/styles/shadow-transformer';\nimport { sizeTransformer } from './transformers/styles/size-transformer';\nimport { strokeTransformer } from './transformers/styles/stroke-transformer';\n\nexport function initStyleTransformers() {\n\tstyleTransformersRegistry\n\t\t.register( 'size', sizeTransformer )\n\t\t.register( 'shadow', shadowTransformer )\n\t\t.register( 'stroke', strokeTransformer )\n\t\t.register(\n\t\t\t'dimensions',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { propKey, key } ) => `${ propKey }-${ key }`\n\t\t\t)\n\t\t)\n\t\t.register( 'box-shadow', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background', backgroundTransformer )\n\t\t.register( 'background-overlay', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'background-color-overlay', backgroundColorOverlayTransformer )\n\t\t.register( 'background-image-overlay', backgroundImageOverlayTransformer )\n\t\t.register( 'background-gradient-overlay', backgroundGradientOverlayTransformer )\n\t\t.register( 'gradient-color-stop', createCombineArrayTransformer( ',' ) )\n\t\t.register( 'color-stop', colorStopTransformer )\n\t\t.register( 'background-image-position-offset', backgroundImagePositionOffsetTransformer )\n\t\t.register( 'background-image-size-scale', backgroundImageSizeScaleTransformer )\n\t\t.register( 'image-src', imageSrcTransformer )\n\t\t.register( 'image', imageTransformer )\n\t\t.register(\n\t\t\t'layout-direction',\n\t\t\tcreateMultiPropsTransformer( [ 'row', 'column' ], ( { propKey, key } ) => `${ key }-${ propKey }` )\n\t\t)\n\t\t.register(\n\t\t\t'border-width',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'block-start', 'block-end', 'inline-start', 'inline-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-width`\n\t\t\t)\n\t\t)\n\t\t.register(\n\t\t\t'border-radius',\n\t\t\tcreateMultiPropsTransformer(\n\t\t\t\t[ 'start-start', 'start-end', 'end-start', 'end-end' ],\n\t\t\t\t( { key } ) => `border-${ key }-radius`\n\t\t\t)\n\t\t)\n\t\t.registerFallback( plainTransformer );\n}\n","import { 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,oBAA8B;;;ACA9B,IAAAA,SAAuB;AACvB,6BAAgD;AAChD,gCAKO;;;ACPP,YAAuB;AACvB,gBAA4B;AAC5B,IAAAC,gBAA0D;;;ACF1D,mBAA0B;AAInB,SAAS,2BAA4B,SAAsB,UAAwB;AACzF,8BAAW,MAAM;AAChB,UAAM,KAAK;AAEX,UAAM,EAAE,QAAQ,MAAM,IAAI,WAAY,SAAS,CAAE;AAEjD,WAAO,QAAS,CAAE,CAAE,WAAW,QAAS,MAAO,GAAG,iBAAkB,WAAW,QAAS,CAAE;AAC1F,UAAM,QAAS,CAAE,CAAE,UAAU,SAAU,MAAO,GAAG,aAAc,UAAU,SAAU,CAAE;AAErF,WAAO,MAAM;AACZ,aAAO,QAAS,CAAE,CAAE,WAAW,QAAS,MAAO,GAAG,oBAAqB,WAAW,QAAS,CAAE;AAC7F,YAAM,QAAS,CAAE,CAAE,QAAS,MAAO,GAAG,gBAAiB,QAAS,CAAE;AAAA,IACnE;AAAA,EACD,GAAG,CAAE,UAAU,OAAQ,CAAE;AAC1B;AAOA,SAAS,WAAY,OAAe;AACnC,QAAM,aAAa;AAEnB,SAAO,OAAO,QAAS,KAAM,EAAE;AAAA,IAC9B,CAAE,KAAK,CAAE,UAAU,SAAU,MAAO;AACnC,UAAK,CAAE,WAAW,KAAM,QAAS,GAAI;AACpC,YAAI,MAAM,KAAM,CAAE,UAAU,SAAoB,CAAE;AAElD,eAAO;AAAA,MACR;AAEA,YAAM,YAAY,SAAS,QAAS,YAAY,EAAG,EAAE,YAAY;AACjE,YAAM,WAAW;AAEjB,UAAI,OAAO,KAAM,CAAE,WAAW,QAAS,CAAE;AAEzC,aAAO;AAAA,IACR;AAAA,IACA;AAAA,MACC,QAAQ,CAAC;AAAA,MACT,OAAO,CAAC;AAAA,IACT;AAAA,EACD;AACD;;;AChDA,IAAAC,gBAAoC;AACpC,IAAAA,gBAAsD;AAO/C,SAAS,qBAAsB,EAAE,SAAS,WAAW,GAAa;AACxE,QAAM,CAAE,QAAQ,SAAU,QAAI,wBAAU,KAAM;AAE9C,QAAM,EAAE,MAAM,gBAAgB,QAAQ,QAAI,2BAAa;AAAA;AAAA,IAEtD,MAAM,UAAU;AAAA,IAChB,cAAc;AAAA,IAEd,sBAAsB;AAAA,IAEtB,YAAY;AAAA;AAAA,UAEX,oBAAM;AAAA,QACL,MAAO,EAAE,UAAU,MAAM,GAAI;AAC5B,iBAAO,OAAQ,SAAS,SAAS,OAAO;AAAA,YACvC,OAAO,GAAI,MAAM,UAAU,QAAQ,CAAE;AAAA,YACrC,QAAQ,GAAI,MAAM,UAAU,SAAS,CAAE;AAAA,UACxC,CAAE;AAAA,QACH;AAAA,MACD,CAAE;AAAA;AAAA,UAGF,sBAAQ,CAAE,EAAE,MAAM,MAAO,CAAC,MAAM,UAAU,SAAS,IAAI,MAAM,SAAS,SAAS,CAAE;AAAA,IAClF;AAAA,EACD,CAAE;AAEF,+BAAW,MAAM;AAIhB,SAAK,aAAc,OAAQ;AAAA,EAC5B,GAAG,CAAE,SAAS,IAAK,CAAE;AAErB,SAAO;AAAA,IACN,WAAW,UAAU;AAAA,IACrB;AAAA,IACA,UAAU;AAAA,MACT,QAAQ,KAAK;AAAA,MACb,KAAK,KAAK;AAAA,MACV,QAAQ;AAAA,IACT;AAAA,EACD;AACD;;;AF3CO,IAAM,oBAAoB;AAQjC,IAAM,iBAAa,kBAAQ,eAAK,EAAE,mBAAmB,CAAE,SAAU,SAAS,aAAa,CAAE,EAEtF,CAAE,EAAE,OAAO,WAAW,OAAS;AAAA,EACjC,SAAS,GAAI,aAAa,QAAQ,KAAM,UAAW,MAAM,QAAQ,QAAQ,KAAM;AAAA,EAC/E,eAAe,aAAa,SAAS;AAAA,EACrC,eAAe;AAChB,EAAI;AAEG,SAAS,eAAgB,EAAE,SAAS,YAAY,GAAG,GAAW;AACpE,QAAM,EAAE,SAAS,UAAU,UAAU,IAAI,qBAAsB,EAAE,SAAS,WAAW,CAAE;AACvF,QAAM,EAAE,kBAAkB,kBAAkB,QAAI,+BAAiB,KAAE,wBAAU,OAAQ,CAAE,CAAE;AAEzF,6BAA4B,SAAS,iBAAkB;AAEvD,SACC,aACC,oCAAC,gCAAe,IAAK,qBACpB;AAAA,IAAC;AAAA;AAAA,MACA,KAAM,SAAS;AAAA,MACf;AAAA,MACA,OAAQ,SAAS;AAAA,MACjB,wBAAuB;AAAA,MACvB,MAAK;AAAA,MACH,GAAG,iBAAiB;AAAA;AAAA,EACvB,CACD;AAGH;;;ADhCO,SAAS,mBAAmB;AAClC,QAAM,eAAW,2CAAmB;AACpC,QAAM,WAAW,eAAe;AAChC,QAAM,sBAAkB,uCAAY;AAEpC,QAAM,aAAa,oBAAoB;AACvC,QAAM,uBAAmB,0BAAAC,2BAAkB,cAAe;AAE1D,QAAM,WAAW,cAAc,CAAE;AAEjC,SACC,YACA,SAAS,IAAK,CAAE,CAAE,IAAI,OAAQ,MAC7B,qCAAC,kBAAe,KAAM,IAAK,IAAU,SAAoB,YAAa,SAAS,SAAS,OAAO,IAAK,CACnG;AAEJ;AAEA,IAAM,qBAAqB;AAI3B,SAAS,iBAAiB;AACzB,aAAO,0BAAAC;AAAA,IACN,KAAE,uCAAa,mCAAoC,OAAG,uCAAa,oCAAqC,CAAE;AAAA,IAC1G,MAAM;AACL,iBAAO,oCAAY,EACjB,OAAQ,CAAE,OAAQ,uBAAwB,GAAG,MAAM,IAAI,WAAW,CAAC,EAAI,EACvE,IAAK,CAAE,YAAa,CAAE,QAAQ,IAAI,QAAQ,MAAM,gBAAgB,GAAG,MAAO,CAAE,CAAE,CAAE,EAChF,OAAQ,CAAE,SAAkC,CAAC,CAAE,KAAM,CAAE,CAAE;AAAA,IAC5D;AAAA,EACD;AACD;;;AI3CA,IAAAC,SAAuB;AACvB,IAAAC,6BAAqE;AACrE,IAAAC,aAAuB;;;ACFvB,IAAAC,gBAAiF;AACjF,sCAAsD;AACtD,IAAAC,6BAAiC;;;ACD1B,SAAS,kBACf,IACgC;AAChC,MAAI,kBAA0C;AAE9C,SAAO,IAAK,SAAiB;AAC5B,QAAK,iBAAkB;AACtB,sBAAgB,MAAM;AAAA,IACvB;AAEA,sBAAkB,IAAI,gBAAgB;AAEtC,WAAO,GAAI,iBAAiB,GAAG,IAAK;AAAA,EACrC;AACD;;;ACJO,SAAS,kBACf,QACA,QAAiB,CAAC,GACc;AAChC,SAAO;AAAA,IACN,MAAM,CAAE,OAAQ;AACf,YAAM,KAAM,EAAG;AAEf,aAAO,kBAAmB,QAAQ,KAAM;AAAA,IACzC;AAAA,IAEA,SAAS,YAAY;AACpB,UAAI;AAEJ,iBAAY,QAAQ,OAAQ;AAC3B,YAAK,OAAO,SAAU;AACrB;AAAA,QACD;AAEA,qBAAa,MAAM,KAAM,YAAY,MAAO;AAAA,MAC7C;AAAA,IACD;AAAA,EACD;AACD;;;AClCA,IAAAC,gBAAkC;AAE3B,SAAS,WAAY,IAAiB;AAC5C,QAAM,cAAU,sBAAQ,KAAM;AAE9B,+BAAW,MAAM;AAChB,QAAK,CAAE,QAAQ,SAAU;AACxB,cAAQ,UAAU;AAElB,SAAG;AAAA,IACJ;AAAA,EACD,GAAG,CAAC,CAAE;AACP;;;ACZA,IAAAC,gBAAwB;AACxB,2BAAgC;;;ACDhC,0BAOO;;;ACAA,IAAM,eAAe,CAAE,cAAmD;AAChF,SACC,CAAC,CAAE,aACH,OAAO,cAAc,YACrB,mBAAmB,aACnB,UAAW,eAAgB,MAAM;AAEnC;AAEO,IAAM,wBAAwB,CAAE,UAA8B;AACpE,SAAO;AAAA,IACN,iBAAiB;AAAA,IACjB,OAAO;AAAA,EACR;AACD;AAEO,IAAM,qBAAqB,CAAE,eAAmC;AACtE,SAAO,WAAW;AACnB;;;ADWA,IAAM,wBAAwB;AAEvB,SAAS,oBAAqB,EAAE,cAAc,QAAQ,eAAe,cAAc,GAA4B;AACrH,iBAAe,QAAS,EAAE,OAAO,QAAQ,OAAO,GAA2C;AAC1F,aAAS,UAAU;AAEnB,UAAM,WAAW,QAAQ;AAAA,MACxB,OAAO,QAAS,MAAO,EAAE,IAAK,OAAQ,CAAE,KAAK,IAAK,MAAO;AACxD,cAAM,QAAQ,MAAO,GAAI,KAAK,KAAK;AAEnC,cAAM,cAAc,MAAM,UAAW,EAAE,OAAO,KAAK,MAAM,OAAO,CAAE;AAElE,wBAAiB,EAAE,KAAK,OAAO,YAAY,CAAE;AAE7C,YAAK,aAAc,WAAY,GAAI;AAClC,iBAAO,mBAAoB,WAAY;AAAA,QACxC;AAEA,eAAO,EAAE,CAAE,GAAI,GAAG,YAAY;AAAA,MAC/B,CAAE;AAAA,IACH;AAEA,WAAO,OAAO,OAAQ,CAAC,GAAG,IAAK,MAAM,UAAW,OAAQ,OAAQ,CAAE;AAAA,EACnE;AAEA,iBAAe,UAAW,EAAE,OAAO,KAAK,MAAM,QAAQ,QAAQ,EAAE,GAAmB;AAClF,QAAK,UAAU,QAAQ,UAAU,QAAY;AAC5C,aAAO;AAAA,IACR;AAEA,QAAK,KAAE,qCAAiB,KAAM,GAAI;AACjC,aAAO;AAAA,IACR;AAEA,QAAK,QAAQ,uBAAwB;AACpC,aAAO;AAAA,IACR;AAEA,QAAK,MAAM,aAAa,MAAO;AAC9B,aAAO;AAAA,IACR;AAEA,QAAK,KAAK,SAAS,SAAU;AAC5B,aAAO,KAAK,WAAY,MAAM,MAAO;AAErC,UAAK,CAAE,MAAO;AACb,eAAO;AAAA,MACR;AAAA,IACD;AAEA,QAAK,MAAM,WAAW,KAAK,KAAM;AAChC,aAAO;AAAA,IACR;AAGA,QAAI,gBAAgB,MAAM;AAE1B,QAAK,KAAK,SAAS,UAAW;AAC7B,sBAAgB,MAAM,QAAS;AAAA,QAC9B,OAAO;AAAA,QACP,QAAQ,KAAK;AAAA,QACb;AAAA,MACD,CAAE;AAAA,IACH;AAEA,QAAK,KAAK,SAAS,SAAU;AAC5B,sBAAgB,MAAM,QAAQ;AAAA,QAC7B,cAAc;AAAA,UAAK,CAAE,SACpB,UAAW,EAAE,OAAO,MAAM,KAAK,MAAM,KAAK,gBAAgB,OAAO,OAAO,CAAE;AAAA,QAC3E;AAAA,MACD;AAAA,IACD;AAEA,UAAM,cAAc,aAAa,IAAK,MAAM,MAAO;AAEnD,QAAK,CAAE,aAAc;AACpB,aAAO;AAAA,IACR;AAEA,QAAI;AACH,YAAM,cAAc,MAAM,YAAa,eAAe,EAAE,KAAK,OAAO,CAAE;AAEtE,aAAO,UAAW,EAAE,OAAO,aAAa,KAAK,MAAM,QAAQ,OAAO,QAAQ,EAAE,CAAE;AAAA,IAC/E,QAAQ;AACP,aAAO;AAAA,IACR;AAAA,EACD;AAEA,SAAO;AACR;;;AEvHO,SAAS,6BAA6B;AAC5C,QAAM,eAAgC,CAAC;AAEvC,MAAI,sBAA6C;AAEjD,SAAO;AAAA,IACN,SAAU,MAAmB,aAA8B;AAC1D,mBAAc,IAAK,IAAI;AAEvB,aAAO;AAAA,IACR;AAAA,IACA,iBAAkB,aAA8B;AAC/C,4BAAsB;AAEtB,aAAO;AAAA,IACR;AAAA,IACA,IAAK,MAA2C;AAC/C,aAAO,aAAc,IAAK,KAAK;AAAA,IAChC;AAAA,EACD;AACD;;;ACxBO,IAAM,4BAA4B,2BAA2B;;;ACA7D,IAAM,cAA2B,CAAE,YAAY,UAAU,cAAe;AAC9E,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,SAAS,cAAe,YAAY,OAAQ,KAAK;AACnF;;;ALCO,SAAS,uBAAuB;AACtC,aAAO,uBAAS,MAAM;AACrB,WAAO,oBAAqB;AAAA,MAC3B,cAAc;AAAA,MACd,YAAQ,sCAAgB;AAAA,MACxB,eAAe,CAAE,EAAE,KAAK,MAAM,MAAO;AACpC,YAAK,QAAQ,iBAAiB,OAAO,UAAU,UAAW;AACzD;AAAA,QACD;AAEA,oBAAa,KAAM;AAAA,MACpB;AAAA,IACD,CAAE;AAAA,EACH,GAAG,CAAC,CAAE;AACP;;;AMrBA,IAAAC,gBAAwB;AACxB,+BAAkC;;;ACDlC,mBAA4B;AAErB,IAAM,4BAAwB,0BAAiC;AAAA,EACrE,MAAM;AAAA,EACN,SAAS;AACV,CAAE;;;AC0BF,IAAM,gBAAuD;AAAA,EAC5D,OAAO;AACR;AAEO,SAAS,qBAAsB,EAAE,SAAS,aAAa,iBAAiB,GAAG,GAA6B;AAC9G,SAAO,OAAQ,EAAE,QAAQ,OAAO,MAAkD;AACjF,UAAM,oBAAoB,OAAO,IAAK,OAAQ,UAAW;AACxD,YAAM,qBAAqB,OAAO,OAAQ,MAAM,QAAS,EAAE,IAAK,OAAQ,YAAa;AACpF,cAAM,MAAM,MAAM,WAAY,EAAE,OAAO,QAAQ,OAAO,SAAS,OAAO,CAAE;AAExE,eAAO,mBAAmB,EACxB,SAAU,KAAM,EAChB,WAAY,cAAe,EAC3B,UAAW,QAAQ,KAAK,KAAM,EAC9B,eAAgB,QAAQ,KAAK,aAAa,YAAa,QAAQ,KAAK,UAAW,IAAI,IAAK,EACxF,KAAM,GAAI;AAAA,MACb,CAAE;AAEF,YAAM,cAAc,MAAM,QAAQ,IAAK,kBAAmB;AAE1D,aAAO;AAAA,QACN,IAAI,MAAM;AAAA,QACV,OAAO,YAAY,KAAM,EAAG;AAAA,MAC7B;AAAA,IACD,CAAE;AAEF,WAAO,MAAM,QAAQ,IAAK,iBAAkB;AAAA,EAC7C;AACD;AAEA,SAAS,mBAAoB,QAAgB,IAAI,SAAsC;AACtF,SAAO;AAAA,IACN,UAAU,CAAE,EAAE,IAAI,KAAK,MAAwB;AAC9C,YAAM,SAAS,cAAe,IAAK;AAEnC,UAAK,CAAE,QAAS;AACf,cAAM,IAAI,sBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAE;AAAA,MACxD;AAEA,aAAO,mBAAoB,GAAI,KAAM,GAAI,MAAO,GAAI,EAAG,IAAI,OAAQ;AAAA,IACpE;AAAA,IAEA,YAAY,CAAE,WACb,mBAAoB,CAAE,QAAQ,KAAM,EAAE,OAAQ,OAAQ,EAAE,KAAM,GAAI,GAAG,OAAQ;AAAA,IAE9E,WAAW,CAAE,UACZ,mBAAoB,QAAQ,GAAI,KAAM,IAAK,KAAM,KAAK,OAAO,OAAQ;AAAA,IAEtE,gBAAgB,CAAE,eAAmC;AACpD,UAAK,CAAE,YAAY,MAAO;AACzB,eAAO,mBAAoB,OAAO,OAAQ;AAAA,MAC3C;AAEA,YAAMC,QAAO,GAAI,WAAW,IAAK,IAAK,WAAW,KAAM;AAEvD,aAAO,mBAAoB,OAAO,CAAE,QAAS,UAAWA,KAAK,KAAM,GAAI,GAAI;AAAA,IAC5E;AAAA,IAEA,MAAM,CAAE,QAAiB;AACxB,YAAM,MAAM,GAAI,KAAM,IAAK,GAAI;AAE/B,UAAK,CAAE,SAAU;AAChB,eAAO;AAAA,MACR;AAEA,aAAO,QAAS,GAAI;AAAA,IACrB;AAAA,EACD;AACD;AAEA,eAAe,WAAY,EAAE,OAAO,SAAS,OAAO,GAAoB;AACvE,QAAM,cAAc,MAAM,QAAS,EAAE,OAAO,OAAO,CAAE;AAErD,SAAO,OAAO,QAAS,WAAY,EACjC,OAAoB,CAAE,KAAK,CAAE,UAAU,SAAU,MAAO;AACxD,QAAK,cAAc,MAAO;AACzB,aAAO;AAAA,IACR;AAEA,QAAI,KAAM,WAAW,MAAM,YAAY,GAAI;AAE3C,WAAO;AAAA,EACR,GAAG,CAAC,CAAE,EACL,KAAM,EAAG;AACZ;;;AF7GA,IAAM,kBAAkB;AAEjB,SAAS,iBAAkB,SAAyB;AAC1D,QAAM,kBAAc,4CAAkB;AAEtC,aAAO,uBAAS,MAAM;AACrB,WAAO,qBAAsB;AAAA,MAC5B,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,IACD,CAAE;AAAA,EACH,GAAG,CAAE,SAAS,WAAY,CAAE;AAC7B;;;AVDO,SAAS,gBAAgB;AAC/B,QAAM,UAAU,qBAAqB;AACrC,QAAM,eAAe,iBAAkB,OAAQ;AAE/C,QAAM,CAAE,YAAY,aAAc,QAAI,wBAAsC,CAAC,CAAE;AAE/E,QAAM,6BAAyB,uBAAS,MAAM;AAC7C,WAAO,iDAAiB,aAAa,EAAE,IAAK,CAAE,aAAqC;AAClF,aAAO;AAAA,QACN;AAAA,QACA,YAAY,yBAA0B;AAAA,UACrC;AAAA,UACA;AAAA,UACA;AAAA,QACD,CAAE;AAAA,MACH;AAAA,IACD,CAAE;AAAA,EACH,GAAG,CAAE,YAAa,CAAE;AAEpB,+BAAW,MAAM;AAChB,UAAM,eAAe,uBAAuB;AAAA,MAAK,CAAE,EAAE,UAAU,WAAW,MACzE,SAAS,UAAW,UAAW;AAAA,IAChC;AAEA,WAAO,MAAM;AACZ,mBAAa,QAAS,CAAE,gBAAiB,YAAY,CAAE;AAAA,IACxD;AAAA,EACD,GAAG,CAAE,sBAAuB,CAAE;AAE9B,aAAY,MAAM;AACjB,qDAAkB,SAAS,mCAAmC,YAAY;AACzE,YAAM,WAAW,uBAAuB,IAAK,OAAQ,EAAE,WAAW,MAAO,WAAW,CAAE;AAEtF,YAAM,QAAQ,IAAK,QAAS;AAAA,IAC7B,CAAE;AAAA,EACH,CAAE;AAEF,SAAO,OAAO,OAAQ,UAAW,EAC/B,KAAM,CAAE,EAAE,UAAU,UAAU,GAAG,EAAE,UAAU,UAAU,MAAO,UAAU,WAAW,UAAU,QAAS,EACtG,QAAS,CAAE,EAAE,MAAM,MAAO,KAAM;AACnC;AAQA,SAAS,yBAA0B,EAAE,UAAU,cAAc,cAAc,GAAkC;AAC5G,SAAO;AAAA,IAAmB,CAAE,oBAC3B,kBAAmB,gBAAgB,MAAO,EACxC,KAAM,CAAE,GAAG,WAAY,aAAc,EAAE,QAAQ,SAAS,QAAQ,IAAI,GAAG,OAAO,CAAE,CAAE,EAClF,KAAM,CAAE,UAAW;AACnB,oBAAe,CAAE,UAAY;AAAA,QAC5B,GAAG;AAAA,QACH,CAAE,SAAS,OAAO,CAAE,GAAG,EAAE,UAAU,MAAM;AAAA,MAC1C,EAAI;AAAA,IACL,CAAE,EACD,QAAQ;AAAA,EACX;AACD;;;Aa3EO,SAAS,sBAAsB;AACrC,QAAM,iBAAiB;AAEvB,SAAO,eAAe,WAAW,WAAY,CAAE,GAAG,iBAAiB;AACpE;;;AdCO,SAAS,gBAAgB;AAC/B,QAAM,YAAY,mBAAmB;AAErC,QAAM,aAAa,cAAc;AAEjC,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SACC,qCAAC,qBAAO,aACL,WAAW,IAAK,CAAE,SACnB,qCAAC,WAAM,mBAAkB,KAAK,IAAK,KAAM,KAAK,MAC3C,KAAK,KACR,CACC,CACH;AAEF;AAEA,SAAS,qBAAqB;AAC7B,aAAO,2BAAAC,0BAAa,4CAAiB,iCAAkC,GAAG,MAAM,oBAAoB,CAAE;AACvG;;;Ae3BO,IAAM,+BAA+B,2BAA2B;;;ACIhE,SAAS,kBACf,IAGmC;AACnC,SAAO;AACR;;;ACVO,IAAM,mBAAmB,kBAAmB,CAAE,UAAsB;AAC1E,SAAO,MAAM,OAAQ,OAAQ;AAC9B,CAAE;;;ACGK,IAAM,kBAAkB,kBAAmB,CAAE,EAAE,aAAa,cAAc,MAAa;AAC7F,SAAO;AAAA;AAAA,IAEN,MAAM,OAAO,gBAAgB,WAAW,cAAc,cAAc;AAAA,IACpE,QAAQ,gBAAgB,WAAW;AAAA,EACpC;AACD,CAAE;;;ACNK,IAAM,sBAAsB,kBAAmB,CAAE,WAAuB;AAAA,EAC9E,IAAI,MAAM,MAAM;AAAA,EAChB,KAAK,MAAM,OAAO;AACnB,EAAI;;;ACVJ,sBAAmC;AAY5B,IAAM,mBAAmB,kBAAmB,OAAQ,UAAkB;AAC5E,QAAM,EAAE,KAAK,MAAAC,MAAK,IAAI;AAEtB,MAAK,CAAE,KAAK,IAAK;AAChB,WAAO,KAAK,MAAM,EAAE,KAAK,IAAI,IAAI,IAAI;AAAA,EACtC;AAEA,QAAM,aAAa,UAAM,oCAAoB,EAAE,IAAI,IAAI,GAAG,CAAE;AAE5D,QAAM,kBAAkB,YAAY,QAASA,SAAQ,EAAG;AAExD,MAAK,iBAAkB;AACtB,WAAO;AAAA,MACN,KAAK,gBAAgB;AAAA,MACrB,QAAQ,gBAAgB;AAAA,MACxB,OAAO,gBAAgB;AAAA,IACxB;AAAA,EACD;AAEA,MAAK,YAAa;AACjB,WAAO;AAAA,MACN,KAAK,WAAW;AAAA,MAChB,QAAQ,WAAW;AAAA,MACnB,OAAO,WAAW;AAAA,IACnB;AAAA,EACD;AAEA,SAAO;AACR,CAAE;;;ACtCK,IAAM,mBAAmB,kBAAmB,CAAE,UAAoB;AACxE,SAAO;AACR,CAAE;;;ACGK,SAAS,2BAA2B;AAC1C,+BACE,SAAU,WAAW,gBAAiB,EACtC,SAAU,QAAQ,eAAgB,EAClC,SAAU,SAAS,gBAAiB,EACpC,SAAU,aAAa,mBAAoB,EAC3C,iBAAkB,gBAAiB;AACtC;;;ACRO,IAAM,oCAAoC,kBAAmB,CAAE,UAAmC;AACxG,QAAM,EAAE,QAAQ,KAAK,IAAI;AAEzB,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,SAAO,mBAAoB,KAAM,KAAM,KAAM;AAC9C,CAAE;;;ACLK,IAAM,uCAAuC,kBAAmB,CAAE,UAAsC;AAC9G,MAAK,MAAM,SAAS,UAAW;AAC9B,WAAO,6BAA8B,MAAM,SAAU,KAAM,MAAM,KAAM;AAAA,EACxE;AAEA,SAAO,mBAAoB,MAAM,KAAM,QAAS,MAAM,KAAM;AAC7D,CAAE;;;ACbF,IAAM,yBAAyB;AAYxB,IAAM,oCAAoC,kBAAmB,CAAE,UAAmC;AACxG,QAAM,EAAE,OAAO,MAAAC,QAAO,MAAM,WAAW,MAAM,SAAS,MAAM,aAAa,KAAK,IAAI;AAElF,MAAK,CAAE,OAAQ;AACd,WAAO;AAAA,EACR;AAEA,QAAM,MAAM,MAAM,MAAM,OAAQ,MAAM,GAAI,MAAM;AAEhD,QAAM,mBAAmB;AAAA,IACxB;AAAA,IACA;AAAA,IACA;AAAA,IACAA,QAAO,GAAI,YAAY,sBAAuB,MAAOA,KAAK,KAAK;AAAA,EAChE,EAAE,OAAQ,OAAQ;AAElB,SAAO,iBAAiB,KAAM,GAAI;AACnC,CAAE;;;ACxBK,IAAM,2CAA2C;AAAA,EACvD,CAAE,EAAE,GAAG,EAAE,MAAsC,GAAI,KAAK,KAAM,IAAK,KAAK,KAAM;AAC/E;;;ACFO,IAAM,sCAAsC;AAAA,EAClD,CAAE,EAAE,OAAO,OAAO,MAAiC,GAAI,SAAS,MAAO,IAAK,UAAU,MAAO;AAC9F;;;ACFO,IAAM,wBAAwB,kBAAmB,CAAE,UAAuB;AAChF,QAAM,WAAW,MAAO,oBAAqB,KAAK;AAClD,QAAM,QAAQ,MAAM,SAAS;AAE7B,SAAO,GAAI,QAAS,IAAK,KAAM,GAAG,KAAK;AACxC,CAAE;;;ACLK,IAAM,uBAAuB;AAAA,EACnC,CAAE,UAAsB,GAAI,OAAO,KAAM,IAAK,OAAO,UAAU,CAAE;AAClE;;;ACPO,IAAM,gCAAgC,CAAE,cAAuB;AACrE,SAAO,kBAAmB,CAAE,UAAqC,MAAM,OAAQ,OAAQ,EAAE,KAAM,SAAU,CAAE;AAC5G;;;ACCO,IAAM,8BAA8B,CAAE,MAAgB,iBAAgC;AAC5F,SAAO,kBAA+C,CAAE,OAAO,EAAE,KAAK,QAAQ,MAAO;AACpF,UAAM,UAAU,KACd,OAAQ,CAAE,QAAS,MAAO,GAAI,CAAE,EAChC,IAAK,CAAE,QAAS,CAAE,aAAc,EAAE,SAAS,IAAI,CAAE,GAAG,MAAO,GAAI,CAAE,CAAE;AAErE,WAAO,sBAAuB,OAAO,YAAa,OAAQ,CAAE;AAAA,EAC7D,CAAE;AACH;;;ACFO,IAAM,oBAAoB,kBAAmB,CAAE,UAAmB;AACxE,SAAO,CAAE,MAAM,SAAS,MAAM,SAAS,MAAM,MAAM,MAAM,QAAQ,MAAM,OAAO,MAAM,QAAS,EAC3F,OAAQ,OAAQ,EAChB,KAAM,GAAI;AACb,CAAE;;;ACRK,IAAM,kBAAkB,kBAAmB,CAAE,UAAiB;AACpE,SAAO,GAAI,MAAM,IAAK,GAAI,MAAM,IAAK;AACtC,CAAE;;;ACDK,IAAM,oBAAoB,kBAAmB,CAAE,UAAmB;AACxE,QAAM,SAAS;AAAA,IACd,uBAAuB,GAAI,MAAM,KAAM,IAAK,MAAM,KAAM;AAAA,IACxD,QAAQ,GAAI,MAAM,KAAM;AAAA,IACxB,gBAAgB,GAAI,MAAM,KAAM;AAAA,EACjC;AAEA,SAAO,sBAAuB,MAAO;AACtC,CAAE;;;ACCK,SAAS,wBAAwB;AACvC,4BACE,SAAU,QAAQ,eAAgB,EAClC,SAAU,UAAU,iBAAkB,EACtC,SAAU,UAAU,iBAAkB,EACtC;AAAA,IACA;AAAA,IACA;AAAA,MACC,CAAE,eAAe,aAAa,gBAAgB,YAAa;AAAA,MAC3D,CAAE,EAAE,SAAS,IAAI,MAAO,GAAI,OAAQ,IAAK,GAAI;AAAA,IAC9C;AAAA,EACD,EACC,SAAU,cAAc,8BAA+B,GAAI,CAAE,EAC7D,SAAU,cAAc,qBAAsB,EAC9C,SAAU,sBAAsB,8BAA+B,GAAI,CAAE,EACrE,SAAU,4BAA4B,iCAAkC,EACxE,SAAU,4BAA4B,iCAAkC,EACxE,SAAU,+BAA+B,oCAAqC,EAC9E,SAAU,uBAAuB,8BAA+B,GAAI,CAAE,EACtE,SAAU,cAAc,oBAAqB,EAC7C,SAAU,oCAAoC,wCAAyC,EACvF,SAAU,+BAA+B,mCAAoC,EAC7E,SAAU,aAAa,mBAAoB,EAC3C,SAAU,SAAS,gBAAiB,EACpC;AAAA,IACA;AAAA,IACA,4BAA6B,CAAE,OAAO,QAAS,GAAG,CAAE,EAAE,SAAS,IAAI,MAAO,GAAI,GAAI,IAAK,OAAQ,EAAG;AAAA,EACnG,EACC;AAAA,IACA;AAAA,IACA;AAAA,MACC,CAAE,eAAe,aAAa,gBAAgB,YAAa;AAAA,MAC3D,CAAE,EAAE,IAAI,MAAO,UAAW,GAAI;AAAA,IAC/B;AAAA,EACD,EACC;AAAA,IACA;AAAA,IACA;AAAA,MACC,CAAE,eAAe,aAAa,aAAa,SAAU;AAAA,MACrD,CAAE,EAAE,IAAI,MAAO,UAAW,GAAI;AAAA,IAC/B;AAAA,EACD,EACC,iBAAkB,gBAAiB;AACtC;;;AC5DA,IAAAC,0BAAgC;AAChC,IAAAC,6BAAgD;;;ACDhD,mBAAmG;AAO5F,SAAS,oBAAiC;AAChD,QAAM,aAAS,gCAAmB,CAAC,CAAE;AACrC,QAAM,kBAAc,gCAAmB,MAAO;AAE9C,cAAY,yBAA0B,eAAe,UAAW;AAChE,cAAY,yBAA0B,WAAW,UAAW;AAE5D,SAAO;AAAA,IACN,UAAU,OAAO;AAAA,IACjB,QAAQ,YAAY;AAAA,EACrB;AACD;AAEA,SAAS,cAAe,OAAgB;AACvC,QAAM,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACD;AAEA,SAAO,YAAY,SAAU,KAAM,IAAI,QAAQ;AAChD;AAEA,SAAS,UAAW,OAAgB;AACnC,QAAM,mBAAmB,CAAE,SAAS,UAAU,WAAW,MAAO;AAEhE,MAAI;AACH,UAAM,SAAS,IAAI,IAAK,KAAM;AAE9B,WAAO,iBAAiB,SAAU,OAAO,QAAS,IAAI,QAAQ;AAAA,EAC/D,QAAQ;AACP,WAAO;AAAA,EACR;AACD;;;ACjDO,SAAS,kBAAmB,MAAmC;AACrE,QAAM,eAAe;AAErB,SAAO,cAAc,aAAa,UAAU,QAAQ,SAAS,MAAM,OAAO;AAAA,IACzE,UAAU;AACT,aAAO;AAAA,IACR;AAAA,IAEA,UAAU;AACT,aAAO,kCAAkC;AAAA,IAC1C;AAAA,EACD;AACD;AAEO,SAAS,oCAAwD;AACvE,QAAM,eAAe;AAErB,SAAO,cAAc,aAAa,UAAU,QAAQ,SAAS,MAAM,OAAO;AAAA;AAAA,IAEzE,YAAa,MAAkB;AAC9B,YAAM,SAAU,GAAG,IAAK;AAExB,WAAK,eAAgB,wCAAyC;AAC9D,WAAK,sBAAuB,0BAA2B;AAAA,IACxD;AAAA;AAAA,IAGA,aAAc,MAAkB;AAC/B,YAAM,UAAW,GAAG,IAAK;AAEzB,WAAK,eAAgB,yCAA0C;AAC/D,WAAK,sBAAuB,2BAA4B;AAAA,IACzD;AAAA,IAEA,aAAa;AACZ,aAAO;AAAA,QACN,GAAG,MAAM,WAAW;AAAA;AAAA,QAGpB,eAAe;AAAA;AAAA,QAGf,OAAO;AAAA,MACR;AAAA,IACD;AAAA;AAAA,IAGA,YAAY;AACX,YAAM,oBAAoB,CAAE,iBAAiB,aAAa,WAAY;AAEtE,YAAM,qBAAqB,OAAO,QAAS,MAAM,UAAU,CAAE,EAAE;AAAA,QAC9D,CAAE,CAAE,GAAI,MAAO,CAAE,kBAAkB,SAAU,GAAI;AAAA,MAClD;AAEA,aAAO,OAAO,YAAa,kBAAmB;AAAA,IAC/C;AAAA;AAAA,IAGA,gBAAgB;AACf,aAAO,KAAK,IAAI,KAAM,cAAe;AAAA,IACtC;AAAA;AAAA,IAGA,oBAAoB;AACnB,aAAO;AAAA,IACR;AAAA,IAEA,eAAgB,WAAoB;AACnC,aAAO,KAAK;AAAA,QACX,IAAI,YAAa,WAAW;AAAA,UAC3B,QAAQ,EAAE,IAAI,KAAK,MAAM,IAAK,IAAK,EAAE;AAAA,QACtC,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IAEA,sBAAuB,WAAoB;AAC1C,mBAAa,WAAW,WAAY,CAAE,GAAG,cAAc;AAAA,QACtD,IAAI,YAAa,WAAW;AAAA,UAC3B,QAAQ;AAAA,YACP,IAAI,KAAK,MAAM,IAAK,IAAK;AAAA,YACzB,MAAM,KAAK,MAAM,IAAK,YAAa;AAAA,YACnC,SAAS,KAAK,cAAc,EAAE,IAAK,CAAE;AAAA,UACtC;AAAA,QACD,CAAE;AAAA,MACH;AAAA,IACD;AAAA,IAEA,uBAAuB;AACtB,aAAO,MAAM,qBAAqB,EAAE,OAAQ,CAAE,UAAW,MAAM,SAAS,MAAO;AAAA,IAChF;AAAA,EACD;AACD;;;AC9EO,SAAS,2BAA4B,EAAE,MAAM,UAAU,QAAQ,GAA2C;AAChH,QAAM,eAAe;AAErB,SAAO,QAAS,QAAQ,cAAe,EAAE,QAAS,CAAE,CAAE,KAAK,QAAS,MAAO;AAC1E,aAAS,SAAU,KAAK,QAAS;AAAA,EAClC,CAAE;AAEF,QAAM,gBAAgB,oBAAqB;AAAA,IAC1C,cAAc;AAAA,IACd,QAAQ,QAAQ;AAAA,EACjB,CAAE;AAEF,SAAO,cAAc,aAAa,UAAU,QAAQ,SAAS,MAAM,OAAO;AAAA,IACzE,UAAU;AACT,aAAO;AAAA,IACR;AAAA,IAEA,UAAU;AACT,aAAO,2CAA4C;AAAA,QAClD;AAAA,QACA;AAAA,QACA;AAAA,QACA,sBAAsB,QAAQ;AAAA,QAC9B,aAAa,QAAQ;AAAA,MACtB,CAAE;AAAA,IACH;AAAA,EACD;AACD;AAEO,SAAS,eAAgB,SAAgF;AAC/G,SAAO,CAAC,EACP,QAAQ,uBACR,QAAQ,kBACR,QAAQ,sBACR,QAAQ;AAEV;AAUA,SAAS,2CAA4C;AAAA,EACpD;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AACD,GAA2C;AAC1C,QAAM,WAAW,kCAAkC;AAEnD,SAAO,cAAc,SAAS;AAAA,IAC7B,mBAA2C;AAAA,IAE3C,kBAAkB;AACjB,aAAO;AAAA,IACR;AAAA,IAEA,iBAAiB;AAChB,WAAK,OAAO;AAAA,IACb;AAAA;AAAA,IAGA,MAAM,kBAAkB;AACvB,WAAK,sBAAsB;AAE3B,WAAK,kBAAkB,MAAM;AAC7B,WAAK,mBAAmB,IAAI,gBAAgB;AAE5C,YAAM,UAAU,kBAAmB,KAAK,iBAAiB,MAAO,EAC9D,KAAM,CAAE,GAAG,WAAY;AACvB,cAAM,WAAW,KAAK,MAAM,IAAK,UAAW,EAAE,OAAO;AAErD,eAAO,aAAc;AAAA,UACpB,OAAO;AAAA,UACP;AAAA,QACD,CAAE;AAAA,MACH,CAAE,EACD,KAAM,CAAE,qBAAsB;AAE9B,cAAM,UAAU;AAAA,UACf,IAAI,KAAK,MAAM,IAAK,IAAK;AAAA,UACzB;AAAA,UACA,UAAU;AAAA,UACV,aAAa;AAAA,QACd;AAEA,eAAO,SAAS,OAAQ,aAAa,OAAQ;AAAA,MAC9C,CAAE,EACD,KAAM,CAAE,SAAU,KAAK,IAAI,KAAM,IAAK,CAAE;AAE1C,YAAM,QAAQ,QAAQ;AAEtB,WAAK,qBAAqB;AAAA,IAC3B;AAAA;AAAA,IAGA,wBAAwB;AACvB,WAAK,cAAe,wBAAyB;AAAA,IAC9C;AAAA,IAEA,uBAAuB;AACtB,WAAK,eAAe;AAEpB,WAAK,cAAe,iBAAkB;AAAA,IACvC;AAAA,EACD;AACD;;;AH1HO,SAAS,kBAAkB;AACjC,wDAAmB,yCAAa,GAAG,MAAM;AACxC,UAAM,aAAS,yCAAgB,KAAK,CAAC;AACrC,UAAM,eAAe;AAErB,UAAM,WAAW,kBAAkB;AAEnC,WAAO,QAAS,MAAO,EAAE,QAAS,CAAE,CAAE,MAAM,OAAQ,MAAO;AAC1D,UAAK,CAAE,QAAQ,QAAS;AACvB;AAAA,MACD;AAEA,YAAM,cAAc,eAAgB,OAAQ,IACzC,2BAA4B,EAAE,MAAM,UAAU,QAAQ,CAAE,IACxD,kBAAmB,IAAK;AAE3B,mBAAa,UAAU,gBAAgB,oBAAqB,IAAI,YAAY,CAAE;AAAA,IAC/E,CAAE;AAAA,EACH,CAAE;AACH;;;AI3BA,IAAAC,0BAKO;AACP,kCAA8C;AAC9C,IAAAC,6BAA6B;AAE7B,kBAAmB;AAIZ,SAAS,2BAA2B;AAC1C,+CAAc;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAE;AAEF,+CAAc;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAE;AACH;AAoBA,IAAM,uBAA+C;AAAA,EACpD,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,SAAS;AAAA,EACT,IAAI;AAAA,IACH,mBAAmB;AAAA,EACpB;AAAA,EACA,UAAU;AACX;AAEA,SAAS,qBAAsB,MAA2B;AACzD,QAAM,EAAE,aAAa,CAAE,KAAK,SAAU,GAAG,YAAY,IAAI;AACzD,QAAM,iBAAiB;AAEvB,MAAK,gBAAgB,gBAAiB;AACrC,WAAO;AAAA,EACR;AAEA,QAAM,OAAS,QAAkC,iBAAiB,SAAS,IAAI;AAE/E,MAAK,CAAE,MAAM,WAAW,UAAW;AAClC,WAAO;AAAA,EACR;AAEA,QAAM,iBAAiB,KAAK,UAAU;AAEtC,QAAM,eAAiC;AAAA,IACtC,MAAM;AAAA,IACN,aAAS;AAAA,MACR;AAAA,MACA;AAAA,IACD;AAAA,IACA,IAAI;AAAA,IACJ,uBAAuB,CAAE,oBAAqB;AAAA,EAC/C;AAEA,QAAM,UAAU,YAAa,gBAAgB,cAAe;AAE5D,MAAK,SAAU;AACd,4CAAQ,YAAa;AAAA,EACtB;AAEA,SAAO;AACR;AAEA,SAAS,oBAAqB,MAA0B;AACvD,QAAM,EAAE,aAAa,CAAE,KAAK,SAAU,GAAG,OAAO,IAAI;AACpD,QAAM,iBAAiB;AACvB,QAAM,gBAAgB;AAEtB,QAAM,eAAiC;AAAA,IACtC,MAAM;AAAA,IACN,aAAS,gBAAI,qFAAqF,WAAY;AAAA,IAC9G,IAAI;AAAA,IACJ,uBAAuB,CAAE,oBAAqB;AAAA,EAC/C;AAEA,QAAM,YAAY,YAAa,gBAAgB,CAAE,aAAc,CAAE;AAEjE,MAAK,WAAY;AAChB,4CAAQ,YAAa;AAAA,EACtB;AAEA,SAAO;AACR;AAEA,SAAS,YACR,gBACA,gBACU;AACV,MAAK,CAAE,gBAAgB,UAAU,CAAE,gBAAgB,QAAS;AAC3D,WAAO;AAAA,EACR;AAEA,QAAM,2BAA2B,eAAe,KAAM,CAAE,QAAS;AAChE,WAAO,KAAK,SAAK,2CAAmB,IAAI,EAAG,KAAK,CAAC,KAAE,iDAAyB,IAAI,EAAG,IAAI;AAAA,EACxF,CAAE;AAEF,MAAK,CAAE,0BAA2B;AACjC,WAAO;AAAA,EACR;AAEA,QAAM,2BAA2B,eAAe,KAAM,CAAE,WAAY;AACnE,WAAO,QAAQ,SAAK,2CAAmB,OAAO,EAAG,KAAK,CAAC,KAAE,+CAAuB,OAAO,EAAG,IAAI;AAAA,EAC/F,CAAE;AAEF,SAAO;AACR;;;AClIA,IAAAC,6BAKO;;;ACNP,IAAAC,0BAMO;AAEP,IAAAC,mCAA+C;AAC/C,IAAAC,6BAAyB;AACzB,IAAAC,eAAmB;;;ACVnB,IAAAC,0BAA2F;AAC3F,IAAAC,uBAAmD;AACnD,IAAAC,eAAmB;AAOZ,SAAS,iBAAkB,MAA+B;AAChE,QAAM,EAAE,aAAa,CAAE,KAAK,SAAU,EAAE,IAAI;AAE5C,SAAO,WAAW,KAAM,cAAe;AACxC;AAEO,SAAS,eAAgB,WAA4C;AAC3E,MAAK,CAAE,WAAY;AAClB,WAAO;AAAA,EACR;AAEA,SAAO,QAAS,mBAAoB,SAAU,CAAE;AACjD;AAEO,SAAS,eAAgB,WAAsC;AACrE,QAAM,cAAc,mBAAoB,SAAU;AAElD,MAAK,CAAE,aAAc;AACpB,WAAO;AAAA,EACR;AAEA,QAAM,CAAE,OAAQ,IACf,OAAO,QAAS,WAAY,EAAE;AAAA,IAC7B,CAAE,CAAE,EAAE,QAAS,MAAO,SAAS,SAAS,WAAW,SAAS,QAAQ;AAAA,EACrE,KAAK,CAAC;AAEP,SAAO,WAAW;AACnB;AAEA,SAAS,mBAAoB,WAA2C;AACvE,QAAM,OAAO,WAAW,MAAM,IAAK,YAAa,KAAK,WAAW,MAAM,IAAK,QAAS;AAEpF,QAAM,mBAAe,yCAAgB;AACrC,QAAM,cAAc,eAAgB,IAAK;AAEzC,SAAO,aAAa,uBAAuB;AAC5C;AAIO,SAAS,qBAAsB,aAAqB,aAA6C;AACvG,MAAI;AACH,UAAM,aAAa,KAAK,MAAO,aAAa,QAAS,WAAY,KAAK,IAAK;AAE3E,WAAO,WAAY,UAAW,GAAG;AAAA,EAClC,QAAQ;AACP,WAAO;AAAA,EACR;AACD;AAEO,SAAS,sBAAuB,YAAkC;AACxE,SAAO,WAAW,SAAS,QAAI,iBAAI,YAAY,WAAY,QAAI,yCAAiB,WAAY,CAAE,EAAE,EAAG;AACpG;;;AD1CO,IAAM,4BAA4B,UACxC;AAAA,EACC;AAAA,IACC,IAAI,CAAE,EAAE,YAAY,SAAS,MAA8B;AAC1D,aAAO,WAAW,IAAK,CAAE,cAAe;AACvC,cAAM,YAAY,UAAU;AAC5B,cAAM,cAAc,eAAgB,SAAU;AAE9C,YAAK,CAAE,aAAc;AACpB,iBAAO;AAAA,QACR;AAEA,cAAM,qBAAiB,0CAAkB,UAAU,EAAG;AAEtD,cAAM,CAAE,SAAS,QAAS,IAAI,OAAO,QAAS,kBAAkB,CAAC,CAAE,EAAG,CAAE,KAAK,CAAC;AAC9E,cAAM,gBAAgB,OAAO,KAAM,YAAY,CAAC,CAAE,EAAE,SAAS,WAAW;AAExE,cAAM,aAAa;AAAA,UAClB;AAAA,UACA;AAAA,QACD;AAEA,YAAK,SAAU;AACd,mBAAS,SAAS,QAAS,CAAE,EAAE,MAAM,MAAM,MAAO;AACjD,4DAAoB;AAAA,cACnB;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACD,CAAE;AAAA,UACH,CAAE;AAAA,QACH,OAAO;AACN,gBAAM,CAAE,YAAa,IAAI,SAAS;AAClC,gBAAM,qBAAqB,SAAS,SAAS,MAAO,CAAE;AAEtD,qBAAW,cAAU,4CAAoB;AAAA,YACxC;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,GAAG;AAAA,YACH;AAAA,UACD,CAAE;AAAA,QACH;AAEA,eAAO;AAAA,MACR,CAAE;AAAA,IACH;AAAA,IAEA,MAAM,CAAE,EAAE,WAAW,GAAG,oBAAqB;AAC5C,iBAAW,QAAS,CAAE,WAAW,UAAW;AAC3C,cAAM,aAAa,gBAAiB,KAAM;AAE1C,YAAK,CAAE,YAAa;AACnB;AAAA,QACD;AAEA,YAAK,CAAE,WAAW,eAAgB;AAEjC,0DAAoB,UAAU,IAAI,WAAW,OAAQ;AAErD;AAAA,QACD;AAEA,cAAM,cAAc,eAAgB,SAAU;AAE9C,YAAK,CAAE,aAAc;AACpB;AAAA,QACD;AAEA,cAAM,CAAE,YAAa,IAAI,WAAW,cAAc;AAClD,cAAM,qBAAqB,WAAW,cAAc,SAAS,MAAO,CAAE;AAEtE,wDAAoB;AAAA,UACnB,WAAW,UAAU;AAAA,UACrB;AAAA,UACA,OAAO;AAAA,UACP,SAAS,WAAW;AAAA,UACpB,GAAG;AAAA,UACH;AAAA,QACD,CAAE;AAAA,MACH,CAAE;AAAA,IACH;AAAA,EACD;AAAA,EACA;AAAA,IACC,OAAO,CAAE,EAAE,WAAW,MAAO,sBAAuB,UAAW;AAAA,IAC/D,cAAU,iBAAI,gBAAgB,WAAY;AAAA,EAC3C;AACD;;;AD3FM,SAAS,wBAAwB;AACvC,QAAM,2BAA2B,0BAA0B;AAE3D,+CAAc;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAE;AAEF,iCAAAC;AAAA,QAAU,8CAAmB,+BAAgC;AAAA,IAAG,CAAE,MACjE,YAAe,EAAoB,MAAM,wBAAyB;AAAA,EACnE;AACD;AAEA,SAAS,YAAa,MAA8B,eAAgE;AACnH,QAAM,EAAE,aAAa,CAAE,KAAK,SAAU,GAAG,WAAW,IAAI;AAExD,QAAM,oBAAoB,qBAAsB,UAAW;AAC3D,QAAM,CAAE,gBAAiB,IAAI,qBAAqB,CAAC;AAEnD,MAAK,CAAE,kBAAmB;AACzB;AAAA,EACD;AAEA,QAAM,gBAAgB,iBAAiB;AACvC,QAAM,eAAe,OAAO,OAAQ,iBAAiB,CAAC,CAAE,EAAG,CAAE;AAE7D,MAAK,CAAE,cAAe;AACrB;AAAA,EACD;AAEA,QAAM,mBAAmB,WAAW,OAAQ,cAAe;AAE3D,MAAK,CAAE,iBAAiB,QAAS;AAChC;AAAA,EACD;AAEA,gBAAe,EAAE,YAAY,kBAAkB,UAAU,aAAa,CAAE;AACzE;;;AGnDA,IAAAC,6BAKO;;;ACNP,IAAAC,0BAAyF;AACzF,IAAAC,mCAA+C;AAC/C,IAAAC,6BAAyB;AACzB,IAAAC,eAAmB;AAQZ,IAAM,4BAA4B,UACxC;AAAA,EACC;AAAA,IACC,IAAI,CAAE,EAAE,WAAW,MAA8B;AAChD,aAAO,WAAW,IAAK,CAAE,cAAe;AACvC,cAAM,YAAY,UAAU,MAAM,IAAK,IAAK;AAE5C,cAAM,sBAAkB,0CAAkB,SAAU;AAEpD,eAAO,KAAM,mBAAmB,CAAC,CAAE,EAAE;AAAA,UAAS,CAAE,gBAC/C,4CAAoB,WAAW,OAAQ;AAAA,QACxC;AAEA,eAAO;AAAA,MACR,CAAE;AAAA,IACH;AAAA,IAEA,MAAM,CAAE,EAAE,WAAW,GAAG,oBAAqB;AAC5C,iBAAW,QAAS,CAAE,WAAW,UAAW;AAC3C,cAAM,cAAc,eAAgB,SAAU;AAE9C,YAAK,CAAE,aAAc;AACpB;AAAA,QACD;AAEA,cAAM,YAAY,UAAU,MAAM,IAAK,IAAK;AAC5C,cAAM,kBAAkB,gBAAiB,KAAM;AAE/C,eAAO,QAAS,mBAAmB,CAAC,CAAE,EAAE,QAAS,CAAE,CAAE,SAAS,KAAM,MAAO;AAC1E,gBAAM,CAAE,YAAa,IAAI,MAAM;AAC/B,gBAAM,qBAAqB,MAAM,SAAS,MAAO,CAAE;AAEnD,0DAAoB;AAAA,YACnB;AAAA,YACA;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,GAAG;AAAA,YACH;AAAA,UACD,CAAE;AAAA,QACH,CAAE;AAAA,MACH,CAAE;AAAA,IACH;AAAA,EACD;AAAA,EACA;AAAA,IACC,OAAO,CAAE,EAAE,WAAW,MAAO,sBAAuB,UAAW;AAAA,IAC/D,cAAU,iBAAI,eAAe,WAAY;AAAA,EAC1C;AACD;;;ADhDM,SAAS,wBAAwB;AACvC,QAAM,qBAAqB,0BAA0B;AAErD,+CAAc;AAAA,IACb,SAAS;AAAA,IACT,WAAW;AAAA,EACZ,CAAE;AAEF,iCAAAC;AAAA,QAAU,8CAAmB,+BAAgC;AAAA,IAAG,CAAE,MACjE,YAAe,EAAoB,MAAM,kBAAmB;AAAA,EAC7D;AACD;AAEA,SAAS,YAAa,MAAqB,oBAAqE;AAC/G,QAAM,EAAE,aAAa,CAAE,KAAK,SAAU,EAAE,IAAI;AAC5C,QAAM,mBAAmB,WAAW,OAAQ,cAAe;AAE3D,MAAK,CAAE,iBAAiB,QAAS;AAChC;AAAA,EACD;AAEA,qBAAoB,EAAE,YAAY,iBAAiB,CAAE;AACtD;;;AE9BO,SAAS,oBAAoB;AACnC,wBAAsB;AACtB,wBAAsB;AACvB;;;AnDIO,SAAS,OAAO;AACtB,wBAAsB;AACtB,oBAAkB;AAElB,2BAAyB;AAEzB,kBAAgB;AAEhB,2BAAyB;AAEzB,mCAAe;AAAA,IACd,IAAI;AAAA,IACJ,WAAW;AAAA,EACZ,CAAE;AAEF,mCAAe;AAAA,IACd,IAAI;AAAA,IACJ,WAAW;AAAA,EACZ,CAAE;AACH;","names":["React","import_react","import_react","useIsRouteActive","useListenTo","React","import_editor_v1_adapters","import_ui","import_react","import_editor_v1_adapters","import_react","import_react","import_react","size","useListenTo","size","size","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"]}