@elementor/editor-canvas 0.2.0 → 0.4.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 (38) hide show
  1. package/.turbo/turbo-build.log +8 -8
  2. package/CHANGELOG.md +37 -0
  3. package/dist/index.js +152 -106
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +150 -104
  6. package/dist/index.mjs.map +1 -1
  7. package/package.json +9 -9
  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 +733 -0
  11. package/src/styles-renderer/__tests__/index.test.ts +537 -72
  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-overlay-transformer.ts +3 -7
  17. package/src/styles-renderer/transformers/create-combine-array-transformer.ts +4 -15
  18. package/src/styles-renderer/transformers/create-corner-sizes-transformer.ts +33 -0
  19. package/src/styles-renderer/transformers/create-edge-sizes-transformer.ts +31 -0
  20. package/src/styles-renderer/transformers/gap-transformer.ts +20 -0
  21. package/src/styles-renderer/transformers/index.ts +19 -10
  22. package/src/styles-renderer/transformers/linked-dimensions-transformer.ts +13 -8
  23. package/src/styles-renderer/transformers/primitive-transformer.ts +7 -0
  24. package/src/styles-renderer/transformers/shadow-transformer.ts +5 -16
  25. package/src/styles-renderer/transformers/size-transformer.ts +3 -5
  26. package/src/styles-renderer/transformers/stroke-transformer.ts +3 -5
  27. package/src/styles-renderer/types.ts +3 -6
  28. package/src/styles-renderer/__tests__/__mocks__/style-definitions.ts +0 -171
  29. package/src/styles-renderer/transform.ts +0 -34
  30. package/src/styles-renderer/transformers/__tests__/background-overlay-transformer.test.ts +0 -46
  31. package/src/styles-renderer/transformers/__tests__/create-combine-array-transformer.test.ts +0 -61
  32. package/src/styles-renderer/transformers/__tests__/linked-dimensions-transformer.test.ts +0 -34
  33. package/src/styles-renderer/transformers/__tests__/shadow-transformer.test.ts +0 -127
  34. package/src/styles-renderer/transformers/__tests__/size-transformer.test.ts +0 -37
  35. package/src/styles-renderer/transformers/__tests__/stroke-transformer.test.ts +0 -59
  36. package/src/styles-renderer/transformers/border-radius-transformer.ts +0 -20
  37. package/src/styles-renderer/transformers/border-width-transformer.ts +0 -15
  38. package/src/styles-renderer/transformers/color-transformer.ts +0 -11
@@ -1,5 +1,5 @@
1
1
 
2
- > @elementor/editor-canvas@0.2.0 build
2
+ > @elementor/editor-canvas@0.4.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 14.48 KB
14
- ESM dist/index.mjs.map 27.29 KB
15
- ESM ⚡️ Build success in 196ms
16
- CJS dist/index.js 16.21 KB
17
- CJS dist/index.js.map 27.45 KB
18
- CJS ⚡️ Build success in 196ms
13
+ CJS dist/index.js 16.72 KB
14
+ CJS dist/index.js.map 31.42 KB
15
+ CJS ⚡️ Build success in 112ms
16
+ ESM dist/index.mjs 15.20 KB
17
+ ESM dist/index.mjs.map 31.44 KB
18
+ ESM ⚡️ Build success in 112ms
19
19
  DTS Build start
20
- DTS ⚡️ Build success in 15236ms
20
+ DTS ⚡️ Build success in 14005ms
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,42 @@
1
1
  # @elementor/editor-canvas
2
2
 
3
+ ## 0.4.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 11b6ef6: Allow zero value in style transformers.
8
+ - ff35b95: Added Gaps field with a control, proptype and a transformer
9
+
10
+ ### Patch Changes
11
+
12
+ - 6f2b17f: Introduce empty (local) style def for class selector.
13
+ - 8943189: Refactor canvas styles rendering
14
+ - Updated dependencies [6f2b17f]
15
+ - Updated dependencies [8943189]
16
+ - Updated dependencies [ff35b95]
17
+ - @elementor/editor-styles-repository@0.2.0
18
+ - @elementor/editor-elements@0.3.3
19
+ - @elementor/editor-props@0.5.0
20
+
21
+ ## 0.3.0
22
+
23
+ ### Minor Changes
24
+
25
+ - c393288: Remove support for shorthand prop values.
26
+
27
+ ### Patch Changes
28
+
29
+ - 91453b3: Update and lock dependencies versions
30
+ - Updated dependencies [c393288]
31
+ - Updated dependencies [bc728b7]
32
+ - Updated dependencies [91453b3]
33
+ - @elementor/editor-props@0.4.0
34
+ - @elementor/editor-styles-repository@0.1.1
35
+ - @elementor/editor-v1-adapters@0.8.5
36
+ - @elementor/editor-responsive@0.12.4
37
+ - @elementor/editor-elements@0.3.2
38
+ - @elementor/editor@0.17.2
39
+
3
40
  ## 0.2.0
4
41
 
5
42
  ### Minor Changes
package/dist/index.js CHANGED
@@ -153,146 +153,195 @@ var import_editor_responsive = require("@elementor/editor-responsive");
153
153
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
154
154
 
155
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
- }
156
+ var backgroundOverlayTransformer = (value) => {
157
+ return `linear-gradient(${value.color},${value.color})`;
163
158
  };
164
159
  var background_overlay_transformer_default = backgroundOverlayTransformer;
165
160
 
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
- }
161
+ // src/styles-renderer/transformers/create-combine-array-transformer.ts
162
+ var createCombineArrayTransformer = (delimiter) => {
163
+ return (value) => value.filter(Boolean).join(delimiter);
178
164
  };
179
- var border_radius_transformer_default = borderRadiusTransformer;
165
+ var create_combine_array_transformer_default = createCombineArrayTransformer;
180
166
 
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
- }
167
+ // src/styles-renderer/multi-props.ts
168
+ var isMultiProps = (propValue) => {
169
+ return !!propValue && typeof propValue === "object" && "$$multi-props" in propValue && propValue["$$multi-props"] === true;
170
+ };
171
+ var createMultiPropsValue = (props) => {
172
+ return {
173
+ "$$multi-props": true,
174
+ value: props
175
+ };
176
+ };
177
+ var getMultiPropsValue = (multiProps) => {
178
+ return multiProps.value;
188
179
  };
189
- var border_width_transformer_default = borderWidthTransformer;
190
180
 
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
- }
181
+ // src/styles-renderer/transformers/create-corner-sizes-transformer.ts
182
+ var validCorners = ["top-left", "top-right", "bottom-left", "bottom-right"];
183
+ var createCornerSizesTransformer = (keyGenerator) => (value) => {
184
+ const props = Object.entries(value).reduce((acc, [corner, cornerValue]) => {
185
+ if (validCorners.includes(corner)) {
186
+ const key = keyGenerator(corner);
187
+ acc[key] = cornerValue;
188
+ }
189
+ return acc;
190
+ }, {});
191
+ return createMultiPropsValue(props);
197
192
  };
198
- var color_transformer_default = colorTransformer;
193
+ var create_corner_sizes_transformer_default = createCornerSizesTransformer;
199
194
 
200
- // 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
- }
195
+ // src/styles-renderer/transformers/create-edge-sizes-transformer.ts
196
+ var validEdges = ["top", "right", "bottom", "left"];
197
+ var createEdgeSizesTransformer = (keyGenerator) => (value) => {
198
+ const props = Object.entries(value).reduce((acc, [edge, edgeValue]) => {
199
+ if (validEdges.includes(edge)) {
200
+ const key = keyGenerator(edge);
201
+ acc[key] = edgeValue;
202
+ }
203
+ return acc;
204
+ }, {});
205
+ return createMultiPropsValue(props);
211
206
  };
212
- var create_combine_array_transformer_default = createCombineArrayTransformer;
207
+ var create_edge_sizes_transformer_default = createEdgeSizesTransformer;
208
+
209
+ // src/styles-renderer/transformers/gap-transformer.ts
210
+ var validKeys = ["row", "column"];
211
+ var gapTransformer = (value, key) => {
212
+ const parsed = Object.entries(value).reduce((acc, [dimensionKey, dimensionValue]) => {
213
+ if (dimensionValue && validKeys.includes(dimensionKey)) {
214
+ acc[`${dimensionKey}-${key}`] = dimensionValue;
215
+ }
216
+ return acc;
217
+ }, {});
218
+ return createMultiPropsValue(parsed);
219
+ };
220
+ var gap_transformer_default = gapTransformer;
213
221
 
214
222
  // 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
- }
223
+ var validKeys2 = ["top", "right", "bottom", "left"];
224
+ var linkedDimensionsTransformer = (value, key) => {
225
+ const parsed = Object.entries(value).reduce((acc, [dimensionKey, dimensionValue]) => {
226
+ if (dimensionValue && validKeys2.includes(dimensionKey)) {
227
+ acc[`${key}-${dimensionKey}`] = dimensionValue;
228
+ }
229
+ return acc;
230
+ }, {});
231
+ return createMultiPropsValue(parsed);
221
232
  };
222
233
  var linked_dimensions_transformer_default = linkedDimensionsTransformer;
223
234
 
235
+ // src/styles-renderer/transformers/primitive-transformer.ts
236
+ var primitiveTransformer = (value) => {
237
+ return value;
238
+ };
239
+
224
240
  // src/styles-renderer/transformers/shadow-transformer.ts
225
- var import_editor_props6 = require("@elementor/editor-props");
226
- var shadowTransformer = (propValue, { transform }) => {
227
- if (import_editor_props6.shadowPropTypeUtil.isValid(propValue)) {
228
- const { position, hOffset, vOffset, blur, spread, color } = propValue.value || {};
229
- return [
230
- transform(hOffset),
231
- transform(vOffset),
232
- transform(blur),
233
- transform(spread),
234
- transform(color),
235
- position
236
- ].filter(Boolean).join(" ");
237
- }
241
+ var shadowTransformer = (value) => {
242
+ return [value.hOffset, value.vOffset, value.blur, value.spread, value.color, value.position].filter(Boolean).join(" ");
238
243
  };
239
244
  var shadow_transformer_default = shadowTransformer;
240
245
 
241
246
  // src/styles-renderer/transformers/size-transformer.ts
242
- var import_editor_props7 = require("@elementor/editor-props");
243
- var sizeTransformer = (propValue) => {
244
- if (import_editor_props7.sizePropTypeUtil.isValid(propValue)) {
245
- return propValue.value && propValue.value.size + propValue.value.unit;
246
- }
247
+ var sizeTransformer = (value) => {
248
+ return `${value.size}${value.unit}`;
247
249
  };
248
250
  var size_transformer_default = sizeTransformer;
249
251
 
250
252
  // src/styles-renderer/transformers/stroke-transformer.ts
251
- var import_editor_props8 = require("@elementor/editor-props");
252
- var strokeTransformer = (propValue, { transform }) => {
253
- if (import_editor_props8.strokePropTypeUtil.isValid(propValue)) {
254
- return `${transform(propValue.value?.width)} ${transform(propValue.value?.color)}`;
255
- }
253
+ var strokeTransformer = (value) => {
254
+ return `${value.width} ${value.color}`;
256
255
  };
257
256
  var stroke_transformer_default = strokeTransformer;
258
257
 
259
258
  // src/styles-renderer/transformers/index.ts
260
259
  var transformers_default = {
261
- color: color_transformer_default,
262
260
  size: size_transformer_default,
263
261
  shadow: shadow_transformer_default,
264
- "border-radius": border_radius_transformer_default,
265
- "border-width": border_width_transformer_default,
266
- "box-shadow": create_combine_array_transformer_default(", "),
267
- "background-image": create_combine_array_transformer_default(", "),
268
- "linked-dimensions": linked_dimensions_transformer_default,
269
262
  stroke: stroke_transformer_default,
270
- "background-overlay": background_overlay_transformer_default
263
+ gap: gap_transformer_default,
264
+ color: primitiveTransformer,
265
+ number: primitiveTransformer,
266
+ string: primitiveTransformer,
267
+ "linked-dimensions": linked_dimensions_transformer_default,
268
+ "background-overlay": background_overlay_transformer_default,
269
+ "box-shadow": create_combine_array_transformer_default(","),
270
+ "background-image": create_combine_array_transformer_default(","),
271
+ "border-width": create_edge_sizes_transformer_default((edgeKey) => `border-${edgeKey}-width`),
272
+ "border-radius": create_corner_sizes_transformer_default((cornerKey) => `border-${cornerKey}-radius`)
271
273
  };
272
274
 
273
275
  // src/styles-renderer/render.ts
274
276
  var import_utils = require("@elementor/utils");
275
277
 
276
- // src/styles-renderer/transform.ts
277
- var import_editor_props9 = require("@elementor/editor-props");
278
- var FALLBACK_VALUE = "unset";
279
- function transformValue(value, transformers) {
280
- if (!(0, import_editor_props9.isTransformable)(value)) {
278
+ // src/styles-renderer/get-styles-schema.ts
279
+ var getStylesSchema = () => {
280
+ const extendedWindow = window;
281
+ return extendedWindow.elementor?.config?.atomic?.styles_schema ?? {};
282
+ };
283
+
284
+ // src/styles-renderer/resolve.ts
285
+ var import_editor_props = require("@elementor/editor-props");
286
+ var TRANSFORM_DEPTH_LIMIT = 3;
287
+ function resolve({ props, schema, transformers }) {
288
+ const resolved = {};
289
+ Object.entries(schema).forEach(([key, propType]) => {
290
+ const value = props[key] ?? propType.default;
291
+ const transformed = transform(value, key, propType, transformers);
292
+ if (transformed === null) {
293
+ return;
294
+ }
295
+ if (isMultiProps(transformed)) {
296
+ Object.assign(resolved, getMultiPropsValue(transformed));
297
+ return;
298
+ }
299
+ resolved[key] = transformed;
300
+ });
301
+ return resolved;
302
+ }
303
+ function transform(value, propKey, propType, transformers, depth = 0) {
304
+ if (!value && value !== 0) {
305
+ return null;
306
+ }
307
+ if (!(0, import_editor_props.isTransformable)(value)) {
281
308
  return value;
282
309
  }
310
+ if (depth > TRANSFORM_DEPTH_LIMIT) {
311
+ return null;
312
+ }
313
+ if (value.disabled === true) {
314
+ return null;
315
+ }
316
+ if (propType.kind === "union") {
317
+ propType = propType.prop_types[value.$$type];
318
+ if (!propType) {
319
+ return null;
320
+ }
321
+ }
322
+ let resolvedValue = value.value;
323
+ if (propType.kind === "object") {
324
+ resolvedValue = resolve({
325
+ transformers,
326
+ props: resolvedValue,
327
+ schema: propType.shape
328
+ });
329
+ }
330
+ if (propType.kind === "array") {
331
+ resolvedValue = resolvedValue.map(
332
+ (item) => transform(item, propKey, propType.item_prop_type, transformers, depth)
333
+ );
334
+ }
283
335
  const transformer = transformers[value.$$type];
284
336
  if (!transformer) {
285
- console.error(`Transformer not found for prop type '${value.$$type}'`);
286
- return FALLBACK_VALUE;
337
+ return null;
287
338
  }
288
- const transformedValue = transformer(value, {
289
- transform: (v) => transformValue(v, transformers)
290
- });
291
- if (transformedValue === void 0) {
292
- console.error(`Transformer '${value.$$type}' received unsupported value`);
293
- return FALLBACK_VALUE;
339
+ try {
340
+ const transformed = transformer(resolvedValue, propKey);
341
+ return transform(transformed, propKey, propType, transformers, depth + 1);
342
+ } catch {
343
+ return null;
294
344
  }
295
- return transformValue(transformedValue, transformers);
296
345
  }
297
346
 
298
347
  // src/styles-renderer/render.ts
@@ -342,15 +391,12 @@ function variantToStyleDeclaration(baseSelector, variant, transformers, breakpoi
342
391
  return styleDeclaration;
343
392
  }
344
393
  function propsToCss(props, transformers) {
345
- return Object.entries(props).reduce((acc, [cssProp, cssValue]) => {
346
- const prop = camelCaseToDash(cssProp);
347
- const value = transformValue(cssValue, transformers);
348
- acc.push(prop + ":" + value);
394
+ const schema = getStylesSchema();
395
+ const transformed = resolve({ props, schema, transformers });
396
+ return Object.entries(transformed).reduce((acc, [propName, propValue]) => {
397
+ acc.push(propName + ":" + propValue + ";");
349
398
  return acc;
350
- }, []).join(";");
351
- }
352
- function camelCaseToDash(str) {
353
- return str.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
399
+ }, []).join("");
354
400
  }
355
401
  function wrapWithMediaQuery(breakpoints, breakpoint, css) {
356
402
  const size2 = getBreakpointSize(breakpoints[breakpoint]);
@@ -399,7 +445,7 @@ var WRAPPER_DATA_ATTR = "data-styles-container";
399
445
  function initStylesRenderer() {
400
446
  import_editor_styles_repository.stylesRepository.subscribe(() => {
401
447
  const styleContainer = getStylesContainer();
402
- const styles = Object.values(import_editor_styles_repository.stylesRepository.all());
448
+ const styles = import_editor_styles_repository.stylesRepository.all();
403
449
  const breakpoints = (0, import_editor_responsive.getBreakpointsMap)();
404
450
  styleContainer.innerHTML = render({ transformers: transformers_default, styles, breakpoints });
405
451
  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/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/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 { 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 { 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 shadow } from './shadow-transformer';\nimport { default as size } from './size-transformer';\nimport { default as stroke } from './stroke-transformer';\n\nexport default {\n\tcolor,\n\tsize,\n\tshadow,\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\tstroke,\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","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-overlay-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 ColorGradientPropValue } from '@elementor/editor-props';\n\nimport { type Transformer } from '../types';\n\nconst backgroundOverlayTransformer: Transformer< ColorGradientPropValue[ 'value' ] > = ( value ) => {\n\treturn `linear-gradient(${ value.color },${ value.color })`;\n};\n\nexport default backgroundOverlayTransformer;\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 { default as backgroundOverlay } from './background-overlay-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\n\tcolor: primitiveTransformer,\n\tnumber: primitiveTransformer,\n\tstring: primitiveTransformer,\n\n\t'linked-dimensions': linkedDimensions,\n\t'background-overlay': backgroundOverlay,\n\n\t'box-shadow': createCombineArrayTransformer( ',' ),\n\t'background-image': 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"]}