@elementor/editor-canvas 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +8 -8
- package/CHANGELOG.md +17 -0
- package/dist/index.js +275 -0
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +275 -0
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -5
- package/src/__tests__/init-styles-renderer.test.ts +69 -0
- package/src/init-styles-renderer.ts +43 -0
- package/src/init.tsx +3 -0
- package/src/styles-renderer/__tests__/__mocks__/style-definitions.ts +171 -0
- package/src/styles-renderer/__tests__/enqueue-used-fonts.test.ts +54 -0
- package/src/styles-renderer/__tests__/index.test.ts +132 -0
- package/src/styles-renderer/enqueue-used-fonts.ts +21 -0
- package/src/styles-renderer/index.ts +2 -0
- package/src/styles-renderer/render.ts +112 -0
- package/src/styles-renderer/transform.ts +34 -0
- package/src/styles-renderer/transformers/__tests__/background-overlay-transformer.test.ts +46 -0
- package/src/styles-renderer/transformers/__tests__/create-combine-array-transformer.test.ts +61 -0
- package/src/styles-renderer/transformers/__tests__/linked-dimensions-transformer.test.ts +34 -0
- package/src/styles-renderer/transformers/__tests__/shadow-transformer.test.ts +127 -0
- package/src/styles-renderer/transformers/__tests__/size-transformer.test.ts +37 -0
- package/src/styles-renderer/transformers/__tests__/stroke-transformer.test.ts +59 -0
- package/src/styles-renderer/transformers/background-overlay-transformer.ts +13 -0
- package/src/styles-renderer/transformers/border-radius-transformer.ts +20 -0
- package/src/styles-renderer/transformers/border-width-transformer.ts +15 -0
- package/src/styles-renderer/transformers/color-transformer.ts +11 -0
- package/src/styles-renderer/transformers/create-combine-array-transformer.ts +20 -0
- package/src/styles-renderer/transformers/index.ts +22 -0
- package/src/styles-renderer/transformers/linked-dimensions-transformer.ts +15 -0
- package/src/styles-renderer/transformers/shadow-transformer.ts +22 -0
- package/src/styles-renderer/transformers/size-transformer.ts +11 -0
- package/src/styles-renderer/transformers/stroke-transformer.ts +11 -0
- package/src/styles-renderer/types.ts +9 -0
- package/src/sync/enqueue-font.ts +7 -0
- package/src/sync/get-canvas-iframe-body.ts +7 -0
- package/src/sync/types.ts +10 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @elementor/editor-canvas@0.
|
|
2
|
+
> @elementor/editor-canvas@0.2.0 build
|
|
3
3
|
> tsup --config=../../tsup.build.ts
|
|
4
4
|
|
|
5
5
|
[34mCLI[39m Building entry: src/index.ts
|
|
@@ -10,13 +10,13 @@
|
|
|
10
10
|
[34mCLI[39m Cleaning output folder
|
|
11
11
|
[34mESM[39m Build start
|
|
12
12
|
[34mCJS[39m Build start
|
|
13
|
-
[32mESM[39m [1mdist/index.mjs [22m[
|
|
14
|
-
[32mESM[39m [1mdist/index.mjs.map [22m[
|
|
15
|
-
[32mESM[39m ⚡️ Build success in
|
|
16
|
-
[32mCJS[39m [1mdist/index.js [22m[
|
|
17
|
-
[32mCJS[39m [1mdist/index.js.map [22m[
|
|
18
|
-
[32mCJS[39m ⚡️ Build success in
|
|
13
|
+
[32mESM[39m [1mdist/index.mjs [22m[32m14.48 KB[39m
|
|
14
|
+
[32mESM[39m [1mdist/index.mjs.map [22m[32m27.29 KB[39m
|
|
15
|
+
[32mESM[39m ⚡️ Build success in 196ms
|
|
16
|
+
[32mCJS[39m [1mdist/index.js [22m[32m16.21 KB[39m
|
|
17
|
+
[32mCJS[39m [1mdist/index.js.map [22m[32m27.45 KB[39m
|
|
18
|
+
[32mCJS[39m ⚡️ Build success in 196ms
|
|
19
19
|
[34mDTS[39m Build start
|
|
20
|
-
[32mDTS[39m ⚡️ Build success in
|
|
20
|
+
[32mDTS[39m ⚡️ Build success in 15236ms
|
|
21
21
|
[32mDTS[39m [1mdist/index.d.mts [22m[32m13.00 B[39m
|
|
22
22
|
[32mDTS[39m [1mdist/index.d.ts [22m[32m13.00 B[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# @elementor/editor-canvas
|
|
2
2
|
|
|
3
|
+
## 0.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 081bae8: Move the style renderer into editor-canvas and register the elements styles provider in editor-styles-repository
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- 1926fe1: Update dependencies
|
|
12
|
+
- Updated dependencies [081bae8]
|
|
13
|
+
- Updated dependencies [1926fe1]
|
|
14
|
+
- Updated dependencies [f584292]
|
|
15
|
+
- @elementor/editor-styles-repository@0.1.0
|
|
16
|
+
- @elementor/editor-responsive@0.12.3
|
|
17
|
+
- @elementor/editor-elements@0.3.1
|
|
18
|
+
- @elementor/editor@0.17.1
|
|
19
|
+
|
|
3
20
|
## 0.1.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
package/dist/index.js
CHANGED
|
@@ -148,8 +148,283 @@ function ElementsOverlays() {
|
|
|
148
148
|
));
|
|
149
149
|
}
|
|
150
150
|
|
|
151
|
+
// src/init-styles-renderer.ts
|
|
152
|
+
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
153
|
+
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
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
|
+
}
|
|
178
|
+
};
|
|
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;
|
|
190
|
+
|
|
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
|
+
}
|
|
197
|
+
};
|
|
198
|
+
var color_transformer_default = colorTransformer;
|
|
199
|
+
|
|
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
|
+
}
|
|
211
|
+
};
|
|
212
|
+
var create_combine_array_transformer_default = createCombineArrayTransformer;
|
|
213
|
+
|
|
214
|
+
// 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
|
+
}
|
|
221
|
+
};
|
|
222
|
+
var linked_dimensions_transformer_default = linkedDimensionsTransformer;
|
|
223
|
+
|
|
224
|
+
// 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
|
+
}
|
|
238
|
+
};
|
|
239
|
+
var shadow_transformer_default = shadowTransformer;
|
|
240
|
+
|
|
241
|
+
// 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
|
+
};
|
|
248
|
+
var size_transformer_default = sizeTransformer;
|
|
249
|
+
|
|
250
|
+
// 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
|
+
}
|
|
256
|
+
};
|
|
257
|
+
var stroke_transformer_default = strokeTransformer;
|
|
258
|
+
|
|
259
|
+
// src/styles-renderer/transformers/index.ts
|
|
260
|
+
var transformers_default = {
|
|
261
|
+
color: color_transformer_default,
|
|
262
|
+
size: size_transformer_default,
|
|
263
|
+
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
|
+
stroke: stroke_transformer_default,
|
|
270
|
+
"background-overlay": background_overlay_transformer_default
|
|
271
|
+
};
|
|
272
|
+
|
|
273
|
+
// src/styles-renderer/render.ts
|
|
274
|
+
var import_utils = require("@elementor/utils");
|
|
275
|
+
|
|
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)) {
|
|
281
|
+
return value;
|
|
282
|
+
}
|
|
283
|
+
const transformer = transformers[value.$$type];
|
|
284
|
+
if (!transformer) {
|
|
285
|
+
console.error(`Transformer not found for prop type '${value.$$type}'`);
|
|
286
|
+
return FALLBACK_VALUE;
|
|
287
|
+
}
|
|
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;
|
|
294
|
+
}
|
|
295
|
+
return transformValue(transformedValue, transformers);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// src/styles-renderer/render.ts
|
|
299
|
+
function render({ transformers, styles, breakpoints }) {
|
|
300
|
+
const cssStyle = [];
|
|
301
|
+
try {
|
|
302
|
+
styles.forEach((styleDef) => {
|
|
303
|
+
const style = renderStyle(styleDef, transformers, breakpoints);
|
|
304
|
+
cssStyle.push(wrapWithStyleElement(styleDef.id, style));
|
|
305
|
+
});
|
|
306
|
+
} catch (error) {
|
|
307
|
+
console.error(`Cannot render style': ${(0, import_utils.ensureError)(error).message}`);
|
|
308
|
+
}
|
|
309
|
+
return cssStyle.join("");
|
|
310
|
+
}
|
|
311
|
+
function renderStyle(style, transformers, breakpoints) {
|
|
312
|
+
const baseSelector = getBaseSelector(style);
|
|
313
|
+
if (!baseSelector) {
|
|
314
|
+
return "";
|
|
315
|
+
}
|
|
316
|
+
const stylesheet = [];
|
|
317
|
+
Object.values(style.variants).forEach((variant) => {
|
|
318
|
+
const styleDeclaration = variantToStyleDeclaration(baseSelector, variant, transformers, breakpoints);
|
|
319
|
+
if (styleDeclaration) {
|
|
320
|
+
stylesheet.push(styleDeclaration);
|
|
321
|
+
}
|
|
322
|
+
});
|
|
323
|
+
return stylesheet.join("");
|
|
324
|
+
}
|
|
325
|
+
function getBaseSelector(styleDef) {
|
|
326
|
+
const map = {
|
|
327
|
+
class: "."
|
|
328
|
+
};
|
|
329
|
+
return `${map[styleDef.type]}${styleDef.id}`;
|
|
330
|
+
}
|
|
331
|
+
function variantToStyleDeclaration(baseSelector, variant, transformers, breakpoints) {
|
|
332
|
+
const css = propsToCss(variant.props, transformers);
|
|
333
|
+
if (!css) {
|
|
334
|
+
return "";
|
|
335
|
+
}
|
|
336
|
+
const state = variant.meta.state ? `:${variant.meta.state}` : "";
|
|
337
|
+
const selector = `${baseSelector}${state}`;
|
|
338
|
+
let styleDeclaration = `${selector}{${css}}`;
|
|
339
|
+
if (variant.meta.breakpoint) {
|
|
340
|
+
styleDeclaration = wrapWithMediaQuery(breakpoints, variant.meta.breakpoint, styleDeclaration);
|
|
341
|
+
}
|
|
342
|
+
return styleDeclaration;
|
|
343
|
+
}
|
|
344
|
+
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);
|
|
349
|
+
return acc;
|
|
350
|
+
}, []).join(";");
|
|
351
|
+
}
|
|
352
|
+
function camelCaseToDash(str) {
|
|
353
|
+
return str.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
|
|
354
|
+
}
|
|
355
|
+
function wrapWithMediaQuery(breakpoints, breakpoint, css) {
|
|
356
|
+
const size2 = getBreakpointSize(breakpoints[breakpoint]);
|
|
357
|
+
return size2 ? `@media(${size2}){${css}}` : css;
|
|
358
|
+
}
|
|
359
|
+
function getBreakpointSize(breakpoint) {
|
|
360
|
+
return breakpoint.type ? `${breakpoint.type}:${breakpoint.width}px` : null;
|
|
361
|
+
}
|
|
362
|
+
function wrapWithStyleElement(id, content) {
|
|
363
|
+
return `<style data-style-id="${id}">${content}</style>`;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// src/styles-renderer/enqueue-used-fonts.ts
|
|
367
|
+
var import_utils2 = require("@elementor/utils");
|
|
368
|
+
|
|
369
|
+
// src/sync/enqueue-font.ts
|
|
370
|
+
var enqueueFont = (fontFamily, context = "preview") => {
|
|
371
|
+
const extendedWindow = window;
|
|
372
|
+
return extendedWindow.elementor?.helpers?.enqueueFont?.(fontFamily, context) ?? null;
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
// src/styles-renderer/enqueue-used-fonts.ts
|
|
376
|
+
function enqueueUsedFonts(styles) {
|
|
377
|
+
try {
|
|
378
|
+
styles.forEach((styleDef) => {
|
|
379
|
+
Object.values(styleDef.variants).forEach((variant) => {
|
|
380
|
+
const fontFamily = variant.props["font-family"] ?? null;
|
|
381
|
+
if (fontFamily && typeof fontFamily === "string") {
|
|
382
|
+
enqueueFont(fontFamily);
|
|
383
|
+
}
|
|
384
|
+
});
|
|
385
|
+
});
|
|
386
|
+
} catch (error) {
|
|
387
|
+
console.error(`Cannot enqueue font': ${(0, import_utils2.ensureError)(error).message}`);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
// src/sync/get-canvas-iframe-body.ts
|
|
392
|
+
function getCanvasIframeBody() {
|
|
393
|
+
const extendedWindow = window;
|
|
394
|
+
return extendedWindow.elementor?.$preview?.[0]?.contentDocument?.body;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
// src/init-styles-renderer.ts
|
|
398
|
+
var WRAPPER_DATA_ATTR = "data-styles-container";
|
|
399
|
+
function initStylesRenderer() {
|
|
400
|
+
import_editor_styles_repository.stylesRepository.subscribe(() => {
|
|
401
|
+
const styleContainer = getStylesContainer();
|
|
402
|
+
const styles = Object.values(import_editor_styles_repository.stylesRepository.all());
|
|
403
|
+
const breakpoints = (0, import_editor_responsive.getBreakpointsMap)();
|
|
404
|
+
styleContainer.innerHTML = render({ transformers: transformers_default, styles, breakpoints });
|
|
405
|
+
enqueueUsedFonts(styles);
|
|
406
|
+
});
|
|
407
|
+
}
|
|
408
|
+
function getStylesContainer() {
|
|
409
|
+
const preview = getCanvasIframeBody();
|
|
410
|
+
const stylesContainer = preview?.querySelector(`[${WRAPPER_DATA_ATTR}]`);
|
|
411
|
+
if (stylesContainer) {
|
|
412
|
+
return stylesContainer;
|
|
413
|
+
}
|
|
414
|
+
const el = createStylesContainer();
|
|
415
|
+
preview?.prepend(el);
|
|
416
|
+
return el;
|
|
417
|
+
}
|
|
418
|
+
function createStylesContainer() {
|
|
419
|
+
const el = document.createElement("div");
|
|
420
|
+
el.style.display = "none";
|
|
421
|
+
el.setAttribute(WRAPPER_DATA_ATTR, "");
|
|
422
|
+
return el;
|
|
423
|
+
}
|
|
424
|
+
|
|
151
425
|
// src/init.tsx
|
|
152
426
|
function init() {
|
|
427
|
+
initStylesRenderer();
|
|
153
428
|
(0, import_editor.injectIntoTop)({
|
|
154
429
|
id: "elements-overlays",
|
|
155
430
|
component: ElementsOverlays
|
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/index.ts"],"sourcesContent":["import { injectIntoTop } from '@elementor/editor';\n\nimport { ElementsOverlays } from './components/elements-overlays';\n\nexport function init() {\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 { init } from './init';\n\ninit();\n"],"mappings":"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","names":["React","import_react","import_react","useIsPreviewMode","useIsRouteActive"]}
|
|
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"]}
|