@elementor/editor-components 4.1.0-741 → 4.1.0-743

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -94,7 +94,7 @@ var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
94
94
  var import_editor_elements_panel = require("@elementor/editor-elements-panel");
95
95
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
96
96
  var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
97
- var import_store36 = require("@elementor/store");
97
+ var import_store34 = require("@elementor/store");
98
98
  var import_i18n16 = require("@wordpress/i18n");
99
99
 
100
100
  // src/component-instance-transformer.ts
@@ -1598,13 +1598,14 @@ var import_ui14 = require("@elementor/ui");
1598
1598
 
1599
1599
  // src/components/instance-editing-panel/override-props-group.tsx
1600
1600
  var React20 = __toESM(require("react"));
1601
- var import_react7 = require("react");
1601
+ var import_react8 = require("react");
1602
1602
  var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
1603
1603
  var import_editor_ui6 = require("@elementor/editor-ui");
1604
1604
  var import_ui13 = require("@elementor/ui");
1605
1605
 
1606
1606
  // src/components/instance-editing-panel/override-prop-control.tsx
1607
1607
  var React19 = __toESM(require("react"));
1608
+ var import_react7 = require("react");
1608
1609
  var import_editor_controls2 = require("@elementor/editor-controls");
1609
1610
  var import_editor_editing_panel = require("@elementor/editor-editing-panel");
1610
1611
  var import_editor_elements7 = require("@elementor/editor-elements");
@@ -1810,26 +1811,8 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
1810
1811
  componentsActions.setOverridableProps(componentId, newOverridableProps);
1811
1812
  }
1812
1813
 
1813
- // src/utils/get-container-by-origin-id.ts
1814
- var import_editor_elements5 = require("@elementor/editor-elements");
1815
- function getContainerByOriginId(originElementId, instanceElementId) {
1816
- if (!instanceElementId) {
1817
- return (0, import_editor_elements5.getContainer)(originElementId);
1818
- }
1819
- const instanceContainer = (0, import_editor_elements5.getContainer)(instanceElementId);
1820
- if (!instanceContainer) {
1821
- return null;
1822
- }
1823
- const legacyWindow = window;
1824
- return legacyWindow.elementor?.getContainerByKeyValue?.({
1825
- key: "originId",
1826
- value: originElementId,
1827
- parent: instanceContainer.view
1828
- }) ?? null;
1829
- }
1830
-
1831
1814
  // src/utils/get-prop-type-for-component-override.ts
1832
- var import_editor_elements6 = require("@elementor/editor-elements");
1815
+ var import_editor_elements5 = require("@elementor/editor-elements");
1833
1816
  var getPropTypeForComponentOverride = (overridableProp) => {
1834
1817
  if (overridableProp.originPropFields) {
1835
1818
  return getPropType(overridableProp.originPropFields);
@@ -1841,7 +1824,7 @@ var getPropTypeForComponentOverride = (overridableProp) => {
1841
1824
  });
1842
1825
  };
1843
1826
  function getPropType({ widgetType, propKey }) {
1844
- const widgetPropsSchema = (0, import_editor_elements6.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
1827
+ const widgetPropsSchema = (0, import_editor_elements5.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
1845
1828
  return widgetPropsSchema?.[propKey];
1846
1829
  }
1847
1830
 
@@ -1856,45 +1839,25 @@ function getMatchingOverride(overrides, overrideKey) {
1856
1839
  return override.value.override_key === overrideKey;
1857
1840
  }) ?? null;
1858
1841
  }
1859
- function extractInnerOverrideInfo(override) {
1860
- if (!override) {
1861
- return null;
1862
- }
1863
- const overridableValue = componentOverridablePropTypeUtil.extract(override);
1864
- const innerOverride = overridableValue ? componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value) : componentInstanceOverridePropTypeUtil.extract(override);
1865
- if (!innerOverride) {
1866
- return null;
1842
+
1843
+ // src/utils/get-container-by-origin-id.ts
1844
+ var import_editor_elements6 = require("@elementor/editor-elements");
1845
+ function getContainerByOriginId(originElementId, instanceElementId) {
1846
+ if (!instanceElementId) {
1847
+ return (0, import_editor_elements6.getContainer)(originElementId);
1867
1848
  }
1868
- const {
1869
- schema_source: schemaSource,
1870
- override_key: innerOverrideKey,
1871
- override_value: overrideValue
1872
- } = innerOverride;
1873
- const componentId = schemaSource?.id;
1874
- if (!componentId || !innerOverrideKey) {
1849
+ const instanceContainer = (0, import_editor_elements6.getContainer)(instanceElementId);
1850
+ if (!instanceContainer) {
1875
1851
  return null;
1876
1852
  }
1877
- return { componentId, innerOverrideKey, overrideValue };
1853
+ const legacyWindow = window;
1854
+ return legacyWindow.elementor?.getContainerByKeyValue?.({
1855
+ key: "originId",
1856
+ value: originElementId,
1857
+ parent: instanceContainer.view
1858
+ }) ?? null;
1878
1859
  }
1879
1860
 
1880
- // src/components/control-label.tsx
1881
- var React18 = __toESM(require("react"));
1882
- var import_editor_controls = require("@elementor/editor-controls");
1883
- var import_ui11 = require("@elementor/ui");
1884
- var ControlLabel = ({ children, ...props }) => {
1885
- return /* @__PURE__ */ React18.createElement(import_ui11.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React18.createElement(import_editor_controls.ControlFormLabel, { ...props }, children), /* @__PURE__ */ React18.createElement(import_editor_controls.ControlAdornments, null));
1886
- };
1887
-
1888
- // src/components/errors.ts
1889
- var import_utils3 = require("@elementor/utils");
1890
- var OverrideControlInnerElementNotFoundError = (0, import_utils3.createError)({
1891
- code: "override_control_inner_element_not_found",
1892
- 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.`
1893
- });
1894
-
1895
- // src/components/instance-editing-panel/use-resolved-origin-value.tsx
1896
- var import_store18 = require("@elementor/store");
1897
-
1898
1861
  // src/utils/get-overridable-prop.ts
1899
1862
  var import_store16 = require("@elementor/store");
1900
1863
  function getOverridableProp({
@@ -1908,82 +1871,124 @@ function getOverridableProp({
1908
1871
  return overridableProps.props[overrideKey];
1909
1872
  }
1910
1873
 
1911
- // src/components/instance-editing-panel/use-resolved-origin-value.tsx
1912
- function useResolvedOriginValue(override, overridableProp) {
1913
- const components = (0, import_store18.__useSelector)(selectData);
1914
- return resolveOriginValue(components, override, overridableProp);
1915
- }
1916
- function resolveOriginValue(components, matchingOverride, overridableProp) {
1917
- const { originValue: fallbackOriginValue, originPropFields } = overridableProp;
1918
- if (hasValue(fallbackOriginValue)) {
1919
- return fallbackOriginValue;
1920
- }
1921
- if (matchingOverride) {
1922
- const result = getOriginFromOverride(components, matchingOverride);
1923
- if (hasValue(result)) {
1924
- return result;
1874
+ // src/utils/resolve-overrides-chain.ts
1875
+ function resolveOverridesChain({
1876
+ outerOverridableProp,
1877
+ outerInstanceId,
1878
+ overridesMapping = {}
1879
+ }) {
1880
+ if (!outerOverridableProp.originPropFields) {
1881
+ const innerElement = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
1882
+ if (!innerElement) {
1883
+ throw new Error(
1884
+ `Inner element not found inside instance. elementId: ${outerOverridableProp.elementId}, instanceId: ${outerInstanceId}`
1885
+ );
1925
1886
  }
1887
+ return { isChainBroken: false, innerElement, overridesMapping };
1926
1888
  }
1927
- const { elementId, propKey } = originPropFields ?? {};
1928
- if (elementId && propKey) {
1929
- return findOriginValueByElementId(components, elementId, propKey);
1930
- }
1931
- return null;
1932
- }
1933
- function getOriginFromOverride(components, override) {
1934
- const innerOverrideInfo = extractInnerOverrideInfo(override);
1935
- if (!innerOverrideInfo) {
1936
- return null;
1889
+ const currentInstance = getContainerByOriginId(outerOverridableProp.elementId, outerInstanceId);
1890
+ if (!currentInstance) {
1891
+ return { isChainBroken: true };
1937
1892
  }
1938
- const { componentId, innerOverrideKey, overrideValue } = innerOverrideInfo;
1939
- const prop = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
1940
- if (hasValue(prop?.originValue)) {
1941
- return prop.originValue;
1893
+ const { componentId, overrides } = extractComponentInstanceSettings(currentInstance);
1894
+ if (!componentId) {
1895
+ throw new Error(
1896
+ `Component ID not found for current instance. currentInstanceId: ${currentInstance.id}. outerInstanceId: ${outerInstanceId}`
1897
+ );
1942
1898
  }
1943
- if (prop?.originPropFields?.elementId) {
1944
- const targetPropKey = prop.originPropFields.propKey ?? prop.propKey;
1945
- const result = findOriginValueByElementId(components, prop.originPropFields.elementId, targetPropKey);
1946
- if (hasValue(result)) {
1947
- return result;
1948
- }
1899
+ const mergedOverrides = buildOverridesMap(overridesMapping, overrides ?? []);
1900
+ const override = findOverrideByOuterKey(overrides, outerOverridableProp.overrideKey);
1901
+ const overrideKey = componentInstanceOverridePropTypeUtil.extract(override)?.override_key;
1902
+ if (!override || !overrideKey) {
1903
+ return { isChainBroken: true };
1949
1904
  }
1950
- const nestedOverridable = componentOverridablePropTypeUtil.extract(overrideValue);
1951
- if (nestedOverridable) {
1952
- return getOriginFromOverride(components, componentOverridablePropTypeUtil.create(nestedOverridable));
1905
+ const overridableProp = getOverridableProp({ componentId, overrideKey });
1906
+ if (!overridableProp) {
1907
+ throw new Error(`Overridable prop not found. componentId: ${componentId}, overrideKey: ${overrideKey}`);
1953
1908
  }
1954
- return null;
1909
+ return resolveOverridesChain({
1910
+ outerOverridableProp: overridableProp,
1911
+ outerInstanceId: currentInstance.id,
1912
+ overridesMapping: mergedOverrides
1913
+ });
1955
1914
  }
1956
- function findOriginValueByElementId(components, targetElementId, targetPropKey, visited = /* @__PURE__ */ new Set()) {
1957
- for (const component of components) {
1958
- if (visited.has(component.id)) {
1959
- continue;
1960
- }
1961
- visited.add(component.id);
1962
- const matchingProp = Object.values(component.overridableProps?.props ?? {}).find(
1963
- ({ elementId, propKey }) => elementId === targetElementId && propKey === targetPropKey
1964
- );
1965
- if (!matchingProp) {
1966
- continue;
1967
- }
1968
- if (hasValue(matchingProp.originValue)) {
1969
- return matchingProp.originValue;
1970
- }
1971
- if (matchingProp.originPropFields?.elementId) {
1972
- const innerPropKey = matchingProp.originPropFields.propKey ?? targetPropKey;
1973
- return findOriginValueByElementId(
1974
- components,
1975
- matchingProp.originPropFields.elementId,
1976
- innerPropKey,
1977
- visited
1978
- );
1915
+ function buildOverridesMap(existing, levelOverrides) {
1916
+ const result = { ...existing };
1917
+ for (const item of levelOverrides) {
1918
+ const overridableValue = componentOverridablePropTypeUtil.extract(item);
1919
+ if (overridableValue) {
1920
+ const override = componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
1921
+ if (!override) {
1922
+ continue;
1923
+ }
1924
+ const outerKey = overridableValue.override_key;
1925
+ const innerKey = override.override_key;
1926
+ const innerValue = override.override_value;
1927
+ const higherLevelOverride = existing[outerKey];
1928
+ if (higherLevelOverride) {
1929
+ const outerValue = higherLevelOverride.value;
1930
+ result[innerKey] = {
1931
+ value: outerValue ?? innerValue,
1932
+ outermostKey: higherLevelOverride.outermostKey ?? outerKey
1933
+ };
1934
+ continue;
1935
+ }
1936
+ result[innerKey] = {
1937
+ value: innerValue,
1938
+ outermostKey: outerKey
1939
+ };
1940
+ } else {
1941
+ const override = componentInstanceOverridePropTypeUtil.extract(item);
1942
+ if (!override) {
1943
+ continue;
1944
+ }
1945
+ const key = override.override_key;
1946
+ const value = override.override_value;
1947
+ result[key] = { value };
1979
1948
  }
1980
1949
  }
1981
- return null;
1950
+ return result;
1951
+ }
1952
+ function extractComponentInstanceSettings(element) {
1953
+ const instanceSetting = element.settings?.get("component_instance");
1954
+ const instanceValue = componentInstancePropTypeUtil.extract(instanceSetting);
1955
+ const componentId = instanceValue?.component_id?.value;
1956
+ const overrides = componentInstanceOverridesPropTypeUtil.extract(instanceValue?.overrides);
1957
+ return { componentId, overrides };
1982
1958
  }
1983
- function hasValue(value) {
1984
- return value !== null && value !== void 0;
1959
+ function findOverrideByOuterKey(overrides, outerKey) {
1960
+ if (!overrides) {
1961
+ return null;
1962
+ }
1963
+ const overridableOverride = overrides.find((item) => {
1964
+ const overridableValue = componentOverridablePropTypeUtil.extract(item);
1965
+ if (!overridableValue) {
1966
+ return false;
1967
+ }
1968
+ return overridableValue.override_key === outerKey;
1969
+ });
1970
+ const override = componentOverridablePropTypeUtil.extract(overridableOverride)?.origin_value;
1971
+ if (!override || !componentInstanceOverridePropTypeUtil.isValid(override)) {
1972
+ return null;
1973
+ }
1974
+ return override;
1985
1975
  }
1986
1976
 
1977
+ // src/components/control-label.tsx
1978
+ var React18 = __toESM(require("react"));
1979
+ var import_editor_controls = require("@elementor/editor-controls");
1980
+ var import_ui11 = require("@elementor/ui");
1981
+ var ControlLabel = ({ children, ...props }) => {
1982
+ return /* @__PURE__ */ React18.createElement(import_ui11.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React18.createElement(import_editor_controls.ControlFormLabel, { ...props }, children), /* @__PURE__ */ React18.createElement(import_editor_controls.ControlAdornments, null));
1983
+ };
1984
+
1985
+ // src/components/errors.ts
1986
+ var import_utils3 = require("@elementor/utils");
1987
+ var OverrideControlInnerElementNotFoundError = (0, import_utils3.createError)({
1988
+ code: "override_control_inner_element_not_found",
1989
+ 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.`
1990
+ });
1991
+
1987
1992
  // src/components/instance-editing-panel/utils/correct-exposed-empty-override.ts
1988
1993
  function correctExposedEmptyOverride(newPropValue, matchingOverride) {
1989
1994
  const newOverridableValue = componentOverridablePropTypeUtil.extract(newPropValue);
@@ -1997,6 +2002,45 @@ function correctExposedEmptyOverride(newPropValue, matchingOverride) {
1997
2002
  });
1998
2003
  }
1999
2004
 
2005
+ // src/components/instance-editing-panel/utils/resolve-element-settings.ts
2006
+ function applyOverridesToSettings(elementSettings, overrides) {
2007
+ const result = {};
2008
+ for (const [propKey, propValue] of Object.entries(elementSettings)) {
2009
+ const overridable = componentOverridablePropTypeUtil.extract(propValue);
2010
+ if (!overridable) {
2011
+ result[propKey] = propValue;
2012
+ continue;
2013
+ }
2014
+ const override = overrides[overridable.override_key];
2015
+ if (!override) {
2016
+ result[propKey] = propValue;
2017
+ continue;
2018
+ }
2019
+ if (override.outermostKey && override.outermostKey !== overridable.override_key) {
2020
+ const originValue = overridable.origin_value;
2021
+ result[propKey] = componentOverridablePropTypeUtil.create({
2022
+ override_key: override.outermostKey,
2023
+ origin_value: override.value ?? originValue
2024
+ });
2025
+ } else {
2026
+ result[propKey] = override.value ?? propValue;
2027
+ }
2028
+ }
2029
+ return result;
2030
+ }
2031
+ function unwrapOverridableSettings(elementSettings) {
2032
+ const result = {};
2033
+ for (const [propKey, propValue] of Object.entries(elementSettings)) {
2034
+ const overridable = componentOverridablePropTypeUtil.extract(propValue);
2035
+ if (!overridable) {
2036
+ result[propKey] = propValue;
2037
+ continue;
2038
+ }
2039
+ result[propKey] = overridable.origin_value;
2040
+ }
2041
+ return result;
2042
+ }
2043
+
2000
2044
  // src/components/instance-editing-panel/override-prop-control.tsx
2001
2045
  function OverridePropControl({ overrideKey }) {
2002
2046
  const overridableProps = useComponentOverridableProps();
@@ -2018,19 +2062,54 @@ function OverrideControl({ overridableProp }) {
2018
2062
  );
2019
2063
  const controlReplacements = (0, import_editor_controls2.getControlReplacements)();
2020
2064
  const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
2021
- const recursiveOriginValue = useResolvedOriginValue(matchingOverride, overridableProp);
2022
2065
  if (!componentId) {
2023
2066
  throw new Error("Component ID is required");
2024
2067
  }
2025
2068
  if (!overridableProps) {
2026
2069
  throw new Error("Component has no overridable props");
2027
2070
  }
2071
+ const {
2072
+ elementId: originElementId,
2073
+ widgetType,
2074
+ elType,
2075
+ propKey
2076
+ } = overridableProp.originPropFields ?? overridableProp;
2077
+ const type = elType === "widget" ? widgetType : elType;
2078
+ const elementType = (0, import_editor_elements7.getElementType)(type);
2079
+ const { elementId, overridesMapping } = (0, import_react7.useMemo)(() => {
2080
+ const overridesChainResult = resolveOverridesChain({
2081
+ outerOverridableProp: overridableProp,
2082
+ outerInstanceId: componentInstanceElement.element.id
2083
+ });
2084
+ if (overridesChainResult.isChainBroken) {
2085
+ throw new OverrideControlInnerElementNotFoundError({
2086
+ context: { componentId, elementId: originElementId }
2087
+ });
2088
+ }
2089
+ return {
2090
+ elementId: overridesChainResult.innerElement.id,
2091
+ overridesMapping: overridesChainResult.overridesMapping
2092
+ };
2093
+ }, [overridableProp, componentInstanceElement.element.id, componentId, originElementId]);
2094
+ const settingsWithInnerOverrides = (0, import_react7.useMemo)(() => {
2095
+ const settings = (0, import_editor_elements7.getElementSettings)(
2096
+ elementId,
2097
+ Object.keys(elementType?.propsSchema ?? {})
2098
+ );
2099
+ return applyOverridesToSettings(settings, overridesMapping);
2100
+ }, [elementId, elementType?.propsSchema, overridesMapping]);
2101
+ const resolvedElementSettings = (0, import_react7.useMemo)(() => {
2102
+ const withAllOverrides = applyOverridesToSettings(
2103
+ settingsWithInnerOverrides,
2104
+ formatOverridesToApply(overrides)
2105
+ );
2106
+ return unwrapOverridableSettings(withAllOverrides);
2107
+ }, [settingsWithInnerOverrides, overrides]);
2028
2108
  const propType = getPropTypeForComponentOverride(overridableProp);
2029
- if (!propType) {
2109
+ if (!propType || !elementType) {
2030
2110
  return null;
2031
2111
  }
2032
- const resolvedOverrideValue = matchingOverride ? resolveOverridePropValue(matchingOverride) : null;
2033
- const propValue = resolvedOverrideValue ?? recursiveOriginValue ?? overridableProp.originValue;
2112
+ const propValue = resolvedElementSettings[propKey];
2034
2113
  const value = {
2035
2114
  [overridableProp.overrideKey]: propValue
2036
2115
  };
@@ -2068,8 +2147,13 @@ function OverrideControl({ overridableProp }) {
2068
2147
  updateOverridableProp(wrappingComponentId, overridableValue, overridableProp.originPropFields);
2069
2148
  return;
2070
2149
  }
2071
- const { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 } = overridableProp;
2072
- updateOverridableProp(wrappingComponentId, overridableValue, { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 });
2150
+ const originPropFields = {
2151
+ elType: overridableProp.elType,
2152
+ widgetType: overridableProp.widgetType,
2153
+ propKey: overridableProp.propKey,
2154
+ elementId: overridableProp.elementId
2155
+ };
2156
+ updateOverridableProp(wrappingComponentId, overridableValue, originPropFields);
2073
2157
  }
2074
2158
  };
2075
2159
  const { control, controlProps, layout } = getControlParams(
@@ -2077,23 +2161,6 @@ function OverrideControl({ overridableProp }) {
2077
2161
  overridableProp?.originPropFields ?? overridableProp,
2078
2162
  overridableProp.label
2079
2163
  );
2080
- const {
2081
- elementId: originElementId,
2082
- widgetType,
2083
- elType,
2084
- propKey
2085
- } = overridableProp.originPropFields ?? overridableProp;
2086
- const element = getContainerByOriginId(originElementId, componentInstanceElement.element.id);
2087
- if (!element) {
2088
- throw new OverrideControlInnerElementNotFoundError({ context: { componentId, elementId: originElementId } });
2089
- }
2090
- const elementId = element.id;
2091
- const type = elType === "widget" ? widgetType : elType;
2092
- const elementType = (0, import_editor_elements7.getElementType)(type);
2093
- if (!elementType) {
2094
- return null;
2095
- }
2096
- const settings = (0, import_editor_elements7.getElementSettings)(elementId, Object.keys(elementType.propsSchema));
2097
2164
  const propTypeSchema = (0, import_editor_editing_panel.createTopLevelObjectType)({
2098
2165
  schema: {
2099
2166
  [overridableProp.overrideKey]: propType
@@ -2105,18 +2172,26 @@ function OverrideControl({ overridableProp }) {
2105
2172
  value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
2106
2173
  componentInstanceElement
2107
2174
  },
2108
- /* @__PURE__ */ React19.createElement(import_editor_editing_panel.ElementProvider, { element: { id: elementId, type }, elementType, settings }, /* @__PURE__ */ React19.createElement(import_editor_editing_panel.SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(
2109
- import_editor_controls2.PropProvider,
2175
+ /* @__PURE__ */ React19.createElement(
2176
+ import_editor_editing_panel.ElementProvider,
2110
2177
  {
2111
- propType: propTypeSchema,
2112
- value,
2113
- setValue,
2114
- isDisabled: () => {
2115
- return false;
2116
- }
2178
+ element: { id: elementId, type },
2179
+ elementType,
2180
+ settings: resolvedElementSettings
2117
2181
  },
2118
- /* @__PURE__ */ React19.createElement(import_editor_controls2.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React19.createElement(import_editor_controls2.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React19.createElement(import_ui12.Box, { mb: 1.5 }, /* @__PURE__ */ React19.createElement(import_editor_editing_panel.ControlTypeContainer, { layout }, layout !== "custom" && /* @__PURE__ */ React19.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React19.createElement(OriginalControl, { control, controlProps })))))
2119
- )))
2182
+ /* @__PURE__ */ React19.createElement(import_editor_editing_panel.SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React19.createElement(
2183
+ import_editor_controls2.PropProvider,
2184
+ {
2185
+ propType: propTypeSchema,
2186
+ value,
2187
+ setValue,
2188
+ isDisabled: () => {
2189
+ return false;
2190
+ }
2191
+ },
2192
+ /* @__PURE__ */ React19.createElement(import_editor_controls2.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React19.createElement(import_editor_controls2.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React19.createElement(import_ui12.Box, { mb: 1.5 }, /* @__PURE__ */ React19.createElement(import_editor_editing_panel.ControlTypeContainer, { layout }, layout !== "custom" && /* @__PURE__ */ React19.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React19.createElement(OriginalControl, { control, controlProps })))))
2193
+ ))
2194
+ )
2120
2195
  );
2121
2196
  }
2122
2197
  function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
@@ -2198,6 +2273,27 @@ function isValidOverride(overridableProps, override) {
2198
2273
  const overridableKey = componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
2199
2274
  return !!overridableProps.props[overridableKey];
2200
2275
  }
2276
+ function formatOverridesToApply(overrides) {
2277
+ if (!overrides) {
2278
+ return {};
2279
+ }
2280
+ const result = {};
2281
+ for (const item of overrides) {
2282
+ const overridable = componentOverridablePropTypeUtil.extract(item);
2283
+ let override = item;
2284
+ if (overridable) {
2285
+ override = overridable.origin_value;
2286
+ }
2287
+ const extractedOverride = componentInstanceOverridePropTypeUtil.extract(override);
2288
+ if (!extractedOverride) {
2289
+ continue;
2290
+ }
2291
+ result[extractedOverride.override_key] = {
2292
+ value: extractedOverride.override_value
2293
+ };
2294
+ }
2295
+ return result;
2296
+ }
2201
2297
 
2202
2298
  // src/components/instance-editing-panel/override-props-group.tsx
2203
2299
  function OverridePropsGroup({ group }) {
@@ -2205,7 +2301,7 @@ function OverridePropsGroup({ group }) {
2205
2301
  const handleClick = () => {
2206
2302
  setIsOpen(!isOpen);
2207
2303
  };
2208
- const id = (0, import_react7.useId)();
2304
+ const id = (0, import_react8.useId)();
2209
2305
  const labelId = `label-${id}`;
2210
2306
  const contentId = `content-${id}`;
2211
2307
  const title = group.label;
@@ -2260,42 +2356,11 @@ function filterValidOverridableProps(overridableProps, instanceElementId) {
2260
2356
  return { props: validProps, groups: filteredGroups };
2261
2357
  }
2262
2358
  function isExposedPropValid(prop, instanceElementId) {
2263
- if (!prop.originPropFields) {
2264
- return true;
2265
- }
2266
- const innerComponentInstanceElement = getContainerByOriginId(prop.elementId, instanceElementId);
2267
- if (!innerComponentInstanceElement) {
2268
- return false;
2269
- }
2270
- const setting = innerComponentInstanceElement.settings?.get("component_instance") ?? null;
2271
- const componentInstance = componentInstancePropTypeUtil.extract(setting);
2272
- if (!componentInstance?.component_id?.value) {
2273
- return false;
2274
- }
2275
- const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance.overrides) ?? void 0;
2276
- const matchingOverride = findOverrideByOuterKey(overrides, prop.overrideKey);
2277
- const innerOverrideInfo = extractInnerOverrideInfo(matchingOverride);
2278
- if (!innerOverrideInfo) {
2279
- return false;
2280
- }
2281
- const { componentId, innerOverrideKey } = innerOverrideInfo;
2282
- const innerOverridableProp = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
2283
- if (!innerOverridableProp) {
2284
- return false;
2285
- }
2286
- return isExposedPropValid(innerOverridableProp, innerComponentInstanceElement.id);
2287
- }
2288
- function findOverrideByOuterKey(overrides, outerKey) {
2289
- if (!overrides) {
2290
- return null;
2291
- }
2292
- return overrides.find((override) => {
2293
- const overridableValue = componentOverridablePropTypeUtil.extract(override);
2294
- if (overridableValue) {
2295
- return overridableValue.override_key === outerKey;
2296
- }
2297
- return override.value.override_key === outerKey;
2298
- }) ?? null;
2359
+ const { isChainBroken } = resolveOverridesChain({
2360
+ outerOverridableProp: prop,
2361
+ outerInstanceId: instanceElementId
2362
+ });
2363
+ return !isChainBroken;
2299
2364
  }
2300
2365
 
2301
2366
  // src/hooks/use-sanitize-overridable-props.ts
@@ -2381,7 +2446,7 @@ function InstanceEditingPanel() {
2381
2446
 
2382
2447
  // src/components/load-template-components.tsx
2383
2448
  var React23 = __toESM(require("react"));
2384
- var import_react8 = require("react");
2449
+ var import_react9 = require("react");
2385
2450
  var import_editor_templates = require("@elementor/editor-templates");
2386
2451
 
2387
2452
  // src/store/actions/load-components-assets.ts
@@ -2431,7 +2496,7 @@ async function getDocumentsMap(ids, cache) {
2431
2496
  }
2432
2497
 
2433
2498
  // src/store/actions/load-components-overridable-props.ts
2434
- var import_store23 = require("@elementor/store");
2499
+ var import_store21 = require("@elementor/store");
2435
2500
  function loadComponentsOverridableProps(componentIds) {
2436
2501
  if (!componentIds.length) {
2437
2502
  return;
@@ -2439,7 +2504,7 @@ function loadComponentsOverridableProps(componentIds) {
2439
2504
  return Promise.all(componentIds.map(loadComponentOverrides));
2440
2505
  }
2441
2506
  async function loadComponentOverrides(componentId) {
2442
- const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0, import_store23.__getState)(), componentId);
2507
+ const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0, import_store21.__getState)(), componentId);
2443
2508
  if (isOverridablePropsLoaded) {
2444
2509
  return;
2445
2510
  }
@@ -2447,7 +2512,7 @@ async function loadComponentOverrides(componentId) {
2447
2512
  if (!overridableProps) {
2448
2513
  return;
2449
2514
  }
2450
- (0, import_store23.__dispatch)(
2515
+ (0, import_store21.__dispatch)(
2451
2516
  slice.actions.setOverridableProps({
2452
2517
  componentId,
2453
2518
  overridableProps
@@ -2456,12 +2521,12 @@ async function loadComponentOverrides(componentId) {
2456
2521
  }
2457
2522
 
2458
2523
  // src/store/actions/load-components-styles.ts
2459
- var import_store25 = require("@elementor/store");
2524
+ var import_store23 = require("@elementor/store");
2460
2525
  function loadComponentsStyles(documents) {
2461
2526
  if (!documents.size) {
2462
2527
  return;
2463
2528
  }
2464
- const knownComponents = selectStyles((0, import_store25.__getState)());
2529
+ const knownComponents = selectStyles((0, import_store23.__getState)());
2465
2530
  const unknownDocuments = new Map([...documents.entries()].filter(([id]) => !knownComponents[id]));
2466
2531
  if (!unknownDocuments.size) {
2467
2532
  return;
@@ -2472,7 +2537,7 @@ function addStyles(documents) {
2472
2537
  const styles = Object.fromEntries(
2473
2538
  [...documents.entries()].map(([id, document2]) => [id, extractStylesFromDocument(document2)])
2474
2539
  );
2475
- (0, import_store25.__dispatch)(slice.actions.addStyles(styles));
2540
+ (0, import_store23.__dispatch)(slice.actions.addStyles(styles));
2476
2541
  }
2477
2542
  function extractStylesFromDocument(document2) {
2478
2543
  if (!document2.elements?.length) {
@@ -2510,7 +2575,7 @@ var LoadTemplateComponents = () => {
2510
2575
  };
2511
2576
  function LoadTemplateComponentsInternal() {
2512
2577
  const templates = (0, import_editor_templates.useLoadedTemplates)();
2513
- (0, import_react8.useEffect)(() => {
2578
+ (0, import_react9.useEffect)(() => {
2514
2579
  loadComponentsAssets(templates.flatMap((elements) => elements ?? []));
2515
2580
  }, [templates]);
2516
2581
  return null;
@@ -2520,7 +2585,7 @@ function LoadTemplateComponentsInternal() {
2520
2585
  var import_editor_canvas4 = require("@elementor/editor-canvas");
2521
2586
  var import_editor_documents4 = require("@elementor/editor-documents");
2522
2587
  var import_editor_notifications2 = require("@elementor/editor-notifications");
2523
- var import_store27 = require("@elementor/store");
2588
+ var import_store25 = require("@elementor/store");
2524
2589
  var import_utils5 = require("@elementor/utils");
2525
2590
  var import_i18n13 = require("@wordpress/i18n");
2526
2591
 
@@ -2903,7 +2968,7 @@ function createComponentModel() {
2903
2968
  }
2904
2969
  const componentUid = editorSettings?.component_uid;
2905
2970
  if (componentUid) {
2906
- const component = selectComponentByUid((0, import_store27.__getState)(), componentUid);
2971
+ const component = selectComponentByUid((0, import_store25.__getState)(), componentUid);
2907
2972
  if (component?.name) {
2908
2973
  return component.name;
2909
2974
  }
@@ -2924,11 +2989,11 @@ function createComponentModel() {
2924
2989
  }
2925
2990
 
2926
2991
  // src/populate-store.ts
2927
- var import_react9 = require("react");
2928
- var import_store29 = require("@elementor/store");
2992
+ var import_react10 = require("react");
2993
+ var import_store27 = require("@elementor/store");
2929
2994
  function PopulateStore() {
2930
- (0, import_react9.useEffect)(() => {
2931
- (0, import_store29.__dispatch)(loadComponents());
2995
+ (0, import_react10.useEffect)(() => {
2996
+ (0, import_store27.__dispatch)(loadComponents());
2932
2997
  }, []);
2933
2998
  return null;
2934
2999
  }
@@ -2937,7 +3002,7 @@ function PopulateStore() {
2937
3002
  var import_editor_elements9 = require("@elementor/editor-elements");
2938
3003
  var import_editor_notifications3 = require("@elementor/editor-notifications");
2939
3004
  var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
2940
- var import_store30 = require("@elementor/store");
3005
+ var import_store28 = require("@elementor/store");
2941
3006
  var import_i18n14 = require("@wordpress/i18n");
2942
3007
  var COMPONENT_TYPE = "e-component";
2943
3008
  var COMPONENT_CIRCULAR_NESTING_ALERT = {
@@ -2963,7 +3028,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
2963
3028
  if (componentIdToAdd === void 0) {
2964
3029
  return false;
2965
3030
  }
2966
- const state = (0, import_store30.__getState)();
3031
+ const state = (0, import_store28.__getState)();
2967
3032
  const currentComponentId = selectCurrentComponentId(state);
2968
3033
  const path = selectPath(state);
2969
3034
  if (currentComponentId === null) {
@@ -3061,19 +3126,19 @@ function blockCircularPaste(args) {
3061
3126
  }
3062
3127
 
3063
3128
  // src/store/actions/remove-component-styles.ts
3064
- var import_store32 = require("@elementor/store");
3129
+ var import_store30 = require("@elementor/store");
3065
3130
  function removeComponentStyles(id) {
3066
3131
  apiClient.invalidateComponentConfigCache(id);
3067
- (0, import_store32.__dispatch)(slice.actions.removeStyles({ id }));
3132
+ (0, import_store30.__dispatch)(slice.actions.removeStyles({ id }));
3068
3133
  }
3069
3134
 
3070
3135
  // src/store/components-styles-provider.ts
3071
3136
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
3072
- var import_store34 = require("@elementor/store");
3137
+ var import_store32 = require("@elementor/store");
3073
3138
  var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
3074
3139
  key: "components-styles",
3075
3140
  priority: 100,
3076
- subscribe: (cb) => (0, import_store34.__subscribeWithSelector)(
3141
+ subscribe: (cb) => (0, import_store32.__subscribeWithSelector)(
3077
3142
  (state) => state[SLICE_NAME],
3078
3143
  () => {
3079
3144
  cb();
@@ -3081,10 +3146,10 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
3081
3146
  ),
3082
3147
  actions: {
3083
3148
  all: () => {
3084
- return selectFlatStyles((0, import_store34.__getState)());
3149
+ return selectFlatStyles((0, import_store32.__getState)());
3085
3150
  },
3086
3151
  get: (id) => {
3087
- return selectFlatStyles((0, import_store34.__getState)()).find((style) => style.id === id) ?? null;
3152
+ return selectFlatStyles((0, import_store32.__getState)()).find((style) => style.id === id) ?? null;
3088
3153
  }
3089
3154
  }
3090
3155
  });
@@ -3165,7 +3230,7 @@ function load(result) {
3165
3230
  // src/init.ts
3166
3231
  function init() {
3167
3232
  import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
3168
- (0, import_store36.__registerSlice)(slice);
3233
+ (0, import_store34.__registerSlice)(slice);
3169
3234
  (0, import_editor_canvas5.registerElementType)(
3170
3235
  COMPONENT_WIDGET_TYPE2,
3171
3236
  (options) => createComponentType({