@elementor/editor-controls 0.25.0 → 0.27.0

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
@@ -193,46 +193,39 @@ var ControlFormLabel = ({ children }) => {
193
193
  import * as React5 from "react";
194
194
  import { ErrorBoundary } from "@elementor/ui";
195
195
 
196
- // src/create-control-replacement.tsx
196
+ // src/control-replacements.tsx
197
197
  import * as React4 from "react";
198
198
  import { createContext as createContext3, useContext as useContext3 } from "react";
199
- var ControlReplacementContext = createContext3(void 0);
200
- var ControlReplacementProvider = ({
201
- component,
202
- condition,
203
- children
204
- }) => {
205
- return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: { component, condition } }, children);
199
+ var ControlReplacementContext = createContext3([]);
200
+ var ControlReplacementsProvider = ({ replacements, children }) => {
201
+ return /* @__PURE__ */ React4.createElement(ControlReplacementContext.Provider, { value: replacements }, children);
206
202
  };
207
- var useControlReplacement = () => {
203
+ var useControlReplacement = (OriginalComponent) => {
208
204
  const { value } = useBoundProp();
209
- const controlReplacement = useContext3(ControlReplacementContext);
210
- let shouldReplace = false;
205
+ const replacements = useContext3(ControlReplacementContext);
211
206
  try {
212
- shouldReplace = !!controlReplacement?.condition({ value }) && !!controlReplacement.component;
207
+ const replacement = replacements.find((r) => r.condition({ value }));
208
+ return replacement?.component ?? OriginalComponent;
213
209
  } catch {
210
+ return OriginalComponent;
214
211
  }
215
- return shouldReplace ? controlReplacement?.component : void 0;
216
212
  };
217
- var createControlReplacement = () => {
218
- let controlReplacement;
219
- function replaceControl({ component, condition }) {
220
- controlReplacement = { component, condition };
213
+ var createControlReplacementsRegistry = () => {
214
+ const controlReplacements = [];
215
+ function registerControlReplacement(replacement) {
216
+ controlReplacements.push(replacement);
221
217
  }
222
- function getControlReplacement() {
223
- return controlReplacement;
218
+ function getControlReplacements() {
219
+ return controlReplacements;
224
220
  }
225
- return { replaceControl, getControlReplacement };
221
+ return { registerControlReplacement, getControlReplacements };
226
222
  };
227
223
 
228
224
  // src/create-control.tsx
229
225
  var brandSymbol = Symbol("control");
230
- function createControl(Component, { supportsReplacements = true } = {}) {
226
+ function createControl(Control5) {
231
227
  return (props) => {
232
- const ControlReplacement = useControlReplacement();
233
- if (ControlReplacement && supportsReplacements) {
234
- return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(ControlReplacement, { ...props }));
235
- }
228
+ const Component = useControlReplacement(Control5);
236
229
  return /* @__PURE__ */ React5.createElement(ErrorBoundary, { fallback: null }, /* @__PURE__ */ React5.createElement(Component, { ...props }));
237
230
  };
238
231
  }
@@ -884,16 +877,28 @@ var Repeater = ({
884
877
  });
885
878
  });
886
879
  };
887
- return /* @__PURE__ */ React23.createElement(SectionContent, null, /* @__PURE__ */ React23.createElement(Stack5, { direction: "row", justifyContent: "start", alignItems: "center", gap: 1 }, /* @__PURE__ */ React23.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, label), /* @__PURE__ */ React23.createElement(ControlAdornments, null), /* @__PURE__ */ React23.createElement(
888
- IconButton,
880
+ return /* @__PURE__ */ React23.createElement(SectionContent, null, /* @__PURE__ */ React23.createElement(
881
+ Stack5,
889
882
  {
890
- sx: { ml: "auto" },
891
- size: SIZE,
892
- onClick: addRepeaterItem,
893
- "aria-label": __4("Add item", "elementor")
883
+ direction: "row",
884
+ justifyContent: "start",
885
+ alignItems: "center",
886
+ gap: 1,
887
+ sx: { marginInlineEnd: -0.75 }
894
888
  },
895
- /* @__PURE__ */ React23.createElement(PlusIcon, { fontSize: SIZE })
896
- )), 0 < uniqueKeys.length && /* @__PURE__ */ React23.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
889
+ /* @__PURE__ */ React23.createElement(Typography, { component: "label", variant: "caption", color: "text.secondary" }, label),
890
+ /* @__PURE__ */ React23.createElement(ControlAdornments, null),
891
+ /* @__PURE__ */ React23.createElement(
892
+ IconButton,
893
+ {
894
+ sx: { ml: "auto" },
895
+ size: SIZE,
896
+ onClick: addRepeaterItem,
897
+ "aria-label": __4("Add item", "elementor")
898
+ },
899
+ /* @__PURE__ */ React23.createElement(PlusIcon, { fontSize: SIZE })
900
+ )
901
+ ), 0 < uniqueKeys.length && /* @__PURE__ */ React23.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key, index) => {
897
902
  const value = items[index];
898
903
  if (!value) {
899
904
  return null;
@@ -1316,7 +1321,6 @@ function EqualUnequalSizesControl({
1316
1321
  },
1317
1322
  ...bindPopover2(popupState),
1318
1323
  slotProps: {
1319
- // eslint-disable-next-line react-compiler/react-compiler
1320
1324
  paper: { sx: { mt: 0.5, width: controlRef.current?.getBoundingClientRect().width } }
1321
1325
  }
1322
1326
  },
@@ -1911,7 +1915,8 @@ var LinkControl = createControl((props) => {
1911
1915
  direction: "row",
1912
1916
  sx: {
1913
1917
  justifyContent: "space-between",
1914
- alignItems: "center"
1918
+ alignItems: "center",
1919
+ marginInlineEnd: -0.75
1915
1920
  }
1916
1921
  },
1917
1922
  /* @__PURE__ */ React34.createElement(ControlFormLabel, null, __9("Link", "elementor")),
@@ -1950,7 +1955,7 @@ var SwitchControl = ({ disabled }) => {
1950
1955
  opacity: 0
1951
1956
  }
1952
1957
  } : {};
1953
- return /* @__PURE__ */ React34.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React34.createElement(Grid7, { item: true }, /* @__PURE__ */ React34.createElement(ControlFormLabel, null, __9("Open in a new tab", "elementor"))), /* @__PURE__ */ React34.createElement(Grid7, { item: true }, /* @__PURE__ */ React34.createElement(Switch, { checked: value, onClick, disabled, inputProps })));
1958
+ return /* @__PURE__ */ React34.createElement(Grid7, { container: true, alignItems: "center", flexWrap: "nowrap", justifyContent: "space-between" }, /* @__PURE__ */ React34.createElement(Grid7, { item: true }, /* @__PURE__ */ React34.createElement(ControlFormLabel, null, __9("Open in a new tab", "elementor"))), /* @__PURE__ */ React34.createElement(Grid7, { item: true, sx: { marginInlineEnd: -1 } }, /* @__PURE__ */ React34.createElement(Switch, { checked: value, onClick, disabled, inputProps })));
1954
1959
  };
1955
1960
  async function fetchOptions(ajaxUrl, params) {
1956
1961
  if (!params || !ajaxUrl) {
@@ -2772,7 +2777,7 @@ export {
2772
2777
  ControlAdornments,
2773
2778
  ControlAdornmentsProvider,
2774
2779
  ControlFormLabel,
2775
- ControlReplacementProvider,
2780
+ ControlReplacementsProvider,
2776
2781
  ControlToggleButtonGroup,
2777
2782
  EqualUnequalSizesControl,
2778
2783
  FontFamilyControl,
@@ -2791,7 +2796,7 @@ export {
2791
2796
  TextControl,
2792
2797
  ToggleControl,
2793
2798
  UrlControl,
2794
- createControlReplacement,
2799
+ createControlReplacementsRegistry,
2795
2800
  useBoundProp,
2796
2801
  useControlActions,
2797
2802
  useSyncExternalState