@oomol-lab/open-flow 0.1.0-beta.23 → 0.1.0-beta.26

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.
Files changed (38) hide show
  1. package/dist/browser/{createResourceDialog-PKbMMpEk.js → createResourceDialog-BwI2JmPE.js} +7 -7
  2. package/dist/browser/flow-authoring.js +249 -250
  3. package/dist/browser/flow-change.d.ts +16 -7
  4. package/dist/browser/flow-change.js +824 -804
  5. package/dist/browser/{flowChanges-BUlMz4iC.js → flowChanges-BqPtWEI9.js} +2706 -2906
  6. package/dist/browser/{flowWorkspace-DLArN17T.js → flowWorkspace-CpMGzmfz.js} +37249 -35916
  7. package/dist/browser/{inputValues-CcGVt51C.js → inputValues-CeeJw_G8.js} +1 -1
  8. package/dist/browser/licenses.md +24 -0
  9. package/dist/browser/{lite-Cy6aeiL6.js → lite-BuKZ8joP.js} +50 -43
  10. package/dist/browser/{input-group-C2frNYAx.js → switch-CyZ96-UF.js} +1519 -612
  11. package/dist/browser/theme.css +30 -4
  12. package/dist/browser/ui-input.d.ts +3 -1
  13. package/dist/browser/ui.css +1 -1
  14. package/dist/browser/ui.js +10 -8
  15. package/dist/browser/warmCodeTheme-DVv4-rDO.js +35 -0
  16. package/dist/browser/workbench.css +1 -1
  17. package/dist/browser/workbench.js +753 -714
  18. package/dist/browser/{workbenchSelect-CPRUXKbf.js → workbenchSelect-BUu7CjUA.js} +504 -490
  19. package/dist/common/control-api-conformance.js +18 -18
  20. package/dist/common/control-api.d.ts +43 -15
  21. package/dist/common/control-api.js +1803 -1755
  22. package/dist/common/control-requests.js +2 -7
  23. package/dist/common/engine-contract.d.ts +2 -2
  24. package/dist/common/flow-encoding.js +587 -589
  25. package/dist/common/flow-graph.d.ts +31 -1
  26. package/dist/common/flow-schema.d.ts +11 -1
  27. package/dist/common/flow-semantics.d.ts +2 -1
  28. package/dist/common/flow-semantics.js +1542 -1457
  29. package/dist/common/mcp.d.ts +1 -0
  30. package/dist/common/mcp.js +308 -260
  31. package/dist/common/provider-triggers.js +934 -931
  32. package/dist/common/run-lifecycle.d.ts +1 -1
  33. package/dist/common/run-lifecycle.js +5 -5
  34. package/dist/common/runtime-contract.d.ts +2 -0
  35. package/dist/common/runtime-contract.js +96 -32
  36. package/dist/common/scheduler.d.ts +39 -21
  37. package/dist/common/scheduler.js +2358 -2339
  38. package/package.json +1 -1
@@ -1,26 +1,376 @@
1
1
  import { a as e, l as t, r as n } from "./dist-Dz6Nglsd.js";
2
- import { At as r, Bn as i, Dt as a, Et as o, Gt as s, Ht as c, Kt as l, Mt as u, Ot as d, Qn as f, Tn as p, Wt as m, Xt as h, Zt as g, _n as _, _t as v, en as y, er as b, fn as x, gt as S, ir as C, jt as w, kt as T, ot as E, st as D, tr as O, un as k, wt as A, zn as j } from "./lite-Cy6aeiL6.js";
3
- import { i as M, n as N } from "./languages-C0zQ4GSo.js";
4
- import { jsx as P } from "react/jsx-runtime";
5
- import * as F from "react";
6
- import * as I from "react-dom";
2
+ import { $t as r, An as i, At as a, Dn as o, Dt as s, Ft as c, Gn as l, Gt as u, Hn as d, In as f, Jn as p, Jt as m, Ln as h, Mn as g, Mt as _, Nn as v, Nt as y, On as b, Pn as x, Pt as S, Qt as C, Rn as w, Un as T, Xn as E, Xt as D, Yt as O, Zn as k, Zt as ee, _t as A, ar as j, bn as M, bt as te, cn as N, cr as ne, en as P, er as re, fn as ie, hn as F, in as ae, jn as oe, jt as se, kt as I, ln as ce, lr as L, lt as R, mn as le, nn as ue, nr as de, on as z, or as fe, pn as B, qn as pe, qt as me, rn as V, sn as H, tn as U, tr as he, ur as W, ut as G, wn as ge, yt as K, zn as _e } from "./lite-BuKZ8joP.js";
3
+ import { i as ve, n as ye } from "./languages-C0zQ4GSo.js";
4
+ import { jsx as q, jsxs as be } from "react/jsx-runtime";
5
+ import * as J from "react";
6
+ import * as Y from "react-dom";
7
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox/root/CheckboxRootDataAttributes.js
8
+ var xe = /*#__PURE__*/ function(e) {
9
+ return e.checked = "data-checked", e.unchecked = "data-unchecked", e.indeterminate = "data-indeterminate", e.disabled = "data-disabled", e.readonly = "data-readonly", e.required = "data-required", e.valid = "data-valid", e.invalid = "data-invalid", e.touched = "data-touched", e.dirty = "data-dirty", e.filled = "data-filled", e.focused = "data-focused", e;
10
+ }({});
11
+ //#endregion
12
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox/utils/useStateAttributesMapping.js
13
+ function Se(e) {
14
+ return J.useMemo(() => ({
15
+ checked(t) {
16
+ return e.indeterminate ? {} : t ? { [xe.checked]: "" } : { [xe.unchecked]: "" };
17
+ },
18
+ ...f
19
+ }), [e.indeterminate]);
20
+ }
21
+ //#endregion
22
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/field/item/FieldItemContext.js
23
+ var Ce = /*#__PURE__*/ J.createContext({ disabled: !1 });
24
+ process.env.NODE_ENV !== "production" && (Ce.displayName = "FieldItemContext");
25
+ function we() {
26
+ return J.useContext(Ce);
27
+ }
28
+ //#endregion
29
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/internals/labelable-provider/useAriaLabelledBy.js
30
+ function Te(e, t, n, r = !0, i) {
31
+ let [a, o] = J.useState(), s = x(i ? `${i}-label` : void 0), c = e ?? t ?? a;
32
+ return de(() => {
33
+ let i = e || t || !r ? void 0 : Ee(n.current, s);
34
+ a !== i && o(i);
35
+ }), c;
36
+ }
37
+ function Ee(e, t) {
38
+ let n = De(e);
39
+ if (n) return !n.id && t && (n.id = t), n.id || void 0;
40
+ }
41
+ function De(e) {
42
+ if (!e) return;
43
+ let t = e.parentElement;
44
+ if (t && t.tagName === "LABEL") return t;
45
+ let n = e.id;
46
+ if (n) {
47
+ let t = e.nextElementSibling;
48
+ if (t && t.htmlFor === n) return t;
49
+ }
50
+ let r = e.labels;
51
+ return r && r[0];
52
+ }
53
+ //#endregion
54
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox-group/CheckboxGroupContext.js
55
+ var Oe = /*#__PURE__*/ J.createContext(void 0);
56
+ process.env.NODE_ENV !== "production" && (Oe.displayName = "CheckboxGroupContext");
57
+ function ke(e = !0) {
58
+ let t = J.useContext(Oe);
59
+ if (t === void 0 && !e) throw Error(process.env.NODE_ENV === "production" ? re(3) : "Base UI: CheckboxGroupContext is missing. CheckboxGroup parts must be placed within <CheckboxGroup>.");
60
+ return t;
61
+ }
62
+ //#endregion
63
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox/root/CheckboxRootContext.js
64
+ var Ae = /*#__PURE__*/ J.createContext(void 0);
65
+ process.env.NODE_ENV !== "production" && (Ae.displayName = "CheckboxRootContext");
66
+ function je() {
67
+ let e = J.useContext(Ae);
68
+ if (e === void 0) throw Error(process.env.NODE_ENV === "production" ? re(14) : "Base UI: CheckboxRootContext is missing. Checkbox parts must be placed within <Checkbox.Root>.");
69
+ return e;
70
+ }
71
+ //#endregion
72
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox/root/CheckboxRoot.js
73
+ var Me = "data-parent", Ne = /*#__PURE__*/ J.forwardRef(function(e, t) {
74
+ let { checked: n, className: r, defaultChecked: a = !1, "aria-labelledby": o, disabled: s = !1, form: c, id: u, indeterminate: d = !1, inputRef: f, name: m, onCheckedChange: _, parent: y = !1, readOnly: b = !1, render: S, required: C = !1, uncheckedValue: T, value: D, nativeButton: O = !1, style: ee, ...A } = e, { clearErrors: M } = oe(), { disabled: te, name: N, setDirty: ne, setFilled: P, setFocused: re, setTouched: ie, state: ae, validationMode: se, validityData: I, shouldValidateOnChange: ce, validation: L } = v(), R = we(), { labelId: ue, controlId: z, registerControlId: B, getDescriptionProps: me } = i(), V = ke(), H = V?.parent, U = H && V.allValues, W = te || R.disabled || V?.disabled || s, G = N ?? m, K = D ?? G, ve = x(), ye = x(), Y = z;
75
+ U ? Y = y ? ye : `${H.id}-${K}` : u && (Y = u);
76
+ let xe = {};
77
+ U && (y ? xe = V.parent.getParentProps() : K && (xe = V.parent.getChildProps(K)));
78
+ let Ce = j(_), { checked: Ee = n, indeterminate: De = d, onCheckedChange: Oe, ...je } = xe, Ne = V?.value, Pe = V?.setValue, Fe = V?.defaultValue, Ie = J.useRef(null), Le = fe(() => Symbol("checkbox-control")), Re = J.useRef(!1), { getButtonProps: ze, buttonRef: Be } = k({
79
+ disabled: W,
80
+ native: O
81
+ }), X = V?.validation ?? L, [Z, Ve] = _e({
82
+ controlled: K && Ne && !y ? Ne.includes(K) : Ee,
83
+ default: K && Fe && !y ? Fe.includes(K) : a,
84
+ name: "Checkbox",
85
+ state: "checked"
86
+ });
87
+ de(() => {
88
+ B !== p && (Re.current = !0, B(Le.current, Y));
89
+ }, [
90
+ Y,
91
+ V,
92
+ B,
93
+ y,
94
+ Le
95
+ ]), J.useEffect(() => {
96
+ let e = Le.current;
97
+ return () => {
98
+ !Re.current || B === p || (Re.current = !1, B(e, void 0));
99
+ };
100
+ }, [B, Le]), g(Ie, {
101
+ enabled: !V,
102
+ id: ve,
103
+ value: Z
104
+ });
105
+ let Q = J.useRef(null), He = E(f, Q, X.inputRef), Ue = Te(o, ue, Q, !O, Y ?? void 0);
106
+ de(() => {
107
+ Q.current && (Q.current.indeterminate = De, Z && P(!0));
108
+ }, [
109
+ Z,
110
+ De,
111
+ P
112
+ ]), le(Z, () => {
113
+ V && !y || (M(G), P(Z), ne(Z !== I.initialValue), ce() ? X.commit(Z) : X.commit(Z, !0));
114
+ });
115
+ let We = he({
116
+ checked: Z,
117
+ disabled: W,
118
+ form: c,
119
+ name: y ? void 0 : G,
120
+ id: O ? void 0 : Y ?? void 0,
121
+ required: C,
122
+ ref: He,
123
+ style: G ? w : h,
124
+ tabIndex: -1,
125
+ type: "checkbox",
126
+ "aria-hidden": !0,
127
+ onChange(e) {
128
+ if (e.nativeEvent.defaultPrevented) return;
129
+ if (b) {
130
+ e.preventDefault();
131
+ return;
132
+ }
133
+ let t = e.currentTarget.checked, n = F(ge, e.nativeEvent);
134
+ if (Oe?.(t, n), Ce(t, n), !n.isCanceled && (Ve(t), K && Ne && Pe && !y && !U)) {
135
+ let e = t ? [...Ne, K] : Ne.filter((e) => e !== K);
136
+ Pe(e, n);
137
+ }
138
+ },
139
+ onFocus() {
140
+ Ie.current?.focus();
141
+ }
142
+ }, D === void 0 ? pe : { value: (V ? Z && D : D) || "" }, me, V ? X.getValidationProps : X.getInputValidationProps), Ge = U ? !!Ee : Z, Ke = U && De || d;
143
+ J.useEffect(() => {
144
+ if (!H || !K) return;
145
+ let e = H.disabledStatesRef.current;
146
+ return e.set(K, W), () => {
147
+ e.delete(K);
148
+ };
149
+ }, [
150
+ H,
151
+ W,
152
+ K
153
+ ]);
154
+ let qe = J.useMemo(() => ({
155
+ ...ae,
156
+ checked: Ge,
157
+ disabled: W,
158
+ readOnly: b,
159
+ required: C,
160
+ indeterminate: Ke
161
+ }), [
162
+ ae,
163
+ Ge,
164
+ W,
165
+ b,
166
+ C,
167
+ Ke
168
+ ]), Je = Se(qe), Ye = l("span", e, {
169
+ state: qe,
170
+ ref: [
171
+ Be,
172
+ Ie,
173
+ t,
174
+ V?.registerControlRef
175
+ ],
176
+ props: [
177
+ {
178
+ id: O ? Y ?? void 0 : ve,
179
+ role: "checkbox",
180
+ "aria-checked": De ? "mixed" : Z,
181
+ "aria-readonly": b || void 0,
182
+ "aria-required": C || void 0,
183
+ "aria-labelledby": Ue,
184
+ [Me]: y ? "" : void 0,
185
+ onFocus() {
186
+ re(!0);
187
+ },
188
+ onBlur() {
189
+ let e = Q.current;
190
+ e && (ie(!0), re(!1), se === "onBlur" && X.commit(V ? Ne : e.checked));
191
+ },
192
+ onClick(e) {
193
+ b || W || (e.preventDefault(), Q.current?.dispatchEvent(new PointerEvent("click", {
194
+ bubbles: !0,
195
+ shiftKey: e.shiftKey,
196
+ ctrlKey: e.ctrlKey,
197
+ altKey: e.altKey,
198
+ metaKey: e.metaKey
199
+ })));
200
+ }
201
+ },
202
+ me,
203
+ X.getValidationProps,
204
+ A,
205
+ je,
206
+ ze
207
+ ],
208
+ stateAttributesMapping: Je
209
+ });
210
+ return /*#__PURE__*/ be(Ae.Provider, {
211
+ value: qe,
212
+ children: [
213
+ Ye,
214
+ !Z && !V && G && !y && T !== void 0 && /*#__PURE__*/ q("input", {
215
+ type: "hidden",
216
+ form: c,
217
+ name: G,
218
+ value: T
219
+ }),
220
+ /*#__PURE__*/ q("input", {
221
+ ...We,
222
+ suppressHydrationWarning: !0
223
+ })
224
+ ]
225
+ });
226
+ });
227
+ process.env.NODE_ENV !== "production" && (Ne.displayName = "CheckboxRoot");
228
+ //#endregion
229
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/checkbox/indicator/CheckboxIndicator.js
230
+ var Pe = /*#__PURE__*/ J.forwardRef(function(e, t) {
231
+ let { render: n, className: r, style: i, keepMounted: a = !1, ...o } = e, s = je(), c = s.checked || s.indeterminate, { mounted: u, transitionStatus: d, setMounted: p } = N(c), m = J.useRef(null), h = {
232
+ ...s,
233
+ transitionStatus: d
234
+ };
235
+ ce({
236
+ open: c,
237
+ ref: m,
238
+ onComplete() {
239
+ c || p(!1);
240
+ }
241
+ });
242
+ let g = Se(s), _ = J.useMemo(() => ({
243
+ ...g,
244
+ ...ie,
245
+ ...f
246
+ }), [g]), v = a || u, y = l("span", e, {
247
+ ref: [t, m],
248
+ state: h,
249
+ stateAttributesMapping: _,
250
+ props: o
251
+ });
252
+ return v ? y : null;
253
+ });
254
+ process.env.NODE_ENV !== "production" && (Pe.displayName = "CheckboxIndicator");
255
+ //#endregion
256
+ //#region ../../node_modules/.bun/lucide-react@0.468.0+f4eacebf2041cd4f/node_modules/lucide-react/dist/esm/icons/minus.js
257
+ var Fe = H("Minus", [["path", {
258
+ d: "M5 12h14",
259
+ key: "1ays0h"
260
+ }]]);
261
+ //#endregion
262
+ //#region src/ui/browser/checkbox.tsx
263
+ function Ie({ className: e, indeterminate: t, ...n }) {
264
+ return /* @__PURE__ */ q(Ne, {
265
+ "data-slot": "checkbox",
266
+ indeterminate: t,
267
+ className: d("peer relative flex size-4 shrink-0 items-center justify-center rounded-[4px] border border-input transition-colors outline-none group-has-disabled/field:opacity-[var(--ui-disabled-opacity,0.5)] group-has-[:focus-visible]/field-label:outline-none group-has-[:focus-visible]/field-label:not-data-checked:border-input after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-2 focus-visible:outline-solid focus-visible:ring-0 focus-visible:aria-invalid:ring-0 focus-visible:outline-offset-1 focus-visible:outline-ring focus-visible:aria-invalid:outline-destructive disabled:cursor-[var(--ui-disabled-cursor,not-allowed)] disabled:opacity-[var(--ui-disabled-opacity,0.5)] aria-invalid:border-destructive aria-invalid:aria-checked:border-destructive dark:not-data-disabled:bg-input/30 data-disabled:data-indeterminate:bg-[color-mix(in_srgb,var(--ui-foreground)_3%,var(--ui-control-background,var(--ui-background)))] data-disabled:data-indeterminate:text-muted-foreground data-disabled:data-checked:bg-clip-padding data-disabled:data-checked:bg-primary/60 data-disabled:data-checked:border-primary/60 data-disabled:data-checked:text-primary-foreground not-data-disabled:data-checked:border-primary not-data-disabled:data-checked:bg-primary not-data-disabled:data-checked:text-primary-foreground group-has-[:focus-visible]/field-label:not-data-disabled:data-checked:border-primary dark:not-data-disabled:data-checked:bg-primary", e),
268
+ ...n,
269
+ children: /* @__PURE__ */ q(Pe, {
270
+ "data-slot": "checkbox-indicator",
271
+ className: "grid place-content-center text-current transition-none [&>svg]:size-3.5",
272
+ children: t ? /* @__PURE__ */ q(Fe, { strokeWidth: 1.5 }) : /* @__PURE__ */ q(z, {})
273
+ })
274
+ });
275
+ }
276
+ //#endregion
7
277
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverShared.js
8
- function L(e, t) {
9
- return t != null && !c(t) ? 0 : typeof e == "function" ? e() : e;
278
+ function Le(e, t) {
279
+ return t != null && !u(t) ? 0 : typeof e == "function" ? e() : e;
10
280
  }
11
- function R(e, t, n) {
12
- let r = L(e, n);
281
+ function Re(e, t, n) {
282
+ let r = Le(e, n);
13
283
  return typeof r == "number" ? r : r?.[t];
14
284
  }
15
- function z(e) {
285
+ function ze(e) {
16
286
  return typeof e == "function" ? e() : e;
17
287
  }
18
- function B(e, t) {
288
+ function Be(e, t) {
19
289
  return t || e === "click" || e === "mousedown";
20
290
  }
21
291
  //#endregion
292
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js
293
+ var X = U && ue;
294
+ function Z(e, t = {}) {
295
+ let n = "rootStore" in e ? e.rootStore : e, { events: i, dataRef: a } = n.context, { enabled: s = !0, delay: c } = t, l = J.useRef(!1), u = J.useRef(null), d = se(), f = J.useRef(!0);
296
+ J.useEffect(() => {
297
+ let e = n.select("domReferenceElement");
298
+ if (!s) return;
299
+ let t = ne(e);
300
+ function r() {
301
+ let e = n.select("domReferenceElement");
302
+ !n.select("open") && W(e) && e === C(V(e)) && (l.current = !0);
303
+ }
304
+ function i() {
305
+ f.current = !0;
306
+ }
307
+ function a() {
308
+ f.current = !1;
309
+ }
310
+ return te(K(t, "blur", r), X && K(t, "keydown", i, !0), X && K(t, "pointerdown", a, !0));
311
+ }, [n, s]), J.useEffect(() => {
312
+ if (!s) return;
313
+ function e(e) {
314
+ if (e.reason === "trigger-press" || e.reason === "escape-key") {
315
+ let e = n.select("domReferenceElement");
316
+ L(e) && (u.current = e, l.current = !0);
317
+ }
318
+ }
319
+ return i.on("openchange", e), () => {
320
+ i.off("openchange", e);
321
+ };
322
+ }, [
323
+ i,
324
+ s,
325
+ n
326
+ ]);
327
+ let p = J.useMemo(() => ({
328
+ onMouseLeave() {
329
+ l.current = !1, u.current = null;
330
+ },
331
+ onFocus(e) {
332
+ let t = e.currentTarget;
333
+ if (l.current) {
334
+ if (u.current === t) return;
335
+ l.current = !1, u.current = null;
336
+ }
337
+ let r = P(e.nativeEvent);
338
+ if (L(r)) {
339
+ if (X && !e.relatedTarget) {
340
+ if (!f.current && !D(r)) return;
341
+ } else if (!ee(r)) return;
342
+ }
343
+ let i = O(e.relatedTarget, n.context.triggerElements), { nativeEvent: a, currentTarget: s } = e, p = typeof c == "function" ? c() : c;
344
+ if (n.select("open") && i || p === 0 || p === void 0) {
345
+ n.setOpen(!0, F(o, a, s));
346
+ return;
347
+ }
348
+ d.start(p, () => {
349
+ l.current || n.setOpen(!0, F(o, a, s));
350
+ });
351
+ },
352
+ onBlur(e) {
353
+ l.current = !1, u.current = null;
354
+ let t = e.relatedTarget, i = e.nativeEvent, s = L(t) && t.hasAttribute(A("focus-guard")) && t.getAttribute("data-type") === "outside";
355
+ d.start(0, () => {
356
+ let e = n.select("domReferenceElement"), c = C(V(e));
357
+ !t && c === e || r(a.current.floatingContext?.refs.floating.current, c) || r(e, c) || s || O(t ?? c, n.context.triggerElements) || n.setOpen(!1, F(o, i));
358
+ });
359
+ }
360
+ }), [
361
+ a,
362
+ n,
363
+ d,
364
+ c
365
+ ]);
366
+ return J.useMemo(() => s ? {
367
+ reference: p,
368
+ trigger: p
369
+ } : {}, [s, p]);
370
+ }
371
+ //#endregion
22
372
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverInteractionSharedState.js
23
- var V = class e {
373
+ var Ve = class e {
24
374
  constructor() {
25
375
  this.pointerType = void 0, this.interactedInside = !1, this.handler = void 0, this.blockMouseMove = !0, this.performedPointerEventsMutation = !1, this.pointerEventsScopeElement = null, this.pointerEventsReferenceElement = null, this.pointerEventsFloatingElement = null, this.restTimeoutPending = !1, this.openChangeTimeout = new a(), this.restTimeout = new a(), this.handleCloseOptions = void 0;
26
376
  }
@@ -31,397 +381,397 @@ var V = class e {
31
381
  this.openChangeTimeout.clear(), this.restTimeout.clear();
32
382
  };
33
383
  disposeEffect = () => this.dispose;
34
- }, H = /* @__PURE__ */ new WeakMap();
35
- function U(e) {
384
+ }, Q = /* @__PURE__ */ new WeakMap();
385
+ function He(e) {
36
386
  if (!e.performedPointerEventsMutation) return;
37
387
  let t = e.pointerEventsScopeElement;
38
- t && H.get(t) === e && (e.pointerEventsScopeElement?.style.removeProperty("pointer-events"), e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"), e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"), H.delete(t)), e.performedPointerEventsMutation = !1, e.pointerEventsScopeElement = null, e.pointerEventsReferenceElement = null, e.pointerEventsFloatingElement = null;
388
+ t && Q.get(t) === e && (e.pointerEventsScopeElement?.style.removeProperty("pointer-events"), e.pointerEventsReferenceElement?.style.removeProperty("pointer-events"), e.pointerEventsFloatingElement?.style.removeProperty("pointer-events"), Q.delete(t)), e.performedPointerEventsMutation = !1, e.pointerEventsScopeElement = null, e.pointerEventsReferenceElement = null, e.pointerEventsFloatingElement = null;
39
389
  }
40
- function W(e, t) {
41
- let { scopeElement: n, referenceElement: r, floatingElement: i } = t, a = H.get(n);
42
- a && a !== e && U(a), U(e), e.performedPointerEventsMutation = !0, e.pointerEventsScopeElement = n, e.pointerEventsReferenceElement = r, e.pointerEventsFloatingElement = i, H.set(n, e), n.style.pointerEvents = "none", r.style.pointerEvents = "auto", i.style.pointerEvents = "auto";
390
+ function Ue(e, t) {
391
+ let { scopeElement: n, referenceElement: r, floatingElement: i } = t, a = Q.get(n);
392
+ a && a !== e && He(a), He(e), e.performedPointerEventsMutation = !0, e.pointerEventsScopeElement = n, e.pointerEventsReferenceElement = r, e.pointerEventsFloatingElement = i, Q.set(n, e), n.style.pointerEvents = "none", r.style.pointerEvents = "auto", i.style.pointerEvents = "auto";
43
393
  }
44
- function G(e) {
45
- let t = O(V.create).current, n = e.context.dataRef.current;
46
- return n.hoverInteractionState ||= t, k(n.hoverInteractionState.disposeEffect), n.hoverInteractionState;
394
+ function We(e) {
395
+ let t = fe(Ve.create).current, n = e.context.dataRef.current;
396
+ return n.hoverInteractionState ||= t, B(n.hoverInteractionState.disposeEffect), n.hoverInteractionState;
47
397
  }
48
398
  //#endregion
49
399
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js
50
- function K(e, t = {}) {
51
- let n = "rootStore" in e ? e.rootStore : e, r = n.useState("open"), i = n.useState("floatingElement"), a = n.useState("domReferenceElement"), { dataRef: o } = n.context, { enabled: c = !0, closeDelay: u = 0, nodeId: _ } = t, w = G(n), T = D(), O = E(), k = b(() => B(o.current.openEvent?.type, w.interactedInside)), A = b(() => {
52
- let e = o.current.openEvent?.type;
400
+ function Ge(e, t = {}) {
401
+ let n = "rootStore" in e ? e.rootStore : e, i = n.useState("open"), a = n.useState("floatingElement"), o = n.useState("domReferenceElement"), { dataRef: s } = n.context, { enabled: c = !0, closeDelay: l = 0, nodeId: u } = t, d = We(n), f = G(), p = R(), h = j(() => Be(s.current.openEvent?.type, d.interactedInside)), g = j(() => {
402
+ let e = s.current.openEvent?.type;
53
403
  return e?.includes("mouse") && e !== "mousedown";
54
- }), j = b((e) => l(e, n.context.triggerElements)), M = F.useCallback((e) => {
55
- let t = R(u, "close", w.pointerType), r = () => {
56
- n.setOpen(!1, x(p, e)), T?.events.emit("floating.closed", e);
404
+ }), _ = j((e) => O(e, n.context.triggerElements)), v = J.useCallback((e) => {
405
+ let t = Re(l, "close", d.pointerType), r = () => {
406
+ n.setOpen(!1, F(b, e)), f?.events.emit("floating.closed", e);
57
407
  };
58
- t ? w.openChangeTimeout.start(t, r) : (w.openChangeTimeout.clear(), r());
408
+ t ? d.openChangeTimeout.start(t, r) : (d.openChangeTimeout.clear(), r());
59
409
  }, [
60
- u,
410
+ l,
61
411
  n,
62
- w,
63
- T
64
- ]), N = b(() => {
65
- U(w);
66
- }), P = b((e) => {
67
- let t = g(e);
68
- if (!s(t)) {
69
- w.interactedInside = !1;
412
+ d,
413
+ f
414
+ ]), y = j(() => {
415
+ He(d);
416
+ }), x = j((e) => {
417
+ let t = P(e);
418
+ if (!m(t)) {
419
+ d.interactedInside = !1;
70
420
  return;
71
421
  }
72
- w.interactedInside = t?.closest("[aria-haspopup]") != null;
422
+ d.interactedInside = t?.closest("[aria-haspopup]") != null;
73
423
  });
74
- f(() => {
75
- r || (w.pointerType = void 0, w.restTimeoutPending = !1, w.interactedInside = !1, N());
424
+ de(() => {
425
+ i || (d.pointerType = void 0, d.restTimeoutPending = !1, d.interactedInside = !1, y());
76
426
  }, [
77
- r,
78
- w,
79
- N
80
- ]), F.useEffect(() => N, [N]), f(() => {
81
- if (c && r && w.handleCloseOptions?.blockPointerEvents && A() && C(a) && i) {
82
- let e = a, t = i, n = y(i), r = T?.nodesRef.current.find((e) => e.id === O)?.context?.elements.floating;
427
+ i,
428
+ d,
429
+ y
430
+ ]), J.useEffect(() => y, [y]), de(() => {
431
+ if (c && i && d.handleCloseOptions?.blockPointerEvents && g() && L(o) && a) {
432
+ let e = o, t = a, n = V(a), r = f?.nodesRef.current.find((e) => e.id === p)?.context?.elements.floating;
83
433
  r && (r.style.pointerEvents = "");
84
- let o = w.handleCloseOptions?.getScope?.() ?? w.pointerEventsScopeElement ?? r ?? e.closest("[data-rootownerid]") ?? n.body;
85
- return W(w, {
86
- scopeElement: o,
434
+ let i = d.handleCloseOptions?.getScope?.() ?? d.pointerEventsScopeElement ?? r ?? e.closest("[data-rootownerid]") ?? n.body;
435
+ return Ue(d, {
436
+ scopeElement: i,
87
437
  referenceElement: e,
88
438
  floatingElement: t
89
439
  }), () => {
90
- N();
440
+ y();
91
441
  };
92
442
  }
93
443
  }, [
94
444
  c,
95
- r,
96
- a,
97
445
  i,
98
- w,
99
- A,
100
- T,
101
- O,
102
- N
446
+ o,
447
+ a,
448
+ d,
449
+ g,
450
+ f,
451
+ p,
452
+ y
103
453
  ]);
104
- let I = d();
105
- F.useEffect(() => {
454
+ let S = se();
455
+ J.useEffect(() => {
106
456
  if (!c) return;
107
457
  function e() {
108
- w.openChangeTimeout.clear(), I.clear(), T?.events.off("floating.closed", r), N();
458
+ d.openChangeTimeout.clear(), S.clear(), f?.events.off("floating.closed", i), y();
109
459
  }
110
460
  function t(e) {
111
- if (T && O && m(T.nodesRef.current, O).length > 0) {
112
- T.events.on("floating.closed", r);
461
+ if (f && p && me(f.nodesRef.current, p).length > 0) {
462
+ f.events.on("floating.closed", i);
113
463
  return;
114
464
  }
115
- if (j(e.relatedTarget)) return;
116
- let t = o.current.floatingContext?.nodeId ?? _, n = e.relatedTarget;
117
- if (!(T && t && C(n) && m(T.nodesRef.current, t, !1).some((e) => h(e.context?.elements.floating, n)))) {
118
- if (w.handler) {
119
- w.handler(e);
465
+ if (_(e.relatedTarget)) return;
466
+ let t = s.current.floatingContext?.nodeId ?? u, n = e.relatedTarget;
467
+ if (!(f && t && L(n) && me(f.nodesRef.current, t, !1).some((e) => r(e.context?.elements.floating, n)))) {
468
+ if (d.handler) {
469
+ d.handler(e);
120
470
  return;
121
471
  }
122
- N(), k() || M(e);
472
+ y(), h() || v(e);
123
473
  }
124
474
  }
125
- function r(e) {
126
- !T || !O || m(T.nodesRef.current, O).length > 0 || I.start(0, () => {
127
- T.events.off("floating.closed", r), n.setOpen(!1, x(p, e)), T.events.emit("floating.closed", e);
475
+ function i(e) {
476
+ !f || !p || me(f.nodesRef.current, p).length > 0 || S.start(0, () => {
477
+ f.events.off("floating.closed", i), n.setOpen(!1, F(b, e)), f.events.emit("floating.closed", e);
128
478
  });
129
479
  }
130
- let a = i;
131
- return v(a && S(a, "mouseenter", e), a && S(a, "mouseleave", t), a && S(a, "pointerdown", P, !0), () => {
132
- T?.events.off("floating.closed", r);
480
+ let o = a;
481
+ return te(o && K(o, "mouseenter", e), o && K(o, "mouseleave", t), o && K(o, "pointerdown", x, !0), () => {
482
+ f?.events.off("floating.closed", i);
133
483
  });
134
484
  }, [
135
485
  c,
136
- i,
486
+ a,
137
487
  n,
138
- o,
488
+ s,
489
+ u,
490
+ h,
139
491
  _,
140
- k,
141
- j,
142
- M,
143
- N,
144
- P,
145
- w,
146
- T,
147
- O,
148
- I
492
+ v,
493
+ y,
494
+ x,
495
+ d,
496
+ f,
497
+ p,
498
+ S
149
499
  ]);
150
500
  }
151
501
  //#endregion
152
502
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js
153
- var ee = { current: null };
154
- function q(e, t = {}) {
155
- let n = "rootStore" in e ? e.rootStore : e, { dataRef: r, events: i } = n.context, { enabled: a = !0, delay: o = 0, handleClose: s = null, mouseOnly: u = !1, restMs: d = 0, move: f = !0, triggerElementRef: m = ee, externalTree: _, isActiveTrigger: w = !0, getHandleCloseContext: T, isClosing: E } = t, O = D(_), k = G(n), j = F.useRef(!1), M = A(s), N = A(o), P = A(d), L = A(a), V = A(E);
156
- w && (k.handleCloseOptions = M.current?.__options);
157
- let H = b(() => B(r.current.openEvent?.type, k.interactedInside)), K = b((e) => l(e, n.context.triggerElements)), q = b((e, t, r) => {
158
- let i = n.context.triggerElements;
159
- if (i.hasElement(t)) return !e || !h(e, t);
160
- if (!C(r)) return !1;
161
- let a = r;
162
- return i.hasMatchingElement((e) => h(e, a)) && (!e || !h(e, a));
163
- }), J = b((e, t = !0) => {
164
- let r = R(N.current, "close", k.pointerType);
165
- r ? k.openChangeTimeout.start(r, () => {
166
- n.setOpen(!1, x(p, e)), O?.events.emit("floating.closed", e);
167
- }) : t && (k.openChangeTimeout.clear(), n.setOpen(!1, x(p, e)), O?.events.emit("floating.closed", e));
168
- }), Y = b(() => {
169
- k.handler &&= (y(n.select("domReferenceElement")).removeEventListener("mousemove", k.handler), void 0);
170
- }), X = b(() => {
171
- U(k);
503
+ var Ke = { current: null };
504
+ function qe(e, t = {}) {
505
+ let n = "rootStore" in e ? e.rootStore : e, { dataRef: i, events: a } = n.context, { enabled: o = !0, delay: c = 0, handleClose: l = null, mouseOnly: d = !1, restMs: f = 0, move: p = !0, triggerElementRef: m = Ke, externalTree: h, isActiveTrigger: g = !0, getHandleCloseContext: _, isClosing: v } = t, y = G(h), x = We(n), S = J.useRef(!1), C = s(l), w = s(c), T = s(f), E = s(o), D = s(v);
506
+ g && (x.handleCloseOptions = C.current?.__options);
507
+ let k = j(() => Be(i.current.openEvent?.type, x.interactedInside)), ee = j((e) => O(e, n.context.triggerElements)), A = j((e, t, i) => {
508
+ let a = n.context.triggerElements;
509
+ if (a.hasElement(t)) return !e || !r(e, t);
510
+ if (!L(i)) return !1;
511
+ let o = i;
512
+ return a.hasMatchingElement((e) => r(e, o)) && (!e || !r(e, o));
513
+ }), M = j((e, t = !0) => {
514
+ let r = Re(w.current, "close", x.pointerType);
515
+ r ? x.openChangeTimeout.start(r, () => {
516
+ n.setOpen(!1, F(b, e)), y?.events.emit("floating.closed", e);
517
+ }) : t && (x.openChangeTimeout.clear(), n.setOpen(!1, F(b, e)), y?.events.emit("floating.closed", e));
518
+ }), N = j(() => {
519
+ x.handler &&= (V(n.select("domReferenceElement")).removeEventListener("mousemove", x.handler), void 0);
520
+ }), ne = j(() => {
521
+ He(x);
172
522
  });
173
- return F.useEffect(() => Y, [Y]), F.useEffect(() => {
174
- if (!a) return;
523
+ return J.useEffect(() => N, [N]), J.useEffect(() => {
524
+ if (!o) return;
175
525
  function e(e) {
176
- e.open ? j.current = !1 : (j.current = e.reason === p, Y(), k.openChangeTimeout.clear(), k.restTimeout.clear(), k.blockMouseMove = !0, k.restTimeoutPending = !1);
526
+ e.open ? S.current = !1 : (S.current = e.reason === b, N(), x.openChangeTimeout.clear(), x.restTimeout.clear(), x.blockMouseMove = !0, x.restTimeoutPending = !1);
177
527
  }
178
- return i.on("openchange", e), () => {
179
- i.off("openchange", e);
528
+ return a.on("openchange", e), () => {
529
+ a.off("openchange", e);
180
530
  };
181
531
  }, [
532
+ o,
182
533
  a,
183
- i,
184
- k,
185
- Y
186
- ]), F.useEffect(() => {
187
- if (!a) return;
188
- let e = m.current ?? (w ? n.select("domReferenceElement") : null);
189
- if (!C(e)) return;
534
+ x,
535
+ N
536
+ ]), J.useEffect(() => {
537
+ if (!o) return;
538
+ let e = m.current ?? (g ? n.select("domReferenceElement") : null);
539
+ if (!L(e)) return;
190
540
  function t(e) {
191
- if (k.openChangeTimeout.clear(), k.blockMouseMove = !1, u && !c(k.pointerType)) return;
192
- let t = z(P.current), r = R(N.current, "open", k.pointerType), i = g(e), a = e.currentTarget ?? null, o = n.select("domReferenceElement"), s = a;
193
- if (C(i) && !n.context.triggerElements.hasElement(i)) {
194
- for (let e of n.context.triggerElements.elements()) if (h(e, i)) {
195
- s = e;
541
+ if (x.openChangeTimeout.clear(), x.blockMouseMove = !1, d && !u(x.pointerType)) return;
542
+ let t = ze(T.current), i = Re(w.current, "open", x.pointerType), a = P(e), o = e.currentTarget ?? null, s = n.select("domReferenceElement"), c = o;
543
+ if (L(a) && !n.context.triggerElements.hasElement(a)) {
544
+ for (let e of n.context.triggerElements.elements()) if (r(e, a)) {
545
+ c = e;
196
546
  break;
197
547
  }
198
548
  }
199
- C(a) && C(o) && !n.context.triggerElements.hasElement(a) && h(a, o) && (s = o);
200
- let l = s != null && q(o, s, i), d = n.select("open"), f = V.current?.() ?? n.select("transitionStatus") === "ending", m = !d && f && j.current, _ = !l && C(s) && C(o) && h(o, s) && m, v = t > 0 && !r, y = l && (d || m) || _, b = !d || l;
201
- if (y) {
202
- n.setOpen(!0, x(p, e, s));
549
+ L(o) && L(s) && !n.context.triggerElements.hasElement(o) && r(o, s) && (c = s);
550
+ let l = c != null && A(s, c, a), f = n.select("open"), p = D.current?.() ?? n.select("transitionStatus") === "ending", m = !f && p && S.current, h = !l && L(c) && L(s) && r(s, c) && m, g = t > 0 && !i, _ = l && (f || m) || h, v = !f || l;
551
+ if (_) {
552
+ n.setOpen(!0, F(b, e, c));
203
553
  return;
204
554
  }
205
- v || (r ? k.openChangeTimeout.start(r, () => {
206
- b && n.setOpen(!0, x(p, e, s));
207
- }) : b && n.setOpen(!0, x(p, e, s)));
555
+ g || (i ? x.openChangeTimeout.start(i, () => {
556
+ v && n.setOpen(!0, F(b, e, c));
557
+ }) : v && n.setOpen(!0, F(b, e, c)));
208
558
  }
209
- function i(e) {
210
- if (H()) {
211
- X();
559
+ function a(e) {
560
+ if (k()) {
561
+ ne();
212
562
  return;
213
563
  }
214
- Y();
215
- let t = n.select("domReferenceElement"), i = y(t);
216
- k.restTimeout.clear(), k.restTimeoutPending = !1;
217
- let a = r.current.floatingContext ?? T?.();
218
- if (!K(e.relatedTarget)) {
219
- if (M.current && a) {
220
- n.select("open") || k.openChangeTimeout.clear();
564
+ N();
565
+ let t = n.select("domReferenceElement"), a = V(t);
566
+ x.restTimeout.clear(), x.restTimeoutPending = !1;
567
+ let o = i.current.floatingContext ?? _?.();
568
+ if (!ee(e.relatedTarget)) {
569
+ if (C.current && o) {
570
+ n.select("open") || x.openChangeTimeout.clear();
221
571
  let t = m.current;
222
- k.handler = M.current({
223
- ...a,
224
- tree: O,
572
+ x.handler = C.current({
573
+ ...o,
574
+ tree: y,
225
575
  x: e.clientX,
226
576
  y: e.clientY,
227
577
  onClose() {
228
- X(), Y(), L.current && !H() && t === n.select("domReferenceElement") && J(e, !0);
578
+ ne(), N(), E.current && !k() && t === n.select("domReferenceElement") && M(e, !0);
229
579
  }
230
- }), i.addEventListener("mousemove", k.handler), k.handler(e);
580
+ }), a.addEventListener("mousemove", x.handler), x.handler(e);
231
581
  return;
232
582
  }
233
- (k.pointerType !== "touch" || !h(n.select("floatingElement"), e.relatedTarget)) && J(e);
583
+ (x.pointerType !== "touch" || !r(n.select("floatingElement"), e.relatedTarget)) && M(e);
234
584
  }
235
585
  }
236
- return f ? v(S(e, "mousemove", t, { once: !0 }), S(e, "mouseenter", t), S(e, "mouseleave", i)) : v(S(e, "mouseenter", t), S(e, "mouseleave", i));
586
+ return p ? te(K(e, "mousemove", t, { once: !0 }), K(e, "mouseenter", t), K(e, "mouseleave", a)) : te(K(e, "mouseenter", t), K(e, "mouseleave", a));
237
587
  }, [
238
- Y,
239
- X,
240
- r,
241
588
  N,
242
- J,
243
- n,
244
- a,
589
+ ne,
590
+ i,
591
+ w,
245
592
  M,
593
+ n,
594
+ o,
595
+ C,
596
+ x,
597
+ g,
598
+ A,
246
599
  k,
247
- w,
248
- q,
249
- H,
250
- K,
251
- u,
252
- f,
253
- P,
254
- m,
255
- O,
256
- L,
600
+ ee,
601
+ d,
602
+ p,
257
603
  T,
258
- V
259
- ]), F.useMemo(() => {
260
- if (!a) return;
604
+ m,
605
+ y,
606
+ E,
607
+ _,
608
+ D
609
+ ]), J.useMemo(() => {
610
+ if (!o) return;
261
611
  function e(e) {
262
- k.pointerType = e.pointerType;
612
+ x.pointerType = e.pointerType;
263
613
  }
264
614
  return {
265
615
  onPointerDown: e,
266
616
  onPointerEnter: e,
267
617
  onMouseMove(e) {
268
- let { nativeEvent: t } = e, r = e.currentTarget, i = n.select("domReferenceElement"), a = n.select("open"), o = q(i, r, e.target);
269
- if (u && !c(k.pointerType)) return;
270
- if (a && o && k.handleCloseOptions?.blockPointerEvents) {
618
+ let { nativeEvent: t } = e, r = e.currentTarget, i = n.select("domReferenceElement"), a = n.select("open"), o = A(i, r, e.target);
619
+ if (d && !u(x.pointerType)) return;
620
+ if (a && o && x.handleCloseOptions?.blockPointerEvents) {
271
621
  let e = n.select("floatingElement");
272
622
  if (e) {
273
- let t = k.handleCloseOptions?.getScope?.() ?? r.ownerDocument.body;
274
- W(k, {
623
+ let t = x.handleCloseOptions?.getScope?.() ?? r.ownerDocument.body;
624
+ Ue(x, {
275
625
  scopeElement: t,
276
626
  referenceElement: r,
277
627
  floatingElement: e
278
628
  });
279
629
  }
280
630
  }
281
- let s = z(P.current);
282
- if (a && !o || s === 0 || !o && k.restTimeoutPending && e.movementX ** 2 + e.movementY ** 2 < 2) return;
283
- k.restTimeout.clear();
284
- function l() {
285
- if (k.restTimeoutPending = !1, H()) return;
631
+ let s = ze(T.current);
632
+ if (a && !o || s === 0 || !o && x.restTimeoutPending && e.movementX ** 2 + e.movementY ** 2 < 2) return;
633
+ x.restTimeout.clear();
634
+ function c() {
635
+ if (x.restTimeoutPending = !1, k()) return;
286
636
  let e = n.select("open");
287
- !k.blockMouseMove && (!e || o) && n.setOpen(!0, x(p, t, r));
637
+ !x.blockMouseMove && (!e || o) && n.setOpen(!0, F(b, t, r));
288
638
  }
289
- k.pointerType === "touch" ? I.flushSync(() => {
290
- l();
291
- }) : o && a ? l() : (k.restTimeoutPending = !0, k.restTimeout.start(s, l));
639
+ x.pointerType === "touch" ? Y.flushSync(() => {
640
+ c();
641
+ }) : o && a ? c() : (x.restTimeoutPending = !0, x.restTimeout.start(s, c));
292
642
  }
293
643
  };
294
644
  }, [
295
- a,
645
+ o,
646
+ x,
296
647
  k,
297
- H,
298
- q,
299
- u,
648
+ A,
649
+ d,
300
650
  n,
301
- P
651
+ T
302
652
  ]);
303
653
  }
304
654
  //#endregion
305
655
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/floating-ui-react/safePolygon.js
306
- var J = .1, Y = J * J, X = .5;
307
- function Z(e, t, n, r, i, a) {
656
+ var Je = .1, Ye = Je * Je, $ = .5;
657
+ function Xe(e, t, n, r, i, a) {
308
658
  return r >= t != a >= t && e <= (i - n) * (t - r) / (a - r) + n;
309
659
  }
310
- function Q(e, t, n, r, i, a, o, s, c, l) {
660
+ function Ze(e, t, n, r, i, a, o, s, c, l) {
311
661
  let u = !1;
312
- return Z(e, t, n, r, i, a) && (u = !u), Z(e, t, i, a, o, s) && (u = !u), Z(e, t, o, s, c, l) && (u = !u), Z(e, t, c, l, n, r) && (u = !u), u;
662
+ return Xe(e, t, n, r, i, a) && (u = !u), Xe(e, t, i, a, o, s) && (u = !u), Xe(e, t, o, s, c, l) && (u = !u), Xe(e, t, c, l, n, r) && (u = !u), u;
313
663
  }
314
- function te(e, t, n) {
664
+ function Qe(e, t, n) {
315
665
  return e >= n.x && e <= n.x + n.width && t >= n.y && t <= n.y + n.height;
316
666
  }
317
- function $(e, t, n, r, i, a) {
667
+ function $e(e, t, n, r, i, a) {
318
668
  return e >= Math.min(n, i) && e <= Math.max(n, i) && t >= Math.min(r, a) && t <= Math.max(r, a);
319
669
  }
320
- function ne(e = {}) {
321
- let { blockPointerEvents: t = !1 } = e, n = new a(), r = ({ x: e, y: t, placement: r, elements: i, onClose: a, nodeId: o, tree: s }) => {
322
- let c = r?.split("-")[0], l = !1, u = null, d = null, f = typeof performance < "u" ? performance.now() : 0;
323
- function p(e, t) {
324
- let n = performance.now(), r = n - f;
325
- if (u === null || d === null || r === 0) return u = e, d = t, f = n, !1;
326
- let i = e - u, a = t - d, o = i * i + a * a, s = r * r * Y;
327
- return u = e, d = t, f = n, o < s;
670
+ function et(e = {}) {
671
+ let { blockPointerEvents: t = !1 } = e, n = new a(), i = ({ x: e, y: t, placement: i, elements: a, onClose: o, nodeId: s, tree: c }) => {
672
+ let l = i?.split("-")[0], u = !1, d = null, f = null, p = typeof performance < "u" ? performance.now() : 0;
673
+ function m(e, t) {
674
+ let n = performance.now(), r = n - p;
675
+ if (d === null || f === null || r === 0) return d = e, f = t, p = n, !1;
676
+ let i = e - d, a = t - f, o = i * i + a * a, s = r * r * Ye;
677
+ return d = e, f = t, p = n, o < s;
328
678
  }
329
- function _() {
330
- n.clear(), a();
679
+ function h() {
680
+ n.clear(), o();
331
681
  }
332
- return function(r) {
682
+ return function(i) {
333
683
  n.clear();
334
- let a = i.domReference, u = i.floating;
335
- if (!a || !u || c == null || e == null || t == null) return;
336
- let { clientX: d, clientY: f } = r, v = g(r), y = r.type === "mouseleave", b = h(u, v), x = h(a, v);
337
- if (b && (l = !0, !y)) return;
338
- if (x && (l = !1, !y)) {
339
- l = !0;
684
+ let o = a.domReference, d = a.floating;
685
+ if (!o || !d || l == null || e == null || t == null) return;
686
+ let { clientX: f, clientY: p } = i, g = P(i), _ = i.type === "mouseleave", v = r(d, g), y = r(o, g);
687
+ if (v && (u = !0, !_)) return;
688
+ if (y && (u = !1, !_)) {
689
+ u = !0;
340
690
  return;
341
691
  }
342
- if (y && C(r.relatedTarget) && h(u, r.relatedTarget)) return;
343
- function S() {
344
- return !!(s && m(s.nodesRef.current, o).length > 0);
692
+ if (_ && L(i.relatedTarget) && r(d, i.relatedTarget)) return;
693
+ function b() {
694
+ return !!(c && me(c.nodesRef.current, s).length > 0);
345
695
  }
346
- function w() {
347
- S() || _();
696
+ function x() {
697
+ b() || h();
348
698
  }
349
- if (S()) return;
350
- let T = a.getBoundingClientRect(), E = u.getBoundingClientRect(), D = e > E.right - E.width / 2, O = t > E.bottom - E.height / 2, k = E.width > T.width, A = E.height > T.height, j = (k ? T : E).left, M = (k ? T : E).right, N = (A ? T : E).top, P = (A ? T : E).bottom;
351
- if (c === "top" && t >= T.bottom - 1 || c === "bottom" && t <= T.top + 1 || c === "left" && e >= T.right - 1 || c === "right" && e <= T.left + 1) {
352
- w();
699
+ if (b()) return;
700
+ let S = o.getBoundingClientRect(), C = d.getBoundingClientRect(), w = e > C.right - C.width / 2, T = t > C.bottom - C.height / 2, E = C.width > S.width, D = C.height > S.height, O = (E ? S : C).left, k = (E ? S : C).right, ee = (D ? S : C).top, A = (D ? S : C).bottom;
701
+ if (l === "top" && t >= S.bottom - 1 || l === "bottom" && t <= S.top + 1 || l === "left" && e >= S.right - 1 || l === "right" && e <= S.left + 1) {
702
+ x();
353
703
  return;
354
704
  }
355
- let F = !1;
356
- switch (c) {
705
+ let j = !1;
706
+ switch (l) {
357
707
  case "top":
358
- F = $(d, f, j, T.top + 1, M, E.bottom - 1);
708
+ j = $e(f, p, O, S.top + 1, k, C.bottom - 1);
359
709
  break;
360
710
  case "bottom":
361
- F = $(d, f, j, E.top + 1, M, T.bottom - 1);
711
+ j = $e(f, p, O, C.top + 1, k, S.bottom - 1);
362
712
  break;
363
713
  case "left":
364
- F = $(d, f, E.right - 1, P, T.left + 1, N);
714
+ j = $e(f, p, C.right - 1, A, S.left + 1, ee);
365
715
  break;
366
- case "right": F = $(d, f, T.right - 1, P, E.left + 1, N);
716
+ case "right": j = $e(f, p, S.right - 1, A, C.left + 1, ee);
367
717
  }
368
- if (F) return;
369
- if (l && !te(d, f, T)) {
370
- w();
718
+ if (j) return;
719
+ if (u && !Qe(f, p, S)) {
720
+ x();
371
721
  return;
372
722
  }
373
- if (!y && p(d, f)) {
374
- w();
723
+ if (!_ && m(f, p)) {
724
+ x();
375
725
  return;
376
726
  }
377
- let I = !1;
378
- switch (c) {
727
+ let M = !1;
728
+ switch (l) {
379
729
  case "top": {
380
- let n = k ? X / 2 : X * 4, r = k || D ? e + n : e - n, i = k ? e - n : D ? e + n : e - n, a = t + X + 1, o = D || k ? E.bottom - X : E.top, s = D ? k ? E.bottom - X : E.top : E.bottom - X;
381
- I = Q(d, f, r, a, i, a, E.left, o, E.right, s);
730
+ let n = E ? $ / 2 : $ * 4, r = E || w ? e + n : e - n, i = E ? e - n : w ? e + n : e - n, a = t + $ + 1, o = w || E ? C.bottom - $ : C.top, s = w ? E ? C.bottom - $ : C.top : C.bottom - $;
731
+ M = Ze(f, p, r, a, i, a, C.left, o, C.right, s);
382
732
  break;
383
733
  }
384
734
  case "bottom": {
385
- let n = k ? X / 2 : X * 4, r = k || D ? e + n : e - n, i = k ? e - n : D ? e + n : e - n, a = t - X, o = D || k ? E.top + X : E.bottom, s = D ? k ? E.top + X : E.bottom : E.top + X;
386
- I = Q(d, f, r, a, i, a, E.left, o, E.right, s);
735
+ let n = E ? $ / 2 : $ * 4, r = E || w ? e + n : e - n, i = E ? e - n : w ? e + n : e - n, a = t - $, o = w || E ? C.top + $ : C.bottom, s = w ? E ? C.top + $ : C.bottom : C.top + $;
736
+ M = Ze(f, p, r, a, i, a, C.left, o, C.right, s);
387
737
  break;
388
738
  }
389
739
  case "left": {
390
- let n = A ? X / 2 : X * 4, r = A || O ? t + n : t - n, i = A ? t - n : O ? t + n : t - n, a = e + X + 1, o = O || A ? E.right - X : E.left, s = O ? A ? E.right - X : E.left : E.right - X;
391
- I = Q(d, f, o, E.top, s, E.bottom, a, r, a, i);
740
+ let n = D ? $ / 2 : $ * 4, r = D || T ? t + n : t - n, i = D ? t - n : T ? t + n : t - n, a = e + $ + 1, o = T || D ? C.right - $ : C.left, s = T ? D ? C.right - $ : C.left : C.right - $;
741
+ M = Ze(f, p, o, C.top, s, C.bottom, a, r, a, i);
392
742
  break;
393
743
  }
394
744
  case "right": {
395
- let n = A ? X / 2 : X * 4, r = A || O ? t + n : t - n, i = A ? t - n : O ? t + n : t - n, a = e - X, o = O || A ? E.left + X : E.right, s = O ? A ? E.left + X : E.right : E.left + X;
396
- I = Q(d, f, a, r, a, i, o, E.top, s, E.bottom);
745
+ let n = D ? $ / 2 : $ * 4, r = D || T ? t + n : t - n, i = D ? t - n : T ? t + n : t - n, a = e - $, o = T || D ? C.left + $ : C.right, s = T ? D ? C.left + $ : C.right : C.left + $;
746
+ M = Ze(f, p, a, r, a, i, o, C.top, s, C.bottom);
397
747
  break;
398
748
  }
399
749
  }
400
- I ? l || n.start(40, w) : w();
750
+ M ? u || n.start(40, x) : x();
401
751
  };
402
752
  };
403
- return r.__options = {
753
+ return i.__options = {
404
754
  ...e,
405
755
  blockPointerEvents: t
406
- }, r;
756
+ }, i;
407
757
  }
408
758
  //#endregion
409
759
  //#region ../../node_modules/.bun/val-i18n@0.1.14+882451ae40c8d660/node_modules/val-i18n/dist/main.mjs
410
- var re = (e, t = {}, n = "") => {
411
- for (let [r, i] of Object.entries(e)) typeof i == "string" ? t[n + r] = i : re(i, t, n + r + ".");
760
+ var tt = (e, t = {}, n = "") => {
761
+ for (let [r, i] of Object.entries(e)) typeof i == "string" ? t[n + r] = i : tt(i, t, n + r + ".");
412
762
  return t;
413
- }, ie = (e) => {
763
+ }, nt = (e) => {
414
764
  let t = [], n = [], r = /{{(\S+?)}}/gi, i, a = 0;
415
765
  for (; i = r.exec(e);) t.push(e.slice(a, i.index), ""), n.push(i[1]), a = i.index + i[0].length;
416
766
  return t.push(e.slice(a)), n.length <= 0 ? !1 : (e) => {
417
767
  for (let r = n.length - 1; r >= 0; r--) t[r * 2 + 1] = e[n[r]] ?? n[r];
418
768
  return t.join("");
419
769
  };
420
- }, ae = class r {
770
+ }, rt = class r {
421
771
  constructor(r, i, a) {
422
772
  this.t = (e, t) => this.t$.get()(e, t), this.fetcher = a?.fetcher;
423
773
  let o = /* @__PURE__ */ new Map();
424
- this.locales$ = t(i), this.lang$ = t(r), this.locale$ = n([this.lang$, this.locales$], ([e, t]) => t[e] || {}), this.a = e(this.locale$, re), this.t$ = e(this.a, (e) => ((e, t, n) => {
774
+ this.locales$ = t(i), this.lang$ = t(r), this.locale$ = n([this.lang$, this.locales$], ([e, t]) => t[e] || {}), this.a = e(this.locale$, tt), this.t$ = e(this.a, (e) => ((e, t, n) => {
425
775
  if (n) {
426
776
  let r = n["@"];
427
777
  if (r != null) {
@@ -436,7 +786,7 @@ var re = (e, t = {}, n = "") => {
436
786
  }
437
787
  if (e[t]) {
438
788
  let r = o.get(t);
439
- if (r ?? o.set(t, r = ie(e[t])), r) return r(n);
789
+ if (r ?? o.set(t, r = nt(e[t])), r) return r(n);
440
790
  }
441
791
  }
442
792
  return e[t] || t;
@@ -469,8 +819,12 @@ var re = (e, t = {}, n = "") => {
469
819
  dispose() {
470
820
  this.lang$.dispose(), this.t$.dispose(), this.locales$.dispose(), this.locale$.dispose(), this.a.dispose();
471
821
  }
472
- }, oe = {
822
+ }, it = {
473
823
  en: { valueEditor: {
824
+ editRawData: "Edit raw data",
825
+ editAsForm: "Switch to form editing",
826
+ advancedSettings: "Advanced settings",
827
+ invalidSchema: "Enter a valid JSON Schema.",
474
828
  invalidJson: "Enter valid JSON.",
475
829
  invalidNumber: "Enter a valid number.",
476
830
  fieldName: "Field name",
@@ -481,9 +835,10 @@ var re = (e, t = {}, n = "") => {
481
835
  object: "Object",
482
836
  array: "Array",
483
837
  null: "Null",
484
- unset: "Not set",
838
+ unset: "Unset",
485
839
  clear: "Clear",
486
840
  select: "Select a value",
841
+ selectMultiple: "Select values",
487
842
  setValue: "Set value",
488
843
  remove: "Remove",
489
844
  createObject: "Create object",
@@ -493,26 +848,70 @@ var re = (e, t = {}, n = "") => {
493
848
  createArray: "Create array",
494
849
  addItem: "Add item",
495
850
  emptyString: "Set empty string",
851
+ emptyStringValue: "Empty string",
496
852
  required: "Set a value for this input.",
497
853
  schema: "Value does not match the schema.",
498
854
  json: "Enter a JSON value.",
499
- variant: "{{name}} variant",
500
855
  option: "Option {{index}}",
501
856
  colorPickerError: "Couldn’t pick a screen color. Try again.",
502
857
  chooseColor: "Choose color",
503
858
  pickColorFromScreen: "Pick color from screen",
504
859
  invalidColor: "Enter a valid color.",
505
860
  fieldSettings: "Field settings",
861
+ reorder: "Reorder {{name}}",
862
+ reorderHint: "Drag to reorder, or use the up and down arrow keys",
863
+ notNullable: "Null not allowed",
506
864
  nullable: "Allow null",
507
865
  group: "Group",
866
+ groupName: "Group name",
508
867
  addGroup: "Add group",
509
868
  collapsed: "Collapsed",
869
+ removeFieldConfirm: "Remove “{{name}}”?",
870
+ removeGroupConfirm: "Remove “{{name}}”? Its fields will remain.",
510
871
  options: "Value options for {{name}}",
511
872
  hours: "Hours",
512
873
  minutes: "Minutes",
513
- seconds: "Seconds"
874
+ seconds: "Seconds",
875
+ components: {
876
+ string: "Text",
877
+ text: "Multiline",
878
+ number: "Number",
879
+ integer: "Integer",
880
+ select: "Select",
881
+ multiSelect: "Multi-select",
882
+ boolean: "Boolean",
883
+ date: "Date",
884
+ time: "Time",
885
+ dateTime: "Date/time",
886
+ color: "Color",
887
+ object: "Object",
888
+ array: "Array",
889
+ json: "JSON",
890
+ null: "Null"
891
+ },
892
+ componentGroups: {
893
+ strings: "Strings",
894
+ numbers: "Numbers",
895
+ choices: "Choices",
896
+ dates: "Date & time",
897
+ other: "Other"
898
+ },
899
+ choiceOptions: "Options",
900
+ editOptions: "Edit options…",
901
+ backToChoices: "Back to choices",
902
+ addOption: "Add option",
903
+ component: "Component",
904
+ columnName: "Name",
905
+ columnType: "Type",
906
+ columnValue: "Value",
907
+ noOptions: "No options available",
908
+ emptyObject: "Empty object only"
514
909
  } },
515
910
  "zh-CN": { valueEditor: {
911
+ editRawData: "编辑原始数据",
912
+ editAsForm: "切换表单编辑",
913
+ advancedSettings: "高级设置",
914
+ invalidSchema: "请输入有效的 JSON Schema。",
516
915
  invalidJson: "请输入有效的 JSON。",
517
916
  invalidNumber: "请输入有效的数字。",
518
917
  fieldName: "字段名",
@@ -526,7 +925,8 @@ var re = (e, t = {}, n = "") => {
526
925
  unset: "未设置",
527
926
  clear: "清除",
528
927
  select: "选择值",
529
- setValue: "设置值",
928
+ selectMultiple: "选择多个值",
929
+ setValue: "点击设置",
530
930
  remove: "移除",
531
931
  createObject: "创建对象",
532
932
  addField: "添加字段",
@@ -535,26 +935,70 @@ var re = (e, t = {}, n = "") => {
535
935
  createArray: "创建数组",
536
936
  addItem: "添加项",
537
937
  emptyString: "设为空字符串",
938
+ emptyStringValue: "空字符串",
538
939
  required: "请为此输入设置值。",
539
940
  schema: "值不符合 Schema。",
540
941
  json: "请输入 JSON 值。",
541
- variant: "{{name}} 分支",
542
942
  option: "选项 {{index}}",
543
943
  colorPickerError: "无法拾取屏幕颜色,请重试。",
544
944
  chooseColor: "选择颜色",
545
945
  pickColorFromScreen: "从屏幕取色",
546
946
  invalidColor: "请输入有效颜色。",
547
947
  fieldSettings: "字段设置",
948
+ reorder: "调整 {{name}} 顺序",
949
+ reorderHint: "拖动排序,或使用上下方向键",
950
+ notNullable: "不允许空值",
548
951
  nullable: "允许空值",
549
952
  group: "分组",
953
+ groupName: "分组名称",
550
954
  addGroup: "添加分组",
551
955
  collapsed: "默认折叠",
956
+ removeFieldConfirm: "确定移除“{{name}}”吗?",
957
+ removeGroupConfirm: "确定移除“{{name}}”吗?组内字段会保留。",
552
958
  options: "{{name}} 的值选项",
553
959
  hours: "时",
554
960
  minutes: "分",
555
- seconds: "秒"
961
+ seconds: "秒",
962
+ components: {
963
+ string: "单行文本",
964
+ text: "多行文本",
965
+ number: "数值",
966
+ integer: "整数",
967
+ select: "单选",
968
+ multiSelect: "多选",
969
+ boolean: "布尔值",
970
+ date: "日期",
971
+ time: "时间",
972
+ dateTime: "日期时间",
973
+ color: "颜色",
974
+ object: "对象",
975
+ array: "数组",
976
+ json: "JSON",
977
+ null: "空值"
978
+ },
979
+ componentGroups: {
980
+ strings: "字符串",
981
+ numbers: "数字",
982
+ choices: "选择",
983
+ dates: "日期与时间",
984
+ other: "其他"
985
+ },
986
+ choiceOptions: "选项",
987
+ editOptions: "编辑选项…",
988
+ backToChoices: "返回选择",
989
+ addOption: "添加选项",
990
+ component: "组件",
991
+ columnName: "名称",
992
+ columnType: "类型",
993
+ columnValue: "值",
994
+ noOptions: "无可用选项",
995
+ emptyObject: "仅允许空对象"
556
996
  } },
557
997
  "zh-TW": { valueEditor: {
998
+ editRawData: "編輯原始資料",
999
+ editAsForm: "切換表單編輯",
1000
+ advancedSettings: "進階設定",
1001
+ invalidSchema: "請輸入有效的 JSON Schema。",
558
1002
  invalidJson: "請輸入有效的 JSON。",
559
1003
  invalidNumber: "請輸入有效的數字。",
560
1004
  fieldName: "欄位名稱",
@@ -568,7 +1012,8 @@ var re = (e, t = {}, n = "") => {
568
1012
  unset: "未設定",
569
1013
  clear: "清除",
570
1014
  select: "選擇值",
571
- setValue: "設定值",
1015
+ selectMultiple: "選擇多個值",
1016
+ setValue: "點擊設定",
572
1017
  remove: "移除",
573
1018
  createObject: "建立物件",
574
1019
  addField: "新增欄位",
@@ -577,26 +1022,70 @@ var re = (e, t = {}, n = "") => {
577
1022
  createArray: "建立陣列",
578
1023
  addItem: "新增項目",
579
1024
  emptyString: "設為空字串",
1025
+ emptyStringValue: "空字串",
580
1026
  required: "請為此輸入設定值。",
581
1027
  schema: "值不符合 Schema。",
582
1028
  json: "請輸入 JSON 值。",
583
- variant: "{{name}} 分支",
584
1029
  option: "選項 {{index}}",
585
1030
  colorPickerError: "無法擷取螢幕顏色,請重試。",
586
1031
  chooseColor: "選擇顏色",
587
1032
  pickColorFromScreen: "從螢幕取色",
588
1033
  invalidColor: "請輸入有效顏色。",
589
1034
  fieldSettings: "欄位設定",
1035
+ reorder: "調整 {{name}} 順序",
1036
+ reorderHint: "拖動排序,或使用上下方向鍵",
1037
+ notNullable: "不允許空值",
590
1038
  nullable: "允許空值",
591
1039
  group: "群組",
1040
+ groupName: "群組名稱",
592
1041
  addGroup: "新增群組",
593
1042
  collapsed: "預設摺疊",
1043
+ removeFieldConfirm: "確定移除「{{name}}」嗎?",
1044
+ removeGroupConfirm: "確定移除「{{name}}」嗎?群組內的欄位會保留。",
594
1045
  options: "{{name}} 的值選項",
595
1046
  hours: "時",
596
1047
  minutes: "分",
597
- seconds: "秒"
1048
+ seconds: "秒",
1049
+ components: {
1050
+ string: "單行文字",
1051
+ text: "多行文字",
1052
+ number: "數值",
1053
+ integer: "整數",
1054
+ select: "單選",
1055
+ multiSelect: "多選",
1056
+ boolean: "布林值",
1057
+ date: "日期",
1058
+ time: "時間",
1059
+ dateTime: "日期時間",
1060
+ color: "顏色",
1061
+ object: "物件",
1062
+ array: "陣列",
1063
+ json: "JSON",
1064
+ null: "空值"
1065
+ },
1066
+ componentGroups: {
1067
+ strings: "字串",
1068
+ numbers: "數字",
1069
+ choices: "選擇",
1070
+ dates: "日期與時間",
1071
+ other: "其他"
1072
+ },
1073
+ choiceOptions: "選項",
1074
+ editOptions: "編輯選項…",
1075
+ backToChoices: "返回選擇",
1076
+ addOption: "新增選項",
1077
+ component: "元件",
1078
+ columnName: "名稱",
1079
+ columnType: "類型",
1080
+ columnValue: "值",
1081
+ noOptions: "無可用選項",
1082
+ emptyObject: "僅允許空物件"
598
1083
  } },
599
1084
  ja: { valueEditor: {
1085
+ editRawData: "生データを編集",
1086
+ editAsForm: "フォーム編集に切り替え",
1087
+ advancedSettings: "詳細設定",
1088
+ invalidSchema: "有効な JSON Schema を入力してください。",
600
1089
  invalidJson: "有効な JSON を入力してください。",
601
1090
  invalidNumber: "有効な数値を入力してください。",
602
1091
  fieldName: "フィールド名",
@@ -610,6 +1099,7 @@ var re = (e, t = {}, n = "") => {
610
1099
  unset: "未設定",
611
1100
  clear: "クリア",
612
1101
  select: "値を選択",
1102
+ selectMultiple: "値を複数選択",
613
1103
  setValue: "値を設定",
614
1104
  remove: "削除",
615
1105
  createObject: "オブジェクトを作成",
@@ -619,26 +1109,70 @@ var re = (e, t = {}, n = "") => {
619
1109
  createArray: "配列を作成",
620
1110
  addItem: "項目を追加",
621
1111
  emptyString: "空文字列を設定",
1112
+ emptyStringValue: "空文字列",
622
1113
  required: "この入力に値を設定してください。",
623
1114
  schema: "値がスキーマに一致しません。",
624
1115
  json: "JSON 値を入力してください。",
625
- variant: "{{name}} の選択肢",
626
1116
  option: "選択肢 {{index}}",
627
1117
  colorPickerError: "画面の色を取得できませんでした。もう一度お試しください。",
628
1118
  chooseColor: "色を選択",
629
1119
  pickColorFromScreen: "画面から色を取得",
630
1120
  invalidColor: "有効な色を入力してください。",
631
1121
  fieldSettings: "フィールド設定",
1122
+ reorder: "{{name}} を並べ替え",
1123
+ reorderHint: "ドラッグまたは上下矢印キーで並べ替え",
1124
+ notNullable: "null は許可されません",
632
1125
  nullable: "null を許可",
633
1126
  group: "グループ",
1127
+ groupName: "グループ名",
634
1128
  addGroup: "グループを追加",
635
1129
  collapsed: "折りたたむ",
1130
+ removeFieldConfirm: "「{{name}}」を削除しますか?",
1131
+ removeGroupConfirm: "「{{name}}」を削除しますか?グループ内のフィールドは残ります。",
636
1132
  options: "{{name}} の値オプション",
637
1133
  hours: "時",
638
1134
  minutes: "分",
639
- seconds: "秒"
1135
+ seconds: "秒",
1136
+ components: {
1137
+ string: "単一行",
1138
+ text: "複数行",
1139
+ number: "数値",
1140
+ integer: "整数",
1141
+ select: "単一選択",
1142
+ multiSelect: "複数選択",
1143
+ boolean: "真偽値",
1144
+ date: "日付",
1145
+ time: "時刻",
1146
+ dateTime: "日時",
1147
+ color: "色",
1148
+ object: "オブジェクト",
1149
+ array: "配列",
1150
+ json: "JSON",
1151
+ null: "Null"
1152
+ },
1153
+ componentGroups: {
1154
+ strings: "文字列",
1155
+ numbers: "数値",
1156
+ choices: "選択",
1157
+ dates: "日時",
1158
+ other: "その他"
1159
+ },
1160
+ choiceOptions: "選択肢",
1161
+ editOptions: "選択肢を編集…",
1162
+ backToChoices: "選択に戻る",
1163
+ addOption: "選択肢を追加",
1164
+ component: "コンポーネント",
1165
+ columnName: "名前",
1166
+ columnType: "型",
1167
+ columnValue: "値",
1168
+ noOptions: "選択肢がありません",
1169
+ emptyObject: "空のオブジェクトのみ"
640
1170
  } },
641
1171
  ko: { valueEditor: {
1172
+ editRawData: "원시 데이터 편집",
1173
+ editAsForm: "양식 편집으로 전환",
1174
+ advancedSettings: "고급 설정",
1175
+ invalidSchema: "유효한 JSON Schema를 입력하세요.",
642
1176
  invalidJson: "유효한 JSON을 입력하세요.",
643
1177
  invalidNumber: "유효한 숫자를 입력하세요.",
644
1178
  fieldName: "필드 이름",
@@ -652,6 +1186,7 @@ var re = (e, t = {}, n = "") => {
652
1186
  unset: "설정 안 됨",
653
1187
  clear: "지우기",
654
1188
  select: "값 선택",
1189
+ selectMultiple: "여러 값 선택",
655
1190
  setValue: "값 설정",
656
1191
  remove: "삭제",
657
1192
  createObject: "객체 만들기",
@@ -661,26 +1196,70 @@ var re = (e, t = {}, n = "") => {
661
1196
  createArray: "배열 만들기",
662
1197
  addItem: "항목 추가",
663
1198
  emptyString: "빈 문자열 설정",
1199
+ emptyStringValue: "빈 문자열",
664
1200
  required: "이 입력에 값을 설정하세요.",
665
1201
  schema: "값이 스키마와 일치하지 않습니다.",
666
1202
  json: "JSON 값을 입력하세요.",
667
- variant: "{{name}} 선택 항목",
668
1203
  option: "옵션 {{index}}",
669
1204
  colorPickerError: "화면 색상을 선택하지 못했습니다. 다시 시도해 주세요.",
670
1205
  chooseColor: "색상 선택",
671
1206
  pickColorFromScreen: "화면에서 색상 추출",
672
1207
  invalidColor: "유효한 색상을 입력하세요.",
673
1208
  fieldSettings: "필드 설정",
1209
+ reorder: "{{name}} 순서 변경",
1210
+ reorderHint: "드래그하거나 위아래 화살표 키로 순서 변경",
1211
+ notNullable: "null 허용 안 함",
674
1212
  nullable: "null 허용",
675
1213
  group: "그룹",
1214
+ groupName: "그룹 이름",
676
1215
  addGroup: "그룹 추가",
677
1216
  collapsed: "접힘",
1217
+ removeFieldConfirm: "‘{{name}}’을(를) 삭제할까요?",
1218
+ removeGroupConfirm: "‘{{name}}’을(를) 삭제할까요? 그룹의 필드는 유지됩니다.",
678
1219
  options: "{{name}} 값 옵션",
679
1220
  hours: "시",
680
1221
  minutes: "분",
681
- seconds: "초"
1222
+ seconds: "초",
1223
+ components: {
1224
+ string: "한 줄",
1225
+ text: "여러 줄",
1226
+ number: "숫자",
1227
+ integer: "정수",
1228
+ select: "단일 선택",
1229
+ multiSelect: "다중 선택",
1230
+ boolean: "불리언",
1231
+ date: "날짜",
1232
+ time: "시간",
1233
+ dateTime: "날짜와 시간",
1234
+ color: "색상",
1235
+ object: "객체",
1236
+ array: "배열",
1237
+ json: "JSON",
1238
+ null: "Null"
1239
+ },
1240
+ componentGroups: {
1241
+ strings: "문자열",
1242
+ numbers: "숫자",
1243
+ choices: "선택",
1244
+ dates: "날짜와 시간",
1245
+ other: "기타"
1246
+ },
1247
+ choiceOptions: "옵션",
1248
+ editOptions: "옵션 편집…",
1249
+ backToChoices: "선택으로 돌아가기",
1250
+ addOption: "옵션 추가",
1251
+ component: "컴포넌트",
1252
+ columnName: "이름",
1253
+ columnType: "유형",
1254
+ columnValue: "값",
1255
+ noOptions: "사용 가능한 옵션 없음",
1256
+ emptyObject: "빈 객체만 허용"
682
1257
  } },
683
1258
  ru: { valueEditor: {
1259
+ editRawData: "Редактировать исходные данные",
1260
+ editAsForm: "Переключиться на редактирование формы",
1261
+ advancedSettings: "Дополнительные настройки",
1262
+ invalidSchema: "Введите корректную JSON Schema.",
684
1263
  invalidJson: "Введите корректный JSON.",
685
1264
  invalidNumber: "Введите корректное число.",
686
1265
  fieldName: "Имя поля",
@@ -694,6 +1273,7 @@ var re = (e, t = {}, n = "") => {
694
1273
  unset: "Не задано",
695
1274
  clear: "Очистить",
696
1275
  select: "Выберите значение",
1276
+ selectMultiple: "Выберите значения",
697
1277
  setValue: "Задать значение",
698
1278
  remove: "Удалить",
699
1279
  createObject: "Создать объект",
@@ -703,26 +1283,70 @@ var re = (e, t = {}, n = "") => {
703
1283
  createArray: "Создать массив",
704
1284
  addItem: "Добавить элемент",
705
1285
  emptyString: "Задать пустую строку",
1286
+ emptyStringValue: "Пустая строка",
706
1287
  required: "Задайте значение для этого входа.",
707
1288
  schema: "Значение не соответствует схеме.",
708
1289
  json: "Введите значение JSON.",
709
- variant: "Вариант {{name}}",
710
1290
  option: "Вариант {{index}}",
711
1291
  colorPickerError: "Не удалось выбрать цвет с экрана. Повторите попытку.",
712
1292
  chooseColor: "Выбрать цвет",
713
1293
  pickColorFromScreen: "Выбрать цвет с экрана",
714
1294
  invalidColor: "Введите корректный цвет.",
715
1295
  fieldSettings: "Настройки поля",
1296
+ reorder: "Изменить порядок {{name}}",
1297
+ reorderHint: "Перетащите или используйте стрелки вверх и вниз",
1298
+ notNullable: "Null не допускается",
716
1299
  nullable: "Разрешить null",
717
1300
  group: "Группа",
1301
+ groupName: "Название группы",
718
1302
  addGroup: "Добавить группу",
719
1303
  collapsed: "Свёрнута",
1304
+ removeFieldConfirm: "Удалить «{{name}}»?",
1305
+ removeGroupConfirm: "Удалить «{{name}}»? Поля группы сохранятся.",
720
1306
  options: "Параметры значения {{name}}",
721
1307
  hours: "Часы",
722
1308
  minutes: "Минуты",
723
- seconds: "Секунды"
1309
+ seconds: "Секунды",
1310
+ components: {
1311
+ string: "Одна строка",
1312
+ text: "Несколько строк",
1313
+ number: "Число",
1314
+ integer: "Целое число",
1315
+ select: "Один вариант",
1316
+ multiSelect: "Несколько вариантов",
1317
+ boolean: "Логический",
1318
+ date: "Дата",
1319
+ time: "Время",
1320
+ dateTime: "Дата и время",
1321
+ color: "Цвет",
1322
+ object: "Объект",
1323
+ array: "Массив",
1324
+ json: "JSON",
1325
+ null: "Null"
1326
+ },
1327
+ componentGroups: {
1328
+ strings: "Строки",
1329
+ numbers: "Числа",
1330
+ choices: "Выбор",
1331
+ dates: "Дата и время",
1332
+ other: "Другое"
1333
+ },
1334
+ choiceOptions: "Варианты",
1335
+ editOptions: "Изменить варианты…",
1336
+ backToChoices: "Назад к выбору",
1337
+ addOption: "Добавить вариант",
1338
+ component: "Компонент",
1339
+ columnName: "Имя",
1340
+ columnType: "Тип",
1341
+ columnValue: "Значение",
1342
+ noOptions: "Нет доступных вариантов",
1343
+ emptyObject: "Только пустой объект"
724
1344
  } },
725
1345
  fr: { valueEditor: {
1346
+ editRawData: "Modifier les données brutes",
1347
+ editAsForm: "Passer à l’édition par formulaire",
1348
+ advancedSettings: "Paramètres avancés",
1349
+ invalidSchema: "Saisissez un JSON Schema valide.",
726
1350
  invalidJson: "Saisissez un JSON valide.",
727
1351
  invalidNumber: "Saisissez un nombre valide.",
728
1352
  fieldName: "Nom du champ",
@@ -736,6 +1360,7 @@ var re = (e, t = {}, n = "") => {
736
1360
  unset: "Non défini",
737
1361
  clear: "Effacer",
738
1362
  select: "Sélectionner une valeur",
1363
+ selectMultiple: "Sélectionner des valeurs",
739
1364
  setValue: "Définir la valeur",
740
1365
  remove: "Supprimer",
741
1366
  createObject: "Créer un objet",
@@ -745,26 +1370,66 @@ var re = (e, t = {}, n = "") => {
745
1370
  createArray: "Créer un tableau",
746
1371
  addItem: "Ajouter un élément",
747
1372
  emptyString: "Définir une chaîne vide",
1373
+ emptyStringValue: "Chaîne vide",
748
1374
  required: "Définissez une valeur pour cette entrée.",
749
1375
  schema: "La valeur ne correspond pas au schéma.",
750
1376
  json: "Saisissez une valeur JSON.",
751
- variant: "Variante de {{name}}",
752
1377
  option: "Option {{index}}",
753
1378
  colorPickerError: "Impossible de prélever une couleur. Réessayez.",
754
1379
  chooseColor: "Choisir une couleur",
755
1380
  pickColorFromScreen: "Prélever une couleur à l'écran",
756
1381
  invalidColor: "Saisissez une couleur valide.",
757
1382
  fieldSettings: "Paramètres du champ",
1383
+ reorder: "Réordonner {{name}}",
1384
+ reorderHint: "Glissez ou utilisez les flèches haut et bas",
1385
+ notNullable: "Null non autorisé",
758
1386
  nullable: "Autoriser null",
759
1387
  group: "Groupe",
1388
+ groupName: "Nom du groupe",
760
1389
  addGroup: "Ajouter un groupe",
761
1390
  collapsed: "Replié",
1391
+ removeFieldConfirm: "Supprimer « {{name}} » ?",
1392
+ removeGroupConfirm: "Supprimer « {{name}} » ? Ses champs seront conservés.",
762
1393
  options: "Options de valeur pour {{name}}",
763
1394
  hours: "Heures",
764
1395
  minutes: "Minutes",
765
- seconds: "Secondes"
1396
+ seconds: "Secondes",
1397
+ components: {
1398
+ string: "Une ligne",
1399
+ text: "Multiligne",
1400
+ number: "Nombre",
1401
+ integer: "Entier",
1402
+ select: "Choix unique",
1403
+ multiSelect: "Choix multiple",
1404
+ boolean: "Booléen",
1405
+ date: "Date",
1406
+ time: "Heure",
1407
+ dateTime: "Date et heure",
1408
+ color: "Couleur",
1409
+ object: "Objet",
1410
+ array: "Tableau",
1411
+ json: "JSON",
1412
+ null: "Null"
1413
+ },
1414
+ componentGroups: {
1415
+ strings: "Texte",
1416
+ numbers: "Nombres",
1417
+ choices: "Choix",
1418
+ dates: "Date et heure",
1419
+ other: "Autres"
1420
+ },
1421
+ choiceOptions: "Options",
1422
+ editOptions: "Modifier les options…",
1423
+ backToChoices: "Retour aux choix",
1424
+ addOption: "Ajouter une option",
1425
+ component: "Composant",
1426
+ columnName: "Nom",
1427
+ columnType: "Type",
1428
+ columnValue: "Valeur",
1429
+ noOptions: "Aucune option disponible",
1430
+ emptyObject: "Objet vide uniquement"
766
1431
  } }
767
- }, se = {
1432
+ }, at = {
768
1433
  en: {
769
1434
  jsonViewer: {
770
1435
  bin: "Binary",
@@ -1199,7 +1864,7 @@ var re = (e, t = {}, n = "") => {
1199
1864
  more: "Plus d'actions"
1200
1865
  }
1201
1866
  }
1202
- }, ce = {
1867
+ }, ot = {
1203
1868
  en: {
1204
1869
  addNode: {
1205
1870
  blocks: "Blocks",
@@ -1355,7 +2020,7 @@ var re = (e, t = {}, n = "") => {
1355
2020
  },
1356
2021
  inspector: {
1357
2022
  account: {
1358
- required: "Connection required",
2023
+ required: "Account connection required",
1359
2024
  addConnection: "Add connection",
1360
2025
  authorizationPending: "Finish authorization in the Connection page, then return here to refresh this account.",
1361
2026
  chooseAccount: "Choose an account",
@@ -1396,6 +2061,7 @@ var re = (e, t = {}, n = "") => {
1396
2061
  name: "Title"
1397
2062
  },
1398
2063
  selectNode: "Select one Draft node to inspect and edit it.",
2064
+ locateNode: "Locate {{name}} on the canvas",
1399
2065
  subflow: {
1400
2066
  definition: "Subflow definition",
1401
2067
  inputPorts: "Input ports (JSON)",
@@ -1429,25 +2095,50 @@ var re = (e, t = {}, n = "") => {
1429
2095
  wait: {
1430
2096
  approval: "Approve or reject",
1431
2097
  changeNotification: "Change",
1432
- chooseNotification: "Add notification",
1433
- chooseNotificationTitle: "Choose notification",
1434
2098
  continue: "Continue",
1435
- inputs: "Parameters",
1436
- inputsInvalid: "Fill in all required notification parameters.",
1437
- inputsLoading: "Loading notification parameters…",
1438
- messageHandle: "Write message to",
1439
2099
  mode: "Resolution",
1440
- notificationTask: "Notification",
1441
- notificationUnavailable: "The notification is unavailable. Choose it again.",
2100
+ inputsLoading: "Loading notification parameters…",
2101
+ notificationDescription: "Connect the notification output to send a message or run other steps while waiting.",
1442
2102
  prompt: "Prompt",
1443
- promptError: "Prompt must contain 1 to 1,000 characters.",
1444
- removeNotification: "Remove notification"
2103
+ promptError: "Prompt must contain 1 to 1,000 characters."
1445
2104
  },
1446
2105
  title: "Inspector",
1447
2106
  sources: {
1448
- title: "Input sources",
1449
- local: "Local value / variable",
1450
- unavailable: "This source is not guaranteed to complete before this node, or its type does not match."
2107
+ loading: "Loading available data…",
2108
+ loadFailed: "Could not load sources. Reopen the menu to retry.",
2109
+ checkFailed: "Could not check this source.",
2110
+ title: "Select data",
2111
+ sourceMissing: "“{{source}}” could not be found. Choose again.",
2112
+ outputMissing: "“{{output}}” could not be found in “{{source}}”. Choose again.",
2113
+ notReady: "“{{source}} {{handle}}” may not have a value when this step runs.",
2114
+ sourceConflict: "These fields may have values at the same time: {{sources}}. Only one can be used here.",
2115
+ schemaIncompatible: "The data format does not match.",
2116
+ schemaPathIncompatible: "The data format of “{{path}}” does not match.",
2117
+ schemaCompareFailed: "Could not check the data format. Check the JSON Schema.",
2118
+ binaryIncompatible: "Binary data cannot be used here.",
2119
+ artifactIncompatible: "File data cannot be used here.",
2120
+ nullableIncompatible: "A value is required, but the selected field may be empty.",
2121
+ typeIncompatible: "Expected {{target}}, but the selected field is {{source}}.",
2122
+ propertyTypeIncompatible: "“{{path}}” must be {{target}}, but it is {{source}}.",
2123
+ requiredIncompatible: "The required property “{{property}}” may be missing.",
2124
+ enumIncompatible: "Some possible values are not accepted: {{values}}.",
2125
+ constIncompatible: "Only {{target}} is accepted, but the selected field is always {{source}}.",
2126
+ constraintSubject: "“{{path}}” ",
2127
+ minLength: "{{subject}}must contain at least {{value}} characters.",
2128
+ maxLength: "{{subject}}must contain at most {{value}} characters.",
2129
+ pattern: "{{subject}}must match {{value}}.",
2130
+ minimum: "{{subject}}cannot be less than {{value}}.",
2131
+ exclusiveMinimum: "{{subject}}must be greater than {{value}}.",
2132
+ maximum: "{{subject}}cannot be greater than {{value}}.",
2133
+ exclusiveMaximum: "{{subject}}must be less than {{value}}.",
2134
+ multipleOf: "{{subject}}must be a multiple of {{value}}.",
2135
+ minItems: "{{subject}}must contain at least {{value}} items.",
2136
+ maxItems: "{{subject}}must contain at most {{value}} items.",
2137
+ minProperties: "{{subject}}must contain at least {{value}} properties.",
2138
+ maxProperties: "{{subject}}must contain at most {{value}} properties.",
2139
+ integer: "Integer",
2140
+ unknownType: "unknown type",
2141
+ typeSeparator: " or "
1451
2142
  },
1452
2143
  actions: {
1453
2144
  title: "Actions available to this code",
@@ -1482,10 +2173,8 @@ var re = (e, t = {}, n = "") => {
1482
2173
  chooseAccounts: "Manage accounts"
1483
2174
  },
1484
2175
  comment: {
1485
- source: "View source",
1486
- preview: "Preview",
1487
- duplicate: "Duplicate",
1488
- delete: "Delete"
2176
+ source: "Source",
2177
+ preview: "Markdown"
1489
2178
  },
1490
2179
  ports: {
1491
2180
  reorder: "Reorder {{name}}",
@@ -1493,6 +2182,12 @@ var re = (e, t = {}, n = "") => {
1493
2182
  moved: "{{name}} moved to position {{position}}.",
1494
2183
  groupSettings: "Group settings",
1495
2184
  connected: "Connected",
2185
+ sort: "Sort",
2186
+ finishSorting: "Done sorting",
2187
+ inputsTitle: "Inputs",
2188
+ outputsTitle: "Outputs",
2189
+ valuesTitle: "Values",
2190
+ columnHandle: "Handle",
1496
2191
  columnName: "Name",
1497
2192
  columnType: "Type",
1498
2193
  columnValue: "Value"
@@ -1811,8 +2506,10 @@ var re = (e, t = {}, n = "") => {
1811
2506
  "binding-missing": "Binding \"{{bindingId}}\" does not exist.",
1812
2507
  cycle: "Graph contains a dependency cycle among nodes: {{nodes}}.",
1813
2508
  "flow-input-incompatible": "Flow input \"{{input}}\" is not compatible with this input.",
2509
+ "flow-input-schema-incompatible": "Flow input \"{{input}}\" cannot be used for \"{{target}}\": {{issue}}",
1814
2510
  "input-missing": "Node \"{{nodeId}}\" does not expose input \"{{handle}}\".",
1815
2511
  "node-output-incompatible": "Upstream node \"{{nodeId}}\" output \"{{output}}\" is not compatible with this input.",
2512
+ "node-output-schema-incompatible": "\"{{source}}\" cannot be used for \"{{target}}\": {{issue}}",
1816
2513
  "schema-unsupported": "Runtime Ref schemas are not supported.",
1817
2514
  "source-missing": {
1818
2515
  "flow-input": "Flow input \"{{input}}\" does not exist in this graph.",
@@ -1824,6 +2521,7 @@ var re = (e, t = {}, n = "") => {
1824
2521
  task: "Task \"{{taskId}}\" does not exist."
1825
2522
  },
1826
2523
  "subflow-output-incompatible": "A source is not compatible with Subflow output \"{{output}}\".",
2524
+ "subflow-output-schema-incompatible": "The data format for Subflow output \"{{output}}\" does not match: {{issue}}",
1827
2525
  "trigger-not-allowed": "Trigger nodes are only allowed in Flows.",
1828
2526
  "variable-incompatible": "Variable binding \"{{bindingId}}\" is not compatible with this input.",
1829
2527
  "variable-source-mixed": "A Variable must be the only source for an input."
@@ -1882,19 +2580,18 @@ var re = (e, t = {}, n = "") => {
1882
2580
  runInput: {
1883
2581
  editMissing: "Add test data",
1884
2582
  editReady: "Edit saved test data",
1885
- remembered: "Test data is remembered for this editing session and does not change the workflow.",
2583
+ remembered: "Saved for this editing session only.",
1886
2584
  startTest: "Start test",
1887
2585
  testTrigger: "Test {{name}}",
1888
2586
  triggerCount: "{{count}} start nodes",
1889
- triggerDataHint: "Enter sample data for this Trigger, then start the test.",
1890
- triggerData: "Trigger data",
1891
- close: "Close run inputs",
2587
+ close: "Close test data",
1892
2588
  description: "Enter data for this run. Your workflow will not be changed.",
1893
2589
  invalid: "Set every listed input to a valid JSON value before running.",
1894
- title: "Run inputs",
2590
+ title: "Test data",
1895
2591
  trigger: "Start node",
1896
2592
  selectTrigger: "Select a start node",
1897
- noTrigger: "Add a trigger as a start node before running."
2593
+ noTrigger: "Add a trigger as a start node before running.",
2594
+ triggerSubtitle: "Trigger · {{name}}"
1898
2595
  },
1899
2596
  workspace: {
1900
2597
  check: "Check the current Draft",
@@ -1998,7 +2695,7 @@ var re = (e, t = {}, n = "") => {
1998
2695
  scheduleExpression: "Cron expression",
1999
2696
  scheduleTimezone: "Time zone",
2000
2697
  scheduleMissing: "No schedule configured",
2001
- scheduleTestHint: "Draft tests run once immediately. After publishing, the workflow runs on schedule."
2698
+ scheduleTestHint: "Tests send {}; live runs send { scheduledAt }."
2002
2699
  },
2003
2700
  triggerConfig: {
2004
2701
  configuration: "Configuration",
@@ -2033,7 +2730,7 @@ var re = (e, t = {}, n = "") => {
2033
2730
  webhookSummary: "When an HTTP request arrives",
2034
2731
  webhookDescription: "Receive a JSON object through a generated HTTP endpoint."
2035
2732
  },
2036
- triggerSummary: { manualSummary: "Click Run to start execution here." },
2733
+ triggerSummary: { manualPayloadHint: "Downstream nodes receive an empty object ({})." },
2037
2734
  conditionEditor: {
2038
2735
  addCondition: "Add condition",
2039
2736
  configPanelTitle: "Config",
@@ -2077,8 +2774,11 @@ var re = (e, t = {}, n = "") => {
2077
2774
  nodeInput: {
2078
2775
  literal: "Literal",
2079
2776
  variable: "Variable",
2777
+ noVariables: "No Variables declared",
2778
+ noUpstreamNodes: "No data available",
2779
+ unsupported: "Unsupported",
2080
2780
  mode: "Type",
2081
- connected: "Connected to an upstream source. Use Input sources to change it."
2781
+ connected: "Data selected. Use Select data to change it."
2082
2782
  },
2083
2783
  history: {
2084
2784
  undo: "Undo",
@@ -2442,7 +3142,7 @@ var re = (e, t = {}, n = "") => {
2442
3142
  },
2443
3143
  inspector: {
2444
3144
  account: {
2445
- required: "待连接",
3145
+ required: "待连接账号",
2446
3146
  addConnection: "添加连接",
2447
3147
  authorizationPending: "请在 Connection 页面完成授权,返回这里后会刷新当前账号。",
2448
3148
  chooseAccount: "选择账号",
@@ -2483,6 +3183,7 @@ var re = (e, t = {}, n = "") => {
2483
3183
  name: "标题"
2484
3184
  },
2485
3185
  selectNode: "选择一个草稿节点以查看和编辑。",
3186
+ locateNode: "在画布中定位{{name}}",
2486
3187
  subflow: {
2487
3188
  definition: "Subflow 定义",
2488
3189
  inputPorts: "输入端口(JSON)",
@@ -2516,25 +3217,50 @@ var re = (e, t = {}, n = "") => {
2516
3217
  wait: {
2517
3218
  approval: "通过或拒绝",
2518
3219
  changeNotification: "更换",
2519
- chooseNotification: "添加通知",
2520
- chooseNotificationTitle: "选择通知方式",
2521
3220
  continue: "继续",
2522
- inputs: "参数",
2523
- inputsInvalid: "请填写所有必需的通知参数。",
2524
- inputsLoading: "正在加载通知参数…",
2525
- messageHandle: "消息内容写入",
2526
3221
  mode: "处理方式",
2527
- notificationTask: "通知",
2528
- notificationUnavailable: "通知配置不可用,请重新选择。",
3222
+ inputsLoading: "正在加载通知参数…",
3223
+ notificationDescription: "连接通知出口,可在等待期间发送消息或执行其他步骤。",
2529
3224
  prompt: "提示",
2530
- promptError: "提示必须包含 1 到 1,000 个字符。",
2531
- removeNotification: "移除通知"
3225
+ promptError: "提示必须包含 1 到 1,000 个字符。"
2532
3226
  },
2533
3227
  title: "检查器",
2534
3228
  sources: {
2535
- title: "输入来源",
2536
- local: "本地值 / 变量",
2537
- unavailable: "无法保证此来源先于当前节点完成,或输出类型不匹配。"
3229
+ loading: "正在加载可用数据…",
3230
+ loadFailed: "无法加载来源,请重新打开菜单重试。",
3231
+ checkFailed: "无法检查此来源。",
3232
+ title: "选择数据",
3233
+ sourceMissing: "找不到“{{source}}”,请重新选择。",
3234
+ outputMissing: "“{{source}}”中找不到“{{output}}”,请重新选择。",
3235
+ notReady: "运行到这里时,“{{source}} {{handle}}”可能还没有值。",
3236
+ sourceConflict: "这些字段可能同时有值:{{sources}}。这里只能取一个。",
3237
+ schemaIncompatible: "数据格式不匹配。",
3238
+ schemaPathIncompatible: "“{{path}}”的数据格式不匹配。",
3239
+ schemaCompareFailed: "无法检查数据格式,请检查 JSON Schema。",
3240
+ binaryIncompatible: "不能使用二进制数据。",
3241
+ artifactIncompatible: "不能使用文件数据。",
3242
+ nullableIncompatible: "不能为空,但所选字段可能为空。",
3243
+ typeIncompatible: "需要{{target}},但所选字段是{{source}}。",
3244
+ propertyTypeIncompatible: "“{{path}}”需要{{target}},实际是{{source}}。",
3245
+ requiredIncompatible: "不一定包含必填属性“{{property}}”。",
3246
+ enumIncompatible: "可能出现不接受的值:{{values}}。",
3247
+ constIncompatible: "只接受 {{target}},所选字段固定为 {{source}}。",
3248
+ constraintSubject: "“{{path}}”",
3249
+ minLength: "{{subject}}至少需要 {{value}} 个字符。",
3250
+ maxLength: "{{subject}}最多接受 {{value}} 个字符。",
3251
+ pattern: "{{subject}}文本格式应符合 {{value}}。",
3252
+ minimum: "{{subject}}不能小于 {{value}}。",
3253
+ exclusiveMinimum: "{{subject}}必须大于 {{value}}。",
3254
+ maximum: "{{subject}}不能大于 {{value}}。",
3255
+ exclusiveMaximum: "{{subject}}必须小于 {{value}}。",
3256
+ multipleOf: "{{subject}}必须是 {{value}} 的倍数。",
3257
+ minItems: "{{subject}}至少需要 {{value}} 项。",
3258
+ maxItems: "{{subject}}最多接受 {{value}} 项。",
3259
+ minProperties: "{{subject}}至少需要 {{value}} 个属性。",
3260
+ maxProperties: "{{subject}}最多接受 {{value}} 个属性。",
3261
+ integer: "整数",
3262
+ unknownType: "未知类型",
3263
+ typeSeparator: "或"
2538
3264
  },
2539
3265
  actions: {
2540
3266
  title: "代码可调用的动作",
@@ -2569,10 +3295,8 @@ var re = (e, t = {}, n = "") => {
2569
3295
  chooseAccounts: "管理账号"
2570
3296
  },
2571
3297
  comment: {
2572
- source: "显示源文本",
2573
- preview: "预览",
2574
- duplicate: "克隆",
2575
- delete: "删除"
3298
+ source: "源码",
3299
+ preview: "Markdown"
2576
3300
  },
2577
3301
  ports: {
2578
3302
  reorder: "调整 {{name}} 的顺序",
@@ -2580,6 +3304,12 @@ var re = (e, t = {}, n = "") => {
2580
3304
  moved: "{{name}} 已移至第 {{position}} 位。",
2581
3305
  groupSettings: "分组设置",
2582
3306
  connected: "已连接",
3307
+ sort: "排序",
3308
+ finishSorting: "完成排序",
3309
+ inputsTitle: "输入",
3310
+ outputsTitle: "输出",
3311
+ valuesTitle: "数据",
3312
+ columnHandle: "Handle",
2583
3313
  columnName: "名称",
2584
3314
  columnType: "类型",
2585
3315
  columnValue: "值"
@@ -2898,8 +3628,10 @@ var re = (e, t = {}, n = "") => {
2898
3628
  "binding-missing": "绑定“{{bindingId}}”不存在。",
2899
3629
  cycle: "节点之间存在依赖循环:{{nodes}}。",
2900
3630
  "flow-input-incompatible": "Flow 输入“{{input}}”与此输入不兼容。",
3631
+ "flow-input-schema-incompatible": "Flow 输入“{{input}}”不能用于“{{target}}”:{{issue}}",
2901
3632
  "input-missing": "节点“{{nodeId}}”没有输入“{{handle}}”。",
2902
3633
  "node-output-incompatible": "上游节点“{{nodeId}}”的输出“{{output}}”与此输入不兼容。",
3634
+ "node-output-schema-incompatible": "“{{source}}”不能用于“{{target}}”:{{issue}}",
2903
3635
  "schema-unsupported": "不支持 Runtime Ref schema。",
2904
3636
  "source-missing": {
2905
3637
  "flow-input": "此图中不存在 Flow 输入“{{input}}”。",
@@ -2911,6 +3643,7 @@ var re = (e, t = {}, n = "") => {
2911
3643
  task: "Task“{{taskId}}”不存在。"
2912
3644
  },
2913
3645
  "subflow-output-incompatible": "有来源与 Subflow 输出“{{output}}”的声明类型不兼容。",
3646
+ "subflow-output-schema-incompatible": "Subflow 输出“{{output}}”的数据格式不匹配:{{issue}}",
2914
3647
  "trigger-not-allowed": "Trigger 节点只能用于 Flow。",
2915
3648
  "variable-incompatible": "Variable 绑定“{{bindingId}}”与此输入不兼容。",
2916
3649
  "variable-source-mixed": "Variable 必须是一个输入的唯一来源。"
@@ -2969,19 +3702,18 @@ var re = (e, t = {}, n = "") => {
2969
3702
  runInput: {
2970
3703
  editMissing: "填写测试数据",
2971
3704
  editReady: "修改已保存的测试数据",
2972
- remembered: "测试数据会在本次编辑会话中保留,不会修改工作流。",
3705
+ remembered: "测试数据仅在本次编辑会话中保留。",
2973
3706
  startTest: "开始测试",
2974
3707
  testTrigger: "测试 {{name}}",
2975
3708
  triggerCount: "共 {{count}} 个起始节点",
2976
- triggerDataHint: "填写这个 Trigger 的模拟数据,然后开始测试。",
2977
- triggerData: "触发数据",
2978
- close: "关闭运行输入",
3709
+ close: "关闭测试数据",
2979
3710
  description: "填写本次运行需要的数据,不会修改工作流。",
2980
3711
  invalid: "请为所有列出的输入设置有效的 JSON 值后再运行。",
2981
- title: "运行输入",
3712
+ title: "测试数据",
2982
3713
  trigger: "起始节点",
2983
3714
  selectTrigger: "选择起始节点",
2984
- noTrigger: "请先添加一个触发器作为起始节点。"
3715
+ noTrigger: "请先添加一个触发器作为起始节点。",
3716
+ triggerSubtitle: "触发器 · {{name}}"
2985
3717
  },
2986
3718
  workspace: {
2987
3719
  check: "检查当前草稿",
@@ -3085,7 +3817,7 @@ var re = (e, t = {}, n = "") => {
3085
3817
  scheduleExpression: "Cron 表达式",
3086
3818
  scheduleTimezone: "时区",
3087
3819
  scheduleMissing: "尚未配置计划",
3088
- scheduleTestHint: "草稿测试会立即执行一次;发布后按计划自动运行。"
3820
+ scheduleTestHint: "测试发送 {},线上运行发送 { scheduledAt }。"
3089
3821
  },
3090
3822
  triggerConfig: {
3091
3823
  configuration: "配置",
@@ -3120,7 +3852,7 @@ var re = (e, t = {}, n = "") => {
3120
3852
  webhookSummary: "收到 HTTP 请求时触发",
3121
3853
  webhookDescription: "通过部署后生成的 HTTP 地址接收 JSON 对象。"
3122
3854
  },
3123
- triggerSummary: { manualSummary: "点击运行,从这里开始执行。" },
3855
+ triggerSummary: { manualPayloadHint: "下游节点会收到空对象 {}。" },
3124
3856
  conditionEditor: {
3125
3857
  addCondition: "添加条件",
3126
3858
  configPanelTitle: "配置",
@@ -3164,8 +3896,11 @@ var re = (e, t = {}, n = "") => {
3164
3896
  nodeInput: {
3165
3897
  literal: "固定值",
3166
3898
  variable: "Variable",
3899
+ noVariables: "尚未声明 Variable",
3900
+ noUpstreamNodes: "没有可用数据",
3901
+ unsupported: "不支持",
3167
3902
  mode: "类型",
3168
- connected: "已连接上游来源,可在输入来源中修改。"
3903
+ connected: "已选择数据,可从“选择数据”中修改。"
3169
3904
  },
3170
3905
  history: {
3171
3906
  undo: "撤销",
@@ -3529,7 +4264,7 @@ var re = (e, t = {}, n = "") => {
3529
4264
  },
3530
4265
  inspector: {
3531
4266
  account: {
3532
- required: "待連線",
4267
+ required: "待連線帳號",
3533
4268
  addConnection: "新增 Connection",
3534
4269
  authorizationPending: "請在 Connection 頁面完成授權,再回到這裡重新整理這個帳號。",
3535
4270
  chooseAccount: "選擇帳號",
@@ -3570,6 +4305,7 @@ var re = (e, t = {}, n = "") => {
3570
4305
  name: "標題"
3571
4306
  },
3572
4307
  selectNode: "選取一個草稿節點即可檢視並編輯它。",
4308
+ locateNode: "在畫布上定位 {{name}}",
3573
4309
  subflow: {
3574
4310
  definition: "Subflow 定義",
3575
4311
  inputPorts: "輸入埠(JSON)",
@@ -3603,25 +4339,50 @@ var re = (e, t = {}, n = "") => {
3603
4339
  wait: {
3604
4340
  approval: "通過或拒絕",
3605
4341
  changeNotification: "更換",
3606
- chooseNotification: "新增通知",
3607
- chooseNotificationTitle: "選擇通知方式",
3608
4342
  continue: "繼續",
3609
- inputs: "參數",
3610
- inputsInvalid: "請填寫所有必需的通知參數。",
3611
- inputsLoading: "正在載入通知參數…",
3612
- messageHandle: "訊息內容寫入",
3613
4343
  mode: "處理方式",
3614
- notificationTask: "通知",
3615
- notificationUnavailable: "通知設定不可用,請重新選擇。",
4344
+ inputsLoading: "正在載入通知參數…",
4345
+ notificationDescription: "連接通知出口,可在等待期間傳送訊息或執行其他步驟。",
3616
4346
  prompt: "提示",
3617
- promptError: "提示必須包含 1 到 1,000 個字元。",
3618
- removeNotification: "移除通知"
4347
+ promptError: "提示必須包含 1 到 1,000 個字元。"
3619
4348
  },
3620
4349
  title: "檢查器",
3621
4350
  sources: {
3622
- title: "輸入來源",
3623
- local: "本機值 / 變數",
3624
- unavailable: "無法保證此來源先於目前節點完成,或輸出類型不符。"
4351
+ loading: "正在載入可用資料…",
4352
+ loadFailed: "無法載入來源,請重新開啟選單重試。",
4353
+ checkFailed: "無法檢查此來源。",
4354
+ title: "選擇資料",
4355
+ sourceMissing: "找不到「{{source}}」,請重新選擇。",
4356
+ outputMissing: "「{{source}}」中找不到「{{output}}」,請重新選擇。",
4357
+ notReady: "執行到這裡時,「{{source}} {{handle}}」可能還沒有值。",
4358
+ sourceConflict: "這些欄位可能同時有值:{{sources}}。這裡只能取一個。",
4359
+ schemaIncompatible: "資料格式不符。",
4360
+ schemaPathIncompatible: "「{{path}}」的資料格式不符。",
4361
+ schemaCompareFailed: "無法檢查資料格式,請檢查 JSON Schema。",
4362
+ binaryIncompatible: "不能使用二進位資料。",
4363
+ artifactIncompatible: "不能使用檔案資料。",
4364
+ nullableIncompatible: "不能為空,但所選欄位可能為空。",
4365
+ typeIncompatible: "需要{{target}},但所選欄位是{{source}}。",
4366
+ propertyTypeIncompatible: "「{{path}}」需要{{target}},實際是{{source}}。",
4367
+ requiredIncompatible: "不一定包含必填屬性「{{property}}」。",
4368
+ enumIncompatible: "可能出現不接受的值:{{values}}。",
4369
+ constIncompatible: "只接受 {{target}},所選欄位固定為 {{source}}。",
4370
+ constraintSubject: "「{{path}}」",
4371
+ minLength: "{{subject}}至少需要 {{value}} 個字元。",
4372
+ maxLength: "{{subject}}最多接受 {{value}} 個字元。",
4373
+ pattern: "{{subject}}文字格式應符合 {{value}}。",
4374
+ minimum: "{{subject}}不能小於 {{value}}。",
4375
+ exclusiveMinimum: "{{subject}}必須大於 {{value}}。",
4376
+ maximum: "{{subject}}不能大於 {{value}}。",
4377
+ exclusiveMaximum: "{{subject}}必須小於 {{value}}。",
4378
+ multipleOf: "{{subject}}必須是 {{value}} 的倍數。",
4379
+ minItems: "{{subject}}至少需要 {{value}} 項。",
4380
+ maxItems: "{{subject}}最多接受 {{value}} 項。",
4381
+ minProperties: "{{subject}}至少需要 {{value}} 個屬性。",
4382
+ maxProperties: "{{subject}}最多接受 {{value}} 個屬性。",
4383
+ integer: "整數",
4384
+ unknownType: "未知類型",
4385
+ typeSeparator: "或"
3625
4386
  },
3626
4387
  actions: {
3627
4388
  title: "程式碼可呼叫的動作",
@@ -3656,10 +4417,8 @@ var re = (e, t = {}, n = "") => {
3656
4417
  chooseAccounts: "管理帳號"
3657
4418
  },
3658
4419
  comment: {
3659
- source: "檢視原始文字",
3660
- preview: "預覽",
3661
- duplicate: "建立副本",
3662
- delete: "刪除"
4420
+ source: "原始碼",
4421
+ preview: "Markdown"
3663
4422
  },
3664
4423
  ports: {
3665
4424
  reorder: "調整 {{name}} 的順序",
@@ -3667,6 +4426,12 @@ var re = (e, t = {}, n = "") => {
3667
4426
  moved: "{{name}} 已移至第 {{position}} 位。",
3668
4427
  groupSettings: "群組設定",
3669
4428
  connected: "已連接",
4429
+ sort: "排序",
4430
+ finishSorting: "完成排序",
4431
+ inputsTitle: "輸入",
4432
+ outputsTitle: "輸出",
4433
+ valuesTitle: "資料",
4434
+ columnHandle: "Handle",
3670
4435
  columnName: "名稱",
3671
4436
  columnType: "類型",
3672
4437
  columnValue: "值"
@@ -3985,8 +4750,10 @@ var re = (e, t = {}, n = "") => {
3985
4750
  "binding-missing": "繫結「{{bindingId}}」不存在。",
3986
4751
  cycle: "節點之間存在相依性循環:{{nodes}}。",
3987
4752
  "flow-input-incompatible": "Flow 輸入「{{input}}」與此輸入不相容。",
4753
+ "flow-input-schema-incompatible": "Flow 輸入「{{input}}」不能用於「{{target}}」:{{issue}}",
3988
4754
  "input-missing": "節點「{{nodeId}}」沒有輸入「{{handle}}」。",
3989
4755
  "node-output-incompatible": "上游節點「{{nodeId}}」的輸出「{{output}}」與此輸入不相容。",
4756
+ "node-output-schema-incompatible": "「{{source}}」不能用於「{{target}}」:{{issue}}",
3990
4757
  "schema-unsupported": "不支援 Runtime Ref schema。",
3991
4758
  "source-missing": {
3992
4759
  "flow-input": "此流程圖中不存在 Flow 輸入「{{input}}」。",
@@ -3998,6 +4765,7 @@ var re = (e, t = {}, n = "") => {
3998
4765
  task: "Task「{{taskId}}」不存在。"
3999
4766
  },
4000
4767
  "subflow-output-incompatible": "有來源與 Subflow 輸出「{{output}}」的宣告類型不相容。",
4768
+ "subflow-output-schema-incompatible": "Subflow 輸出「{{output}}」的資料格式不相符:{{issue}}",
4001
4769
  "trigger-not-allowed": "Trigger 節點只能用於 Flow。",
4002
4770
  "variable-incompatible": "Variable 繫結「{{bindingId}}」與此輸入不相容。",
4003
4771
  "variable-source-mixed": "Variable 必須是輸入的唯一來源。"
@@ -4056,19 +4824,18 @@ var re = (e, t = {}, n = "") => {
4056
4824
  runInput: {
4057
4825
  editMissing: "填寫測試資料",
4058
4826
  editReady: "修改已儲存的測試資料",
4059
- remembered: "測試資料會在本次編輯工作階段中保留,不會修改工作流程。",
4827
+ remembered: "測試資料僅在本次編輯工作階段中保留。",
4060
4828
  startTest: "開始測試",
4061
4829
  testTrigger: "測試 {{name}}",
4062
4830
  triggerCount: "共 {{count}} 個起始節點",
4063
- triggerDataHint: "填寫這個 Trigger 的模擬資料,然後開始測試。",
4064
- triggerData: "觸發資料",
4065
- close: "關閉執行輸入",
4831
+ close: "關閉測試資料",
4066
4832
  description: "填寫本次執行需要的資料,不會修改工作流程。",
4067
4833
  invalid: "執行前,請將列出的每個輸入都設為有效的 JSON 值。",
4068
- title: "執行輸入",
4834
+ title: "測試資料",
4069
4835
  trigger: "起始節點",
4070
4836
  selectTrigger: "選擇起始節點",
4071
- noTrigger: "請先新增一個觸發器作為起始節點。"
4837
+ noTrigger: "請先新增一個觸發器作為起始節點。",
4838
+ triggerSubtitle: "觸發器 · {{name}}"
4072
4839
  },
4073
4840
  workspace: {
4074
4841
  check: "檢查目前的草稿",
@@ -4172,7 +4939,7 @@ var re = (e, t = {}, n = "") => {
4172
4939
  scheduleExpression: "Cron 運算式",
4173
4940
  scheduleTimezone: "時區",
4174
4941
  scheduleMissing: "尚未設定排程",
4175
- scheduleTestHint: "草稿測試會立即執行一次;發佈後按排程自動執行。"
4942
+ scheduleTestHint: "測試傳送 {},線上執行傳送 { scheduledAt }。"
4176
4943
  },
4177
4944
  triggerConfig: {
4178
4945
  configuration: "設定",
@@ -4207,7 +4974,7 @@ var re = (e, t = {}, n = "") => {
4207
4974
  webhookSummary: "收到 HTTP 請求時觸發",
4208
4975
  webhookDescription: "透過產生的 HTTP 端點接收 JSON 物件。"
4209
4976
  },
4210
- triggerSummary: { manualSummary: "點擊執行,從這裡開始。" },
4977
+ triggerSummary: { manualPayloadHint: "下游節點會收到空物件 {}。" },
4211
4978
  conditionEditor: {
4212
4979
  addCondition: "新增條件",
4213
4980
  configPanelTitle: "設定",
@@ -4251,8 +5018,11 @@ var re = (e, t = {}, n = "") => {
4251
5018
  nodeInput: {
4252
5019
  literal: "固定值",
4253
5020
  variable: "Variable",
5021
+ noVariables: "尚未宣告 Variable",
5022
+ noUpstreamNodes: "沒有可用資料",
5023
+ unsupported: "不支援",
4254
5024
  mode: "類型",
4255
- connected: "已連接上游來源,可在輸入來源中修改。"
5025
+ connected: "已選擇資料,可從「選擇資料」中修改。"
4256
5026
  },
4257
5027
  history: {
4258
5028
  undo: "復原",
@@ -4616,7 +5386,7 @@ var re = (e, t = {}, n = "") => {
4616
5386
  },
4617
5387
  inspector: {
4618
5388
  account: {
4619
- required: "接続が必要",
5389
+ required: "アカウント接続が必要",
4620
5390
  addConnection: "Connection を追加",
4621
5391
  authorizationPending: "Connection ページで認証を完了してください。ここに戻ると、このアカウントが更新されます。",
4622
5392
  chooseAccount: "アカウントを選択",
@@ -4657,6 +5427,7 @@ var re = (e, t = {}, n = "") => {
4657
5427
  name: "タイトル"
4658
5428
  },
4659
5429
  selectNode: "ドラフトのノードを 1 つ選択すると、内容を確認して編集できます。",
5430
+ locateNode: "キャンバス上で {{name}} を表示",
4660
5431
  subflow: {
4661
5432
  definition: "Subflow 定義",
4662
5433
  inputPorts: "入力ポート(JSON)",
@@ -4690,25 +5461,50 @@ var re = (e, t = {}, n = "") => {
4690
5461
  wait: {
4691
5462
  approval: "承認または拒否",
4692
5463
  changeNotification: "変更",
4693
- chooseNotification: "通知を追加",
4694
- chooseNotificationTitle: "通知を選択",
4695
5464
  continue: "続行",
4696
- inputs: "パラメーター",
4697
- inputsInvalid: "必須の通知パラメーターをすべて入力してください。",
4698
- inputsLoading: "通知パラメーターを読み込んでいます…",
4699
- messageHandle: "メッセージの書き込み先",
4700
5465
  mode: "処理方法",
4701
- notificationTask: "通知",
4702
- notificationUnavailable: "通知設定を利用できません。選択し直してください。",
5466
+ inputsLoading: "通知パラメーターを読み込んでいます…",
5467
+ notificationDescription: "通知出力に接続すると、待機中にメッセージの送信や他のステップを実行できます。",
4703
5468
  prompt: "プロンプト",
4704
- promptError: "プロンプトは1〜1,000文字で入力してください。",
4705
- removeNotification: "通知を削除"
5469
+ promptError: "プロンプトは1〜1,000文字で入力してください。"
4706
5470
  },
4707
5471
  title: "インスペクター",
4708
5472
  sources: {
4709
- title: "入力元",
4710
- local: "ローカル値 / 変数",
4711
- unavailable: "この入力元が現在のノードより先に完了する保証がないか、型が一致していません。"
5473
+ loading: "利用可能なデータを読み込み中…",
5474
+ loadFailed: "ソースを読み込めません。メニューを開き直してください。",
5475
+ checkFailed: "このソースを確認できませんでした。",
5476
+ title: "データを選択",
5477
+ sourceMissing: "「{{source}}」が見つかりません。選択し直してください。",
5478
+ outputMissing: "「{{source}}」に「{{output}}」が見つかりません。選択し直してください。",
5479
+ notReady: "ここを実行するとき、「{{source}} {{handle}}」にまだ値がない可能性があります。",
5480
+ sourceConflict: "同時に値を持つ可能性があります:{{sources}}。ここでは 1 つだけ使用できます。",
5481
+ schemaIncompatible: "データ形式が一致しません。",
5482
+ schemaPathIncompatible: "「{{path}}」のデータ形式が一致しません。",
5483
+ schemaCompareFailed: "データ形式を確認できません。JSON Schema を確認してください。",
5484
+ binaryIncompatible: "バイナリデータは使用できません。",
5485
+ artifactIncompatible: "ファイルデータは使用できません。",
5486
+ nullableIncompatible: "値が必要ですが、選択したフィールドは空になる可能性があります。",
5487
+ typeIncompatible: "{{target}}が必要ですが、選択したフィールドは{{source}}です。",
5488
+ propertyTypeIncompatible: "「{{path}}」は{{target}}である必要がありますが、実際は{{source}}です。",
5489
+ requiredIncompatible: "必須プロパティ「{{property}}」がない可能性があります。",
5490
+ enumIncompatible: "使用できない値が含まれる可能性があります:{{values}}。",
5491
+ constIncompatible: "{{target}}のみ使用できますが、選択したフィールドは常に {{source}} です。",
5492
+ constraintSubject: "「{{path}}」は",
5493
+ minLength: "{{subject}}少なくとも {{value}} 文字必要です。",
5494
+ maxLength: "{{subject}}最大 {{value}} 文字です。",
5495
+ pattern: "{{subject}}{{value}} に一致する必要があります。",
5496
+ minimum: "{{subject}}{{value}} 未満にできません。",
5497
+ exclusiveMinimum: "{{subject}}{{value}} より大きい必要があります。",
5498
+ maximum: "{{subject}}{{value}} を超えられません。",
5499
+ exclusiveMaximum: "{{subject}}{{value}} より小さい必要があります。",
5500
+ multipleOf: "{{subject}}{{value}} の倍数である必要があります。",
5501
+ minItems: "{{subject}}少なくとも {{value}} 項必要です。",
5502
+ maxItems: "{{subject}}最大 {{value}} 項です。",
5503
+ minProperties: "{{subject}}少なくとも {{value}} 個のプロパティが必要です。",
5504
+ maxProperties: "{{subject}}最大 {{value}} 個のプロパティです。",
5505
+ integer: "整数",
5506
+ unknownType: "不明な型",
5507
+ typeSeparator: "または"
4712
5508
  },
4713
5509
  actions: {
4714
5510
  title: "このコードから呼び出せるアクション",
@@ -4743,10 +5539,8 @@ var re = (e, t = {}, n = "") => {
4743
5539
  chooseAccounts: "アカウントを管理"
4744
5540
  },
4745
5541
  comment: {
4746
- source: "ソースを表示",
4747
- preview: "プレビュー",
4748
- duplicate: "複製",
4749
- delete: "削除"
5542
+ source: "ソースコード",
5543
+ preview: "Markdown"
4750
5544
  },
4751
5545
  ports: {
4752
5546
  reorder: "{{name}} の順序を変更",
@@ -4754,6 +5548,12 @@ var re = (e, t = {}, n = "") => {
4754
5548
  moved: "{{name}} を {{position}} 番目に移動しました。",
4755
5549
  groupSettings: "グループ設定",
4756
5550
  connected: "接続済み",
5551
+ sort: "並べ替え",
5552
+ finishSorting: "並べ替えを完了",
5553
+ inputsTitle: "入力",
5554
+ outputsTitle: "出力",
5555
+ valuesTitle: "値",
5556
+ columnHandle: "Handle",
4757
5557
  columnName: "名前",
4758
5558
  columnType: "型",
4759
5559
  columnValue: "値"
@@ -5072,8 +5872,10 @@ var re = (e, t = {}, n = "") => {
5072
5872
  "binding-missing": "バインディング「{{bindingId}}」は存在しません。",
5073
5873
  cycle: "ノード間に依存関係の循環があります:{{nodes}}。",
5074
5874
  "flow-input-incompatible": "Flow 入力「{{input}}」はこの入力と互換性がありません。",
5875
+ "flow-input-schema-incompatible": "Flow 入力「{{input}}」は「{{target}}」に使用できません:{{issue}}",
5075
5876
  "input-missing": "ノード「{{nodeId}}」に入力「{{handle}}」はありません。",
5076
5877
  "node-output-incompatible": "上流ノード「{{nodeId}}」の出力「{{output}}」はこの入力と互換性がありません。",
5878
+ "node-output-schema-incompatible": "「{{source}}」は「{{target}}」に使用できません:{{issue}}",
5077
5879
  "schema-unsupported": "Runtime Ref スキーマはサポートされていません。",
5078
5880
  "source-missing": {
5079
5881
  "flow-input": "このグラフに Flow 入力「{{input}}」は存在しません。",
@@ -5085,6 +5887,7 @@ var re = (e, t = {}, n = "") => {
5085
5887
  task: "Task「{{taskId}}」は存在しません。"
5086
5888
  },
5087
5889
  "subflow-output-incompatible": "ソースが Subflow 出力「{{output}}」の宣言型と互換性がありません。",
5890
+ "subflow-output-schema-incompatible": "Subflow 出力「{{output}}」のデータ形式が一致しません:{{issue}}",
5088
5891
  "trigger-not-allowed": "Trigger ノードは Flow 内でのみ使用できます。",
5089
5892
  "variable-incompatible": "Variable バインディング「{{bindingId}}」はこの入力と互換性がありません。",
5090
5893
  "variable-source-mixed": "Variable は入力の唯一のソースである必要があります。"
@@ -5143,19 +5946,18 @@ var re = (e, t = {}, n = "") => {
5143
5946
  runInput: {
5144
5947
  editMissing: "テストデータを入力",
5145
5948
  editReady: "保存済みのテストデータを編集",
5146
- remembered: "テストデータはこの編集セッション中に保持され、ワークフローは変更されません。",
5949
+ remembered: "この編集セッションでのみ保存されます。",
5147
5950
  startTest: "テストを開始",
5148
5951
  testTrigger: "テスト {{name}}",
5149
5952
  triggerCount: "開始ノード {{count}} 件",
5150
- triggerDataHint: "この Trigger のサンプルデータを入力して、テストを開始します。",
5151
- triggerData: "トリガーデータ",
5152
- close: "実行入力を閉じる",
5953
+ close: "テストデータを閉じる",
5153
5954
  description: "今回の実行に必要なデータを入力してください。ワークフローは変更されません。",
5154
5955
  invalid: "実行する前に、表示されているすべての入力へ有効な JSON 値を設定してください。",
5155
- title: "実行入力",
5956
+ title: "テストデータ",
5156
5957
  trigger: "開始ノード",
5157
5958
  selectTrigger: "開始ノードを選択",
5158
- noTrigger: "実行する前に開始ノードとなるトリガーを追加してください。"
5959
+ noTrigger: "実行する前に開始ノードとなるトリガーを追加してください。",
5960
+ triggerSubtitle: "トリガー · {{name}}"
5159
5961
  },
5160
5962
  workspace: {
5161
5963
  check: "現在のドラフトを検査",
@@ -5259,7 +6061,7 @@ var re = (e, t = {}, n = "") => {
5259
6061
  scheduleExpression: "Cron 式",
5260
6062
  scheduleTimezone: "タイムゾーン",
5261
6063
  scheduleMissing: "スケジュールが未設定です",
5262
- scheduleTestHint: "下書きのテストはすぐに1回実行されます。公開後はスケジュールに従って自動実行されます。"
6064
+ scheduleTestHint: "テストは {}、本番実行は { scheduledAt } を送信します。"
5263
6065
  },
5264
6066
  triggerConfig: {
5265
6067
  configuration: "設定",
@@ -5294,7 +6096,7 @@ var re = (e, t = {}, n = "") => {
5294
6096
  webhookSummary: "HTTP リクエストを受信したとき",
5295
6097
  webhookDescription: "生成された HTTP エンドポイントで JSON オブジェクトを受信します。"
5296
6098
  },
5297
- triggerSummary: { manualSummary: "実行をクリックすると、ここから開始します。" },
6099
+ triggerSummary: { manualPayloadHint: "後続ノードは空のオブジェクト({})を受け取ります。" },
5298
6100
  conditionEditor: {
5299
6101
  addCondition: "条件を追加",
5300
6102
  configPanelTitle: "設定",
@@ -5338,8 +6140,11 @@ var re = (e, t = {}, n = "") => {
5338
6140
  nodeInput: {
5339
6141
  literal: "固定値",
5340
6142
  variable: "Variable",
6143
+ noVariables: "Variable はまだ宣言されていません",
6144
+ noUpstreamNodes: "利用できるデータがありません",
6145
+ unsupported: "非対応",
5341
6146
  mode: "型",
5342
- connected: "上流の入力元に接続されています。入力元で変更できます。"
6147
+ connected: "データが選択されています。「データを選択」から変更できます。"
5343
6148
  },
5344
6149
  history: {
5345
6150
  undo: "元に戻す",
@@ -5703,7 +6508,7 @@ var re = (e, t = {}, n = "") => {
5703
6508
  },
5704
6509
  inspector: {
5705
6510
  account: {
5706
- required: "연결 필요",
6511
+ required: "계정 연결 필요",
5707
6512
  addConnection: "Connection 추가",
5708
6513
  authorizationPending: "Connection 페이지에서 인증을 마친 뒤 여기로 돌아와 이 계정을 새로 고치세요.",
5709
6514
  chooseAccount: "계정 선택",
@@ -5744,6 +6549,7 @@ var re = (e, t = {}, n = "") => {
5744
6549
  name: "제목"
5745
6550
  },
5746
6551
  selectNode: "확인하고 편집할 초안 노드를 하나 선택하세요.",
6552
+ locateNode: "캔버스에서 {{name}} 위치 보기",
5747
6553
  subflow: {
5748
6554
  definition: "Subflow 정의",
5749
6555
  inputPorts: "입력 포트(JSON)",
@@ -5777,25 +6583,50 @@ var re = (e, t = {}, n = "") => {
5777
6583
  wait: {
5778
6584
  approval: "승인 또는 거부",
5779
6585
  changeNotification: "변경",
5780
- chooseNotification: "알림 추가",
5781
- chooseNotificationTitle: "알림 선택",
5782
6586
  continue: "계속",
5783
- inputs: "매개변수",
5784
- inputsInvalid: "필수 알림 매개변수를 모두 입력하세요.",
5785
- inputsLoading: "알림 매개변수를 불러오는 중…",
5786
- messageHandle: "메시지를 기록할 입력",
5787
6587
  mode: "처리 방식",
5788
- notificationTask: "알림",
5789
- notificationUnavailable: "알림 구성을 사용할 없습니다. 다시 선택하세요.",
6588
+ inputsLoading: "알림 매개변수를 불러오는 중…",
6589
+ notificationDescription: "알림 출력에 연결하면 대기 중에 메시지를 보내거나 다른 단계를 실행할 수 있습니다.",
5790
6590
  prompt: "프롬프트",
5791
- promptError: "프롬프트는 1~1,000자여야 합니다.",
5792
- removeNotification: "알림 제거"
6591
+ promptError: "프롬프트는 1~1,000자여야 합니다."
5793
6592
  },
5794
6593
  title: "인스펙터",
5795
6594
  sources: {
5796
- title: "입력 소스",
5797
- local: "로컬 / 변수",
5798
- unavailable: "이 소스가 현재 노드보다 먼저 완료된다는 보장이 없거나 유형이 일치하지 않습니다."
6595
+ loading: "사용 가능한 데이터 불러오는 중…",
6596
+ loadFailed: "소스를 불러올 없습니다. 메뉴를 다시 열어 주세요.",
6597
+ checkFailed: "이 소스를 확인할 없습니다.",
6598
+ title: "데이터 선택",
6599
+ sourceMissing: "“{{source}}”을(를) 찾을 수 없습니다. 다시 선택하세요.",
6600
+ outputMissing: "“{{source}}”에서 “{{output}}”을(를) 찾을 수 없습니다. 다시 선택하세요.",
6601
+ notReady: "여기까지 실행될 때 “{{source}} {{handle}}”에 아직 값이 없을 수 있습니다.",
6602
+ sourceConflict: "다음 필드에 값이 동시에 있을 수 있습니다: {{sources}}. 여기서는 하나만 사용할 수 있습니다.",
6603
+ schemaIncompatible: "데이터 형식이 일치하지 않습니다.",
6604
+ schemaPathIncompatible: "“{{path}}”의 데이터 형식이 일치하지 않습니다.",
6605
+ schemaCompareFailed: "데이터 형식을 확인할 수 없습니다. JSON Schema를 확인하세요.",
6606
+ binaryIncompatible: "바이너리 데이터는 사용할 수 없습니다.",
6607
+ artifactIncompatible: "파일 데이터는 사용할 수 없습니다.",
6608
+ nullableIncompatible: "값이 필요하지만 선택한 필드는 비어 있을 수 있습니다.",
6609
+ typeIncompatible: "{{target}}이(가) 필요하지만 선택한 필드는 {{source}}입니다.",
6610
+ propertyTypeIncompatible: "“{{path}}”은(는) {{target}}이어야 하지만 실제로는 {{source}}입니다.",
6611
+ requiredIncompatible: "필수 속성 “{{property}}”이(가) 없을 수 있습니다.",
6612
+ enumIncompatible: "허용되지 않는 값이 포함될 수 있습니다: {{values}}.",
6613
+ constIncompatible: "{{target}}만 허용되지만 선택한 필드는 항상 {{source}}입니다.",
6614
+ constraintSubject: "“{{path}}”은(는) ",
6615
+ minLength: "{{subject}}최소 {{value}}자여야 합니다.",
6616
+ maxLength: "{{subject}}최대 {{value}}자여야 합니다.",
6617
+ pattern: "{{subject}}{{value}} 형식과 일치해야 합니다.",
6618
+ minimum: "{{subject}}{{value}}보다 작을 수 없습니다.",
6619
+ exclusiveMinimum: "{{subject}}{{value}}보다 커야 합니다.",
6620
+ maximum: "{{subject}}{{value}}보다 클 수 없습니다.",
6621
+ exclusiveMaximum: "{{subject}}{{value}}보다 작아야 합니다.",
6622
+ multipleOf: "{{subject}}{{value}}의 배수여야 합니다.",
6623
+ minItems: "{{subject}}최소 {{value}}개 항목이 필요합니다.",
6624
+ maxItems: "{{subject}}최대 {{value}}개 항목을 허용합니다.",
6625
+ minProperties: "{{subject}}최소 {{value}}개 속성이 필요합니다.",
6626
+ maxProperties: "{{subject}}최대 {{value}}개 속성을 허용합니다.",
6627
+ integer: "정수",
6628
+ unknownType: "알 수 없는 유형",
6629
+ typeSeparator: " 또는 "
5799
6630
  },
5800
6631
  actions: {
5801
6632
  title: "이 코드에서 호출할 수 있는 작업",
@@ -5830,10 +6661,8 @@ var re = (e, t = {}, n = "") => {
5830
6661
  chooseAccounts: "계정 관리"
5831
6662
  },
5832
6663
  comment: {
5833
- source: "원본 보기",
5834
- preview: "미리 보기",
5835
- duplicate: "복제",
5836
- delete: "삭제"
6664
+ source: "소스",
6665
+ preview: "Markdown"
5837
6666
  },
5838
6667
  ports: {
5839
6668
  reorder: "{{name}} 순서 변경",
@@ -5841,6 +6670,12 @@ var re = (e, t = {}, n = "") => {
5841
6670
  moved: "{{name}}이(가) {{position}}번째로 이동했습니다.",
5842
6671
  groupSettings: "그룹 설정",
5843
6672
  connected: "연결됨",
6673
+ sort: "순서 변경",
6674
+ finishSorting: "순서 변경 완료",
6675
+ inputsTitle: "입력",
6676
+ outputsTitle: "출력",
6677
+ valuesTitle: "값",
6678
+ columnHandle: "Handle",
5844
6679
  columnName: "이름",
5845
6680
  columnType: "유형",
5846
6681
  columnValue: "값"
@@ -6159,8 +6994,10 @@ var re = (e, t = {}, n = "") => {
6159
6994
  "binding-missing": "바인딩 ‘{{bindingId}}’이(가) 없습니다.",
6160
6995
  cycle: "노드 사이에 순환 종속성이 있습니다: {{nodes}}.",
6161
6996
  "flow-input-incompatible": "Flow 입력 ‘{{input}}’이(가) 이 입력과 호환되지 않습니다.",
6997
+ "flow-input-schema-incompatible": "Flow 입력 ‘{{input}}’은(는) ‘{{target}}’에 사용할 수 없습니다: {{issue}}",
6162
6998
  "input-missing": "노드 ‘{{nodeId}}’에 입력 ‘{{handle}}’이(가) 없습니다.",
6163
6999
  "node-output-incompatible": "상위 노드 ‘{{nodeId}}’의 출력 ‘{{output}}’이(가) 이 입력과 호환되지 않습니다.",
7000
+ "node-output-schema-incompatible": "‘{{source}}’은(는) ‘{{target}}’에 사용할 수 없습니다: {{issue}}",
6164
7001
  "schema-unsupported": "Runtime Ref 스키마는 지원되지 않습니다.",
6165
7002
  "source-missing": {
6166
7003
  "flow-input": "이 그래프에 Flow 입력 ‘{{input}}’이(가) 없습니다.",
@@ -6172,6 +7009,7 @@ var re = (e, t = {}, n = "") => {
6172
7009
  task: "Task ‘{{taskId}}’이(가) 없습니다."
6173
7010
  },
6174
7011
  "subflow-output-incompatible": "소스가 Subflow 출력 ‘{{output}}’의 선언된 형식과 호환되지 않습니다.",
7012
+ "subflow-output-schema-incompatible": "Subflow 출력 ‘{{output}}’의 데이터 형식이 일치하지 않습니다: {{issue}}",
6175
7013
  "trigger-not-allowed": "Trigger 노드는 Flow에서만 사용할 수 있습니다.",
6176
7014
  "variable-incompatible": "Variable 바인딩 ‘{{bindingId}}’이(가) 이 입력과 호환되지 않습니다.",
6177
7015
  "variable-source-mixed": "Variable은 입력의 유일한 소스여야 합니다."
@@ -6230,19 +7068,18 @@ var re = (e, t = {}, n = "") => {
6230
7068
  runInput: {
6231
7069
  editMissing: "테스트 데이터 입력",
6232
7070
  editReady: "저장된 테스트 데이터 편집",
6233
- remembered: "테스트 데이터는 이 편집 세션 동안 유지되며 워크플로를 변경하지 않습니다.",
7071
+ remembered: "현재 편집 세션에서만 저장됩니다.",
6234
7072
  startTest: "테스트 시작",
6235
7073
  testTrigger: "테스트 {{name}}",
6236
7074
  triggerCount: "시작 노드 {{count}}개",
6237
- triggerDataHint: " Trigger의 샘플 데이터를 입력한 뒤 테스트를 시작하세요.",
6238
- triggerData: "트리거 데이터",
6239
- close: "실행 입력 닫기",
7075
+ close: "테스트 데이터 닫기",
6240
7076
  description: "이번 실행에 필요한 데이터를 입력하세요. 워크플로는 변경되지 않습니다.",
6241
7077
  invalid: "실행하기 전에 나열된 모든 입력에 유효한 JSON 값을 설정하세요.",
6242
- title: "실행 입력",
7078
+ title: "테스트 데이터",
6243
7079
  trigger: "시작 노드",
6244
7080
  selectTrigger: "시작 노드 선택",
6245
- noTrigger: "실행하기 전에 시작 노드로 사용할 트리거를 추가하세요."
7081
+ noTrigger: "실행하기 전에 시작 노드로 사용할 트리거를 추가하세요.",
7082
+ triggerSubtitle: "트리거 · {{name}}"
6246
7083
  },
6247
7084
  workspace: {
6248
7085
  check: "현재 초안 검사",
@@ -6346,7 +7183,7 @@ var re = (e, t = {}, n = "") => {
6346
7183
  scheduleExpression: "Cron 표현식",
6347
7184
  scheduleTimezone: "시간대",
6348
7185
  scheduleMissing: "설정된 일정이 없습니다",
6349
- scheduleTestHint: "초안 테스트는 즉시 실행됩니다. 게시 후에는 설정한 일정에 따라 자동으로 실행됩니다."
7186
+ scheduleTestHint: "테스트는 {}를, 라이브 실행은 { scheduledAt }을 전송합니다."
6350
7187
  },
6351
7188
  triggerConfig: {
6352
7189
  configuration: "구성",
@@ -6381,7 +7218,7 @@ var re = (e, t = {}, n = "") => {
6381
7218
  webhookSummary: "HTTP 요청이 도착하면 실행",
6382
7219
  webhookDescription: "생성된 HTTP 엔드포인트로 JSON 객체를 수신합니다."
6383
7220
  },
6384
- triggerSummary: { manualSummary: "실행을 클릭하면 여기에서 시작합니다." },
7221
+ triggerSummary: { manualPayloadHint: "다운스트림 노드는 객체({})를 받습니다." },
6385
7222
  conditionEditor: {
6386
7223
  addCondition: "조건 추가",
6387
7224
  configPanelTitle: "설정",
@@ -6425,8 +7262,11 @@ var re = (e, t = {}, n = "") => {
6425
7262
  nodeInput: {
6426
7263
  literal: "고정 값",
6427
7264
  variable: "Variable",
7265
+ noVariables: "선언된 Variable이 없습니다",
7266
+ noUpstreamNodes: "사용 가능한 데이터가 없습니다",
7267
+ unsupported: "지원되지 않음",
6428
7268
  mode: "타입",
6429
- connected: "상위 입력 소스에 연결되어 있습니다. 입력 소스에서 변경할 수 있습니다."
7269
+ connected: "데이터가 선택되었습니다. 데이터 선택에서 변경할 수 있습니다."
6430
7270
  },
6431
7271
  history: {
6432
7272
  undo: "실행 취소",
@@ -6788,151 +7628,7 @@ var re = (e, t = {}, n = "") => {
6788
7628
  publishUpdate: "Опубликовать изменения",
6789
7629
  deleteDescription: "Поток и история запусков будут удалены, рабочие триггеры остановлены. Это действие нельзя отменить."
6790
7630
  },
6791
- inspector: {
6792
- account: {
6793
- required: "Требуется подключение",
6794
- addConnection: "Добавить Connection",
6795
- authorizationPending: "Завершите авторизацию на странице Connection, затем вернитесь сюда, чтобы обновить этот аккаунт.",
6796
- chooseAccount: "Выберите аккаунт",
6797
- connectBeforeRun: "Подключите {{service}}, чтобы этот узел можно было запускать и публиковать.",
6798
- connectService: "Подключить {{service}}",
6799
- connection: "Connection",
6800
- loading: "Загрузка Connection…",
6801
- missing: "Закреплённый Connection больше не существует. Выберите другой аккаунт или добавьте Connection.",
6802
- pinned: "Этот узел останется закреплён за этим Connection, даже если изменится Connection по умолчанию для команды.",
6803
- refreshFailed: "Не удалось обновить Connection.",
6804
- retry: "Повторить",
6805
- status: {
6806
- disconnected: "Этот Connection отключён. Подключите его заново или выберите другой аккаунт.",
6807
- error: "В этом Connection ошибка. Исправьте её или выберите другой аккаунт.",
6808
- reauth_required: "Этому Connection нужна повторная авторизация. Подключите его заново или выберите другой аккаунт."
6809
- },
6810
- statusUnavailable: "Статус Connection недоступен для {{action}}.",
6811
- teamDefault: "По умолчанию для команды",
6812
- title: "Аккаунт",
6813
- unavailable: "недоступно"
6814
- },
6815
- close: "Закрыть инспектор",
6816
- configurationRequired: "Требуется настройка",
6817
- diagnostics: "Диагностика",
6818
- errors: {
6819
- jsonObject: "{{label}} должен быть JSON-объектом.",
6820
- portDefinitions: "Введите корректные определения портов."
6821
- },
6822
- node: {
6823
- nameDuplicate: "Узел с таким именем уже существует в этом графе.",
6824
- nameEmpty: "Имя узла не может быть пустым.",
6825
- timeout: "Время ожидания (мс)",
6826
- timeoutError: "Время ожидания должно быть положительным целым числом в миллисекундах.",
6827
- title: "Настройки узла",
6828
- description: "Назначение",
6829
- describe: "Опишите назначение этого шага.",
6830
- icon: "Значок",
6831
- name: "Заголовок"
6832
- },
6833
- selectNode: "Выберите один узел черновика, чтобы просмотреть и изменить его.",
6834
- subflow: {
6835
- definition: "Определение Subflow",
6836
- inputPorts: "Входные порты (JSON)",
6837
- open: "Открыть Subflow",
6838
- outputPorts: "Выходные порты и источники (JSON)",
6839
- referenced: "Связанный Subflow",
6840
- save: "Сохранить Subflow"
6841
- },
6842
- task: {
6843
- chatText: "Текст чата",
6844
- codeDirty: "Не сохранено",
6845
- codeFailed: "Не удалось сохранить",
6846
- codeSaved: "Сохранено",
6847
- codeSaving: "Сохранение…",
6848
- connectorAction: "Действие Connector",
6849
- definition: "Определение задачи",
6850
- discardCode: "Отменить изменения",
6851
- editorLoading: "Загрузка редактора…",
6852
- editorUnavailable: "Не удалось загрузить редактор кода.",
6853
- inputPorts: "Входные порты",
6854
- importsFromSource: "Зависимости модулей Flow определяются по статическим import-выражениям.",
6855
- javascriptModule: "Код",
6856
- missing: "Указанная задача не существует.",
6857
- outputPorts: "Выходные порты",
6858
- responseMode: "Режим ответа",
6859
- source: "Исходный код",
6860
- structuredJson: "Структурированный JSON",
6861
- retrySave: "Повторить сохранение",
6862
- additionalInputs: "Дополнительные входы"
6863
- },
6864
- wait: {
6865
- approval: "Одобрить или отклонить",
6866
- changeNotification: "Изменить",
6867
- chooseNotification: "Добавить уведомление",
6868
- chooseNotificationTitle: "Выбрать уведомление",
6869
- continue: "Продолжить",
6870
- inputs: "Параметры",
6871
- inputsInvalid: "Заполните все обязательные параметры уведомления.",
6872
- inputsLoading: "Загрузка параметров уведомления…",
6873
- messageHandle: "Записать сообщение во вход",
6874
- mode: "Обработка",
6875
- notificationTask: "Уведомление",
6876
- notificationUnavailable: "Уведомление недоступно. Выберите его снова.",
6877
- prompt: "Запрос",
6878
- promptError: "Запрос должен содержать от 1 до 1 000 символов.",
6879
- removeNotification: "Удалить уведомление"
6880
- },
6881
- title: "Инспектор",
6882
- sources: {
6883
- title: "Источники входных данных",
6884
- local: "Локальное значение / переменная",
6885
- unavailable: "Источник может не завершиться до этого узла, либо его тип несовместим."
6886
- },
6887
- actions: {
6888
- title: "Действия, доступные коду",
6889
- search: "Поиск действий",
6890
- description: "Выберите действия и аккаунты, доступные этому коду.",
6891
- empty: "Подходящих действий нет.",
6892
- remove: "Удалить",
6893
- default: "Аккаунт по умолчанию",
6894
- defaultHint: "Используется, если при вызове не указан аккаунт.",
6895
- removeAction: "Удалить действие",
6896
- explicit: "Выбирать явно в коде",
6897
- connect: "Подключить аккаунт",
6898
- refresh: "Обновить аккаунты",
6899
- aliases: "Обновить сохранённые псевдонимы",
6900
- add: "Добавить действие",
6901
- cancel: "Отмена",
6902
- loading: "Поиск…",
6903
- needsAccount: "Подключите аккаунт",
6904
- accounts: "Аккаунты: {{count}}",
6905
- public: "Без аккаунта",
6906
- allowed: "Разрешённые аккаунты",
6907
- unavailable: "Недоступен",
6908
- details: "Данные подключений",
6909
- example: "Пример вызова",
6910
- syntax: "Синтаксис вызова",
6911
- nested: "Через провайдера",
6912
- fullId: "Полный ID",
6913
- copy: "Копировать",
6914
- copied: "Скопировано",
6915
- copyError: "Не удалось скопировать. Выделите код и скопируйте вручную.",
6916
- introDescription: "При необходимости добавьте действия для вызова внешних приложений через {{context}}.",
6917
- chooseAccounts: "Управление аккаунтами"
6918
- },
6919
- comment: {
6920
- source: "Показать исходный текст",
6921
- preview: "Предпросмотр",
6922
- duplicate: "Дублировать",
6923
- delete: "Удалить"
6924
- },
6925
- ports: {
6926
- reorder: "Изменить порядок {{name}}",
6927
- reorderHint: "Перетащите внутри группы или используйте стрелки вверх / вниз при фокусе.",
6928
- moved: "{{name}} перемещён на позицию {{position}}.",
6929
- groupSettings: "Настройки группы",
6930
- connected: "Подключено",
6931
- columnName: "Имя",
6932
- columnType: "Тип",
6933
- columnValue: "Значение"
6934
- }
6935
- },
7631
+ inspector: /* @__PURE__ */ JSON.parse("{\"account\":{\"required\":\"Требуется подключение аккаунта\",\"addConnection\":\"Добавить Connection\",\"authorizationPending\":\"Завершите авторизацию на странице Connection, затем вернитесь сюда, чтобы обновить этот аккаунт.\",\"chooseAccount\":\"Выберите аккаунт\",\"connectBeforeRun\":\"Подключите {{service}}, чтобы этот узел можно было запускать и публиковать.\",\"connectService\":\"Подключить {{service}}\",\"connection\":\"Connection\",\"loading\":\"Загрузка Connection…\",\"missing\":\"Закреплённый Connection больше не существует. Выберите другой аккаунт или добавьте Connection.\",\"pinned\":\"Этот узел останется закреплён за этим Connection, даже если изменится Connection по умолчанию для команды.\",\"refreshFailed\":\"Не удалось обновить Connection.\",\"retry\":\"Повторить\",\"status\":{\"disconnected\":\"Этот Connection отключён. Подключите его заново или выберите другой аккаунт.\",\"error\":\"В этом Connection ошибка. Исправьте её или выберите другой аккаунт.\",\"reauth_required\":\"Этому Connection нужна повторная авторизация. Подключите его заново или выберите другой аккаунт.\"},\"statusUnavailable\":\"Статус Connection недоступен для {{action}}.\",\"teamDefault\":\"По умолчанию для команды\",\"title\":\"Аккаунт\",\"unavailable\":\"недоступно\"},\"close\":\"Закрыть инспектор\",\"configurationRequired\":\"Требуется настройка\",\"diagnostics\":\"Диагностика\",\"errors\":{\"jsonObject\":\"{{label}} должен быть JSON-объектом.\",\"portDefinitions\":\"Введите корректные определения портов.\"},\"node\":{\"nameDuplicate\":\"Узел с таким именем уже существует в этом графе.\",\"nameEmpty\":\"Имя узла не может быть пустым.\",\"timeout\":\"Время ожидания (мс)\",\"timeoutError\":\"Время ожидания должно быть положительным целым числом в миллисекундах.\",\"title\":\"Настройки узла\",\"description\":\"Назначение\",\"describe\":\"Опишите назначение этого шага.\",\"icon\":\"Значок\",\"name\":\"Заголовок\"},\"selectNode\":\"Выберите один узел черновика, чтобы просмотреть и изменить его.\",\"locateNode\":\"Найти {{name}} на холсте\",\"subflow\":{\"definition\":\"Определение Subflow\",\"inputPorts\":\"Входные порты (JSON)\",\"open\":\"Открыть Subflow\",\"outputPorts\":\"Выходные порты и источники (JSON)\",\"referenced\":\"Связанный Subflow\",\"save\":\"Сохранить Subflow\"},\"task\":{\"chatText\":\"Текст чата\",\"codeDirty\":\"Не сохранено\",\"codeFailed\":\"Не удалось сохранить\",\"codeSaved\":\"Сохранено\",\"codeSaving\":\"Сохранение…\",\"connectorAction\":\"Действие Connector\",\"definition\":\"Определение задачи\",\"discardCode\":\"Отменить изменения\",\"editorLoading\":\"Загрузка редактора…\",\"editorUnavailable\":\"Не удалось загрузить редактор кода.\",\"inputPorts\":\"Входные порты\",\"importsFromSource\":\"Зависимости модулей Flow определяются по статическим import-выражениям.\",\"javascriptModule\":\"Код\",\"missing\":\"Указанная задача не существует.\",\"outputPorts\":\"Выходные порты\",\"responseMode\":\"Режим ответа\",\"source\":\"Исходный код\",\"structuredJson\":\"Структурированный JSON\",\"retrySave\":\"Повторить сохранение\",\"additionalInputs\":\"Дополнительные входы\"},\"wait\":{\"approval\":\"Одобрить или отклонить\",\"changeNotification\":\"Изменить\",\"continue\":\"Продолжить\",\"mode\":\"Обработка\",\"inputsLoading\":\"Загрузка параметров уведомления…\",\"notificationDescription\":\"Подключите выход уведомления, чтобы отправить сообщение или выполнить другие шаги во время ожидания.\",\"prompt\":\"Запрос\",\"promptError\":\"Запрос должен содержать от 1 до 1 000 символов.\"},\"title\":\"Инспектор\",\"sources\":{\"loading\":\"Загрузка доступных данных…\",\"loadFailed\":\"Не удалось загрузить источники. Откройте меню ещё раз.\",\"checkFailed\":\"Не удалось проверить этот источник.\",\"title\":\"Выбрать данные\",\"sourceMissing\":\"«{{source}}» не найден. Выберите снова.\",\"outputMissing\":\"«{{output}}» не найден в «{{source}}». Выберите снова.\",\"notReady\":\"К моменту выполнения этого шага у «{{source}} {{handle}}» может ещё не быть значения.\",\"sourceConflict\":\"Эти поля могут иметь значения одновременно: {{sources}}. Здесь можно использовать только одно.\",\"schemaIncompatible\":\"Формат данных не совпадает.\",\"schemaPathIncompatible\":\"Формат данных «{{path}}» не совпадает.\",\"schemaCompareFailed\":\"Не удалось проверить формат данных. Проверьте схему JSON.\",\"binaryIncompatible\":\"Двоичные данные здесь использовать нельзя.\",\"artifactIncompatible\":\"Файловые данные здесь использовать нельзя.\",\"nullableIncompatible\":\"Требуется значение, но выбранное поле может быть пустым.\",\"typeIncompatible\":\"Ожидается {{target}}, но выбранное поле имеет тип {{source}}.\",\"propertyTypeIncompatible\":\"«{{path}}» должно иметь тип {{target}}, но имеет тип {{source}}.\",\"requiredIncompatible\":\"Обязательное свойство «{{property}}» может отсутствовать.\",\"enumIncompatible\":\"Некоторые возможные значения не принимаются: {{values}}.\",\"constIncompatible\":\"Принимается только {{target}}, но выбранное поле всегда равно {{source}}.\",\"constraintSubject\":\"«{{path}}» \",\"minLength\":\"{{subject}}должно содержать не менее {{value}} символов.\",\"maxLength\":\"{{subject}}должно содержать не более {{value}} символов.\",\"pattern\":\"{{subject}}должно соответствовать {{value}}.\",\"minimum\":\"{{subject}}не может быть меньше {{value}}.\",\"exclusiveMinimum\":\"{{subject}}должно быть больше {{value}}.\",\"maximum\":\"{{subject}}не может быть больше {{value}}.\",\"exclusiveMaximum\":\"{{subject}}должно быть меньше {{value}}.\",\"multipleOf\":\"{{subject}}должно быть кратно {{value}}.\",\"minItems\":\"{{subject}}должно содержать не менее {{value}} элементов.\",\"maxItems\":\"{{subject}}должно содержать не более {{value}} элементов.\",\"minProperties\":\"{{subject}}должно содержать не менее {{value}} свойств.\",\"maxProperties\":\"{{subject}}должно содержать не более {{value}} свойств.\",\"integer\":\"Целое число\",\"unknownType\":\"неизвестный тип\",\"typeSeparator\":\" или \"},\"actions\":{\"title\":\"Действия, доступные коду\",\"search\":\"Поиск действий\",\"description\":\"Выберите действия и аккаунты, доступные этому коду.\",\"empty\":\"Подходящих действий нет.\",\"remove\":\"Удалить\",\"default\":\"Аккаунт по умолчанию\",\"defaultHint\":\"Используется, если при вызове не указан аккаунт.\",\"removeAction\":\"Удалить действие\",\"explicit\":\"Выбирать явно в коде\",\"connect\":\"Подключить аккаунт\",\"refresh\":\"Обновить аккаунты\",\"aliases\":\"Обновить сохранённые псевдонимы\",\"add\":\"Добавить действие\",\"cancel\":\"Отмена\",\"loading\":\"Поиск…\",\"needsAccount\":\"Подключите аккаунт\",\"accounts\":\"Аккаунты: {{count}}\",\"public\":\"Без аккаунта\",\"allowed\":\"Разрешённые аккаунты\",\"unavailable\":\"Недоступен\",\"details\":\"Данные подключений\",\"example\":\"Пример вызова\",\"syntax\":\"Синтаксис вызова\",\"nested\":\"Через провайдера\",\"fullId\":\"Полный ID\",\"copy\":\"Копировать\",\"copied\":\"Скопировано\",\"copyError\":\"Не удалось скопировать. Выделите код и скопируйте вручную.\",\"introDescription\":\"При необходимости добавьте действия для вызова внешних приложений через {{context}}.\",\"chooseAccounts\":\"Управление аккаунтами\"},\"comment\":{\"source\":\"Исходный код\",\"preview\":\"Markdown\"},\"ports\":{\"reorder\":\"Изменить порядок {{name}}\",\"reorderHint\":\"Перетащите внутри группы или используйте стрелки вверх / вниз при фокусе.\",\"moved\":\"{{name}} перемещён на позицию {{position}}.\",\"groupSettings\":\"Настройки группы\",\"connected\":\"Подключено\",\"sort\":\"Изменить порядок\",\"finishSorting\":\"Готово\",\"inputsTitle\":\"Входы\",\"outputsTitle\":\"Выходы\",\"valuesTitle\":\"Значения\",\"columnHandle\":\"Handle\",\"columnName\":\"Имя\",\"columnType\":\"Тип\",\"columnValue\":\"Значение\"}}"),
6936
7632
  language: { label: "Язык" },
6937
7633
  notice: {
6938
7634
  connectorUnconfigured: "Для этого развертывания Connector не настроен.",
@@ -7246,8 +7942,10 @@ var re = (e, t = {}, n = "") => {
7246
7942
  "binding-missing": "Привязка «{{bindingId}}» не существует.",
7247
7943
  cycle: "Граф содержит цикл зависимостей между узлами: {{nodes}}.",
7248
7944
  "flow-input-incompatible": "Вход Flow «{{input}}» несовместим с этим входом.",
7945
+ "flow-input-schema-incompatible": "Вход Flow «{{input}}» нельзя использовать для «{{target}}»: {{issue}}",
7249
7946
  "input-missing": "Узел «{{nodeId}}» не предоставляет вход «{{handle}}».",
7250
7947
  "node-output-incompatible": "Выход «{{output}}» вышестоящего узла «{{nodeId}}» несовместим с этим входом.",
7948
+ "node-output-schema-incompatible": "«{{source}}» нельзя использовать для «{{target}}»: {{issue}}",
7251
7949
  "schema-unsupported": "Схемы Runtime Ref не поддерживаются.",
7252
7950
  "source-missing": {
7253
7951
  "flow-input": "Вход Flow «{{input}}» не существует в этом графе.",
@@ -7259,6 +7957,7 @@ var re = (e, t = {}, n = "") => {
7259
7957
  task: "Task «{{taskId}}» не существует."
7260
7958
  },
7261
7959
  "subflow-output-incompatible": "Источник несовместим с выходом Subflow «{{output}}».",
7960
+ "subflow-output-schema-incompatible": "Формат данных выхода Subflow «{{output}}» не совпадает: {{issue}}",
7262
7961
  "trigger-not-allowed": "Узлы Trigger разрешены только во Flow.",
7263
7962
  "variable-incompatible": "Привязка Variable «{{bindingId}}» несовместима с этим входом.",
7264
7963
  "variable-source-mixed": "Variable должна быть единственным источником входа."
@@ -7317,19 +8016,18 @@ var re = (e, t = {}, n = "") => {
7317
8016
  runInput: {
7318
8017
  editMissing: "Добавить тестовые данные",
7319
8018
  editReady: "Изменить сохранённые тестовые данные",
7320
- remembered: "Тестовые данные сохраняются в течение сеанса редактирования и не изменяют workflow.",
8019
+ remembered: "Сохраняются только в текущем сеансе редактирования.",
7321
8020
  startTest: "Запустить тест",
7322
8021
  testTrigger: "Тест {{name}}",
7323
8022
  triggerCount: "Стартовых узлов: {{count}}",
7324
- triggerDataHint: "Введите пример данных для этого Trigger, затем запустите тест.",
7325
- triggerData: "Данные триггера",
7326
- close: "Закрыть входные данные запуска",
8023
+ close: "Закрыть тестовые данные",
7327
8024
  description: "Введите данные для этого запуска. Рабочий процесс не изменится.",
7328
8025
  invalid: "Перед запуском задайте всем перечисленным входам корректные значения JSON.",
7329
- title: "Входные данные запуска",
8026
+ title: "Тестовые данные",
7330
8027
  trigger: "Начальный узел",
7331
8028
  selectTrigger: "Выберите начальный узел",
7332
- noTrigger: "Перед запуском добавьте триггер в качестве начального узла."
8029
+ noTrigger: "Перед запуском добавьте триггер в качестве начального узла.",
8030
+ triggerSubtitle: "Триггер · {{name}}"
7333
8031
  },
7334
8032
  workspace: {
7335
8033
  check: "Проверить текущий черновик",
@@ -7433,7 +8131,7 @@ var re = (e, t = {}, n = "") => {
7433
8131
  scheduleExpression: "Cron-выражение",
7434
8132
  scheduleTimezone: "Часовой пояс",
7435
8133
  scheduleMissing: "Расписание не настроено",
7436
- scheduleTestHint: "Тест черновика запускается сразу и выполняется один раз. После публикации рабочий процесс запускается автоматически по расписанию."
8134
+ scheduleTestHint: "Тесты отправляют {}; рабочие запуски отправляют { scheduledAt }."
7437
8135
  },
7438
8136
  triggerConfig: {
7439
8137
  configuration: "Конфигурация",
@@ -7468,7 +8166,7 @@ var re = (e, t = {}, n = "") => {
7468
8166
  webhookSummary: "При получении HTTP-запроса",
7469
8167
  webhookDescription: "Получать JSON-объект через сгенерированный HTTP-адрес."
7470
8168
  },
7471
- triggerSummary: { manualSummary: "Нажмите «Запустить», чтобы начать с этого узла." },
8169
+ triggerSummary: { manualPayloadHint: "Последующие узлы получают пустой объект ({})." },
7472
8170
  conditionEditor: {
7473
8171
  addCondition: "Добавить условие",
7474
8172
  configPanelTitle: "Настройки",
@@ -7512,8 +8210,11 @@ var re = (e, t = {}, n = "") => {
7512
8210
  nodeInput: {
7513
8211
  literal: "Литерал",
7514
8212
  variable: "Variable",
8213
+ noVariables: "Нет объявленных Variable",
8214
+ noUpstreamNodes: "Нет доступных данных",
8215
+ unsupported: "Не поддерживается",
7515
8216
  mode: "Тип",
7516
- connected: "Подключён к источнику данных. Измените его в разделе источников входных данных."
8217
+ connected: "Данные выбраны. Изменить их можно через «Выбрать данные»."
7517
8218
  },
7518
8219
  history: {
7519
8220
  undo: "Отменить",
@@ -7736,7 +8437,7 @@ var re = (e, t = {}, n = "") => {
7736
8437
  },
7737
8438
  inspector: {
7738
8439
  account: {
7739
- required: "Connexion requise",
8440
+ required: "Compte à connecter",
7740
8441
  addConnection: "Ajouter une Connection",
7741
8442
  authorizationPending: "Terminez l'autorisation sur la page Connection, puis revenez ici pour actualiser ce compte.",
7742
8443
  chooseAccount: "Choisir un compte",
@@ -7777,6 +8478,7 @@ var re = (e, t = {}, n = "") => {
7777
8478
  name: "Titre"
7778
8479
  },
7779
8480
  selectNode: "Sélectionnez un nœud du Brouillon pour l'inspecter et le modifier.",
8481
+ locateNode: "Localiser {{name}} sur le canevas",
7780
8482
  subflow: {
7781
8483
  definition: "Définition du Subflow",
7782
8484
  inputPorts: "Ports d'entrée (JSON)",
@@ -7810,25 +8512,50 @@ var re = (e, t = {}, n = "") => {
7810
8512
  wait: {
7811
8513
  approval: "Approuver ou refuser",
7812
8514
  changeNotification: "Changer",
7813
- chooseNotification: "Ajouter une notification",
7814
- chooseNotificationTitle: "Choisir une notification",
7815
8515
  continue: "Continuer",
7816
- inputs: "Paramètres",
7817
- inputsInvalid: "Renseignez tous les paramètres de notification requis.",
7818
- inputsLoading: "Chargement des paramètres de notification…",
7819
- messageHandle: "Écrire le message dans",
7820
8516
  mode: "Traitement",
7821
- notificationTask: "Notification",
7822
- notificationUnavailable: "La notification est indisponible. Choisissez-la à nouveau.",
8517
+ inputsLoading: "Chargement des paramètres de notification…",
8518
+ notificationDescription: "Reliez la sortie de notification pour envoyer un message ou exécuter d’autres étapes pendant l’attente.",
7823
8519
  prompt: "Invite",
7824
- promptError: "L’invite doit contenir entre 1 et 1 000 caractères.",
7825
- removeNotification: "Supprimer la notification"
8520
+ promptError: "L’invite doit contenir entre 1 et 1 000 caractères."
7826
8521
  },
7827
8522
  title: "Inspecteur",
7828
8523
  sources: {
7829
- title: "Sources des entrées",
7830
- local: "Valeur locale / variable",
7831
- unavailable: "Cette source ne termine pas nécessairement avant ce nœud, ou son type est incompatible."
8524
+ loading: "Chargement des données disponibles…",
8525
+ loadFailed: "Impossible de charger les sources. Rouvrez le menu pour réessayer.",
8526
+ checkFailed: "Impossible de vérifier cette source.",
8527
+ title: "Sélectionner des données",
8528
+ sourceMissing: "« {{source}} » est introuvable. Choisissez à nouveau.",
8529
+ outputMissing: "« {{output}} » est introuvable dans « {{source}} ». Choisissez à nouveau.",
8530
+ notReady: "« {{source}} {{handle}} » peut ne pas avoir de valeur lors de cette étape.",
8531
+ sourceConflict: "Ces champs peuvent avoir une valeur en même temps : {{sources}}. Un seul peut être utilisé ici.",
8532
+ schemaIncompatible: "Le format des données ne correspond pas.",
8533
+ schemaPathIncompatible: "Le format de « {{path}} » ne correspond pas.",
8534
+ schemaCompareFailed: "Impossible de vérifier le format. Vérifiez le schéma JSON.",
8535
+ binaryIncompatible: "Les données binaires ne peuvent pas être utilisées ici.",
8536
+ artifactIncompatible: "Les données de fichier ne peuvent pas être utilisées ici.",
8537
+ nullableIncompatible: "Une valeur est requise, mais le champ sélectionné peut être vide.",
8538
+ typeIncompatible: "Le type attendu est {{target}}, mais le champ sélectionné est de type {{source}}.",
8539
+ propertyTypeIncompatible: "« {{path}} » doit être de type {{target}}, mais est de type {{source}}.",
8540
+ requiredIncompatible: "La propriété requise « {{property}} » peut être absente.",
8541
+ enumIncompatible: "Certaines valeurs possibles ne sont pas acceptées : {{values}}.",
8542
+ constIncompatible: "Seul {{target}} est accepté, mais le champ sélectionné vaut toujours {{source}}.",
8543
+ constraintSubject: "« {{path}} » ",
8544
+ minLength: "{{subject}}doit contenir au moins {{value}} caractères.",
8545
+ maxLength: "{{subject}}doit contenir au plus {{value}} caractères.",
8546
+ pattern: "{{subject}}doit correspondre à {{value}}.",
8547
+ minimum: "{{subject}}ne peut pas être inférieur à {{value}}.",
8548
+ exclusiveMinimum: "{{subject}}doit être supérieur à {{value}}.",
8549
+ maximum: "{{subject}}ne peut pas être supérieur à {{value}}.",
8550
+ exclusiveMaximum: "{{subject}}doit être inférieur à {{value}}.",
8551
+ multipleOf: "{{subject}}doit être un multiple de {{value}}.",
8552
+ minItems: "{{subject}}doit contenir au moins {{value}} éléments.",
8553
+ maxItems: "{{subject}}doit contenir au plus {{value}} éléments.",
8554
+ minProperties: "{{subject}}doit contenir au moins {{value}} propriétés.",
8555
+ maxProperties: "{{subject}}doit contenir au plus {{value}} propriétés.",
8556
+ integer: "Entier",
8557
+ unknownType: "type inconnu",
8558
+ typeSeparator: " ou "
7832
8559
  },
7833
8560
  actions: {
7834
8561
  title: "Actions accessibles au code",
@@ -7863,10 +8590,8 @@ var re = (e, t = {}, n = "") => {
7863
8590
  chooseAccounts: "Gérer les comptes"
7864
8591
  },
7865
8592
  comment: {
7866
- source: "Afficher la source",
7867
- preview: "Aperçu",
7868
- duplicate: "Dupliquer",
7869
- delete: "Supprimer"
8593
+ source: "Source",
8594
+ preview: "Markdown"
7870
8595
  },
7871
8596
  ports: {
7872
8597
  reorder: "Réordonner {{name}}",
@@ -7874,6 +8599,12 @@ var re = (e, t = {}, n = "") => {
7874
8599
  moved: "{{name}} déplacé en position {{position}}.",
7875
8600
  groupSettings: "Paramètres du groupe",
7876
8601
  connected: "Connecté",
8602
+ sort: "Réordonner",
8603
+ finishSorting: "Terminer",
8604
+ inputsTitle: "Entrées",
8605
+ outputsTitle: "Sorties",
8606
+ valuesTitle: "Valeurs",
8607
+ columnHandle: "Handle",
7877
8608
  columnName: "Nom",
7878
8609
  columnType: "Type",
7879
8610
  columnValue: "Valeur"
@@ -8192,8 +8923,10 @@ var re = (e, t = {}, n = "") => {
8192
8923
  "binding-missing": "La liaison « {{bindingId}} » n’existe pas.",
8193
8924
  cycle: "Le graphe contient un cycle de dépendances entre les nœuds : {{nodes}}.",
8194
8925
  "flow-input-incompatible": "L’entrée Flow « {{input}} » n’est pas compatible avec cette entrée.",
8926
+ "flow-input-schema-incompatible": "L’entrée Flow « {{input}} » ne peut pas être utilisée pour « {{target}} » : {{issue}}",
8195
8927
  "input-missing": "Le nœud « {{nodeId}} » n’expose pas l’entrée « {{handle}} ».",
8196
8928
  "node-output-incompatible": "La sortie « {{output}} » du nœud en amont « {{nodeId}} » n’est pas compatible avec cette entrée.",
8929
+ "node-output-schema-incompatible": "« {{source}} » ne peut pas être utilisé pour « {{target}} » : {{issue}}",
8197
8930
  "schema-unsupported": "Les schémas Runtime Ref ne sont pas pris en charge.",
8198
8931
  "source-missing": {
8199
8932
  "flow-input": "L’entrée de Flow « {{input}} » n’existe pas dans ce graphe.",
@@ -8205,6 +8938,7 @@ var re = (e, t = {}, n = "") => {
8205
8938
  task: "La Task « {{taskId}} » n’existe pas."
8206
8939
  },
8207
8940
  "subflow-output-incompatible": "Une source n’est pas compatible avec la sortie Subflow « {{output}} ».",
8941
+ "subflow-output-schema-incompatible": "Le format des données de la sortie Subflow « {{output}} » ne correspond pas : {{issue}}",
8208
8942
  "trigger-not-allowed": "Les nœuds Trigger sont uniquement autorisés dans les Flows.",
8209
8943
  "variable-incompatible": "La liaison Variable « {{bindingId}} » n’est pas compatible avec cette entrée.",
8210
8944
  "variable-source-mixed": "Une Variable doit être l’unique source d’une entrée."
@@ -8263,19 +8997,18 @@ var re = (e, t = {}, n = "") => {
8263
8997
  runInput: {
8264
8998
  editMissing: "Ajouter des données de test",
8265
8999
  editReady: "Modifier les données de test enregistrées",
8266
- remembered: "Les données de test sont conservées pendant cette session d’édition et ne modifient pas le workflow.",
9000
+ remembered: "Conservées uniquement pour cette session de modification.",
8267
9001
  startTest: "Démarrer le test",
8268
9002
  testTrigger: "Tester {{name}}",
8269
9003
  triggerCount: "{{count}} nœuds de départ",
8270
- triggerDataHint: "Saisissez des données d’exemple pour ce Trigger, puis démarrez le test.",
8271
- triggerData: "Données du déclencheur",
8272
- close: "Fermer les entrées d'exécution",
9004
+ close: "Fermer les données de test",
8273
9005
  description: "Saisissez les données pour cette exécution. Le workflow ne sera pas modifié.",
8274
9006
  invalid: "Définissez une valeur JSON valide pour chaque entrée listée avant d'exécuter.",
8275
- title: "Entrées d'exécution",
9007
+ title: "Données de test",
8276
9008
  trigger: "Nœud de départ",
8277
9009
  selectTrigger: "Choisir un nœud de départ",
8278
- noTrigger: "Ajoutez un déclencheur comme nœud de départ avant de lancer le flux."
9010
+ noTrigger: "Ajoutez un déclencheur comme nœud de départ avant de lancer le flux.",
9011
+ triggerSubtitle: "Déclencheur · {{name}}"
8279
9012
  },
8280
9013
  workspace: {
8281
9014
  check: "Vérifier le Brouillon actuel",
@@ -8379,7 +9112,7 @@ var re = (e, t = {}, n = "") => {
8379
9112
  scheduleExpression: "Expression Cron",
8380
9113
  scheduleTimezone: "Fuseau horaire",
8381
9114
  scheduleMissing: "Aucune planification configurée",
8382
- scheduleTestHint: "Le test du brouillon s’exécute immédiatement, une seule fois. Après publication, le workflow s’exécute selon le calendrier défini."
9115
+ scheduleTestHint: "Les tests envoient {} ; les exécutions en ligne envoient { scheduledAt }."
8383
9116
  },
8384
9117
  triggerConfig: {
8385
9118
  configuration: "Configuration",
@@ -8414,7 +9147,7 @@ var re = (e, t = {}, n = "") => {
8414
9147
  webhookSummary: "À la réception d'une requête HTTP",
8415
9148
  webhookDescription: "Recevoir un objet JSON via un point de terminaison HTTP généré."
8416
9149
  },
8417
- triggerSummary: { manualSummary: "Cliquez sur Exécuter pour démarrer ici." },
9150
+ triggerSummary: { manualPayloadHint: "Les nœuds en aval reçoivent un objet vide ({})." },
8418
9151
  conditionEditor: {
8419
9152
  addCondition: "Ajouter une condition",
8420
9153
  configPanelTitle: "Configuration",
@@ -8458,8 +9191,11 @@ var re = (e, t = {}, n = "") => {
8458
9191
  nodeInput: {
8459
9192
  literal: "Littéral",
8460
9193
  variable: "Variable",
9194
+ noVariables: "Aucune Variable déclarée",
9195
+ noUpstreamNodes: "Aucune donnée disponible",
9196
+ unsupported: "Non pris en charge",
8461
9197
  mode: "Type",
8462
- connected: "Relié à une source en amont. Modifiez-la dans les sources d’entrée."
9198
+ connected: "Données sélectionnées. Utilisez Sélectionner des données pour les modifier."
8463
9199
  },
8464
9200
  history: {
8465
9201
  undo: "Annuler",
@@ -8668,36 +9404,36 @@ var re = (e, t = {}, n = "") => {
8668
9404
  connectAppHint: "Connector s’ouvre dans un nouvel onglet. Utilisez l’équipe de ce Flow ; la liste sera actualisée à votre retour après la connexion."
8669
9405
  }
8670
9406
  }
8671
- }, le = Object.fromEntries(M.map((e) => [e, {
8672
- ...ce[e],
8673
- ...se[e],
8674
- ...oe[e]
9407
+ }, st = Object.fromEntries(ve.map((e) => [e, {
9408
+ ...ot[e],
9409
+ ...at[e],
9410
+ ...it[e]
8675
9411
  }]));
8676
- function ue(e = "en") {
8677
- return new ae(N([e]), le);
9412
+ function ct(e = "en") {
9413
+ return new rt(ye([e]), st);
8678
9414
  }
8679
9415
  //#endregion
8680
9416
  //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/utils/popups/useTriggerFocusGuards.js
8681
- function de(e, t) {
8682
- let n = F.useRef(null);
9417
+ function lt(e, t) {
9418
+ let n = J.useRef(null);
8683
9419
  return {
8684
9420
  preFocusGuardRef: n,
8685
- handlePreFocusGuardFocus: b((t) => {
8686
- I.flushSync(() => {
8687
- e.setOpen(!1, x(_, t.nativeEvent, t.currentTarget));
8688
- }), w(n.current)?.focus();
9421
+ handlePreFocusGuardFocus: j((t) => {
9422
+ Y.flushSync(() => {
9423
+ e.setOpen(!1, F(M, t.nativeEvent, t.currentTarget));
9424
+ }), S(n.current)?.focus();
8689
9425
  }),
8690
- handleFocusTargetFocus: b((n) => {
9426
+ handleFocusTargetFocus: j((n) => {
8691
9427
  let i = e.select("positionerElement");
8692
- if (i && u(n, i)) e.context.beforeContentFocusGuardRef.current?.focus();
9428
+ if (i && c(n, i)) e.context.beforeContentFocusGuardRef.current?.focus();
8693
9429
  else {
8694
- I.flushSync(() => {
8695
- e.setOpen(!1, x(_, n.nativeEvent, n.currentTarget));
9430
+ Y.flushSync(() => {
9431
+ e.setOpen(!1, F(M, n.nativeEvent, n.currentTarget));
8696
9432
  });
8697
- let a = r(e.context.triggerFocusTargetRef.current || t.current);
8698
- for (; a !== null && h(i, a);) {
9433
+ let a = y(e.context.triggerFocusTargetRef.current || t.current);
9434
+ for (; a !== null && r(i, a);) {
8699
9435
  let e = a;
8700
- if (a = T(a), a === e) break;
9436
+ if (a = _(a), a === e) break;
8701
9437
  }
8702
9438
  a?.focus();
8703
9439
  }
@@ -8706,15 +9442,15 @@ function de(e, t) {
8706
9442
  }
8707
9443
  //#endregion
8708
9444
  //#region src/ui/browser/input-group.tsx
8709
- function fe({ className: e, ...t }) {
8710
- return /* @__PURE__ */ P("div", {
9445
+ function ut({ className: e, ...t }) {
9446
+ return /* @__PURE__ */ q("div", {
8711
9447
  "data-slot": "input-group",
8712
9448
  role: "group",
8713
- className: j("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:outline-none has-disabled:bg-input/50 has-disabled:opacity-50 has-[[data-slot=input-group-control]:focus-visible]:text-field-focus has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:text-field-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[[data-slot][aria-invalid=true]]:ring-3 has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-[var(--ui-control-background,var(--ui-muted))] dark:has-disabled:bg-input/80 dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", e),
9449
+ className: d("group/input-group relative flex h-8 w-full min-w-0 items-center rounded-[var(--ui-control-radius,calc(var(--ui-radius)_+_2px))] border border-input bg-[var(--ui-control-background,var(--ui-muted))] transition-colors outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:outline-none has-disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_50%,transparent))] has-disabled:opacity-[var(--ui-disabled-opacity,0.5)] has-[[data-slot=input-group-control]:focus-visible]:text-field-focus has-[[data-slot][aria-invalid=true]]:has-[[data-slot=input-group-control]:focus-visible]:invalid-text-field-focus has-[[data-slot][aria-invalid=true]]:border-destructive has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:bg-[var(--ui-control-background,var(--ui-muted))] dark:has-disabled:bg-[var(--ui-disabled-background,color-mix(in_srgb,var(--ui-input)_80%,transparent))] has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3 has-[>[data-align=inline-end]]:[&>input]:pr-1.5 has-[>[data-align=inline-start]]:[&>input]:pl-1.5", e),
8714
9450
  ...t
8715
9451
  });
8716
9452
  }
8717
- var pe = i("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
9453
+ var dt = T("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 text-sm font-medium text-muted-foreground select-none group-data-[disabled=true]/input-group:opacity-[var(--ui-disabled-opacity,0.5)] [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
8718
9454
  variants: { align: {
8719
9455
  "inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
8720
9456
  "inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
@@ -8723,25 +9459,196 @@ var pe = i("flex h-auto cursor-text items-center justify-center gap-2 py-1.5 tex
8723
9459
  } },
8724
9460
  defaultVariants: { align: "inline-start" }
8725
9461
  });
8726
- function me({ className: e, align: t = "inline-start", ...n }) {
8727
- return /* @__PURE__ */ P("div", {
9462
+ function ft({ className: e, align: t = "inline-start", ...n }) {
9463
+ return /* @__PURE__ */ q("div", {
8728
9464
  role: "group",
8729
9465
  "data-slot": "input-group-addon",
8730
9466
  "data-align": t,
8731
- className: j(pe({ align: t }), e),
9467
+ className: d(dt({ align: t }), e),
8732
9468
  onClick: (e) => {
8733
9469
  e.target.closest("button") || e.currentTarget.parentElement?.querySelector("input")?.focus();
8734
9470
  },
8735
9471
  ...n
8736
9472
  });
8737
9473
  }
8738
- var he = F.forwardRef(function({ className: e, ...t }, n) {
8739
- return /* @__PURE__ */ P(o, {
9474
+ var pt = J.forwardRef(function({ className: e, ...t }, n) {
9475
+ return /* @__PURE__ */ q(I, {
8740
9476
  ref: n,
8741
9477
  "data-slot": "input-group-control",
8742
- className: j("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:outline-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", e),
9478
+ className: d("flex-1 rounded-none border-0 bg-transparent shadow-none ring-0 focus-visible:outline-none disabled:bg-transparent aria-invalid:ring-0 dark:bg-transparent dark:disabled:bg-transparent", e),
8743
9479
  ...t
8744
9480
  });
9481
+ }), mt = /*#__PURE__*/ J.createContext(void 0);
9482
+ process.env.NODE_ENV !== "production" && (mt.displayName = "SwitchRootContext");
9483
+ function ht() {
9484
+ let e = J.useContext(mt);
9485
+ if (e === void 0) throw Error(process.env.NODE_ENV === "production" ? re(63) : "Base UI: SwitchRootContext is missing. Switch parts must be placed within <Switch.Root>.");
9486
+ return e;
9487
+ }
9488
+ //#endregion
9489
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/switch/root/SwitchRootDataAttributes.js
9490
+ var gt = /*#__PURE__*/ function(e) {
9491
+ return e.checked = "data-checked", e.unchecked = "data-unchecked", e.disabled = "data-disabled", e.readonly = "data-readonly", e.required = "data-required", e.valid = "data-valid", e.invalid = "data-invalid", e.touched = "data-touched", e.dirty = "data-dirty", e.filled = "data-filled", e.focused = "data-focused", e;
9492
+ }({}), _t = {
9493
+ ...f,
9494
+ checked(e) {
9495
+ return e ? { [gt.checked]: "" } : { [gt.unchecked]: "" };
9496
+ }
9497
+ }, vt = /*#__PURE__*/ J.forwardRef(function(e, t) {
9498
+ let { checked: n, className: r, defaultChecked: a, "aria-labelledby": o, form: s, id: c, inputRef: u, name: d, nativeButton: f = !1, onCheckedChange: p, readOnly: m = !1, required: _ = !1, disabled: y = !1, render: b, uncheckedValue: S, value: C, style: T, ...D } = e, { clearErrors: O } = oe(), { state: ee, setTouched: A, setDirty: M, validityData: te, setFilled: N, setFocused: ne, shouldValidateOnChange: P, validationMode: re, disabled: ie, name: se, validation: I } = v(), { labelId: ce } = i(), L = ie || y, R = se ?? d, ue = j(p), z = J.useRef(null), fe = E(z, u, I.inputRef), B = J.useRef(null), me = x(), V = ae({
9499
+ id: c,
9500
+ implicit: !1,
9501
+ controlRef: B
9502
+ }), H = f ? void 0 : V, [U, W] = _e({
9503
+ controlled: n,
9504
+ default: !!a,
9505
+ name: "Switch",
9506
+ state: "checked"
9507
+ });
9508
+ g(B, {
9509
+ id: me,
9510
+ value: U
9511
+ }), de(() => {
9512
+ z.current && N(z.current.checked);
9513
+ }, [z, N]), le(U, () => {
9514
+ O(R), M(U !== te.initialValue), N(U), P() ? I.commit(U) : I.commit(U, !0);
9515
+ });
9516
+ let { getButtonProps: G, buttonRef: K } = k({
9517
+ disabled: L,
9518
+ native: f
9519
+ }), ve = Te(o, ce, z, !f, H), ye = {
9520
+ id: f ? V : me,
9521
+ role: "switch",
9522
+ "aria-checked": U,
9523
+ "aria-readonly": m || void 0,
9524
+ "aria-required": _ || void 0,
9525
+ "aria-labelledby": ve,
9526
+ onFocus() {
9527
+ L || ne(!0);
9528
+ },
9529
+ onBlur() {
9530
+ let e = z.current;
9531
+ !e || L || (A(!0), ne(!1), re === "onBlur" && I.commit(e.checked));
9532
+ },
9533
+ onClick(e) {
9534
+ m || L || (e.preventDefault(), z.current?.dispatchEvent(new PointerEvent("click", {
9535
+ bubbles: !0,
9536
+ shiftKey: e.shiftKey,
9537
+ ctrlKey: e.ctrlKey,
9538
+ altKey: e.altKey,
9539
+ metaKey: e.metaKey
9540
+ })));
9541
+ }
9542
+ }, Y = J.useMemo(() => he({
9543
+ checked: U,
9544
+ disabled: L,
9545
+ form: s,
9546
+ id: H,
9547
+ name: R,
9548
+ required: _,
9549
+ style: R ? w : h,
9550
+ tabIndex: -1,
9551
+ type: "checkbox",
9552
+ "aria-hidden": !0,
9553
+ ref: fe,
9554
+ onChange(e) {
9555
+ if (e.nativeEvent.defaultPrevented) return;
9556
+ if (m) {
9557
+ e.preventDefault();
9558
+ return;
9559
+ }
9560
+ let t = e.currentTarget.checked, n = F(ge, e.nativeEvent);
9561
+ ue?.(t, n), !n.isCanceled && W(t);
9562
+ },
9563
+ onFocus() {
9564
+ B.current?.focus();
9565
+ }
9566
+ }, I.getInputValidationProps, C === void 0 ? pe : { value: C }), [
9567
+ U,
9568
+ L,
9569
+ s,
9570
+ fe,
9571
+ H,
9572
+ R,
9573
+ ue,
9574
+ m,
9575
+ _,
9576
+ W,
9577
+ I,
9578
+ C
9579
+ ]), xe = J.useMemo(() => ({
9580
+ ...ee,
9581
+ checked: U,
9582
+ disabled: L,
9583
+ readOnly: m,
9584
+ required: _
9585
+ }), [
9586
+ ee,
9587
+ U,
9588
+ L,
9589
+ m,
9590
+ _
9591
+ ]), Se = l("span", e, {
9592
+ state: xe,
9593
+ ref: [
9594
+ t,
9595
+ B,
9596
+ K
9597
+ ],
9598
+ props: [
9599
+ ye,
9600
+ I.getValidationProps,
9601
+ D,
9602
+ G
9603
+ ],
9604
+ stateAttributesMapping: _t
9605
+ });
9606
+ return /*#__PURE__*/ be(mt.Provider, {
9607
+ value: xe,
9608
+ children: [
9609
+ Se,
9610
+ !U && R && S !== void 0 && /*#__PURE__*/ q("input", {
9611
+ type: "hidden",
9612
+ form: s,
9613
+ name: R,
9614
+ value: S
9615
+ }),
9616
+ /*#__PURE__*/ q("input", {
9617
+ ...Y,
9618
+ suppressHydrationWarning: !0
9619
+ })
9620
+ ]
9621
+ });
8745
9622
  });
9623
+ process.env.NODE_ENV !== "production" && (vt.displayName = "SwitchRoot");
9624
+ //#endregion
9625
+ //#region ../../node_modules/.bun/@base-ui+react@1.4.1+fa6c2f29eeb10566/node_modules/@base-ui/react/esm/switch/thumb/SwitchThumb.js
9626
+ var yt = /*#__PURE__*/ J.forwardRef(function(e, t) {
9627
+ let { render: n, className: r, style: i, ...a } = e, { state: o } = v(), s = ht(), c = {
9628
+ ...o,
9629
+ ...s
9630
+ };
9631
+ return l("span", e, {
9632
+ state: c,
9633
+ ref: t,
9634
+ stateAttributesMapping: _t,
9635
+ props: a
9636
+ });
9637
+ });
9638
+ process.env.NODE_ENV !== "production" && (yt.displayName = "SwitchThumb");
9639
+ //#endregion
9640
+ //#region src/ui/browser/switch.tsx
9641
+ function bt({ className: e, size: t = "default", ...n }) {
9642
+ return /* @__PURE__ */ q(vt, {
9643
+ "data-slot": "switch",
9644
+ "data-size": t,
9645
+ className: d("peer group/switch relative inline-flex shrink-0 items-center rounded-full border border-transparent transition-[color,background-color,border-color,box-shadow,opacity] outline-none group-has-[:focus-visible]/field-label:border-transparent group-has-[:focus-visible]/field-label:outline-none after:absolute after:-inset-x-3 after:-inset-y-2 focus-visible:outline-2 focus-visible:outline-solid focus-visible:ring-0 focus-visible:aria-invalid:ring-0 focus-visible:outline-offset-1 focus-visible:outline-ring focus-visible:aria-invalid:outline-destructive aria-invalid:border-destructive data-[size=default]:h-[18.4px] data-[size=default]:w-[32px] data-[size=sm]:h-[14px] data-[size=sm]:w-[24px] data-checked:bg-primary data-unchecked:bg-input dark:data-unchecked:bg-input/80 data-disabled:cursor-not-allowed data-disabled:opacity-50", e),
9646
+ ...n,
9647
+ children: /* @__PURE__ */ q(yt, {
9648
+ "data-slot": "switch-thumb",
9649
+ className: "pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 group-data-[size=default]/switch:data-checked:translate-x-[calc(100%-2px)] group-data-[size=sm]/switch:data-checked:translate-x-[calc(100%-2px)] dark:data-checked:bg-primary-foreground group-data-[size=default]/switch:data-unchecked:translate-x-0 group-data-[size=sm]/switch:data-unchecked:translate-x-0 dark:data-unchecked:bg-foreground"
9650
+ })
9651
+ });
9652
+ }
8746
9653
  //#endregion
8747
- export { ue as a, ne as c, R as d, de as i, q as l, me as n, se as o, he as r, ae as s, fe as t, K as u };
9654
+ export { lt as a, rt as c, Ge as d, Z as f, pt as i, et as l, Ie as m, ut as n, ct as o, Re as p, ft as r, at as s, bt as t, qe as u };