@elementor/editor-editing-panel 3.33.0-149 → 3.33.0-151

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
@@ -1809,6 +1809,7 @@ import * as React17 from "react";
1809
1809
 
1810
1810
  // src/controls-registry/controls-registry.tsx
1811
1811
  import {
1812
+ HtmlTagControl,
1812
1813
  ImageControl,
1813
1814
  KeyValueControl,
1814
1815
  LinkControl,
@@ -1847,7 +1848,8 @@ var controlTypes = {
1847
1848
  switch: { component: SwitchControl, layout: "two-columns", propTypeUtil: booleanPropTypeUtil },
1848
1849
  number: { component: NumberControl, layout: "two-columns", propTypeUtil: numberPropTypeUtil },
1849
1850
  repeatable: { component: RepeatableControl, layout: "full", propTypeUtil: void 0 },
1850
- "key-value": { component: KeyValueControl, layout: "full", propTypeUtil: keyValuePropTypeUtil }
1851
+ "key-value": { component: KeyValueControl, layout: "full", propTypeUtil: keyValuePropTypeUtil },
1852
+ "html-tag": { component: HtmlTagControl, layout: "two-columns", propTypeUtil: stringPropTypeUtil2 }
1851
1853
  };
1852
1854
  var ControlsRegistry = class {
1853
1855
  constructor(controlsRegistry2 = controlTypes) {
@@ -1937,6 +1939,7 @@ import {
1937
1939
  extractValue,
1938
1940
  isDependencyMet
1939
1941
  } from "@elementor/editor-props";
1942
+ import { getSessionStorageItem as getSessionStorageItem2, removeSessionStorageItem, setSessionStorageItem as setSessionStorageItem2 } from "@elementor/session";
1940
1943
  function extractOrderedDependencies(bind, propsSchema, elementValues, dependenciesPerTargetMapping) {
1941
1944
  const prop = getPropType(propsSchema, elementValues, bind.split("."));
1942
1945
  if (!prop) {
@@ -1971,7 +1974,7 @@ function extractPropOrderedDependencies(bind, dependenciesPerTargetMapping) {
1971
1974
  []
1972
1975
  );
1973
1976
  }
1974
- function updateValues(values, dependencies, propsSchema, elementValues) {
1977
+ function getUpdatedValues(values, dependencies, propsSchema, elementValues, elementId) {
1975
1978
  if (!dependencies.length) {
1976
1979
  return values;
1977
1980
  }
@@ -1983,10 +1986,29 @@ function updateValues(values, dependencies, propsSchema, elementValues) {
1983
1986
  if (!propType) {
1984
1987
  return newValues;
1985
1988
  }
1986
- if (!isDependencyMet(propType?.dependencies, combinedValues)) {
1989
+ const testDependencies = {
1990
+ previousValues: isDependencyMet(propType.dependencies, elementValues),
1991
+ newValues: isDependencyMet(propType.dependencies, combinedValues)
1992
+ };
1993
+ if (!testDependencies.newValues.isMet) {
1994
+ const newValue = handleUnmetCondition({
1995
+ failingDependencies: testDependencies.newValues.failingDependencies,
1996
+ dependency,
1997
+ elementValues: combinedValues,
1998
+ defaultValue: propType.default,
1999
+ elementId
2000
+ });
2001
+ return {
2002
+ ...newValues,
2003
+ ...updateValue(path, newValue, combinedValues)
2004
+ };
2005
+ }
2006
+ if (!testDependencies.previousValues.isMet) {
2007
+ const savedValue = retrievePreviousValueFromStorage({ path: dependency, elementId });
2008
+ removePreviousValueFromStorage({ path: dependency, elementId });
1987
2009
  return {
1988
2010
  ...newValues,
1989
- ...updateValue(path, null, combinedValues)
2011
+ ...updateValue(path, savedValue ?? propType.default, combinedValues)
1990
2012
  };
1991
2013
  }
1992
2014
  return newValues;
@@ -2003,11 +2025,19 @@ function getPropType(schema, elementValues, path) {
2003
2025
  if (!baseProp) {
2004
2026
  return null;
2005
2027
  }
2006
- return keys.reduce((prop, key, index) => {
2007
- if (!prop?.kind) {
2008
- return null;
2009
- }
2010
- if ("union" === prop.kind) {
2028
+ return keys.reduce(
2029
+ (prop, key, index) => evaluatePropType({ prop, key, index, path, elementValues, basePropKey }),
2030
+ baseProp
2031
+ );
2032
+ }
2033
+ function evaluatePropType(props) {
2034
+ const { prop } = props;
2035
+ if (!prop?.kind) {
2036
+ return null;
2037
+ }
2038
+ const { key, index, path, elementValues, basePropKey } = props;
2039
+ switch (prop.kind) {
2040
+ case "union":
2011
2041
  const value = extractValue(path.slice(0, index + 1), elementValues);
2012
2042
  const type = value?.$$type ?? null;
2013
2043
  return getPropType(
@@ -2015,15 +2045,12 @@ function getPropType(schema, elementValues, path) {
2015
2045
  elementValues,
2016
2046
  path.slice(0, index + 2)
2017
2047
  );
2018
- }
2019
- if ("array" === prop.kind) {
2048
+ case "array":
2020
2049
  return prop.item_prop_type;
2021
- }
2022
- if ("object" === prop.kind) {
2050
+ case "object":
2023
2051
  return prop.shape[key];
2024
- }
2025
- return prop[key];
2026
- }, baseProp);
2052
+ }
2053
+ return prop[key];
2027
2054
  }
2028
2055
  function updateValue(path, value, values) {
2029
2056
  const topPropKey = path[0];
@@ -2033,13 +2060,43 @@ function updateValue(path, value, values) {
2033
2060
  return null;
2034
2061
  }
2035
2062
  if (index === path.length - 1) {
2036
- carry[key] = value !== null ? { ...carry[key] ?? {}, value } : null;
2063
+ carry[key] = value ?? null;
2037
2064
  return carry[key]?.value ?? carry.value;
2038
2065
  }
2039
2066
  return carry[key]?.value ?? carry.value;
2040
2067
  }, newValue);
2041
2068
  return { [topPropKey]: newValue[topPropKey] ?? null };
2042
2069
  }
2070
+ function handleUnmetCondition(props) {
2071
+ const { failingDependencies, dependency, elementValues, defaultValue, elementId } = props;
2072
+ const newValue = failingDependencies.find((term) => term.newValue)?.newValue ?? null;
2073
+ const currentValue = extractValue(dependency.split("."), elementValues) ?? defaultValue;
2074
+ savePreviousValueToStorage({
2075
+ path: dependency,
2076
+ elementId,
2077
+ value: currentValue
2078
+ });
2079
+ return newValue;
2080
+ }
2081
+ function savePreviousValueToStorage({ path, elementId, value }) {
2082
+ const prefix = `elementor/${elementId}`;
2083
+ const savedValue = retrievePreviousValueFromStorage({ path, elementId });
2084
+ if (savedValue) {
2085
+ return;
2086
+ }
2087
+ const key = `${prefix}:${path}`;
2088
+ setSessionStorageItem2(key, value);
2089
+ }
2090
+ function retrievePreviousValueFromStorage({ path, elementId }) {
2091
+ const prefix = `elementor/${elementId}`;
2092
+ const key = `${prefix}:${path}`;
2093
+ return getSessionStorageItem2(key) ?? null;
2094
+ }
2095
+ function removePreviousValueFromStorage({ path, elementId }) {
2096
+ const prefix = `elementor/${elementId}`;
2097
+ const key = `${prefix}:${path}`;
2098
+ removeSessionStorageItem(key);
2099
+ }
2043
2100
 
2044
2101
  // src/controls-registry/create-top-level-object-type.ts
2045
2102
  var createTopLevelObjectType = ({ schema }) => {
@@ -2075,10 +2132,10 @@ var SettingsField = ({ bind, children, propDisplayName }) => {
2075
2132
  elementSettingValues,
2076
2133
  dependenciesPerTargetMapping
2077
2134
  );
2078
- const settings = updateValues(newValue, dependents, propsSchema, elementSettingValues);
2135
+ const settings = getUpdatedValues(newValue, dependents, propsSchema, elementSettingValues, elementId);
2079
2136
  undoableUpdateElementProp(settings);
2080
2137
  };
2081
- const isDisabled = (prop) => !isDependencyMet2(prop?.dependencies, elementSettingValues);
2138
+ const isDisabled = (prop) => !isDependencyMet2(prop?.dependencies, elementSettingValues).isMet;
2082
2139
  return /* @__PURE__ */ React19.createElement(PropProvider, { propType, value, setValue, isDisabled }, /* @__PURE__ */ React19.createElement(PropKeyProvider, { bind }, children));
2083
2140
  };
2084
2141
  function useUndoableUpdateElementProp({
@@ -3021,7 +3078,7 @@ var ConditionalField = ({ children }) => {
3021
3078
  const { propType } = useBoundProp2();
3022
3079
  const depList = getDependencies(propType);
3023
3080
  const { values: depValues } = useStylesFields(depList);
3024
- const isHidden = !isDependencyMet3(propType?.dependencies, depValues);
3081
+ const isHidden = !isDependencyMet3(propType?.dependencies, depValues).isMet;
3025
3082
  return isHidden ? null : children;
3026
3083
  };
3027
3084
  function getDependencies(propType) {