@elementor/editor-canvas 0.3.0 → 0.5.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.
Files changed (42) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/CHANGELOG.md +29 -0
  3. package/dist/index.js +162 -127
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +158 -123
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +4 -4
  8. package/src/__tests__/init-styles-renderer.test.ts +1 -1
  9. package/src/init-styles-renderer.ts +1 -1
  10. package/src/styles-renderer/__tests__/__mocks__/styles-schema.ts +785 -0
  11. package/src/styles-renderer/__tests__/index.test.ts +644 -71
  12. package/src/styles-renderer/get-styles-schema.ts +17 -0
  13. package/src/styles-renderer/multi-props.ts +26 -0
  14. package/src/styles-renderer/render.ts +10 -12
  15. package/src/styles-renderer/resolve.ts +99 -0
  16. package/src/styles-renderer/transformers/background-color-overlay-transformer.ts +9 -0
  17. package/src/styles-renderer/transformers/background-transformer.ts +12 -0
  18. package/src/styles-renderer/transformers/create-combine-array-transformer.ts +4 -15
  19. package/src/styles-renderer/transformers/create-corner-sizes-transformer.ts +33 -0
  20. package/src/styles-renderer/transformers/create-edge-sizes-transformer.ts +31 -0
  21. package/src/styles-renderer/transformers/gap-transformer.ts +20 -0
  22. package/src/styles-renderer/transformers/index.ts +22 -15
  23. package/src/styles-renderer/transformers/linked-dimensions-transformer.ts +13 -8
  24. package/src/styles-renderer/transformers/primitive-transformer.ts +7 -0
  25. package/src/styles-renderer/transformers/shadow-transformer.ts +5 -16
  26. package/src/styles-renderer/transformers/size-transformer.ts +3 -5
  27. package/src/styles-renderer/transformers/stroke-transformer.ts +3 -5
  28. package/src/styles-renderer/types.ts +3 -6
  29. package/src/styles-renderer/__tests__/__mocks__/style-definitions.ts +0 -171
  30. package/src/styles-renderer/transform.ts +0 -34
  31. package/src/styles-renderer/transformers/__tests__/background-overlay-transformer.test.ts +0 -46
  32. package/src/styles-renderer/transformers/__tests__/create-combine-array-transformer.test.ts +0 -61
  33. package/src/styles-renderer/transformers/__tests__/linked-dimensions-transformer.test.ts +0 -34
  34. package/src/styles-renderer/transformers/__tests__/shadow-transformer.test.ts +0 -127
  35. package/src/styles-renderer/transformers/__tests__/size-transformer.test.ts +0 -37
  36. package/src/styles-renderer/transformers/__tests__/stroke-transformer.test.ts +0 -59
  37. package/src/styles-renderer/transformers/background-overlay-transformer.ts +0 -13
  38. package/src/styles-renderer/transformers/border-radius-transformer.ts +0 -20
  39. package/src/styles-renderer/transformers/border-width-transformer.ts +0 -15
  40. package/src/styles-renderer/transformers/color-transformer.ts +0 -11
  41. package/src/styles-renderer/transformers/number-transformer.ts +0 -11
  42. package/src/styles-renderer/transformers/string-transformer.ts +0 -11
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.3.0 build
2
+ > @elementor/editor-canvas@0.5.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 15.13 KB
14
- ESM dist/index.mjs.map 28.40 KB
15
- ESM ⚡️ Build success in 147ms
16
- CJS dist/index.js 16.91 KB
17
- CJS dist/index.js.map 28.61 KB
18
- CJS ⚡️ Build success in 148ms
13
+ ESM dist/index.mjs 15.56 KB
14
+ ESM dist/index.mjs.map 32.17 KB
15
+ ESM ⚡️ Build success in 94ms
16
+ CJS dist/index.js 17.08 KB
17
+ CJS dist/index.js.map 32.16 KB
18
+ CJS ⚡️ Build success in 103ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 18242ms
20
+ DTS ⚡️ Build success in 17517ms
21
21
  DTS dist/index.d.mts 13.00 B
22
22
  DTS dist/index.d.ts 13.00 B
package/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - b8e2a87: Background infra changes
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [ed4260a]
12
+ - @elementor/editor-styles-repository@0.3.0
13
+
14
+ ## 0.4.0
15
+
16
+ ### Minor Changes
17
+
18
+ - 11b6ef6: Allow zero value in style transformers.
19
+ - ff35b95: Added Gaps field with a control, proptype and a transformer
20
+
21
+ ### Patch Changes
22
+
23
+ - 6f2b17f: Introduce empty (local) style def for class selector.
24
+ - 8943189: Refactor canvas styles rendering
25
+ - Updated dependencies [6f2b17f]
26
+ - Updated dependencies [8943189]
27
+ - Updated dependencies [ff35b95]
28
+ - @elementor/editor-styles-repository@0.2.0
29
+ - @elementor/editor-elements@0.3.3
30
+ - @elementor/editor-props@0.5.0
31
+
3
32
  ## 0.3.0
4
33
 
5
34
  ### Minor Changes
package/dist/index.js CHANGED
@@ -152,167 +152,205 @@ function ElementsOverlays() {
152
152
  var import_editor_responsive = require("@elementor/editor-responsive");
153
153
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
154
154
 
155
- // src/styles-renderer/transformers/background-overlay-transformer.ts
156
- var import_editor_props = require("@elementor/editor-props");
157
- var backgroundOverlayTransformer = (propValue, { transform }) => {
158
- if (import_editor_props.colorGradientPropTypeUtil.isValid(propValue)) {
159
- return `linear-gradient( ${[transform(propValue.value.color)]}, ${[
160
- transform(propValue.value.color)
161
- ]} )`;
162
- }
163
- };
164
- var background_overlay_transformer_default = backgroundOverlayTransformer;
165
-
166
- // src/styles-renderer/transformers/border-radius-transformer.ts
167
- var import_editor_props2 = require("@elementor/editor-props");
168
- var borderRadiusTransformer = (propValue, { transform }) => {
169
- if (import_editor_props2.borderRadiusPropTypeUtil.isValid(propValue)) {
170
- const {
171
- "top-left": topLeft,
172
- "top-right": topRight,
173
- "bottom-right": bottomRight,
174
- "bottom-left": bottomLeft
175
- } = propValue.value || {};
176
- return `${transform(topLeft) || "unset"} ${transform(topRight) || "unset"} ${transform(bottomRight) || "unset"} ${transform(bottomLeft) || "unset"}`;
177
- }
155
+ // src/styles-renderer/transformers/background-color-overlay-transformer.ts
156
+ var backgroundColorOverlayTransformer = (value) => {
157
+ return `linear-gradient(${value}, ${value})`;
178
158
  };
179
- var border_radius_transformer_default = borderRadiusTransformer;
180
-
181
- // src/styles-renderer/transformers/border-width-transformer.ts
182
- var import_editor_props3 = require("@elementor/editor-props");
183
- var borderWidthTransformer = (propValue, { transform }) => {
184
- if (import_editor_props3.borderWidthPropTypeUtil.isValid(propValue)) {
185
- const { top, right, bottom, left } = propValue.value || {};
186
- return `${transform(top) || "unset"} ${transform(right) || "unset"} ${transform(bottom) || "unset"} ${transform(left) || "unset"}`;
187
- }
188
- };
189
- var border_width_transformer_default = borderWidthTransformer;
159
+ var background_color_overlay_transformer_default = backgroundColorOverlayTransformer;
190
160
 
191
- // src/styles-renderer/transformers/color-transformer.ts
192
- var import_editor_props4 = require("@elementor/editor-props");
193
- var colorTransformer = (propValue) => {
194
- if (import_editor_props4.colorPropTypeUtil.isValid(propValue)) {
195
- return propValue.value;
196
- }
161
+ // src/styles-renderer/transformers/background-transformer.ts
162
+ var backgroundTransformer = (value) => {
163
+ const overlays = value["background-overlay"] ?? "";
164
+ const color = value.color ?? "";
165
+ return `${overlays} ${color}`.trim();
197
166
  };
198
- var color_transformer_default = colorTransformer;
167
+ var background_transformer_default = backgroundTransformer;
199
168
 
200
169
  // src/styles-renderer/transformers/create-combine-array-transformer.ts
201
- var import_schema = require("@elementor/schema");
202
- var schema = import_schema.z.object({
203
- $$type: import_schema.z.string(),
204
- value: import_schema.z.array(import_schema.z.any())
205
- });
206
- var createCombineArrayTransformer = (delimiter) => (propValue, { transform }) => {
207
- const { success, data } = schema.safeParse(propValue);
208
- if (success) {
209
- return data.value.map((item) => transform(item)).join(delimiter);
210
- }
170
+ var createCombineArrayTransformer = (delimiter) => {
171
+ return (value) => value.filter(Boolean).join(delimiter);
211
172
  };
212
173
  var create_combine_array_transformer_default = createCombineArrayTransformer;
213
174
 
175
+ // src/styles-renderer/multi-props.ts
176
+ var isMultiProps = (propValue) => {
177
+ return !!propValue && typeof propValue === "object" && "$$multi-props" in propValue && propValue["$$multi-props"] === true;
178
+ };
179
+ var createMultiPropsValue = (props) => {
180
+ return {
181
+ "$$multi-props": true,
182
+ value: props
183
+ };
184
+ };
185
+ var getMultiPropsValue = (multiProps) => {
186
+ return multiProps.value;
187
+ };
188
+
189
+ // src/styles-renderer/transformers/create-corner-sizes-transformer.ts
190
+ var validCorners = ["top-left", "top-right", "bottom-left", "bottom-right"];
191
+ var createCornerSizesTransformer = (keyGenerator) => (value) => {
192
+ const props = Object.entries(value).reduce((acc, [corner, cornerValue]) => {
193
+ if (validCorners.includes(corner)) {
194
+ const key = keyGenerator(corner);
195
+ acc[key] = cornerValue;
196
+ }
197
+ return acc;
198
+ }, {});
199
+ return createMultiPropsValue(props);
200
+ };
201
+ var create_corner_sizes_transformer_default = createCornerSizesTransformer;
202
+
203
+ // src/styles-renderer/transformers/create-edge-sizes-transformer.ts
204
+ var validEdges = ["top", "right", "bottom", "left"];
205
+ var createEdgeSizesTransformer = (keyGenerator) => (value) => {
206
+ const props = Object.entries(value).reduce((acc, [edge, edgeValue]) => {
207
+ if (validEdges.includes(edge)) {
208
+ const key = keyGenerator(edge);
209
+ acc[key] = edgeValue;
210
+ }
211
+ return acc;
212
+ }, {});
213
+ return createMultiPropsValue(props);
214
+ };
215
+ var create_edge_sizes_transformer_default = createEdgeSizesTransformer;
216
+
217
+ // src/styles-renderer/transformers/gap-transformer.ts
218
+ var validKeys = ["row", "column"];
219
+ var gapTransformer = (value, key) => {
220
+ const parsed = Object.entries(value).reduce((acc, [dimensionKey, dimensionValue]) => {
221
+ if (dimensionValue && validKeys.includes(dimensionKey)) {
222
+ acc[`${dimensionKey}-${key}`] = dimensionValue;
223
+ }
224
+ return acc;
225
+ }, {});
226
+ return createMultiPropsValue(parsed);
227
+ };
228
+ var gap_transformer_default = gapTransformer;
229
+
214
230
  // src/styles-renderer/transformers/linked-dimensions-transformer.ts
215
- var import_editor_props5 = require("@elementor/editor-props");
216
- var linkedDimensionsTransformer = (propValue, { transform }) => {
217
- if (import_editor_props5.linkedDimensionsPropTypeUtil.isValid(propValue)) {
218
- const { top, right, bottom, left } = propValue.value || {};
219
- return `${transform(top) || "unset"} ${transform(right) || "unset"} ${transform(bottom) || "unset"} ${transform(left) || "unset"}`;
220
- }
231
+ var validKeys2 = ["top", "right", "bottom", "left"];
232
+ var linkedDimensionsTransformer = (value, key) => {
233
+ const parsed = Object.entries(value).reduce((acc, [dimensionKey, dimensionValue]) => {
234
+ if (dimensionValue && validKeys2.includes(dimensionKey)) {
235
+ acc[`${key}-${dimensionKey}`] = dimensionValue;
236
+ }
237
+ return acc;
238
+ }, {});
239
+ return createMultiPropsValue(parsed);
221
240
  };
222
241
  var linked_dimensions_transformer_default = linkedDimensionsTransformer;
223
242
 
224
- // src/styles-renderer/transformers/number-transformer.ts
225
- var import_editor_props6 = require("@elementor/editor-props");
226
- var numberTransformer = (propValue) => {
227
- if (import_editor_props6.numberPropTypeUtil.isValid(propValue)) {
228
- return propValue.value;
229
- }
243
+ // src/styles-renderer/transformers/primitive-transformer.ts
244
+ var primitiveTransformer = (value) => {
245
+ return value;
230
246
  };
231
- var number_transformer_default = numberTransformer;
232
247
 
233
248
  // src/styles-renderer/transformers/shadow-transformer.ts
234
- var import_editor_props7 = require("@elementor/editor-props");
235
- var shadowTransformer = (propValue, { transform }) => {
236
- if (import_editor_props7.shadowPropTypeUtil.isValid(propValue)) {
237
- const { position, hOffset, vOffset, blur, spread, color } = propValue.value || {};
238
- return [
239
- transform(hOffset),
240
- transform(vOffset),
241
- transform(blur),
242
- transform(spread),
243
- transform(color),
244
- position
245
- ].filter(Boolean).join(" ");
246
- }
249
+ var shadowTransformer = (value) => {
250
+ return [value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position].filter(Boolean).join(" ");
247
251
  };
248
252
  var shadow_transformer_default = shadowTransformer;
249
253
 
250
254
  // src/styles-renderer/transformers/size-transformer.ts
251
- var import_editor_props8 = require("@elementor/editor-props");
252
- var sizeTransformer = (propValue) => {
253
- if (import_editor_props8.sizePropTypeUtil.isValid(propValue)) {
254
- return propValue.value && propValue.value.size + propValue.value.unit;
255
- }
255
+ var sizeTransformer = (value) => {
256
+ return `${value.size}${value.unit}`;
256
257
  };
257
258
  var size_transformer_default = sizeTransformer;
258
259
 
259
- // src/styles-renderer/transformers/string-transformer.ts
260
- var import_editor_props9 = require("@elementor/editor-props");
261
- var stringTransformer = (propValue) => {
262
- if (import_editor_props9.stringPropTypeUtil.isValid(propValue)) {
263
- return propValue.value;
264
- }
265
- };
266
- var string_transformer_default = stringTransformer;
267
-
268
260
  // src/styles-renderer/transformers/stroke-transformer.ts
269
- var import_editor_props10 = require("@elementor/editor-props");
270
- var strokeTransformer = (propValue, { transform }) => {
271
- if (import_editor_props10.strokePropTypeUtil.isValid(propValue)) {
272
- return `${transform(propValue.value?.width)} ${transform(propValue.value?.color)}`;
273
- }
261
+ var strokeTransformer = (value) => {
262
+ return `${value.width} ${value.color}`;
274
263
  };
275
264
  var stroke_transformer_default = strokeTransformer;
276
265
 
277
266
  // src/styles-renderer/transformers/index.ts
278
267
  var transformers_default = {
279
- color: color_transformer_default,
280
- number: number_transformer_default,
281
268
  size: size_transformer_default,
282
269
  shadow: shadow_transformer_default,
283
- string: string_transformer_default,
284
270
  stroke: stroke_transformer_default,
285
- "border-radius": border_radius_transformer_default,
286
- "border-width": border_width_transformer_default,
287
- "box-shadow": create_combine_array_transformer_default(", "),
288
- "background-image": create_combine_array_transformer_default(", "),
271
+ gap: gap_transformer_default,
272
+ background: background_transformer_default,
273
+ color: primitiveTransformer,
274
+ number: primitiveTransformer,
275
+ string: primitiveTransformer,
289
276
  "linked-dimensions": linked_dimensions_transformer_default,
290
- "background-overlay": background_overlay_transformer_default
277
+ "background-color-overlay": background_color_overlay_transformer_default,
278
+ "background-overlay": create_combine_array_transformer_default(","),
279
+ "box-shadow": create_combine_array_transformer_default(","),
280
+ "border-width": create_edge_sizes_transformer_default((edgeKey) => `border-${edgeKey}-width`),
281
+ "border-radius": create_corner_sizes_transformer_default((cornerKey) => `border-${cornerKey}-radius`)
291
282
  };
292
283
 
293
284
  // src/styles-renderer/render.ts
294
285
  var import_utils = require("@elementor/utils");
295
286
 
296
- // src/styles-renderer/transform.ts
297
- var import_editor_props11 = require("@elementor/editor-props");
298
- var FALLBACK_VALUE = "unset";
299
- function transformValue(value, transformers) {
300
- if (!(0, import_editor_props11.isTransformable)(value)) {
287
+ // src/styles-renderer/get-styles-schema.ts
288
+ var getStylesSchema = () => {
289
+ const extendedWindow = window;
290
+ return extendedWindow.elementor?.config?.atomic?.styles_schema ?? {};
291
+ };
292
+
293
+ // src/styles-renderer/resolve.ts
294
+ var import_editor_props = require("@elementor/editor-props");
295
+ var TRANSFORM_DEPTH_LIMIT = 3;
296
+ function resolve({ props, schema, transformers }) {
297
+ const resolved = {};
298
+ Object.entries(schema).forEach(([key, propType]) => {
299
+ const value = props[key] ?? propType.default;
300
+ const transformed = transform(value, key, propType, transformers);
301
+ if (transformed === null) {
302
+ return;
303
+ }
304
+ if (isMultiProps(transformed)) {
305
+ Object.assign(resolved, getMultiPropsValue(transformed));
306
+ return;
307
+ }
308
+ resolved[key] = transformed;
309
+ });
310
+ return resolved;
311
+ }
312
+ function transform(value, propKey, propType, transformers, depth = 0) {
313
+ if (!value && value !== 0) {
314
+ return null;
315
+ }
316
+ if (!(0, import_editor_props.isTransformable)(value)) {
301
317
  return value;
302
318
  }
319
+ if (depth > TRANSFORM_DEPTH_LIMIT) {
320
+ return null;
321
+ }
322
+ if (value.disabled === true) {
323
+ return null;
324
+ }
325
+ if (propType.kind === "union") {
326
+ propType = propType.prop_types[value.$$type];
327
+ if (!propType) {
328
+ return null;
329
+ }
330
+ }
331
+ let resolvedValue = value.value;
332
+ if (propType.kind === "object") {
333
+ resolvedValue = resolve({
334
+ transformers,
335
+ props: resolvedValue,
336
+ schema: propType.shape
337
+ });
338
+ }
339
+ if (propType.kind === "array") {
340
+ resolvedValue = resolvedValue.map(
341
+ (item) => transform(item, propKey, propType.item_prop_type, transformers, depth)
342
+ );
343
+ }
303
344
  const transformer = transformers[value.$$type];
304
345
  if (!transformer) {
305
- console.error(`Transformer not found for prop type '${value.$$type}'`);
306
- return FALLBACK_VALUE;
346
+ return null;
307
347
  }
308
- const transformedValue = transformer(value, {
309
- transform: (v) => transformValue(v, transformers)
310
- });
311
- if (transformedValue === void 0) {
312
- console.error(`Transformer '${value.$$type}' received unsupported value`);
313
- return FALLBACK_VALUE;
348
+ try {
349
+ const transformed = transformer(resolvedValue, propKey);
350
+ return transform(transformed, propKey, propType, transformers, depth + 1);
351
+ } catch {
352
+ return null;
314
353
  }
315
- return transformValue(transformedValue, transformers);
316
354
  }
317
355
 
318
356
  // src/styles-renderer/render.ts
@@ -362,15 +400,12 @@ function variantToStyleDeclaration(baseSelector, variant, transformers, breakpoi
362
400
  return styleDeclaration;
363
401
  }
364
402
  function propsToCss(props, transformers) {
365
- return Object.entries(props).reduce((acc, [cssProp, cssValue]) => {
366
- const prop = camelCaseToDash(cssProp);
367
- const value = transformValue(cssValue, transformers);
368
- acc.push(prop + ":" + value);
403
+ const schema = getStylesSchema();
404
+ const transformed = resolve({ props, schema, transformers });
405
+ return Object.entries(transformed).reduce((acc, [propName, propValue]) => {
406
+ acc.push(propName + ":" + propValue + ";");
369
407
  return acc;
370
- }, []).join(";");
371
- }
372
- function camelCaseToDash(str) {
373
- return str.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
408
+ }, []).join("");
374
409
  }
375
410
  function wrapWithMediaQuery(breakpoints, breakpoint, css) {
376
411
  const size2 = getBreakpointSize(breakpoints[breakpoint]);
@@ -419,7 +454,7 @@ var WRAPPER_DATA_ATTR = "data-styles-container";
419
454
  function initStylesRenderer() {
420
455
  import_editor_styles_repository.stylesRepository.subscribe(() => {
421
456
  const styleContainer = getStylesContainer();
422
- const styles = Object.values(import_editor_styles_repository.stylesRepository.all());
457
+ const styles = import_editor_styles_repository.stylesRepository.all();
423
458
  const breakpoints = (0, import_editor_responsive.getBreakpointsMap)();
424
459
  styleContainer.innerHTML = render({ transformers: transformers_default, styles, breakpoints });
425
460
  enqueueUsedFonts(styles);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/init-styles-renderer.ts","../src/styles-renderer/transformers/background-overlay-transformer.ts","../src/styles-renderer/transformers/border-radius-transformer.ts","../src/styles-renderer/transformers/border-width-transformer.ts","../src/styles-renderer/transformers/color-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/transformers/linked-dimensions-transformer.ts","../src/styles-renderer/transformers/number-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/string-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/transform.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n}\n","import * as React from 'react';\nimport { useElementsDomRef, useSelectedElement } from '@elementor/editor-elements';\nimport {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\tdomElements.map( ( el ) => (\n\t\t\t<ElementOverlay\n\t\t\t\telement={ el }\n\t\t\t\tkey={ el.dataset.id }\n\t\t\t\tisSelected={ selected.element?.id === el.dataset.id }\n\t\t\t/>\n\t\t) )\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nconst OverlayBox = styled( Box, { shouldForwardProp: ( prop ) => prop !== 'isSelected' } )<\n\tPick< Props, 'isSelected' >\n>( ( { theme, isSelected } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ element.dataset.id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\t// Add an animation frame to support scroll events (without it the floating element will stay in the same position).\n\t\twhileElementsMounted: ( ...args ) => autoUpdate( ...args, { animationFrame: true } ),\n\n\t\t// The first element in the canvas is `display: contents` so we need to use the first child.\n\t\telements: { reference: element.firstElementChild },\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\nimport { getCanvasIframeBody } from './sync/get-canvas-iframe-body';\n\nconst WRAPPER_DATA_ATTR = 'data-styles-container';\n\nexport function initStylesRenderer() {\n\tstylesRepository.subscribe( () => {\n\t\tconst styleContainer = getStylesContainer();\n\t\tconst styles = Object.values( stylesRepository.all() );\n\t\tconst breakpoints = getBreakpointsMap();\n\n\t\tstyleContainer.innerHTML = render( { transformers, styles, breakpoints } );\n\n\t\tenqueueUsedFonts( styles );\n\t} );\n}\n\nfunction getStylesContainer() {\n\tconst preview = getCanvasIframeBody();\n\tconst stylesContainer = preview?.querySelector( `[${ WRAPPER_DATA_ATTR }]` );\n\n\tif ( stylesContainer ) {\n\t\treturn stylesContainer;\n\t}\n\n\tconst el = createStylesContainer();\n\n\tpreview?.prepend( el );\n\n\treturn el;\n}\n\nfunction createStylesContainer() {\n\tconst el = document.createElement( 'div' );\n\tel.style.display = 'none';\n\tel.setAttribute( WRAPPER_DATA_ATTR, '' );\n\n\treturn el;\n}\n","import { colorGradientPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundOverlayTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( colorGradientPropTypeUtil.isValid( propValue ) ) {\n\t\treturn `linear-gradient( ${ [ transform( propValue.value.color ) ] }, ${ [\n\t\t\ttransform( propValue.value.color ),\n\t\t] } )`;\n\t}\n};\n\nexport default backgroundOverlayTransformer;\n","import { borderRadiusPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst borderRadiusTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( borderRadiusPropTypeUtil.isValid( propValue ) ) {\n\t\tconst {\n\t\t\t'top-left': topLeft,\n\t\t\t'top-right': topRight,\n\t\t\t'bottom-right': bottomRight,\n\t\t\t'bottom-left': bottomLeft,\n\t\t} = propValue.value || {};\n\n\t\treturn `${ transform( topLeft ) || 'unset' } ${ transform( topRight ) || 'unset' } ${\n\t\t\ttransform( bottomRight ) || 'unset'\n\t\t} ${ transform( bottomLeft ) || 'unset' }`;\n\t}\n};\n\nexport default borderRadiusTransformer;\n","import { borderWidthPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst borderWidthTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( borderWidthPropTypeUtil.isValid( propValue ) ) {\n\t\tconst { top, right, bottom, left } = propValue.value || {};\n\n\t\treturn `${ transform( top ) || 'unset' } ${ transform( right ) || 'unset' } ${\n\t\t\ttransform( bottom ) || 'unset'\n\t\t} ${ transform( left ) || 'unset' }`;\n\t}\n};\n\nexport default borderWidthTransformer;\n","import { colorPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst colorTransformer: Transformer = ( propValue ) => {\n\tif ( colorPropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue.value;\n\t}\n};\n\nexport default colorTransformer;\n","import { z } from '@elementor/schema';\n\nimport { type Transformer } from '../types';\n\nexport const schema = z.object( {\n\t$$type: z.string(),\n\tvalue: z.array( z.any() ),\n} );\n\nconst createCombineArrayTransformer =\n\t( delimiter: string ): Transformer =>\n\t( propValue, { transform } ) => {\n\t\tconst { success, data } = schema.safeParse( propValue );\n\n\t\tif ( success ) {\n\t\t\treturn data.value.map( ( item ) => transform( item ) ).join( delimiter );\n\t\t}\n\t};\n\nexport default createCombineArrayTransformer;\n","import { linkedDimensionsPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst linkedDimensionsTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( linkedDimensionsPropTypeUtil.isValid( propValue ) ) {\n\t\tconst { top, right, bottom, left } = propValue.value || {};\n\n\t\treturn `${ transform( top ) || 'unset' } ${ transform( right ) || 'unset' } ${\n\t\t\ttransform( bottom ) || 'unset'\n\t\t} ${ transform( left ) || 'unset' }`;\n\t}\n};\n\nexport default linkedDimensionsTransformer;\n","import { numberPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst numberTransformer: Transformer = ( propValue ) => {\n\tif ( numberPropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue.value;\n\t}\n};\n\nexport default numberTransformer;\n","import { shadowPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( shadowPropTypeUtil.isValid( propValue ) ) {\n\t\tconst { position, hOffset, vOffset, blur, spread, color } = propValue.value || {};\n\n\t\treturn [\n\t\t\ttransform( hOffset ),\n\t\t\ttransform( vOffset ),\n\t\t\ttransform( blur ),\n\t\t\ttransform( spread ),\n\t\t\ttransform( color ),\n\t\t\tposition,\n\t\t]\n\t\t\t.filter( Boolean )\n\t\t\t.join( ' ' );\n\t}\n};\n\nexport default shadowTransformer;\n","import { sizePropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer = ( propValue ) => {\n\tif ( sizePropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue.value && propValue.value.size + propValue.value.unit;\n\t}\n};\n\nexport default sizeTransformer;\n","import { stringPropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst stringTransformer: Transformer = ( propValue ) => {\n\tif ( stringPropTypeUtil.isValid( propValue ) ) {\n\t\treturn propValue.value;\n\t}\n};\n\nexport default stringTransformer;\n","import { strokePropTypeUtil } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer = ( propValue, { transform } ) => {\n\tif ( strokePropTypeUtil.isValid( propValue ) ) {\n\t\treturn `${ transform( propValue.value?.width ) } ${ transform( propValue.value?.color ) }`;\n\t}\n};\n\nexport default strokeTransformer;\n","import { default as backgroundOverlay } from './background-overlay-transformer';\nimport { default as borderRadius } from './border-radius-transformer';\nimport { default as borderWidth } from './border-width-transformer';\nimport { default as color } from './color-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport { default as linkedDimensions } from './linked-dimensions-transformer';\nimport { default as number } from './number-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as string } from './string-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tcolor,\n\tnumber,\n\tsize,\n\tshadow,\n\tstring,\n\tstroke,\n\t'border-radius': borderRadius,\n\t'border-width': borderWidth,\n\t'box-shadow': createCombineArrayTransformer( ', ' ),\n\t'background-image': createCombineArrayTransformer( ', ' ),\n\t'linked-dimensions': linkedDimensions,\n\t'background-overlay': backgroundOverlay,\n};\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointId, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleVariant } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { transformValue } from './transform';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n};\n\nexport default function render( { transformers, styles, breakpoints }: RenderParams ) {\n\tconst cssStyle: string[] = [];\n\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tconst style = renderStyle( styleDef, transformers, breakpoints );\n\n\t\t\tcssStyle.push( wrapWithStyleElement( styleDef.id, style ) );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot render style': ${ ensureError( error ).message }` );\n\t}\n\n\treturn cssStyle.join( '' );\n}\n\nfunction renderStyle( style: StyleDefinition, transformers: TransformersMap, breakpoints: BreakpointsMap ) {\n\tconst baseSelector = getBaseSelector( style );\n\n\tif ( ! baseSelector ) {\n\t\treturn '';\n\t}\n\n\tconst stylesheet: string[] = [];\n\n\tObject.values( style.variants ).forEach( ( variant ) => {\n\t\tconst styleDeclaration = variantToStyleDeclaration( baseSelector, variant, transformers, breakpoints );\n\n\t\tif ( styleDeclaration ) {\n\t\t\tstylesheet.push( styleDeclaration );\n\t\t}\n\t} );\n\n\treturn stylesheet.join( '' );\n}\n\nfunction getBaseSelector( styleDef: StyleDefinition ) {\n\tconst map = {\n\t\tclass: '.',\n\t};\n\n\treturn `${ map[ styleDef.type ] }${ styleDef.id }`;\n}\n\nfunction variantToStyleDeclaration(\n\tbaseSelector: string,\n\tvariant: StyleVariant,\n\ttransformers: TransformersMap,\n\tbreakpoints: BreakpointsMap\n) {\n\tconst css = propsToCss( variant.props, transformers );\n\n\tif ( ! css ) {\n\t\treturn '';\n\t}\n\n\tconst state = variant.meta.state ? `:${ variant.meta.state }` : '';\n\tconst selector = `${ baseSelector }${ state }`;\n\n\tlet styleDeclaration = `${ selector }{${ css }}`;\n\n\tif ( variant.meta.breakpoint ) {\n\t\tstyleDeclaration = wrapWithMediaQuery( breakpoints, variant.meta.breakpoint, styleDeclaration );\n\t}\n\n\treturn styleDeclaration;\n}\n\nfunction propsToCss( props: Props, transformers: TransformersMap ) {\n\treturn Object.entries( props )\n\t\t.reduce< string[] >( ( acc, [ cssProp, cssValue ] ) => {\n\t\t\tconst prop = camelCaseToDash( cssProp );\n\t\t\tconst value = transformValue( cssValue, transformers );\n\n\t\t\tacc.push( prop + ':' + value );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( ';' );\n}\n\nfunction camelCaseToDash( str: string ) {\n\treturn str.replace( /([a-zA-Z])(?=[A-Z])/g, '$1-' ).toLowerCase();\n}\n\nfunction wrapWithMediaQuery( breakpoints: BreakpointsMap, breakpoint: BreakpointId, css: string ) {\n\tconst size = getBreakpointSize( breakpoints[ breakpoint ] );\n\treturn size ? `@media(${ size }){${ css }}` : css;\n}\n\nfunction getBreakpointSize( breakpoint: Breakpoint ) {\n\treturn breakpoint.type ? `${ breakpoint.type }:${ breakpoint.width }px` : null;\n}\n\nfunction wrapWithStyleElement( id: string, content: string ) {\n\treturn `<style data-style-id=\"${ id }\">${ content }</style>`;\n}\n","import { isTransformable, type PropValue } from '@elementor/editor-props';\n\nimport { type TransformersMap } from './types';\n\nconst FALLBACK_VALUE = 'unset';\n\nexport function transformValue( value: PropValue | undefined, transformers: TransformersMap ): PropValue {\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Transformer not found for prop type '${ value.$$type }'` );\n\n\t\treturn FALLBACK_VALUE;\n\t}\n\n\tconst transformedValue = transformer( value, {\n\t\ttransform: ( v ) => transformValue( v, transformers ),\n\t} );\n\n\tif ( transformedValue === undefined ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Transformer '${ value.$$type }' received unsupported value` );\n\n\t\treturn FALLBACK_VALUE;\n\t}\n\n\t// Transform recursively to support transformers that return transformable values.\n\treturn transformValue( transformedValue, transformers );\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] ?? null;\n\n\t\t\t\tif ( fontFamily && typeof fontFamily === 'string' ) {\n\t\t\t\t\tenqueueFont( fontFamily );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeBody() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.body;\n}\n","import { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","import_react","import_react","useIsPreviewMode","useIsRouteActive","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","import_editor_props","size","import_utils"]}
1
+ {"version":3,"sources":["../src/init.tsx","../src/components/elements-overlays.tsx","../src/components/element-overlay.tsx","../src/hooks/use-bind-react-props-to-element.ts","../src/hooks/use-floating-on-element.ts","../src/init-styles-renderer.ts","../src/styles-renderer/transformers/background-color-overlay-transformer.ts","../src/styles-renderer/transformers/background-transformer.ts","../src/styles-renderer/transformers/create-combine-array-transformer.ts","../src/styles-renderer/multi-props.ts","../src/styles-renderer/transformers/create-corner-sizes-transformer.ts","../src/styles-renderer/transformers/create-edge-sizes-transformer.ts","../src/styles-renderer/transformers/gap-transformer.ts","../src/styles-renderer/transformers/linked-dimensions-transformer.ts","../src/styles-renderer/transformers/primitive-transformer.ts","../src/styles-renderer/transformers/shadow-transformer.ts","../src/styles-renderer/transformers/size-transformer.ts","../src/styles-renderer/transformers/stroke-transformer.ts","../src/styles-renderer/transformers/index.ts","../src/styles-renderer/render.ts","../src/styles-renderer/get-styles-schema.ts","../src/styles-renderer/resolve.ts","../src/styles-renderer/enqueue-used-fonts.ts","../src/sync/enqueue-font.ts","../src/sync/get-canvas-iframe-body.ts","../src/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\nimport { initStylesRenderer } from './init-styles-renderer';\n\nexport function init() {\n\tinitStylesRenderer();\n\n\tinjectIntoTop( {\n\t\tid: 'elements-overlays',\n\t\tcomponent: ElementsOverlays,\n\t} );\n}\n","import * as React from 'react';\nimport { useElementsDomRef, useSelectedElement } from '@elementor/editor-elements';\nimport {\n\t__privateUseIsPreviewMode as useIsPreviewMode,\n\t__privateUseIsRouteActive as useIsRouteActive,\n} from '@elementor/editor-v1-adapters';\n\nimport { ElementOverlay } from './element-overlay';\n\nexport function ElementsOverlays() {\n\tconst selected = useSelectedElement();\n\tconst domElements = useElementsDomRef();\n\n\tconst isPreviewMode = useIsPreviewMode();\n\tconst isKitRouteActive = useIsRouteActive( 'panel/global' );\n\n\tconst isActive = ! isPreviewMode && ! isKitRouteActive;\n\n\treturn (\n\t\tisActive &&\n\t\tdomElements.map( ( el ) => (\n\t\t\t<ElementOverlay\n\t\t\t\telement={ el }\n\t\t\t\tkey={ el.dataset.id }\n\t\t\t\tisSelected={ selected.element?.id === el.dataset.id }\n\t\t\t/>\n\t\t) )\n\t);\n}\n","import * as React from 'react';\nimport { Box, styled } from '@elementor/ui';\nimport { FloatingPortal, useHover, useInteractions } from '@floating-ui/react';\n\nimport { useBindReactPropsToElement } from '../hooks/use-bind-react-props-to-element';\nimport { useFloatingOnElement } from '../hooks/use-floating-on-element';\n\nexport const CANVAS_WRAPPER_ID = 'elementor-preview-responsive-wrapper';\n\ntype Props = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nconst OverlayBox = styled( Box, { shouldForwardProp: ( prop ) => prop !== 'isSelected' } )<\n\tPick< Props, 'isSelected' >\n>( ( { theme, isSelected } ) => ( {\n\toutline: `${ isSelected ? '2px' : '1px' } solid ${ theme.palette.primary.light }`,\n\toutlineOffset: isSelected ? '-2px' : '-1px',\n\tpointerEvents: 'none',\n} ) );\n\nexport function ElementOverlay( { element, isSelected }: Props ) {\n\tconst { context, floating, isVisible } = useFloatingOnElement( { element, isSelected } );\n\tconst { getFloatingProps, getReferenceProps } = useInteractions( [ useHover( context ) ] );\n\n\tuseBindReactPropsToElement( element, getReferenceProps );\n\n\treturn (\n\t\tisVisible && (\n\t\t\t<FloatingPortal id={ CANVAS_WRAPPER_ID }>\n\t\t\t\t<OverlayBox\n\t\t\t\t\tref={ floating.setRef }\n\t\t\t\t\tisSelected={ isSelected }\n\t\t\t\t\tstyle={ floating.styles }\n\t\t\t\t\tdata-element-overlay={ element.dataset.id }\n\t\t\t\t\trole=\"presentation\"\n\t\t\t\t\t{ ...getFloatingProps() }\n\t\t\t\t/>\n\t\t\t</FloatingPortal>\n\t\t)\n\t);\n}\n","import { useEffect } from 'react';\n\ntype Props = Record< string, unknown >;\n\nexport function useBindReactPropsToElement( element: HTMLElement, getProps: () => Props ) {\n\tuseEffect( () => {\n\t\tconst el = element;\n\n\t\tconst { events, attrs } = groupProps( getProps() );\n\n\t\tevents.forEach( ( [ eventName, listener ] ) => el.addEventListener( eventName, listener ) );\n\t\tattrs.forEach( ( [ attrName, attrValue ] ) => el.setAttribute( attrName, attrValue ) );\n\n\t\treturn () => {\n\t\t\tevents.forEach( ( [ eventName, listener ] ) => el.removeEventListener( eventName, listener ) );\n\t\t\tattrs.forEach( ( [ attrName ] ) => el.removeAttribute( attrName ) );\n\t\t};\n\t}, [ getProps, element ] );\n}\n\ntype GroupedProps = {\n\tevents: Array< [ string, () => void ] >;\n\tattrs: Array< [ string, string ] >;\n};\n\nfunction groupProps( props: Props ) {\n\tconst eventRegex = /^on(?=[A-Z])/;\n\n\treturn Object.entries( props ).reduce< GroupedProps >(\n\t\t( acc, [ propName, propValue ] ) => {\n\t\t\tif ( ! eventRegex.test( propName ) ) {\n\t\t\t\tacc.attrs.push( [ propName, propValue as string ] );\n\n\t\t\t\treturn acc;\n\t\t\t}\n\n\t\t\tconst eventName = propName.replace( eventRegex, '' ).toLowerCase();\n\t\t\tconst listener = propValue as () => void;\n\n\t\t\tacc.events.push( [ eventName, listener ] );\n\n\t\t\treturn acc;\n\t\t},\n\t\t{\n\t\t\tevents: [],\n\t\t\tattrs: [],\n\t\t}\n\t);\n}\n","import { useState } from 'react';\nimport { autoUpdate, offset, size, useFloating } from '@floating-ui/react';\n\ntype Options = {\n\telement: HTMLElement;\n\tisSelected: boolean;\n};\n\nexport function useFloatingOnElement( { element, isSelected }: Options ) {\n\tconst [ isOpen, setIsOpen ] = useState( false );\n\n\tconst { refs, floatingStyles, context } = useFloating( {\n\t\t// Must be controlled for interactions (like hover) to work.\n\t\topen: isOpen || isSelected,\n\t\tonOpenChange: setIsOpen,\n\n\t\t// Add an animation frame to support scroll events (without it the floating element will stay in the same position).\n\t\twhileElementsMounted: ( ...args ) => autoUpdate( ...args, { animationFrame: true } ),\n\n\t\t// The first element in the canvas is `display: contents` so we need to use the first child.\n\t\telements: { reference: element.firstElementChild },\n\n\t\tmiddleware: [\n\t\t\t// Match the floating element's size to the reference element.\n\t\t\tsize( {\n\t\t\t\tapply( { elements, rects } ) {\n\t\t\t\t\tObject.assign( elements.floating.style, {\n\t\t\t\t\t\twidth: `${ rects.reference.width }px`,\n\t\t\t\t\t\theight: `${ rects.reference.height }px`,\n\t\t\t\t\t} );\n\t\t\t\t},\n\t\t\t} ),\n\n\t\t\t// Center the floating element on the reference element.\n\t\t\toffset( ( { rects } ) => -rects.reference.height / 2 - rects.floating.height / 2 ),\n\t\t],\n\t} );\n\n\treturn {\n\t\tisVisible: isOpen || isSelected,\n\t\tcontext,\n\t\tfloating: {\n\t\t\tsetRef: refs.setFloating,\n\t\t\tref: refs.floating,\n\t\t\tstyles: floatingStyles,\n\t\t},\n\t};\n}\n","import { getBreakpointsMap } from '@elementor/editor-responsive';\nimport { stylesRepository } from '@elementor/editor-styles-repository';\n\nimport { render, transformers } from './styles-renderer';\nimport enqueueUsedFonts from './styles-renderer/enqueue-used-fonts';\nimport { getCanvasIframeBody } from './sync/get-canvas-iframe-body';\n\nconst WRAPPER_DATA_ATTR = 'data-styles-container';\n\nexport function initStylesRenderer() {\n\tstylesRepository.subscribe( () => {\n\t\tconst styleContainer = getStylesContainer();\n\t\tconst styles = stylesRepository.all();\n\t\tconst breakpoints = getBreakpointsMap();\n\n\t\tstyleContainer.innerHTML = render( { transformers, styles, breakpoints } );\n\n\t\tenqueueUsedFonts( styles );\n\t} );\n}\n\nfunction getStylesContainer() {\n\tconst preview = getCanvasIframeBody();\n\tconst stylesContainer = preview?.querySelector( `[${ WRAPPER_DATA_ATTR }]` );\n\n\tif ( stylesContainer ) {\n\t\treturn stylesContainer;\n\t}\n\n\tconst el = createStylesContainer();\n\n\tpreview?.prepend( el );\n\n\treturn el;\n}\n\nfunction createStylesContainer() {\n\tconst el = document.createElement( 'div' );\n\tel.style.display = 'none';\n\tel.setAttribute( WRAPPER_DATA_ATTR, '' );\n\n\treturn el;\n}\n","import { type BackgroundColorOverlayPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundColorOverlayTransformer: Transformer< BackgroundColorOverlayPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value }, ${ value })`;\n};\n\nexport default backgroundColorOverlayTransformer;\n","import { type BackgroundPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundTransformer: Transformer< BackgroundPropValue[ 'value' ] > = ( value ) => {\n\tconst overlays = value[ 'background-overlay' ] ?? '';\n\tconst color = value.color ?? '';\n\n\treturn `${ overlays } ${ color }`.trim();\n};\n\nexport default backgroundTransformer;\n","import { type Transformer } from '../types';\n\ntype CreateCombineArrayTransformer = ( delimiter: string ) => Transformer< Array< string | number > >;\n\nconst createCombineArrayTransformer: CreateCombineArrayTransformer = ( delimiter ) => {\n\treturn ( value ) => value.filter( Boolean ).join( delimiter );\n};\n\nexport default createCombineArrayTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nexport type MultiProps = {\n\t'$$multi-props': true;\n\tvalue: Props;\n};\n\nexport const isMultiProps = ( propValue: PropValue ): propValue is MultiProps => {\n\treturn (\n\t\t!! propValue &&\n\t\ttypeof propValue === 'object' &&\n\t\t'$$multi-props' in propValue &&\n\t\tpropValue[ '$$multi-props' ] === true\n\t);\n};\n\nexport const createMultiPropsValue = ( props: Props ): MultiProps => {\n\treturn {\n\t\t'$$multi-props': true,\n\t\tvalue: props,\n\t};\n};\n\nexport const getMultiPropsValue = ( multiProps: MultiProps ): Props => {\n\treturn multiProps.value;\n};\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type CornerSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateCornerSizesTransformer = (\n\tkeyGenerator: ( cornerKey: string ) => string\n) => Transformer< CornerSizes >;\n\nconst validCorners = [ 'top-left', 'top-right', 'bottom-left', 'bottom-right' ];\n\nconst createCornerSizesTransformer: CreateCornerSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ corner, cornerValue ] ) => {\n\t\tif ( validCorners.includes( corner ) ) {\n\t\t\tconst key = keyGenerator( corner );\n\n\t\t\tacc[ key ] = cornerValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createCornerSizesTransformer;\n","import { type Props, type PropValue } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nexport type EdgeSizes = {\n\ttop?: PropValue;\n\tright?: PropValue;\n\tbottom?: PropValue;\n\tleft?: PropValue;\n};\n\nexport type CreateEdgeSizesTransformer = ( keyGenerator: ( edgeKey: string ) => string ) => Transformer< EdgeSizes >;\n\nconst validEdges = [ 'top', 'right', 'bottom', 'left' ];\n\nconst createEdgeSizesTransformer: CreateEdgeSizesTransformer = ( keyGenerator ) => ( value ) => {\n\tconst props = Object.entries( value ).reduce< Props >( ( acc, [ edge, edgeValue ] ) => {\n\t\tif ( validEdges.includes( edge ) ) {\n\t\t\tconst key = keyGenerator( edge );\n\n\t\t\tacc[ key ] = edgeValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( props );\n};\n\nexport default createEdgeSizesTransformer;\n","import { type GapPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'row', 'column' ];\n\nconst gapTransformer: Transformer< GapPropValue[ 'value' ] > = ( value, key ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ dimensionKey }-${ key }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default gapTransformer;\n","import { type LinkedDimensionsPropValue, type Props } from '@elementor/editor-props';\n\nimport { createMultiPropsValue } from '../multi-props';\nimport { type Transformer } from '../types';\n\nconst validKeys = [ 'top', 'right', 'bottom', 'left' ];\n\nconst linkedDimensionsTransformer: Transformer< LinkedDimensionsPropValue[ 'value' ] > = ( value, key ) => {\n\tconst parsed = Object.entries( value ).reduce< Props >( ( acc, [ dimensionKey, dimensionValue ] ) => {\n\t\tif ( dimensionValue && validKeys.includes( dimensionKey ) ) {\n\t\t\tacc[ `${ key }-${ dimensionKey }` ] = dimensionValue;\n\t\t}\n\n\t\treturn acc;\n\t}, {} );\n\n\treturn createMultiPropsValue( parsed );\n};\n\nexport default linkedDimensionsTransformer;\n","import { type Transformer } from '../types';\n\ntype Primitive = string | number | boolean;\n\nexport const primitiveTransformer: Transformer< Primitive > = ( value ) => {\n\treturn value;\n};\n","import { type ShadowPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst shadowTransformer: Transformer< ShadowPropValue[ 'value' ] > = ( value ) => {\n\treturn [ value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position ]\n\t\t.filter( Boolean )\n\t\t.join( ' ' );\n};\n\nexport default shadowTransformer;\n","import { type SizePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst sizeTransformer: Transformer< SizePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.size }${ value.unit }`;\n};\n\nexport default sizeTransformer;\n","import { type StrokePropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst strokeTransformer: Transformer< StrokePropValue[ 'value' ] > = ( value ) => {\n\treturn `${ value.width } ${ value.color }`;\n};\n\nexport default strokeTransformer;\n","import { type TransformersMap } from '../types';\nimport backgroundColorOverlayTransformer from './background-color-overlay-transformer';\nimport { default as background } from './background-transformer';\nimport { default as createCombineArrayTransformer } from './create-combine-array-transformer';\nimport createCornerSizesTransformer from './create-corner-sizes-transformer';\nimport createEdgeSizesTransformer from './create-edge-sizes-transformer';\nimport { default as gap } from './gap-transformer';\nimport { default as linkedDimensions } from './linked-dimensions-transformer';\nimport { primitiveTransformer } from './primitive-transformer';\nimport { default as shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tsize,\n\tshadow,\n\tstroke,\n\tgap,\n\tbackground,\n\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\t'linked-dimensions': linkedDimensions,\n\t'background-color-overlay': backgroundColorOverlayTransformer,\n\t'background-overlay': createCombineArrayTransformer( ',' ),\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\n\t'border-width': createEdgeSizesTransformer( ( edgeKey ) => `border-${ edgeKey }-width` ),\n\t'border-radius': createCornerSizesTransformer( ( cornerKey ) => `border-${ cornerKey }-radius` ),\n} satisfies TransformersMap;\n","import { type Props } from '@elementor/editor-props';\nimport { type Breakpoint, type BreakpointId, type BreakpointsMap } from '@elementor/editor-responsive';\nimport { type StyleDefinition, type StyleVariant } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { getStylesSchema } from './get-styles-schema';\nimport { resolve } from './resolve';\nimport { type TransformersMap } from './types';\n\ntype RenderParams = {\n\ttransformers: TransformersMap;\n\tstyles: StyleDefinition[];\n\tbreakpoints: BreakpointsMap;\n};\n\nexport default function render( { transformers, styles, breakpoints }: RenderParams ) {\n\tconst cssStyle: string[] = [];\n\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tconst style = renderStyle( styleDef, transformers, breakpoints );\n\n\t\t\tcssStyle.push( wrapWithStyleElement( styleDef.id, style ) );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot render style': ${ ensureError( error ).message }` );\n\t}\n\n\treturn cssStyle.join( '' );\n}\n\nfunction renderStyle( style: StyleDefinition, transformers: TransformersMap, breakpoints: BreakpointsMap ) {\n\tconst baseSelector = getBaseSelector( style );\n\n\tif ( ! baseSelector ) {\n\t\treturn '';\n\t}\n\n\tconst stylesheet: string[] = [];\n\n\tObject.values( style.variants ).forEach( ( variant ) => {\n\t\tconst styleDeclaration = variantToStyleDeclaration( baseSelector, variant, transformers, breakpoints );\n\n\t\tif ( styleDeclaration ) {\n\t\t\tstylesheet.push( styleDeclaration );\n\t\t}\n\t} );\n\n\treturn stylesheet.join( '' );\n}\n\nfunction getBaseSelector( styleDef: StyleDefinition ) {\n\tconst map = {\n\t\tclass: '.',\n\t};\n\n\treturn `${ map[ styleDef.type ] }${ styleDef.id }`;\n}\n\nfunction variantToStyleDeclaration(\n\tbaseSelector: string,\n\tvariant: StyleVariant,\n\ttransformers: TransformersMap,\n\tbreakpoints: BreakpointsMap\n) {\n\tconst css = propsToCss( variant.props, transformers );\n\n\tif ( ! css ) {\n\t\treturn '';\n\t}\n\n\tconst state = variant.meta.state ? `:${ variant.meta.state }` : '';\n\tconst selector = `${ baseSelector }${ state }`;\n\n\tlet styleDeclaration = `${ selector }{${ css }}`;\n\n\tif ( variant.meta.breakpoint ) {\n\t\tstyleDeclaration = wrapWithMediaQuery( breakpoints, variant.meta.breakpoint, styleDeclaration );\n\t}\n\n\treturn styleDeclaration;\n}\n\nfunction propsToCss( props: Props, transformers: TransformersMap ): string {\n\tconst schema = getStylesSchema();\n\n\tconst transformed = resolve( { props, schema, transformers } );\n\n\treturn Object.entries( transformed )\n\t\t.reduce< string[] >( ( acc, [ propName, propValue ] ) => {\n\t\t\tacc.push( propName + ':' + propValue + ';' );\n\n\t\t\treturn acc;\n\t\t}, [] )\n\t\t.join( '' );\n}\n\nfunction wrapWithMediaQuery( breakpoints: BreakpointsMap, breakpoint: BreakpointId, css: string ) {\n\tconst size = getBreakpointSize( breakpoints[ breakpoint ] );\n\treturn size ? `@media(${ size }){${ css }}` : css;\n}\n\nfunction getBreakpointSize( breakpoint: Breakpoint ) {\n\treturn breakpoint.type ? `${ breakpoint.type }:${ breakpoint.width }px` : null;\n}\n\nfunction wrapWithStyleElement( id: string, content: string ) {\n\treturn `<style data-style-id=\"${ id }\">${ content }</style>`;\n}\n","import { type PropKey, type PropType } from '@elementor/editor-props';\n\ntype ExtendedWindow = Window & {\n\telementor?: {\n\t\tconfig?: {\n\t\t\tatomic?: {\n\t\t\t\tstyles_schema?: Record< PropKey, PropType >;\n\t\t\t};\n\t\t};\n\t};\n};\n\nexport const getStylesSchema = () => {\n\tconst extendedWindow = window as unknown as ExtendedWindow;\n\n\treturn extendedWindow.elementor?.config?.atomic?.styles_schema ?? {};\n};\n","import { type PropsSchema } from '@elementor/editor-elements';\nimport { isTransformable, type PropKey, type Props, type PropType, type PropValue } from '@elementor/editor-props';\n\nimport { getMultiPropsValue, isMultiProps } from './multi-props';\nimport { type TransformersMap } from './types';\n\nconst TRANSFORM_DEPTH_LIMIT = 3;\n\ntype ResolveArgs = {\n\tprops: Props;\n\tschema: PropsSchema;\n\ttransformers: TransformersMap;\n};\n\nexport function resolve( { props, schema, transformers }: ResolveArgs ) {\n\tconst resolved: Props = {};\n\n\tObject.entries( schema ).forEach( ( [ key, propType ] ) => {\n\t\tconst value = props[ key ] ?? propType.default;\n\n\t\tconst transformed = transform( value, key, propType, transformers );\n\n\t\tif ( transformed === null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isMultiProps( transformed ) ) {\n\t\t\tObject.assign( resolved, getMultiPropsValue( transformed ) );\n\t\t\treturn;\n\t\t}\n\n\t\tresolved[ key ] = transformed;\n\t} );\n\n\treturn resolved;\n}\n\nfunction transform(\n\tvalue: PropValue,\n\tpropKey: PropKey,\n\tpropType: PropType,\n\ttransformers: TransformersMap,\n\tdepth: number = 0\n) {\n\tif ( ! value && value !== 0 ) {\n\t\treturn null;\n\t}\n\n\tif ( ! isTransformable( value ) ) {\n\t\treturn value;\n\t}\n\n\tif ( depth > TRANSFORM_DEPTH_LIMIT ) {\n\t\treturn null;\n\t}\n\n\tif ( value.disabled === true ) {\n\t\treturn null;\n\t}\n\n\tif ( propType.kind === 'union' ) {\n\t\tpropType = propType.prop_types[ value.$$type ];\n\n\t\tif ( ! propType ) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\t// Warning: This variable is loosely-typed - use with caution.\n\tlet resolvedValue = value.value;\n\n\tif ( propType.kind === 'object' ) {\n\t\tresolvedValue = resolve( {\n\t\t\ttransformers,\n\t\t\tprops: resolvedValue,\n\t\t\tschema: propType.shape,\n\t\t} );\n\t}\n\n\tif ( propType.kind === 'array' ) {\n\t\tresolvedValue = resolvedValue.map( ( item: PropValue ) =>\n\t\t\ttransform( item, propKey, propType.item_prop_type, transformers, depth )\n\t\t);\n\t}\n\n\tconst transformer = transformers[ value.$$type ];\n\n\tif ( ! transformer ) {\n\t\treturn null;\n\t}\n\n\ttry {\n\t\tconst transformed = transformer( resolvedValue, propKey );\n\n\t\treturn transform( transformed, propKey, propType, transformers, depth + 1 );\n\t} catch {\n\t\treturn null;\n\t}\n}\n","import { type StyleDefinition } from '@elementor/editor-styles';\nimport { ensureError } from '@elementor/utils';\n\nimport { enqueueFont } from '../sync/enqueue-font';\n\nexport default function enqueueUsedFonts( styles: StyleDefinition[] ) {\n\ttry {\n\t\tstyles.forEach( ( styleDef ) => {\n\t\t\tObject.values( styleDef.variants ).forEach( ( variant ) => {\n\t\t\t\tconst fontFamily = variant.props[ 'font-family' ] ?? null;\n\n\t\t\t\tif ( fontFamily && typeof fontFamily === 'string' ) {\n\t\t\t\t\tenqueueFont( fontFamily );\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t} catch ( error: unknown ) {\n\t\t// eslint-disable-next-line no-console\n\t\tconsole.error( `Cannot enqueue font': ${ ensureError( error ).message }` );\n\t}\n}\n","import { type CanvasExtendedWindow, type EnqueueFont } from './types';\n\nexport const enqueueFont: EnqueueFont = ( fontFamily, context = 'preview' ) => {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.helpers?.enqueueFont?.( fontFamily, context ) ?? null;\n};\n","import type { CanvasExtendedWindow } from './types';\n\nexport function getCanvasIframeBody() {\n\tconst extendedWindow = window as unknown as CanvasExtendedWindow;\n\n\treturn extendedWindow.elementor?.$preview?.[ 0 ]?.contentDocument?.body;\n}\n","import { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","import_react","import_react","useIsPreviewMode","useIsRouteActive","validKeys","size","import_utils"]}