@elementor/editor-canvas 4.2.0-898 → 4.2.0-899
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/dist/index.js +453 -271
- package/dist/index.mjs +332 -150
- package/package.json +18 -18
- package/src/components/elements-overlays.tsx +14 -1
- package/src/components/grid-outline/__tests__/grid-outline-overlay.test.tsx +151 -0
- package/src/components/grid-outline/__tests__/grid-outline.test.tsx +131 -0
- package/src/components/grid-outline/grid-outline-line.tsx +27 -0
- package/src/components/grid-outline/grid-outline-overlay.tsx +41 -0
- package/src/components/grid-outline/grid-outline.tsx +45 -0
- package/src/components/grid-outline/index.ts +1 -0
- package/src/hooks/__tests__/use-grid-tracks.test.ts +152 -0
- package/src/hooks/use-grid-tracks.ts +52 -0
- package/src/utils/__tests__/grid-outline-utils.test.ts +142 -0
- package/src/utils/grid-outline-utils.ts +70 -0
package/dist/index.js
CHANGED
|
@@ -422,47 +422,78 @@ var renameClass = (oldClassName, newClassName) => {
|
|
|
422
422
|
};
|
|
423
423
|
|
|
424
424
|
// src/components/elements-overlays.tsx
|
|
425
|
-
var
|
|
426
|
-
var
|
|
425
|
+
var React5 = __toESM(require("react"));
|
|
426
|
+
var import_editor_elements4 = require("@elementor/editor-elements");
|
|
427
427
|
var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
|
|
428
428
|
|
|
429
|
-
// src/components/outline-overlay.tsx
|
|
430
|
-
var
|
|
431
|
-
var
|
|
432
|
-
var
|
|
429
|
+
// src/components/grid-outline/grid-outline-overlay.tsx
|
|
430
|
+
var React4 = __toESM(require("react"));
|
|
431
|
+
var import_editor_elements3 = require("@elementor/editor-elements");
|
|
432
|
+
var import_editor_props2 = require("@elementor/editor-props");
|
|
433
|
+
var import_ui2 = require("@elementor/ui");
|
|
434
|
+
var import_react8 = require("@floating-ui/react");
|
|
433
435
|
|
|
434
|
-
// src/hooks/use-
|
|
436
|
+
// src/hooks/use-element-rect.ts
|
|
435
437
|
var import_react2 = require("react");
|
|
436
|
-
|
|
438
|
+
var import_utils2 = require("@elementor/utils");
|
|
439
|
+
function useElementRect(element) {
|
|
440
|
+
const [rect, setRect] = (0, import_react2.useState)(new DOMRect(0, 0, 0, 0));
|
|
441
|
+
const onChange = (0, import_utils2.throttle)(
|
|
442
|
+
() => {
|
|
443
|
+
setRect(element?.getBoundingClientRect() ?? new DOMRect(0, 0, 0, 0));
|
|
444
|
+
},
|
|
445
|
+
20,
|
|
446
|
+
true
|
|
447
|
+
);
|
|
448
|
+
useScrollListener({ element, onChange });
|
|
449
|
+
useResizeListener({ element, onChange });
|
|
450
|
+
useMutationsListener({ element, onChange });
|
|
451
|
+
(0, import_react2.useEffect)(
|
|
452
|
+
() => () => {
|
|
453
|
+
onChange.cancel();
|
|
454
|
+
},
|
|
455
|
+
[onChange]
|
|
456
|
+
);
|
|
457
|
+
return rect;
|
|
458
|
+
}
|
|
459
|
+
function useScrollListener({ element, onChange }) {
|
|
437
460
|
(0, import_react2.useEffect)(() => {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
461
|
+
if (!element) {
|
|
462
|
+
return;
|
|
463
|
+
}
|
|
464
|
+
const win = element.ownerDocument?.defaultView;
|
|
465
|
+
win?.addEventListener("scroll", onChange, { passive: true });
|
|
442
466
|
return () => {
|
|
443
|
-
|
|
444
|
-
attrs.forEach(([attrName]) => el.removeAttribute(attrName));
|
|
467
|
+
win?.removeEventListener("scroll", onChange);
|
|
445
468
|
};
|
|
446
|
-
}, [
|
|
469
|
+
}, [element, onChange]);
|
|
447
470
|
}
|
|
448
|
-
function
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
if (!eventRegex.test(propName)) {
|
|
453
|
-
acc.attrs.push([propName, propValue]);
|
|
454
|
-
return acc;
|
|
455
|
-
}
|
|
456
|
-
const eventName = propName.replace(eventRegex, "").toLowerCase();
|
|
457
|
-
const listener = propValue;
|
|
458
|
-
acc.events.push([eventName, listener]);
|
|
459
|
-
return acc;
|
|
460
|
-
},
|
|
461
|
-
{
|
|
462
|
-
events: [],
|
|
463
|
-
attrs: []
|
|
471
|
+
function useResizeListener({ element, onChange }) {
|
|
472
|
+
(0, import_react2.useEffect)(() => {
|
|
473
|
+
if (!element) {
|
|
474
|
+
return;
|
|
464
475
|
}
|
|
465
|
-
|
|
476
|
+
const resizeObserver = new ResizeObserver(onChange);
|
|
477
|
+
resizeObserver.observe(element);
|
|
478
|
+
const win = element.ownerDocument?.defaultView;
|
|
479
|
+
win?.addEventListener("resize", onChange, { passive: true });
|
|
480
|
+
return () => {
|
|
481
|
+
resizeObserver.disconnect();
|
|
482
|
+
win?.removeEventListener("resize", onChange);
|
|
483
|
+
};
|
|
484
|
+
}, [element, onChange]);
|
|
485
|
+
}
|
|
486
|
+
function useMutationsListener({ element, onChange }) {
|
|
487
|
+
(0, import_react2.useEffect)(() => {
|
|
488
|
+
if (!element) {
|
|
489
|
+
return;
|
|
490
|
+
}
|
|
491
|
+
const mutationObserver = new MutationObserver(onChange);
|
|
492
|
+
mutationObserver.observe(element, { childList: true, subtree: true });
|
|
493
|
+
return () => {
|
|
494
|
+
mutationObserver.disconnect();
|
|
495
|
+
};
|
|
496
|
+
}, [element, onChange]);
|
|
466
497
|
}
|
|
467
498
|
|
|
468
499
|
// src/hooks/use-floating-on-element.ts
|
|
@@ -506,6 +537,128 @@ function useFloatingOnElement({ element, isSelected }) {
|
|
|
506
537
|
};
|
|
507
538
|
}
|
|
508
539
|
|
|
540
|
+
// src/hooks/use-grid-tracks.ts
|
|
541
|
+
var import_react5 = require("react");
|
|
542
|
+
|
|
543
|
+
// src/utils/grid-outline-utils.ts
|
|
544
|
+
function computeOutlineGeometry(tracks, width, height) {
|
|
545
|
+
const { columns, rows, columnGap, rowGap, padding } = tracks;
|
|
546
|
+
return {
|
|
547
|
+
vertical: computeBoundaries(columns, columnGap, padding.left),
|
|
548
|
+
horizontal: computeBoundaries(rows, rowGap, padding.top),
|
|
549
|
+
top: padding.top,
|
|
550
|
+
bottom: height - padding.bottom,
|
|
551
|
+
left: padding.left,
|
|
552
|
+
right: width - padding.right
|
|
553
|
+
};
|
|
554
|
+
}
|
|
555
|
+
function computeBoundaries(sizes, gap, offset2) {
|
|
556
|
+
if (sizes.length === 0) {
|
|
557
|
+
return [];
|
|
558
|
+
}
|
|
559
|
+
const boundaries = [];
|
|
560
|
+
let cursor = offset2;
|
|
561
|
+
for (let i = 0; i < sizes.length; i++) {
|
|
562
|
+
if (i === 0) {
|
|
563
|
+
boundaries.push(cursor);
|
|
564
|
+
}
|
|
565
|
+
cursor += sizes[i];
|
|
566
|
+
boundaries.push(cursor);
|
|
567
|
+
if (i < sizes.length - 1 && gap > 0) {
|
|
568
|
+
cursor += gap;
|
|
569
|
+
boundaries.push(cursor);
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
return boundaries;
|
|
573
|
+
}
|
|
574
|
+
function snapToHalfPixel(value) {
|
|
575
|
+
return Math.round(value) + 0.5;
|
|
576
|
+
}
|
|
577
|
+
function parseTrackList(value) {
|
|
578
|
+
if (!value || value === "none") {
|
|
579
|
+
return [];
|
|
580
|
+
}
|
|
581
|
+
return value.trim().split(/\s+/).map(toPx).filter((n) => n > 0);
|
|
582
|
+
}
|
|
583
|
+
function toPx(value) {
|
|
584
|
+
const parsed = parseFloat(value);
|
|
585
|
+
return Number.isFinite(parsed) ? parsed : 0;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// src/hooks/use-grid-tracks.ts
|
|
589
|
+
var EMPTY = {
|
|
590
|
+
columns: [],
|
|
591
|
+
rows: [],
|
|
592
|
+
columnGap: 0,
|
|
593
|
+
rowGap: 0,
|
|
594
|
+
padding: { top: 0, right: 0, bottom: 0, left: 0 },
|
|
595
|
+
borderColor: ""
|
|
596
|
+
};
|
|
597
|
+
function useGridTracks(element, rect) {
|
|
598
|
+
return (0, import_react5.useMemo)(() => {
|
|
599
|
+
if (!element) {
|
|
600
|
+
return EMPTY;
|
|
601
|
+
}
|
|
602
|
+
const previewWindow = element.ownerDocument?.defaultView;
|
|
603
|
+
if (!previewWindow) {
|
|
604
|
+
return EMPTY;
|
|
605
|
+
}
|
|
606
|
+
const computedStyle = previewWindow.getComputedStyle(element);
|
|
607
|
+
return {
|
|
608
|
+
columns: parseTrackList(computedStyle.gridTemplateColumns),
|
|
609
|
+
rows: parseTrackList(computedStyle.gridTemplateRows),
|
|
610
|
+
columnGap: toPx(computedStyle.columnGap),
|
|
611
|
+
rowGap: toPx(computedStyle.rowGap),
|
|
612
|
+
padding: {
|
|
613
|
+
top: toPx(computedStyle.paddingTop),
|
|
614
|
+
right: toPx(computedStyle.paddingRight),
|
|
615
|
+
bottom: toPx(computedStyle.paddingBottom),
|
|
616
|
+
left: toPx(computedStyle.paddingLeft)
|
|
617
|
+
},
|
|
618
|
+
borderColor: computedStyle.getPropertyValue("--e-a-border-color-bold").trim()
|
|
619
|
+
};
|
|
620
|
+
}, [element, rect.width, rect.height]);
|
|
621
|
+
}
|
|
622
|
+
|
|
623
|
+
// src/components/outline-overlay.tsx
|
|
624
|
+
var React = __toESM(require("react"));
|
|
625
|
+
var import_ui = require("@elementor/ui");
|
|
626
|
+
var import_react7 = require("@floating-ui/react");
|
|
627
|
+
|
|
628
|
+
// src/hooks/use-bind-react-props-to-element.ts
|
|
629
|
+
var import_react6 = require("react");
|
|
630
|
+
function useBindReactPropsToElement(element, getProps) {
|
|
631
|
+
(0, import_react6.useEffect)(() => {
|
|
632
|
+
const el = element;
|
|
633
|
+
const { events, attrs } = groupProps(getProps());
|
|
634
|
+
events.forEach(([eventName, listener]) => el.addEventListener(eventName, listener));
|
|
635
|
+
attrs.forEach(([attrName, attrValue]) => el.setAttribute(attrName, attrValue));
|
|
636
|
+
return () => {
|
|
637
|
+
events.forEach(([eventName, listener]) => el.removeEventListener(eventName, listener));
|
|
638
|
+
attrs.forEach(([attrName]) => el.removeAttribute(attrName));
|
|
639
|
+
};
|
|
640
|
+
}, [getProps, element]);
|
|
641
|
+
}
|
|
642
|
+
function groupProps(props) {
|
|
643
|
+
const eventRegex = /^on(?=[A-Z])/;
|
|
644
|
+
return Object.entries(props).reduce(
|
|
645
|
+
(acc, [propName, propValue]) => {
|
|
646
|
+
if (!eventRegex.test(propName)) {
|
|
647
|
+
acc.attrs.push([propName, propValue]);
|
|
648
|
+
return acc;
|
|
649
|
+
}
|
|
650
|
+
const eventName = propName.replace(eventRegex, "").toLowerCase();
|
|
651
|
+
const listener = propValue;
|
|
652
|
+
acc.events.push([eventName, listener]);
|
|
653
|
+
return acc;
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
events: [],
|
|
657
|
+
attrs: []
|
|
658
|
+
}
|
|
659
|
+
);
|
|
660
|
+
}
|
|
661
|
+
|
|
509
662
|
// src/hooks/use-has-overlapping.ts
|
|
510
663
|
var possibleOverlappingSelectors = [".e-off-canvas"];
|
|
511
664
|
var useHasOverlapping = () => {
|
|
@@ -536,11 +689,11 @@ var OverlayBox = (0, import_ui.styled)(import_ui.Box, {
|
|
|
536
689
|
);
|
|
537
690
|
var OutlineOverlay = ({ element, isSelected, id, isGlobal = false }) => {
|
|
538
691
|
const { context, floating, isVisible } = useFloatingOnElement({ element, isSelected });
|
|
539
|
-
const { getFloatingProps, getReferenceProps } = (0,
|
|
692
|
+
const { getFloatingProps, getReferenceProps } = (0, import_react7.useInteractions)([(0, import_react7.useHover)(context)]);
|
|
540
693
|
const hasOverlapping = useHasOverlapping();
|
|
541
694
|
useBindReactPropsToElement(element, getReferenceProps);
|
|
542
695
|
const isSmallerOffset = element.offsetHeight <= 1;
|
|
543
|
-
return isVisible && !hasOverlapping && /* @__PURE__ */ React.createElement(
|
|
696
|
+
return isVisible && !hasOverlapping && /* @__PURE__ */ React.createElement(import_react7.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React.createElement(
|
|
544
697
|
OverlayBox,
|
|
545
698
|
{
|
|
546
699
|
ref: floating.setRef,
|
|
@@ -555,16 +708,104 @@ var OutlineOverlay = ({ element, isSelected, id, isGlobal = false }) => {
|
|
|
555
708
|
));
|
|
556
709
|
};
|
|
557
710
|
|
|
711
|
+
// src/components/grid-outline/grid-outline.tsx
|
|
712
|
+
var React3 = __toESM(require("react"));
|
|
713
|
+
|
|
714
|
+
// src/components/grid-outline/grid-outline-line.tsx
|
|
715
|
+
var React2 = __toESM(require("react"));
|
|
716
|
+
var FALLBACK_COLOR = "rgba(0, 0, 0, 0.12)";
|
|
717
|
+
var DASH = "2 2";
|
|
718
|
+
function GridOutlineLine({ x1, x2, y1, y2, color }) {
|
|
719
|
+
return /* @__PURE__ */ React2.createElement(
|
|
720
|
+
"line",
|
|
721
|
+
{
|
|
722
|
+
x1,
|
|
723
|
+
x2,
|
|
724
|
+
y1,
|
|
725
|
+
y2,
|
|
726
|
+
stroke: color || FALLBACK_COLOR,
|
|
727
|
+
strokeWidth: 1,
|
|
728
|
+
strokeDasharray: DASH,
|
|
729
|
+
vectorEffect: "non-scaling-stroke"
|
|
730
|
+
}
|
|
731
|
+
);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
// src/components/grid-outline/grid-outline.tsx
|
|
735
|
+
function GridOutline({ tracks, width, height }) {
|
|
736
|
+
const { vertical, horizontal, top, bottom, left, right } = computeOutlineGeometry(tracks, width, height);
|
|
737
|
+
return /* @__PURE__ */ React3.createElement(
|
|
738
|
+
"svg",
|
|
739
|
+
{
|
|
740
|
+
width,
|
|
741
|
+
height,
|
|
742
|
+
style: { position: "absolute", inset: 0, overflow: "visible" },
|
|
743
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
744
|
+
},
|
|
745
|
+
vertical.map((x, i) => /* @__PURE__ */ React3.createElement(
|
|
746
|
+
GridOutlineLine,
|
|
747
|
+
{
|
|
748
|
+
key: `v-${i}`,
|
|
749
|
+
x1: snapToHalfPixel(x),
|
|
750
|
+
x2: snapToHalfPixel(x),
|
|
751
|
+
y1: top,
|
|
752
|
+
y2: bottom,
|
|
753
|
+
color: tracks.borderColor
|
|
754
|
+
}
|
|
755
|
+
)),
|
|
756
|
+
horizontal.map((y, i) => /* @__PURE__ */ React3.createElement(
|
|
757
|
+
GridOutlineLine,
|
|
758
|
+
{
|
|
759
|
+
key: `h-${i}`,
|
|
760
|
+
x1: left,
|
|
761
|
+
x2: right,
|
|
762
|
+
y1: snapToHalfPixel(y),
|
|
763
|
+
y2: snapToHalfPixel(y),
|
|
764
|
+
color: tracks.borderColor
|
|
765
|
+
}
|
|
766
|
+
))
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
// src/components/grid-outline/grid-outline-overlay.tsx
|
|
771
|
+
var GridOutlineOverlay = ({ element, id, isSelected }) => {
|
|
772
|
+
const { settings } = (0, import_editor_elements3.useSelectedElementSettings)();
|
|
773
|
+
const enabled = import_editor_props2.booleanPropTypeUtil.extract(settings?.grid_outline);
|
|
774
|
+
const rect = useElementRect(element);
|
|
775
|
+
const tracks = useGridTracks(element, rect);
|
|
776
|
+
const { floating } = useFloatingOnElement({ element, isSelected });
|
|
777
|
+
if (enabled === false) {
|
|
778
|
+
return null;
|
|
779
|
+
}
|
|
780
|
+
if (tracks.columns.length === 0 && tracks.rows.length === 0) {
|
|
781
|
+
return null;
|
|
782
|
+
}
|
|
783
|
+
return /* @__PURE__ */ React4.createElement(import_react8.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React4.createElement(
|
|
784
|
+
import_ui2.Box,
|
|
785
|
+
{
|
|
786
|
+
ref: floating.setRef,
|
|
787
|
+
style: { ...floating.styles, pointerEvents: "none" },
|
|
788
|
+
"data-grid-outline": id,
|
|
789
|
+
role: "presentation"
|
|
790
|
+
},
|
|
791
|
+
/* @__PURE__ */ React4.createElement(GridOutline, { tracks, width: rect.width, height: rect.height })
|
|
792
|
+
));
|
|
793
|
+
};
|
|
794
|
+
|
|
558
795
|
// src/components/elements-overlays.tsx
|
|
559
796
|
var ELEMENTS_DATA_ATTR = "atomic";
|
|
560
797
|
var overlayRegistry = [
|
|
561
798
|
{
|
|
562
799
|
component: OutlineOverlay,
|
|
563
800
|
shouldRender: () => true
|
|
801
|
+
},
|
|
802
|
+
{
|
|
803
|
+
component: GridOutlineOverlay,
|
|
804
|
+
shouldRender: ({ element, isSelected }) => isSelected && element.dataset.eType === "e-grid"
|
|
564
805
|
}
|
|
565
806
|
];
|
|
566
807
|
function ElementsOverlays() {
|
|
567
|
-
const selected = (0,
|
|
808
|
+
const selected = (0, import_editor_elements4.useSelectedElement)();
|
|
568
809
|
const elements = useElementsDom();
|
|
569
810
|
const currentEditMode = (0, import_editor_v1_adapters2.useEditMode)();
|
|
570
811
|
const isEditMode = currentEditMode === "edit";
|
|
@@ -576,7 +817,7 @@ function ElementsOverlays() {
|
|
|
576
817
|
return elements.map(({ id, domElement, isGlobal }) => {
|
|
577
818
|
const isSelected = selected.element?.id === id;
|
|
578
819
|
return overlayRegistry.map(
|
|
579
|
-
({ shouldRender, component: Overlay }, index) => shouldRender({ id, element: domElement, isSelected }) && /* @__PURE__ */
|
|
820
|
+
({ shouldRender, component: Overlay }, index) => shouldRender({ id, element: domElement, isSelected }) && /* @__PURE__ */ React5.createElement(
|
|
580
821
|
Overlay,
|
|
581
822
|
{
|
|
582
823
|
key: `${id}-${index}`,
|
|
@@ -593,7 +834,7 @@ function useElementsDom() {
|
|
|
593
834
|
return (0, import_editor_v1_adapters2.__privateUseListenTo)(
|
|
594
835
|
[(0, import_editor_v1_adapters2.windowEvent)("elementor/editor/element-rendered"), (0, import_editor_v1_adapters2.windowEvent)("elementor/editor/element-destroyed")],
|
|
595
836
|
() => {
|
|
596
|
-
return (0,
|
|
837
|
+
return (0, import_editor_elements4.getElements)().filter((el) => isV4Element(el.view?.el?.dataset)).map((element) => ({
|
|
597
838
|
id: element.id,
|
|
598
839
|
domElement: element.view?.getDomElement?.()?.get?.(0),
|
|
599
840
|
isGlobal: element.model.get("isGlobal") ?? false
|
|
@@ -601,22 +842,28 @@ function useElementsDom() {
|
|
|
601
842
|
}
|
|
602
843
|
);
|
|
603
844
|
}
|
|
845
|
+
function isV4Element(dataset) {
|
|
846
|
+
if (!dataset) {
|
|
847
|
+
return false;
|
|
848
|
+
}
|
|
849
|
+
return ELEMENTS_DATA_ATTR in dataset || "eType" in dataset;
|
|
850
|
+
}
|
|
604
851
|
|
|
605
852
|
// src/components/interactions-renderer.tsx
|
|
606
|
-
var
|
|
853
|
+
var React6 = __toESM(require("react"));
|
|
607
854
|
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
608
|
-
var
|
|
855
|
+
var import_ui3 = require("@elementor/ui");
|
|
609
856
|
|
|
610
857
|
// src/hooks/use-interactions-items.ts
|
|
611
|
-
var
|
|
858
|
+
var import_react10 = require("react");
|
|
612
859
|
var import_editor_interactions = require("@elementor/editor-interactions");
|
|
613
860
|
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
614
861
|
|
|
615
862
|
// src/hooks/use-on-mount.ts
|
|
616
|
-
var
|
|
863
|
+
var import_react9 = require("react");
|
|
617
864
|
function useOnMount(cb) {
|
|
618
|
-
const mounted = (0,
|
|
619
|
-
(0,
|
|
865
|
+
const mounted = (0, import_react9.useRef)(false);
|
|
866
|
+
(0, import_react9.useEffect)(() => {
|
|
620
867
|
if (!mounted.current) {
|
|
621
868
|
mounted.current = true;
|
|
622
869
|
cb();
|
|
@@ -626,8 +873,8 @@ function useOnMount(cb) {
|
|
|
626
873
|
|
|
627
874
|
// src/hooks/use-interactions-items.ts
|
|
628
875
|
function useInteractionsItems() {
|
|
629
|
-
const [interactionItems, setInteractionItems] = (0,
|
|
630
|
-
const providerAndSubscribers = (0,
|
|
876
|
+
const [interactionItems, setInteractionItems] = (0, import_react10.useState)({});
|
|
877
|
+
const providerAndSubscribers = (0, import_react10.useMemo)(() => {
|
|
631
878
|
try {
|
|
632
879
|
const providers = import_editor_interactions.interactionsRepository.getProviders();
|
|
633
880
|
const mapped = providers.map((provider) => {
|
|
@@ -644,7 +891,7 @@ function useInteractionsItems() {
|
|
|
644
891
|
return [];
|
|
645
892
|
}
|
|
646
893
|
}, []);
|
|
647
|
-
(0,
|
|
894
|
+
(0, import_react10.useEffect)(() => {
|
|
648
895
|
if (providerAndSubscribers.length === 0) {
|
|
649
896
|
return;
|
|
650
897
|
}
|
|
@@ -675,7 +922,7 @@ function useInteractionsItems() {
|
|
|
675
922
|
});
|
|
676
923
|
});
|
|
677
924
|
});
|
|
678
|
-
return (0,
|
|
925
|
+
return (0, import_react10.useMemo)(() => {
|
|
679
926
|
const result = Object.values(interactionItems).sort(sortByProviderPriority).flatMap(({ items }) => items);
|
|
680
927
|
return result;
|
|
681
928
|
}, [interactionItems]);
|
|
@@ -705,7 +952,7 @@ function InteractionsRenderer() {
|
|
|
705
952
|
return null;
|
|
706
953
|
}
|
|
707
954
|
const interactionsData = JSON.stringify(Array.isArray(interactionItems) ? interactionItems : []);
|
|
708
|
-
return /* @__PURE__ */
|
|
955
|
+
return /* @__PURE__ */ React6.createElement(import_ui3.Portal, { container }, /* @__PURE__ */ React6.createElement(
|
|
709
956
|
"script",
|
|
710
957
|
{
|
|
711
958
|
type: "application/json",
|
|
@@ -721,9 +968,9 @@ function usePortalContainer() {
|
|
|
721
968
|
}
|
|
722
969
|
|
|
723
970
|
// src/components/style-renderer.tsx
|
|
724
|
-
var
|
|
971
|
+
var React7 = __toESM(require("react"));
|
|
725
972
|
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
726
|
-
var
|
|
973
|
+
var import_ui4 = require("@elementor/ui");
|
|
727
974
|
|
|
728
975
|
// src/hooks/use-documents-css-links.ts
|
|
729
976
|
var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
|
|
@@ -773,7 +1020,7 @@ function getLinkAttrs(el) {
|
|
|
773
1020
|
}
|
|
774
1021
|
|
|
775
1022
|
// src/hooks/use-style-items.ts
|
|
776
|
-
var
|
|
1023
|
+
var import_react13 = require("react");
|
|
777
1024
|
var import_editor_responsive2 = require("@elementor/editor-responsive");
|
|
778
1025
|
var import_editor_styles4 = require("@elementor/editor-styles");
|
|
779
1026
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
@@ -835,12 +1082,12 @@ function signalizedProcess(signal, steps = []) {
|
|
|
835
1082
|
}
|
|
836
1083
|
|
|
837
1084
|
// src/hooks/use-style-prop-resolver.ts
|
|
838
|
-
var
|
|
1085
|
+
var import_react11 = require("react");
|
|
839
1086
|
var import_editor_styles2 = require("@elementor/editor-styles");
|
|
840
1087
|
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
841
1088
|
|
|
842
1089
|
// src/renderers/create-props-resolver.ts
|
|
843
|
-
var
|
|
1090
|
+
var import_editor_props3 = require("@elementor/editor-props");
|
|
844
1091
|
|
|
845
1092
|
// src/renderers/multi-props.ts
|
|
846
1093
|
var isMultiProps = (propValue) => {
|
|
@@ -878,7 +1125,7 @@ function createPropsResolver({ transformers, schema: initialSchema, onPropResolv
|
|
|
878
1125
|
if (value === null || value === void 0) {
|
|
879
1126
|
return null;
|
|
880
1127
|
}
|
|
881
|
-
if (!(0,
|
|
1128
|
+
if (!(0, import_editor_props3.isTransformable)(value)) {
|
|
882
1129
|
return value;
|
|
883
1130
|
}
|
|
884
1131
|
if (depth > TRANSFORM_DEPTH_LIMIT) {
|
|
@@ -963,7 +1210,7 @@ var styleTransformersRegistry = createTransformersRegistry();
|
|
|
963
1210
|
|
|
964
1211
|
// src/hooks/use-style-prop-resolver.ts
|
|
965
1212
|
function useStylePropResolver() {
|
|
966
|
-
return (0,
|
|
1213
|
+
return (0, import_react11.useMemo)(() => {
|
|
967
1214
|
return createPropsResolver({
|
|
968
1215
|
transformers: styleTransformersRegistry,
|
|
969
1216
|
schema: (0, import_editor_styles2.getStylesSchema)(),
|
|
@@ -978,20 +1225,20 @@ function useStylePropResolver() {
|
|
|
978
1225
|
}
|
|
979
1226
|
|
|
980
1227
|
// src/hooks/use-style-renderer.ts
|
|
981
|
-
var
|
|
1228
|
+
var import_react12 = require("react");
|
|
982
1229
|
var import_editor_responsive = require("@elementor/editor-responsive");
|
|
983
1230
|
|
|
984
1231
|
// src/renderers/create-styles-renderer.ts
|
|
985
1232
|
var import_editor_styles3 = require("@elementor/editor-styles");
|
|
986
|
-
var
|
|
1233
|
+
var import_utils4 = require("@elementor/utils");
|
|
987
1234
|
|
|
988
1235
|
// src/renderers/errors.ts
|
|
989
|
-
var
|
|
990
|
-
var UnknownStyleTypeError = (0,
|
|
1236
|
+
var import_utils3 = require("@elementor/utils");
|
|
1237
|
+
var UnknownStyleTypeError = (0, import_utils3.createError)({
|
|
991
1238
|
code: "unknown_style_type",
|
|
992
1239
|
message: "Unknown style type"
|
|
993
1240
|
});
|
|
994
|
-
var UnknownStyleStateError = (0,
|
|
1241
|
+
var UnknownStyleStateError = (0, import_utils3.createError)({
|
|
995
1242
|
code: "unknown_style_state",
|
|
996
1243
|
message: "Unknown style state"
|
|
997
1244
|
});
|
|
@@ -1076,7 +1323,7 @@ async function propsToCss({ props, resolve, signal }) {
|
|
|
1076
1323
|
}, []).join("");
|
|
1077
1324
|
}
|
|
1078
1325
|
function customCssToString(customCss) {
|
|
1079
|
-
const decoded = (0,
|
|
1326
|
+
const decoded = (0, import_utils4.decodeString)(customCss?.raw || "");
|
|
1080
1327
|
if (!decoded.trim()) {
|
|
1081
1328
|
return "";
|
|
1082
1329
|
}
|
|
@@ -1087,7 +1334,7 @@ function customCssToString(customCss) {
|
|
|
1087
1334
|
var SELECTOR_PREFIX = ".elementor";
|
|
1088
1335
|
function useStyleRenderer(resolve) {
|
|
1089
1336
|
const breakpoints = (0, import_editor_responsive.useBreakpointsMap)();
|
|
1090
|
-
return (0,
|
|
1337
|
+
return (0, import_react12.useMemo)(() => {
|
|
1091
1338
|
return createStylesRenderer({
|
|
1092
1339
|
selectorPrefix: SELECTOR_PREFIX,
|
|
1093
1340
|
breakpoints,
|
|
@@ -1101,9 +1348,9 @@ function useStyleItems() {
|
|
|
1101
1348
|
const resolve = useStylePropResolver();
|
|
1102
1349
|
const renderStyles = useStyleRenderer(resolve);
|
|
1103
1350
|
const breakpoints = (0, import_editor_responsive2.useBreakpoints)();
|
|
1104
|
-
const [styleItems, setStyleItems] = (0,
|
|
1105
|
-
const styleItemsCacheRef = (0,
|
|
1106
|
-
const providerAndSubscribers = (0,
|
|
1351
|
+
const [styleItems, setStyleItems] = (0, import_react13.useState)({});
|
|
1352
|
+
const styleItemsCacheRef = (0, import_react13.useRef)(/* @__PURE__ */ new Map());
|
|
1353
|
+
const providerAndSubscribers = (0, import_react13.useMemo)(() => {
|
|
1107
1354
|
const createEmptyCache = () => {
|
|
1108
1355
|
return { orderedIds: [], itemsById: /* @__PURE__ */ new Map() };
|
|
1109
1356
|
};
|
|
@@ -1129,7 +1376,7 @@ function useStyleItems() {
|
|
|
1129
1376
|
})
|
|
1130
1377
|
);
|
|
1131
1378
|
}, [renderStyles]);
|
|
1132
|
-
(0,
|
|
1379
|
+
(0, import_react13.useEffect)(() => {
|
|
1133
1380
|
const unsubscribes = providerAndSubscribers.map(
|
|
1134
1381
|
({ provider, subscriber }) => provider.subscribe(subscriber)
|
|
1135
1382
|
);
|
|
@@ -1144,11 +1391,11 @@ function useStyleItems() {
|
|
|
1144
1391
|
await Promise.all(promises);
|
|
1145
1392
|
});
|
|
1146
1393
|
});
|
|
1147
|
-
const breakpointSorter = (0,
|
|
1394
|
+
const breakpointSorter = (0, import_react13.useMemo)(
|
|
1148
1395
|
() => createBreakpointSorter(breakpoints.map((breakpoint) => breakpoint.id)),
|
|
1149
1396
|
[breakpoints]
|
|
1150
1397
|
);
|
|
1151
|
-
return (0,
|
|
1398
|
+
return (0, import_react13.useMemo)(
|
|
1152
1399
|
() => Object.values(styleItems).sort(prioritySorter).flatMap(({ items }) => items).sort(stateSorter).sort(breakpointSorter),
|
|
1153
1400
|
[styleItems, breakpointSorter]
|
|
1154
1401
|
);
|
|
@@ -1290,7 +1537,7 @@ function StyleRenderer() {
|
|
|
1290
1537
|
if (!container) {
|
|
1291
1538
|
return null;
|
|
1292
1539
|
}
|
|
1293
|
-
return /* @__PURE__ */
|
|
1540
|
+
return /* @__PURE__ */ React7.createElement(import_ui4.Portal, { container }, filterUniqueStyleDefinitions(styleItems).map((item) => /* @__PURE__ */ React7.createElement("style", { key: `${item.id}-${item.breakpoint}-${item.state ?? "normal"}` }, item.value)), linksAttrs.map((attrs) => /* @__PURE__ */ React7.createElement("link", { ...attrs, key: attrs.id })));
|
|
1294
1541
|
}
|
|
1295
1542
|
function usePortalContainer2() {
|
|
1296
1543
|
return (0, import_editor_v1_adapters9.__privateUseListenTo)((0, import_editor_v1_adapters9.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_v1_adapters9.getCanvasIframeDocument)()?.head);
|
|
@@ -1320,7 +1567,7 @@ var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
|
|
|
1320
1567
|
var import_i18n = require("@wordpress/i18n");
|
|
1321
1568
|
|
|
1322
1569
|
// src/form-structure/utils.ts
|
|
1323
|
-
var
|
|
1570
|
+
var import_editor_elements5 = require("@elementor/editor-elements");
|
|
1324
1571
|
var FORM_ELEMENT_TYPE = "e-form";
|
|
1325
1572
|
var FORM_FIELD_ELEMENT_TYPES = /* @__PURE__ */ new Set([
|
|
1326
1573
|
"e-form-input",
|
|
@@ -1350,10 +1597,10 @@ function isWithinForm(element) {
|
|
|
1350
1597
|
return isElementWithinFormSelector(element);
|
|
1351
1598
|
}
|
|
1352
1599
|
function hasElementType(element, type) {
|
|
1353
|
-
return (0,
|
|
1600
|
+
return (0, import_editor_elements5.getAllDescendants)(element).some((item) => getElementType(item) === type);
|
|
1354
1601
|
}
|
|
1355
1602
|
function hasElementTypes(element, types) {
|
|
1356
|
-
return (0,
|
|
1603
|
+
return (0, import_editor_elements5.getAllDescendants)(element).some((item) => {
|
|
1357
1604
|
const itemType = getElementType(item);
|
|
1358
1605
|
return itemType ? types.has(itemType) : false;
|
|
1359
1606
|
});
|
|
@@ -2081,7 +2328,7 @@ function initStyleTransformers() {
|
|
|
2081
2328
|
}
|
|
2082
2329
|
|
|
2083
2330
|
// src/legacy/init-legacy-views.ts
|
|
2084
|
-
var
|
|
2331
|
+
var import_editor_elements9 = require("@elementor/editor-elements");
|
|
2085
2332
|
var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
|
|
2086
2333
|
|
|
2087
2334
|
// src/renderers/create-dom-renderer.ts
|
|
@@ -2210,25 +2457,25 @@ function createElementViewClassDeclaration() {
|
|
|
2210
2457
|
}
|
|
2211
2458
|
|
|
2212
2459
|
// src/legacy/create-nested-templated-element-type.ts
|
|
2213
|
-
var
|
|
2460
|
+
var import_editor_elements7 = require("@elementor/editor-elements");
|
|
2214
2461
|
|
|
2215
2462
|
// src/legacy/create-pending-element.ts
|
|
2216
|
-
var
|
|
2463
|
+
var import_editor_elements6 = require("@elementor/editor-elements");
|
|
2217
2464
|
function createPendingElement(wrapperView, data, options = {}) {
|
|
2218
2465
|
const parentContainer = wrapperView.getContainer();
|
|
2219
2466
|
const model = { ...data };
|
|
2220
2467
|
if (!model.id) {
|
|
2221
|
-
model.id = (0,
|
|
2468
|
+
model.id = (0, import_editor_elements6.generateElementId)();
|
|
2222
2469
|
}
|
|
2223
2470
|
if (!model.elements) {
|
|
2224
2471
|
model.elements = [];
|
|
2225
2472
|
}
|
|
2226
|
-
const added = (0,
|
|
2473
|
+
const added = (0, import_editor_elements6.addModelToParent)(parentContainer.id, model, options);
|
|
2227
2474
|
if (!added) {
|
|
2228
2475
|
return void 0;
|
|
2229
2476
|
}
|
|
2230
2477
|
const childId = model.id;
|
|
2231
|
-
const childModel = (0,
|
|
2478
|
+
const childModel = (0, import_editor_elements6.findModelInDocument)(childId);
|
|
2232
2479
|
if (!childModel) {
|
|
2233
2480
|
return void 0;
|
|
2234
2481
|
}
|
|
@@ -2239,7 +2486,7 @@ function createPendingElement(wrapperView, data, options = {}) {
|
|
|
2239
2486
|
model: childModel,
|
|
2240
2487
|
view: void 0,
|
|
2241
2488
|
lookup() {
|
|
2242
|
-
return (0,
|
|
2489
|
+
return (0, import_editor_elements6.getContainer)(childId) ?? pendingContainer;
|
|
2243
2490
|
}
|
|
2244
2491
|
};
|
|
2245
2492
|
wrapperView.once("render", () => {
|
|
@@ -2252,7 +2499,7 @@ function createPendingElement(wrapperView, data, options = {}) {
|
|
|
2252
2499
|
}
|
|
2253
2500
|
function selectChildWhenWrapperRenders(wrapperView, childId) {
|
|
2254
2501
|
wrapperView.once("render", () => {
|
|
2255
|
-
const childContainer = (0,
|
|
2502
|
+
const childContainer = (0, import_editor_elements6.getContainer)(childId);
|
|
2256
2503
|
if (childContainer?.model?.trigger) {
|
|
2257
2504
|
childContainer.model.trigger("request:edit");
|
|
2258
2505
|
return;
|
|
@@ -2518,7 +2765,7 @@ function createNestedTemplatedElementView({
|
|
|
2518
2765
|
this._initAlpine();
|
|
2519
2766
|
});
|
|
2520
2767
|
this.model.trigger("render:complete");
|
|
2521
|
-
window.dispatchEvent(new CustomEvent(
|
|
2768
|
+
window.dispatchEvent(new CustomEvent(import_editor_elements7.ELEMENT_STYLE_CHANGE_EVENT));
|
|
2522
2769
|
},
|
|
2523
2770
|
async _renderTemplate() {
|
|
2524
2771
|
const model = this.model;
|
|
@@ -2758,9 +3005,9 @@ function createPromotionView(BaseView) {
|
|
|
2758
3005
|
var import_client = require("react-dom/client");
|
|
2759
3006
|
|
|
2760
3007
|
// src/legacy/replacements/inline-editing/inline-editing-elements.tsx
|
|
2761
|
-
var
|
|
2762
|
-
var
|
|
2763
|
-
var
|
|
3008
|
+
var React9 = __toESM(require("react"));
|
|
3009
|
+
var import_editor_elements8 = require("@elementor/editor-elements");
|
|
3010
|
+
var import_editor_props5 = require("@elementor/editor-props");
|
|
2764
3011
|
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
2765
3012
|
var import_i18n3 = require("@wordpress/i18n");
|
|
2766
3013
|
|
|
@@ -2807,14 +3054,14 @@ var ReplacementBase = class {
|
|
|
2807
3054
|
};
|
|
2808
3055
|
|
|
2809
3056
|
// src/legacy/replacements/inline-editing/canvas-inline-editor.tsx
|
|
2810
|
-
var
|
|
2811
|
-
var
|
|
3057
|
+
var React8 = __toESM(require("react"));
|
|
3058
|
+
var import_react15 = require("react");
|
|
2812
3059
|
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
2813
|
-
var
|
|
2814
|
-
var
|
|
3060
|
+
var import_ui5 = require("@elementor/ui");
|
|
3061
|
+
var import_react16 = require("@floating-ui/react");
|
|
2815
3062
|
|
|
2816
3063
|
// src/legacy/replacements/inline-editing/inline-editing-utils.ts
|
|
2817
|
-
var
|
|
3064
|
+
var import_react14 = require("react");
|
|
2818
3065
|
var TOP_BAR_SELECTOR = "#elementor-editor-wrapper-v2";
|
|
2819
3066
|
var NAVIGATOR_SELECTOR = "#elementor-navigator";
|
|
2820
3067
|
var EDITING_PANEL = "#elementor-panel";
|
|
@@ -2845,8 +3092,8 @@ var getInlineEditorElement = (elementWrapper, expectedTag) => {
|
|
|
2845
3092
|
return !expectedTag ? null : elementWrapper.querySelector(expectedTag);
|
|
2846
3093
|
};
|
|
2847
3094
|
var useOnClickOutsideIframe = (handleUnmount) => {
|
|
2848
|
-
const asyncUnmountInlineEditor = (0,
|
|
2849
|
-
(0,
|
|
3095
|
+
const asyncUnmountInlineEditor = (0, import_react14.useCallback)(() => queueMicrotask(handleUnmount), [handleUnmount]);
|
|
3096
|
+
(0, import_react14.useEffect)(() => {
|
|
2850
3097
|
EDITOR_ELEMENTS_OUT_OF_IFRAME.forEach(
|
|
2851
3098
|
(selector) => document?.querySelector(selector)?.addEventListener("mousedown", asyncUnmountInlineEditor)
|
|
2852
3099
|
);
|
|
@@ -2856,8 +3103,8 @@ var useOnClickOutsideIframe = (handleUnmount) => {
|
|
|
2856
3103
|
}, []);
|
|
2857
3104
|
};
|
|
2858
3105
|
var useRenderToolbar = (ownerDocument, id) => {
|
|
2859
|
-
const [anchor, setAnchor] = (0,
|
|
2860
|
-
(0,
|
|
3106
|
+
const [anchor, setAnchor] = (0, import_react14.useState)(null);
|
|
3107
|
+
(0, import_react14.useEffect)(() => {
|
|
2861
3108
|
if (!anchor) {
|
|
2862
3109
|
removeToolbarAnchor(ownerDocument, id);
|
|
2863
3110
|
}
|
|
@@ -2871,7 +3118,7 @@ var useRenderToolbar = (ownerDocument, id) => {
|
|
|
2871
3118
|
setAnchor(null);
|
|
2872
3119
|
}
|
|
2873
3120
|
};
|
|
2874
|
-
const clearAnchor = (0,
|
|
3121
|
+
const clearAnchor = (0, import_react14.useCallback)(() => {
|
|
2875
3122
|
setAnchor(null);
|
|
2876
3123
|
}, []);
|
|
2877
3124
|
return { onSelectionEnd, anchor, clearAnchor };
|
|
@@ -2951,21 +3198,21 @@ var CanvasInlineEditor = ({
|
|
|
2951
3198
|
setValue,
|
|
2952
3199
|
requestDestroy
|
|
2953
3200
|
}) => {
|
|
2954
|
-
const [active, setActive] = (0,
|
|
2955
|
-
const [editor, setEditor] = (0,
|
|
3201
|
+
const [active, setActive] = (0, import_react15.useState)(true);
|
|
3202
|
+
const [editor, setEditor] = (0, import_react15.useState)(null);
|
|
2956
3203
|
const { onSelectionEnd, anchor: toolbarAnchor, clearAnchor } = useRenderToolbar(rootElement.ownerDocument, id);
|
|
2957
|
-
(0,
|
|
3204
|
+
(0, import_react15.useEffect)(() => {
|
|
2958
3205
|
if (!active) {
|
|
2959
3206
|
clearAnchor();
|
|
2960
3207
|
requestDestroy();
|
|
2961
3208
|
}
|
|
2962
3209
|
}, [active, clearAnchor, requestDestroy]);
|
|
2963
|
-
const dismiss = (0,
|
|
3210
|
+
const dismiss = (0, import_react15.useCallback)(() => {
|
|
2964
3211
|
setEditor(null);
|
|
2965
3212
|
setActive(false);
|
|
2966
3213
|
}, []);
|
|
2967
3214
|
useOnClickOutsideIframe(dismiss);
|
|
2968
|
-
(0,
|
|
3215
|
+
(0, import_react15.useEffect)(() => {
|
|
2969
3216
|
const ownerDocument = contentElement.ownerDocument;
|
|
2970
3217
|
const handleClickAway = (event) => {
|
|
2971
3218
|
if (contentElement.contains(event.target)) {
|
|
@@ -2979,7 +3226,7 @@ var CanvasInlineEditor = ({
|
|
|
2979
3226
|
if (!active) {
|
|
2980
3227
|
return null;
|
|
2981
3228
|
}
|
|
2982
|
-
return /* @__PURE__ */
|
|
3229
|
+
return /* @__PURE__ */ React8.createElement(import_ui5.ThemeProvider, null, /* @__PURE__ */ React8.createElement(InlineEditingOverlay, { expectedTag, rootElement, id }), /* @__PURE__ */ React8.createElement(
|
|
2983
3230
|
import_editor_controls2.InlineEditor,
|
|
2984
3231
|
{
|
|
2985
3232
|
onEditorCreate: setEditor,
|
|
@@ -2996,7 +3243,7 @@ var CanvasInlineEditor = ({
|
|
|
2996
3243
|
autofocus: true,
|
|
2997
3244
|
onSelectionEnd
|
|
2998
3245
|
}
|
|
2999
|
-
), toolbarAnchor && editor && /* @__PURE__ */
|
|
3246
|
+
), toolbarAnchor && editor && /* @__PURE__ */ React8.createElement(InlineEditingToolbar, { anchor: toolbarAnchor, editor, id }));
|
|
3000
3247
|
};
|
|
3001
3248
|
var InlineEditingOverlay = ({
|
|
3002
3249
|
expectedTag,
|
|
@@ -3004,26 +3251,26 @@ var InlineEditingOverlay = ({
|
|
|
3004
3251
|
id
|
|
3005
3252
|
}) => {
|
|
3006
3253
|
const inlineEditedElement = getInlineEditorElement(rootElement, expectedTag);
|
|
3007
|
-
const [overlayRefElement, setOverlayElement] = (0,
|
|
3008
|
-
(0,
|
|
3254
|
+
const [overlayRefElement, setOverlayElement] = (0, import_react15.useState)(inlineEditedElement);
|
|
3255
|
+
(0, import_react15.useEffect)(() => {
|
|
3009
3256
|
setOverlayElement(getInlineEditorElement(rootElement, expectedTag));
|
|
3010
3257
|
}, [expectedTag, rootElement]);
|
|
3011
|
-
return overlayRefElement ? /* @__PURE__ */
|
|
3258
|
+
return overlayRefElement ? /* @__PURE__ */ React8.createElement(OutlineOverlay, { element: overlayRefElement, id, isSelected: true }) : null;
|
|
3012
3259
|
};
|
|
3013
3260
|
var InlineEditingToolbar = ({ anchor, editor, id }) => {
|
|
3014
|
-
const { refs, floatingStyles } = (0,
|
|
3261
|
+
const { refs, floatingStyles } = (0, import_react16.useFloating)({
|
|
3015
3262
|
placement: "top",
|
|
3016
3263
|
strategy: "fixed",
|
|
3017
3264
|
transform: false,
|
|
3018
|
-
whileElementsMounted:
|
|
3019
|
-
middleware: [horizontalShifterMiddleware, (0,
|
|
3265
|
+
whileElementsMounted: import_react16.autoUpdate,
|
|
3266
|
+
middleware: [horizontalShifterMiddleware, (0, import_react16.flip)()]
|
|
3020
3267
|
});
|
|
3021
|
-
(0,
|
|
3268
|
+
(0, import_react15.useLayoutEffect)(() => {
|
|
3022
3269
|
refs.setReference(anchor);
|
|
3023
3270
|
return () => refs.setReference(null);
|
|
3024
3271
|
}, [anchor, refs]);
|
|
3025
|
-
return /* @__PURE__ */
|
|
3026
|
-
|
|
3272
|
+
return /* @__PURE__ */ React8.createElement(import_react16.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React8.createElement(
|
|
3273
|
+
import_ui5.Box,
|
|
3027
3274
|
{
|
|
3028
3275
|
ref: refs.setFloating,
|
|
3029
3276
|
role: "presentation",
|
|
@@ -3032,16 +3279,16 @@ var InlineEditingToolbar = ({ anchor, editor, id }) => {
|
|
|
3032
3279
|
pointerEvents: "none"
|
|
3033
3280
|
}
|
|
3034
3281
|
},
|
|
3035
|
-
/* @__PURE__ */
|
|
3282
|
+
/* @__PURE__ */ React8.createElement(import_editor_controls2.InlineEditorToolbar, { editor, elementId: id })
|
|
3036
3283
|
));
|
|
3037
3284
|
};
|
|
3038
3285
|
|
|
3039
3286
|
// src/legacy/replacements/inline-editing/inline-editing-eligibility.ts
|
|
3040
|
-
var
|
|
3287
|
+
var import_editor_props4 = require("@elementor/editor-props");
|
|
3041
3288
|
var hasKey = (propType) => {
|
|
3042
3289
|
return "key" in propType;
|
|
3043
3290
|
};
|
|
3044
|
-
var TEXT_PROP_TYPE_KEYS = /* @__PURE__ */ new Set([
|
|
3291
|
+
var TEXT_PROP_TYPE_KEYS = /* @__PURE__ */ new Set([import_editor_props4.htmlV3PropTypeUtil.key, import_editor_props4.stringPropTypeUtil.key]);
|
|
3045
3292
|
var isCoreTextPropTypeKey = (key) => {
|
|
3046
3293
|
return TEXT_PROP_TYPE_KEYS.has(key);
|
|
3047
3294
|
};
|
|
@@ -3061,7 +3308,7 @@ var isInlineEditingAllowed = ({ rawValue, propTypeFromSchema }) => {
|
|
|
3061
3308
|
if (rawValue === null || rawValue === void 0) {
|
|
3062
3309
|
return isAllowedBySchema(propTypeFromSchema);
|
|
3063
3310
|
}
|
|
3064
|
-
return
|
|
3311
|
+
return import_editor_props4.htmlV3PropTypeUtil.isValid(rawValue) || import_editor_props4.stringPropTypeUtil.isValid(rawValue);
|
|
3065
3312
|
};
|
|
3066
3313
|
|
|
3067
3314
|
// src/legacy/replacements/inline-editing/inline-editing-elements.tsx
|
|
@@ -3135,7 +3382,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3135
3382
|
return INLINE_EDITING_PROPERTY_PER_TYPE[this.type] ?? "";
|
|
3136
3383
|
}
|
|
3137
3384
|
getInlineEditablePropType() {
|
|
3138
|
-
const propSchema = (0,
|
|
3385
|
+
const propSchema = (0, import_editor_elements8.getElementType)(this.type)?.propsSchema;
|
|
3139
3386
|
const propertyName = this.getInlineEditablePropertyName();
|
|
3140
3387
|
return propSchema?.[propertyName] ?? null;
|
|
3141
3388
|
}
|
|
@@ -3146,15 +3393,15 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3146
3393
|
}
|
|
3147
3394
|
getExtractedContentValue() {
|
|
3148
3395
|
const propValue = this.getInlineEditablePropValue();
|
|
3149
|
-
const extracted =
|
|
3150
|
-
return
|
|
3396
|
+
const extracted = import_editor_props5.htmlV3PropTypeUtil.extract(propValue);
|
|
3397
|
+
return import_editor_props5.stringPropTypeUtil.extract(extracted?.content ?? null) ?? "";
|
|
3151
3398
|
}
|
|
3152
3399
|
setContentValue(value) {
|
|
3153
3400
|
const settingKey = this.getInlineEditablePropertyName();
|
|
3154
3401
|
const html = value || "";
|
|
3155
|
-
const parsed = (0,
|
|
3156
|
-
const valueToSave =
|
|
3157
|
-
content: parsed.content ?
|
|
3402
|
+
const parsed = (0, import_editor_props5.parseHtmlChildren)(html);
|
|
3403
|
+
const valueToSave = import_editor_props5.htmlV3PropTypeUtil.create({
|
|
3404
|
+
content: parsed.content ? import_editor_props5.stringPropTypeUtil.create(parsed.content) : null,
|
|
3158
3405
|
children: parsed.children
|
|
3159
3406
|
});
|
|
3160
3407
|
(0, import_editor_v1_adapters12.undoable)(
|
|
@@ -3169,7 +3416,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3169
3416
|
}
|
|
3170
3417
|
},
|
|
3171
3418
|
{
|
|
3172
|
-
title: (0,
|
|
3419
|
+
title: (0, import_editor_elements8.getElementLabel)(this.id),
|
|
3173
3420
|
// translators: %s is the name of the property that was edited.
|
|
3174
3421
|
subtitle: (0, import_i18n3.__)("%s edited", "elementor").replace(
|
|
3175
3422
|
"%s",
|
|
@@ -3185,7 +3432,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3185
3432
|
return null;
|
|
3186
3433
|
}
|
|
3187
3434
|
if (propType.kind === "union") {
|
|
3188
|
-
const textKeys = [
|
|
3435
|
+
const textKeys = [import_editor_props5.htmlV3PropTypeUtil.key, import_editor_props5.stringPropTypeUtil.key];
|
|
3189
3436
|
for (const key of textKeys) {
|
|
3190
3437
|
if (propType.prop_types[key]) {
|
|
3191
3438
|
return key;
|
|
@@ -3202,7 +3449,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3202
3449
|
(0, import_editor_v1_adapters12.__privateRunCommandSync)(
|
|
3203
3450
|
"document/elements/set-settings",
|
|
3204
3451
|
{
|
|
3205
|
-
container: (0,
|
|
3452
|
+
container: (0, import_editor_elements8.getContainer)(this.id),
|
|
3206
3453
|
settings: {
|
|
3207
3454
|
[key]: value
|
|
3208
3455
|
}
|
|
@@ -3214,10 +3461,10 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3214
3461
|
getExpectedTag() {
|
|
3215
3462
|
const tagPropType = this.getTagPropType();
|
|
3216
3463
|
const tagSettingKey = "tag";
|
|
3217
|
-
return
|
|
3464
|
+
return import_editor_props5.stringPropTypeUtil.extract(this.getSetting(tagSettingKey) ?? null) ?? import_editor_props5.stringPropTypeUtil.extract(tagPropType?.default ?? null) ?? null;
|
|
3218
3465
|
}
|
|
3219
3466
|
getTagPropType() {
|
|
3220
|
-
const propsSchema = (0,
|
|
3467
|
+
const propsSchema = (0, import_editor_elements8.getElementType)(this.type)?.propsSchema;
|
|
3221
3468
|
if (!propsSchema?.tag) {
|
|
3222
3469
|
return null;
|
|
3223
3470
|
}
|
|
@@ -3241,7 +3488,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
3241
3488
|
contentElement.innerHTML = "";
|
|
3242
3489
|
this.editing = true;
|
|
3243
3490
|
this.reactRoot.render(
|
|
3244
|
-
/* @__PURE__ */
|
|
3491
|
+
/* @__PURE__ */ React9.createElement(
|
|
3245
3492
|
CanvasInlineEditor,
|
|
3246
3493
|
{
|
|
3247
3494
|
elementClasses,
|
|
@@ -3377,7 +3624,7 @@ function registerElementType(type, elementTypeGenerator) {
|
|
|
3377
3624
|
}
|
|
3378
3625
|
function initLegacyViews() {
|
|
3379
3626
|
(0, import_editor_v1_adapters13.__privateListenTo)((0, import_editor_v1_adapters13.v1ReadyEvent)(), () => {
|
|
3380
|
-
const widgetsCache = (0,
|
|
3627
|
+
const widgetsCache = (0, import_editor_elements9.getWidgetsCache)() ?? {};
|
|
3381
3628
|
const legacyWindow = window;
|
|
3382
3629
|
const renderer = createDomRenderer();
|
|
3383
3630
|
registerProPromotionTypes(widgetsCache);
|
|
@@ -3434,7 +3681,7 @@ function createNestedTemplatedType(type, renderer, element) {
|
|
|
3434
3681
|
}
|
|
3435
3682
|
|
|
3436
3683
|
// src/legacy/tabs-model-extensions.ts
|
|
3437
|
-
var
|
|
3684
|
+
var import_editor_props6 = require("@elementor/editor-props");
|
|
3438
3685
|
var tabModelExtensions = {
|
|
3439
3686
|
modifyDefaultChildren(elements) {
|
|
3440
3687
|
if (!Array.isArray(elements) || elements.length === 0) {
|
|
@@ -3450,8 +3697,8 @@ var tabModelExtensions = {
|
|
|
3450
3697
|
...paragraphElement,
|
|
3451
3698
|
settings: {
|
|
3452
3699
|
...paragraphElement.settings,
|
|
3453
|
-
paragraph:
|
|
3454
|
-
content:
|
|
3700
|
+
paragraph: import_editor_props6.htmlV3PropTypeUtil.create({
|
|
3701
|
+
content: import_editor_props6.stringPropTypeUtil.create(`Tab ${position}`),
|
|
3455
3702
|
children: []
|
|
3456
3703
|
})
|
|
3457
3704
|
}
|
|
@@ -3521,7 +3768,7 @@ var initAvailableWidgetsResource = (reg) => {
|
|
|
3521
3768
|
};
|
|
3522
3769
|
|
|
3523
3770
|
// src/mcp/resources/document-structure-resource.ts
|
|
3524
|
-
var
|
|
3771
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
3525
3772
|
var import_editor_v1_adapters15 = require("@elementor/editor-v1-adapters");
|
|
3526
3773
|
var DOCUMENT_STRUCTURE_URI = "elementor://document/structure";
|
|
3527
3774
|
var initDocumentStructureResource = (reg) => {
|
|
@@ -3586,7 +3833,7 @@ function resolveElementVersion(element) {
|
|
|
3586
3833
|
return "v4";
|
|
3587
3834
|
}
|
|
3588
3835
|
const widgetType = element.model?.attributes?.widgetType;
|
|
3589
|
-
if (widgetType && (0,
|
|
3836
|
+
if (widgetType && (0, import_editor_elements10.getWidgetsCache)()?.[widgetType]?.atomic_props_schema) {
|
|
3590
3837
|
return "v4";
|
|
3591
3838
|
}
|
|
3592
3839
|
return "v3";
|
|
@@ -3782,7 +4029,7 @@ var initGeneralContextResource = (reg) => {
|
|
|
3782
4029
|
};
|
|
3783
4030
|
|
|
3784
4031
|
// src/mcp/resources/selected-element-resource.ts
|
|
3785
|
-
var
|
|
4032
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
3786
4033
|
var import_editor_v1_adapters18 = require("@elementor/editor-v1-adapters");
|
|
3787
4034
|
var SELECTED_ELEMENT_URI = "elementor://context/selected-element";
|
|
3788
4035
|
var initSelectedElementResource = (reg) => {
|
|
@@ -3853,11 +4100,11 @@ function createEmptySelectedElementPayload() {
|
|
|
3853
4100
|
};
|
|
3854
4101
|
}
|
|
3855
4102
|
function readSelectionFromEditor() {
|
|
3856
|
-
const elements = (0,
|
|
4103
|
+
const elements = (0, import_editor_elements11.getSelectedElements)();
|
|
3857
4104
|
if (elements.length !== 1) {
|
|
3858
4105
|
return createEmptySelectedElementPayload();
|
|
3859
4106
|
}
|
|
3860
|
-
const container = (0,
|
|
4107
|
+
const container = (0, import_editor_elements11.getContainer)(elements[0].id);
|
|
3861
4108
|
return buildPayloadFromContainer(container);
|
|
3862
4109
|
}
|
|
3863
4110
|
function buildPayloadFromContainer(container) {
|
|
@@ -3880,7 +4127,7 @@ function resolveElementVersion2(container, widgetType) {
|
|
|
3880
4127
|
if (container.model?.config?.atomic) {
|
|
3881
4128
|
return "v4";
|
|
3882
4129
|
}
|
|
3883
|
-
if (widgetType && (0,
|
|
4130
|
+
if (widgetType && (0, import_editor_elements11.getWidgetsCache)()?.[widgetType]?.atomic_props_schema) {
|
|
3884
4131
|
return "v4";
|
|
3885
4132
|
}
|
|
3886
4133
|
return "v3";
|
|
@@ -3890,7 +4137,7 @@ function getElementProperties(container, widgetType) {
|
|
|
3890
4137
|
if (!settings || typeof settings !== "object") {
|
|
3891
4138
|
return null;
|
|
3892
4139
|
}
|
|
3893
|
-
const widgetConfig = widgetType ? (0,
|
|
4140
|
+
const widgetConfig = widgetType ? (0, import_editor_elements11.getWidgetsCache)()?.[widgetType] : null;
|
|
3894
4141
|
const controls = widgetConfig?.controls;
|
|
3895
4142
|
const filtered = {};
|
|
3896
4143
|
for (const [key, value] of Object.entries(settings)) {
|
|
@@ -3929,19 +4176,19 @@ function getElementDisplayName(container) {
|
|
|
3929
4176
|
|
|
3930
4177
|
// src/mcp/tools/build-composition/tool.ts
|
|
3931
4178
|
var import_editor_documents3 = require("@elementor/editor-documents");
|
|
3932
|
-
var
|
|
4179
|
+
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3933
4180
|
|
|
3934
4181
|
// src/composition-builder/composition-builder.ts
|
|
3935
|
-
var
|
|
4182
|
+
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3936
4183
|
|
|
3937
4184
|
// src/mcp/utils/do-update-element-property.ts
|
|
3938
|
-
var
|
|
3939
|
-
var
|
|
4185
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
4186
|
+
var import_editor_props7 = require("@elementor/editor-props");
|
|
3940
4187
|
var import_editor_styles5 = require("@elementor/editor-styles");
|
|
3941
4188
|
var import_editor_v1_adapters19 = require("@elementor/editor-v1-adapters");
|
|
3942
4189
|
function resolvePropValue(value, forceKey) {
|
|
3943
4190
|
const Utils = window.elementorV2.editorVariables.Utils;
|
|
3944
|
-
return
|
|
4191
|
+
return import_editor_props7.Schema.adjustLlmPropValueSchema(value, {
|
|
3945
4192
|
forceKey,
|
|
3946
4193
|
transformers: Utils.globalVariablesLLMResolvers
|
|
3947
4194
|
});
|
|
@@ -3949,7 +4196,7 @@ function resolvePropValue(value, forceKey) {
|
|
|
3949
4196
|
var doUpdateElementProperty = (params) => {
|
|
3950
4197
|
const { elementId, propertyName, propertyValue, elementType } = params;
|
|
3951
4198
|
if (propertyName === "_styles") {
|
|
3952
|
-
const elementStyles = (0,
|
|
4199
|
+
const elementStyles = (0, import_editor_elements12.getElementStyles)(elementId) || {};
|
|
3953
4200
|
const propertyMapValue = propertyValue;
|
|
3954
4201
|
const styleSchema = (0, import_editor_styles5.getStylesSchema)();
|
|
3955
4202
|
const transformedStyleValues = Object.fromEntries(
|
|
@@ -3986,7 +4233,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
3986
4233
|
}
|
|
3987
4234
|
if (propertyRawSchema.kind === "plain") {
|
|
3988
4235
|
if (typeof propertyMapValue[stylePropName] !== "object") {
|
|
3989
|
-
const propUtil = (0,
|
|
4236
|
+
const propUtil = (0, import_editor_props7.getPropSchemaFromCache)(propertyRawSchema.key);
|
|
3990
4237
|
if (propUtil) {
|
|
3991
4238
|
const plainValue = propUtil.create(propertyMapValue[stylePropName]);
|
|
3992
4239
|
propertyMapValue[stylePropName] = plainValue;
|
|
@@ -3997,7 +4244,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
3997
4244
|
delete transformedStyleValues.custom_css;
|
|
3998
4245
|
const localStyle = Object.values(elementStyles).find((style) => style.label === "local");
|
|
3999
4246
|
if (!localStyle) {
|
|
4000
|
-
(0,
|
|
4247
|
+
(0, import_editor_elements12.createElementStyle)({
|
|
4001
4248
|
elementId,
|
|
4002
4249
|
...typeof customCss !== "undefined" ? { custom_css: customCss } : {},
|
|
4003
4250
|
classesProp: "classes",
|
|
@@ -4011,7 +4258,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
4011
4258
|
}
|
|
4012
4259
|
});
|
|
4013
4260
|
} else {
|
|
4014
|
-
(0,
|
|
4261
|
+
(0, import_editor_elements12.updateElementStyle)({
|
|
4015
4262
|
elementId,
|
|
4016
4263
|
styleId: localStyle.id,
|
|
4017
4264
|
meta: {
|
|
@@ -4026,7 +4273,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
4026
4273
|
}
|
|
4027
4274
|
return;
|
|
4028
4275
|
}
|
|
4029
|
-
const elementPropSchema = (0,
|
|
4276
|
+
const elementPropSchema = (0, import_editor_elements12.getWidgetsCache)()?.[elementType]?.atomic_props_schema;
|
|
4030
4277
|
if (!elementPropSchema) {
|
|
4031
4278
|
throw new Error(`No prop schema found for element type: ${elementType}`);
|
|
4032
4279
|
}
|
|
@@ -4040,7 +4287,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
4040
4287
|
}
|
|
4041
4288
|
const propKey = elementPropSchema[propertyName].key;
|
|
4042
4289
|
const value = resolvePropValue(propertyValue, propKey);
|
|
4043
|
-
const { valid, jsonSchema } =
|
|
4290
|
+
const { valid, jsonSchema } = import_editor_props7.Schema.validatePropValue(elementPropSchema[propertyName], propertyValue);
|
|
4044
4291
|
if (!valid) {
|
|
4045
4292
|
throw new Error(
|
|
4046
4293
|
`Invalid PropValue for elementId: ${elementId}. PropKey: ${propKey}, PropValue: ${JSON.stringify(
|
|
@@ -4049,7 +4296,7 @@ var doUpdateElementProperty = (params) => {
|
|
|
4049
4296
|
Expected Schema: ${jsonSchema}`
|
|
4050
4297
|
);
|
|
4051
4298
|
}
|
|
4052
|
-
(0,
|
|
4299
|
+
(0, import_editor_elements12.updateElementSettings)({
|
|
4053
4300
|
id: elementId,
|
|
4054
4301
|
props: {
|
|
4055
4302
|
[propertyName]: value
|
|
@@ -4060,15 +4307,15 @@ Expected Schema: ${jsonSchema}`
|
|
|
4060
4307
|
};
|
|
4061
4308
|
|
|
4062
4309
|
// src/mcp/utils/validate-input.ts
|
|
4063
|
-
var
|
|
4064
|
-
var
|
|
4310
|
+
var import_editor_elements13 = require("@elementor/editor-elements");
|
|
4311
|
+
var import_editor_props8 = require("@elementor/editor-props");
|
|
4065
4312
|
var import_editor_styles6 = require("@elementor/editor-styles");
|
|
4066
4313
|
var _widgetsSchema = null;
|
|
4067
4314
|
var validateInput = {
|
|
4068
4315
|
get widgetsSchema() {
|
|
4069
4316
|
if (!_widgetsSchema) {
|
|
4070
4317
|
const schema2 = {};
|
|
4071
|
-
const cache = (0,
|
|
4318
|
+
const cache = (0, import_editor_elements13.getWidgetsCache)();
|
|
4072
4319
|
if (!cache) {
|
|
4073
4320
|
return {};
|
|
4074
4321
|
}
|
|
@@ -4095,10 +4342,10 @@ var validateInput = {
|
|
|
4095
4342
|
if (!propSchema) {
|
|
4096
4343
|
errors.push(`Property "${propName}" is not defined in the schema.`);
|
|
4097
4344
|
hasInvalidKey = true;
|
|
4098
|
-
} else if (!
|
|
4345
|
+
} else if (!import_editor_props8.Schema.isPropKeyConfigurable(propName, propSchema)) {
|
|
4099
4346
|
errors.push(`Property "${propName}" is not configurable.`);
|
|
4100
4347
|
} else {
|
|
4101
|
-
const { valid } =
|
|
4348
|
+
const { valid } = import_editor_props8.Schema.validatePropValue(propSchema, propValue);
|
|
4102
4349
|
if (!valid) {
|
|
4103
4350
|
errors.push(
|
|
4104
4351
|
`Invalid property "${propName}". Validate input with resource [${STYLE_SCHEMA_URI.replace(
|
|
@@ -4192,11 +4439,11 @@ var CompositionBuilder = class _CompositionBuilder {
|
|
|
4192
4439
|
elementCustomCSS = {};
|
|
4193
4440
|
rootContainers = [];
|
|
4194
4441
|
api = {
|
|
4195
|
-
createElement:
|
|
4196
|
-
deleteElement:
|
|
4197
|
-
getWidgetsCache:
|
|
4198
|
-
generateElementId:
|
|
4199
|
-
getContainer:
|
|
4442
|
+
createElement: import_editor_elements14.createElement,
|
|
4443
|
+
deleteElement: import_editor_elements14.deleteElement,
|
|
4444
|
+
getWidgetsCache: import_editor_elements14.getWidgetsCache,
|
|
4445
|
+
generateElementId: import_editor_elements14.generateElementId,
|
|
4446
|
+
getContainer: import_editor_elements14.getContainer,
|
|
4200
4447
|
doUpdateElementProperty
|
|
4201
4448
|
};
|
|
4202
4449
|
xml;
|
|
@@ -4661,14 +4908,14 @@ var initBuildCompositionsTool = (reg) => {
|
|
|
4661
4908
|
let generatedXML = "";
|
|
4662
4909
|
const errors = [];
|
|
4663
4910
|
const rootContainers = [];
|
|
4664
|
-
const documentContainer = (0,
|
|
4911
|
+
const documentContainer = (0, import_editor_elements15.getContainer)("document");
|
|
4665
4912
|
const currentDocument = (0, import_editor_documents3.getCurrentDocument)();
|
|
4666
4913
|
const targetContainer = getCompositionTargetContainer(documentContainer, currentDocument?.type.value);
|
|
4667
4914
|
try {
|
|
4668
4915
|
const compositionBuilder = CompositionBuilder.fromXMLString(xmlStructure, {
|
|
4669
|
-
createElement:
|
|
4670
|
-
deleteElement:
|
|
4671
|
-
getWidgetsCache:
|
|
4916
|
+
createElement: import_editor_elements15.createElement,
|
|
4917
|
+
deleteElement: import_editor_elements15.deleteElement,
|
|
4918
|
+
getWidgetsCache: import_editor_elements15.getWidgetsCache
|
|
4672
4919
|
});
|
|
4673
4920
|
compositionBuilder.setElementConfig(elementConfig);
|
|
4674
4921
|
compositionBuilder.setStylesConfig(stylesConfig);
|
|
@@ -4704,7 +4951,7 @@ var initBuildCompositionsTool = (reg) => {
|
|
|
4704
4951
|
}
|
|
4705
4952
|
if (errors.length) {
|
|
4706
4953
|
rootContainers.forEach((rootContainer) => {
|
|
4707
|
-
(0,
|
|
4954
|
+
(0, import_editor_elements15.deleteElement)({
|
|
4708
4955
|
container: rootContainer,
|
|
4709
4956
|
options: { useHistory: false }
|
|
4710
4957
|
});
|
|
@@ -4758,7 +5005,7 @@ function assertCompositionXmlUsesV4WidgetsOnly(xmlStructure) {
|
|
|
4758
5005
|
if (doc.querySelector("parsererror")) {
|
|
4759
5006
|
throw new Error("Failed to parse XML string: " + doc);
|
|
4760
5007
|
}
|
|
4761
|
-
const widgetsCache = (0,
|
|
5008
|
+
const widgetsCache = (0, import_editor_elements15.getWidgetsCache)() ?? {};
|
|
4762
5009
|
for (const node of doc.querySelectorAll("*")) {
|
|
4763
5010
|
const type = node.tagName;
|
|
4764
5011
|
const widgetData = widgetsCache[type];
|
|
@@ -4777,7 +5024,7 @@ function assertCompositionXmlUsesV4WidgetsOnly(xmlStructure) {
|
|
|
4777
5024
|
}
|
|
4778
5025
|
|
|
4779
5026
|
// src/mcp/tools/configure-element/tool.ts
|
|
4780
|
-
var
|
|
5027
|
+
var import_editor_elements16 = require("@elementor/editor-elements");
|
|
4781
5028
|
|
|
4782
5029
|
// src/mcp/tools/configure-element/prompt.ts
|
|
4783
5030
|
var import_editor_mcp3 = require("@elementor/editor-mcp");
|
|
@@ -4946,7 +5193,7 @@ var initConfigureElementTool = (reg) => {
|
|
|
4946
5193
|
{ description: "Configure element guide", uri: CONFIGURE_ELEMENT_GUIDE_URI }
|
|
4947
5194
|
],
|
|
4948
5195
|
handler: ({ elementId, propertiesToChange, elementType, stylePropertiesToChange }) => {
|
|
4949
|
-
const widgetData = (0,
|
|
5196
|
+
const widgetData = (0, import_editor_elements16.getWidgetsCache)()?.[elementType];
|
|
4950
5197
|
if (!widgetData) {
|
|
4951
5198
|
throw new Error(
|
|
4952
5199
|
`Unknown element type: ${elementType}. Check the available-widgets resource for valid types.`
|
|
@@ -5038,8 +5285,8 @@ Check the styles schema at the resource [${STYLE_SCHEMA_URI.replace(
|
|
|
5038
5285
|
}
|
|
5039
5286
|
|
|
5040
5287
|
// src/mcp/tools/get-element-config/tool.ts
|
|
5041
|
-
var
|
|
5042
|
-
var
|
|
5288
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
5289
|
+
var import_editor_props9 = require("@elementor/editor-props");
|
|
5043
5290
|
var import_schema5 = require("@elementor/schema");
|
|
5044
5291
|
var schema = {
|
|
5045
5292
|
elementId: import_schema5.z.string()
|
|
@@ -5073,12 +5320,12 @@ var initGetElementConfigTool = (reg) => {
|
|
|
5073
5320
|
schema,
|
|
5074
5321
|
outputSchema: outputSchema3,
|
|
5075
5322
|
handler: async ({ elementId }) => {
|
|
5076
|
-
const element = (0,
|
|
5323
|
+
const element = (0, import_editor_elements17.getContainer)(elementId);
|
|
5077
5324
|
if (!element) {
|
|
5078
5325
|
throw new Error(`Element with ID ${elementId} not found.`);
|
|
5079
5326
|
}
|
|
5080
5327
|
const elementType = element.model.get("widgetType") || element.model.get("elType") || "";
|
|
5081
|
-
const widgetData = (0,
|
|
5328
|
+
const widgetData = (0, import_editor_elements17.getWidgetsCache)()?.[elementType];
|
|
5082
5329
|
if (!widgetData) {
|
|
5083
5330
|
throw new Error(
|
|
5084
5331
|
`Unknown element type: ${elementType}. Check the available-widgets resource for valid types.`
|
|
@@ -5090,16 +5337,16 @@ var initGetElementConfigTool = (reg) => {
|
|
|
5090
5337
|
);
|
|
5091
5338
|
}
|
|
5092
5339
|
const elementRawSettings = element.settings;
|
|
5093
|
-
const propSchema = (0,
|
|
5340
|
+
const propSchema = (0, import_editor_elements17.getWidgetsCache)()?.[elementType]?.atomic_props_schema;
|
|
5094
5341
|
if (!elementRawSettings || !propSchema) {
|
|
5095
5342
|
throw new Error(`No settings or prop schema found for element ID: ${elementId}`);
|
|
5096
5343
|
}
|
|
5097
5344
|
const propValues = {};
|
|
5098
5345
|
const stylePropValues = {};
|
|
5099
|
-
|
|
5346
|
+
import_editor_props9.Schema.configurableKeys(propSchema).forEach((key) => {
|
|
5100
5347
|
propValues[key] = structuredClone(elementRawSettings.get(key));
|
|
5101
5348
|
});
|
|
5102
|
-
const elementStyles = (0,
|
|
5349
|
+
const elementStyles = (0, import_editor_elements17.getElementStyles)(elementId) || {};
|
|
5103
5350
|
const localStyle = Object.values(elementStyles).find((style) => style.label === "local");
|
|
5104
5351
|
if (localStyle) {
|
|
5105
5352
|
const defaultVariant = localStyle.variants.find(
|
|
@@ -5257,7 +5504,7 @@ Note: The "size" property controls image resolution/loading, not visual size. Se
|
|
|
5257
5504
|
`;
|
|
5258
5505
|
|
|
5259
5506
|
// src/prevent-link-in-link-commands.ts
|
|
5260
|
-
var
|
|
5507
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
5261
5508
|
var import_editor_notifications3 = require("@elementor/editor-notifications");
|
|
5262
5509
|
var import_editor_v1_adapters20 = require("@elementor/editor-v1-adapters");
|
|
5263
5510
|
var import_i18n4 = require("@wordpress/i18n");
|
|
@@ -5328,25 +5575,25 @@ function shouldBlock(sourceElements, targetElements) {
|
|
|
5328
5575
|
return false;
|
|
5329
5576
|
}
|
|
5330
5577
|
const isSourceContainsAnAnchor = sourceElements.some((src) => {
|
|
5331
|
-
return src?.id ? (0,
|
|
5578
|
+
return src?.id ? (0, import_editor_elements18.isElementAnchored)(src.id) || !!(0, import_editor_elements18.getAnchoredDescendantId)(src.id) : false;
|
|
5332
5579
|
});
|
|
5333
5580
|
if (!isSourceContainsAnAnchor) {
|
|
5334
5581
|
return false;
|
|
5335
5582
|
}
|
|
5336
5583
|
const isTargetContainsAnAnchor = targetElements.some((target) => {
|
|
5337
|
-
return target?.id ? (0,
|
|
5584
|
+
return target?.id ? (0, import_editor_elements18.isElementAnchored)(target.id) || !!(0, import_editor_elements18.getAnchoredAncestorId)(target.id) : false;
|
|
5338
5585
|
});
|
|
5339
5586
|
return isTargetContainsAnAnchor;
|
|
5340
5587
|
}
|
|
5341
5588
|
|
|
5342
5589
|
// src/style-commands/paste-style.ts
|
|
5343
|
-
var
|
|
5344
|
-
var
|
|
5590
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
5591
|
+
var import_editor_props11 = require("@elementor/editor-props");
|
|
5345
5592
|
var import_editor_v1_adapters22 = require("@elementor/editor-v1-adapters");
|
|
5346
5593
|
|
|
5347
5594
|
// src/utils/command-utils.ts
|
|
5348
|
-
var
|
|
5349
|
-
var
|
|
5595
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
5596
|
+
var import_editor_props10 = require("@elementor/editor-props");
|
|
5350
5597
|
var import_i18n5 = require("@wordpress/i18n");
|
|
5351
5598
|
function hasAtomicWidgets(args) {
|
|
5352
5599
|
const { containers = [args.container] } = args;
|
|
@@ -5364,13 +5611,13 @@ function getClassesProp(container) {
|
|
|
5364
5611
|
return null;
|
|
5365
5612
|
}
|
|
5366
5613
|
const [propKey] = Object.entries(propsSchema).find(
|
|
5367
|
-
([, propType]) => propType.kind === "plain" && propType.key ===
|
|
5614
|
+
([, propType]) => propType.kind === "plain" && propType.key === import_editor_props10.CLASSES_PROP_KEY
|
|
5368
5615
|
) ?? [];
|
|
5369
5616
|
return propKey ?? null;
|
|
5370
5617
|
}
|
|
5371
5618
|
function getContainerSchema(container) {
|
|
5372
5619
|
const type = container?.model.get("widgetType") || container?.model.get("elType");
|
|
5373
|
-
const widgetsCache = (0,
|
|
5620
|
+
const widgetsCache = (0, import_editor_elements19.getWidgetsCache)();
|
|
5374
5621
|
const elementType = widgetsCache?.[type];
|
|
5375
5622
|
return elementType?.atomic_props_schema ?? null;
|
|
5376
5623
|
}
|
|
@@ -5383,11 +5630,11 @@ function getClipboardElements(storageKey = "clipboard") {
|
|
|
5383
5630
|
}
|
|
5384
5631
|
}
|
|
5385
5632
|
function getTitleForContainers(containers) {
|
|
5386
|
-
return containers.length > 1 ? (0, import_i18n5.__)("Elements", "elementor") : (0,
|
|
5633
|
+
return containers.length > 1 ? (0, import_i18n5.__)("Elements", "elementor") : (0, import_editor_elements19.getElementLabel)(containers[0].id);
|
|
5387
5634
|
}
|
|
5388
5635
|
|
|
5389
5636
|
// src/style-commands/undoable-actions/paste-element-style.ts
|
|
5390
|
-
var
|
|
5637
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
5391
5638
|
var import_editor_styles_repository4 = require("@elementor/editor-styles-repository");
|
|
5392
5639
|
var import_editor_v1_adapters21 = require("@elementor/editor-v1-adapters");
|
|
5393
5640
|
var import_i18n6 = require("@wordpress/i18n");
|
|
@@ -5400,7 +5647,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters21.undoable)(
|
|
|
5400
5647
|
if (!classesProp) {
|
|
5401
5648
|
return null;
|
|
5402
5649
|
}
|
|
5403
|
-
const originalStyles = (0,
|
|
5650
|
+
const originalStyles = (0, import_editor_elements20.getElementStyles)(container.id);
|
|
5404
5651
|
const [styleId, styleDef] = Object.entries(originalStyles ?? {})[0] ?? [];
|
|
5405
5652
|
const originalStyle = Object.keys(styleDef ?? {}).length ? styleDef : null;
|
|
5406
5653
|
const revertData = {
|
|
@@ -5409,7 +5656,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters21.undoable)(
|
|
|
5409
5656
|
};
|
|
5410
5657
|
if (styleId) {
|
|
5411
5658
|
newStyle.variants.forEach(({ meta, props, custom_css: customCss }) => {
|
|
5412
|
-
(0,
|
|
5659
|
+
(0, import_editor_elements20.updateElementStyle)({
|
|
5413
5660
|
elementId,
|
|
5414
5661
|
styleId,
|
|
5415
5662
|
meta,
|
|
@@ -5420,7 +5667,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters21.undoable)(
|
|
|
5420
5667
|
} else {
|
|
5421
5668
|
const [firstVariant] = newStyle.variants;
|
|
5422
5669
|
const additionalVariants = newStyle.variants.slice(1);
|
|
5423
|
-
revertData.styleId = (0,
|
|
5670
|
+
revertData.styleId = (0, import_editor_elements20.createElementStyle)({
|
|
5424
5671
|
elementId,
|
|
5425
5672
|
classesProp,
|
|
5426
5673
|
label: import_editor_styles_repository4.ELEMENTS_STYLES_RESERVED_LABEL,
|
|
@@ -5438,7 +5685,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters21.undoable)(
|
|
|
5438
5685
|
return;
|
|
5439
5686
|
}
|
|
5440
5687
|
if (!revertData.originalStyle) {
|
|
5441
|
-
(0,
|
|
5688
|
+
(0, import_editor_elements20.deleteElementStyle)(container.id, revertData.styleId);
|
|
5442
5689
|
return;
|
|
5443
5690
|
}
|
|
5444
5691
|
const classesProp = getClassesProp(container);
|
|
@@ -5447,7 +5694,7 @@ var undoablePasteElementStyle = () => (0, import_editor_v1_adapters21.undoable)(
|
|
|
5447
5694
|
}
|
|
5448
5695
|
const [firstVariant] = revertData.originalStyle.variants;
|
|
5449
5696
|
const additionalVariants = revertData.originalStyle.variants.slice(1);
|
|
5450
|
-
(0,
|
|
5697
|
+
(0, import_editor_elements20.createElementStyle)({
|
|
5451
5698
|
elementId: container.id,
|
|
5452
5699
|
classesProp,
|
|
5453
5700
|
label: import_editor_styles_repository4.ELEMENTS_STYLES_RESERVED_LABEL,
|
|
@@ -5484,7 +5731,7 @@ function pasteStyles(args, pasteLocalStyle) {
|
|
|
5484
5731
|
}
|
|
5485
5732
|
const clipboardElements = getClipboardElements(storageKey);
|
|
5486
5733
|
const [clipboardElement] = clipboardElements ?? [];
|
|
5487
|
-
const clipboardContainer = (0,
|
|
5734
|
+
const clipboardContainer = (0, import_editor_elements21.getContainer)(clipboardElement.id);
|
|
5488
5735
|
if (!clipboardElement || !clipboardContainer || !isAtomicWidget(clipboardContainer)) {
|
|
5489
5736
|
return;
|
|
5490
5737
|
}
|
|
@@ -5503,7 +5750,7 @@ function getClassesWithoutLocalStyle(clipboardContainer, style) {
|
|
|
5503
5750
|
if (!classesProp) {
|
|
5504
5751
|
return [];
|
|
5505
5752
|
}
|
|
5506
|
-
const classesSetting = (0,
|
|
5753
|
+
const classesSetting = (0, import_editor_elements21.getElementSetting)(clipboardContainer.id, classesProp);
|
|
5507
5754
|
return classesSetting?.value.filter((styleId) => styleId !== style?.id) ?? [];
|
|
5508
5755
|
}
|
|
5509
5756
|
function pasteClasses(containers, classes) {
|
|
@@ -5512,10 +5759,10 @@ function pasteClasses(containers, classes) {
|
|
|
5512
5759
|
if (!classesProp) {
|
|
5513
5760
|
return;
|
|
5514
5761
|
}
|
|
5515
|
-
const classesSetting = (0,
|
|
5516
|
-
const currentClasses =
|
|
5517
|
-
const newClasses =
|
|
5518
|
-
(0,
|
|
5762
|
+
const classesSetting = (0, import_editor_elements21.getElementSetting)(container.id, classesProp);
|
|
5763
|
+
const currentClasses = import_editor_props11.classesPropTypeUtil.extract(classesSetting) ?? [];
|
|
5764
|
+
const newClasses = import_editor_props11.classesPropTypeUtil.create(Array.from(/* @__PURE__ */ new Set([...classes, ...currentClasses])));
|
|
5765
|
+
(0, import_editor_elements21.updateElementSettings)({
|
|
5519
5766
|
id: container.id,
|
|
5520
5767
|
props: { [classesProp]: newClasses }
|
|
5521
5768
|
});
|
|
@@ -5526,7 +5773,7 @@ function pasteClasses(containers, classes) {
|
|
|
5526
5773
|
var import_editor_v1_adapters24 = require("@elementor/editor-v1-adapters");
|
|
5527
5774
|
|
|
5528
5775
|
// src/style-commands/undoable-actions/reset-element-style.ts
|
|
5529
|
-
var
|
|
5776
|
+
var import_editor_elements22 = require("@elementor/editor-elements");
|
|
5530
5777
|
var import_editor_styles_repository5 = require("@elementor/editor-styles-repository");
|
|
5531
5778
|
var import_editor_v1_adapters23 = require("@elementor/editor-v1-adapters");
|
|
5532
5779
|
var import_i18n7 = require("@wordpress/i18n");
|
|
@@ -5535,9 +5782,9 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters23.undoable)(
|
|
|
5535
5782
|
do: ({ containers }) => {
|
|
5536
5783
|
return containers.map((container) => {
|
|
5537
5784
|
const elementId = container.model.get("id");
|
|
5538
|
-
const containerStyles = (0,
|
|
5785
|
+
const containerStyles = (0, import_editor_elements22.getElementStyles)(elementId);
|
|
5539
5786
|
Object.keys(containerStyles ?? {}).forEach(
|
|
5540
|
-
(styleId) => (0,
|
|
5787
|
+
(styleId) => (0, import_editor_elements22.deleteElementStyle)(elementId, styleId)
|
|
5541
5788
|
);
|
|
5542
5789
|
return containerStyles;
|
|
5543
5790
|
});
|
|
@@ -5553,7 +5800,7 @@ var undoableResetElementStyle = () => (0, import_editor_v1_adapters23.undoable)(
|
|
|
5553
5800
|
Object.entries(containerStyles ?? {}).forEach(([styleId, style]) => {
|
|
5554
5801
|
const [firstVariant] = style.variants;
|
|
5555
5802
|
const additionalVariants = style.variants.slice(1);
|
|
5556
|
-
(0,
|
|
5803
|
+
(0, import_editor_elements22.createElementStyle)({
|
|
5557
5804
|
elementId,
|
|
5558
5805
|
classesProp,
|
|
5559
5806
|
styleId,
|
|
@@ -5687,72 +5934,7 @@ var getLegacyPanelElementView = ({ settings, ...rest }) => {
|
|
|
5687
5934
|
var GLOBAL_STYLES_IMPORTED_EVENT = "elementor/global-styles/imported";
|
|
5688
5935
|
|
|
5689
5936
|
// src/components/spotlight-backdrop.tsx
|
|
5690
|
-
var
|
|
5691
|
-
|
|
5692
|
-
// src/hooks/use-element-rect.ts
|
|
5693
|
-
var import_react14 = require("react");
|
|
5694
|
-
var import_utils6 = require("@elementor/utils");
|
|
5695
|
-
function useElementRect(element) {
|
|
5696
|
-
const [rect, setRect] = (0, import_react14.useState)(new DOMRect(0, 0, 0, 0));
|
|
5697
|
-
const onChange = (0, import_utils6.throttle)(
|
|
5698
|
-
() => {
|
|
5699
|
-
setRect(element?.getBoundingClientRect() ?? new DOMRect(0, 0, 0, 0));
|
|
5700
|
-
},
|
|
5701
|
-
20,
|
|
5702
|
-
true
|
|
5703
|
-
);
|
|
5704
|
-
useScrollListener({ element, onChange });
|
|
5705
|
-
useResizeListener({ element, onChange });
|
|
5706
|
-
useMutationsListener({ element, onChange });
|
|
5707
|
-
(0, import_react14.useEffect)(
|
|
5708
|
-
() => () => {
|
|
5709
|
-
onChange.cancel();
|
|
5710
|
-
},
|
|
5711
|
-
[onChange]
|
|
5712
|
-
);
|
|
5713
|
-
return rect;
|
|
5714
|
-
}
|
|
5715
|
-
function useScrollListener({ element, onChange }) {
|
|
5716
|
-
(0, import_react14.useEffect)(() => {
|
|
5717
|
-
if (!element) {
|
|
5718
|
-
return;
|
|
5719
|
-
}
|
|
5720
|
-
const win = element.ownerDocument?.defaultView;
|
|
5721
|
-
win?.addEventListener("scroll", onChange, { passive: true });
|
|
5722
|
-
return () => {
|
|
5723
|
-
win?.removeEventListener("scroll", onChange);
|
|
5724
|
-
};
|
|
5725
|
-
}, [element, onChange]);
|
|
5726
|
-
}
|
|
5727
|
-
function useResizeListener({ element, onChange }) {
|
|
5728
|
-
(0, import_react14.useEffect)(() => {
|
|
5729
|
-
if (!element) {
|
|
5730
|
-
return;
|
|
5731
|
-
}
|
|
5732
|
-
const resizeObserver = new ResizeObserver(onChange);
|
|
5733
|
-
resizeObserver.observe(element);
|
|
5734
|
-
const win = element.ownerDocument?.defaultView;
|
|
5735
|
-
win?.addEventListener("resize", onChange, { passive: true });
|
|
5736
|
-
return () => {
|
|
5737
|
-
resizeObserver.disconnect();
|
|
5738
|
-
win?.removeEventListener("resize", onChange);
|
|
5739
|
-
};
|
|
5740
|
-
}, [element, onChange]);
|
|
5741
|
-
}
|
|
5742
|
-
function useMutationsListener({ element, onChange }) {
|
|
5743
|
-
(0, import_react14.useEffect)(() => {
|
|
5744
|
-
if (!element) {
|
|
5745
|
-
return;
|
|
5746
|
-
}
|
|
5747
|
-
const mutationObserver = new MutationObserver(onChange);
|
|
5748
|
-
mutationObserver.observe(element, { childList: true, subtree: true });
|
|
5749
|
-
return () => {
|
|
5750
|
-
mutationObserver.disconnect();
|
|
5751
|
-
};
|
|
5752
|
-
}, [element, onChange]);
|
|
5753
|
-
}
|
|
5754
|
-
|
|
5755
|
-
// src/components/spotlight-backdrop.tsx
|
|
5937
|
+
var React10 = __toESM(require("react"));
|
|
5756
5938
|
function SpotlightBackdrop({ canvas, element, onExit, ariaLabel }) {
|
|
5757
5939
|
const rect = useElementRect(element);
|
|
5758
5940
|
const clipPath = element ? getRectClipPath(rect, canvas.defaultView) : void 0;
|
|
@@ -5774,7 +5956,7 @@ function SpotlightBackdrop({ canvas, element, onExit, ariaLabel }) {
|
|
|
5774
5956
|
onExit();
|
|
5775
5957
|
}
|
|
5776
5958
|
};
|
|
5777
|
-
return /* @__PURE__ */
|
|
5959
|
+
return /* @__PURE__ */ React10.createElement(
|
|
5778
5960
|
"div",
|
|
5779
5961
|
{
|
|
5780
5962
|
style: backdropStyle,
|
|
@@ -5799,9 +5981,9 @@ function useCanvasDocument() {
|
|
|
5799
5981
|
}
|
|
5800
5982
|
|
|
5801
5983
|
// src/hooks/use-escape-on-canvas.ts
|
|
5802
|
-
var
|
|
5984
|
+
var import_react17 = require("react");
|
|
5803
5985
|
function useEscapeOnCanvas(canvasDocument, onEscape) {
|
|
5804
|
-
(0,
|
|
5986
|
+
(0, import_react17.useEffect)(() => {
|
|
5805
5987
|
if (!canvasDocument) {
|
|
5806
5988
|
return;
|
|
5807
5989
|
}
|
|
@@ -5818,10 +6000,10 @@ function useEscapeOnCanvas(canvasDocument, onEscape) {
|
|
|
5818
6000
|
}
|
|
5819
6001
|
|
|
5820
6002
|
// src/utils/after-render.ts
|
|
5821
|
-
var
|
|
6003
|
+
var import_editor_elements23 = require("@elementor/editor-elements");
|
|
5822
6004
|
function doAfterRender(elementIds, callback) {
|
|
5823
6005
|
const pending = elementIds.map((elementId) => {
|
|
5824
|
-
const view = (0,
|
|
6006
|
+
const view = (0, import_editor_elements23.getContainer)(elementId)?.view;
|
|
5825
6007
|
if (!view || !hasDoAfterRender(view)) {
|
|
5826
6008
|
return void 0;
|
|
5827
6009
|
}
|