treege 3.0.0-beta.81 → 3.0.0-beta.83

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.
@@ -534,7 +534,10 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
534
534
  invalidFormat: "Formato inválido",
535
535
  required: "Este campo é obrigatório"
536
536
  }
537
- }, _ = (e, t = "en") => e ? typeof e == "string" ? e : e[t] || e.en || Object.values(e).find(Boolean) || "" : "", v = {
537
+ }, _ = (e, t = "en") => e && (e[t] || e.en || Object.values(e).find(Boolean)) || "", v = (e, t) => e?.[t] ?? "", y = (e, t, n) => ({
538
+ ...e && typeof e == "object" ? e : {},
539
+ [t]: n
540
+ }), b = {
538
541
  ar: u,
539
542
  de: d,
540
543
  en: f,
@@ -542,20 +545,20 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
542
545
  fr: m,
543
546
  it: h,
544
547
  pt: g
545
- }, y = (e, t = "") => Object.keys(e).reduce((n, r) => {
548
+ }, x = (e, t = "") => Object.keys(e).reduce((n, r) => {
546
549
  let i = e[r], a = t ? `${t}.${r}` : r;
547
- return typeof i == "object" && i && !Array.isArray(i) ? Object.assign(n, y(i, a)) : n[a] = String(i), n;
548
- }, {}), b = (e) => y(v[e] || v.en), x = (e) => {
549
- let t = r(() => b(e), [e]);
550
+ return typeof i == "object" && i && !Array.isArray(i) ? Object.assign(n, x(i, a)) : n[a] = String(i), n;
551
+ }, {}), S = (e) => x(b[e] || b.en), C = (e) => {
552
+ let t = r(() => S(e), [e]);
550
553
  return r(() => (n) => n ? typeof n == "object" ? _(n, e) : n in t ? t[n] : n : "", [e, t]);
551
554
  }, ee = {
552
555
  AND: "AND",
553
556
  OR: "OR"
554
- }, S = {
557
+ }, w = {
555
558
  group: "group",
556
559
  input: "input",
557
560
  ui: "ui"
558
- }, C = {
561
+ }, T = {
559
562
  baseUrl: void 0,
560
563
  flow: null,
561
564
  formErrors: {},
@@ -566,17 +569,17 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
566
569
  language: "",
567
570
  optionsDisplayLimit: void 0,
568
571
  setFieldValue: () => {}
569
- }, w = e(null), te = ({ children: e, value: t }) => {
572
+ }, E = e(null), te = ({ children: e, value: t }) => {
570
573
  let n = r(() => ({
571
- ...C,
574
+ ...T,
572
575
  ...t
573
576
  }), [t]);
574
- return /* @__PURE__ */ a(w.Provider, {
577
+ return /* @__PURE__ */ a(E.Provider, {
575
578
  value: n,
576
579
  children: e
577
580
  });
578
- }, T = () => {
579
- let e = t(w) ?? C, n = r(() => e.flow?.edges ?? [], [e.flow]);
581
+ }, D = () => {
582
+ let e = t(E) ?? T, n = r(() => e.flow?.edges ?? [], [e.flow]);
580
583
  return {
581
584
  ...e,
582
585
  edges: n
@@ -590,14 +593,14 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
590
593
  "br",
591
594
  "p",
592
595
  "span"
593
- ], E = ["class"], D = (e, t = {}) => {
596
+ ], re = ["class"], O = (e, t = {}) => {
594
597
  if (e == null || e === "") return "";
595
598
  let n = String(e), { plainTextOnly: r = !0, allowedTags: i, allowedAttributes: a } = t;
596
599
  if (r) return o.sanitize(n, {
597
600
  ALLOWED_ATTR: [],
598
601
  ALLOWED_TAGS: []
599
602
  });
600
- let s = i ?? ne, c = a ?? E;
603
+ let s = i ?? ne, c = a ?? re;
601
604
  return o.sanitize(n, {
602
605
  ALLOW_DATA_ATTR: !1,
603
606
  ALLOW_UNKNOWN_PROTOCOLS: !1,
@@ -609,24 +612,24 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
609
612
  RETURN_DOM: !1,
610
613
  RETURN_DOM_FRAGMENT: !1
611
614
  });
612
- }, O = 100, k = (e, t = {}, n = 0, r = /* @__PURE__ */ new WeakSet()) => {
613
- if (n > O) return console.warn(`sanitizeHttpResponse: Maximum depth (${O}) exceeded.`), typeof e == "string" ? D(e, t) : "[Max Depth Exceeded]";
615
+ }, k = 100, A = (e, t = {}, n = 0, r = /* @__PURE__ */ new WeakSet()) => {
616
+ if (n > k) return console.warn(`sanitizeHttpResponse: Maximum depth (${k}) exceeded.`), typeof e == "string" ? O(e, t) : "[Max Depth Exceeded]";
614
617
  if (e == null) return e;
615
- if (typeof e == "string") return D(e, t);
616
- if (Array.isArray(e)) return e.map((e) => k(e, t, n + 1, r));
618
+ if (typeof e == "string") return O(e, t);
619
+ if (Array.isArray(e)) return e.map((e) => A(e, t, n + 1, r));
617
620
  if (typeof e == "object") {
618
621
  if (r.has(e)) return console.warn("sanitizeHttpResponse: Circular reference detected. Breaking cycle to prevent infinite recursion."), "[Circular Reference]";
619
622
  r.add(e);
620
623
  let i = {};
621
- for (let [a, o] of Object.entries(e)) i[a] = k(o, t, n + 1, r);
624
+ for (let [a, o] of Object.entries(e)) i[a] = A(o, t, n + 1, r);
622
625
  return r.delete(e), i;
623
626
  }
624
627
  return e;
625
- }, A = (e) => {
626
- let t = T(), n = x(e ?? t.language);
628
+ }, ie = (e) => {
629
+ let t = D(), n = C(e ?? t.language);
627
630
  return r(() => (e) => {
628
631
  let t = n(e);
629
- return typeof e == "object" && e ? D(t) : t;
632
+ return typeof e == "object" && e ? O(t) : t;
630
633
  }, [n]);
631
634
  }, j = (...e) => {
632
635
  let t = /* @__PURE__ */ new Map();
@@ -638,12 +641,12 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
638
641
  });
639
642
  });
640
643
  }), Object.fromEntries(Array.from(t.values(), ({ key: e, value: t }) => [e, t]));
641
- }, M = (e, t, n) => e && Object.fromEntries(Object.entries(e).map(([e, r]) => [e, P(r, t, n)])), N = (e, t) => {
644
+ }, ae = (e, t, n) => e && Object.fromEntries(Object.entries(e).map(([e, r]) => [e, N(r, t, n)])), M = (e, t) => {
642
645
  let n = Object.entries(t ?? {}).filter(([e]) => e);
643
646
  if (n.length === 0) return e;
644
647
  let r = n.map(([e, t]) => `${encodeURIComponent(e)}=${encodeURIComponent(t ?? "")}`).join("&");
645
648
  return r ? `${e}${e.includes("?") ? "&" : "?"}${r}` : e;
646
- }, re = (e, t) => !(t && e) || /^(https?:)?\/\//i.test(e) ? e : `${t.replace(/\/+$/, "")}/${e.replace(/^\/+/, "")}`, ie = (e) => {
649
+ }, oe = (e, t) => !(t && e) || /^(https?:)?\/\//i.test(e) ? e : `${t.replace(/\/+$/, "")}/${e.replace(/^\/+/, "")}`, se = (e) => {
647
650
  try {
648
651
  return {
649
652
  ok: !0,
@@ -652,14 +655,14 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
652
655
  } catch {
653
656
  return { ok: !1 };
654
657
  }
655
- }, ae = async (e) => {
658
+ }, ce = async (e) => {
656
659
  try {
657
660
  let { url: t, method: n = "GET", headers: r, queryParams: i, body: a, signal: o } = e;
658
661
  if (!t || t.trim() === "") return {
659
662
  error: "No URL provided",
660
663
  success: !1
661
664
  };
662
- let s = N(t, i), c = j({ "Content-Type": "application/json" }, r), l = {
665
+ let s = M(t, i), c = j({ "Content-Type": "application/json" }, r), l = {
663
666
  headers: Object.fromEntries(Object.entries(c).filter(([, e]) => e)),
664
667
  method: n,
665
668
  signal: o
@@ -688,13 +691,13 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
688
691
  success: !1
689
692
  };
690
693
  }
691
- }, P = (e, t, n = {}) => {
694
+ }, N = (e, t, n = {}) => {
692
695
  if (!e) return "";
693
696
  let { encode: r = !1, json: i = !1 } = n;
694
697
  return e.replace(/\{\{([\w-]+)}}/g, (e, n) => {
695
698
  let a = t[n.trim()];
696
699
  if (a == null) return i ? "null" : "";
697
- let o = typeof a == "string" ? D(a) : a;
700
+ let o = typeof a == "string" ? O(a) : a;
698
701
  if (r) return encodeURIComponent(String(o));
699
702
  if (i) {
700
703
  if (typeof o == "string") return `"${o.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"`;
@@ -703,14 +706,14 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
703
706
  }
704
707
  return String(o);
705
708
  });
706
- }, oe = (e, t) => e ? e.replace(/\{\{response\.([\w.-]+)}}/g, (e, n) => {
707
- let r = se(t, n.trim());
709
+ }, le = (e, t) => e ? e.replace(/\{\{response\.([\w.-]+)}}/g, (e, n) => {
710
+ let r = ue(t, n.trim());
708
711
  return r == null ? "" : String(r);
709
- }) : "", se = (e, t) => {
712
+ }) : "", ue = (e, t) => {
710
713
  if (!(!e || typeof e != "object")) return t.split(".").reduce((e, t) => {
711
714
  if (!(typeof e != "object" || !e)) return e[t];
712
715
  }, e);
713
- }, F = (e, t) => t ? t.split(".").reduce((e, t) => {
716
+ }, P = (e, t) => t ? t.split(".").reduce((e, t) => {
714
717
  if (e == null) return;
715
718
  let n = t.match(/^(\w+)\[(\d+)]$/);
716
719
  if (n) {
@@ -718,65 +721,65 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
718
721
  return Array.isArray(i) ? i[Number.parseInt(r, 10)] : i;
719
722
  }
720
723
  return e[t];
721
- }, e) : e, I = (e, t, n) => {
722
- let r = F(e, t ?? "");
724
+ }, e) : e, F = (e, t, n) => {
725
+ let r = P(e, t ?? "");
723
726
  return Array.isArray(r) ? r.map((e) => {
724
- let t = F(e, n.valueField), r = F(e, n.labelField);
727
+ let t = P(e, n.valueField), r = P(e, n.labelField);
725
728
  if (t == null) return null;
726
729
  let i = {
727
730
  label: { en: String(r ?? t) },
728
731
  value: String(t)
729
732
  };
730
733
  if (n.descriptionField) {
731
- let t = F(e, n.descriptionField);
734
+ let t = P(e, n.descriptionField);
732
735
  t != null && t !== "" && (i.description = { en: String(t) });
733
736
  }
734
737
  if (n.imageField) {
735
- let t = F(e, n.imageField);
738
+ let t = P(e, n.imageField);
736
739
  typeof t == "string" && t !== "" && (i.image = t);
737
740
  }
738
741
  return i;
739
742
  }).filter((e) => e !== null) : [];
740
- }, L = /^[\w-]+$/, R = /^\{\{([\w-]+)}}$/, z = /\{\{([\w-]+)}}/g, B = (e, t) => {
743
+ }, I = /^[\w-]+$/, L = /^\{\{([\w-]+)}}$/, R = /\{\{([\w-]+)}}/g, z = (e, t) => {
741
744
  let n = { ...e };
742
745
  for (let r of t) {
743
746
  let t = r.data?.name?.trim();
744
- t && L.test(t) && e[r.id] !== void 0 && n[t] === void 0 && (n[t] = e[r.id]);
747
+ t && I.test(t) && e[r.id] !== void 0 && n[t] === void 0 && (n[t] = e[r.id]);
745
748
  }
746
749
  return n;
747
- }, V = (e, t) => e.replace(z, (e, n) => {
750
+ }, B = (e, t) => e.replace(R, (e, n) => {
748
751
  let r = t[n];
749
752
  return r == null ? "" : typeof r == "object" ? JSON.stringify(r) : String(r);
750
- }), H = (e, t) => {
753
+ }), V = (e, t) => {
751
754
  if (typeof e == "string") {
752
- let n = e.match(R);
755
+ let n = e.match(L);
753
756
  if (n) {
754
757
  let e = t[n[1]];
755
758
  return e === void 0 ? null : e;
756
759
  }
757
- return V(e, t);
760
+ return B(e, t);
758
761
  }
759
- if (Array.isArray(e)) return e.map((e) => H(e, t));
762
+ if (Array.isArray(e)) return e.map((e) => V(e, t));
760
763
  if (e && typeof e == "object") {
761
764
  let n = {};
762
- for (let [r, i] of Object.entries(e)) n[V(r, t)] = H(i, t);
765
+ for (let [r, i] of Object.entries(e)) n[B(r, t)] = V(i, t);
763
766
  return n;
764
767
  }
765
768
  return e;
766
- }, U = (e) => {
769
+ }, H = (e) => {
767
770
  try {
768
771
  return JSON.parse(e);
769
772
  } catch {
770
773
  return;
771
774
  }
772
- }, W = (e, t, n) => {
775
+ }, U = (e, t, n) => {
773
776
  if (!e || e.trim() === "") return;
774
- let r = U(e);
775
- if (r !== void 0) return H(r, B(t, n));
776
- }, G = (e, t, n) => {
777
- let r = W(e, t, n);
777
+ let r = H(e);
778
+ if (r !== void 0) return V(r, z(t, n));
779
+ }, de = (e, t, n) => {
780
+ let r = U(e, t, n);
778
781
  return r === void 0 ? void 0 : JSON.stringify(r);
779
- }, K = (e) => e.trim() ? e.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().split(" ").map((e) => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" ") : e, ce = (e) => Object.fromEntries(Object.entries(e).map(([e, t]) => [e, typeof t == "string" ? K(t) : t])), q = (e) => new Promise((t, n) => {
782
+ }, W = (e) => e.trim() ? e.replace(/[_-]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/\s+/g, " ").trim().split(" ").map((e) => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" ") : e, fe = (e) => Object.fromEntries(Object.entries(e).map(([e, t]) => [e, typeof t == "string" ? W(t) : t])), G = (e) => new Promise((t, n) => {
780
783
  let r = new FileReader();
781
784
  r.onload = () => {
782
785
  let n = r.result;
@@ -790,7 +793,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
790
793
  }, r.onerror = () => {
791
794
  n(/* @__PURE__ */ Error(`Failed to read file: ${e.name}`));
792
795
  }, r.readAsDataURL(e);
793
- }), le = (e) => {
796
+ }), pe = (e) => {
794
797
  let t = e.data.split(",")[1], n = atob(t), r = new ArrayBuffer(n.length), i = new Uint8Array(r);
795
798
  for (let e = 0; e < n.length; e++) i[e] = n.charCodeAt(e);
796
799
  let a = new Blob([r], { type: e.type });
@@ -798,24 +801,29 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
798
801
  lastModified: e.lastModified,
799
802
  type: e.type
800
803
  });
801
- }, ue = (e) => Promise.all(e.map((e) => q(e))), de = (e) => Array.isArray(e) ? e : e ? [e] : [], fe = (e) => e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB`, pe = new Set([
804
+ }, me = (e) => Promise.all(e.map((e) => G(e))), K = (e) => {
805
+ try {
806
+ let { pathname: t } = new URL(e, "http://_"), n = t.split("/").filter(Boolean).pop();
807
+ return n ? decodeURIComponent(n) : e;
808
+ } catch {
809
+ return e;
810
+ }
811
+ }, he = (e) => !!e && !e.startsWith("data:") && !e.startsWith("blob:"), ge = (e) => (Array.isArray(e) ? e : e == null ? [] : [e]).flatMap((e) => typeof e == "string" ? e.trim() === "" ? [] : [{
812
+ data: e,
813
+ lastModified: 0,
814
+ name: K(e),
815
+ size: 0,
816
+ type: ""
817
+ }] : [e]), _e = (e) => e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB`, ve = new Set([
802
818
  "text",
803
819
  "number",
804
820
  "password",
805
821
  "textarea",
806
822
  "time"
807
- ]), me = (e) => e.filter(s), J = (e) => {
808
- if (e.data.name) return e.data.name;
809
- if (e.data.label) {
810
- if (e.data.label.en) return e.data.label.en;
811
- let t = Object.values(e.data.label).find(Boolean);
812
- if (t) return t;
813
- }
814
- return e.id;
815
- }, he = (e, t) => _(e.data.label, t) || e.data.name || e.id, ge = (e, t) => {
823
+ ]), ye = (e) => e.filter(s), q = (e) => e.data.name ? e.data.name : _(e.data.label) || e.id, be = (e, t) => _(e.data.label, t) || e.data.name || e.id, xe = (e, t) => {
816
824
  let n = e.type ?? "text";
817
- return !e.placeholder?.[t] && pe.has(n) ? b(t)["renderer.defaultInputs.newAnswer"] ?? "" : _(e.placeholder, t);
818
- }, _e = (e) => e == null || typeof e == "string" && e.trim() === "" ? !0 : Array.isArray(e) && e.length === 0, ve = (e, t) => e ? t[e] != null : !1, Y = (e, t) => {
825
+ return !v(e.placeholder, t) && ve.has(n) ? S(t)["renderer.defaultInputs.newAnswer"] ?? "" : _(e.placeholder, t);
826
+ }, Se = (e) => e == null || typeof e == "string" && e.trim() === "" ? !0 : Array.isArray(e) && e.length === 0, Ce = (e, t) => e ? t[e] != null : !1, J = (e, t) => {
819
827
  let { defaultValue: n } = e.data;
820
828
  if (n) {
821
829
  if (n.type === "static" && n.staticValue !== void 0) return n.staticValue;
@@ -824,24 +832,24 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
824
832
  if (e !== void 0) return e;
825
833
  }
826
834
  }
827
- }, ye = (e, t) => {
835
+ }, we = (e, t) => {
828
836
  let n = {};
829
837
  return t.forEach((t) => {
830
838
  if (e[t.id] !== void 0) {
831
839
  n[t.id] = e[t.id];
832
840
  return;
833
841
  }
834
- let r = J(t);
842
+ let r = q(t);
835
843
  e[r] !== void 0 && (n[t.id] = e[r]);
836
844
  }), t.forEach((e) => {
837
845
  if (n[e.id] !== void 0) return;
838
- let t = Y(e, n);
846
+ let t = J(e, n);
839
847
  t !== void 0 && (n[e.id] = t);
840
848
  }), n;
841
- }, be = (e, t) => {
849
+ }, Y = (e, t) => {
842
850
  let n = {};
843
851
  return t.forEach((t) => {
844
- let r = t.id, i = J(t);
852
+ let r = t.id, i = q(t);
845
853
  e[r] !== void 0 && (n[i] = e[r]);
846
854
  }), n;
847
855
  }, X = (e, t, n) => {
@@ -887,7 +895,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
887
895
  } catch {
888
896
  return !1;
889
897
  }
890
- }, xe = (e, t, n) => {
898
+ }, Te = (e, t, n) => {
891
899
  let r = {};
892
900
  return e.forEach((e) => {
893
901
  let { defaultValue: i } = e.data;
@@ -944,7 +952,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
944
952
  colors: Q.light,
945
953
  setTheme: () => null,
946
954
  theme: "system"
947
- }), Se = ({ children: e, defaultTheme: t = "system", storageKey: o = "treege-theme", theme: s, ...c }) => {
955
+ }), Ee = ({ children: e, defaultTheme: t = "system", storageKey: o = "treege-theme", theme: s, ...c }) => {
948
956
  let [l, u] = i(() => s || typeof window < "u" && localStorage.getItem(o) || t), d = s ?? l, f = Q[d === "system" ? typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : d], p = r(() => ({
949
957
  colors: f,
950
958
  setTheme: (e) => {
@@ -976,10 +984,10 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
976
984
  value: p,
977
985
  children: e
978
986
  });
979
- }, Ce = () => {
987
+ }, De = () => {
980
988
  let e = t($);
981
989
  if (e === void 0) throw Error("useTheme must be used within a ThemeProvider");
982
990
  return e;
983
991
  };
984
992
  //#endregion
985
- export { M as A, x as B, N as C, j as D, ae as E, k as F, c as G, _ as H, te as I, T as L, ie as M, A as N, oe as O, D as P, S as R, G as S, F as T, l as U, b as V, s as W, de as _, xe as a, ce as b, _e as c, ge as d, J as f, fe as g, ue as h, ye as i, re as j, P as k, Y as l, q as m, Ce as n, ve as o, he as p, X as r, be as s, Se as t, me as u, le as v, I as w, W as x, K as y, ee as z };
993
+ export { le as A, w as B, U as C, P as D, F as E, ie as F, _ as G, C as H, O as I, s as J, y as K, A as L, ae as M, oe as N, ce as O, se as P, te as R, fe as S, M as T, S as U, ee as V, v as W, c as Y, _e as _, Te as a, pe as b, Se as c, xe as d, q as f, me as g, G as h, we as i, N as j, j as k, J as l, K as m, De as n, Ce as o, be as p, l as q, X as r, Y as s, Ee as t, ye as u, he as v, de as w, W as x, ge as y, D as z };
@@ -0,0 +1,20 @@
1
+ import { ComponentProps } from 'react';
2
+ import { Input } from '../../../../shared/components/ui/input';
3
+ import { Translatable } from '../../../../shared/types/translate';
4
+ interface TranslatableInputProps extends Omit<ComponentProps<typeof Input>, "value" | "onChange"> {
5
+ /** Current translatable value (per-language object). */
6
+ value: Translatable | undefined;
7
+ /** Language entry being edited. */
8
+ language: string;
9
+ /** Receives the updated, always-object value (never a spread-corrupted string). */
10
+ onChange: (value: Translatable) => void;
11
+ }
12
+ /**
13
+ * Text input bound to a single language entry of a translatable field. Reading
14
+ * and writing go through the translatable helpers, so a plain-string value is
15
+ * shown for any language and is safely coerced on edit instead of being spread
16
+ * into indexed character keys. Use this for every translatable field edited in
17
+ * the editor.
18
+ */
19
+ declare const TranslatableInput: ({ value, language, onChange, ...props }: TranslatableInputProps) => import("react/jsx-runtime").JSX.Element;
20
+ export default TranslatableInput;