treege 3.0.0-beta.94 → 3.0.0-beta.96
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/README.md +40 -22
- package/dist/DefaultSubmitButton-CAOTg3w7.js +5130 -0
- package/dist/{ThemeContext-CE3SE9DG.js → ThemeContext-B9-cptw0.js} +108 -70
- package/dist/editor/types/ai.d.ts +1 -1
- package/dist/editor/utils/aiFlowGenerator.d.ts +16 -1
- package/dist/{editor-mvGEgr3P.js → editor-CSc1Ygb5.js} +1765 -1742
- package/dist/editor.js +2 -2
- package/dist/main.js +6 -6
- package/dist/renderer/features/TreegeRenderer/native/TreegeRenderer.d.ts +3 -2
- package/dist/renderer/features/TreegeRenderer/useTreegeRenderer.d.ts +8 -1
- package/dist/renderer/features/TreegeRenderer/web/TreegeRenderer.d.ts +1 -1
- package/dist/renderer/features/TreegeRenderer/web/components/DefaultStep.d.ts +1 -1
- package/dist/renderer/hooks/useRenderNode.d.ts +7 -1
- package/dist/renderer/types/renderer.d.ts +19 -1
- package/dist/renderer/utils/dateLocale.d.ts +6 -0
- package/dist/renderer/utils/form.d.ts +13 -1
- package/dist/renderer/utils/step.d.ts +9 -0
- package/dist/renderer-DX3WeZtk.js +437 -0
- package/dist/renderer-native.js +603 -618
- package/dist/renderer.js +5 -5
- package/dist/useRenderNode-C9RSQFX3.js +600 -0
- package/package.json +1 -1
- package/dist/DefaultSubmitButton-DNVIV9BO.js +0 -1909
- package/dist/renderer-CfoZiy7J.js +0 -449
- package/dist/useRenderNode-BPgpYSyg.js +0 -538
|
@@ -534,10 +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
|
-
}, g = (e, t = "en") => e && (e[t] || e.en || Object.values(e).find(Boolean)) || "", _ = (e, t) => e?.[t] ?? "",
|
|
537
|
+
}, g = (e, t = "en") => e && (e[t] || e.en || Object.values(e).find(Boolean)) || "", _ = (e, t) => e?.[t] ?? "", te = (e, t, n) => ({
|
|
538
538
|
...e && typeof e == "object" ? e : {},
|
|
539
539
|
[t]: n
|
|
540
|
-
}),
|
|
540
|
+
}), v = {
|
|
541
541
|
ar: u,
|
|
542
542
|
de: d,
|
|
543
543
|
en: f,
|
|
@@ -545,20 +545,44 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
545
545
|
fr: m,
|
|
546
546
|
it: h,
|
|
547
547
|
pt: ee
|
|
548
|
-
},
|
|
548
|
+
}, y = (e, t = "") => Object.keys(e).reduce((n, r) => {
|
|
549
549
|
let i = e[r], a = t ? `${t}.${r}` : r;
|
|
550
|
-
return typeof i == "object" && i && !Array.isArray(i) ? Object.assign(n,
|
|
551
|
-
}, {}),
|
|
552
|
-
let t = r(() =>
|
|
550
|
+
return typeof i == "object" && i && !Array.isArray(i) ? Object.assign(n, y(i, a)) : n[a] = String(i), n;
|
|
551
|
+
}, {}), b = (e) => y(v[e] || v.en), x = (e) => {
|
|
552
|
+
let t = r(() => b(e), [e]);
|
|
553
553
|
return r(() => (n) => n ? typeof n == "object" ? g(n, e) : n in t ? t[n] : n : "", [e, t]);
|
|
554
|
-
},
|
|
554
|
+
}, ne = {
|
|
555
555
|
AND: "AND",
|
|
556
556
|
OR: "OR"
|
|
557
|
-
},
|
|
557
|
+
}, S = {
|
|
558
|
+
address: "address",
|
|
559
|
+
autocomplete: "autocomplete",
|
|
560
|
+
checkbox: "checkbox",
|
|
561
|
+
date: "date",
|
|
562
|
+
daterange: "daterange",
|
|
563
|
+
file: "file",
|
|
564
|
+
hidden: "hidden",
|
|
565
|
+
http: "http",
|
|
566
|
+
number: "number",
|
|
567
|
+
password: "password",
|
|
568
|
+
radio: "radio",
|
|
569
|
+
select: "select",
|
|
570
|
+
submit: "submit",
|
|
571
|
+
switch: "switch",
|
|
572
|
+
text: "text",
|
|
573
|
+
textarea: "textarea",
|
|
574
|
+
time: "time",
|
|
575
|
+
timerange: "timerange"
|
|
576
|
+
}, re = [
|
|
577
|
+
S.radio,
|
|
578
|
+
S.select,
|
|
579
|
+
S.checkbox,
|
|
580
|
+
S.autocomplete
|
|
581
|
+
], C = {
|
|
558
582
|
group: "group",
|
|
559
583
|
input: "input",
|
|
560
584
|
ui: "ui"
|
|
561
|
-
},
|
|
585
|
+
}, w = {
|
|
562
586
|
baseUrl: void 0,
|
|
563
587
|
flow: null,
|
|
564
588
|
formErrors: {},
|
|
@@ -569,35 +593,35 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
569
593
|
language: "",
|
|
570
594
|
optionsDisplayLimit: void 0,
|
|
571
595
|
setFieldValue: () => {}
|
|
572
|
-
},
|
|
596
|
+
}, T = e(null), ie = ({ children: e, value: t }) => {
|
|
573
597
|
let n = r(() => ({
|
|
574
|
-
...
|
|
598
|
+
...w,
|
|
575
599
|
...t
|
|
576
600
|
}), [t]);
|
|
577
|
-
return /* @__PURE__ */ a(
|
|
601
|
+
return /* @__PURE__ */ a(T.Provider, {
|
|
578
602
|
value: n,
|
|
579
603
|
children: e
|
|
580
604
|
});
|
|
581
|
-
},
|
|
582
|
-
let e = t(
|
|
605
|
+
}, E = () => {
|
|
606
|
+
let e = t(T) ?? w, n = r(() => e.flow?.edges ?? [], [e.flow]);
|
|
583
607
|
return {
|
|
584
608
|
...e,
|
|
585
609
|
edges: n
|
|
586
610
|
};
|
|
587
|
-
},
|
|
588
|
-
if (n >
|
|
611
|
+
}, ae = (e) => e.replace(/<[^>]*>/g, ""), oe = (e) => e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, "\"").replace(/'/g, "'").replace(///g, "/"), D = (e, t = {}) => e == null || e === "" ? "" : oe(ae(String(e))), O = 100, k = (e, t = {}, n = 0, r = /* @__PURE__ */ new WeakSet()) => {
|
|
612
|
+
if (n > O) return console.warn(`sanitizeHttpResponse: Maximum depth (${O}) exceeded.`), typeof e == "string" ? D(e, t) : "[Max Depth Exceeded]";
|
|
589
613
|
if (e == null) return e;
|
|
590
|
-
if (typeof e == "string") return
|
|
591
|
-
if (Array.isArray(e)) return e.map((e) =>
|
|
614
|
+
if (typeof e == "string") return D(e, t);
|
|
615
|
+
if (Array.isArray(e)) return e.map((e) => k(e, t, n + 1, r));
|
|
592
616
|
if (typeof e == "object") {
|
|
593
617
|
if (r.has(e)) return console.warn("sanitizeHttpResponse: Circular reference detected. Breaking cycle to prevent infinite recursion."), "[Circular Reference]";
|
|
594
618
|
r.add(e);
|
|
595
619
|
let i = {};
|
|
596
|
-
for (let [a, o] of Object.entries(e)) i[a] =
|
|
620
|
+
for (let [a, o] of Object.entries(e)) i[a] = k(o, t, n + 1, r);
|
|
597
621
|
return r.delete(e), i;
|
|
598
622
|
}
|
|
599
623
|
return e;
|
|
600
|
-
},
|
|
624
|
+
}, se = [
|
|
601
625
|
"b",
|
|
602
626
|
"i",
|
|
603
627
|
"em",
|
|
@@ -606,16 +630,16 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
606
630
|
"br",
|
|
607
631
|
"p",
|
|
608
632
|
"span"
|
|
609
|
-
],
|
|
633
|
+
], ce = ["class"], A = (e, t = {}) => {
|
|
610
634
|
if (e == null || e === "") return "";
|
|
611
635
|
let n = String(e);
|
|
612
|
-
if (!o.isSupported || typeof o.sanitize != "function") return
|
|
636
|
+
if (!o.isSupported || typeof o.sanitize != "function") return D(n);
|
|
613
637
|
let { plainTextOnly: r = !0, allowedTags: i, allowedAttributes: a } = t;
|
|
614
638
|
if (r) return o.sanitize(n, {
|
|
615
639
|
ALLOWED_ATTR: [],
|
|
616
640
|
ALLOWED_TAGS: []
|
|
617
641
|
});
|
|
618
|
-
let s = i ??
|
|
642
|
+
let s = i ?? se, c = a ?? ce;
|
|
619
643
|
return o.sanitize(n, {
|
|
620
644
|
ALLOW_DATA_ATTR: !1,
|
|
621
645
|
ALLOW_UNKNOWN_PROTOCOLS: !1,
|
|
@@ -627,26 +651,26 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
627
651
|
RETURN_DOM: !1,
|
|
628
652
|
RETURN_DOM_FRAGMENT: !1
|
|
629
653
|
});
|
|
630
|
-
},
|
|
631
|
-
if (n >
|
|
654
|
+
}, j = 100, M = (e, t = {}, n = 0, r = /* @__PURE__ */ new WeakSet()) => {
|
|
655
|
+
if (n > j) return console.warn(`sanitizeHttpResponse: Maximum depth (${j}) exceeded.`), typeof e == "string" ? A(e, t) : "[Max Depth Exceeded]";
|
|
632
656
|
if (e == null) return e;
|
|
633
|
-
if (typeof e == "string") return
|
|
634
|
-
if (Array.isArray(e)) return e.map((e) =>
|
|
657
|
+
if (typeof e == "string") return A(e, t);
|
|
658
|
+
if (Array.isArray(e)) return e.map((e) => M(e, t, n + 1, r));
|
|
635
659
|
if (typeof e == "object") {
|
|
636
660
|
if (r.has(e)) return console.warn("sanitizeHttpResponse: Circular reference detected. Breaking cycle to prevent infinite recursion."), "[Circular Reference]";
|
|
637
661
|
r.add(e);
|
|
638
662
|
let i = {};
|
|
639
|
-
for (let [a, o] of Object.entries(e)) i[a] =
|
|
663
|
+
for (let [a, o] of Object.entries(e)) i[a] = M(o, t, n + 1, r);
|
|
640
664
|
return r.delete(e), i;
|
|
641
665
|
}
|
|
642
666
|
return e;
|
|
643
|
-
},
|
|
644
|
-
let t =
|
|
667
|
+
}, le = (e) => {
|
|
668
|
+
let t = E(), n = x(e ?? t.language);
|
|
645
669
|
return r(() => (e) => {
|
|
646
670
|
let t = n(e);
|
|
647
|
-
return typeof e == "object" && e ?
|
|
671
|
+
return typeof e == "object" && e ? A(t) : t;
|
|
648
672
|
}, [n]);
|
|
649
|
-
},
|
|
673
|
+
}, N = (...e) => {
|
|
650
674
|
let t = /* @__PURE__ */ new Map();
|
|
651
675
|
return e.forEach((e) => {
|
|
652
676
|
e && Object.entries(e).forEach(([e, n]) => {
|
|
@@ -656,12 +680,12 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
656
680
|
});
|
|
657
681
|
});
|
|
658
682
|
}), Object.fromEntries(Array.from(t.values(), ({ key: e, value: t }) => [e, t]));
|
|
659
|
-
},
|
|
683
|
+
}, ue = (e, t, n) => e && Object.fromEntries(Object.entries(e).map(([e, r]) => [e, F(r, t, n)])), P = (e, t) => {
|
|
660
684
|
let n = Object.entries(t ?? {}).filter(([e]) => e);
|
|
661
685
|
if (n.length === 0) return e;
|
|
662
686
|
let r = n.map(([e, t]) => `${encodeURIComponent(e)}=${encodeURIComponent(t ?? "")}`).join("&");
|
|
663
687
|
return r ? `${e}${e.includes("?") ? "&" : "?"}${r}` : e;
|
|
664
|
-
},
|
|
688
|
+
}, de = (e, t) => !(t && e) || /^(https?:)?\/\//i.test(e) ? e : `${t.replace(/\/+$/, "")}/${e.replace(/^\/+/, "")}`, fe = (e) => {
|
|
665
689
|
try {
|
|
666
690
|
return {
|
|
667
691
|
ok: !0,
|
|
@@ -670,14 +694,14 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
670
694
|
} catch {
|
|
671
695
|
return { ok: !1 };
|
|
672
696
|
}
|
|
673
|
-
},
|
|
697
|
+
}, pe = async (e) => {
|
|
674
698
|
try {
|
|
675
699
|
let { url: t, method: n = "GET", headers: r, queryParams: i, body: a, signal: o } = e;
|
|
676
700
|
if (!t || t.trim() === "") return {
|
|
677
701
|
error: "No URL provided",
|
|
678
702
|
success: !1
|
|
679
703
|
};
|
|
680
|
-
let s =
|
|
704
|
+
let s = P(t, i), c = N({ "Content-Type": "application/json" }, r), l = {
|
|
681
705
|
headers: Object.fromEntries(Object.entries(c).filter(([, e]) => e)),
|
|
682
706
|
method: n,
|
|
683
707
|
signal: o
|
|
@@ -706,13 +730,13 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
706
730
|
success: !1
|
|
707
731
|
};
|
|
708
732
|
}
|
|
709
|
-
},
|
|
733
|
+
}, F = (e, t, n = {}) => {
|
|
710
734
|
if (!e) return "";
|
|
711
735
|
let { encode: r = !1, json: i = !1 } = n;
|
|
712
736
|
return e.replace(/\{\{([\w-]+)}}/g, (e, n) => {
|
|
713
737
|
let a = t[n.trim()];
|
|
714
738
|
if (a == null) return i ? "null" : "";
|
|
715
|
-
let o = typeof a == "string" ?
|
|
739
|
+
let o = typeof a == "string" ? A(a) : a;
|
|
716
740
|
if (r) return encodeURIComponent(String(o));
|
|
717
741
|
if (i) {
|
|
718
742
|
if (typeof o == "string") return `"${o.replace(/\\/g, "\\\\").replace(/"/g, "\\\"")}"`;
|
|
@@ -721,14 +745,14 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
721
745
|
}
|
|
722
746
|
return String(o);
|
|
723
747
|
});
|
|
724
|
-
},
|
|
725
|
-
let r =
|
|
748
|
+
}, I = (e, t) => e ? e.replace(/\{\{response\.([\w.-]+)}}/g, (e, n) => {
|
|
749
|
+
let r = L(t, n.trim());
|
|
726
750
|
return r == null ? "" : String(r);
|
|
727
|
-
}) : "",
|
|
751
|
+
}) : "", L = (e, t) => {
|
|
728
752
|
if (!(!e || typeof e != "object")) return t.split(".").reduce((e, t) => {
|
|
729
753
|
if (!(typeof e != "object" || !e)) return e[t];
|
|
730
754
|
}, e);
|
|
731
|
-
},
|
|
755
|
+
}, R = (e, t) => t ? t.split(".").reduce((e, t) => {
|
|
732
756
|
if (e == null) return;
|
|
733
757
|
let n = t.match(/^(\w+)\[(\d+)]$/);
|
|
734
758
|
if (n) {
|
|
@@ -736,38 +760,38 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
736
760
|
return Array.isArray(i) ? i[Number.parseInt(r, 10)] : i;
|
|
737
761
|
}
|
|
738
762
|
return e[t];
|
|
739
|
-
}, e) : e,
|
|
740
|
-
let r =
|
|
763
|
+
}, e) : e, z = (e, t, n) => {
|
|
764
|
+
let r = R(e, t ?? "");
|
|
741
765
|
return Array.isArray(r) ? r.map((e) => {
|
|
742
|
-
let t =
|
|
766
|
+
let t = R(e, n.valueField), r = R(e, n.labelField);
|
|
743
767
|
if (t == null) return null;
|
|
744
768
|
let i = {
|
|
745
769
|
label: { en: String(r ?? t) },
|
|
746
770
|
value: String(t)
|
|
747
771
|
};
|
|
748
772
|
if (n.descriptionField) {
|
|
749
|
-
let t =
|
|
773
|
+
let t = R(e, n.descriptionField);
|
|
750
774
|
t != null && t !== "" && (i.description = { en: String(t) });
|
|
751
775
|
}
|
|
752
776
|
if (n.imageField) {
|
|
753
|
-
let t =
|
|
777
|
+
let t = R(e, n.imageField);
|
|
754
778
|
typeof t == "string" && t !== "" && (i.image = t);
|
|
755
779
|
}
|
|
756
780
|
return i;
|
|
757
781
|
}).filter((e) => e !== null) : [];
|
|
758
|
-
},
|
|
782
|
+
}, B = /^[\w-]+$/, me = /^\{\{([\w-]+)}}$/, he = /\{\{([\w-]+)}}/g, ge = (e, t) => {
|
|
759
783
|
let n = { ...e };
|
|
760
784
|
for (let r of t) {
|
|
761
785
|
let t = r.data?.name?.trim();
|
|
762
|
-
t &&
|
|
786
|
+
t && B.test(t) && e[r.id] !== void 0 && n[t] === void 0 && (n[t] = e[r.id]);
|
|
763
787
|
}
|
|
764
788
|
return n;
|
|
765
|
-
}, V = (e, t) => e.replace(
|
|
789
|
+
}, V = (e, t) => e.replace(he, (e, n) => {
|
|
766
790
|
let r = t[n];
|
|
767
791
|
return r == null ? "" : typeof r == "object" ? JSON.stringify(r) : String(r);
|
|
768
792
|
}), H = (e, t) => {
|
|
769
793
|
if (typeof e == "string") {
|
|
770
|
-
let n = e.match(
|
|
794
|
+
let n = e.match(me);
|
|
771
795
|
if (n) {
|
|
772
796
|
let e = t[n[1]];
|
|
773
797
|
return e === void 0 ? null : e;
|
|
@@ -781,7 +805,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
781
805
|
return n;
|
|
782
806
|
}
|
|
783
807
|
return e;
|
|
784
|
-
},
|
|
808
|
+
}, _e = (e) => {
|
|
785
809
|
try {
|
|
786
810
|
return JSON.parse(e);
|
|
787
811
|
} catch {
|
|
@@ -789,12 +813,12 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
789
813
|
}
|
|
790
814
|
}, U = (e, t, n) => {
|
|
791
815
|
if (!e || e.trim() === "") return;
|
|
792
|
-
let r =
|
|
793
|
-
if (r !== void 0) return H(r,
|
|
794
|
-
},
|
|
816
|
+
let r = _e(e);
|
|
817
|
+
if (r !== void 0) return H(r, ge(t, n));
|
|
818
|
+
}, ve = (e, t, n) => {
|
|
795
819
|
let r = U(e, t, n);
|
|
796
820
|
return r === void 0 ? void 0 : JSON.stringify(r);
|
|
797
|
-
}, 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,
|
|
821
|
+
}, 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, ye = (e) => Object.fromEntries(Object.entries(e).map(([e, t]) => [e, typeof t == "string" ? W(t) : t])), G = (e) => new Promise((t, n) => {
|
|
798
822
|
let r = new FileReader();
|
|
799
823
|
r.onload = () => {
|
|
800
824
|
let n = r.result;
|
|
@@ -808,7 +832,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
808
832
|
}, r.onerror = () => {
|
|
809
833
|
n(/* @__PURE__ */ Error(`Failed to read file: ${e.name}`));
|
|
810
834
|
}, r.readAsDataURL(e);
|
|
811
|
-
}),
|
|
835
|
+
}), be = (e) => {
|
|
812
836
|
let t = e.data.split(",")[1], n = atob(t), r = new ArrayBuffer(n.length), i = new Uint8Array(r);
|
|
813
837
|
for (let e = 0; e < n.length; e++) i[e] = n.charCodeAt(e);
|
|
814
838
|
let a = new Blob([r], { type: e.type });
|
|
@@ -816,29 +840,43 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
816
840
|
lastModified: e.lastModified,
|
|
817
841
|
type: e.type
|
|
818
842
|
});
|
|
819
|
-
},
|
|
843
|
+
}, xe = (e) => Promise.all(e.map((e) => G(e))), K = (e) => {
|
|
820
844
|
try {
|
|
821
845
|
let { pathname: t } = new URL(e, "http://_"), n = t.split("/").filter(Boolean).pop();
|
|
822
846
|
return n ? decodeURIComponent(n) : e;
|
|
823
847
|
} catch {
|
|
824
848
|
return e;
|
|
825
849
|
}
|
|
826
|
-
},
|
|
850
|
+
}, Se = (e) => !!e && !e.startsWith("data:") && !e.startsWith("blob:"), Ce = (e) => (Array.isArray(e) ? e : e == null ? [] : [e]).flatMap((e) => typeof e == "string" ? e.trim() === "" ? [] : [{
|
|
827
851
|
data: e,
|
|
828
852
|
lastModified: 0,
|
|
829
853
|
name: K(e),
|
|
830
854
|
size: 0,
|
|
831
855
|
type: ""
|
|
832
|
-
}] : [e]),
|
|
856
|
+
}] : [e]), we = (e) => e < 1024 ? `${e} B` : e < 1024 * 1024 ? `${(e / 1024).toFixed(1)} KB` : `${(e / (1024 * 1024)).toFixed(1)} MB`, Te = new Set([
|
|
833
857
|
"text",
|
|
834
858
|
"number",
|
|
835
859
|
"password",
|
|
836
860
|
"textarea",
|
|
837
861
|
"time"
|
|
838
|
-
]),
|
|
862
|
+
]), Ee = (e) => e.filter(s), q = (e) => e.data.name ? e.data.name : g(e.data.label) || e.id, De = (e, t) => g(e.data.label, t) || e.data.name || e.id, Oe = (e, t) => {
|
|
839
863
|
let n = e.type ?? "text";
|
|
840
|
-
return !_(e.placeholder, t) &&
|
|
841
|
-
},
|
|
864
|
+
return !_(e.placeholder, t) && Te.has(n) ? b(t)["renderer.defaultInputs.newAnswer"] ?? "" : g(e.placeholder, t);
|
|
865
|
+
}, ke = (e) => e == null || typeof e == "string" && e.trim() === "" ? !0 : Array.isArray(e) && e.length === 0, Ae = (e) => {
|
|
866
|
+
let { multiple: t, options: n, optionsSource: r, type: i } = e.data;
|
|
867
|
+
switch (i) {
|
|
868
|
+
case S.switch: return !1;
|
|
869
|
+
case S.checkbox: return n?.length || r ? [] : !1;
|
|
870
|
+
case S.select:
|
|
871
|
+
case S.http: return t ? [] : "";
|
|
872
|
+
case S.number:
|
|
873
|
+
case S.file:
|
|
874
|
+
case S.daterange:
|
|
875
|
+
case S.timerange: return null;
|
|
876
|
+
case S.submit: return;
|
|
877
|
+
default: return "";
|
|
878
|
+
}
|
|
879
|
+
}, je = (e, t) => e ? t[e] != null : !1, J = (e, t) => {
|
|
842
880
|
let { defaultValue: n } = e.data;
|
|
843
881
|
if (n) {
|
|
844
882
|
if (n.type === "static" && n.staticValue !== void 0) return n.staticValue;
|
|
@@ -847,7 +885,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
847
885
|
if (e !== void 0) return e;
|
|
848
886
|
}
|
|
849
887
|
}
|
|
850
|
-
},
|
|
888
|
+
}, Y = (e, t) => {
|
|
851
889
|
let n = {};
|
|
852
890
|
return t.forEach((t) => {
|
|
853
891
|
if (e[t.id] !== void 0) {
|
|
@@ -858,10 +896,10 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
858
896
|
e[r] !== void 0 && (n[t.id] = e[r]);
|
|
859
897
|
}), t.forEach((e) => {
|
|
860
898
|
if (n[e.id] !== void 0) return;
|
|
861
|
-
let t =
|
|
899
|
+
let t = J(e, n);
|
|
862
900
|
t !== void 0 && (n[e.id] = t);
|
|
863
901
|
}), n;
|
|
864
|
-
},
|
|
902
|
+
}, Me = (e, t) => {
|
|
865
903
|
let n = {};
|
|
866
904
|
return t.forEach((t) => {
|
|
867
905
|
let r = t.id, i = q(t);
|
|
@@ -910,7 +948,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
910
948
|
} catch {
|
|
911
949
|
return !1;
|
|
912
950
|
}
|
|
913
|
-
},
|
|
951
|
+
}, Ne = (e, t, n) => {
|
|
914
952
|
let r = {};
|
|
915
953
|
return e.forEach((e) => {
|
|
916
954
|
let { defaultValue: i } = e.data;
|
|
@@ -967,7 +1005,7 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
967
1005
|
colors: Q.light,
|
|
968
1006
|
setTheme: () => null,
|
|
969
1007
|
theme: "system"
|
|
970
|
-
}),
|
|
1008
|
+
}), Pe = ({ children: e, defaultTheme: t = "system", storageKey: o = "treege-theme", theme: s, ...c }) => {
|
|
971
1009
|
let [l, u] = i(() => s || typeof localStorage < "u" && localStorage.getItem(o) || t), d = s ?? l, f = Q[d === "system" ? typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light" : d], p = r(() => ({
|
|
972
1010
|
colors: f,
|
|
973
1011
|
setTheme: (e) => {
|
|
@@ -999,10 +1037,10 @@ var s = (e) => e?.type === "input", c = (e) => e?.type === "ui", l = (e) => e?.t
|
|
|
999
1037
|
value: p,
|
|
1000
1038
|
children: e
|
|
1001
1039
|
});
|
|
1002
|
-
},
|
|
1040
|
+
}, Fe = () => {
|
|
1003
1041
|
let e = t($);
|
|
1004
1042
|
if (e === void 0) throw Error("useTheme must be used within a ThemeProvider");
|
|
1005
1043
|
return e;
|
|
1006
1044
|
};
|
|
1007
1045
|
//#endregion
|
|
1008
|
-
export {
|
|
1046
|
+
export { s as $, N as A, k as B, ye as C, z as D, P as E, fe as F, re as G, E as H, le as I, b as J, ne as K, A as L, F as M, ue as N, R as O, de as P, l as Q, M as R, W as S, ve as T, C as U, ie as V, S as W, g as X, _ as Y, te as Z, xe as _, Ne as a, Ce as b, ke as c, Ee as d, c as et, Oe as f, G as g, K as h, Y as i, I as j, pe as k, Ae as l, De as m, Fe as n, je as o, q as p, x as q, X as r, Me as s, Pe as t, J as u, we as v, U as w, be as x, Se as y, D as z };
|
|
@@ -21,7 +21,7 @@ export interface AIConfig {
|
|
|
21
21
|
* - Gemini: "gemini-2.5-flash" (default), "gemini-2.5-pro-preview-03-25"
|
|
22
22
|
* - OpenAI: "gpt-4o-mini" (default), "gpt-4o", "gpt-3.5-turbo"
|
|
23
23
|
* - DeepSeek: "deepseek-chat" (default)
|
|
24
|
-
* - Claude: "claude-
|
|
24
|
+
* - Claude: "claude-opus-4-8" (default), "claude-sonnet-5", "claude-haiku-4-5"
|
|
25
25
|
*/
|
|
26
26
|
model?: string;
|
|
27
27
|
/**
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { AIGenerationRequest, AIGenerationResponse } from '../types/ai';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* Enforce the editor's structural invariants on an AI-generated flow, so a
|
|
4
|
+
* model that drifts from the prompt can never inject a malformed flow into
|
|
5
|
+
* the canvas:
|
|
6
|
+
* - the response must carry `nodes` and `edges` arrays;
|
|
7
|
+
* - group nodes are metadata only: always `hidden` and anchored at (0, 0)
|
|
8
|
+
* (a visible or offset group breaks pointer events and the auto-layout —
|
|
9
|
+
* see `getLayoutedElements`);
|
|
10
|
+
* - a `parentId` pointing to a node that isn't a group is dropped;
|
|
11
|
+
* - groups are hoisted before other nodes, since xyflow requires parents to
|
|
12
|
+
* precede their children in the nodes array.
|
|
13
|
+
*/
|
|
14
|
+
export declare const sanitizeGeneratedFlow: (response: AIGenerationResponse) => AIGenerationResponse;
|
|
15
|
+
/**
|
|
16
|
+
* Main function to generate flow using AI.
|
|
17
|
+
* Whatever the provider returns is passed through `sanitizeGeneratedFlow`, so
|
|
18
|
+
* the caller always receives a flow that respects the editor's invariants.
|
|
4
19
|
*/
|
|
5
20
|
export declare function generateFlowWithAI(request: AIGenerationRequest): Promise<AIGenerationResponse>;
|