@elementor/editor-components 4.1.0-747 → 4.1.0-749
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.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +246 -179
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +230 -158
- package/dist/index.mjs.map +1 -1
- package/package.json +23 -23
- package/src/components/errors.ts +7 -0
- package/src/components/instance-editing-panel/override-prop-control.tsx +57 -143
- package/src/components/instance-editing-panel/utils/resolve-element-settings.ts +1 -1
- package/src/components/instance-editing-panel/utils/use-override-dependencies.ts +73 -0
- package/src/components/instance-editing-panel/utils/use-resolved-inner-element.ts +111 -0
- package/src/provider/component-instance-context.tsx +13 -3
- package/src/utils/resolve-override-prop-value.ts +9 -7
package/dist/index.mjs
CHANGED
|
@@ -1020,9 +1020,16 @@ var ComponentInstanceContext = createContext2(null);
|
|
|
1020
1020
|
function ComponentInstanceProvider({ children, ...props }) {
|
|
1021
1021
|
return /* @__PURE__ */ React13.createElement(ComponentInstanceContext.Provider, { value: props }, children);
|
|
1022
1022
|
}
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1023
|
+
function useComponentInstanceContext() {
|
|
1024
|
+
const context = useContext2(ComponentInstanceContext);
|
|
1025
|
+
if (!context) {
|
|
1026
|
+
throw new Error("useComponentInstanceContext must be used within a ComponentInstanceProvider");
|
|
1027
|
+
}
|
|
1028
|
+
return context;
|
|
1029
|
+
}
|
|
1030
|
+
var useComponentId = () => useComponentInstanceContext().componentId;
|
|
1031
|
+
var useComponentInstanceOverrides = () => useComponentInstanceContext().overrides;
|
|
1032
|
+
var useComponentOverridableProps = () => useComponentInstanceContext().overridableProps;
|
|
1026
1033
|
|
|
1027
1034
|
// src/components/instance-editing-panel/detach-action.tsx
|
|
1028
1035
|
import * as React15 from "react";
|
|
@@ -1524,7 +1531,6 @@ import { Box as Box9, Collapse, ListItemButton as ListItemButton2, ListItemText,
|
|
|
1524
1531
|
|
|
1525
1532
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
1526
1533
|
import * as React19 from "react";
|
|
1527
|
-
import { useMemo } from "react";
|
|
1528
1534
|
import {
|
|
1529
1535
|
ControlReplacementsProvider,
|
|
1530
1536
|
getControlReplacements,
|
|
@@ -1540,9 +1546,8 @@ import {
|
|
|
1540
1546
|
ElementProvider,
|
|
1541
1547
|
isDynamicPropValue,
|
|
1542
1548
|
SettingsField,
|
|
1543
|
-
useElement
|
|
1549
|
+
useElement as useElement2
|
|
1544
1550
|
} from "@elementor/editor-editing-panel";
|
|
1545
|
-
import { getElementSettings, getElementType as getElementType2 } from "@elementor/editor-elements";
|
|
1546
1551
|
import { Box as Box8 } from "@elementor/ui";
|
|
1547
1552
|
|
|
1548
1553
|
// src/hooks/use-controls-by-widget-type.ts
|
|
@@ -1774,6 +1779,133 @@ function getMatchingOverride(overrides, overrideKey) {
|
|
|
1774
1779
|
}) ?? null;
|
|
1775
1780
|
}
|
|
1776
1781
|
|
|
1782
|
+
// src/components/control-label.tsx
|
|
1783
|
+
import * as React18 from "react";
|
|
1784
|
+
import { ControlAdornments, ControlFormLabel } from "@elementor/editor-controls";
|
|
1785
|
+
import { Stack as Stack8 } from "@elementor/ui";
|
|
1786
|
+
var ControlLabel = ({ children, ...props }) => {
|
|
1787
|
+
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));
|
|
1788
|
+
};
|
|
1789
|
+
|
|
1790
|
+
// src/components/errors.ts
|
|
1791
|
+
import { createError } from "@elementor/utils";
|
|
1792
|
+
var OverrideControlInnerElementNotFoundError = createError({
|
|
1793
|
+
code: "override_control_inner_element_not_found",
|
|
1794
|
+
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.`
|
|
1795
|
+
});
|
|
1796
|
+
var OverrideControlPropTypeNotFoundError = createError({
|
|
1797
|
+
code: "override_control_prop_type_not_found",
|
|
1798
|
+
message: "Prop type not found for override control."
|
|
1799
|
+
});
|
|
1800
|
+
|
|
1801
|
+
// src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts
|
|
1802
|
+
function correctExposedEmptyOverride(newPropValue, matchingOverride) {
|
|
1803
|
+
const newOverridableValue = componentOverridablePropTypeUtil.extract(newPropValue);
|
|
1804
|
+
const isExposingEmptyOverride = newOverridableValue && matchingOverride === null;
|
|
1805
|
+
if (!isExposingEmptyOverride) {
|
|
1806
|
+
return newPropValue;
|
|
1807
|
+
}
|
|
1808
|
+
return componentOverridablePropTypeUtil.create({
|
|
1809
|
+
override_key: newOverridableValue.override_key,
|
|
1810
|
+
origin_value: null
|
|
1811
|
+
});
|
|
1812
|
+
}
|
|
1813
|
+
|
|
1814
|
+
// src/components/instance-editing-panel/utils/resolve-element-settings.ts
|
|
1815
|
+
function applyOverridesToSettings(elementSettings, overrides) {
|
|
1816
|
+
const result = {};
|
|
1817
|
+
for (const [propKey, propValue] of Object.entries(elementSettings)) {
|
|
1818
|
+
const overridable = componentOverridablePropTypeUtil.extract(propValue);
|
|
1819
|
+
if (!overridable) {
|
|
1820
|
+
result[propKey] = propValue;
|
|
1821
|
+
continue;
|
|
1822
|
+
}
|
|
1823
|
+
const override = overrides[overridable.override_key];
|
|
1824
|
+
if (!override) {
|
|
1825
|
+
result[propKey] = propValue;
|
|
1826
|
+
continue;
|
|
1827
|
+
}
|
|
1828
|
+
if (override.outermostKey && override.outermostKey !== overridable.override_key) {
|
|
1829
|
+
const originValue = overridable.origin_value;
|
|
1830
|
+
result[propKey] = componentOverridablePropTypeUtil.create({
|
|
1831
|
+
override_key: override.outermostKey,
|
|
1832
|
+
origin_value: override.value ?? originValue
|
|
1833
|
+
});
|
|
1834
|
+
} else {
|
|
1835
|
+
result[propKey] = override.value ?? propValue;
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
return result;
|
|
1839
|
+
}
|
|
1840
|
+
function unwrapOverridableSettings(elementSettings) {
|
|
1841
|
+
const result = {};
|
|
1842
|
+
for (const [propKey, propValue] of Object.entries(elementSettings)) {
|
|
1843
|
+
const overridable = componentOverridablePropTypeUtil.extract(propValue);
|
|
1844
|
+
if (!overridable) {
|
|
1845
|
+
result[propKey] = propValue;
|
|
1846
|
+
continue;
|
|
1847
|
+
}
|
|
1848
|
+
result[propKey] = overridable.origin_value;
|
|
1849
|
+
}
|
|
1850
|
+
return result;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
// src/components/instance-editing-panel/utils/use-override-dependencies.ts
|
|
1854
|
+
import { useMemo } from "react";
|
|
1855
|
+
import {
|
|
1856
|
+
extractDependencyEffect,
|
|
1857
|
+
extractOrderedDependencies,
|
|
1858
|
+
getElementSettingsWithDefaults,
|
|
1859
|
+
getUpdatedValues
|
|
1860
|
+
} from "@elementor/editor-editing-panel";
|
|
1861
|
+
function useOverrideControlDependencies({
|
|
1862
|
+
existingOverride,
|
|
1863
|
+
resolvedElementSettings,
|
|
1864
|
+
elementId,
|
|
1865
|
+
elementType,
|
|
1866
|
+
propKey
|
|
1867
|
+
}) {
|
|
1868
|
+
return useMemo(() => {
|
|
1869
|
+
const { isDisabled, isHidden } = extractDependencyEffect(
|
|
1870
|
+
propKey,
|
|
1871
|
+
elementType.propsSchema,
|
|
1872
|
+
resolvedElementSettings
|
|
1873
|
+
);
|
|
1874
|
+
const existingOverrideValue = existingOverride ? resolveOverridePropValue(existingOverride) : null;
|
|
1875
|
+
const settingsForDepsNewValuesCalculation = { ...resolvedElementSettings, [propKey]: existingOverrideValue };
|
|
1876
|
+
const resolvedSettingsWithDefaults = getElementSettingsWithDefaults(
|
|
1877
|
+
elementType.propsSchema,
|
|
1878
|
+
settingsForDepsNewValuesCalculation
|
|
1879
|
+
);
|
|
1880
|
+
const dependents = extractOrderedDependencies(elementType.dependenciesPerTargetMapping ?? {});
|
|
1881
|
+
const settingsWithDepsNewValues = getUpdatedValues(
|
|
1882
|
+
settingsForDepsNewValuesCalculation,
|
|
1883
|
+
dependents,
|
|
1884
|
+
elementType.propsSchema,
|
|
1885
|
+
resolvedSettingsWithDefaults,
|
|
1886
|
+
elementId
|
|
1887
|
+
);
|
|
1888
|
+
const overrideValue = settingsWithDepsNewValues[propKey];
|
|
1889
|
+
return {
|
|
1890
|
+
overrideValue,
|
|
1891
|
+
isDisabled,
|
|
1892
|
+
isHidden
|
|
1893
|
+
};
|
|
1894
|
+
}, [
|
|
1895
|
+
existingOverride,
|
|
1896
|
+
resolvedElementSettings,
|
|
1897
|
+
propKey,
|
|
1898
|
+
elementType.propsSchema,
|
|
1899
|
+
elementType.dependenciesPerTargetMapping,
|
|
1900
|
+
elementId
|
|
1901
|
+
]);
|
|
1902
|
+
}
|
|
1903
|
+
|
|
1904
|
+
// src/components/instance-editing-panel/utils/use-resolved-inner-element.ts
|
|
1905
|
+
import { useMemo as useMemo2 } from "react";
|
|
1906
|
+
import { useElement } from "@elementor/editor-editing-panel";
|
|
1907
|
+
import { getElementSettings, getElementType as getElementType2 } from "@elementor/editor-elements";
|
|
1908
|
+
|
|
1777
1909
|
// src/utils/get-container-by-origin-id.ts
|
|
1778
1910
|
import { getContainer as getContainer2 } from "@elementor/editor-elements";
|
|
1779
1911
|
function getContainerByOriginId(originElementId, instanceElementId) {
|
|
@@ -1908,109 +2040,18 @@ function findOverrideByOuterKey(overrides, outerKey) {
|
|
|
1908
2040
|
return override;
|
|
1909
2041
|
}
|
|
1910
2042
|
|
|
1911
|
-
// src/components/
|
|
1912
|
-
|
|
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
|
-
|
|
1926
|
-
// src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts
|
|
1927
|
-
function correctExposedEmptyOverride(newPropValue, matchingOverride) {
|
|
1928
|
-
const newOverridableValue = componentOverridablePropTypeUtil.extract(newPropValue);
|
|
1929
|
-
const isExposingEmptyOverride = newOverridableValue && matchingOverride === null;
|
|
1930
|
-
if (!isExposingEmptyOverride) {
|
|
1931
|
-
return newPropValue;
|
|
1932
|
-
}
|
|
1933
|
-
return componentOverridablePropTypeUtil.create({
|
|
1934
|
-
override_key: newOverridableValue.override_key,
|
|
1935
|
-
origin_value: null
|
|
1936
|
-
});
|
|
1937
|
-
}
|
|
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
|
-
|
|
1978
|
-
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
1979
|
-
function OverridePropControl({ overrideKey }) {
|
|
1980
|
-
const overridableProps = useComponentOverridableProps();
|
|
1981
|
-
const overridableProp = overridableProps?.props[overrideKey];
|
|
1982
|
-
if (!overridableProp) {
|
|
1983
|
-
return null;
|
|
1984
|
-
}
|
|
1985
|
-
return /* @__PURE__ */ React19.createElement(SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(OverrideControl, { overridableProp }));
|
|
1986
|
-
}
|
|
1987
|
-
function OverrideControl({ overridableProp }) {
|
|
2043
|
+
// src/components/instance-editing-panel/utils/use-resolved-inner-element.ts
|
|
2044
|
+
function useResolvedInnerElement(overridableProp) {
|
|
1988
2045
|
const componentInstanceElement = useElement();
|
|
1989
|
-
const { value: instanceValue, setValue: setInstanceValue } = useBoundProp(componentInstancePropTypeUtil);
|
|
1990
|
-
const wrappingComponentId = useCurrentComponentId();
|
|
1991
2046
|
const componentId = useComponentId();
|
|
1992
|
-
const overridableProps = useComponentOverridableProps();
|
|
1993
2047
|
const overrides = useComponentInstanceOverrides();
|
|
1994
|
-
const
|
|
1995
|
-
overridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType
|
|
1996
|
-
);
|
|
1997
|
-
const controlReplacements = getControlReplacements();
|
|
1998
|
-
const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
|
|
1999
|
-
if (!componentId) {
|
|
2000
|
-
throw new Error("Component ID is required");
|
|
2001
|
-
}
|
|
2002
|
-
if (!overridableProps) {
|
|
2003
|
-
throw new Error("Component has no overridable props");
|
|
2004
|
-
}
|
|
2005
|
-
const {
|
|
2006
|
-
elementId: originElementId,
|
|
2007
|
-
widgetType,
|
|
2008
|
-
elType,
|
|
2009
|
-
propKey
|
|
2010
|
-
} = overridableProp.originPropFields ?? overridableProp;
|
|
2048
|
+
const { elementId: originElementId, widgetType, elType } = overridableProp.originPropFields ?? overridableProp;
|
|
2011
2049
|
const type = elType === "widget" ? widgetType : elType;
|
|
2012
2050
|
const elementType = getElementType2(type);
|
|
2013
|
-
|
|
2051
|
+
if (!elementType) {
|
|
2052
|
+
throw new Error(`Element type not found for ${type}`);
|
|
2053
|
+
}
|
|
2054
|
+
const { elementId, overridesMapping } = useMemo2(() => {
|
|
2014
2055
|
const overridesChainResult = resolveOverridesChain({
|
|
2015
2056
|
outerOverridableProp: overridableProp,
|
|
2016
2057
|
outerInstanceId: componentInstanceElement.element.id
|
|
@@ -2025,27 +2066,90 @@ function OverrideControl({ overridableProp }) {
|
|
|
2025
2066
|
overridesMapping: overridesChainResult.overridesMapping
|
|
2026
2067
|
};
|
|
2027
2068
|
}, [overridableProp, componentInstanceElement.element.id, componentId, originElementId]);
|
|
2028
|
-
const settingsWithInnerOverrides =
|
|
2069
|
+
const settingsWithInnerOverrides = useMemo2(() => {
|
|
2029
2070
|
const settings = getElementSettings(
|
|
2030
2071
|
elementId,
|
|
2031
2072
|
Object.keys(elementType?.propsSchema ?? {})
|
|
2032
2073
|
);
|
|
2033
2074
|
return applyOverridesToSettings(settings, overridesMapping);
|
|
2034
2075
|
}, [elementId, elementType?.propsSchema, overridesMapping]);
|
|
2035
|
-
const resolvedElementSettings =
|
|
2076
|
+
const resolvedElementSettings = useMemo2(() => {
|
|
2036
2077
|
const withAllOverrides = applyOverridesToSettings(
|
|
2037
2078
|
settingsWithInnerOverrides,
|
|
2038
2079
|
formatOverridesToApply(overrides)
|
|
2039
2080
|
);
|
|
2040
2081
|
return unwrapOverridableSettings(withAllOverrides);
|
|
2041
2082
|
}, [settingsWithInnerOverrides, overrides]);
|
|
2083
|
+
return {
|
|
2084
|
+
elementId,
|
|
2085
|
+
elementType,
|
|
2086
|
+
resolvedOriginValues: settingsWithInnerOverrides,
|
|
2087
|
+
resolvedElementSettings
|
|
2088
|
+
};
|
|
2089
|
+
}
|
|
2090
|
+
function formatOverridesToApply(overrides) {
|
|
2091
|
+
if (!overrides) {
|
|
2092
|
+
return {};
|
|
2093
|
+
}
|
|
2094
|
+
const result = {};
|
|
2095
|
+
for (const item of overrides) {
|
|
2096
|
+
const overridable = componentOverridablePropTypeUtil.extract(item);
|
|
2097
|
+
let override = item;
|
|
2098
|
+
if (overridable) {
|
|
2099
|
+
override = overridable.origin_value;
|
|
2100
|
+
}
|
|
2101
|
+
const extractedOverride = componentInstanceOverridePropTypeUtil.extract(override);
|
|
2102
|
+
if (!extractedOverride) {
|
|
2103
|
+
continue;
|
|
2104
|
+
}
|
|
2105
|
+
result[extractedOverride.override_key] = {
|
|
2106
|
+
value: extractedOverride.override_value
|
|
2107
|
+
};
|
|
2108
|
+
}
|
|
2109
|
+
return result;
|
|
2110
|
+
}
|
|
2111
|
+
|
|
2112
|
+
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
2113
|
+
function OverridePropControl({ overrideKey }) {
|
|
2114
|
+
const overridableProps = useComponentOverridableProps();
|
|
2115
|
+
const overridableProp = overridableProps.props[overrideKey];
|
|
2116
|
+
if (!overridableProp) {
|
|
2117
|
+
return null;
|
|
2118
|
+
}
|
|
2119
|
+
return /* @__PURE__ */ React19.createElement(SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(OverrideControl, { overridableProp }));
|
|
2120
|
+
}
|
|
2121
|
+
function OverrideControl({ overridableProp }) {
|
|
2122
|
+
const componentInstanceElement = useElement2();
|
|
2123
|
+
const { value: instanceValue, setValue: setInstanceValue } = useBoundProp(componentInstancePropTypeUtil);
|
|
2124
|
+
const wrappingComponentId = useCurrentComponentId();
|
|
2125
|
+
const componentId = useComponentId();
|
|
2126
|
+
const overridableProps = useComponentOverridableProps();
|
|
2127
|
+
const overrides = useComponentInstanceOverrides();
|
|
2128
|
+
const controls = useControlsByWidgetType(
|
|
2129
|
+
overridableProp.originPropFields?.widgetType ?? overridableProp.widgetType
|
|
2130
|
+
);
|
|
2131
|
+
const controlReplacements = getControlReplacements();
|
|
2132
|
+
const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
|
|
2133
|
+
const { propKey } = overridableProp.originPropFields ?? overridableProp;
|
|
2042
2134
|
const propType = getPropTypeForComponentOverride(overridableProp);
|
|
2043
|
-
if (!propType
|
|
2135
|
+
if (!propType) {
|
|
2136
|
+
throw new OverrideControlPropTypeNotFoundError({ context: { overridableProp } });
|
|
2137
|
+
}
|
|
2138
|
+
const { elementId, elementType, resolvedElementSettings, resolvedOriginValues } = useResolvedInnerElement(overridableProp);
|
|
2139
|
+
const { overrideValue, isDisabled, isHidden } = useOverrideControlDependencies({
|
|
2140
|
+
existingOverride: matchingOverride,
|
|
2141
|
+
resolvedElementSettings,
|
|
2142
|
+
elementType,
|
|
2143
|
+
elementId,
|
|
2144
|
+
propKey
|
|
2145
|
+
});
|
|
2146
|
+
if (isHidden) {
|
|
2044
2147
|
return null;
|
|
2045
2148
|
}
|
|
2046
2149
|
const { propValue, placeholderValue } = resolveValueAndPlaceholder(
|
|
2047
2150
|
matchingOverride,
|
|
2048
|
-
|
|
2151
|
+
overrideValue,
|
|
2152
|
+
resolvedOriginValues,
|
|
2049
2153
|
propKey
|
|
2050
2154
|
);
|
|
2051
2155
|
const value = {
|
|
@@ -2054,14 +2158,15 @@ function OverrideControl({ overridableProp }) {
|
|
|
2054
2158
|
const placeholder = {
|
|
2055
2159
|
[overridableProp.overrideKey]: placeholderValue
|
|
2056
2160
|
};
|
|
2161
|
+
const { control, controlProps, layout } = getControlParams(
|
|
2162
|
+
controls,
|
|
2163
|
+
overridableProp.originPropFields ?? overridableProp,
|
|
2164
|
+
overridableProp.label
|
|
2165
|
+
);
|
|
2166
|
+
const propTypeSchema = createTopLevelObjectType({
|
|
2167
|
+
schema: { [overridableProp.overrideKey]: propType }
|
|
2168
|
+
});
|
|
2057
2169
|
const setValue = (newValue) => {
|
|
2058
|
-
if (!overridableProps) {
|
|
2059
|
-
setInstanceValue({
|
|
2060
|
-
...instanceValue,
|
|
2061
|
-
overrides: void 0
|
|
2062
|
-
});
|
|
2063
|
-
return;
|
|
2064
|
-
}
|
|
2065
2170
|
let newPropValue = getTempNewValueForDynamicProp(
|
|
2066
2171
|
propType,
|
|
2067
2172
|
propValue,
|
|
@@ -2097,16 +2202,6 @@ function OverrideControl({ overridableProp }) {
|
|
|
2097
2202
|
updateOverridableProp(wrappingComponentId, overridableValue, originPropFields);
|
|
2098
2203
|
}
|
|
2099
2204
|
};
|
|
2100
|
-
const { control, controlProps, layout } = getControlParams(
|
|
2101
|
-
controls,
|
|
2102
|
-
overridableProp?.originPropFields ?? overridableProp,
|
|
2103
|
-
overridableProp.label
|
|
2104
|
-
);
|
|
2105
|
-
const propTypeSchema = createTopLevelObjectType({
|
|
2106
|
-
schema: {
|
|
2107
|
-
[overridableProp.overrideKey]: propType
|
|
2108
|
-
}
|
|
2109
|
-
});
|
|
2110
2205
|
return /* @__PURE__ */ React19.createElement(
|
|
2111
2206
|
OverridablePropProvider,
|
|
2112
2207
|
{
|
|
@@ -2116,32 +2211,30 @@ function OverrideControl({ overridableProp }) {
|
|
|
2116
2211
|
/* @__PURE__ */ React19.createElement(
|
|
2117
2212
|
ElementProvider,
|
|
2118
2213
|
{
|
|
2119
|
-
element: { id: elementId, type },
|
|
2214
|
+
element: { id: elementId, type: elementType.key },
|
|
2120
2215
|
elementType,
|
|
2121
2216
|
settings: resolvedElementSettings
|
|
2122
2217
|
},
|
|
2123
|
-
/* @__PURE__ */ React19.createElement(
|
|
2218
|
+
/* @__PURE__ */ React19.createElement(
|
|
2124
2219
|
PropProvider,
|
|
2125
2220
|
{
|
|
2126
2221
|
propType: propTypeSchema,
|
|
2127
2222
|
value,
|
|
2128
2223
|
setValue,
|
|
2129
2224
|
placeholder,
|
|
2130
|
-
isDisabled
|
|
2131
|
-
return false;
|
|
2132
|
-
}
|
|
2225
|
+
isDisabled
|
|
2133
2226
|
},
|
|
2134
2227
|
/* @__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 })))))
|
|
2135
|
-
)
|
|
2228
|
+
)
|
|
2136
2229
|
)
|
|
2137
2230
|
);
|
|
2138
2231
|
}
|
|
2139
|
-
function resolveValueAndPlaceholder(matchingOverride,
|
|
2140
|
-
const
|
|
2141
|
-
const placeholderSettings = unwrapOverridableSettings(settingsWithInnerOverrides);
|
|
2232
|
+
function resolveValueAndPlaceholder(matchingOverride, overrideValue, resolvedOriginValues, propKey) {
|
|
2233
|
+
const placeholderSettings = unwrapOverridableSettings(resolvedOriginValues);
|
|
2142
2234
|
const inheritedValue = placeholderSettings[propKey] ?? null;
|
|
2143
2235
|
const isInheritedDynamic = isDynamicPropValue(inheritedValue);
|
|
2144
|
-
const
|
|
2236
|
+
const shouldUseInheritedAsValue = isInheritedDynamic && !matchingOverride;
|
|
2237
|
+
const propValue = shouldUseInheritedAsValue ? inheritedValue : overrideValue;
|
|
2145
2238
|
const placeholderValue = matchingOverride || isInheritedDynamic ? null : inheritedValue;
|
|
2146
2239
|
return { propValue, placeholderValue };
|
|
2147
2240
|
}
|
|
@@ -2224,27 +2317,6 @@ function isValidOverride(overridableProps, override) {
|
|
|
2224
2317
|
const overridableKey = componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
|
|
2225
2318
|
return !!overridableProps.props[overridableKey];
|
|
2226
2319
|
}
|
|
2227
|
-
function formatOverridesToApply(overrides) {
|
|
2228
|
-
if (!overrides) {
|
|
2229
|
-
return {};
|
|
2230
|
-
}
|
|
2231
|
-
const result = {};
|
|
2232
|
-
for (const item of overrides) {
|
|
2233
|
-
const overridable = componentOverridablePropTypeUtil.extract(item);
|
|
2234
|
-
let override = item;
|
|
2235
|
-
if (overridable) {
|
|
2236
|
-
override = overridable.origin_value;
|
|
2237
|
-
}
|
|
2238
|
-
const extractedOverride = componentInstanceOverridePropTypeUtil.extract(override);
|
|
2239
|
-
if (!extractedOverride) {
|
|
2240
|
-
continue;
|
|
2241
|
-
}
|
|
2242
|
-
result[extractedOverride.override_key] = {
|
|
2243
|
-
value: extractedOverride.override_value
|
|
2244
|
-
};
|
|
2245
|
-
}
|
|
2246
|
-
return result;
|
|
2247
|
-
}
|
|
2248
2320
|
|
|
2249
2321
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
2250
2322
|
function OverridePropsGroup({ group }) {
|
|
@@ -2284,7 +2356,7 @@ function InstancePanelBody({ groups, isEmpty, emptyState, componentInstanceId })
|
|
|
2284
2356
|
}
|
|
2285
2357
|
|
|
2286
2358
|
// src/components/instance-editing-panel/use-instance-panel-data.ts
|
|
2287
|
-
import { useElement as
|
|
2359
|
+
import { useElement as useElement3 } from "@elementor/editor-editing-panel";
|
|
2288
2360
|
|
|
2289
2361
|
// src/utils/filter-valid-overridable-props.ts
|
|
2290
2362
|
function filterValidOverridableProps(overridableProps, instanceElementId) {
|
|
@@ -2344,7 +2416,7 @@ function useInstancePanelData() {
|
|
|
2344
2416
|
return { componentId, component, overrides, overridableProps, groups, isEmpty, componentInstanceId };
|
|
2345
2417
|
}
|
|
2346
2418
|
function useComponentInstanceSettings() {
|
|
2347
|
-
const { element, settings } =
|
|
2419
|
+
const { element, settings } = useElement3();
|
|
2348
2420
|
return { element, settings: componentInstancePropTypeUtil.extract(settings.component_instance) };
|
|
2349
2421
|
}
|
|
2350
2422
|
|