@elementor/editor-components 4.1.0-741 → 4.1.0-742
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 +278 -213
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +250 -185
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -23
- package/src/components/instance-editing-panel/override-prop-control.tsx +96 -33
- package/src/components/instance-editing-panel/utils/resolve-element-settings.ts +65 -0
- package/src/utils/filter-valid-overridable-props.ts +6 -61
- package/src/utils/overridable-props-utils.ts +0 -34
- package/src/utils/resolve-overrides-chain.ts +197 -0
- package/src/components/instance-editing-panel/use-resolved-origin-value.tsx +0 -119
package/dist/index.mjs
CHANGED
|
@@ -1524,6 +1524,7 @@ import { Box as Box9, Collapse, ListItemButton as ListItemButton2, ListItemText,
|
|
|
1524
1524
|
|
|
1525
1525
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
1526
1526
|
import * as React19 from "react";
|
|
1527
|
+
import { useMemo } from "react";
|
|
1527
1528
|
import {
|
|
1528
1529
|
ControlReplacementsProvider,
|
|
1529
1530
|
getControlReplacements,
|
|
@@ -1744,24 +1745,6 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
|
1744
1745
|
componentsActions.setOverridableProps(componentId, newOverridableProps);
|
|
1745
1746
|
}
|
|
1746
1747
|
|
|
1747
|
-
// src/utils/get-container-by-origin-id.ts
|
|
1748
|
-
import { getContainer as getContainer2 } from "@elementor/editor-elements";
|
|
1749
|
-
function getContainerByOriginId(originElementId, instanceElementId) {
|
|
1750
|
-
if (!instanceElementId) {
|
|
1751
|
-
return getContainer2(originElementId);
|
|
1752
|
-
}
|
|
1753
|
-
const instanceContainer = getContainer2(instanceElementId);
|
|
1754
|
-
if (!instanceContainer) {
|
|
1755
|
-
return null;
|
|
1756
|
-
}
|
|
1757
|
-
const legacyWindow = window;
|
|
1758
|
-
return legacyWindow.elementor?.getContainerByKeyValue?.({
|
|
1759
|
-
key: "originId",
|
|
1760
|
-
value: originElementId,
|
|
1761
|
-
parent: instanceContainer.view
|
|
1762
|
-
}) ?? null;
|
|
1763
|
-
}
|
|
1764
|
-
|
|
1765
1748
|
// src/utils/get-prop-type-for-component-override.ts
|
|
1766
1749
|
import { getWidgetsCache } from "@elementor/editor-elements";
|
|
1767
1750
|
var getPropTypeForComponentOverride = (overridableProp) => {
|
|
@@ -1790,45 +1773,25 @@ function getMatchingOverride(overrides, overrideKey) {
|
|
|
1790
1773
|
return override.value.override_key === overrideKey;
|
|
1791
1774
|
}) ?? null;
|
|
1792
1775
|
}
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
if (!innerOverride) {
|
|
1800
|
-
return null;
|
|
1776
|
+
|
|
1777
|
+
// src/utils/get-container-by-origin-id.ts
|
|
1778
|
+
import { getContainer as getContainer2 } from "@elementor/editor-elements";
|
|
1779
|
+
function getContainerByOriginId(originElementId, instanceElementId) {
|
|
1780
|
+
if (!instanceElementId) {
|
|
1781
|
+
return getContainer2(originElementId);
|
|
1801
1782
|
}
|
|
1802
|
-
const
|
|
1803
|
-
|
|
1804
|
-
override_key: innerOverrideKey,
|
|
1805
|
-
override_value: overrideValue
|
|
1806
|
-
} = innerOverride;
|
|
1807
|
-
const componentId = schemaSource?.id;
|
|
1808
|
-
if (!componentId || !innerOverrideKey) {
|
|
1783
|
+
const instanceContainer = getContainer2(instanceElementId);
|
|
1784
|
+
if (!instanceContainer) {
|
|
1809
1785
|
return null;
|
|
1810
1786
|
}
|
|
1811
|
-
|
|
1787
|
+
const legacyWindow = window;
|
|
1788
|
+
return legacyWindow.elementor?.getContainerByKeyValue?.({
|
|
1789
|
+
key: "originId",
|
|
1790
|
+
value: originElementId,
|
|
1791
|
+
parent: instanceContainer.view
|
|
1792
|
+
}) ?? null;
|
|
1812
1793
|
}
|
|
1813
1794
|
|
|
1814
|
-
// src/components/control-label.tsx
|
|
1815
|
-
import * as React18 from "react";
|
|
1816
|
-
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
1817
|
-
import { Stack as Stack8 } from "@elementor/ui";
|
|
1818
|
-
var ControlLabel = ({ children, ...props }) => {
|
|
1819
|
-
return /* @__PURE__ */ React18.createElement(Stack8, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React18.createElement(ControlFormLabel, { ...props }, children), /* @__PURE__ */ React18.createElement(ControlAdornments, null));
|
|
1820
|
-
};
|
|
1821
|
-
|
|
1822
|
-
// src/components/errors.ts
|
|
1823
|
-
import { createError } from "@elementor/utils";
|
|
1824
|
-
var OverrideControlInnerElementNotFoundError = createError({
|
|
1825
|
-
code: "override_control_inner_element_not_found",
|
|
1826
|
-
message: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`
|
|
1827
|
-
});
|
|
1828
|
-
|
|
1829
|
-
// src/components/instance-editing-panel/use-resolved-origin-value.tsx
|
|
1830
|
-
import { __useSelector as useSelector3 } from "@elementor/store";
|
|
1831
|
-
|
|
1832
1795
|
// src/utils/get-overridable-prop.ts
|
|
1833
1796
|
import { __getState as getState5 } from "@elementor/store";
|
|
1834
1797
|
function getOverridableProp({
|
|
@@ -1842,82 +1805,124 @@ function getOverridableProp({
|
|
|
1842
1805
|
return overridableProps.props[overrideKey];
|
|
1843
1806
|
}
|
|
1844
1807
|
|
|
1845
|
-
// src/
|
|
1846
|
-
function
|
|
1847
|
-
|
|
1848
|
-
|
|
1849
|
-
}
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
if (hasValue(result)) {
|
|
1858
|
-
return result;
|
|
1808
|
+
// src/utils/resolve-overrides-chain.ts
|
|
1809
|
+
function resolveOverridesChain({
|
|
1810
|
+
outerOverridableProp,
|
|
1811
|
+
outerInstanceId,
|
|
1812
|
+
overridesMapping = {}
|
|
1813
|
+
}) {
|
|
1814
|
+
if (!outerOverridableProp.originPropFields) {
|
|
1815
|
+
const innerElement = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
|
|
1816
|
+
if (!innerElement) {
|
|
1817
|
+
throw new Error(
|
|
1818
|
+
`Inner element not found inside instance. elementId: ${outerOverridableProp.elementId}, instanceId: ${outerInstanceId}`
|
|
1819
|
+
);
|
|
1859
1820
|
}
|
|
1821
|
+
return { isChainBroken: false, innerElement, overridesMapping };
|
|
1860
1822
|
}
|
|
1861
|
-
const
|
|
1862
|
-
if (
|
|
1863
|
-
return
|
|
1823
|
+
const currentInstance = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
|
|
1824
|
+
if (!currentInstance) {
|
|
1825
|
+
return { isChainBroken: true };
|
|
1864
1826
|
}
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
return null;
|
|
1871
|
-
}
|
|
1872
|
-
const { componentId, innerOverrideKey, overrideValue } = innerOverrideInfo;
|
|
1873
|
-
const prop = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
|
|
1874
|
-
if (hasValue(prop?.originValue)) {
|
|
1875
|
-
return prop.originValue;
|
|
1827
|
+
const { componentId, overrides } = extractComponentInstanceSettings(currentInstance);
|
|
1828
|
+
if (!componentId) {
|
|
1829
|
+
throw new Error(
|
|
1830
|
+
`Component ID not found for current instance. currentInstanceId: ${currentInstance.id}. outerInstanceId: ${outerInstanceId}`
|
|
1831
|
+
);
|
|
1876
1832
|
}
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
}
|
|
1833
|
+
const mergedOverrides = buildOverridesMap(overridesMapping, overrides ?? []);
|
|
1834
|
+
const override = findOverrideByOuterKey(overrides, outerOverridableProp.overrideKey);
|
|
1835
|
+
const overrideKey = componentInstanceOverridePropTypeUtil.extract(override)?.override_key;
|
|
1836
|
+
if (!override || !overrideKey) {
|
|
1837
|
+
return { isChainBroken: true };
|
|
1883
1838
|
}
|
|
1884
|
-
const
|
|
1885
|
-
if (
|
|
1886
|
-
|
|
1839
|
+
const overridableProp = getOverridableProp({ componentId, overrideKey });
|
|
1840
|
+
if (!overridableProp) {
|
|
1841
|
+
throw new Error(`Overridable prop not found. componentId: ${componentId}, overrideKey: ${overrideKey}`);
|
|
1887
1842
|
}
|
|
1888
|
-
return
|
|
1843
|
+
return resolveOverridesChain({
|
|
1844
|
+
outerOverridableProp: overridableProp,
|
|
1845
|
+
outerInstanceId: currentInstance.id,
|
|
1846
|
+
overridesMapping: mergedOverrides
|
|
1847
|
+
});
|
|
1889
1848
|
}
|
|
1890
|
-
function
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1849
|
+
function buildOverridesMap(existing, levelOverrides) {
|
|
1850
|
+
const result = { ...existing };
|
|
1851
|
+
for (const item of levelOverrides) {
|
|
1852
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(item);
|
|
1853
|
+
if (overridableValue) {
|
|
1854
|
+
const override = componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
|
|
1855
|
+
if (!override) {
|
|
1856
|
+
continue;
|
|
1857
|
+
}
|
|
1858
|
+
const outerKey = overridableValue.override_key;
|
|
1859
|
+
const innerKey = override.override_key;
|
|
1860
|
+
const innerValue = override.override_value;
|
|
1861
|
+
const higherLevelOverride = existing[outerKey];
|
|
1862
|
+
if (higherLevelOverride) {
|
|
1863
|
+
const outerValue = higherLevelOverride.value;
|
|
1864
|
+
result[innerKey] = {
|
|
1865
|
+
value: outerValue ?? innerValue,
|
|
1866
|
+
outermostKey: higherLevelOverride.outermostKey ?? outerKey
|
|
1867
|
+
};
|
|
1868
|
+
continue;
|
|
1869
|
+
}
|
|
1870
|
+
result[innerKey] = {
|
|
1871
|
+
value: innerValue,
|
|
1872
|
+
outermostKey: outerKey
|
|
1873
|
+
};
|
|
1874
|
+
} else {
|
|
1875
|
+
const override = componentInstanceOverridePropTypeUtil.extract(item);
|
|
1876
|
+
if (!override) {
|
|
1877
|
+
continue;
|
|
1878
|
+
}
|
|
1879
|
+
const key = override.override_key;
|
|
1880
|
+
const value = override.override_value;
|
|
1881
|
+
result[key] = { value };
|
|
1913
1882
|
}
|
|
1914
1883
|
}
|
|
1915
|
-
return
|
|
1884
|
+
return result;
|
|
1885
|
+
}
|
|
1886
|
+
function extractComponentInstanceSettings(element) {
|
|
1887
|
+
const instanceSetting = element.settings?.get("component_instance");
|
|
1888
|
+
const instanceValue = componentInstancePropTypeUtil.extract(instanceSetting);
|
|
1889
|
+
const componentId = instanceValue?.component_id?.value;
|
|
1890
|
+
const overrides = componentInstanceOverridesPropTypeUtil.extract(instanceValue?.overrides);
|
|
1891
|
+
return { componentId, overrides };
|
|
1916
1892
|
}
|
|
1917
|
-
function
|
|
1918
|
-
|
|
1893
|
+
function findOverrideByOuterKey(overrides, outerKey) {
|
|
1894
|
+
if (!overrides) {
|
|
1895
|
+
return null;
|
|
1896
|
+
}
|
|
1897
|
+
const overridableOverride = overrides.find((item) => {
|
|
1898
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(item);
|
|
1899
|
+
if (!overridableValue) {
|
|
1900
|
+
return false;
|
|
1901
|
+
}
|
|
1902
|
+
return overridableValue.override_key === outerKey;
|
|
1903
|
+
});
|
|
1904
|
+
const override = componentOverridablePropTypeUtil.extract(overridableOverride)?.origin_value;
|
|
1905
|
+
if (!override || !componentInstanceOverridePropTypeUtil.isValid(override)) {
|
|
1906
|
+
return null;
|
|
1907
|
+
}
|
|
1908
|
+
return override;
|
|
1919
1909
|
}
|
|
1920
1910
|
|
|
1911
|
+
// src/components/control-label.tsx
|
|
1912
|
+
import * as React18 from "react";
|
|
1913
|
+
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
1914
|
+
import { Stack as Stack8 } from "@elementor/ui";
|
|
1915
|
+
var ControlLabel = ({ children, ...props }) => {
|
|
1916
|
+
return /* @__PURE__ */ React18.createElement(Stack8, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React18.createElement(ControlFormLabel, { ...props }, children), /* @__PURE__ */ React18.createElement(ControlAdornments, null));
|
|
1917
|
+
};
|
|
1918
|
+
|
|
1919
|
+
// src/components/errors.ts
|
|
1920
|
+
import { createError } from "@elementor/utils";
|
|
1921
|
+
var OverrideControlInnerElementNotFoundError = createError({
|
|
1922
|
+
code: "override_control_inner_element_not_found",
|
|
1923
|
+
message: `Component inner element not found for override control. The element may have been deleted without updating the overridable props, or the component has not finished rendering yet.`
|
|
1924
|
+
});
|
|
1925
|
+
|
|
1921
1926
|
// src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts
|
|
1922
1927
|
function correctExposedEmptyOverride(newPropValue, matchingOverride) {
|
|
1923
1928
|
const newOverridableValue = componentOverridablePropTypeUtil.extract(newPropValue);
|
|
@@ -1931,6 +1936,45 @@ function correctExposedEmptyOverride(newPropValue, matchingOverride) {
|
|
|
1931
1936
|
});
|
|
1932
1937
|
}
|
|
1933
1938
|
|
|
1939
|
+
// src/components/instance-editing-panel/utils/resolve-element-settings.ts
|
|
1940
|
+
function applyOverridesToSettings(elementSettings, overrides) {
|
|
1941
|
+
const result = {};
|
|
1942
|
+
for (const [propKey, propValue] of Object.entries(elementSettings)) {
|
|
1943
|
+
const overridable = componentOverridablePropTypeUtil.extract(propValue);
|
|
1944
|
+
if (!overridable) {
|
|
1945
|
+
result[propKey] = propValue;
|
|
1946
|
+
continue;
|
|
1947
|
+
}
|
|
1948
|
+
const override = overrides[overridable.override_key];
|
|
1949
|
+
if (!override) {
|
|
1950
|
+
result[propKey] = propValue;
|
|
1951
|
+
continue;
|
|
1952
|
+
}
|
|
1953
|
+
if (override.outermostKey && override.outermostKey !== overridable.override_key) {
|
|
1954
|
+
const originValue = overridable.origin_value;
|
|
1955
|
+
result[propKey] = componentOverridablePropTypeUtil.create({
|
|
1956
|
+
override_key: override.outermostKey,
|
|
1957
|
+
origin_value: override.value ?? originValue
|
|
1958
|
+
});
|
|
1959
|
+
} else {
|
|
1960
|
+
result[propKey] = override.value ?? propValue;
|
|
1961
|
+
}
|
|
1962
|
+
}
|
|
1963
|
+
return result;
|
|
1964
|
+
}
|
|
1965
|
+
function unwrapOverridableSettings(elementSettings) {
|
|
1966
|
+
const result = {};
|
|
1967
|
+
for (const [propKey, propValue] of Object.entries(elementSettings)) {
|
|
1968
|
+
const overridable = componentOverridablePropTypeUtil.extract(propValue);
|
|
1969
|
+
if (!overridable) {
|
|
1970
|
+
result[propKey] = propValue;
|
|
1971
|
+
continue;
|
|
1972
|
+
}
|
|
1973
|
+
result[propKey] = overridable.origin_value;
|
|
1974
|
+
}
|
|
1975
|
+
return result;
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1934
1978
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
1935
1979
|
function OverridePropControl({ overrideKey }) {
|
|
1936
1980
|
const overridableProps = useComponentOverridableProps();
|
|
@@ -1952,19 +1996,54 @@ function OverrideControl({ overridableProp }) {
|
|
|
1952
1996
|
);
|
|
1953
1997
|
const controlReplacements = getControlReplacements();
|
|
1954
1998
|
const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
|
|
1955
|
-
const recursiveOriginValue = useResolvedOriginValue(matchingOverride, overridableProp);
|
|
1956
1999
|
if (!componentId) {
|
|
1957
2000
|
throw new Error("Component ID is required");
|
|
1958
2001
|
}
|
|
1959
2002
|
if (!overridableProps) {
|
|
1960
2003
|
throw new Error("Component has no overridable props");
|
|
1961
2004
|
}
|
|
2005
|
+
const {
|
|
2006
|
+
elementId: originElementId,
|
|
2007
|
+
widgetType,
|
|
2008
|
+
elType,
|
|
2009
|
+
propKey
|
|
2010
|
+
} = overridableProp.originPropFields ?? overridableProp;
|
|
2011
|
+
const type = elType === "widget" ? widgetType : elType;
|
|
2012
|
+
const elementType = getElementType2(type);
|
|
2013
|
+
const { elementId, overridesMapping } = useMemo(() => {
|
|
2014
|
+
const overridesChainResult = resolveOverridesChain({
|
|
2015
|
+
outerOverridableProp: overridableProp,
|
|
2016
|
+
outerInstanceId: componentInstanceElement.element.id
|
|
2017
|
+
});
|
|
2018
|
+
if (overridesChainResult.isChainBroken) {
|
|
2019
|
+
throw new OverrideControlInnerElementNotFoundError({
|
|
2020
|
+
context: { componentId, elementId: originElementId }
|
|
2021
|
+
});
|
|
2022
|
+
}
|
|
2023
|
+
return {
|
|
2024
|
+
elementId: overridesChainResult.innerElement.id,
|
|
2025
|
+
overridesMapping: overridesChainResult.overridesMapping
|
|
2026
|
+
};
|
|
2027
|
+
}, [overridableProp, componentInstanceElement.element.id, componentId, originElementId]);
|
|
2028
|
+
const settingsWithInnerOverrides = useMemo(() => {
|
|
2029
|
+
const settings = getElementSettings(
|
|
2030
|
+
elementId,
|
|
2031
|
+
Object.keys(elementType?.propsSchema ?? {})
|
|
2032
|
+
);
|
|
2033
|
+
return applyOverridesToSettings(settings, overridesMapping);
|
|
2034
|
+
}, [elementId, elementType?.propsSchema, overridesMapping]);
|
|
2035
|
+
const resolvedElementSettings = useMemo(() => {
|
|
2036
|
+
const withAllOverrides = applyOverridesToSettings(
|
|
2037
|
+
settingsWithInnerOverrides,
|
|
2038
|
+
formatOverridesToApply(overrides)
|
|
2039
|
+
);
|
|
2040
|
+
return unwrapOverridableSettings(withAllOverrides);
|
|
2041
|
+
}, [settingsWithInnerOverrides, overrides]);
|
|
1962
2042
|
const propType = getPropTypeForComponentOverride(overridableProp);
|
|
1963
|
-
if (!propType) {
|
|
2043
|
+
if (!propType || !elementType) {
|
|
1964
2044
|
return null;
|
|
1965
2045
|
}
|
|
1966
|
-
const
|
|
1967
|
-
const propValue = resolvedOverrideValue ?? recursiveOriginValue ?? overridableProp.originValue;
|
|
2046
|
+
const propValue = resolvedElementSettings[propKey];
|
|
1968
2047
|
const value = {
|
|
1969
2048
|
[overridableProp.overrideKey]: propValue
|
|
1970
2049
|
};
|
|
@@ -2002,8 +2081,13 @@ function OverrideControl({ overridableProp }) {
|
|
|
2002
2081
|
updateOverridableProp(wrappingComponentId, overridableValue, overridableProp.originPropFields);
|
|
2003
2082
|
return;
|
|
2004
2083
|
}
|
|
2005
|
-
const
|
|
2006
|
-
|
|
2084
|
+
const originPropFields = {
|
|
2085
|
+
elType: overridableProp.elType,
|
|
2086
|
+
widgetType: overridableProp.widgetType,
|
|
2087
|
+
propKey: overridableProp.propKey,
|
|
2088
|
+
elementId: overridableProp.elementId
|
|
2089
|
+
};
|
|
2090
|
+
updateOverridableProp(wrappingComponentId, overridableValue, originPropFields);
|
|
2007
2091
|
}
|
|
2008
2092
|
};
|
|
2009
2093
|
const { control, controlProps, layout } = getControlParams(
|
|
@@ -2011,23 +2095,6 @@ function OverrideControl({ overridableProp }) {
|
|
|
2011
2095
|
overridableProp?.originPropFields ?? overridableProp,
|
|
2012
2096
|
overridableProp.label
|
|
2013
2097
|
);
|
|
2014
|
-
const {
|
|
2015
|
-
elementId: originElementId,
|
|
2016
|
-
widgetType,
|
|
2017
|
-
elType,
|
|
2018
|
-
propKey
|
|
2019
|
-
} = overridableProp.originPropFields ?? overridableProp;
|
|
2020
|
-
const element = getContainerByOriginId(originElementId, componentInstanceElement.element.id);
|
|
2021
|
-
if (!element) {
|
|
2022
|
-
throw new OverrideControlInnerElementNotFoundError({ context: { componentId, elementId: originElementId } });
|
|
2023
|
-
}
|
|
2024
|
-
const elementId = element.id;
|
|
2025
|
-
const type = elType === "widget" ? widgetType : elType;
|
|
2026
|
-
const elementType = getElementType2(type);
|
|
2027
|
-
if (!elementType) {
|
|
2028
|
-
return null;
|
|
2029
|
-
}
|
|
2030
|
-
const settings = getElementSettings(elementId, Object.keys(elementType.propsSchema));
|
|
2031
2098
|
const propTypeSchema = createTopLevelObjectType({
|
|
2032
2099
|
schema: {
|
|
2033
2100
|
[overridableProp.overrideKey]: propType
|
|
@@ -2039,18 +2106,26 @@ function OverrideControl({ overridableProp }) {
|
|
|
2039
2106
|
value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
|
|
2040
2107
|
componentInstanceElement
|
|
2041
2108
|
},
|
|
2042
|
-
/* @__PURE__ */ React19.createElement(
|
|
2043
|
-
|
|
2109
|
+
/* @__PURE__ */ React19.createElement(
|
|
2110
|
+
ElementProvider,
|
|
2044
2111
|
{
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
isDisabled: () => {
|
|
2049
|
-
return false;
|
|
2050
|
-
}
|
|
2112
|
+
element: { id: elementId, type },
|
|
2113
|
+
elementType,
|
|
2114
|
+
settings: resolvedElementSettings
|
|
2051
2115
|
},
|
|
2052
|
-
/* @__PURE__ */ React19.createElement(
|
|
2053
|
-
|
|
2116
|
+
/* @__PURE__ */ React19.createElement(SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(
|
|
2117
|
+
PropProvider,
|
|
2118
|
+
{
|
|
2119
|
+
propType: propTypeSchema,
|
|
2120
|
+
value,
|
|
2121
|
+
setValue,
|
|
2122
|
+
isDisabled: () => {
|
|
2123
|
+
return false;
|
|
2124
|
+
}
|
|
2125
|
+
},
|
|
2126
|
+
/* @__PURE__ */ React19.createElement(PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React19.createElement(ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React19.createElement(Box8, { mb: 1.5 }, /* @__PURE__ */ React19.createElement(ControlTypeContainer, { layout }, layout !== "custom" && /* @__PURE__ */ React19.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React19.createElement(OriginalControl, { control, controlProps })))))
|
|
2127
|
+
))
|
|
2128
|
+
)
|
|
2054
2129
|
);
|
|
2055
2130
|
}
|
|
2056
2131
|
function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
|
|
@@ -2132,6 +2207,27 @@ function isValidOverride(overridableProps, override) {
|
|
|
2132
2207
|
const overridableKey = componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
|
|
2133
2208
|
return !!overridableProps.props[overridableKey];
|
|
2134
2209
|
}
|
|
2210
|
+
function formatOverridesToApply(overrides) {
|
|
2211
|
+
if (!overrides) {
|
|
2212
|
+
return {};
|
|
2213
|
+
}
|
|
2214
|
+
const result = {};
|
|
2215
|
+
for (const item of overrides) {
|
|
2216
|
+
const overridable = componentOverridablePropTypeUtil.extract(item);
|
|
2217
|
+
let override = item;
|
|
2218
|
+
if (overridable) {
|
|
2219
|
+
override = overridable.origin_value;
|
|
2220
|
+
}
|
|
2221
|
+
const extractedOverride = componentInstanceOverridePropTypeUtil.extract(override);
|
|
2222
|
+
if (!extractedOverride) {
|
|
2223
|
+
continue;
|
|
2224
|
+
}
|
|
2225
|
+
result[extractedOverride.override_key] = {
|
|
2226
|
+
value: extractedOverride.override_value
|
|
2227
|
+
};
|
|
2228
|
+
}
|
|
2229
|
+
return result;
|
|
2230
|
+
}
|
|
2135
2231
|
|
|
2136
2232
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
2137
2233
|
function OverridePropsGroup({ group }) {
|
|
@@ -2194,42 +2290,11 @@ function filterValidOverridableProps(overridableProps, instanceElementId) {
|
|
|
2194
2290
|
return { props: validProps, groups: filteredGroups };
|
|
2195
2291
|
}
|
|
2196
2292
|
function isExposedPropValid(prop, instanceElementId) {
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
return false;
|
|
2203
|
-
}
|
|
2204
|
-
const setting = innerComponentInstanceElement.settings?.get("component_instance") ?? null;
|
|
2205
|
-
const componentInstance = componentInstancePropTypeUtil.extract(setting);
|
|
2206
|
-
if (!componentInstance?.component_id?.value) {
|
|
2207
|
-
return false;
|
|
2208
|
-
}
|
|
2209
|
-
const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance.overrides) ?? void 0;
|
|
2210
|
-
const matchingOverride = findOverrideByOuterKey(overrides, prop.overrideKey);
|
|
2211
|
-
const innerOverrideInfo = extractInnerOverrideInfo(matchingOverride);
|
|
2212
|
-
if (!innerOverrideInfo) {
|
|
2213
|
-
return false;
|
|
2214
|
-
}
|
|
2215
|
-
const { componentId, innerOverrideKey } = innerOverrideInfo;
|
|
2216
|
-
const innerOverridableProp = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
|
|
2217
|
-
if (!innerOverridableProp) {
|
|
2218
|
-
return false;
|
|
2219
|
-
}
|
|
2220
|
-
return isExposedPropValid(innerOverridableProp, innerComponentInstanceElement.id);
|
|
2221
|
-
}
|
|
2222
|
-
function findOverrideByOuterKey(overrides, outerKey) {
|
|
2223
|
-
if (!overrides) {
|
|
2224
|
-
return null;
|
|
2225
|
-
}
|
|
2226
|
-
return overrides.find((override) => {
|
|
2227
|
-
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
2228
|
-
if (overridableValue) {
|
|
2229
|
-
return overridableValue.override_key === outerKey;
|
|
2230
|
-
}
|
|
2231
|
-
return override.value.override_key === outerKey;
|
|
2232
|
-
}) ?? null;
|
|
2293
|
+
const { isChainBroken } = resolveOverridesChain({
|
|
2294
|
+
outerOverridableProp: prop,
|
|
2295
|
+
outerInstanceId: instanceElementId
|
|
2296
|
+
});
|
|
2297
|
+
return !isChainBroken;
|
|
2233
2298
|
}
|
|
2234
2299
|
|
|
2235
2300
|
// src/hooks/use-sanitize-overridable-props.ts
|