@elementor/editor-editing-panel 4.4.0-1148 → 4.4.0-beta1

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
@@ -1976,7 +1976,7 @@ var EditingPanelStickyPromotion = () => {
1976
1976
  import { Fragment as Fragment10 } from "react";
1977
1977
  import * as React92 from "react";
1978
1978
  import { useHasContentOnlyAccess } from "@elementor/editor-current-user";
1979
- import { getWidgetsCache as getWidgetsCache2 } from "@elementor/editor-elements";
1979
+ import { getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
1980
1980
  import { Divider as Divider6, Stack as Stack14, Tab, TabPanel, Tabs, useTabs } from "@elementor/ui";
1981
1981
  import { __ as __65 } from "@wordpress/i18n";
1982
1982
 
@@ -2129,6 +2129,9 @@ var InteractionsTab = () => {
2129
2129
  import * as React26 from "react";
2130
2130
  import { SessionStorageProvider } from "@elementor/session";
2131
2131
 
2132
+ // src/utils/ancestor-dependency-utils.ts
2133
+ import { findClosestContainer, getContainer, getWidgetsCache } from "@elementor/editor-elements";
2134
+
2132
2135
  // src/utils/prop-dependency-utils.ts
2133
2136
  import {
2134
2137
  extractValue,
@@ -2148,14 +2151,16 @@ function getElementSettingsWithDefaults(propsSchema, elementSettings) {
2148
2151
  });
2149
2152
  return elementSettingsWithDefaults;
2150
2153
  }
2154
+ function isHiddenByDependency(dependency, values) {
2155
+ const depCheck = isDependencyMet(dependency, values);
2156
+ const failingTerm = !depCheck.isMet ? depCheck.failingDependencies[0] : void 0;
2157
+ return !!failingTerm && !isDependency(failingTerm) && failingTerm.effect === "hide";
2158
+ }
2151
2159
  function extractDependencyEffect(bind, propsSchema, settings) {
2152
2160
  const settingsWithDefaults = getElementSettingsWithDefaults(propsSchema, settings);
2153
2161
  const propType = propsSchema[bind];
2154
- const depCheck = isDependencyMet(propType?.dependencies, settingsWithDefaults);
2155
- const failingTerm = !depCheck.isMet ? depCheck.failingDependencies[0] : void 0;
2156
- const isHidden = !!failingTerm && !isDependency(failingTerm) && failingTerm?.effect === "hide";
2157
2162
  return {
2158
- isHidden,
2163
+ isHidden: isHiddenByDependency(propType?.dependencies, settingsWithDefaults),
2159
2164
  isDisabled: (prop) => !isDependencyMet(prop?.dependencies, settingsWithDefaults).isMet
2160
2165
  };
2161
2166
  }
@@ -2342,6 +2347,32 @@ function removePreviousValueFromStorage({ path, elementId }) {
2342
2347
  removeSessionStorageItem(key);
2343
2348
  }
2344
2349
 
2350
+ // src/utils/ancestor-dependency-utils.ts
2351
+ function getSettingsWithDefaults(ancestor, elementType) {
2352
+ const schema = getWidgetsCache()?.[elementType]?.atomic_props_schema ?? {};
2353
+ const settings = Object.fromEntries(
2354
+ Object.keys(schema).map((key) => [key, ancestor.settings.get(key) ?? null])
2355
+ );
2356
+ return getElementSettingsWithDefaults(schema, settings);
2357
+ }
2358
+ function isHiddenByAncestor(elementId, propType) {
2359
+ const ancestorDependency = propType?.meta?.ancestor_dependency;
2360
+ if (!Array.isArray(ancestorDependency?.dependency?.terms)) {
2361
+ return false;
2362
+ }
2363
+ const ancestor = findClosestContainer(
2364
+ getContainer(elementId)?.parent,
2365
+ (container) => container.model.get("elType") === ancestorDependency.element_type
2366
+ );
2367
+ if (!ancestor) {
2368
+ return false;
2369
+ }
2370
+ return isHiddenByDependency(
2371
+ ancestorDependency.dependency,
2372
+ getSettingsWithDefaults(ancestor, ancestorDependency.element_type)
2373
+ );
2374
+ }
2375
+
2345
2376
  // src/components/section.tsx
2346
2377
  import * as React21 from "react";
2347
2378
  import { useId as useId2, useRef as useRef3 } from "react";
@@ -2592,6 +2623,27 @@ import { useActiveBreakpoint, useBreakpoints } from "@elementor/editor-responsiv
2592
2623
  import { undoable as undoable4 } from "@elementor/editor-v1-adapters";
2593
2624
  import { __ as __11 } from "@wordpress/i18n";
2594
2625
 
2626
+ // src/hooks/use-is-hidden-by-ancestor.ts
2627
+ import { __privateUseListenTo as useListenTo, commandEndEvent, v1ReadyEvent } from "@elementor/editor-v1-adapters";
2628
+ function useIsHiddenByAncestor(bind) {
2629
+ const {
2630
+ element: { id: elementId },
2631
+ elementType: { propsSchema }
2632
+ } = useElement();
2633
+ const propType = propsSchema[bind];
2634
+ return useListenTo(
2635
+ [
2636
+ v1ReadyEvent(),
2637
+ commandEndEvent("document/elements/set-settings"),
2638
+ commandEndEvent("document/elements/create"),
2639
+ commandEndEvent("document/elements/delete"),
2640
+ commandEndEvent("document/elements/move")
2641
+ ],
2642
+ () => isHiddenByAncestor(elementId, propType),
2643
+ [elementId, propType]
2644
+ );
2645
+ }
2646
+
2595
2647
  // src/utils/is-responsive-prop-type.ts
2596
2648
  function isResponsivePropType(propType) {
2597
2649
  if (!propType) {
@@ -2636,8 +2688,9 @@ var SettingsField = ({ bind, children, propDisplayName }) => {
2636
2688
  elementId,
2637
2689
  propDisplayName
2638
2690
  });
2691
+ const isHiddenByAncestor2 = useIsHiddenByAncestor(bind);
2639
2692
  const { isDisabled, isHidden } = extractDependencyEffect(bind, propsSchema, currentElementSettings);
2640
- if (isHidden) {
2693
+ if (isHidden || isHiddenByAncestor2) {
2641
2694
  return null;
2642
2695
  }
2643
2696
  const setValue = (newValue, _ = {}, meta) => {
@@ -2812,15 +2865,16 @@ function renderSectionItems({
2812
2865
  if (!isControl(item)) {
2813
2866
  return [];
2814
2867
  }
2815
- if (item.type === "control" && isControlHiddenByDependencies(item, propsSchema, settings)) {
2868
+ if (item.type === "control" && isControlHiddenByDependencies(item, propsSchema, settings, element.id)) {
2816
2869
  return [];
2817
2870
  }
2818
2871
  return [/* @__PURE__ */ React26.createElement(SettingsControl, { key: getKey(item, element), control: item })];
2819
2872
  }) ?? [];
2820
2873
  }
2821
- function isControlHiddenByDependencies(control, propsSchema, settings) {
2822
- const { isHidden } = extractDependencyEffect(control.value.bind, propsSchema, settings);
2823
- return isHidden;
2874
+ function isControlHiddenByDependencies(control, propsSchema, settings, elementId) {
2875
+ const { bind } = control.value;
2876
+ const { isHidden } = extractDependencyEffect(bind, propsSchema, settings);
2877
+ return isHidden || isHiddenByAncestor(elementId, propsSchema[bind]);
2824
2878
  }
2825
2879
 
2826
2880
  // src/components/style-tab.tsx
@@ -2835,7 +2889,7 @@ import { Box as Box8, Divider as Divider5, Stack as Stack13 } from "@elementor/u
2835
2889
  // src/contexts/styles-inheritance-context.tsx
2836
2890
  import * as React27 from "react";
2837
2891
  import { createContext as createContext6, useContext as useContext6, useMemo as useMemo8 } from "react";
2838
- import { getWidgetsCache } from "@elementor/editor-elements";
2892
+ import { getWidgetsCache as getWidgetsCache2 } from "@elementor/editor-elements";
2839
2893
  import { classesPropTypeUtil as classesPropTypeUtil3 } from "@elementor/editor-props";
2840
2894
  import { getBreakpointsTree as getBreakpointsTree2 } from "@elementor/editor-responsive";
2841
2895
  import { getStylesSchema } from "@elementor/editor-styles";
@@ -2843,14 +2897,14 @@ import { stylesRepository as stylesRepository8 } from "@elementor/editor-styles-
2843
2897
 
2844
2898
  // src/hooks/use-default-style-tag-from-preview.ts
2845
2899
  import { getDefaultStyleTagFromPreviewElement } from "@elementor/editor-elements";
2846
- import { __privateUseListenTo as useListenTo, commandEndEvent, windowEvent } from "@elementor/editor-v1-adapters";
2900
+ import { __privateUseListenTo as useListenTo2, commandEndEvent as commandEndEvent2, windowEvent } from "@elementor/editor-v1-adapters";
2847
2901
  function useDefaultStyleTagFromPreview(elementId) {
2848
- return useListenTo(
2902
+ return useListenTo2(
2849
2903
  [
2850
2904
  windowEvent("elementor/preview/atomic-widget/render"),
2851
- commandEndEvent("document/elements/settings"),
2852
- commandEndEvent("document/elements/set-settings"),
2853
- commandEndEvent("document/elements/select")
2905
+ commandEndEvent2("document/elements/settings"),
2906
+ commandEndEvent2("document/elements/set-settings"),
2907
+ commandEndEvent2("document/elements/select")
2854
2908
  ],
2855
2909
  () => getDefaultStyleTagFromPreviewElement(elementId)
2856
2910
  );
@@ -3143,7 +3197,7 @@ var useAppliedStyles = () => {
3143
3197
  };
3144
3198
  var useBaseStyles = () => {
3145
3199
  const { elementType } = useElement();
3146
- const widgetsCache = getWidgetsCache();
3200
+ const widgetsCache = getWidgetsCache2();
3147
3201
  const widgetCache = widgetsCache?.[elementType.key];
3148
3202
  return Object.keys(widgetCache?.base_styles ?? {});
3149
3203
  };
@@ -3575,9 +3629,9 @@ import {
3575
3629
  import { __ as __19 } from "@wordpress/i18n";
3576
3630
 
3577
3631
  // src/utils/can-element-have-children.ts
3578
- import { getContainer } from "@elementor/editor-elements";
3632
+ import { getContainer as getContainer2 } from "@elementor/editor-elements";
3579
3633
  var canElementHaveChildren = (elementId) => {
3580
- const container = getContainer(elementId);
3634
+ const container = getContainer2(elementId);
3581
3635
  if (!container) {
3582
3636
  return false;
3583
3637
  }
@@ -3682,14 +3736,14 @@ import { createLocation as createLocation3 } from "@elementor/locations";
3682
3736
  import { __ as __39 } from "@wordpress/i18n";
3683
3737
 
3684
3738
  // src/hooks/use-computed-style.ts
3685
- import { __privateUseListenTo as useListenTo2, commandEndEvent as commandEndEvent2, windowEvent as windowEvent2 } from "@elementor/editor-v1-adapters";
3739
+ import { __privateUseListenTo as useListenTo3, commandEndEvent as commandEndEvent3, windowEvent as windowEvent2 } from "@elementor/editor-v1-adapters";
3686
3740
  function useComputedStyle(elementId) {
3687
- return useListenTo2(
3741
+ return useListenTo3(
3688
3742
  [
3689
3743
  windowEvent2("elementor/device-mode/change"),
3690
- commandEndEvent2("document/elements/reset-style"),
3691
- commandEndEvent2("document/elements/settings"),
3692
- commandEndEvent2("document/elements/paste-style")
3744
+ commandEndEvent3("document/elements/reset-style"),
3745
+ commandEndEvent3("document/elements/settings"),
3746
+ commandEndEvent3("document/elements/paste-style")
3693
3747
  ],
3694
3748
  () => {
3695
3749
  if (!elementId) {
@@ -5806,7 +5860,7 @@ var PanelTabContent = () => {
5806
5860
  const { element } = useElement();
5807
5861
  const editorDefaults = useDefaultPanelSettings();
5808
5862
  const defaultComponentTab = editorDefaults.defaultTab;
5809
- const elementMeta = getWidgetsCache2()?.[element.type]?.meta;
5863
+ const elementMeta = getWidgetsCache3()?.[element.type]?.meta;
5810
5864
  const isPromotedElement = !!elementMeta?.is_pro_promotion;
5811
5865
  const hasDesignTabs = !elementMeta?.hide_design_tabs;
5812
5866
  const hasContentOnlyAccess = useHasContentOnlyAccess();
@@ -5935,10 +5989,10 @@ var { panel, usePanelActions, usePanelStatus } = createPanel({
5935
5989
  });
5936
5990
 
5937
5991
  // src/sync/is-atomic-widget-selected.ts
5938
- import { getSelectedElements, getWidgetsCache as getWidgetsCache3 } from "@elementor/editor-elements";
5992
+ import { getSelectedElements, getWidgetsCache as getWidgetsCache4 } from "@elementor/editor-elements";
5939
5993
  var isAtomicWidgetSelected = () => {
5940
5994
  const selectedElements = getSelectedElements();
5941
- const widgetCache = getWidgetsCache3();
5995
+ const widgetCache = getWidgetsCache4();
5942
5996
  if (selectedElements.length !== 1) {
5943
5997
  return false;
5944
5998
  }
@@ -6015,7 +6069,7 @@ import {
6015
6069
  createElements,
6016
6070
  duplicateElements,
6017
6071
  generateElementId,
6018
- getContainer as getContainer2,
6072
+ getContainer as getContainer3,
6019
6073
  moveElements,
6020
6074
  removeElements
6021
6075
  } from "@elementor/editor-elements";
@@ -6113,7 +6167,7 @@ var useActions = () => {
6113
6167
  showIcon,
6114
6168
  differentOpenIcon = false
6115
6169
  }) => {
6116
- const accordion = getContainer2(accordionId);
6170
+ const accordion = getContainer3(accordionId);
6117
6171
  if (!accordion) {
6118
6172
  throw new Error("Accordion container not found");
6119
6173
  }
@@ -6161,8 +6215,8 @@ var useActions = () => {
6161
6215
  movedElementId,
6162
6216
  toIndex
6163
6217
  }) => {
6164
- const accordion = getContainer2(accordionId);
6165
- const movedElement = getContainer2(movedElementId);
6218
+ const accordion = getContainer3(accordionId);
6219
+ const movedElement = getContainer3(movedElementId);
6166
6220
  if (!accordion || !movedElement) {
6167
6221
  throw new Error("Accordion item or container not found");
6168
6222
  }
@@ -6187,7 +6241,7 @@ var useActions = () => {
6187
6241
 
6188
6242
  // src/controls-registry/element-controls/accordion-items-control/use-show-icon-write-through.ts
6189
6243
  import { useEffect as useEffect9, useRef as useRef20 } from "react";
6190
- import { getContainer as getContainer3, getElementSettings as getElementSettings2, updateElementSettings as updateElementSettings4 } from "@elementor/editor-elements";
6244
+ import { getContainer as getContainer4, getElementSettings as getElementSettings2, updateElementSettings as updateElementSettings4 } from "@elementor/editor-elements";
6191
6245
  import { booleanPropTypeUtil as booleanPropTypeUtil3 } from "@elementor/editor-props";
6192
6246
  import { undoable as undoable5 } from "@elementor/editor-v1-adapters";
6193
6247
  import { __ as __70 } from "@wordpress/i18n";
@@ -6243,7 +6297,7 @@ var cascadeShowIconToHeaders = undoable5(
6243
6297
  }
6244
6298
  );
6245
6299
  function getAccordionHeaderIds(accordionId) {
6246
- const accordion = getContainer3(accordionId);
6300
+ const accordion = getContainer4(accordionId);
6247
6301
  const itemContainers = (accordion?.children ?? []).filter(
6248
6302
  (child) => child.model.get("elType") === ACCORDION_ITEM_ELEMENT_TYPE
6249
6303
  );
@@ -6425,7 +6479,7 @@ import {
6425
6479
  createElements as createElements2,
6426
6480
  duplicateElements as duplicateElements2,
6427
6481
  generateElementId as generateElementId2,
6428
- getContainer as getContainer4,
6482
+ getContainer as getContainer5,
6429
6483
  moveElements as moveElements2,
6430
6484
  removeElements as removeElements2
6431
6485
  } from "@elementor/editor-elements";
@@ -6504,8 +6558,8 @@ var moveItem = ({
6504
6558
  listContainerId,
6505
6559
  movedElementId
6506
6560
  }) => {
6507
- const movedElement = getContainer4(movedElementId);
6508
- const listContainer = getContainer4(listContainerId);
6561
+ const movedElement = getContainer5(movedElementId);
6562
+ const listContainer = getContainer5(listContainerId);
6509
6563
  if (!movedElement || !listContainer) {
6510
6564
  throw new Error("List item or list container not found");
6511
6565
  }
@@ -6532,7 +6586,7 @@ var addItem = ({
6532
6586
  items: items3,
6533
6587
  showMarkers
6534
6588
  }) => {
6535
- const listContainer = getContainer4(listContainerId);
6589
+ const listContainer = getContainer5(listContainerId);
6536
6590
  if (!listContainer) {
6537
6591
  throw new Error("List container not found");
6538
6592
  }
@@ -6555,7 +6609,7 @@ var addItem = ({
6555
6609
 
6556
6610
  // src/controls-registry/element-controls/list-items-control/use-show-markers-write-through.ts
6557
6611
  import { useEffect as useEffect10, useRef as useRef21 } from "react";
6558
- import { getContainer as getContainer5, getElementSettings as getElementSettings3, updateElementSettings as updateElementSettings5 } from "@elementor/editor-elements";
6612
+ import { getContainer as getContainer6, getElementSettings as getElementSettings3, updateElementSettings as updateElementSettings5 } from "@elementor/editor-elements";
6559
6613
  import { booleanPropTypeUtil as booleanPropTypeUtil6 } from "@elementor/editor-props";
6560
6614
  import { undoable as undoable6 } from "@elementor/editor-v1-adapters";
6561
6615
  import { __ as __73 } from "@wordpress/i18n";
@@ -6599,7 +6653,7 @@ var cascadeShowMarkersToItems = undoable6(
6599
6653
  }
6600
6654
  );
6601
6655
  function getListItemIds(listId) {
6602
- const list = getContainer5(listId);
6656
+ const list = getContainer6(listId);
6603
6657
  const itemContainers = (list?.children ?? []).filter(
6604
6658
  (child) => child.model.get("elType") === LIST_ITEM_ELEMENT_TYPE
6605
6659
  );
@@ -6736,9 +6790,9 @@ import { Alert as Alert5, Chip as Chip4, Infotip as Infotip3, Stack as Stack17,
6736
6790
  import { __ as __76 } from "@wordpress/i18n";
6737
6791
 
6738
6792
  // src/controls-registry/element-controls/get-element-by-type.ts
6739
- import { getContainer as getContainer6 } from "@elementor/editor-elements";
6793
+ import { getContainer as getContainer7 } from "@elementor/editor-elements";
6740
6794
  var getElementByType = (elementId, type) => {
6741
- const currentElement = getContainer6(elementId);
6795
+ const currentElement = getContainer7(elementId);
6742
6796
  if (!currentElement) {
6743
6797
  return null;
6744
6798
  }
@@ -6753,7 +6807,7 @@ import { useBoundProp as useBoundProp7 } from "@elementor/editor-controls";
6753
6807
  import {
6754
6808
  createElements as createElements3,
6755
6809
  duplicateElements as duplicateElements3,
6756
- getContainer as getContainer7,
6810
+ getContainer as getContainer8,
6757
6811
  moveElements as moveElements3,
6758
6812
  removeElements as removeElements3
6759
6813
  } from "@elementor/editor-elements";
@@ -6774,7 +6828,7 @@ var useActions2 = () => {
6774
6828
  });
6775
6829
  items3.forEach(({ item, index }) => {
6776
6830
  const tabId = item.id;
6777
- const tabContentAreaContainer = getContainer7(tabContentAreaId);
6831
+ const tabContentAreaContainer = getContainer8(tabContentAreaId);
6778
6832
  const tabContentId = tabContentAreaContainer?.children?.[index]?.id;
6779
6833
  if (!tabContentId) {
6780
6834
  throw new Error("Original content ID is required for duplication");
@@ -6802,10 +6856,10 @@ var useActions2 = () => {
6802
6856
  movedElementId,
6803
6857
  movedElementIndex
6804
6858
  }) => {
6805
- const tabContentContainer = getContainer7(tabContentAreaId);
6859
+ const tabContentContainer = getContainer8(tabContentAreaId);
6806
6860
  const tabContent = tabContentContainer?.children?.[movedElementIndex];
6807
- const movedElement = getContainer7(movedElementId);
6808
- const tabsMenu = getContainer7(tabsMenuId);
6861
+ const movedElement = getContainer8(movedElementId);
6862
+ const tabsMenu = getContainer8(tabsMenuId);
6809
6863
  if (!tabContent) {
6810
6864
  throw new Error("Content element is required");
6811
6865
  }
@@ -6855,7 +6909,7 @@ var useActions2 = () => {
6855
6909
  title: __75("Tabs", "elementor"),
6856
6910
  elementIds: items3.flatMap(({ item, index }) => {
6857
6911
  const tabId = item.id;
6858
- const tabContentContainer = getContainer7(tabContentAreaId);
6912
+ const tabContentContainer = getContainer8(tabContentAreaId);
6859
6913
  const tabContentId = tabContentContainer?.children?.[index]?.id;
6860
6914
  if (!tabContentId) {
6861
6915
  throw new Error("Content ID is required");
@@ -6879,8 +6933,8 @@ var useActions2 = () => {
6879
6933
  tabsMenuId,
6880
6934
  items: items3
6881
6935
  }) => {
6882
- const tabContentArea = getContainer7(tabContentAreaId);
6883
- const tabsMenu = getContainer7(tabsMenuId);
6936
+ const tabContentArea = getContainer8(tabContentAreaId);
6937
+ const tabsMenu = getContainer8(tabsMenuId);
6884
6938
  if (!tabContentArea || !tabsMenu) {
6885
6939
  throw new Error("Tab containers not found");
6886
6940
  }