@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.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
- function extractInnerOverrideInfo(override) {
1794
- if (!override) {
1795
- return null;
1796
- }
1797
- const overridableValue = componentOverridablePropTypeUtil.extract(override);
1798
- const innerOverride = overridableValue ? componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value) : componentInstanceOverridePropTypeUtil.extract(override);
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
- schema_source: schemaSource,
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
- return { componentId, innerOverrideKey, overrideValue };
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/components/instance-editing-panel/use-resolved-origin-value.tsx
1846
- function useResolvedOriginValue(override, overridableProp) {
1847
- const components = useSelector3(selectData);
1848
- return resolveOriginValue(components, override, overridableProp);
1849
- }
1850
- function resolveOriginValue(components, matchingOverride, overridableProp) {
1851
- const { originValue: fallbackOriginValue, originPropFields } = overridableProp;
1852
- if (hasValue(fallbackOriginValue)) {
1853
- return fallbackOriginValue;
1854
- }
1855
- if (matchingOverride) {
1856
- const result = getOriginFromOverride(components, matchingOverride);
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 { elementId, propKey } = originPropFields ?? {};
1862
- if (elementId && propKey) {
1863
- return findOriginValueByElementId(components, elementId, propKey);
1823
+ const currentInstance = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
1824
+ if (!currentInstance) {
1825
+ return { isChainBroken: true };
1864
1826
  }
1865
- return null;
1866
- }
1867
- function getOriginFromOverride(components, override) {
1868
- const innerOverrideInfo = extractInnerOverrideInfo(override);
1869
- if (!innerOverrideInfo) {
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
- if (prop?.originPropFields?.elementId) {
1878
- const targetPropKey = prop.originPropFields.propKey ?? prop.propKey;
1879
- const result = findOriginValueByElementId(components, prop.originPropFields.elementId, targetPropKey);
1880
- if (hasValue(result)) {
1881
- return result;
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 nestedOverridable = componentOverridablePropTypeUtil.extract(overrideValue);
1885
- if (nestedOverridable) {
1886
- return getOriginFromOverride(components, componentOverridablePropTypeUtil.create(nestedOverridable));
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 null;
1843
+ return resolveOverridesChain({
1844
+ outerOverridableProp: overridableProp,
1845
+ outerInstanceId: currentInstance.id,
1846
+ overridesMapping: mergedOverrides
1847
+ });
1889
1848
  }
1890
- function findOriginValueByElementId(components, targetElementId, targetPropKey, visited = /* @__PURE__ */ new Set()) {
1891
- for (const component of components) {
1892
- if (visited.has(component.id)) {
1893
- continue;
1894
- }
1895
- visited.add(component.id);
1896
- const matchingProp = Object.values(component.overridableProps?.props ?? {}).find(
1897
- ({ elementId, propKey }) => elementId === targetElementId && propKey === targetPropKey
1898
- );
1899
- if (!matchingProp) {
1900
- continue;
1901
- }
1902
- if (hasValue(matchingProp.originValue)) {
1903
- return matchingProp.originValue;
1904
- }
1905
- if (matchingProp.originPropFields?.elementId) {
1906
- const innerPropKey = matchingProp.originPropFields.propKey ?? targetPropKey;
1907
- return findOriginValueByElementId(
1908
- components,
1909
- matchingProp.originPropFields.elementId,
1910
- innerPropKey,
1911
- visited
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 null;
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 hasValue(value) {
1918
- return value !== null && value !== void 0;
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 resolvedOverrideValue = matchingOverride ? resolveOverridePropValue(matchingOverride) : null;
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 { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 } = overridableProp;
2006
- updateOverridableProp(wrappingComponentId, overridableValue, { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 });
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(ElementProvider, { element: { id: elementId, type }, elementType, settings }, /* @__PURE__ */ React19.createElement(SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(
2043
- PropProvider,
2109
+ /* @__PURE__ */ React19.createElement(
2110
+ ElementProvider,
2044
2111
  {
2045
- propType: propTypeSchema,
2046
- value,
2047
- setValue,
2048
- isDisabled: () => {
2049
- return false;
2050
- }
2112
+ element: { id: elementId, type },
2113
+ elementType,
2114
+ settings: resolvedElementSettings
2051
2115
  },
2052
- /* @__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 })))))
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
- if (!prop.originPropFields) {
2198
- return true;
2199
- }
2200
- const innerComponentInstanceElement = getContainerByOriginId(prop.elementId, instanceElementId);
2201
- if (!innerComponentInstanceElement) {
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