@elementor/editor-controls 4.1.0-831 → 4.1.0-833

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
@@ -7417,40 +7417,16 @@ import { __ as __53 } from "@wordpress/i18n";
7417
7417
 
7418
7418
  // src/controls/date-string-control.tsx
7419
7419
  import * as React107 from "react";
7420
- import * as dayjs2 from "dayjs";
7421
7420
  import { dateStringPropTypeUtil } from "@elementor/editor-props";
7422
7421
  import { DatePicker as DatePicker2, LocalizationProvider as LocalizationProvider2 } from "@elementor/ui";
7422
+
7423
+ // src/utils/date-time.ts
7424
+ import * as dayjs2 from "dayjs";
7423
7425
  var DATE_FORMAT2 = "YYYY-MM-DD";
7424
- var DateStringControl = createControl(({ inputDisabled, ariaLabel, error }) => {
7425
- const { value, setValue, disabled } = useBoundProp(dateStringPropTypeUtil);
7426
- const isDisabled = inputDisabled ?? disabled;
7427
- const slotProps = {
7428
- textField: {
7429
- size: "tiny",
7430
- fullWidth: true,
7431
- error,
7432
- inputProps: ariaLabel ? { "aria-label": ariaLabel } : void 0
7433
- },
7434
- openPickerButton: { size: "tiny" },
7435
- openPickerIcon: { fontSize: "tiny" }
7436
- };
7437
- const handleChange = (newValue, format) => {
7438
- if (!newValue) {
7439
- setValue(null);
7440
- return;
7441
- }
7442
- setValue(newValue.format(format));
7443
- };
7444
- return /* @__PURE__ */ React107.createElement(LocalizationProvider2, null, /* @__PURE__ */ React107.createElement(ControlActions, null, /* @__PURE__ */ React107.createElement(
7445
- DatePicker2,
7446
- {
7447
- value: parseDateString(value ?? ""),
7448
- onChange: (newValue) => handleChange(newValue, DATE_FORMAT2),
7449
- disabled: isDisabled,
7450
- slotProps
7451
- }
7452
- )));
7453
- });
7426
+ var TIME_FORMAT2 = "HH:mm";
7427
+ function isValidDayjs(value) {
7428
+ return !!value && typeof value.isValid === "function" && value.isValid();
7429
+ }
7454
7430
  function parseDateString(raw) {
7455
7431
  if (!raw) {
7456
7432
  return null;
@@ -7458,17 +7434,66 @@ function parseDateString(raw) {
7458
7434
  const parsed = dayjs2.default(raw);
7459
7435
  return isValidDayjs(parsed) ? parsed : null;
7460
7436
  }
7461
- function isValidDayjs(value) {
7462
- return !!value && typeof value.isValid === "function" && value.isValid();
7437
+ function parseTimeString(raw) {
7438
+ if (!raw) {
7439
+ return null;
7440
+ }
7441
+ const [hours, minutes, seconds] = raw.split(":");
7442
+ const h = Number.parseInt(hours ?? "", 10);
7443
+ const m = Number.parseInt(minutes ?? "", 10);
7444
+ const s = Number.parseInt(seconds ?? "0", 10);
7445
+ if (Number.isNaN(h) || Number.isNaN(m)) {
7446
+ return null;
7447
+ }
7448
+ const base = dayjs2.default();
7449
+ return base.hour(h).minute(m).second(Number.isNaN(s) ? 0 : s).millisecond(0);
7463
7450
  }
7464
7451
 
7452
+ // src/controls/date-string-control.tsx
7453
+ var DateStringControl = createControl(
7454
+ ({ inputDisabled, ariaLabel, error, coerceInvalidToNull = false }) => {
7455
+ const { value, setValue, disabled } = useBoundProp(dateStringPropTypeUtil);
7456
+ const isDisabled = inputDisabled ?? disabled;
7457
+ const slotProps = {
7458
+ textField: {
7459
+ size: "tiny",
7460
+ fullWidth: true,
7461
+ error,
7462
+ inputProps: ariaLabel ? { "aria-label": ariaLabel } : void 0
7463
+ },
7464
+ openPickerButton: { size: "tiny" },
7465
+ openPickerIcon: { fontSize: "tiny" }
7466
+ };
7467
+ const handleChange = (newValue, format) => {
7468
+ if (!newValue) {
7469
+ setValue(null);
7470
+ return;
7471
+ }
7472
+ if (coerceInvalidToNull && !isValidDayjs(newValue)) {
7473
+ setValue(null);
7474
+ return;
7475
+ }
7476
+ setValue(newValue.format(format));
7477
+ };
7478
+ return /* @__PURE__ */ React107.createElement(LocalizationProvider2, null, /* @__PURE__ */ React107.createElement(ControlActions, null, /* @__PURE__ */ React107.createElement(
7479
+ DatePicker2,
7480
+ {
7481
+ value: parseDateString(value ?? ""),
7482
+ onChange: (newValue) => handleChange(newValue, DATE_FORMAT2),
7483
+ disabled: isDisabled,
7484
+ slotProps
7485
+ }
7486
+ )));
7487
+ }
7488
+ );
7489
+
7465
7490
  // src/controls/date-range-control.tsx
7466
7491
  var RANGE_LABELS = {
7467
7492
  min: __53("Min date", "elementor"),
7468
7493
  max: __53("Max date", "elementor")
7469
7494
  };
7470
7495
  var isMaxBeforeMin = (minIso, maxIso) => {
7471
- if (!minIso || !maxIso || [minIso, maxIso].some((v) => v === "Invalid Date")) {
7496
+ if (!minIso || !maxIso) {
7472
7497
  return false;
7473
7498
  }
7474
7499
  return maxIso < minIso;
@@ -7500,18 +7525,76 @@ var BoundDateStringControl = ({
7500
7525
  ariaLabel,
7501
7526
  error
7502
7527
  }) => {
7503
- return /* @__PURE__ */ React108.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React108.createElement(DateStringControl, { ariaLabel, error }));
7528
+ return /* @__PURE__ */ React108.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React108.createElement(DateStringControl, { ariaLabel, error, coerceInvalidToNull: true }));
7504
7529
  };
7505
7530
 
7506
- // src/controls/inline-editing-control.tsx
7531
+ // src/controls/time-string-control.tsx
7532
+ import * as React109 from "react";
7533
+ import { timeStringPropTypeUtil } from "@elementor/editor-props";
7534
+ import { LocalizationProvider as LocalizationProvider3, TimePicker as TimePicker2 } from "@elementor/ui";
7535
+ var TimeStringControl = createControl(
7536
+ ({ inputDisabled, ariaLabel, error, coerceInvalidToNull = false }) => {
7537
+ const { value, setValue, disabled } = useBoundProp(timeStringPropTypeUtil);
7538
+ const isDisabled = inputDisabled ?? disabled;
7539
+ const slotProps = {
7540
+ textField: {
7541
+ size: "tiny",
7542
+ fullWidth: true,
7543
+ error,
7544
+ inputProps: ariaLabel ? { "aria-label": ariaLabel } : void 0
7545
+ },
7546
+ openPickerButton: { size: "tiny" },
7547
+ openPickerIcon: { fontSize: "tiny" }
7548
+ };
7549
+ const handleChange = (newValue, format) => {
7550
+ if (!newValue) {
7551
+ setValue(null);
7552
+ return;
7553
+ }
7554
+ if (coerceInvalidToNull && !isValidDayjs(newValue)) {
7555
+ setValue(null);
7556
+ return;
7557
+ }
7558
+ setValue(newValue.format(format));
7559
+ };
7560
+ return /* @__PURE__ */ React109.createElement(LocalizationProvider3, null, /* @__PURE__ */ React109.createElement(ControlActions, null, /* @__PURE__ */ React109.createElement(
7561
+ TimePicker2,
7562
+ {
7563
+ value: parseTimeString(value ?? ""),
7564
+ onChange: (newValue) => handleChange(newValue, TIME_FORMAT2),
7565
+ disabled: isDisabled,
7566
+ slotProps
7567
+ }
7568
+ )));
7569
+ }
7570
+ );
7571
+
7572
+ // src/controls/time-range-control.tsx
7507
7573
  import * as React110 from "react";
7574
+ import { timeRangePropTypeUtil } from "@elementor/editor-props";
7575
+ import { Grid as Grid30, Stack as Stack18 } from "@elementor/ui";
7576
+ import { __ as __54 } from "@wordpress/i18n";
7577
+ var RANGE_LABELS2 = {
7578
+ min: __54("Start time", "elementor"),
7579
+ max: __54("End time", "elementor")
7580
+ };
7581
+ var TimeRangeControl = createControl(() => {
7582
+ const { value, setValue, ...propContext } = useBoundProp(timeRangePropTypeUtil);
7583
+ return /* @__PURE__ */ React110.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React110.createElement(Stack18, { direction: "row", gap: 2, flexWrap: "nowrap" }, /* @__PURE__ */ React110.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, RANGE_LABELS2.min)), /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(BoundTimeStringControl, { bind: "min", ariaLabel: RANGE_LABELS2.min }))), /* @__PURE__ */ React110.createElement(Grid30, { container: true, gap: 0.75, alignItems: "center" }, /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(ControlFormLabel, null, RANGE_LABELS2.max)), /* @__PURE__ */ React110.createElement(Grid30, { item: true, xs: 12 }, /* @__PURE__ */ React110.createElement(BoundTimeStringControl, { bind: "max", ariaLabel: RANGE_LABELS2.max })))));
7584
+ });
7585
+ var BoundTimeStringControl = ({ bind, ariaLabel }) => {
7586
+ return /* @__PURE__ */ React110.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React110.createElement(TimeStringControl, { ariaLabel, coerceInvalidToNull: true }));
7587
+ };
7588
+
7589
+ // src/controls/inline-editing-control.tsx
7590
+ import * as React112 from "react";
7508
7591
  import { useCallback as useCallback4, useEffect as useEffect17, useMemo as useMemo16 } from "react";
7509
7592
  import { htmlV3PropTypeUtil, parseHtmlChildren, stringPropTypeUtil as stringPropTypeUtil18 } from "@elementor/editor-props";
7510
7593
  import { Box as Box24 } from "@elementor/ui";
7511
7594
  import { debounce as debounce4 } from "@elementor/utils";
7512
7595
 
7513
7596
  // src/components/inline-editor.tsx
7514
- import * as React109 from "react";
7597
+ import * as React111 from "react";
7515
7598
  import { useEffect as useEffect16, useRef as useRef27 } from "react";
7516
7599
  import { Box as Box23 } from "@elementor/ui";
7517
7600
  import Bold from "@tiptap/extension-bold";
@@ -7550,7 +7633,7 @@ function htmlToPlainText(html) {
7550
7633
  var ITALIC_KEYBOARD_SHORTCUT = "i";
7551
7634
  var BOLD_KEYBOARD_SHORTCUT = "b";
7552
7635
  var UNDERLINE_KEYBOARD_SHORTCUT = "u";
7553
- var InlineEditor = React109.forwardRef((props, ref) => {
7636
+ var InlineEditor = React111.forwardRef((props, ref) => {
7554
7637
  const {
7555
7638
  value,
7556
7639
  setValue,
@@ -7661,7 +7744,7 @@ var InlineEditor = React109.forwardRef((props, ref) => {
7661
7744
  if (mountElement) {
7662
7745
  return null;
7663
7746
  }
7664
- return /* @__PURE__ */ React109.createElement(Box23, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React109.createElement(EditorContent, { ref, editor }));
7747
+ return /* @__PURE__ */ React111.createElement(Box23, { ref: containerRef, sx, className: wrapperClassName }, /* @__PURE__ */ React111.createElement(EditorContent, { ref, editor }));
7665
7748
  });
7666
7749
  var useOnUpdate = (callback, dependencies) => {
7667
7750
  const hasMounted = useRef27(false);
@@ -7706,7 +7789,7 @@ var InlineEditingControl = createControl(
7706
7789
  [setValue, value?.children, debouncedParse]
7707
7790
  );
7708
7791
  useEffect17(() => () => debouncedParse.cancel(), [debouncedParse]);
7709
- return /* @__PURE__ */ React110.createElement(ControlActions, null, /* @__PURE__ */ React110.createElement(
7792
+ return /* @__PURE__ */ React112.createElement(ControlActions, null, /* @__PURE__ */ React112.createElement(
7710
7793
  Box24,
7711
7794
  {
7712
7795
  sx: {
@@ -7751,7 +7834,7 @@ var InlineEditingControl = createControl(
7751
7834
  ...attributes,
7752
7835
  ...props
7753
7836
  },
7754
- /* @__PURE__ */ React110.createElement(
7837
+ /* @__PURE__ */ React112.createElement(
7755
7838
  InlineEditor,
7756
7839
  {
7757
7840
  value: content,
@@ -7764,12 +7847,12 @@ var InlineEditingControl = createControl(
7764
7847
  );
7765
7848
 
7766
7849
  // src/controls/email-form-action-control.tsx
7767
- import * as React111 from "react";
7850
+ import * as React113 from "react";
7768
7851
  import { emailPropTypeUtil } from "@elementor/editor-props";
7769
7852
  import { CollapsibleContent, InfoAlert as InfoAlert2 } from "@elementor/editor-ui";
7770
- import { Box as Box25, Divider as Divider5, Grid as Grid30, Stack as Stack18 } from "@elementor/ui";
7853
+ import { Box as Box25, Divider as Divider5, Grid as Grid31, Stack as Stack19 } from "@elementor/ui";
7771
7854
  import { hasProInstalled as hasProInstalled3, isVersionGreaterOrEqual as isVersionGreaterOrEqual2 } from "@elementor/utils";
7772
- import { __ as __54 } from "@wordpress/i18n";
7855
+ import { __ as __55 } from "@wordpress/i18n";
7773
7856
 
7774
7857
  // src/hooks/use-form-field-suggestions.ts
7775
7858
  import { getContainer, getSelectedElements as getSelectedElements3 } from "@elementor/editor-elements";
@@ -7780,7 +7863,9 @@ var FORM_FIELD_WIDGET_TYPES = [
7780
7863
  "e-form-textarea",
7781
7864
  "e-form-checkbox",
7782
7865
  "e-form-radio-button",
7783
- "e-form-select"
7866
+ "e-form-select",
7867
+ "e-form-date-picker",
7868
+ "e-form-time-picker"
7784
7869
  ];
7785
7870
  function useFormFieldSuggestions(options) {
7786
7871
  return useListenTo(
@@ -7826,14 +7911,14 @@ function useFormFieldSuggestions(options) {
7826
7911
  }
7827
7912
 
7828
7913
  // src/controls/email-form-action-control.tsx
7829
- var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React111.createElement(Grid30, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(TextControl, { placeholder }))));
7830
- var SendToField = ({ placeholder }) => /* @__PURE__ */ React111.createElement(EmailField, { bind: "to", label: __54("Send to", "elementor"), placeholder });
7831
- var SubjectField = () => /* @__PURE__ */ React111.createElement(
7914
+ var EmailField = ({ bind, label, placeholder }) => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(TextControl, { placeholder }))));
7915
+ var SendToField = ({ placeholder }) => /* @__PURE__ */ React113.createElement(EmailField, { bind: "to", label: __55("Send to", "elementor"), placeholder });
7916
+ var SubjectField = () => /* @__PURE__ */ React113.createElement(
7832
7917
  EmailField,
7833
7918
  {
7834
7919
  bind: "subject",
7835
- label: __54("Email subject", "elementor"),
7836
- placeholder: __54("New form submission", "elementor")
7920
+ label: __55("Email subject", "elementor"),
7921
+ placeholder: __55("New form submission", "elementor")
7837
7922
  }
7838
7923
  );
7839
7924
  var MIN_PRO_VERSION_FOR_MENTIONS = "4.1.0";
@@ -7849,89 +7934,89 @@ var shouldShowMentionsInfo = () => {
7849
7934
  };
7850
7935
  var MessageField = () => {
7851
7936
  const suggestions = useFormFieldSuggestions();
7852
- return /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind: "message" }, /* @__PURE__ */ React111.createElement(Grid30, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(ControlFormLabel, null, __54("Message", "elementor"))), /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(MentionTextAreaControl, { suggestions })), /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(InfoAlert2, null, shouldShowMentionsInfo() ? __54(
7937
+ return /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "message" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Message", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(MentionTextAreaControl, { suggestions })), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(InfoAlert2, null, shouldShowMentionsInfo() ? __55(
7853
7938
  "[all-fields] shortcode sends all fields. Type @ to insert specific fields and customize your message.",
7854
7939
  "elementor"
7855
- ) : __54("[all-fields] shortcode sends all fields.", "elementor")))));
7940
+ ) : __55("[all-fields] shortcode sends all fields.", "elementor")))));
7856
7941
  };
7857
- var FromEmailField = () => /* @__PURE__ */ React111.createElement(
7942
+ var FromEmailField = () => /* @__PURE__ */ React113.createElement(
7858
7943
  EmailField,
7859
7944
  {
7860
7945
  bind: "from",
7861
- label: __54("From email", "elementor"),
7862
- placeholder: __54("What email should appear as the sender?", "elementor")
7946
+ label: __55("From email", "elementor"),
7947
+ placeholder: __55("What email should appear as the sender?", "elementor")
7863
7948
  }
7864
7949
  );
7865
- var FromNameField = () => /* @__PURE__ */ React111.createElement(
7950
+ var FromNameField = () => /* @__PURE__ */ React113.createElement(
7866
7951
  EmailField,
7867
7952
  {
7868
7953
  bind: "from-name",
7869
- label: __54("From name", "elementor"),
7870
- placeholder: __54("What name should appear as the sender?", "elementor")
7954
+ label: __55("From name", "elementor"),
7955
+ placeholder: __55("What name should appear as the sender?", "elementor")
7871
7956
  }
7872
7957
  );
7873
7958
  var ReplyToField = () => {
7874
7959
  const emailSuggestions = useFormFieldSuggestions({ inputType: "email" });
7875
- return /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind: "reply-to" }, /* @__PURE__ */ React111.createElement(Grid30, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(ControlFormLabel, null, __54("Reply-to", "elementor"))), /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(
7960
+ return /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "reply-to" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Reply-to", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(
7876
7961
  MentionTextAreaControl,
7877
7962
  {
7878
7963
  suggestions: emailSuggestions,
7879
7964
  rows: 1,
7880
7965
  triggerPosition: "start",
7881
- placeholder: __54("You can type @ to insert an email field", "elementor")
7966
+ placeholder: __55("You can type @ to insert an email field", "elementor")
7882
7967
  }
7883
7968
  ))));
7884
7969
  };
7885
- var CcField = () => /* @__PURE__ */ React111.createElement(EmailField, { bind: "cc", label: __54("Cc", "elementor") });
7886
- var BccField = () => /* @__PURE__ */ React111.createElement(EmailField, { bind: "bcc", label: __54("Bcc", "elementor") });
7887
- var MetaDataField = () => /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React111.createElement(Stack18, { gap: 0.5 }, /* @__PURE__ */ React111.createElement(ControlFormLabel, null, __54("Metadata", "elementor")), /* @__PURE__ */ React111.createElement(
7970
+ var CcField = () => /* @__PURE__ */ React113.createElement(EmailField, { bind: "cc", label: __55("Cc", "elementor") });
7971
+ var BccField = () => /* @__PURE__ */ React113.createElement(EmailField, { bind: "bcc", label: __55("Bcc", "elementor") });
7972
+ var MetaDataField = () => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "meta-data" }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 0.5 }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Metadata", "elementor")), /* @__PURE__ */ React113.createElement(
7888
7973
  ChipsControl,
7889
7974
  {
7890
7975
  options: [
7891
- { label: __54("Date", "elementor"), value: "date" },
7892
- { label: __54("Time", "elementor"), value: "time" },
7893
- { label: __54("Page URL", "elementor"), value: "page-url" },
7894
- { label: __54("User agent", "elementor"), value: "user-agent" },
7895
- { label: __54("Credit", "elementor"), value: "credit" }
7976
+ { label: __55("Date", "elementor"), value: "date" },
7977
+ { label: __55("Time", "elementor"), value: "time" },
7978
+ { label: __55("Page URL", "elementor"), value: "page-url" },
7979
+ { label: __55("User agent", "elementor"), value: "user-agent" },
7980
+ { label: __55("Credit", "elementor"), value: "credit" }
7896
7981
  ]
7897
7982
  }
7898
7983
  )));
7899
- var SendAsField = () => /* @__PURE__ */ React111.createElement(PropKeyProvider, { bind: "send-as" }, /* @__PURE__ */ React111.createElement(Grid30, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(ControlFormLabel, null, __54("Send as", "elementor"))), /* @__PURE__ */ React111.createElement(Grid30, { item: true }, /* @__PURE__ */ React111.createElement(
7984
+ var SendAsField = () => /* @__PURE__ */ React113.createElement(PropKeyProvider, { bind: "send-as" }, /* @__PURE__ */ React113.createElement(Grid31, { container: true, direction: "column", gap: 0.5 }, /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(ControlFormLabel, null, __55("Send as", "elementor"))), /* @__PURE__ */ React113.createElement(Grid31, { item: true }, /* @__PURE__ */ React113.createElement(
7900
7985
  SelectControl,
7901
7986
  {
7902
7987
  options: [
7903
- { label: __54("HTML", "elementor"), value: "html" },
7904
- { label: __54("Plain Text", "elementor"), value: "plain" }
7988
+ { label: __55("HTML", "elementor"), value: "html" },
7989
+ { label: __55("Plain Text", "elementor"), value: "plain" }
7905
7990
  ]
7906
7991
  }
7907
7992
  ))));
7908
- var AdvancedSettings = () => /* @__PURE__ */ React111.createElement(CollapsibleContent, { defaultOpen: false }, /* @__PURE__ */ React111.createElement(Box25, { sx: { pt: 2 } }, /* @__PURE__ */ React111.createElement(Stack18, { gap: 2 }, /* @__PURE__ */ React111.createElement(FromNameField, null), /* @__PURE__ */ React111.createElement(ReplyToField, null), /* @__PURE__ */ React111.createElement(CcField, null), /* @__PURE__ */ React111.createElement(BccField, null), /* @__PURE__ */ React111.createElement(Divider5, null), /* @__PURE__ */ React111.createElement(MetaDataField, null), /* @__PURE__ */ React111.createElement(SendAsField, null))));
7993
+ var AdvancedSettings = () => /* @__PURE__ */ React113.createElement(CollapsibleContent, { defaultOpen: false }, /* @__PURE__ */ React113.createElement(Box25, { sx: { pt: 2 } }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 2 }, /* @__PURE__ */ React113.createElement(FromNameField, null), /* @__PURE__ */ React113.createElement(ReplyToField, null), /* @__PURE__ */ React113.createElement(CcField, null), /* @__PURE__ */ React113.createElement(BccField, null), /* @__PURE__ */ React113.createElement(Divider5, null), /* @__PURE__ */ React113.createElement(MetaDataField, null), /* @__PURE__ */ React113.createElement(SendAsField, null))));
7909
7994
  var EmailFormActionControl = createControl(({ toPlaceholder }) => {
7910
7995
  const { value, setValue, ...propContext } = useBoundProp(emailPropTypeUtil);
7911
- return /* @__PURE__ */ React111.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React111.createElement(Stack18, { gap: 2 }, /* @__PURE__ */ React111.createElement(ControlLabel, null, __54("Email settings", "elementor")), /* @__PURE__ */ React111.createElement(SendToField, { placeholder: toPlaceholder }), /* @__PURE__ */ React111.createElement(SubjectField, null), /* @__PURE__ */ React111.createElement(MessageField, null), /* @__PURE__ */ React111.createElement(FromEmailField, null), /* @__PURE__ */ React111.createElement(AdvancedSettings, null)));
7996
+ return /* @__PURE__ */ React113.createElement(PropProvider, { ...propContext, value, setValue }, /* @__PURE__ */ React113.createElement(Stack19, { gap: 2 }, /* @__PURE__ */ React113.createElement(ControlLabel, null, __55("Email settings", "elementor")), /* @__PURE__ */ React113.createElement(SendToField, { placeholder: toPlaceholder }), /* @__PURE__ */ React113.createElement(SubjectField, null), /* @__PURE__ */ React113.createElement(MessageField, null), /* @__PURE__ */ React113.createElement(FromEmailField, null), /* @__PURE__ */ React113.createElement(AdvancedSettings, null)));
7912
7997
  });
7913
7998
 
7914
7999
  // src/controls/attachment-type-control.tsx
7915
- import * as React112 from "react";
8000
+ import * as React114 from "react";
7916
8001
  import { InfoAlert as InfoAlert3 } from "@elementor/editor-ui";
7917
- import { Grid as Grid31 } from "@elementor/ui";
7918
- import { __ as __55 } from "@wordpress/i18n";
8002
+ import { Grid as Grid32 } from "@elementor/ui";
8003
+ import { __ as __56 } from "@wordpress/i18n";
7919
8004
  var AttachmentTypeControl = createControl(({ label, options }) => {
7920
- return /* @__PURE__ */ React112.createElement(Grid31, { container: true, direction: "column", gap: 1 }, label && /* @__PURE__ */ React112.createElement(Grid31, { item: true }, /* @__PURE__ */ React112.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React112.createElement(Grid31, { item: true }, /* @__PURE__ */ React112.createElement(SelectControl, { options })), /* @__PURE__ */ React112.createElement(Grid31, { item: true }, /* @__PURE__ */ React112.createElement(InfoAlert3, null, __55(
8005
+ return /* @__PURE__ */ React114.createElement(Grid32, { container: true, direction: "column", gap: 1 }, label && /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(ControlFormLabel, null, label)), /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(SelectControl, { options })), /* @__PURE__ */ React114.createElement(Grid32, { item: true }, /* @__PURE__ */ React114.createElement(InfoAlert3, null, __56(
7921
8006
  "Linked uploads are saved to the server. Direct attachments will not appear under Submissions.",
7922
8007
  "elementor"
7923
8008
  ))));
7924
8009
  });
7925
8010
 
7926
8011
  // src/components/promotions/display-conditions-control.tsx
7927
- import * as React114 from "react";
8012
+ import * as React116 from "react";
7928
8013
  import { useRef as useRef28 } from "react";
7929
8014
  import { SitemapIcon } from "@elementor/icons";
7930
- import { IconButton as IconButton8, Stack as Stack19, Tooltip as Tooltip9 } from "@elementor/ui";
7931
- import { __ as __56 } from "@wordpress/i18n";
8015
+ import { IconButton as IconButton8, Stack as Stack20, Tooltip as Tooltip9 } from "@elementor/ui";
8016
+ import { __ as __57 } from "@wordpress/i18n";
7932
8017
 
7933
8018
  // src/components/promotions/promotion-trigger.tsx
7934
- import * as React113 from "react";
8019
+ import * as React115 from "react";
7935
8020
  import { forwardRef as forwardRef12, useCallback as useCallback5, useImperativeHandle, useState as useState19 } from "react";
7936
8021
  import { PromotionChip as PromotionChip2, PromotionInfotip } from "@elementor/editor-ui";
7937
8022
  import { Box as Box26 } from "@elementor/ui";
@@ -7951,7 +8036,7 @@ var PromotionTrigger = forwardRef12(
7951
8036
  });
7952
8037
  }, [trackingData]);
7953
8038
  useImperativeHandle(ref, () => ({ toggle }), [toggle]);
7954
- return /* @__PURE__ */ React113.createElement(React113.Fragment, null, promotion && /* @__PURE__ */ React113.createElement(
8039
+ return /* @__PURE__ */ React115.createElement(React115.Fragment, null, promotion && /* @__PURE__ */ React115.createElement(
7955
8040
  PromotionInfotip,
7956
8041
  {
7957
8042
  title: promotion.title,
@@ -7965,7 +8050,7 @@ var PromotionTrigger = forwardRef12(
7965
8050
  },
7966
8051
  onCtaClick: () => trackUpgradePromotionClick(trackingData)
7967
8052
  },
7968
- /* @__PURE__ */ React113.createElement(
8053
+ /* @__PURE__ */ React115.createElement(
7969
8054
  Box26,
7970
8055
  {
7971
8056
  onClick: (e) => {
@@ -7974,19 +8059,19 @@ var PromotionTrigger = forwardRef12(
7974
8059
  },
7975
8060
  sx: { cursor: "pointer", display: "inline-flex" }
7976
8061
  },
7977
- children ?? /* @__PURE__ */ React113.createElement(PromotionChip2, null)
8062
+ children ?? /* @__PURE__ */ React115.createElement(PromotionChip2, null)
7978
8063
  )
7979
8064
  ));
7980
8065
  }
7981
8066
  );
7982
8067
 
7983
8068
  // src/components/promotions/display-conditions-control.tsx
7984
- var ARIA_LABEL = __56("Display Conditions", "elementor");
8069
+ var ARIA_LABEL = __57("Display Conditions", "elementor");
7985
8070
  var TRACKING_DATA = { target_name: "display_conditions", location_l2: "general" };
7986
8071
  var DisplayConditionsControl = createControl(() => {
7987
8072
  const triggerRef = useRef28(null);
7988
- return /* @__PURE__ */ React114.createElement(
7989
- Stack19,
8073
+ return /* @__PURE__ */ React116.createElement(
8074
+ Stack20,
7990
8075
  {
7991
8076
  direction: "row",
7992
8077
  spacing: 2,
@@ -7995,8 +8080,8 @@ var DisplayConditionsControl = createControl(() => {
7995
8080
  alignItems: "center"
7996
8081
  }
7997
8082
  },
7998
- /* @__PURE__ */ React114.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "displayConditions", trackingData: TRACKING_DATA }),
7999
- /* @__PURE__ */ React114.createElement(Tooltip9, { title: ARIA_LABEL, placement: "top" }, /* @__PURE__ */ React114.createElement(
8083
+ /* @__PURE__ */ React116.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "displayConditions", trackingData: TRACKING_DATA }),
8084
+ /* @__PURE__ */ React116.createElement(Tooltip9, { title: ARIA_LABEL, placement: "top" }, /* @__PURE__ */ React116.createElement(
8000
8085
  IconButton8,
8001
8086
  {
8002
8087
  size: "tiny",
@@ -8009,23 +8094,23 @@ var DisplayConditionsControl = createControl(() => {
8009
8094
  borderRadius: 1
8010
8095
  }
8011
8096
  },
8012
- /* @__PURE__ */ React114.createElement(SitemapIcon, { fontSize: "tiny", color: "disabled" })
8097
+ /* @__PURE__ */ React116.createElement(SitemapIcon, { fontSize: "tiny", color: "disabled" })
8013
8098
  ))
8014
8099
  );
8015
8100
  });
8016
8101
 
8017
8102
  // src/components/promotions/attributes-control.tsx
8018
- import * as React115 from "react";
8103
+ import * as React117 from "react";
8019
8104
  import { useRef as useRef29 } from "react";
8020
8105
  import { PlusIcon as PlusIcon3 } from "@elementor/icons";
8021
- import { Stack as Stack20, Tooltip as Tooltip10 } from "@elementor/ui";
8022
- import { __ as __57 } from "@wordpress/i18n";
8023
- var ARIA_LABEL2 = __57("Attributes", "elementor");
8106
+ import { Stack as Stack21, Tooltip as Tooltip10 } from "@elementor/ui";
8107
+ import { __ as __58 } from "@wordpress/i18n";
8108
+ var ARIA_LABEL2 = __58("Attributes", "elementor");
8024
8109
  var TRACKING_DATA2 = { target_name: "attributes", location_l2: "general" };
8025
8110
  var AttributesControl = createControl(() => {
8026
8111
  const triggerRef = useRef29(null);
8027
- return /* @__PURE__ */ React115.createElement(
8028
- Stack20,
8112
+ return /* @__PURE__ */ React117.createElement(
8113
+ Stack21,
8029
8114
  {
8030
8115
  direction: "row",
8031
8116
  spacing: 2,
@@ -8034,8 +8119,8 @@ var AttributesControl = createControl(() => {
8034
8119
  alignItems: "center"
8035
8120
  }
8036
8121
  },
8037
- /* @__PURE__ */ React115.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "attributes", trackingData: TRACKING_DATA2 }),
8038
- /* @__PURE__ */ React115.createElement(Tooltip10, { title: ARIA_LABEL2, placement: "top" }, /* @__PURE__ */ React115.createElement(
8122
+ /* @__PURE__ */ React117.createElement(PromotionTrigger, { ref: triggerRef, promotionKey: "attributes", trackingData: TRACKING_DATA2 }),
8123
+ /* @__PURE__ */ React117.createElement(Tooltip10, { title: ARIA_LABEL2, placement: "top" }, /* @__PURE__ */ React117.createElement(
8039
8124
  PlusIcon3,
8040
8125
  {
8041
8126
  "aria-label": ARIA_LABEL2,
@@ -8049,17 +8134,17 @@ var AttributesControl = createControl(() => {
8049
8134
  });
8050
8135
 
8051
8136
  // src/components/icon-buttons/clear-icon-button.tsx
8052
- import * as React116 from "react";
8137
+ import * as React118 from "react";
8053
8138
  import { BrushBigIcon } from "@elementor/icons";
8054
8139
  import { IconButton as IconButton9, styled as styled11, Tooltip as Tooltip11 } from "@elementor/ui";
8055
8140
  var CustomIconButton = styled11(IconButton9)(({ theme }) => ({
8056
8141
  width: theme.spacing(2.5),
8057
8142
  height: theme.spacing(2.5)
8058
8143
  }));
8059
- var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */ React116.createElement(Tooltip11, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React116.createElement(CustomIconButton, { "aria-label": tooltipText, size, onClick, disabled }, /* @__PURE__ */ React116.createElement(BrushBigIcon, { fontSize: size })));
8144
+ var ClearIconButton = ({ tooltipText, onClick, disabled, size = "tiny" }) => /* @__PURE__ */ React118.createElement(Tooltip11, { title: tooltipText, placement: "top", disableInteractive: true }, /* @__PURE__ */ React118.createElement(CustomIconButton, { "aria-label": tooltipText, size, onClick, disabled }, /* @__PURE__ */ React118.createElement(BrushBigIcon, { fontSize: size })));
8060
8145
 
8061
8146
  // src/components/repeater/repeater.tsx
8062
- import * as React117 from "react";
8147
+ import * as React119 from "react";
8063
8148
  import { useEffect as useEffect18, useState as useState20 } from "react";
8064
8149
  import { CopyIcon as CopyIcon2, EyeIcon as EyeIcon2, EyeOffIcon as EyeOffIcon2, PlusIcon as PlusIcon4, XIcon as XIcon4 } from "@elementor/icons";
8065
8150
  import {
@@ -8071,7 +8156,7 @@ import {
8071
8156
  Tooltip as Tooltip12,
8072
8157
  usePopupState as usePopupState10
8073
8158
  } from "@elementor/ui";
8074
- import { __ as __58 } from "@wordpress/i18n";
8159
+ import { __ as __59 } from "@wordpress/i18n";
8075
8160
  var SIZE11 = "tiny";
8076
8161
  var EMPTY_OPEN_ITEM2 = -1;
8077
8162
  var Repeater3 = ({
@@ -8152,7 +8237,7 @@ var Repeater3 = ({
8152
8237
  };
8153
8238
  const isButtonDisabled = disabled || disableAddItemButton;
8154
8239
  const shouldShowInfotip = isButtonDisabled && addButtonInfotipContent;
8155
- const addButton = /* @__PURE__ */ React117.createElement(
8240
+ const addButton = /* @__PURE__ */ React119.createElement(
8156
8241
  IconButton10,
8157
8242
  {
8158
8243
  size: SIZE11,
@@ -8161,11 +8246,11 @@ var Repeater3 = ({
8161
8246
  },
8162
8247
  disabled: isButtonDisabled,
8163
8248
  onClick: addRepeaterItem,
8164
- "aria-label": __58("Add item", "elementor")
8249
+ "aria-label": __59("Add item", "elementor")
8165
8250
  },
8166
- /* @__PURE__ */ React117.createElement(PlusIcon4, { fontSize: SIZE11 })
8251
+ /* @__PURE__ */ React119.createElement(PlusIcon4, { fontSize: SIZE11 })
8167
8252
  );
8168
- return /* @__PURE__ */ React117.createElement(SectionContent, { gap: 2 }, /* @__PURE__ */ React117.createElement(RepeaterHeader, { label, adornment: ControlAdornments }, shouldShowInfotip ? /* @__PURE__ */ React117.createElement(
8253
+ return /* @__PURE__ */ React119.createElement(SectionContent, { gap: 2 }, /* @__PURE__ */ React119.createElement(RepeaterHeader, { label, adornment: ControlAdornments }, shouldShowInfotip ? /* @__PURE__ */ React119.createElement(
8169
8254
  Infotip4,
8170
8255
  {
8171
8256
  placement: "right",
@@ -8173,20 +8258,20 @@ var Repeater3 = ({
8173
8258
  color: "secondary",
8174
8259
  slotProps: { popper: { sx: { width: 300 } } }
8175
8260
  },
8176
- /* @__PURE__ */ React117.createElement(Box27, { sx: { ...isButtonDisabled ? { cursor: "not-allowed" } : {} } }, addButton)
8177
- ) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */ React117.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key) => {
8261
+ /* @__PURE__ */ React119.createElement(Box27, { sx: { ...isButtonDisabled ? { cursor: "not-allowed" } : {} } }, addButton)
8262
+ ) : addButton), 0 < uniqueKeys.length && /* @__PURE__ */ React119.createElement(SortableProvider, { value: uniqueKeys, onChange: onChangeOrder }, uniqueKeys.map((key) => {
8178
8263
  const index = uniqueKeys.indexOf(key);
8179
8264
  const value = items2[index];
8180
8265
  if (!value) {
8181
8266
  return null;
8182
8267
  }
8183
- return /* @__PURE__ */ React117.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled: !isSortable }, /* @__PURE__ */ React117.createElement(
8268
+ return /* @__PURE__ */ React119.createElement(SortableItem, { id: key, key: `sortable-${key}`, disabled: !isSortable }, /* @__PURE__ */ React119.createElement(
8184
8269
  RepeaterItem,
8185
8270
  {
8186
8271
  disabled,
8187
8272
  propDisabled: value?.disabled,
8188
- label: /* @__PURE__ */ React117.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React117.createElement(itemSettings.Label, { value, index })),
8189
- startIcon: /* @__PURE__ */ React117.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React117.createElement(itemSettings.Icon, { value })),
8273
+ label: /* @__PURE__ */ React119.createElement(RepeaterItemLabelSlot, { value }, /* @__PURE__ */ React119.createElement(itemSettings.Label, { value, index })),
8274
+ startIcon: /* @__PURE__ */ React119.createElement(RepeaterItemIconSlot, { value }, /* @__PURE__ */ React119.createElement(itemSettings.Icon, { value })),
8190
8275
  removeItem: () => removeRepeaterItem(index),
8191
8276
  duplicateItem: () => duplicateRepeaterItem(index),
8192
8277
  toggleDisableItem: () => toggleDisableRepeaterItem(index),
@@ -8200,7 +8285,7 @@ var Repeater3 = ({
8200
8285
  actions: itemSettings.actions,
8201
8286
  value
8202
8287
  },
8203
- (props) => /* @__PURE__ */ React117.createElement(
8288
+ (props) => /* @__PURE__ */ React119.createElement(
8204
8289
  itemSettings.Content,
8205
8290
  {
8206
8291
  ...props,
@@ -8242,16 +8327,16 @@ var RepeaterItem = ({
8242
8327
  );
8243
8328
  const triggerProps = bindTrigger7(popoverState);
8244
8329
  usePopoverDismiss({ isOpen: popoverState.isOpen, onClose: popoverProps.onClose });
8245
- const duplicateLabel = __58("Duplicate", "elementor");
8246
- const toggleLabel = propDisabled ? __58("Show", "elementor") : __58("Hide", "elementor");
8247
- const removeLabel = __58("Remove", "elementor");
8248
- return /* @__PURE__ */ React117.createElement(Box27, { sx: { display: "contents" } }, /* @__PURE__ */ React117.createElement(
8330
+ const duplicateLabel = __59("Duplicate", "elementor");
8331
+ const toggleLabel = propDisabled ? __59("Show", "elementor") : __59("Hide", "elementor");
8332
+ const removeLabel = __59("Remove", "elementor");
8333
+ return /* @__PURE__ */ React119.createElement(Box27, { sx: { display: "contents" } }, /* @__PURE__ */ React119.createElement(
8249
8334
  RepeaterTag,
8250
8335
  {
8251
8336
  disabled,
8252
8337
  label,
8253
8338
  ref: setRef,
8254
- "aria-label": __58("Open item", "elementor"),
8339
+ "aria-label": __59("Open item", "elementor"),
8255
8340
  ...triggerProps,
8256
8341
  onClick: (e) => {
8257
8342
  triggerProps.onClick(e);
@@ -8260,9 +8345,9 @@ var RepeaterItem = ({
8260
8345
  }
8261
8346
  },
8262
8347
  startIcon,
8263
- actions: /* @__PURE__ */ React117.createElement(React117.Fragment, null, showDuplicate && /* @__PURE__ */ React117.createElement(Tooltip12, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React117.createElement(IconButton10, { size: SIZE11, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React117.createElement(CopyIcon2, { fontSize: SIZE11 }))), showToggle && /* @__PURE__ */ React117.createElement(Tooltip12, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React117.createElement(IconButton10, { size: SIZE11, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React117.createElement(EyeOffIcon2, { fontSize: SIZE11 }) : /* @__PURE__ */ React117.createElement(EyeIcon2, { fontSize: SIZE11 }))), actions?.(value), showRemove && /* @__PURE__ */ React117.createElement(Tooltip12, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React117.createElement(IconButton10, { size: SIZE11, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React117.createElement(XIcon4, { fontSize: SIZE11 }))))
8348
+ actions: /* @__PURE__ */ React119.createElement(React119.Fragment, null, showDuplicate && /* @__PURE__ */ React119.createElement(Tooltip12, { title: duplicateLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: duplicateItem, "aria-label": duplicateLabel }, /* @__PURE__ */ React119.createElement(CopyIcon2, { fontSize: SIZE11 }))), showToggle && /* @__PURE__ */ React119.createElement(Tooltip12, { title: toggleLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: toggleDisableItem, "aria-label": toggleLabel }, propDisabled ? /* @__PURE__ */ React119.createElement(EyeOffIcon2, { fontSize: SIZE11 }) : /* @__PURE__ */ React119.createElement(EyeIcon2, { fontSize: SIZE11 }))), actions?.(value), showRemove && /* @__PURE__ */ React119.createElement(Tooltip12, { title: removeLabel, placement: "top" }, /* @__PURE__ */ React119.createElement(IconButton10, { size: SIZE11, onClick: removeItem, "aria-label": removeLabel }, /* @__PURE__ */ React119.createElement(XIcon4, { fontSize: SIZE11 }))))
8264
8349
  }
8265
- ), /* @__PURE__ */ React117.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React117.createElement(Box27, null, children({ anchorEl: ref }))));
8350
+ ), /* @__PURE__ */ React119.createElement(RepeaterPopover, { width: ref?.getBoundingClientRect().width, ...popoverProps, anchorEl: ref }, /* @__PURE__ */ React119.createElement(Box27, null, children({ anchorEl: ref }))));
8266
8351
  };
8267
8352
  var usePopover = (openOnMount, onOpen, onPopoverClose) => {
8268
8353
  const [ref, setRef] = useState20(null);
@@ -8287,7 +8372,7 @@ var usePopover = (openOnMount, onOpen, onPopoverClose) => {
8287
8372
  };
8288
8373
 
8289
8374
  // src/components/inline-editor-toolbar.tsx
8290
- import * as React119 from "react";
8375
+ import * as React121 from "react";
8291
8376
  import { useEffect as useEffect20, useMemo as useMemo17, useRef as useRef31, useState as useState21 } from "react";
8292
8377
  import { getContainer as getContainer2, getElementSetting } from "@elementor/editor-elements";
8293
8378
  import {
@@ -8310,14 +8395,14 @@ import {
8310
8395
  usePopupState as usePopupState11
8311
8396
  } from "@elementor/ui";
8312
8397
  import { useEditorState } from "@tiptap/react";
8313
- import { __ as __60 } from "@wordpress/i18n";
8398
+ import { __ as __61 } from "@wordpress/i18n";
8314
8399
 
8315
8400
  // src/components/url-popover.tsx
8316
- import * as React118 from "react";
8401
+ import * as React120 from "react";
8317
8402
  import { useEffect as useEffect19, useRef as useRef30 } from "react";
8318
8403
  import { ExternalLinkIcon } from "@elementor/icons";
8319
- import { bindPopover as bindPopover9, Popover as Popover8, Stack as Stack21, TextField as TextField10, ToggleButton as ToggleButton2, Tooltip as Tooltip13 } from "@elementor/ui";
8320
- import { __ as __59 } from "@wordpress/i18n";
8404
+ import { bindPopover as bindPopover9, Popover as Popover8, Stack as Stack22, TextField as TextField10, ToggleButton as ToggleButton2, Tooltip as Tooltip13 } from "@elementor/ui";
8405
+ import { __ as __60 } from "@wordpress/i18n";
8321
8406
  var UrlPopover = ({
8322
8407
  popupState,
8323
8408
  restoreValue,
@@ -8337,7 +8422,7 @@ var UrlPopover = ({
8337
8422
  restoreValue();
8338
8423
  popupState.close();
8339
8424
  };
8340
- return /* @__PURE__ */ React118.createElement(
8425
+ return /* @__PURE__ */ React120.createElement(
8341
8426
  Popover8,
8342
8427
  {
8343
8428
  slotProps: {
@@ -8348,30 +8433,30 @@ var UrlPopover = ({
8348
8433
  transformOrigin: { vertical: "top", horizontal: "left" },
8349
8434
  onClose: handleClose
8350
8435
  },
8351
- /* @__PURE__ */ React118.createElement(Stack21, { direction: "row", alignItems: "center", gap: 1, sx: { p: 1.5 } }, /* @__PURE__ */ React118.createElement(
8436
+ /* @__PURE__ */ React120.createElement(Stack22, { direction: "row", alignItems: "center", gap: 1, sx: { p: 1.5 } }, /* @__PURE__ */ React120.createElement(
8352
8437
  TextField10,
8353
8438
  {
8354
8439
  value,
8355
8440
  onChange,
8356
8441
  size: "tiny",
8357
8442
  fullWidth: true,
8358
- placeholder: __59("Type a URL", "elementor"),
8443
+ placeholder: __60("Type a URL", "elementor"),
8359
8444
  inputProps: { ref: inputRef },
8360
8445
  color: "secondary",
8361
8446
  InputProps: { sx: { borderRadius: "8px" } },
8362
8447
  onKeyUp: (event) => event.key === "Enter" && handleClose()
8363
8448
  }
8364
- ), /* @__PURE__ */ React118.createElement(Tooltip13, { title: __59("Open in a new tab", "elementor") }, /* @__PURE__ */ React118.createElement(
8449
+ ), /* @__PURE__ */ React120.createElement(Tooltip13, { title: __60("Open in a new tab", "elementor") }, /* @__PURE__ */ React120.createElement(
8365
8450
  ToggleButton2,
8366
8451
  {
8367
8452
  size: "tiny",
8368
8453
  value: "newTab",
8369
8454
  selected: openInNewTab,
8370
8455
  onClick: onToggleNewTab,
8371
- "aria-label": __59("Open in a new tab", "elementor"),
8456
+ "aria-label": __60("Open in a new tab", "elementor"),
8372
8457
  sx: { borderRadius: "8px" }
8373
8458
  },
8374
- /* @__PURE__ */ React118.createElement(ExternalLinkIcon, { fontSize: "tiny" })
8459
+ /* @__PURE__ */ React120.createElement(ExternalLinkIcon, { fontSize: "tiny" })
8375
8460
  )))
8376
8461
  );
8377
8462
  };
@@ -8427,7 +8512,7 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8427
8512
  useEffect20(() => {
8428
8513
  editor?.commands?.focus();
8429
8514
  }, [editor]);
8430
- return /* @__PURE__ */ React119.createElement(
8515
+ return /* @__PURE__ */ React121.createElement(
8431
8516
  Box28,
8432
8517
  {
8433
8518
  ref: toolbarRef,
@@ -8444,8 +8529,8 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8444
8529
  ...sx
8445
8530
  }
8446
8531
  },
8447
- /* @__PURE__ */ React119.createElement(Tooltip14, { title: clearButton.label, placement: "top", sx: { borderRadius: "8px" } }, /* @__PURE__ */ React119.createElement(IconButton11, { "aria-label": clearButton.label, onClick: () => clearButton.method(editor), size: "tiny" }, clearButton.icon)),
8448
- /* @__PURE__ */ React119.createElement(
8532
+ /* @__PURE__ */ React121.createElement(Tooltip14, { title: clearButton.label, placement: "top", sx: { borderRadius: "8px" } }, /* @__PURE__ */ React121.createElement(IconButton11, { "aria-label": clearButton.label, onClick: () => clearButton.method(editor), size: "tiny" }, clearButton.icon)),
8533
+ /* @__PURE__ */ React121.createElement(
8449
8534
  ToggleButtonGroup2,
8450
8535
  {
8451
8536
  value: editorState,
@@ -8467,7 +8552,7 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8467
8552
  }
8468
8553
  }
8469
8554
  },
8470
- formatButtonsList.map((button) => /* @__PURE__ */ React119.createElement(Tooltip14, { title: button.label, key: button.action, placement: "top" }, /* @__PURE__ */ React119.createElement(
8555
+ formatButtonsList.map((button) => /* @__PURE__ */ React121.createElement(Tooltip14, { title: button.label, key: button.action, placement: "top" }, /* @__PURE__ */ React121.createElement(
8471
8556
  ToggleButton3,
8472
8557
  {
8473
8558
  value: button.action,
@@ -8485,7 +8570,7 @@ var InlineEditorToolbar = ({ editor, elementId, sx = {} }) => {
8485
8570
  button.icon
8486
8571
  )))
8487
8572
  ),
8488
- /* @__PURE__ */ React119.createElement(
8573
+ /* @__PURE__ */ React121.createElement(
8489
8574
  UrlPopover,
8490
8575
  {
8491
8576
  popupState: linkPopupState,
@@ -8508,64 +8593,64 @@ var checkIfElementIsClickable = (elementId) => {
8508
8593
  };
8509
8594
  var toolbarButtons = {
8510
8595
  clear: {
8511
- label: __60("Clear", "elementor"),
8512
- icon: /* @__PURE__ */ React119.createElement(MinusIcon2, { fontSize: "tiny" }),
8596
+ label: __61("Clear", "elementor"),
8597
+ icon: /* @__PURE__ */ React121.createElement(MinusIcon2, { fontSize: "tiny" }),
8513
8598
  action: "clear",
8514
8599
  method: (editor) => {
8515
8600
  editor.chain().focus().clearNodes().unsetAllMarks().run();
8516
8601
  }
8517
8602
  },
8518
8603
  bold: {
8519
- label: __60("Bold", "elementor"),
8520
- icon: /* @__PURE__ */ React119.createElement(BoldIcon, { fontSize: "tiny" }),
8604
+ label: __61("Bold", "elementor"),
8605
+ icon: /* @__PURE__ */ React121.createElement(BoldIcon, { fontSize: "tiny" }),
8521
8606
  action: "bold",
8522
8607
  method: (editor) => {
8523
8608
  editor.chain().focus().toggleBold().run();
8524
8609
  }
8525
8610
  },
8526
8611
  italic: {
8527
- label: __60("Italic", "elementor"),
8528
- icon: /* @__PURE__ */ React119.createElement(ItalicIcon, { fontSize: "tiny" }),
8612
+ label: __61("Italic", "elementor"),
8613
+ icon: /* @__PURE__ */ React121.createElement(ItalicIcon, { fontSize: "tiny" }),
8529
8614
  action: "italic",
8530
8615
  method: (editor) => {
8531
8616
  editor.chain().focus().toggleItalic().run();
8532
8617
  }
8533
8618
  },
8534
8619
  underline: {
8535
- label: __60("Underline", "elementor"),
8536
- icon: /* @__PURE__ */ React119.createElement(UnderlineIcon, { fontSize: "tiny" }),
8620
+ label: __61("Underline", "elementor"),
8621
+ icon: /* @__PURE__ */ React121.createElement(UnderlineIcon, { fontSize: "tiny" }),
8537
8622
  action: "underline",
8538
8623
  method: (editor) => {
8539
8624
  editor.chain().focus().toggleUnderline().run();
8540
8625
  }
8541
8626
  },
8542
8627
  strike: {
8543
- label: __60("Strikethrough", "elementor"),
8544
- icon: /* @__PURE__ */ React119.createElement(StrikethroughIcon, { fontSize: "tiny" }),
8628
+ label: __61("Strikethrough", "elementor"),
8629
+ icon: /* @__PURE__ */ React121.createElement(StrikethroughIcon, { fontSize: "tiny" }),
8545
8630
  action: "strike",
8546
8631
  method: (editor) => {
8547
8632
  editor.chain().focus().toggleStrike().run();
8548
8633
  }
8549
8634
  },
8550
8635
  superscript: {
8551
- label: __60("Superscript", "elementor"),
8552
- icon: /* @__PURE__ */ React119.createElement(SuperscriptIcon, { fontSize: "tiny" }),
8636
+ label: __61("Superscript", "elementor"),
8637
+ icon: /* @__PURE__ */ React121.createElement(SuperscriptIcon, { fontSize: "tiny" }),
8553
8638
  action: "superscript",
8554
8639
  method: (editor) => {
8555
8640
  editor.chain().focus().toggleSuperscript().run();
8556
8641
  }
8557
8642
  },
8558
8643
  subscript: {
8559
- label: __60("Subscript", "elementor"),
8560
- icon: /* @__PURE__ */ React119.createElement(SubscriptIcon, { fontSize: "tiny" }),
8644
+ label: __61("Subscript", "elementor"),
8645
+ icon: /* @__PURE__ */ React121.createElement(SubscriptIcon, { fontSize: "tiny" }),
8561
8646
  action: "subscript",
8562
8647
  method: (editor) => {
8563
8648
  editor.chain().focus().toggleSubscript().run();
8564
8649
  }
8565
8650
  },
8566
8651
  link: {
8567
- label: __60("Link", "elementor"),
8568
- icon: /* @__PURE__ */ React119.createElement(LinkIcon3, { fontSize: "tiny" }),
8652
+ label: __61("Link", "elementor"),
8653
+ icon: /* @__PURE__ */ React121.createElement(LinkIcon3, { fontSize: "tiny" }),
8569
8654
  action: "link",
8570
8655
  method: null
8571
8656
  }
@@ -8574,7 +8659,7 @@ var { clear: clearButton, ...formatButtons } = toolbarButtons;
8574
8659
  var possibleFormats = Object.keys(formatButtons);
8575
8660
 
8576
8661
  // src/components/size/unstable-size-field.tsx
8577
- import * as React122 from "react";
8662
+ import * as React124 from "react";
8578
8663
  import { InputAdornment as InputAdornment6 } from "@elementor/ui";
8579
8664
 
8580
8665
  // src/hooks/use-size-value.ts
@@ -8617,7 +8702,7 @@ var differsFromExternal = (newState, externalState) => {
8617
8702
  };
8618
8703
 
8619
8704
  // src/components/size/unit-select.tsx
8620
- import * as React120 from "react";
8705
+ import * as React122 from "react";
8621
8706
  import { useId as useId4 } from "react";
8622
8707
  import { MenuListItem as MenuListItem8 } from "@elementor/editor-ui";
8623
8708
  import { bindMenu as bindMenu3, bindTrigger as bindTrigger8, Button as Button7, Menu as Menu4, styled as styled12, usePopupState as usePopupState12 } from "@elementor/ui";
@@ -8635,7 +8720,7 @@ var UnitSelect = ({ value, showPrimaryColor, onClick, options }) => {
8635
8720
  onClick(options[index]);
8636
8721
  popupState.close();
8637
8722
  };
8638
- return /* @__PURE__ */ React120.createElement(React120.Fragment, null, /* @__PURE__ */ React120.createElement(StyledButton3, { isPrimaryColor: showPrimaryColor, size: "small", ...bindTrigger8(popupState) }, value), /* @__PURE__ */ React120.createElement(Menu4, { MenuListProps: { dense: true }, ...bindMenu3(popupState) }, options.map((option, index) => /* @__PURE__ */ React120.createElement(
8723
+ return /* @__PURE__ */ React122.createElement(React122.Fragment, null, /* @__PURE__ */ React122.createElement(StyledButton3, { isPrimaryColor: showPrimaryColor, size: "small", ...bindTrigger8(popupState) }, value), /* @__PURE__ */ React122.createElement(Menu4, { MenuListProps: { dense: true }, ...bindMenu3(popupState) }, options.map((option, index) => /* @__PURE__ */ React122.createElement(
8639
8724
  MenuListItem8,
8640
8725
  {
8641
8726
  key: option,
@@ -8664,11 +8749,11 @@ var StyledButton3 = styled12(Button7, {
8664
8749
  }));
8665
8750
 
8666
8751
  // src/components/size/unstable-size-input.tsx
8667
- import * as React121 from "react";
8752
+ import * as React123 from "react";
8668
8753
  import { forwardRef as forwardRef13 } from "react";
8669
8754
  var UnstableSizeInput = forwardRef13(
8670
8755
  ({ type, value, onChange, onKeyDown, onKeyUp, InputProps, onBlur, focused, disabled }, ref) => {
8671
- return /* @__PURE__ */ React121.createElement(
8756
+ return /* @__PURE__ */ React123.createElement(
8672
8757
  NumberInput,
8673
8758
  {
8674
8759
  ref,
@@ -8706,7 +8791,7 @@ var UnstableSizeField = ({
8706
8791
  const shouldHighlightUnit2 = () => {
8707
8792
  return hasValue(size);
8708
8793
  };
8709
- return /* @__PURE__ */ React122.createElement(
8794
+ return /* @__PURE__ */ React124.createElement(
8710
8795
  UnstableSizeInput,
8711
8796
  {
8712
8797
  type: "number",
@@ -8715,8 +8800,8 @@ var UnstableSizeField = ({
8715
8800
  onChange: (event) => setSize(event.target.value),
8716
8801
  InputProps: {
8717
8802
  ...InputProps,
8718
- startAdornment: startIcon && /* @__PURE__ */ React122.createElement(InputAdornment6, { position: "start" }, startIcon),
8719
- endAdornment: /* @__PURE__ */ React122.createElement(InputAdornment6, { position: "end" }, /* @__PURE__ */ React122.createElement(
8803
+ startAdornment: startIcon && /* @__PURE__ */ React124.createElement(InputAdornment6, { position: "start" }, startIcon),
8804
+ endAdornment: /* @__PURE__ */ React124.createElement(InputAdornment6, { position: "end" }, /* @__PURE__ */ React124.createElement(
8720
8805
  UnitSelect,
8721
8806
  {
8722
8807
  options: units2,
@@ -8819,6 +8904,8 @@ export {
8819
8904
  SwitchControl,
8820
8905
  TextAreaControl,
8821
8906
  TextControl,
8907
+ TimeRangeControl,
8908
+ TimeStringControl,
8822
8909
  ToggleButtonGroupUi,
8823
8910
  ToggleControl,
8824
8911
  TransformRepeaterControl,