@elementor/editor-canvas 4.2.0-913 → 4.2.0-915

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 CHANGED
@@ -422,16 +422,16 @@ var renameClass = (oldClassName, newClassName) => {
422
422
  };
423
423
 
424
424
  // src/components/elements-overlays.tsx
425
- var React5 = __toESM(require("react"));
425
+ var React6 = __toESM(require("react"));
426
426
  var import_editor_elements5 = require("@elementor/editor-elements");
427
427
  var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
428
428
 
429
429
  // src/components/grid-outline/grid-outline-overlay.tsx
430
- var React4 = __toESM(require("react"));
430
+ var React5 = __toESM(require("react"));
431
431
  var import_editor_elements4 = require("@elementor/editor-elements");
432
432
  var import_editor_props2 = require("@elementor/editor-props");
433
433
  var import_ui2 = require("@elementor/ui");
434
- var import_react8 = require("@floating-ui/react");
434
+ var import_react9 = require("@floating-ui/react");
435
435
 
436
436
  // src/hooks/use-element-rect.ts
437
437
  var import_react2 = require("react");
@@ -538,7 +538,7 @@ function useFloatingOnElement({ element, isSelected }) {
538
538
  }
539
539
 
540
540
  // src/hooks/use-grid-tracks.ts
541
- var import_react5 = require("react");
541
+ var import_react6 = require("react");
542
542
  var import_editor_elements3 = require("@elementor/editor-elements");
543
543
  var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
544
544
 
@@ -575,6 +575,29 @@ function computeCellRects(tracks, width, height) {
575
575
  }
576
576
  return cells;
577
577
  }
578
+ function computeGridLines(tracks, width, height) {
579
+ const { columns, rows, columnGap, rowGap, padding } = tracks;
580
+ const hasColumns = columns.length > 0;
581
+ const hasRows = rows.length > 0;
582
+ if (!hasColumns && !hasRows) {
583
+ return { vertical: [], horizontal: [] };
584
+ }
585
+ const columnSegments = hasColumns ? computeTrackSegments(columns, columnGap, padding.left) : [{ start: padding.left, size: width - padding.left - padding.right }];
586
+ const rowSegments = hasRows ? computeTrackSegments(rows, rowGap, padding.top) : [{ start: padding.top, size: height - padding.top - padding.bottom }];
587
+ const xs = uniqueSorted(columnSegments.flatMap((s) => [s.start, s.start + s.size]));
588
+ const ys = uniqueSorted(rowSegments.flatMap((s) => [s.start, s.start + s.size]));
589
+ const yTop = ys[0];
590
+ const yBottom = ys[ys.length - 1];
591
+ const xLeft = xs[0];
592
+ const xRight = xs[xs.length - 1];
593
+ return {
594
+ vertical: xs.map((x) => ({ x1: x, y1: yTop, x2: x, y2: yBottom })),
595
+ horizontal: ys.map((y) => ({ x1: xLeft, y1: y, x2: xRight, y2: y }))
596
+ };
597
+ }
598
+ function uniqueSorted(values) {
599
+ return Array.from(new Set(values)).sort((a, b) => a - b);
600
+ }
578
601
  function computeTrackSegments(sizes, gap, offset2) {
579
602
  const segments = [];
580
603
  let cursor = offset2;
@@ -601,6 +624,46 @@ function toPx(value) {
601
624
  return Number.isFinite(parsed) ? parsed : 0;
602
625
  }
603
626
 
627
+ // src/hooks/use-grid-children.ts
628
+ var import_react5 = require("react");
629
+ function useGridChildren(element) {
630
+ const [signal, setSignal] = (0, import_react5.useState)(0);
631
+ (0, import_react5.useEffect)(() => {
632
+ if (!element) {
633
+ return;
634
+ }
635
+ const bump = () => setSignal((previous) => previous + 1);
636
+ const resizeObserver = new ResizeObserver(bump);
637
+ const observed = /* @__PURE__ */ new Set();
638
+ const syncChildren = () => {
639
+ for (const child of Array.from(element.children)) {
640
+ if (!observed.has(child)) {
641
+ resizeObserver.observe(child);
642
+ observed.add(child);
643
+ }
644
+ }
645
+ for (const child of observed) {
646
+ if (child.parentElement !== element) {
647
+ resizeObserver.unobserve(child);
648
+ observed.delete(child);
649
+ }
650
+ }
651
+ };
652
+ syncChildren();
653
+ const mutationObserver = new MutationObserver(() => {
654
+ syncChildren();
655
+ bump();
656
+ });
657
+ mutationObserver.observe(element, { childList: true });
658
+ return () => {
659
+ mutationObserver.disconnect();
660
+ resizeObserver.disconnect();
661
+ observed.clear();
662
+ };
663
+ }, [element]);
664
+ return signal;
665
+ }
666
+
604
667
  // src/hooks/use-grid-tracks.ts
605
668
  var EMPTY = {
606
669
  columns: [],
@@ -612,12 +675,13 @@ var EMPTY = {
612
675
  };
613
676
  var DEVICE_MODE_CHANGE_EVENT = "elementor/device-mode/change";
614
677
  function useGridTracks(element, rect) {
615
- const [tracks, setTracks] = (0, import_react5.useState)(EMPTY);
678
+ const [tracks, setTracks] = (0, import_react6.useState)(EMPTY);
616
679
  const trigger = (0, import_editor_v1_adapters2.__privateUseListenTo)(
617
680
  [(0, import_editor_v1_adapters2.windowEvent)(import_editor_elements3.ELEMENT_STYLE_CHANGE_EVENT), (0, import_editor_v1_adapters2.windowEvent)(DEVICE_MODE_CHANGE_EVENT)],
618
681
  () => ({})
619
682
  );
620
- (0, import_react5.useEffect)(() => {
683
+ const childrenTrigger = useGridChildren(element);
684
+ (0, import_react6.useEffect)(() => {
621
685
  const previewWindow = element?.ownerDocument?.defaultView;
622
686
  if (!element || !previewWindow) {
623
687
  setTracks(EMPTY);
@@ -629,19 +693,19 @@ function useGridTracks(element, rect) {
629
693
  return () => {
630
694
  previewWindow.cancelAnimationFrame(frame);
631
695
  };
632
- }, [element, rect.width, rect.height, trigger]);
696
+ }, [element, rect.width, rect.height, trigger, childrenTrigger]);
633
697
  return tracks;
634
698
  }
635
699
 
636
700
  // src/components/outline-overlay.tsx
637
701
  var React = __toESM(require("react"));
638
702
  var import_ui = require("@elementor/ui");
639
- var import_react7 = require("@floating-ui/react");
703
+ var import_react8 = require("@floating-ui/react");
640
704
 
641
705
  // src/hooks/use-bind-react-props-to-element.ts
642
- var import_react6 = require("react");
706
+ var import_react7 = require("react");
643
707
  function useBindReactPropsToElement(element, getProps) {
644
- (0, import_react6.useEffect)(() => {
708
+ (0, import_react7.useEffect)(() => {
645
709
  const el = element;
646
710
  const { events, attrs } = groupProps(getProps());
647
711
  events.forEach(([eventName, listener]) => el.addEventListener(eventName, listener));
@@ -702,11 +766,11 @@ var OverlayBox = (0, import_ui.styled)(import_ui.Box, {
702
766
  );
703
767
  var OutlineOverlay = ({ element, isSelected, id, isGlobal = false }) => {
704
768
  const { context, floating, isVisible } = useFloatingOnElement({ element, isSelected });
705
- const { getFloatingProps, getReferenceProps } = (0, import_react7.useInteractions)([(0, import_react7.useHover)(context)]);
769
+ const { getFloatingProps, getReferenceProps } = (0, import_react8.useInteractions)([(0, import_react8.useHover)(context)]);
706
770
  const hasOverlapping = useHasOverlapping();
707
771
  useBindReactPropsToElement(element, getReferenceProps);
708
772
  const isSmallerOffset = element.offsetHeight <= 1;
709
- return isVisible && !hasOverlapping && /* @__PURE__ */ React.createElement(import_react7.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React.createElement(
773
+ return isVisible && !hasOverlapping && /* @__PURE__ */ React.createElement(import_react8.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React.createElement(
710
774
  OverlayBox,
711
775
  {
712
776
  ref: floating.setRef,
@@ -722,13 +786,12 @@ var OutlineOverlay = ({ element, isSelected, id, isGlobal = false }) => {
722
786
  };
723
787
 
724
788
  // src/components/grid-outline/grid-outline.tsx
725
- var React3 = __toESM(require("react"));
789
+ var React4 = __toESM(require("react"));
726
790
 
727
- // src/components/grid-outline/grid-outline-cell.tsx
791
+ // src/components/grid-outline/cell.tsx
728
792
  var React2 = __toESM(require("react"));
729
793
  var FALLBACK_COLOR = "rgba(0, 0, 0, 0.12)";
730
- var DASH = "2 2";
731
- function GridOutlineCell({ x, y, width, height, color }) {
794
+ function Cell({ x, y, width, height, color }) {
732
795
  return /* @__PURE__ */ React2.createElement(
733
796
  "rect",
734
797
  {
@@ -739,16 +802,73 @@ function GridOutlineCell({ x, y, width, height, color }) {
739
802
  fill: "none",
740
803
  stroke: color || FALLBACK_COLOR,
741
804
  strokeWidth: 1,
742
- strokeDasharray: DASH,
805
+ strokeDasharray: "2 2",
806
+ vectorEffect: "non-scaling-stroke"
807
+ }
808
+ );
809
+ }
810
+
811
+ // src/components/grid-outline/line.tsx
812
+ var React3 = __toESM(require("react"));
813
+ var FALLBACK_COLOR2 = "rgba(0, 0, 0, 0.12)";
814
+ function Line({ x1, y1, x2, y2, color }) {
815
+ return /* @__PURE__ */ React3.createElement(
816
+ "line",
817
+ {
818
+ x1,
819
+ y1,
820
+ x2,
821
+ y2,
822
+ stroke: color || FALLBACK_COLOR2,
823
+ strokeWidth: 1,
824
+ strokeDasharray: "2 2",
743
825
  vectorEffect: "non-scaling-stroke"
744
826
  }
745
827
  );
746
828
  }
747
829
 
748
830
  // src/components/grid-outline/grid-outline.tsx
831
+ var renderCells = (tracks, width, height) => computeCellRects(tracks, width, height).map((cell, i) => /* @__PURE__ */ React4.createElement(
832
+ Cell,
833
+ {
834
+ key: i,
835
+ x: snapToHalfPixel(cell.x),
836
+ y: snapToHalfPixel(cell.y),
837
+ width: Math.round(cell.width),
838
+ height: Math.round(cell.height),
839
+ color: tracks.borderColor
840
+ }
841
+ ));
842
+ var renderLines = (tracks, width, height) => {
843
+ const { vertical, horizontal } = computeGridLines(tracks, width, height);
844
+ return [
845
+ ...vertical.map((line, i) => /* @__PURE__ */ React4.createElement(
846
+ Line,
847
+ {
848
+ key: `v${i}`,
849
+ x1: snapToHalfPixel(line.x1),
850
+ y1: Math.round(line.y1),
851
+ x2: snapToHalfPixel(line.x2),
852
+ y2: Math.round(line.y2),
853
+ color: tracks.borderColor
854
+ }
855
+ )),
856
+ ...horizontal.map((line, i) => /* @__PURE__ */ React4.createElement(
857
+ Line,
858
+ {
859
+ key: `h${i}`,
860
+ x1: Math.round(line.x1),
861
+ y1: snapToHalfPixel(line.y1),
862
+ x2: Math.round(line.x2),
863
+ y2: snapToHalfPixel(line.y2),
864
+ color: tracks.borderColor
865
+ }
866
+ ))
867
+ ];
868
+ };
749
869
  function GridOutline({ tracks, width, height }) {
750
- const cells = computeCellRects(tracks, width, height);
751
- return /* @__PURE__ */ React3.createElement(
870
+ const hasGap = tracks.columnGap > 0 || tracks.rowGap > 0;
871
+ return /* @__PURE__ */ React4.createElement(
752
872
  "svg",
753
873
  {
754
874
  width,
@@ -756,17 +876,7 @@ function GridOutline({ tracks, width, height }) {
756
876
  style: { position: "absolute", inset: 0, overflow: "visible" },
757
877
  xmlns: "http://www.w3.org/2000/svg"
758
878
  },
759
- cells.map((cell, i) => /* @__PURE__ */ React3.createElement(
760
- GridOutlineCell,
761
- {
762
- key: i,
763
- x: snapToHalfPixel(cell.x),
764
- y: snapToHalfPixel(cell.y),
765
- width: Math.round(cell.width),
766
- height: Math.round(cell.height),
767
- color: tracks.borderColor
768
- }
769
- ))
879
+ hasGap ? renderCells(tracks, width, height) : renderLines(tracks, width, height)
770
880
  );
771
881
  }
772
882
 
@@ -783,7 +893,7 @@ var GridOutlineOverlay = ({ element, id, isSelected }) => {
783
893
  if (tracks.columns.length === 0 && tracks.rows.length === 0) {
784
894
  return null;
785
895
  }
786
- return /* @__PURE__ */ React4.createElement(import_react8.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React4.createElement(
896
+ return /* @__PURE__ */ React5.createElement(import_react9.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React5.createElement(
787
897
  import_ui2.Box,
788
898
  {
789
899
  ref: floating.setRef,
@@ -791,7 +901,7 @@ var GridOutlineOverlay = ({ element, id, isSelected }) => {
791
901
  "data-grid-outline": id,
792
902
  role: "presentation"
793
903
  },
794
- /* @__PURE__ */ React4.createElement(GridOutline, { tracks, width: rect.width, height: rect.height })
904
+ /* @__PURE__ */ React5.createElement(GridOutline, { tracks, width: rect.width, height: rect.height })
795
905
  ));
796
906
  };
797
907
 
@@ -820,7 +930,7 @@ function ElementsOverlays() {
820
930
  return elements.map(({ id, domElement, isGlobal }) => {
821
931
  const isSelected = selected.element?.id === id;
822
932
  return overlayRegistry.map(
823
- ({ shouldRender, component: Overlay }, index) => shouldRender({ id, element: domElement, isSelected }) && /* @__PURE__ */ React5.createElement(
933
+ ({ shouldRender, component: Overlay }, index) => shouldRender({ id, element: domElement, isSelected }) && /* @__PURE__ */ React6.createElement(
824
934
  Overlay,
825
935
  {
826
936
  key: `${id}-${index}`,
@@ -853,20 +963,20 @@ function isV4Element(dataset) {
853
963
  }
854
964
 
855
965
  // src/components/interactions-renderer.tsx
856
- var React6 = __toESM(require("react"));
966
+ var React7 = __toESM(require("react"));
857
967
  var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
858
968
  var import_ui3 = require("@elementor/ui");
859
969
 
860
970
  // src/hooks/use-interactions-items.ts
861
- var import_react10 = require("react");
971
+ var import_react11 = require("react");
862
972
  var import_editor_interactions = require("@elementor/editor-interactions");
863
973
  var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
864
974
 
865
975
  // src/hooks/use-on-mount.ts
866
- var import_react9 = require("react");
976
+ var import_react10 = require("react");
867
977
  function useOnMount(cb) {
868
- const mounted = (0, import_react9.useRef)(false);
869
- (0, import_react9.useEffect)(() => {
978
+ const mounted = (0, import_react10.useRef)(false);
979
+ (0, import_react10.useEffect)(() => {
870
980
  if (!mounted.current) {
871
981
  mounted.current = true;
872
982
  cb();
@@ -876,8 +986,8 @@ function useOnMount(cb) {
876
986
 
877
987
  // src/hooks/use-interactions-items.ts
878
988
  function useInteractionsItems() {
879
- const [interactionItems, setInteractionItems] = (0, import_react10.useState)({});
880
- const providerAndSubscribers = (0, import_react10.useMemo)(() => {
989
+ const [interactionItems, setInteractionItems] = (0, import_react11.useState)({});
990
+ const providerAndSubscribers = (0, import_react11.useMemo)(() => {
881
991
  try {
882
992
  const providers = import_editor_interactions.interactionsRepository.getProviders();
883
993
  const mapped = providers.map((provider) => {
@@ -894,7 +1004,7 @@ function useInteractionsItems() {
894
1004
  return [];
895
1005
  }
896
1006
  }, []);
897
- (0, import_react10.useEffect)(() => {
1007
+ (0, import_react11.useEffect)(() => {
898
1008
  if (providerAndSubscribers.length === 0) {
899
1009
  return;
900
1010
  }
@@ -925,7 +1035,7 @@ function useInteractionsItems() {
925
1035
  });
926
1036
  });
927
1037
  });
928
- return (0, import_react10.useMemo)(() => {
1038
+ return (0, import_react11.useMemo)(() => {
929
1039
  const result = Object.values(interactionItems).sort(sortByProviderPriority).flatMap(({ items }) => items);
930
1040
  return result;
931
1041
  }, [interactionItems]);
@@ -955,7 +1065,7 @@ function InteractionsRenderer() {
955
1065
  return null;
956
1066
  }
957
1067
  const interactionsData = JSON.stringify(Array.isArray(interactionItems) ? interactionItems : []);
958
- return /* @__PURE__ */ React6.createElement(import_ui3.Portal, { container }, /* @__PURE__ */ React6.createElement(
1068
+ return /* @__PURE__ */ React7.createElement(import_ui3.Portal, { container }, /* @__PURE__ */ React7.createElement(
959
1069
  "script",
960
1070
  {
961
1071
  type: "application/json",
@@ -971,7 +1081,7 @@ function usePortalContainer() {
971
1081
  }
972
1082
 
973
1083
  // src/components/style-renderer.tsx
974
- var React7 = __toESM(require("react"));
1084
+ var React8 = __toESM(require("react"));
975
1085
  var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
976
1086
  var import_ui4 = require("@elementor/ui");
977
1087
 
@@ -1023,7 +1133,7 @@ function getLinkAttrs(el) {
1023
1133
  }
1024
1134
 
1025
1135
  // src/hooks/use-style-items.ts
1026
- var import_react13 = require("react");
1136
+ var import_react14 = require("react");
1027
1137
  var import_editor_responsive2 = require("@elementor/editor-responsive");
1028
1138
  var import_editor_styles4 = require("@elementor/editor-styles");
1029
1139
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
@@ -1085,7 +1195,7 @@ function signalizedProcess(signal, steps = []) {
1085
1195
  }
1086
1196
 
1087
1197
  // src/hooks/use-style-prop-resolver.ts
1088
- var import_react11 = require("react");
1198
+ var import_react12 = require("react");
1089
1199
  var import_editor_styles2 = require("@elementor/editor-styles");
1090
1200
  var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
1091
1201
 
@@ -1213,7 +1323,7 @@ var styleTransformersRegistry = createTransformersRegistry();
1213
1323
 
1214
1324
  // src/hooks/use-style-prop-resolver.ts
1215
1325
  function useStylePropResolver() {
1216
- return (0, import_react11.useMemo)(() => {
1326
+ return (0, import_react12.useMemo)(() => {
1217
1327
  return createPropsResolver({
1218
1328
  transformers: styleTransformersRegistry,
1219
1329
  schema: (0, import_editor_styles2.getStylesSchema)(),
@@ -1228,7 +1338,7 @@ function useStylePropResolver() {
1228
1338
  }
1229
1339
 
1230
1340
  // src/hooks/use-style-renderer.ts
1231
- var import_react12 = require("react");
1341
+ var import_react13 = require("react");
1232
1342
  var import_editor_responsive = require("@elementor/editor-responsive");
1233
1343
 
1234
1344
  // src/renderers/create-styles-renderer.ts
@@ -1337,7 +1447,7 @@ function customCssToString(customCss) {
1337
1447
  var SELECTOR_PREFIX = ".elementor";
1338
1448
  function useStyleRenderer(resolve) {
1339
1449
  const breakpoints = (0, import_editor_responsive.useBreakpointsMap)();
1340
- return (0, import_react12.useMemo)(() => {
1450
+ return (0, import_react13.useMemo)(() => {
1341
1451
  return createStylesRenderer({
1342
1452
  selectorPrefix: SELECTOR_PREFIX,
1343
1453
  breakpoints,
@@ -1351,9 +1461,9 @@ function useStyleItems() {
1351
1461
  const resolve = useStylePropResolver();
1352
1462
  const renderStyles = useStyleRenderer(resolve);
1353
1463
  const breakpoints = (0, import_editor_responsive2.useBreakpoints)();
1354
- const [styleItems, setStyleItems] = (0, import_react13.useState)({});
1355
- const styleItemsCacheRef = (0, import_react13.useRef)(/* @__PURE__ */ new Map());
1356
- const providerAndSubscribers = (0, import_react13.useMemo)(() => {
1464
+ const [styleItems, setStyleItems] = (0, import_react14.useState)({});
1465
+ const styleItemsCacheRef = (0, import_react14.useRef)(/* @__PURE__ */ new Map());
1466
+ const providerAndSubscribers = (0, import_react14.useMemo)(() => {
1357
1467
  const createEmptyCache = () => {
1358
1468
  return { orderedIds: [], itemsById: /* @__PURE__ */ new Map() };
1359
1469
  };
@@ -1379,7 +1489,7 @@ function useStyleItems() {
1379
1489
  })
1380
1490
  );
1381
1491
  }, [renderStyles]);
1382
- (0, import_react13.useEffect)(() => {
1492
+ (0, import_react14.useEffect)(() => {
1383
1493
  const unsubscribes = providerAndSubscribers.map(
1384
1494
  ({ provider, subscriber }) => provider.subscribe(subscriber)
1385
1495
  );
@@ -1394,11 +1504,11 @@ function useStyleItems() {
1394
1504
  await Promise.all(promises);
1395
1505
  });
1396
1506
  });
1397
- const breakpointSorter = (0, import_react13.useMemo)(
1507
+ const breakpointSorter = (0, import_react14.useMemo)(
1398
1508
  () => createBreakpointSorter(breakpoints.map((breakpoint) => breakpoint.id)),
1399
1509
  [breakpoints]
1400
1510
  );
1401
- return (0, import_react13.useMemo)(
1511
+ return (0, import_react14.useMemo)(
1402
1512
  () => Object.values(styleItems).sort(prioritySorter).flatMap(({ items }) => items).sort(stateSorter).sort(breakpointSorter),
1403
1513
  [styleItems, breakpointSorter]
1404
1514
  );
@@ -1540,7 +1650,7 @@ function StyleRenderer() {
1540
1650
  if (!container) {
1541
1651
  return null;
1542
1652
  }
1543
- 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 })));
1653
+ return /* @__PURE__ */ React8.createElement(import_ui4.Portal, { container }, filterUniqueStyleDefinitions(styleItems).map((item) => /* @__PURE__ */ React8.createElement("style", { key: `${item.id}-${item.breakpoint}-${item.state ?? "normal"}` }, item.value)), linksAttrs.map((attrs) => /* @__PURE__ */ React8.createElement("link", { ...attrs, key: attrs.id })));
1544
1654
  }
1545
1655
  function usePortalContainer2() {
1546
1656
  return (0, import_editor_v1_adapters10.__privateUseListenTo)((0, import_editor_v1_adapters10.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_v1_adapters10.getCanvasIframeDocument)()?.head);
@@ -3008,7 +3118,7 @@ function createPromotionView(BaseView) {
3008
3118
  var import_client = require("react-dom/client");
3009
3119
 
3010
3120
  // src/legacy/replacements/inline-editing/inline-editing-elements.tsx
3011
- var React9 = __toESM(require("react"));
3121
+ var React10 = __toESM(require("react"));
3012
3122
  var import_editor_elements9 = require("@elementor/editor-elements");
3013
3123
  var import_editor_props5 = require("@elementor/editor-props");
3014
3124
  var import_editor_v1_adapters13 = require("@elementor/editor-v1-adapters");
@@ -3057,14 +3167,14 @@ var ReplacementBase = class {
3057
3167
  };
3058
3168
 
3059
3169
  // src/legacy/replacements/inline-editing/canvas-inline-editor.tsx
3060
- var React8 = __toESM(require("react"));
3061
- var import_react15 = require("react");
3170
+ var React9 = __toESM(require("react"));
3171
+ var import_react16 = require("react");
3062
3172
  var import_editor_controls2 = require("@elementor/editor-controls");
3063
3173
  var import_ui5 = require("@elementor/ui");
3064
- var import_react16 = require("@floating-ui/react");
3174
+ var import_react17 = require("@floating-ui/react");
3065
3175
 
3066
3176
  // src/legacy/replacements/inline-editing/inline-editing-utils.ts
3067
- var import_react14 = require("react");
3177
+ var import_react15 = require("react");
3068
3178
  var TOP_BAR_SELECTOR = "#elementor-editor-wrapper-v2";
3069
3179
  var NAVIGATOR_SELECTOR = "#elementor-navigator";
3070
3180
  var EDITING_PANEL = "#elementor-panel";
@@ -3095,8 +3205,8 @@ var getInlineEditorElement = (elementWrapper, expectedTag) => {
3095
3205
  return !expectedTag ? null : elementWrapper.querySelector(expectedTag);
3096
3206
  };
3097
3207
  var useOnClickOutsideIframe = (handleUnmount) => {
3098
- const asyncUnmountInlineEditor = (0, import_react14.useCallback)(() => queueMicrotask(handleUnmount), [handleUnmount]);
3099
- (0, import_react14.useEffect)(() => {
3208
+ const asyncUnmountInlineEditor = (0, import_react15.useCallback)(() => queueMicrotask(handleUnmount), [handleUnmount]);
3209
+ (0, import_react15.useEffect)(() => {
3100
3210
  EDITOR_ELEMENTS_OUT_OF_IFRAME.forEach(
3101
3211
  (selector) => document?.querySelector(selector)?.addEventListener("mousedown", asyncUnmountInlineEditor)
3102
3212
  );
@@ -3106,8 +3216,8 @@ var useOnClickOutsideIframe = (handleUnmount) => {
3106
3216
  }, []);
3107
3217
  };
3108
3218
  var useRenderToolbar = (ownerDocument, id) => {
3109
- const [anchor, setAnchor] = (0, import_react14.useState)(null);
3110
- (0, import_react14.useEffect)(() => {
3219
+ const [anchor, setAnchor] = (0, import_react15.useState)(null);
3220
+ (0, import_react15.useEffect)(() => {
3111
3221
  if (!anchor) {
3112
3222
  removeToolbarAnchor(ownerDocument, id);
3113
3223
  }
@@ -3121,7 +3231,7 @@ var useRenderToolbar = (ownerDocument, id) => {
3121
3231
  setAnchor(null);
3122
3232
  }
3123
3233
  };
3124
- const clearAnchor = (0, import_react14.useCallback)(() => {
3234
+ const clearAnchor = (0, import_react15.useCallback)(() => {
3125
3235
  setAnchor(null);
3126
3236
  }, []);
3127
3237
  return { onSelectionEnd, anchor, clearAnchor };
@@ -3201,21 +3311,21 @@ var CanvasInlineEditor = ({
3201
3311
  setValue,
3202
3312
  requestDestroy
3203
3313
  }) => {
3204
- const [active, setActive] = (0, import_react15.useState)(true);
3205
- const [editor, setEditor] = (0, import_react15.useState)(null);
3314
+ const [active, setActive] = (0, import_react16.useState)(true);
3315
+ const [editor, setEditor] = (0, import_react16.useState)(null);
3206
3316
  const { onSelectionEnd, anchor: toolbarAnchor, clearAnchor } = useRenderToolbar(rootElement.ownerDocument, id);
3207
- (0, import_react15.useEffect)(() => {
3317
+ (0, import_react16.useEffect)(() => {
3208
3318
  if (!active) {
3209
3319
  clearAnchor();
3210
3320
  requestDestroy();
3211
3321
  }
3212
3322
  }, [active, clearAnchor, requestDestroy]);
3213
- const dismiss = (0, import_react15.useCallback)(() => {
3323
+ const dismiss = (0, import_react16.useCallback)(() => {
3214
3324
  setEditor(null);
3215
3325
  setActive(false);
3216
3326
  }, []);
3217
3327
  useOnClickOutsideIframe(dismiss);
3218
- (0, import_react15.useEffect)(() => {
3328
+ (0, import_react16.useEffect)(() => {
3219
3329
  const ownerDocument = contentElement.ownerDocument;
3220
3330
  const handleClickAway = (event) => {
3221
3331
  if (contentElement.contains(event.target)) {
@@ -3229,7 +3339,7 @@ var CanvasInlineEditor = ({
3229
3339
  if (!active) {
3230
3340
  return null;
3231
3341
  }
3232
- return /* @__PURE__ */ React8.createElement(import_ui5.ThemeProvider, null, /* @__PURE__ */ React8.createElement(InlineEditingOverlay, { expectedTag, rootElement, id }), /* @__PURE__ */ React8.createElement(
3342
+ return /* @__PURE__ */ React9.createElement(import_ui5.ThemeProvider, null, /* @__PURE__ */ React9.createElement(InlineEditingOverlay, { expectedTag, rootElement, id }), /* @__PURE__ */ React9.createElement(
3233
3343
  import_editor_controls2.InlineEditor,
3234
3344
  {
3235
3345
  onEditorCreate: setEditor,
@@ -3246,7 +3356,7 @@ var CanvasInlineEditor = ({
3246
3356
  autofocus: true,
3247
3357
  onSelectionEnd
3248
3358
  }
3249
- ), toolbarAnchor && editor && /* @__PURE__ */ React8.createElement(InlineEditingToolbar, { anchor: toolbarAnchor, editor, id }));
3359
+ ), toolbarAnchor && editor && /* @__PURE__ */ React9.createElement(InlineEditingToolbar, { anchor: toolbarAnchor, editor, id }));
3250
3360
  };
3251
3361
  var InlineEditingOverlay = ({
3252
3362
  expectedTag,
@@ -3254,25 +3364,25 @@ var InlineEditingOverlay = ({
3254
3364
  id
3255
3365
  }) => {
3256
3366
  const inlineEditedElement = getInlineEditorElement(rootElement, expectedTag);
3257
- const [overlayRefElement, setOverlayElement] = (0, import_react15.useState)(inlineEditedElement);
3258
- (0, import_react15.useEffect)(() => {
3367
+ const [overlayRefElement, setOverlayElement] = (0, import_react16.useState)(inlineEditedElement);
3368
+ (0, import_react16.useEffect)(() => {
3259
3369
  setOverlayElement(getInlineEditorElement(rootElement, expectedTag));
3260
3370
  }, [expectedTag, rootElement]);
3261
- return overlayRefElement ? /* @__PURE__ */ React8.createElement(OutlineOverlay, { element: overlayRefElement, id, isSelected: true }) : null;
3371
+ return overlayRefElement ? /* @__PURE__ */ React9.createElement(OutlineOverlay, { element: overlayRefElement, id, isSelected: true }) : null;
3262
3372
  };
3263
3373
  var InlineEditingToolbar = ({ anchor, editor, id }) => {
3264
- const { refs, floatingStyles } = (0, import_react16.useFloating)({
3374
+ const { refs, floatingStyles } = (0, import_react17.useFloating)({
3265
3375
  placement: "top",
3266
3376
  strategy: "fixed",
3267
3377
  transform: false,
3268
- whileElementsMounted: import_react16.autoUpdate,
3269
- middleware: [horizontalShifterMiddleware, (0, import_react16.flip)()]
3378
+ whileElementsMounted: import_react17.autoUpdate,
3379
+ middleware: [horizontalShifterMiddleware, (0, import_react17.flip)()]
3270
3380
  });
3271
- (0, import_react15.useLayoutEffect)(() => {
3381
+ (0, import_react16.useLayoutEffect)(() => {
3272
3382
  refs.setReference(anchor);
3273
3383
  return () => refs.setReference(null);
3274
3384
  }, [anchor, refs]);
3275
- return /* @__PURE__ */ React8.createElement(import_react16.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React8.createElement(
3385
+ return /* @__PURE__ */ React9.createElement(import_react17.FloatingPortal, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React9.createElement(
3276
3386
  import_ui5.Box,
3277
3387
  {
3278
3388
  ref: refs.setFloating,
@@ -3282,7 +3392,7 @@ var InlineEditingToolbar = ({ anchor, editor, id }) => {
3282
3392
  pointerEvents: "none"
3283
3393
  }
3284
3394
  },
3285
- /* @__PURE__ */ React8.createElement(import_editor_controls2.InlineEditorToolbar, { editor, elementId: id })
3395
+ /* @__PURE__ */ React9.createElement(import_editor_controls2.InlineEditorToolbar, { editor, elementId: id })
3286
3396
  ));
3287
3397
  };
3288
3398
 
@@ -3491,7 +3601,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
3491
3601
  contentElement.innerHTML = "";
3492
3602
  this.editing = true;
3493
3603
  this.reactRoot.render(
3494
- /* @__PURE__ */ React9.createElement(
3604
+ /* @__PURE__ */ React10.createElement(
3495
3605
  CanvasInlineEditor,
3496
3606
  {
3497
3607
  elementClasses,
@@ -5988,7 +6098,7 @@ var getLegacyPanelElementView = ({ settings, ...rest }) => {
5988
6098
  var GLOBAL_STYLES_IMPORTED_EVENT = "elementor/global-styles/imported";
5989
6099
 
5990
6100
  // src/components/spotlight-backdrop.tsx
5991
- var React10 = __toESM(require("react"));
6101
+ var React11 = __toESM(require("react"));
5992
6102
  function SpotlightBackdrop({ canvas, element, onExit, ariaLabel }) {
5993
6103
  const rect = useElementRect(element);
5994
6104
  const clipPath = element ? getRectClipPath(rect, canvas.defaultView) : void 0;
@@ -6010,7 +6120,7 @@ function SpotlightBackdrop({ canvas, element, onExit, ariaLabel }) {
6010
6120
  onExit();
6011
6121
  }
6012
6122
  };
6013
- return /* @__PURE__ */ React10.createElement(
6123
+ return /* @__PURE__ */ React11.createElement(
6014
6124
  "div",
6015
6125
  {
6016
6126
  style: backdropStyle,
@@ -6035,9 +6145,9 @@ function useCanvasDocument() {
6035
6145
  }
6036
6146
 
6037
6147
  // src/hooks/use-escape-on-canvas.ts
6038
- var import_react17 = require("react");
6148
+ var import_react18 = require("react");
6039
6149
  function useEscapeOnCanvas(canvasDocument, onEscape) {
6040
- (0, import_react17.useEffect)(() => {
6150
+ (0, import_react18.useEffect)(() => {
6041
6151
  if (!canvasDocument) {
6042
6152
  return;
6043
6153
  }