@elementor/editor-canvas 3.35.0-493 → 3.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +230 -92
- package/dist/index.mjs +235 -97
- package/package.json +18 -18
- package/src/legacy/create-element-type.ts +7 -1
- package/src/legacy/replacements/inline-editing/canvas-inline-editor.tsx +215 -0
- package/src/legacy/replacements/inline-editing/inline-editing-elements.tsx +17 -83
- package/src/legacy/replacements/inline-editing/inline-editing-utils.ts +65 -12
package/dist/index.mjs
CHANGED
|
@@ -1469,8 +1469,8 @@ function escapeURL(value) {
|
|
|
1469
1469
|
|
|
1470
1470
|
// src/legacy/create-element-type.ts
|
|
1471
1471
|
function createElementType(type) {
|
|
1472
|
-
const
|
|
1473
|
-
return class extends
|
|
1472
|
+
const legacyWindow = window;
|
|
1473
|
+
return class extends legacyWindow.elementor.modules.elements.types.Widget {
|
|
1474
1474
|
getType() {
|
|
1475
1475
|
return type;
|
|
1476
1476
|
}
|
|
@@ -1480,8 +1480,8 @@ function createElementType(type) {
|
|
|
1480
1480
|
};
|
|
1481
1481
|
}
|
|
1482
1482
|
function createElementViewClassDeclaration() {
|
|
1483
|
-
const
|
|
1484
|
-
return class extends
|
|
1483
|
+
const legacyWindow = window;
|
|
1484
|
+
return class extends legacyWindow.elementor.modules.elements.views.Widget {
|
|
1485
1485
|
// Dispatch `render` event so the overlay layer will be updated
|
|
1486
1486
|
onRender(...args) {
|
|
1487
1487
|
super.onRender(...args);
|
|
@@ -1527,12 +1527,16 @@ function createElementViewClassDeclaration() {
|
|
|
1527
1527
|
);
|
|
1528
1528
|
}
|
|
1529
1529
|
#dispatchPreviewEvent(eventType) {
|
|
1530
|
-
|
|
1530
|
+
const element = this.getDomElement().get(0);
|
|
1531
|
+
if (!element) {
|
|
1532
|
+
return;
|
|
1533
|
+
}
|
|
1534
|
+
legacyWindow.elementor?.$preview?.[0]?.contentWindow.dispatchEvent(
|
|
1531
1535
|
new CustomEvent(eventType, {
|
|
1532
1536
|
detail: {
|
|
1533
1537
|
id: this.model.get("id"),
|
|
1534
1538
|
type: this.model.get("widgetType"),
|
|
1535
|
-
element
|
|
1539
|
+
element
|
|
1536
1540
|
}
|
|
1537
1541
|
})
|
|
1538
1542
|
);
|
|
@@ -1687,14 +1691,11 @@ function createTemplatedElementView({
|
|
|
1687
1691
|
}
|
|
1688
1692
|
|
|
1689
1693
|
// src/legacy/replacements/inline-editing/inline-editing-elements.tsx
|
|
1690
|
-
import * as
|
|
1691
|
-
import { useEffect as useEffect7, useRef as useRef2, useState as useState4 } from "react";
|
|
1694
|
+
import * as React6 from "react";
|
|
1692
1695
|
import { createRoot } from "react-dom/client";
|
|
1693
|
-
import { InlineEditor } from "@elementor/editor-controls";
|
|
1694
1696
|
import { getContainer, getElementLabel, getElementType } from "@elementor/editor-elements";
|
|
1695
1697
|
import { htmlPropTypeUtil as htmlPropTypeUtil2, stringPropTypeUtil as stringPropTypeUtil2 } from "@elementor/editor-props";
|
|
1696
|
-
import { __privateRunCommandSync as runCommandSync,
|
|
1697
|
-
import { Box as Box2, ThemeProvider } from "@elementor/ui";
|
|
1698
|
+
import { __privateRunCommandSync as runCommandSync, getCurrentEditMode, undoable } from "@elementor/editor-v1-adapters";
|
|
1698
1699
|
import { __ } from "@wordpress/i18n";
|
|
1699
1700
|
|
|
1700
1701
|
// src/legacy/replacements/base.ts
|
|
@@ -1735,6 +1736,207 @@ var ReplacementBase = class {
|
|
|
1735
1736
|
}
|
|
1736
1737
|
};
|
|
1737
1738
|
|
|
1739
|
+
// src/legacy/replacements/inline-editing/canvas-inline-editor.tsx
|
|
1740
|
+
import * as React5 from "react";
|
|
1741
|
+
import { useEffect as useEffect7, useState as useState4 } from "react";
|
|
1742
|
+
import { InlineEditor, InlineEditorToolbar } from "@elementor/editor-controls";
|
|
1743
|
+
import { Box as Box2, ThemeProvider } from "@elementor/ui";
|
|
1744
|
+
import { FloatingPortal as FloatingPortal2, useInteractions as useInteractions2 } from "@floating-ui/react";
|
|
1745
|
+
|
|
1746
|
+
// src/legacy/replacements/inline-editing/inline-editing-utils.ts
|
|
1747
|
+
var INLINE_EDITING_PROPERTY_PER_TYPE = {
|
|
1748
|
+
"e-form-label": "text",
|
|
1749
|
+
"e-heading": "title",
|
|
1750
|
+
"e-paragraph": "paragraph"
|
|
1751
|
+
};
|
|
1752
|
+
var calcSelectionCenterOffsets = (view) => {
|
|
1753
|
+
const frameWindow = view.root?.defaultView;
|
|
1754
|
+
const selection = frameWindow?.getSelection();
|
|
1755
|
+
const editorContainer = view.dom;
|
|
1756
|
+
if (!selection || !editorContainer) {
|
|
1757
|
+
return null;
|
|
1758
|
+
}
|
|
1759
|
+
const range = selection.getRangeAt(0);
|
|
1760
|
+
const selectionRect = range.getBoundingClientRect();
|
|
1761
|
+
const editorContainerRect = editorContainer.getBoundingClientRect();
|
|
1762
|
+
if (!selectionRect || !editorContainerRect) {
|
|
1763
|
+
return null;
|
|
1764
|
+
}
|
|
1765
|
+
const verticalOffset = selectionRect.top - editorContainerRect.top;
|
|
1766
|
+
const selectionCenter = selectionRect?.left + selectionRect?.width / 2;
|
|
1767
|
+
const horizontalOffset = selectionCenter - editorContainerRect.left;
|
|
1768
|
+
return { left: horizontalOffset, top: verticalOffset };
|
|
1769
|
+
};
|
|
1770
|
+
var getComputedStyle = (styles, offsets) => {
|
|
1771
|
+
const transform = extractTransformValue(styles);
|
|
1772
|
+
return transform ? {
|
|
1773
|
+
...styles,
|
|
1774
|
+
marginLeft: `${offsets.left}px`,
|
|
1775
|
+
marginTop: `${offsets.top}px`,
|
|
1776
|
+
pointerEvents: "none"
|
|
1777
|
+
} : {
|
|
1778
|
+
display: "none"
|
|
1779
|
+
};
|
|
1780
|
+
};
|
|
1781
|
+
var extractTransformValue = (styles) => {
|
|
1782
|
+
const translateRegex = /translate\([^)]*\)\s?/g;
|
|
1783
|
+
const numericValuesRegex = /(-?\d+\.?\d*)/g;
|
|
1784
|
+
const translateValue = styles?.transform?.match(translateRegex)?.[0];
|
|
1785
|
+
const values = translateValue?.match(numericValuesRegex);
|
|
1786
|
+
if (!translateValue || !values) {
|
|
1787
|
+
return null;
|
|
1788
|
+
}
|
|
1789
|
+
const [numericX, numericY] = values.map(Number);
|
|
1790
|
+
if (!numericX || !numericY) {
|
|
1791
|
+
return null;
|
|
1792
|
+
}
|
|
1793
|
+
return styles.transform;
|
|
1794
|
+
};
|
|
1795
|
+
|
|
1796
|
+
// src/legacy/replacements/inline-editing/canvas-inline-editor.tsx
|
|
1797
|
+
var TOP_BAR_SELECTOR = "#elementor-editor-wrapper-v2";
|
|
1798
|
+
var NAVIGATOR_SELECTOR = "#elementor-navigator";
|
|
1799
|
+
var EDITING_PANEL = "#elementor-panel";
|
|
1800
|
+
var EDITOR_ELEMENTS_OUT_OF_IFRAME = [TOP_BAR_SELECTOR, NAVIGATOR_SELECTOR, EDITING_PANEL];
|
|
1801
|
+
var EDITOR_WRAPPER_SELECTOR = "inline-editor-wrapper";
|
|
1802
|
+
var CanvasInlineEditor = ({
|
|
1803
|
+
elementClasses,
|
|
1804
|
+
initialValue,
|
|
1805
|
+
expectedTag,
|
|
1806
|
+
rootElement,
|
|
1807
|
+
id,
|
|
1808
|
+
setValue,
|
|
1809
|
+
onBlur
|
|
1810
|
+
}) => {
|
|
1811
|
+
const [selectionOffsets, setSelectionOffsets] = useState4(null);
|
|
1812
|
+
const [editor, setEditor] = useState4(null);
|
|
1813
|
+
const onSelectionEnd = (view) => {
|
|
1814
|
+
const hasSelection = !view.state.selection.empty;
|
|
1815
|
+
setSelectionOffsets(hasSelection ? calcSelectionCenterOffsets(view) : null);
|
|
1816
|
+
};
|
|
1817
|
+
useOnClickOutsideIframe(onBlur);
|
|
1818
|
+
return /* @__PURE__ */ React5.createElement(ThemeProvider, null, /* @__PURE__ */ React5.createElement(InlineEditingOverlay, { expectedTag, rootElement, id }), /* @__PURE__ */ React5.createElement("style", null, `
|
|
1819
|
+
.${EDITOR_WRAPPER_SELECTOR}, .${EDITOR_WRAPPER_SELECTOR} > * {
|
|
1820
|
+
height: 100%;
|
|
1821
|
+
}
|
|
1822
|
+
.ProseMirror > * {
|
|
1823
|
+
height: 100%;
|
|
1824
|
+
}
|
|
1825
|
+
`), /* @__PURE__ */ React5.createElement(
|
|
1826
|
+
InlineEditor,
|
|
1827
|
+
{
|
|
1828
|
+
onEditorCreate: setEditor,
|
|
1829
|
+
editorProps: {
|
|
1830
|
+
attributes: {
|
|
1831
|
+
style: "outline: none;overflow-wrap: normal;height:100%"
|
|
1832
|
+
}
|
|
1833
|
+
},
|
|
1834
|
+
elementClasses,
|
|
1835
|
+
value: initialValue,
|
|
1836
|
+
setValue,
|
|
1837
|
+
onBlur,
|
|
1838
|
+
autofocus: true,
|
|
1839
|
+
expectedTag,
|
|
1840
|
+
wrapperClassName: EDITOR_WRAPPER_SELECTOR,
|
|
1841
|
+
onSelectionEnd
|
|
1842
|
+
}
|
|
1843
|
+
), selectionOffsets && editor && /* @__PURE__ */ React5.createElement(
|
|
1844
|
+
InlineEditingToolbarWrapper,
|
|
1845
|
+
{
|
|
1846
|
+
expectedTag,
|
|
1847
|
+
editor,
|
|
1848
|
+
rootElement,
|
|
1849
|
+
id,
|
|
1850
|
+
selectionOffsets
|
|
1851
|
+
}
|
|
1852
|
+
));
|
|
1853
|
+
};
|
|
1854
|
+
var InlineEditingOverlay = ({
|
|
1855
|
+
expectedTag,
|
|
1856
|
+
rootElement,
|
|
1857
|
+
id
|
|
1858
|
+
}) => {
|
|
1859
|
+
const inlineEditedElement = getInlineEditorElement(rootElement, expectedTag);
|
|
1860
|
+
const [overlayRefElement, setOverlayElement] = useState4(inlineEditedElement);
|
|
1861
|
+
useEffect7(() => {
|
|
1862
|
+
setOverlayElement(getInlineEditorElement(rootElement, expectedTag));
|
|
1863
|
+
}, [expectedTag, rootElement]);
|
|
1864
|
+
return overlayRefElement ? /* @__PURE__ */ React5.createElement(OutlineOverlay, { element: overlayRefElement, id, isSelected: true }) : null;
|
|
1865
|
+
};
|
|
1866
|
+
var InlineEditingToolbarWrapper = ({
|
|
1867
|
+
expectedTag,
|
|
1868
|
+
editor,
|
|
1869
|
+
rootElement,
|
|
1870
|
+
id,
|
|
1871
|
+
selectionOffsets
|
|
1872
|
+
}) => {
|
|
1873
|
+
const [element, setElement] = useState4(null);
|
|
1874
|
+
useEffect7(() => {
|
|
1875
|
+
setElement(getInlineEditorElement(rootElement, expectedTag));
|
|
1876
|
+
}, [expectedTag, rootElement]);
|
|
1877
|
+
return element ? /* @__PURE__ */ React5.createElement(InlineEditingToolbar, { element, editor, id, selectionOffsets }) : null;
|
|
1878
|
+
};
|
|
1879
|
+
var InlineEditingToolbar = ({
|
|
1880
|
+
element,
|
|
1881
|
+
editor,
|
|
1882
|
+
id,
|
|
1883
|
+
selectionOffsets
|
|
1884
|
+
}) => {
|
|
1885
|
+
const { floating } = useFloatingOnElement({
|
|
1886
|
+
element,
|
|
1887
|
+
isSelected: true
|
|
1888
|
+
});
|
|
1889
|
+
const { getFloatingProps, getReferenceProps } = useInteractions2();
|
|
1890
|
+
const style = getComputedStyle(floating.styles, selectionOffsets);
|
|
1891
|
+
useBindReactPropsToElement(element, getReferenceProps);
|
|
1892
|
+
return /* @__PURE__ */ React5.createElement(FloatingPortal2, { id: CANVAS_WRAPPER_ID }, /* @__PURE__ */ React5.createElement(
|
|
1893
|
+
Box2,
|
|
1894
|
+
{
|
|
1895
|
+
ref: floating.setRef,
|
|
1896
|
+
style: {
|
|
1897
|
+
...floating.styles,
|
|
1898
|
+
pointerEvents: "none"
|
|
1899
|
+
},
|
|
1900
|
+
role: "presentation",
|
|
1901
|
+
...getFloatingProps({ style })
|
|
1902
|
+
},
|
|
1903
|
+
floating.styles.transform && /* @__PURE__ */ React5.createElement(
|
|
1904
|
+
Box2,
|
|
1905
|
+
{
|
|
1906
|
+
sx: {
|
|
1907
|
+
position: "relative",
|
|
1908
|
+
transform: "translateY(-100%)",
|
|
1909
|
+
height: "max-content"
|
|
1910
|
+
}
|
|
1911
|
+
},
|
|
1912
|
+
/* @__PURE__ */ React5.createElement(
|
|
1913
|
+
InlineEditorToolbar,
|
|
1914
|
+
{
|
|
1915
|
+
editor,
|
|
1916
|
+
elementId: id,
|
|
1917
|
+
sx: {
|
|
1918
|
+
transform: "translateX(-50%)"
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1921
|
+
)
|
|
1922
|
+
)
|
|
1923
|
+
));
|
|
1924
|
+
};
|
|
1925
|
+
var getInlineEditorElement = (elementWrapper, expectedTag) => {
|
|
1926
|
+
return !expectedTag ? null : elementWrapper.querySelector(expectedTag);
|
|
1927
|
+
};
|
|
1928
|
+
var useOnClickOutsideIframe = (handleUnmount) => {
|
|
1929
|
+
const asyncUnmountInlineEditor = React5.useCallback(() => queueMicrotask(handleUnmount), [handleUnmount]);
|
|
1930
|
+
useEffect7(() => {
|
|
1931
|
+
EDITOR_ELEMENTS_OUT_OF_IFRAME.forEach(
|
|
1932
|
+
(selector) => document?.querySelector(selector)?.addEventListener("mousedown", asyncUnmountInlineEditor)
|
|
1933
|
+
);
|
|
1934
|
+
return () => EDITOR_ELEMENTS_OUT_OF_IFRAME.forEach(
|
|
1935
|
+
(selector) => document?.querySelector(selector)?.removeEventListener("mousedown", asyncUnmountInlineEditor)
|
|
1936
|
+
);
|
|
1937
|
+
}, []);
|
|
1938
|
+
};
|
|
1939
|
+
|
|
1738
1940
|
// src/legacy/replacements/inline-editing/inline-editing-eligibility.ts
|
|
1739
1941
|
import { htmlPropTypeUtil, stringPropTypeUtil } from "@elementor/editor-props";
|
|
1740
1942
|
var hasKey = (propType) => {
|
|
@@ -1764,33 +1966,8 @@ var isInlineEditingAllowed = ({ rawValue, propTypeFromSchema }) => {
|
|
|
1764
1966
|
return htmlPropTypeUtil.isValid(rawValue) || stringPropTypeUtil.isValid(rawValue);
|
|
1765
1967
|
};
|
|
1766
1968
|
|
|
1767
|
-
// src/legacy/replacements/inline-editing/inline-editing-utils.ts
|
|
1768
|
-
var INLINE_EDITING_PROPERTY_PER_TYPE = {
|
|
1769
|
-
"e-form-label": "text",
|
|
1770
|
-
"e-heading": "title",
|
|
1771
|
-
"e-paragraph": "paragraph"
|
|
1772
|
-
};
|
|
1773
|
-
var legacyWindow = window;
|
|
1774
|
-
var getInitialPopoverPosition = () => {
|
|
1775
|
-
const positionFallback = { left: 0, top: 0 };
|
|
1776
|
-
const iFrameElement = legacyWindow?.elementor?.$preview?.get(0);
|
|
1777
|
-
const iFramePosition = iFrameElement?.getBoundingClientRect() ?? positionFallback;
|
|
1778
|
-
const previewElement = legacyWindow?.elementor?.$previewWrapper?.get(0);
|
|
1779
|
-
const previewPosition = previewElement ? { left: previewElement.scrollLeft, top: previewElement.scrollTop } : positionFallback;
|
|
1780
|
-
return {
|
|
1781
|
-
left: iFramePosition.left + previewPosition.left,
|
|
1782
|
-
top: iFramePosition.top + previewPosition.top
|
|
1783
|
-
};
|
|
1784
|
-
};
|
|
1785
|
-
|
|
1786
1969
|
// src/legacy/replacements/inline-editing/inline-editing-elements.tsx
|
|
1787
|
-
var EXPERIMENT_KEY = "v4-inline-text-editing";
|
|
1788
1970
|
var HISTORY_DEBOUNCE_WAIT = 800;
|
|
1789
|
-
var TOP_BAR_SELECTOR = "#elementor-editor-wrapper-v2";
|
|
1790
|
-
var NAVIGATOR_SELECTOR = "#elementor-navigator";
|
|
1791
|
-
var V4_EDITING_PANEL = "main.MuiBox-root";
|
|
1792
|
-
var V3_EDITING_PANEL = "#elementor-panel-content-wrapper";
|
|
1793
|
-
var BLUR_TRIGGERING_SELECTORS = [TOP_BAR_SELECTOR, NAVIGATOR_SELECTOR, V4_EDITING_PANEL, V3_EDITING_PANEL];
|
|
1794
1971
|
var InlineEditingReplacement = class extends ReplacementBase {
|
|
1795
1972
|
inlineEditorRoot = null;
|
|
1796
1973
|
handlerAttached = false;
|
|
@@ -1804,7 +1981,7 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
1804
1981
|
return !!this.inlineEditorRoot;
|
|
1805
1982
|
}
|
|
1806
1983
|
shouldRenderReplacement() {
|
|
1807
|
-
return
|
|
1984
|
+
return this.isInlineEditingEligible() && getCurrentEditMode() === "edit";
|
|
1808
1985
|
}
|
|
1809
1986
|
handleRenderInlineEditor = () => {
|
|
1810
1987
|
if (this.isEditingModeActive() || !this.isInlineEditingEligible()) {
|
|
@@ -1871,11 +2048,11 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
1871
2048
|
}
|
|
1872
2049
|
getExtractedContentValue() {
|
|
1873
2050
|
const propValue = this.getInlineEditablePropValue();
|
|
1874
|
-
return htmlPropTypeUtil2.extract(propValue) ??
|
|
2051
|
+
return htmlPropTypeUtil2.extract(propValue) ?? "";
|
|
1875
2052
|
}
|
|
1876
2053
|
setContentValue(value) {
|
|
1877
2054
|
const settingKey = this.getInlineEditablePropertyName();
|
|
1878
|
-
const valueToSave =
|
|
2055
|
+
const valueToSave = htmlPropTypeUtil2.create(value || "");
|
|
1879
2056
|
undoable(
|
|
1880
2057
|
{
|
|
1881
2058
|
do: () => {
|
|
@@ -1950,65 +2127,26 @@ var InlineEditingReplacement = class extends ReplacementBase {
|
|
|
1950
2127
|
if (this.isEditingModeActive()) {
|
|
1951
2128
|
this.resetInlineEditorRoot();
|
|
1952
2129
|
}
|
|
1953
|
-
const InlineEditorApp = this.InlineEditorApp;
|
|
1954
|
-
const wrapperClasses = "elementor";
|
|
1955
2130
|
const elementClasses = this.element.children?.[0]?.classList.toString() ?? "";
|
|
2131
|
+
const propValue = this.getExtractedContentValue();
|
|
2132
|
+
const expectedTag = this.getExpectedTag();
|
|
1956
2133
|
this.element.innerHTML = "";
|
|
1957
2134
|
this.inlineEditorRoot = createRoot(this.element);
|
|
1958
2135
|
this.inlineEditorRoot.render(
|
|
1959
|
-
/* @__PURE__ */
|
|
1960
|
-
|
|
1961
|
-
}
|
|
1962
|
-
InlineEditorApp = ({ wrapperClasses, elementClasses }) => {
|
|
1963
|
-
const propValue = this.getExtractedContentValue();
|
|
1964
|
-
const expectedTag = this.getExpectedTag();
|
|
1965
|
-
const wrapperRef = useRef2(null);
|
|
1966
|
-
const [isWrapperRendered, setIsWrapperRendered] = useState4(false);
|
|
1967
|
-
useEffect7(() => {
|
|
1968
|
-
setIsWrapperRendered(!!wrapperRef.current);
|
|
1969
|
-
BLUR_TRIGGERING_SELECTORS.forEach(
|
|
1970
|
-
(selector) => document?.querySelector(selector)?.addEventListener("mousedown", asyncUnmountInlineEditor)
|
|
1971
|
-
);
|
|
1972
|
-
return () => BLUR_TRIGGERING_SELECTORS.forEach(
|
|
1973
|
-
(selector) => document?.querySelector(selector)?.removeEventListener("mousedown", asyncUnmountInlineEditor)
|
|
1974
|
-
);
|
|
1975
|
-
}, []);
|
|
1976
|
-
const asyncUnmountInlineEditor = React5.useCallback(
|
|
1977
|
-
() => queueMicrotask(this.unmountInlineEditor.bind(this)),
|
|
1978
|
-
[]
|
|
1979
|
-
);
|
|
1980
|
-
return /* @__PURE__ */ React5.createElement(ThemeProvider, null, /* @__PURE__ */ React5.createElement(
|
|
1981
|
-
Box2,
|
|
1982
|
-
{
|
|
1983
|
-
ref: wrapperRef,
|
|
1984
|
-
sx: {
|
|
1985
|
-
"& .elementor-inline-editor-reset": {
|
|
1986
|
-
margin: 0,
|
|
1987
|
-
padding: 0
|
|
1988
|
-
}
|
|
1989
|
-
}
|
|
1990
|
-
},
|
|
1991
|
-
isWrapperRendered && /* @__PURE__ */ React5.createElement(OutlineOverlay, { element: wrapperRef.current, id: this.id, isSelected: true }),
|
|
1992
|
-
/* @__PURE__ */ React5.createElement(
|
|
1993
|
-
InlineEditor,
|
|
2136
|
+
/* @__PURE__ */ React6.createElement(
|
|
2137
|
+
CanvasInlineEditor,
|
|
1994
2138
|
{
|
|
1995
|
-
attributes: {
|
|
1996
|
-
class: wrapperClasses,
|
|
1997
|
-
style: "outline: none;"
|
|
1998
|
-
},
|
|
1999
2139
|
elementClasses,
|
|
2000
|
-
|
|
2001
|
-
setValue: this.setContentValue.bind(this),
|
|
2002
|
-
onBlur: this.unmountInlineEditor.bind(this),
|
|
2003
|
-
autofocus: true,
|
|
2004
|
-
showToolbar: true,
|
|
2005
|
-
getInitialPopoverPosition,
|
|
2140
|
+
initialValue: propValue,
|
|
2006
2141
|
expectedTag,
|
|
2007
|
-
|
|
2142
|
+
rootElement: this.element,
|
|
2143
|
+
id: this.id,
|
|
2144
|
+
setValue: this.setContentValue.bind(this),
|
|
2145
|
+
onBlur: this.unmountInlineEditor.bind(this)
|
|
2008
2146
|
}
|
|
2009
2147
|
)
|
|
2010
|
-
)
|
|
2011
|
-
}
|
|
2148
|
+
);
|
|
2149
|
+
}
|
|
2012
2150
|
};
|
|
2013
2151
|
|
|
2014
2152
|
// src/legacy/replacements/manager.ts
|
|
@@ -2093,13 +2231,13 @@ var createTemplatedElementTypeWithReplacements = ({
|
|
|
2093
2231
|
renderer,
|
|
2094
2232
|
element
|
|
2095
2233
|
}) => {
|
|
2096
|
-
const
|
|
2234
|
+
const legacyWindow = window;
|
|
2097
2235
|
const view = createViewWithReplacements({
|
|
2098
2236
|
type,
|
|
2099
2237
|
renderer,
|
|
2100
2238
|
element
|
|
2101
2239
|
});
|
|
2102
|
-
return class extends
|
|
2240
|
+
return class extends legacyWindow.elementor.modules.elements.types.Widget {
|
|
2103
2241
|
getType() {
|
|
2104
2242
|
return type;
|
|
2105
2243
|
}
|
|
@@ -2117,7 +2255,7 @@ function registerElementType(type, elementTypeGenerator) {
|
|
|
2117
2255
|
function initLegacyViews() {
|
|
2118
2256
|
__privateListenTo(v1ReadyEvent2(), () => {
|
|
2119
2257
|
const config = getWidgetsCache2() ?? {};
|
|
2120
|
-
const
|
|
2258
|
+
const legacyWindow = window;
|
|
2121
2259
|
const renderer = createDomRenderer();
|
|
2122
2260
|
Object.entries(config).forEach(([type, element]) => {
|
|
2123
2261
|
if (!element.atomic) {
|
|
@@ -2131,7 +2269,7 @@ function initLegacyViews() {
|
|
|
2131
2269
|
} else {
|
|
2132
2270
|
ElementType = createElementType(type);
|
|
2133
2271
|
}
|
|
2134
|
-
|
|
2272
|
+
legacyWindow.elementor.elementsManager.registerElementType(new ElementType());
|
|
2135
2273
|
});
|
|
2136
2274
|
});
|
|
2137
2275
|
}
|
|
@@ -2213,7 +2351,7 @@ function extractElementData(element) {
|
|
|
2213
2351
|
|
|
2214
2352
|
// src/mcp/tools/build-composition/tool.ts
|
|
2215
2353
|
import {
|
|
2216
|
-
createElement as
|
|
2354
|
+
createElement as createElement8,
|
|
2217
2355
|
deleteElement,
|
|
2218
2356
|
getContainer as getContainer3,
|
|
2219
2357
|
getWidgetsCache as getWidgetsCache6
|
|
@@ -2221,7 +2359,7 @@ import {
|
|
|
2221
2359
|
|
|
2222
2360
|
// src/composition-builder/composition-builder.ts
|
|
2223
2361
|
import {
|
|
2224
|
-
createElement as
|
|
2362
|
+
createElement as createElement7,
|
|
2225
2363
|
generateElementId,
|
|
2226
2364
|
getContainer as getContainer2,
|
|
2227
2365
|
getWidgetsCache as getWidgetsCache5
|
|
@@ -2439,7 +2577,7 @@ var CompositionBuilder = class _CompositionBuilder {
|
|
|
2439
2577
|
rootContainers = [];
|
|
2440
2578
|
containerElements = [];
|
|
2441
2579
|
api = {
|
|
2442
|
-
createElement:
|
|
2580
|
+
createElement: createElement7,
|
|
2443
2581
|
getWidgetsCache: getWidgetsCache5,
|
|
2444
2582
|
generateElementId,
|
|
2445
2583
|
getContainer: getContainer2,
|
|
@@ -2828,7 +2966,7 @@ var initBuildCompositionsTool = (reg) => {
|
|
|
2828
2966
|
const documentContainer = getContainer3("document");
|
|
2829
2967
|
try {
|
|
2830
2968
|
const compositionBuilder = CompositionBuilder.fromXMLString(xmlStructure, {
|
|
2831
|
-
createElement:
|
|
2969
|
+
createElement: createElement8,
|
|
2832
2970
|
getWidgetsCache: getWidgetsCache6
|
|
2833
2971
|
});
|
|
2834
2972
|
compositionBuilder.setElementConfig(elementConfig);
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-canvas",
|
|
3
3
|
"description": "Elementor Editor Canvas",
|
|
4
|
-
"version": "3.35.0
|
|
4
|
+
"version": "3.35.0",
|
|
5
5
|
"private": false,
|
|
6
6
|
"author": "Elementor Team",
|
|
7
7
|
"homepage": "https://elementor.com/",
|
|
@@ -37,24 +37,24 @@
|
|
|
37
37
|
"react-dom": "^18.3.1"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@elementor/editor": "3.35.0
|
|
41
|
-
"@elementor/editor-controls": "3.35.0
|
|
42
|
-
"@elementor/editor-documents": "3.35.0
|
|
43
|
-
"@elementor/editor-elements": "3.35.0
|
|
44
|
-
"@elementor/editor-interactions": "3.35.0
|
|
45
|
-
"@elementor/editor-mcp": "3.35.0
|
|
46
|
-
"@elementor/editor-notifications": "3.35.0
|
|
47
|
-
"@elementor/editor-props": "3.35.0
|
|
48
|
-
"@elementor/editor-responsive": "3.35.0
|
|
49
|
-
"@elementor/editor-styles": "3.35.0
|
|
50
|
-
"@elementor/editor-styles-repository": "3.35.0
|
|
51
|
-
"@elementor/editor-ui": "3.35.0
|
|
52
|
-
"@elementor/editor-v1-adapters": "3.35.0
|
|
53
|
-
"@elementor/schema": "3.35.0
|
|
54
|
-
"@elementor/twing": "3.35.0
|
|
40
|
+
"@elementor/editor": "3.35.0",
|
|
41
|
+
"@elementor/editor-controls": "3.35.0",
|
|
42
|
+
"@elementor/editor-documents": "3.35.0",
|
|
43
|
+
"@elementor/editor-elements": "3.35.0",
|
|
44
|
+
"@elementor/editor-interactions": "3.35.0",
|
|
45
|
+
"@elementor/editor-mcp": "3.35.0",
|
|
46
|
+
"@elementor/editor-notifications": "3.35.0",
|
|
47
|
+
"@elementor/editor-props": "3.35.0",
|
|
48
|
+
"@elementor/editor-responsive": "3.35.0",
|
|
49
|
+
"@elementor/editor-styles": "3.35.0",
|
|
50
|
+
"@elementor/editor-styles-repository": "3.35.0",
|
|
51
|
+
"@elementor/editor-ui": "3.35.0",
|
|
52
|
+
"@elementor/editor-v1-adapters": "3.35.0",
|
|
53
|
+
"@elementor/schema": "3.35.0",
|
|
54
|
+
"@elementor/twing": "3.35.0",
|
|
55
55
|
"@elementor/ui": "1.36.17",
|
|
56
|
-
"@elementor/utils": "3.35.0
|
|
57
|
-
"@elementor/wp-media": "3.35.0
|
|
56
|
+
"@elementor/utils": "3.35.0",
|
|
57
|
+
"@elementor/wp-media": "3.35.0",
|
|
58
58
|
"@floating-ui/react": "^0.27.5",
|
|
59
59
|
"@wordpress/i18n": "^5.13.0"
|
|
60
60
|
},
|
|
@@ -80,12 +80,18 @@ export function createElementViewClassDeclaration(): typeof ElementView {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
#dispatchPreviewEvent( eventType: string ) {
|
|
83
|
+
const element = this.getDomElement().get( 0 );
|
|
84
|
+
|
|
85
|
+
if ( ! element ) {
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
|
|
83
89
|
legacyWindow.elementor?.$preview?.[ 0 ]?.contentWindow.dispatchEvent(
|
|
84
90
|
new CustomEvent( eventType, {
|
|
85
91
|
detail: {
|
|
86
92
|
id: this.model.get( 'id' ),
|
|
87
93
|
type: this.model.get( 'widgetType' ),
|
|
88
|
-
element
|
|
94
|
+
element,
|
|
89
95
|
},
|
|
90
96
|
} )
|
|
91
97
|
);
|