@oomol-lab/open-flow 0.1.0-beta.22 → 0.1.0-beta.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/{createResourceDialog-CjuJryCv.js → createResourceDialog-PKbMMpEk.js} +29 -29
- package/dist/browser/event-sources.d.ts +30 -0
- package/dist/browser/{flowChanges-Tg1duLry.js → flowChanges-BUlMz4iC.js} +4236 -3019
- package/dist/browser/{flowWorkspace-CoK10XHY.js → flowWorkspace-DLArN17T.js} +49585 -42617
- package/dist/browser/{i18n-CVBh0Ni1.js → input-group-C2frNYAx.js} +1801 -75
- package/dist/browser/{inputValues-CDiBMKu8.js → inputValues-CcGVt51C.js} +10 -10
- package/dist/browser/licenses.md +60 -0
- package/dist/browser/lite-Cy6aeiL6.js +8538 -0
- package/dist/browser/{markdownContent-BBgH9ZIV.js → markdownContent-SIlWuHve.js} +17 -17
- package/dist/browser/theme.css +45 -5
- package/dist/browser/ui.css +1 -1
- package/dist/browser/ui.d.ts +23 -1
- package/dist/browser/ui.js +59 -27
- package/dist/browser/workbench-contract.d.ts +19 -0
- package/dist/browser/workbench.css +1 -1
- package/dist/browser/workbench.d.ts +1 -0
- package/dist/browser/workbench.js +1176 -734
- package/dist/browser/workbenchSelect-CPRUXKbf.js +6088 -0
- package/dist/common/control-api-conformance.js +273 -232
- package/dist/common/control-api-errors.d.ts +20 -0
- package/dist/common/control-api.d.ts +50 -10
- package/dist/common/control-api.js +899 -661
- package/dist/common/control-requests.d.ts +23 -0
- package/dist/common/control-requests.js +377 -351
- package/dist/common/event-sources.d.ts +50 -0
- package/dist/common/feishu-events.d.ts +20 -0
- package/dist/common/feishu-subscriptions.d.ts +10 -0
- package/dist/common/fr-iv1541dF.js +93 -0
- package/dist/common/integration-trigger.d.ts +4 -0
- package/dist/common/ja-Bq-ZDOD4.js +93 -0
- package/dist/common/ko-Z-k9R2c6.js +93 -0
- package/dist/common/localization.d.ts +2 -0
- package/dist/common/localization.js +37 -1
- package/dist/common/mcp.js +615 -382
- package/dist/common/poll-trigger.d.ts +2 -0
- package/dist/common/provider-triggers.d.ts +4 -0
- package/dist/common/provider-triggers.js +3225 -2692
- package/dist/common/ru-B4gFecYZ.js +93 -0
- package/dist/common/trigger-catalog.d.ts +17 -0
- package/dist/common/trigger-config-options.d.ts +13 -0
- package/dist/common/trigger-localization.d.ts +7 -0
- package/dist/common/zh-CN-ByQ6nYam.js +93 -0
- package/dist/common/zh-TW-QjIarvX9.js +93 -0
- package/package.json +1 -1
- package/dist/browser/useValueChanged-BY05Usw-.js +0 -2944
- package/dist/browser/workbenchSelect-DEmv7SLW.js +0 -11666
|
@@ -1,48 +1,427 @@
|
|
|
1
1
|
import { a as e, l as t, r as n } from "./dist-Dz6Nglsd.js";
|
|
2
|
-
import {
|
|
3
|
-
import { i as
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
c !== r && u(r);
|
|
11
|
-
}), f;
|
|
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";
|
|
7
|
+
//#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;
|
|
12
10
|
}
|
|
13
|
-
function
|
|
14
|
-
let
|
|
15
|
-
|
|
11
|
+
function R(e, t, n) {
|
|
12
|
+
let r = L(e, n);
|
|
13
|
+
return typeof r == "number" ? r : r?.[t];
|
|
16
14
|
}
|
|
17
|
-
function
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
15
|
+
function z(e) {
|
|
16
|
+
return typeof e == "function" ? e() : e;
|
|
17
|
+
}
|
|
18
|
+
function B(e, t) {
|
|
19
|
+
return t || e === "click" || e === "mousedown";
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
//#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 {
|
|
24
|
+
constructor() {
|
|
25
|
+
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;
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
static create() {
|
|
28
|
+
return new e();
|
|
29
|
+
}
|
|
30
|
+
dispose = () => {
|
|
31
|
+
this.openChangeTimeout.clear(), this.restTimeout.clear();
|
|
32
|
+
};
|
|
33
|
+
disposeEffect = () => this.dispose;
|
|
34
|
+
}, H = /* @__PURE__ */ new WeakMap();
|
|
35
|
+
function U(e) {
|
|
36
|
+
if (!e.performedPointerEventsMutation) return;
|
|
37
|
+
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;
|
|
39
|
+
}
|
|
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";
|
|
43
|
+
}
|
|
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;
|
|
47
|
+
}
|
|
48
|
+
//#endregion
|
|
49
|
+
//#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;
|
|
53
|
+
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);
|
|
57
|
+
};
|
|
58
|
+
t ? w.openChangeTimeout.start(t, r) : (w.openChangeTimeout.clear(), r());
|
|
59
|
+
}, [
|
|
60
|
+
u,
|
|
61
|
+
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;
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
w.interactedInside = t?.closest("[aria-haspopup]") != null;
|
|
73
|
+
});
|
|
74
|
+
f(() => {
|
|
75
|
+
r || (w.pointerType = void 0, w.restTimeoutPending = !1, w.interactedInside = !1, N());
|
|
76
|
+
}, [
|
|
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;
|
|
83
|
+
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,
|
|
87
|
+
referenceElement: e,
|
|
88
|
+
floatingElement: t
|
|
89
|
+
}), () => {
|
|
90
|
+
N();
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}, [
|
|
94
|
+
c,
|
|
95
|
+
r,
|
|
96
|
+
a,
|
|
97
|
+
i,
|
|
98
|
+
w,
|
|
99
|
+
A,
|
|
100
|
+
T,
|
|
101
|
+
O,
|
|
102
|
+
N
|
|
103
|
+
]);
|
|
104
|
+
let I = d();
|
|
105
|
+
F.useEffect(() => {
|
|
106
|
+
if (!c) return;
|
|
107
|
+
function e() {
|
|
108
|
+
w.openChangeTimeout.clear(), I.clear(), T?.events.off("floating.closed", r), N();
|
|
109
|
+
}
|
|
110
|
+
function t(e) {
|
|
111
|
+
if (T && O && m(T.nodesRef.current, O).length > 0) {
|
|
112
|
+
T.events.on("floating.closed", r);
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
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);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
N(), k() || M(e);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
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);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
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);
|
|
133
|
+
});
|
|
134
|
+
}, [
|
|
135
|
+
c,
|
|
136
|
+
i,
|
|
137
|
+
n,
|
|
138
|
+
o,
|
|
139
|
+
_,
|
|
140
|
+
k,
|
|
141
|
+
j,
|
|
142
|
+
M,
|
|
143
|
+
N,
|
|
144
|
+
P,
|
|
145
|
+
w,
|
|
146
|
+
T,
|
|
147
|
+
O,
|
|
148
|
+
I
|
|
149
|
+
]);
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
//#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);
|
|
172
|
+
});
|
|
173
|
+
return F.useEffect(() => Y, [Y]), F.useEffect(() => {
|
|
174
|
+
if (!a) return;
|
|
175
|
+
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);
|
|
177
|
+
}
|
|
178
|
+
return i.on("openchange", e), () => {
|
|
179
|
+
i.off("openchange", e);
|
|
180
|
+
};
|
|
181
|
+
}, [
|
|
182
|
+
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;
|
|
190
|
+
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;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
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));
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
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)));
|
|
208
|
+
}
|
|
209
|
+
function i(e) {
|
|
210
|
+
if (H()) {
|
|
211
|
+
X();
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
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();
|
|
221
|
+
let t = m.current;
|
|
222
|
+
k.handler = M.current({
|
|
223
|
+
...a,
|
|
224
|
+
tree: O,
|
|
225
|
+
x: e.clientX,
|
|
226
|
+
y: e.clientY,
|
|
227
|
+
onClose() {
|
|
228
|
+
X(), Y(), L.current && !H() && t === n.select("domReferenceElement") && J(e, !0);
|
|
229
|
+
}
|
|
230
|
+
}), i.addEventListener("mousemove", k.handler), k.handler(e);
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
(k.pointerType !== "touch" || !h(n.select("floatingElement"), e.relatedTarget)) && J(e);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
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));
|
|
237
|
+
}, [
|
|
238
|
+
Y,
|
|
239
|
+
X,
|
|
240
|
+
r,
|
|
241
|
+
N,
|
|
242
|
+
J,
|
|
243
|
+
n,
|
|
244
|
+
a,
|
|
245
|
+
M,
|
|
246
|
+
k,
|
|
247
|
+
w,
|
|
248
|
+
q,
|
|
249
|
+
H,
|
|
250
|
+
K,
|
|
251
|
+
u,
|
|
252
|
+
f,
|
|
253
|
+
P,
|
|
254
|
+
m,
|
|
255
|
+
O,
|
|
256
|
+
L,
|
|
257
|
+
T,
|
|
258
|
+
V
|
|
259
|
+
]), F.useMemo(() => {
|
|
260
|
+
if (!a) return;
|
|
261
|
+
function e(e) {
|
|
262
|
+
k.pointerType = e.pointerType;
|
|
263
|
+
}
|
|
264
|
+
return {
|
|
265
|
+
onPointerDown: e,
|
|
266
|
+
onPointerEnter: e,
|
|
267
|
+
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) {
|
|
271
|
+
let e = n.select("floatingElement");
|
|
272
|
+
if (e) {
|
|
273
|
+
let t = k.handleCloseOptions?.getScope?.() ?? r.ownerDocument.body;
|
|
274
|
+
W(k, {
|
|
275
|
+
scopeElement: t,
|
|
276
|
+
referenceElement: r,
|
|
277
|
+
floatingElement: e
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
}
|
|
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;
|
|
286
|
+
let e = n.select("open");
|
|
287
|
+
!k.blockMouseMove && (!e || o) && n.setOpen(!0, x(p, t, r));
|
|
288
|
+
}
|
|
289
|
+
k.pointerType === "touch" ? I.flushSync(() => {
|
|
290
|
+
l();
|
|
291
|
+
}) : o && a ? l() : (k.restTimeoutPending = !0, k.restTimeout.start(s, l));
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
}, [
|
|
295
|
+
a,
|
|
296
|
+
k,
|
|
297
|
+
H,
|
|
298
|
+
q,
|
|
299
|
+
u,
|
|
300
|
+
n,
|
|
301
|
+
P
|
|
302
|
+
]);
|
|
303
|
+
}
|
|
304
|
+
//#endregion
|
|
305
|
+
//#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) {
|
|
308
|
+
return r >= t != a >= t && e <= (i - n) * (t - r) / (a - r) + n;
|
|
309
|
+
}
|
|
310
|
+
function Q(e, t, n, r, i, a, o, s, c, l) {
|
|
311
|
+
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;
|
|
313
|
+
}
|
|
314
|
+
function te(e, t, n) {
|
|
315
|
+
return e >= n.x && e <= n.x + n.width && t >= n.y && t <= n.y + n.height;
|
|
316
|
+
}
|
|
317
|
+
function $(e, t, n, r, i, a) {
|
|
318
|
+
return e >= Math.min(n, i) && e <= Math.max(n, i) && t >= Math.min(r, a) && t <= Math.max(r, a);
|
|
319
|
+
}
|
|
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;
|
|
328
|
+
}
|
|
329
|
+
function _() {
|
|
330
|
+
n.clear(), a();
|
|
331
|
+
}
|
|
332
|
+
return function(r) {
|
|
333
|
+
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;
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
if (y && C(r.relatedTarget) && h(u, r.relatedTarget)) return;
|
|
343
|
+
function S() {
|
|
344
|
+
return !!(s && m(s.nodesRef.current, o).length > 0);
|
|
345
|
+
}
|
|
346
|
+
function w() {
|
|
347
|
+
S() || _();
|
|
348
|
+
}
|
|
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();
|
|
353
|
+
return;
|
|
354
|
+
}
|
|
355
|
+
let F = !1;
|
|
356
|
+
switch (c) {
|
|
357
|
+
case "top":
|
|
358
|
+
F = $(d, f, j, T.top + 1, M, E.bottom - 1);
|
|
359
|
+
break;
|
|
360
|
+
case "bottom":
|
|
361
|
+
F = $(d, f, j, E.top + 1, M, T.bottom - 1);
|
|
362
|
+
break;
|
|
363
|
+
case "left":
|
|
364
|
+
F = $(d, f, E.right - 1, P, T.left + 1, N);
|
|
365
|
+
break;
|
|
366
|
+
case "right": F = $(d, f, T.right - 1, P, E.left + 1, N);
|
|
367
|
+
}
|
|
368
|
+
if (F) return;
|
|
369
|
+
if (l && !te(d, f, T)) {
|
|
370
|
+
w();
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
if (!y && p(d, f)) {
|
|
374
|
+
w();
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
let I = !1;
|
|
378
|
+
switch (c) {
|
|
379
|
+
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);
|
|
382
|
+
break;
|
|
383
|
+
}
|
|
384
|
+
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);
|
|
387
|
+
break;
|
|
388
|
+
}
|
|
389
|
+
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);
|
|
392
|
+
break;
|
|
393
|
+
}
|
|
394
|
+
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);
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
I ? l || n.start(40, w) : w();
|
|
401
|
+
};
|
|
402
|
+
};
|
|
403
|
+
return r.__options = {
|
|
404
|
+
...e,
|
|
405
|
+
blockPointerEvents: t
|
|
406
|
+
}, r;
|
|
28
407
|
}
|
|
29
408
|
//#endregion
|
|
30
409
|
//#region ../../node_modules/.bun/val-i18n@0.1.14+882451ae40c8d660/node_modules/val-i18n/dist/main.mjs
|
|
31
|
-
var
|
|
32
|
-
for (let [r, i] of Object.entries(e)) typeof i == "string" ? t[n + r] = i :
|
|
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 + ".");
|
|
33
412
|
return t;
|
|
34
|
-
},
|
|
413
|
+
}, ie = (e) => {
|
|
35
414
|
let t = [], n = [], r = /{{(\S+?)}}/gi, i, a = 0;
|
|
36
415
|
for (; i = r.exec(e);) t.push(e.slice(a, i.index), ""), n.push(i[1]), a = i.index + i[0].length;
|
|
37
416
|
return t.push(e.slice(a)), n.length <= 0 ? !1 : (e) => {
|
|
38
417
|
for (let r = n.length - 1; r >= 0; r--) t[r * 2 + 1] = e[n[r]] ?? n[r];
|
|
39
418
|
return t.join("");
|
|
40
419
|
};
|
|
41
|
-
},
|
|
420
|
+
}, ae = class r {
|
|
42
421
|
constructor(r, i, a) {
|
|
43
422
|
this.t = (e, t) => this.t$.get()(e, t), this.fetcher = a?.fetcher;
|
|
44
423
|
let o = /* @__PURE__ */ new Map();
|
|
45
|
-
this.locales$ = t(i), this.lang$ = t(r), this.locale$ = n([this.lang$, this.locales$], ([e, t]) => t[e] || {}), this.a = e(this.locale$,
|
|
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) => {
|
|
46
425
|
if (n) {
|
|
47
426
|
let r = n["@"];
|
|
48
427
|
if (r != null) {
|
|
@@ -57,7 +436,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
57
436
|
}
|
|
58
437
|
if (e[t]) {
|
|
59
438
|
let r = o.get(t);
|
|
60
|
-
if (r ?? o.set(t, r =
|
|
439
|
+
if (r ?? o.set(t, r = ie(e[t])), r) return r(n);
|
|
61
440
|
}
|
|
62
441
|
}
|
|
63
442
|
return e[t] || t;
|
|
@@ -90,7 +469,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
90
469
|
dispose() {
|
|
91
470
|
this.lang$.dispose(), this.t$.dispose(), this.locales$.dispose(), this.locale$.dispose(), this.a.dispose();
|
|
92
471
|
}
|
|
93
|
-
},
|
|
472
|
+
}, oe = {
|
|
94
473
|
en: { valueEditor: {
|
|
95
474
|
invalidJson: "Enter valid JSON.",
|
|
96
475
|
invalidNumber: "Enter a valid number.",
|
|
@@ -127,7 +506,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
127
506
|
nullable: "Allow null",
|
|
128
507
|
group: "Group",
|
|
129
508
|
addGroup: "Add group",
|
|
130
|
-
collapsed: "Collapsed"
|
|
509
|
+
collapsed: "Collapsed",
|
|
510
|
+
options: "Value options for {{name}}",
|
|
511
|
+
hours: "Hours",
|
|
512
|
+
minutes: "Minutes",
|
|
513
|
+
seconds: "Seconds"
|
|
131
514
|
} },
|
|
132
515
|
"zh-CN": { valueEditor: {
|
|
133
516
|
invalidJson: "请输入有效的 JSON。",
|
|
@@ -165,7 +548,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
165
548
|
nullable: "允许空值",
|
|
166
549
|
group: "分组",
|
|
167
550
|
addGroup: "添加分组",
|
|
168
|
-
collapsed: "默认折叠"
|
|
551
|
+
collapsed: "默认折叠",
|
|
552
|
+
options: "{{name}} 的值选项",
|
|
553
|
+
hours: "时",
|
|
554
|
+
minutes: "分",
|
|
555
|
+
seconds: "秒"
|
|
169
556
|
} },
|
|
170
557
|
"zh-TW": { valueEditor: {
|
|
171
558
|
invalidJson: "請輸入有效的 JSON。",
|
|
@@ -203,7 +590,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
203
590
|
nullable: "允許空值",
|
|
204
591
|
group: "群組",
|
|
205
592
|
addGroup: "新增群組",
|
|
206
|
-
collapsed: "預設摺疊"
|
|
593
|
+
collapsed: "預設摺疊",
|
|
594
|
+
options: "{{name}} 的值選項",
|
|
595
|
+
hours: "時",
|
|
596
|
+
minutes: "分",
|
|
597
|
+
seconds: "秒"
|
|
207
598
|
} },
|
|
208
599
|
ja: { valueEditor: {
|
|
209
600
|
invalidJson: "有効な JSON を入力してください。",
|
|
@@ -241,7 +632,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
241
632
|
nullable: "null を許可",
|
|
242
633
|
group: "グループ",
|
|
243
634
|
addGroup: "グループを追加",
|
|
244
|
-
collapsed: "折りたたむ"
|
|
635
|
+
collapsed: "折りたたむ",
|
|
636
|
+
options: "{{name}} の値オプション",
|
|
637
|
+
hours: "時",
|
|
638
|
+
minutes: "分",
|
|
639
|
+
seconds: "秒"
|
|
245
640
|
} },
|
|
246
641
|
ko: { valueEditor: {
|
|
247
642
|
invalidJson: "유효한 JSON을 입력하세요.",
|
|
@@ -279,7 +674,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
279
674
|
nullable: "null 허용",
|
|
280
675
|
group: "그룹",
|
|
281
676
|
addGroup: "그룹 추가",
|
|
282
|
-
collapsed: "접힘"
|
|
677
|
+
collapsed: "접힘",
|
|
678
|
+
options: "{{name}} 값 옵션",
|
|
679
|
+
hours: "시",
|
|
680
|
+
minutes: "분",
|
|
681
|
+
seconds: "초"
|
|
283
682
|
} },
|
|
284
683
|
ru: { valueEditor: {
|
|
285
684
|
invalidJson: "Введите корректный JSON.",
|
|
@@ -317,7 +716,11 @@ var d = (e, t = {}, n = "") => {
|
|
|
317
716
|
nullable: "Разрешить null",
|
|
318
717
|
group: "Группа",
|
|
319
718
|
addGroup: "Добавить группу",
|
|
320
|
-
collapsed: "Свёрнута"
|
|
719
|
+
collapsed: "Свёрнута",
|
|
720
|
+
options: "Параметры значения {{name}}",
|
|
721
|
+
hours: "Часы",
|
|
722
|
+
minutes: "Минуты",
|
|
723
|
+
seconds: "Секунды"
|
|
321
724
|
} },
|
|
322
725
|
fr: { valueEditor: {
|
|
323
726
|
invalidJson: "Saisissez un JSON valide.",
|
|
@@ -355,9 +758,13 @@ var d = (e, t = {}, n = "") => {
|
|
|
355
758
|
nullable: "Autoriser null",
|
|
356
759
|
group: "Groupe",
|
|
357
760
|
addGroup: "Ajouter un groupe",
|
|
358
|
-
collapsed: "Replié"
|
|
761
|
+
collapsed: "Replié",
|
|
762
|
+
options: "Options de valeur pour {{name}}",
|
|
763
|
+
hours: "Heures",
|
|
764
|
+
minutes: "Minutes",
|
|
765
|
+
seconds: "Secondes"
|
|
359
766
|
} }
|
|
360
|
-
},
|
|
767
|
+
}, se = {
|
|
361
768
|
en: {
|
|
362
769
|
jsonViewer: {
|
|
363
770
|
bin: "Binary",
|
|
@@ -792,7 +1199,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
792
1199
|
more: "Plus d'actions"
|
|
793
1200
|
}
|
|
794
1201
|
}
|
|
795
|
-
},
|
|
1202
|
+
}, ce = {
|
|
796
1203
|
en: {
|
|
797
1204
|
addNode: {
|
|
798
1205
|
blocks: "Blocks",
|
|
@@ -814,7 +1221,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
814
1221
|
javascriptDescription: "Create a JavaScript scriptlet for this node.",
|
|
815
1222
|
llmChat: "LLM Chat",
|
|
816
1223
|
llmChatDescription: "Generate a text response from messages and a prompt template.",
|
|
817
|
-
llmStructured: "LLM
|
|
1224
|
+
llmStructured: "LLM JSON",
|
|
818
1225
|
llmStructuredDescription: "Generate structured JSON from messages and a prompt template.",
|
|
819
1226
|
generatedResponse: "Generated response.",
|
|
820
1227
|
subflowDescription: "Add an existing subflow.",
|
|
@@ -827,7 +1234,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
827
1234
|
triggers: "Triggers",
|
|
828
1235
|
value: "Fixed Values",
|
|
829
1236
|
valueDescription: "Set fixed values, such as text and numbers, for downstream nodes to use.",
|
|
830
|
-
wait: "Wait",
|
|
1237
|
+
wait: "Wait for confirmation",
|
|
831
1238
|
waitDescription: "Pause the Run until an operator continues or approves it.",
|
|
832
1239
|
webhook: "Webhook",
|
|
833
1240
|
webhookDescription: "Receive external events through a dedicated HTTP endpoint.",
|
|
@@ -886,7 +1293,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
886
1293
|
noConnections: "No connections are available for this Trigger.",
|
|
887
1294
|
retry: "Retry",
|
|
888
1295
|
search: "Search blocks",
|
|
889
|
-
searchPlaceholder: "Search blocks…"
|
|
1296
|
+
searchPlaceholder: "Search blocks…",
|
|
1297
|
+
catalogRefreshFailed: "Could not refresh the Trigger catalog. Saved results remain available.",
|
|
1298
|
+
resize: "Resize properties panel"
|
|
890
1299
|
},
|
|
891
1300
|
empty: {
|
|
892
1301
|
loadFailedDescription: "Check the API configuration and make sure the deployment endpoint is reachable.",
|
|
@@ -1077,6 +1486,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
1077
1486
|
preview: "Preview",
|
|
1078
1487
|
duplicate: "Duplicate",
|
|
1079
1488
|
delete: "Delete"
|
|
1489
|
+
},
|
|
1490
|
+
ports: {
|
|
1491
|
+
reorder: "Reorder {{name}}",
|
|
1492
|
+
reorderHint: "Drag to reorder within the group, or use Up / Down while focused.",
|
|
1493
|
+
moved: "{{name}} moved to position {{position}}.",
|
|
1494
|
+
groupSettings: "Group settings",
|
|
1495
|
+
connected: "Connected",
|
|
1496
|
+
columnName: "Name",
|
|
1497
|
+
columnType: "Type",
|
|
1498
|
+
columnValue: "Value"
|
|
1080
1499
|
}
|
|
1081
1500
|
},
|
|
1082
1501
|
language: { label: "Language" },
|
|
@@ -1123,7 +1542,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
1123
1542
|
triggerNotFound: "This Trigger does not exist or was deleted. Refresh the Trigger list.",
|
|
1124
1543
|
variableInvalid: "The Variable name or value is invalid. Review it and try again.",
|
|
1125
1544
|
variableLimitReached: "The deployment has reached its Variable limit.",
|
|
1126
|
-
variableNotFound: "This Variable does not exist or was deleted. Refresh the Variable list."
|
|
1545
|
+
variableNotFound: "This Variable does not exist or was deleted. Refresh the Variable list.",
|
|
1546
|
+
connectorConsoleUnconfigured: "The Connector authorization console URL is not configured. Set it in Settings → Connector → Authorization console URL, then try again."
|
|
1127
1547
|
},
|
|
1128
1548
|
flowDeleted: "Deleted {{name}}.",
|
|
1129
1549
|
flowDeleteAccepted: "Deleting {{name}}.",
|
|
@@ -1679,6 +2099,192 @@ var d = (e, t = {}, n = "") => {
|
|
|
1679
2099
|
deleteOne: "Delete 1 node",
|
|
1680
2100
|
pasteOne: "Paste 1 node",
|
|
1681
2101
|
moveOne: "Move 1 node"
|
|
2102
|
+
},
|
|
2103
|
+
linearTrigger: {
|
|
2104
|
+
team: "Team",
|
|
2105
|
+
selectTeam: "Select a Team",
|
|
2106
|
+
connectFirst: "Select a Connection first.",
|
|
2107
|
+
loading: "Loading…",
|
|
2108
|
+
noTeams: "No accessible Teams.",
|
|
2109
|
+
missingTeam: "The selected Team is no longer available. Choose another Team.",
|
|
2110
|
+
loadFailed: "Could not load options.",
|
|
2111
|
+
retry: "Retry",
|
|
2112
|
+
statuses: "Issue statuses",
|
|
2113
|
+
selectTeamFirst: "Select a Team first.",
|
|
2114
|
+
statusHint: "Matches the current status when an Issue changes, not only transitions into it.",
|
|
2115
|
+
allStatuses: "All statuses",
|
|
2116
|
+
selectedCount: "Selected statuses: {{count}}",
|
|
2117
|
+
noStatuses: "No available statuses.",
|
|
2118
|
+
unavailableStatus: "Unavailable status ({{id}})",
|
|
2119
|
+
missingStatuses: "Some selected statuses are no longer available. Remove or replace them."
|
|
2120
|
+
},
|
|
2121
|
+
nodePicker: {
|
|
2122
|
+
actionGroups: {
|
|
2123
|
+
read: "Read actions",
|
|
2124
|
+
write: "Write actions",
|
|
2125
|
+
destructive: "High-risk actions",
|
|
2126
|
+
other: "Other actions"
|
|
2127
|
+
},
|
|
2128
|
+
builtInNodes: "Built-in nodes",
|
|
2129
|
+
configured: "Configured",
|
|
2130
|
+
configuredDescription: "An account is configured and ready to use.",
|
|
2131
|
+
builtInAccount: "Built-in account",
|
|
2132
|
+
builtInAccountDescription: "Uses an account provided by OOMOL. Usage consumes credits.",
|
|
2133
|
+
noSetup: "No setup",
|
|
2134
|
+
noSetupDescription: "Ready to use without configuring an account.",
|
|
2135
|
+
needsSetup: "Needs setup",
|
|
2136
|
+
needsSetupDescription: "Add or reauthorize an account to use these apps.",
|
|
2137
|
+
clearSearch: "Clear search",
|
|
2138
|
+
search: "Search nodes, apps, or actions…",
|
|
2139
|
+
apps: "Apps",
|
|
2140
|
+
searching: "Searching…",
|
|
2141
|
+
browseNodes: "Browse all nodes",
|
|
2142
|
+
backToResults: "Back to search results",
|
|
2143
|
+
back: "Back to all nodes",
|
|
2144
|
+
results: "Search results",
|
|
2145
|
+
builtIn: "Built-in"
|
|
2146
|
+
},
|
|
2147
|
+
eventSources: {
|
|
2148
|
+
required: "Required",
|
|
2149
|
+
optional: "Optional",
|
|
2150
|
+
tenantHint: "The tenant is retrieved automatically from the selected Connection when you save.",
|
|
2151
|
+
secretsHint: "Copy both values from the app’s Events & Callbacks encryption settings. This event source requires encrypted callbacks. When editing, leave a secret blank to keep its current value.",
|
|
2152
|
+
openConsole: "Open Feishu Developer Console",
|
|
2153
|
+
defaultName: "Feishu event source",
|
|
2154
|
+
title: "Event sources",
|
|
2155
|
+
description: "Receive application events once and share them across Flows.",
|
|
2156
|
+
refresh: "Refresh",
|
|
2157
|
+
add: "Add event source",
|
|
2158
|
+
loading: "Loading event sources…",
|
|
2159
|
+
empty: "No event sources yet",
|
|
2160
|
+
emptyDescription: "Connect a Feishu application to start Flows when events occur.",
|
|
2161
|
+
edit: "Edit",
|
|
2162
|
+
disabled: "Disabled",
|
|
2163
|
+
unverified: "Waiting for address verification",
|
|
2164
|
+
ready: "Callback verified",
|
|
2165
|
+
disable: "Disable",
|
|
2166
|
+
enable: "Enable",
|
|
2167
|
+
callback: "Callback URL",
|
|
2168
|
+
originMissing: "Configure the public Integration origin in deployment settings first.",
|
|
2169
|
+
connection: "Connection",
|
|
2170
|
+
lastReceived: "Last event received",
|
|
2171
|
+
never: "No events received",
|
|
2172
|
+
consumers: "Published Flows",
|
|
2173
|
+
noConsumers: "No published Flows use this source.",
|
|
2174
|
+
deleteConfirm: "Delete this event source?",
|
|
2175
|
+
delete: "Delete",
|
|
2176
|
+
cancel: "Cancel",
|
|
2177
|
+
name: "Name",
|
|
2178
|
+
team: "Connector Team",
|
|
2179
|
+
keepSecret: "Leave empty to keep the saved value",
|
|
2180
|
+
events: "Events to receive",
|
|
2181
|
+
eventsHint: "Select events to receive here, and enable the same events and permissions in Feishu. This selection does not configure the Feishu app. Synchronous interactive callbacks are not supported.",
|
|
2182
|
+
manageHint: "Allow this deployment to manage resource subscriptions for this application, including existing subscriptions and automatic cleanup when no published Flow needs them.",
|
|
2183
|
+
save: "Save",
|
|
2184
|
+
invalid: "The event source configuration is invalid. Check its Connection, tenant and required fields.",
|
|
2185
|
+
notFound: "This event source is unavailable for the selected Connection.",
|
|
2186
|
+
conflict: "The source changed or is still in use. Refresh and check the affected Flows and subscriptions.",
|
|
2187
|
+
source: "Event source",
|
|
2188
|
+
noSources: "This Flow’s team has no Feishu event sources yet. Create one here to continue.",
|
|
2189
|
+
loadFailed: "Event sources could not be loaded.",
|
|
2190
|
+
searchEvents: "Search by name or event ID",
|
|
2191
|
+
customEvent: "Add custom event type",
|
|
2192
|
+
addCustom: "Add",
|
|
2193
|
+
noEventMatches: "No matching events",
|
|
2194
|
+
chooseEvents: "Select at least one event",
|
|
2195
|
+
customInvalid: "Enter a valid asynchronous event ID.",
|
|
2196
|
+
sourceEventsHint: "Only events allowed by the selected source are available.",
|
|
2197
|
+
eventUnavailable: "This event is not allowed by the selected source. Remove it or update the source.",
|
|
2198
|
+
eventGroups: {
|
|
2199
|
+
messages: "Messages",
|
|
2200
|
+
documents: "Documents",
|
|
2201
|
+
base: "Base",
|
|
2202
|
+
calendar: "Calendar",
|
|
2203
|
+
approval: "Approvals",
|
|
2204
|
+
contacts: "Contacts",
|
|
2205
|
+
custom: "Custom events"
|
|
2206
|
+
},
|
|
2207
|
+
eventNames: {
|
|
2208
|
+
im_message_receive_v1: "Message received",
|
|
2209
|
+
im_message_recalled_v1: "Message recalled",
|
|
2210
|
+
im_message_reaction_created_v1: "Reaction added",
|
|
2211
|
+
im_chat_member_bot_added_v1: "Bot added to group",
|
|
2212
|
+
drive_file_edit_v1: "Document edited",
|
|
2213
|
+
drive_file_title_updated_v1: "Document renamed",
|
|
2214
|
+
drive_file_created_in_folder_v1: "File added to folder",
|
|
2215
|
+
drive_file_deleted_v1: "File deleted",
|
|
2216
|
+
drive_file_bitable_record_changed_v1: "Base records changed",
|
|
2217
|
+
drive_file_bitable_field_changed_v1: "Base fields changed",
|
|
2218
|
+
calendar_calendar_event_changed_v4: "Calendar event changed",
|
|
2219
|
+
calendar_calendar_changed_v4: "Calendar changed",
|
|
2220
|
+
approval_instance_status_changed_v4: "Approval instance status changed",
|
|
2221
|
+
approval_task_status_changed_v4: "Approval task status changed",
|
|
2222
|
+
approval_instance: "Approval instance (legacy)",
|
|
2223
|
+
contact_user_created_v3: "Employee added",
|
|
2224
|
+
contact_user_updated_v3: "Employee updated",
|
|
2225
|
+
contact_user_deleted_v3: "Employee removed"
|
|
2226
|
+
},
|
|
2227
|
+
identityUnavailable: "This Connector does not provide a verified application ID. Upgrade Connector before creating this event source.",
|
|
2228
|
+
selectApp: "Select a Feishu app",
|
|
2229
|
+
configureCallback: "Configure the callback",
|
|
2230
|
+
selectAppHint: "Create a custom enterprise app in Feishu, then select Feishu App Bot in Connector and connect with its App ID and App Secret. Feishu user OAuth connections are not used here. Creating the app does not require a callback URL.",
|
|
2231
|
+
configureCallbackHint: "Get the Verification Token and configure an Encrypt Key under Events & Callbacks → Security Settings in Feishu. Save this form first, then paste the generated URL into Feishu.",
|
|
2232
|
+
feishuApp: "Feishu app (Feishu App Bot)",
|
|
2233
|
+
noApplications: "This team has no active Feishu App Bot connections. Connect an app to continue.",
|
|
2234
|
+
appSourceName: "{{name}} events",
|
|
2235
|
+
resourceManagement: "Resource subscription management",
|
|
2236
|
+
back: "Back",
|
|
2237
|
+
next: "Next",
|
|
2238
|
+
receiving: "Events received",
|
|
2239
|
+
create: "Create event source",
|
|
2240
|
+
created: "Event source created",
|
|
2241
|
+
flowCreateHint: "This event source belongs to the current Flow’s team and can be shared by multiple Flows.",
|
|
2242
|
+
bindFailed: "The event source was created, but could not be selected. Try again.",
|
|
2243
|
+
useSource: "Use this event source",
|
|
2244
|
+
verifyBeforePublish: "You can continue editing this Flow. Verify the callback in Feishu before publishing.",
|
|
2245
|
+
setupCopy: "1. Copy the callback URL",
|
|
2246
|
+
setupFeishu: "2. Configure event subscriptions in Feishu",
|
|
2247
|
+
setupVerify: "3. Return here to check verification",
|
|
2248
|
+
copy: "Copy",
|
|
2249
|
+
copied: "Copied",
|
|
2250
|
+
copyFailed: "Copy failed. Select the URL and copy it manually.",
|
|
2251
|
+
publicCallbackHint: "Feishu must be able to reach this URL over the public internet. Localhost and private addresses will not work.",
|
|
2252
|
+
setupFeishuHint: "Open the app’s Events & Callbacks → Event Configuration. Choose delivery to your server, paste the URL and save. Add the events below and their required permissions, then publish an app version as required by Feishu.",
|
|
2253
|
+
openFeishu: "Open Feishu Developer Console",
|
|
2254
|
+
manualSubscriptionHint: "Selecting events here does not add them to Feishu. Configure each event in the Feishu console.",
|
|
2255
|
+
awaitingVerification: "No callback verification received yet. Finish configuration in Feishu, then check below.",
|
|
2256
|
+
callbackVerified: "Callback verified. Check the source’s receiving status to see whether business events have arrived.",
|
|
2257
|
+
checkingVerification: "Checking…",
|
|
2258
|
+
checkVerification: "Check verification",
|
|
2259
|
+
specifiedChats: "Specific chats (optional)",
|
|
2260
|
+
specifiedChatsHint: "Enter one chat_id per line. Leave empty for all chats the app has permission to receive events from.",
|
|
2261
|
+
subscribeResource: "Subscribe to a specific resource",
|
|
2262
|
+
subscribeResourceHint: "Optional. Publishing will request a Feishu subscription for this resource and restrict this Flow to its events.",
|
|
2263
|
+
managementRequired: "Enable resource subscription management on this event source in Settings first.",
|
|
2264
|
+
incompatibleChats: "The selected events do not support chat filtering. Remove the previous filter.",
|
|
2265
|
+
incompatibleResource: "The configured resource does not match the selected events. Turn off the subscription and select compatible events.",
|
|
2266
|
+
removeFilter: "Remove filter",
|
|
2267
|
+
documentType: "Document type",
|
|
2268
|
+
documentTypes: {
|
|
2269
|
+
doc: "Legacy document",
|
|
2270
|
+
docx: "Document",
|
|
2271
|
+
sheet: "Spreadsheet",
|
|
2272
|
+
bitable: "Base",
|
|
2273
|
+
file: "File",
|
|
2274
|
+
folder: "Folder"
|
|
2275
|
+
},
|
|
2276
|
+
resourceIds: {
|
|
2277
|
+
document: "Document token",
|
|
2278
|
+
calendar: "Calendar ID",
|
|
2279
|
+
approval: "Approval definition code"
|
|
2280
|
+
},
|
|
2281
|
+
resourceHints: {
|
|
2282
|
+
document: "Enter the document or Base token, not its full URL.",
|
|
2283
|
+
calendar: "Enter the calendar ID whose event changes you want to receive.",
|
|
2284
|
+
approval: "Enter the approval definition code, not an instance ID. Only legacy approval business events are supported."
|
|
2285
|
+
},
|
|
2286
|
+
connectApp: "Connect Feishu App Bot",
|
|
2287
|
+
connectAppHint: "Connector opens in a new tab. Use this Flow’s team; the list refreshes automatically when you return after connecting."
|
|
1682
2288
|
}
|
|
1683
2289
|
},
|
|
1684
2290
|
"zh-CN": {
|
|
@@ -1702,7 +2308,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
1702
2308
|
javascriptDescription: "为此节点创建 JavaScript scriptlet。",
|
|
1703
2309
|
llmChat: "LLM 对话",
|
|
1704
2310
|
llmChatDescription: "根据消息和提示词模板生成文本回复。",
|
|
1705
|
-
llmStructured: "LLM
|
|
2311
|
+
llmStructured: "LLM JSON",
|
|
1706
2312
|
llmStructuredDescription: "根据消息和提示词模板生成结构化 JSON。",
|
|
1707
2313
|
generatedResponse: "生成的回复。",
|
|
1708
2314
|
subflowDescription: "添加已有的 Subflow。",
|
|
@@ -1715,7 +2321,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
1715
2321
|
triggers: "触发器",
|
|
1716
2322
|
value: "固定值",
|
|
1717
2323
|
valueDescription: "设置固定的文本、数字等值,供下游节点使用。",
|
|
1718
|
-
wait: "
|
|
2324
|
+
wait: "等待确认",
|
|
1719
2325
|
waitDescription: "暂停 Run,直到 Operator 继续、审批或拒绝。",
|
|
1720
2326
|
webhook: "Webhook",
|
|
1721
2327
|
webhookDescription: "通过专属 HTTP 入口接收外部事件。",
|
|
@@ -1774,7 +2380,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
1774
2380
|
noConnections: "这个 Trigger 没有可用的 Connection。",
|
|
1775
2381
|
retry: "重试",
|
|
1776
2382
|
search: "搜索节点",
|
|
1777
|
-
searchPlaceholder: "搜索节点…"
|
|
2383
|
+
searchPlaceholder: "搜索节点…",
|
|
2384
|
+
catalogRefreshFailed: "无法刷新触发器列表,仍可使用已缓存的结果。",
|
|
2385
|
+
resize: "调整属性面板宽度"
|
|
1778
2386
|
},
|
|
1779
2387
|
empty: {
|
|
1780
2388
|
loadFailedDescription: "请检查 API 配置,并确认部署服务可访问。",
|
|
@@ -1965,6 +2573,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
1965
2573
|
preview: "预览",
|
|
1966
2574
|
duplicate: "克隆",
|
|
1967
2575
|
delete: "删除"
|
|
2576
|
+
},
|
|
2577
|
+
ports: {
|
|
2578
|
+
reorder: "调整 {{name}} 的顺序",
|
|
2579
|
+
reorderHint: "拖动调整组内顺序,或聚焦后使用上、下方向键。",
|
|
2580
|
+
moved: "{{name}} 已移至第 {{position}} 位。",
|
|
2581
|
+
groupSettings: "分组设置",
|
|
2582
|
+
connected: "已连接",
|
|
2583
|
+
columnName: "名称",
|
|
2584
|
+
columnType: "类型",
|
|
2585
|
+
columnValue: "值"
|
|
1968
2586
|
}
|
|
1969
2587
|
},
|
|
1970
2588
|
language: { label: "语言" },
|
|
@@ -2011,7 +2629,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
2011
2629
|
triggerNotFound: "找不到此 Trigger,请刷新 Trigger 列表。",
|
|
2012
2630
|
variableInvalid: "Variable 名称或值不符合要求,请检查后重试。",
|
|
2013
2631
|
variableLimitReached: "当前部署的 Variable 已达到上限。",
|
|
2014
|
-
variableNotFound: "找不到此 Variable,请刷新 Variable 列表。"
|
|
2632
|
+
variableNotFound: "找不到此 Variable,请刷新 Variable 列表。",
|
|
2633
|
+
connectorConsoleUnconfigured: "尚未配置 Connector 授权控制台地址。请前往“设置 → Connector → 授权控制台地址”完成配置后重试。"
|
|
2015
2634
|
},
|
|
2016
2635
|
flowDeleted: "已删除 {{name}}。",
|
|
2017
2636
|
flowDeleteAccepted: "正在删除 {{name}}。",
|
|
@@ -2567,6 +3186,192 @@ var d = (e, t = {}, n = "") => {
|
|
|
2567
3186
|
deleteOne: "删除 1 个节点",
|
|
2568
3187
|
pasteOne: "粘贴 1 个节点",
|
|
2569
3188
|
moveOne: "移动 1 个节点"
|
|
3189
|
+
},
|
|
3190
|
+
linearTrigger: {
|
|
3191
|
+
team: "Team",
|
|
3192
|
+
selectTeam: "选择 Team",
|
|
3193
|
+
connectFirst: "请先选择连接。",
|
|
3194
|
+
loading: "加载中…",
|
|
3195
|
+
noTeams: "没有可访问的 Team。",
|
|
3196
|
+
missingTeam: "已选 Team 不再可用,请重新选择。",
|
|
3197
|
+
loadFailed: "无法加载选项。",
|
|
3198
|
+
retry: "重试",
|
|
3199
|
+
statuses: "Issue 状态",
|
|
3200
|
+
selectTeamFirst: "请先选择 Team。",
|
|
3201
|
+
statusHint: "匹配 Issue 变化时的当前状态,不仅限于进入该状态的变化。",
|
|
3202
|
+
allStatuses: "全部状态",
|
|
3203
|
+
selectedCount: "已选择 {{count}} 个状态",
|
|
3204
|
+
noStatuses: "没有可用状态。",
|
|
3205
|
+
unavailableStatus: "不可用的状态({{id}})",
|
|
3206
|
+
missingStatuses: "部分已选状态不再可用,请移除或重新选择。"
|
|
3207
|
+
},
|
|
3208
|
+
nodePicker: {
|
|
3209
|
+
actionGroups: {
|
|
3210
|
+
read: "读取接口",
|
|
3211
|
+
write: "写入接口",
|
|
3212
|
+
destructive: "高风险接口",
|
|
3213
|
+
other: "其他接口"
|
|
3214
|
+
},
|
|
3215
|
+
builtInNodes: "内置节点",
|
|
3216
|
+
configured: "已配置",
|
|
3217
|
+
configuredDescription: "已配置账号,可直接使用。",
|
|
3218
|
+
builtInAccount: "内置账号",
|
|
3219
|
+
builtInAccountDescription: "使用 OOMOL 提供的内置账号,使用时会扣除点数。",
|
|
3220
|
+
noSetup: "免配置",
|
|
3221
|
+
noSetupDescription: "无需配置账号即可使用。",
|
|
3222
|
+
needsSetup: "需要配置",
|
|
3223
|
+
needsSetupDescription: "添加或重新授权账号后即可使用。",
|
|
3224
|
+
clearSearch: "清空搜索",
|
|
3225
|
+
search: "搜索节点、应用或操作…",
|
|
3226
|
+
apps: "应用",
|
|
3227
|
+
searching: "正在搜索…",
|
|
3228
|
+
browseNodes: "浏览全部节点",
|
|
3229
|
+
backToResults: "返回搜索结果",
|
|
3230
|
+
back: "返回全部节点",
|
|
3231
|
+
results: "搜索结果",
|
|
3232
|
+
builtIn: "内置"
|
|
3233
|
+
},
|
|
3234
|
+
eventSources: {
|
|
3235
|
+
required: "必填",
|
|
3236
|
+
optional: "选填",
|
|
3237
|
+
tenantHint: "保存时会从所选连接账号自动获取租户信息,无需填写 Tenant Key。",
|
|
3238
|
+
secretsHint: "从飞书应用的“事件与回调”加密设置中复制这两项。本事件源使用加密回调;编辑时留空可保留原密钥。",
|
|
3239
|
+
openConsole: "打开飞书开发者后台",
|
|
3240
|
+
defaultName: "飞书事件源",
|
|
3241
|
+
title: "事件源",
|
|
3242
|
+
description: "统一接收应用事件,供多个 Flow 使用。",
|
|
3243
|
+
refresh: "刷新",
|
|
3244
|
+
add: "添加事件源",
|
|
3245
|
+
loading: "正在加载事件源…",
|
|
3246
|
+
empty: "尚无事件源",
|
|
3247
|
+
emptyDescription: "接入飞书应用,在事件发生时启动 Flow。",
|
|
3248
|
+
edit: "编辑",
|
|
3249
|
+
disabled: "已停用",
|
|
3250
|
+
unverified: "等待验证回调地址",
|
|
3251
|
+
ready: "回调已验证",
|
|
3252
|
+
disable: "停用",
|
|
3253
|
+
enable: "启用",
|
|
3254
|
+
callback: "回调地址",
|
|
3255
|
+
originMissing: "请先在部署设置中配置 Integration 公网地址。",
|
|
3256
|
+
connection: "连接账号",
|
|
3257
|
+
lastReceived: "最近接收事件",
|
|
3258
|
+
never: "尚未收到事件",
|
|
3259
|
+
consumers: "引用此来源的已发布 Flow",
|
|
3260
|
+
noConsumers: "暂无已发布 Flow 使用此事件源。",
|
|
3261
|
+
deleteConfirm: "删除此事件源?",
|
|
3262
|
+
delete: "删除",
|
|
3263
|
+
cancel: "取消",
|
|
3264
|
+
name: "名称",
|
|
3265
|
+
team: "Connector 团队",
|
|
3266
|
+
keepSecret: "留空保留已保存的值",
|
|
3267
|
+
events: "接收的事件",
|
|
3268
|
+
eventsHint: "在这里选择接收的事件,并在飞书应用后台启用对应事件和权限。此处选择不会自动配置飞书应用,不支持需要同步响应的交互回调。",
|
|
3269
|
+
manageHint: "允许当前部署管理该应用的资源订阅,包括接管已有订阅,以及在不再被已发布 Flow 使用时自动清理。",
|
|
3270
|
+
save: "保存",
|
|
3271
|
+
invalid: "事件源配置无效,请检查连接账号、租户和必填字段。",
|
|
3272
|
+
notFound: "所选连接账号无法使用此事件源。",
|
|
3273
|
+
conflict: "事件源已变更或仍在使用,请刷新并检查相关 Flow 和订阅。",
|
|
3274
|
+
source: "事件源",
|
|
3275
|
+
noSources: "当前 Flow 所属团队暂无飞书事件源,可以在这里创建。",
|
|
3276
|
+
loadFailed: "无法加载事件源。",
|
|
3277
|
+
searchEvents: "搜索事件名称或标识",
|
|
3278
|
+
customEvent: "添加自定义事件类型",
|
|
3279
|
+
addCustom: "添加",
|
|
3280
|
+
noEventMatches: "没有匹配的事件",
|
|
3281
|
+
chooseEvents: "请至少选择一个事件",
|
|
3282
|
+
customInvalid: "请输入有效的异步事件标识。",
|
|
3283
|
+
sourceEventsHint: "只能选择此事件源允许接收的事件。",
|
|
3284
|
+
eventUnavailable: "此事件不在所选事件源的接收范围内,请移除或修改事件源。",
|
|
3285
|
+
eventGroups: {
|
|
3286
|
+
messages: "消息",
|
|
3287
|
+
documents: "文档",
|
|
3288
|
+
base: "多维表格",
|
|
3289
|
+
calendar: "日历",
|
|
3290
|
+
approval: "审批",
|
|
3291
|
+
contacts: "通讯录",
|
|
3292
|
+
custom: "自定义事件"
|
|
3293
|
+
},
|
|
3294
|
+
eventNames: {
|
|
3295
|
+
im_message_receive_v1: "收到消息",
|
|
3296
|
+
im_message_recalled_v1: "消息被撤回",
|
|
3297
|
+
im_message_reaction_created_v1: "添加消息表情回复",
|
|
3298
|
+
im_chat_member_bot_added_v1: "机器人入群",
|
|
3299
|
+
drive_file_edit_v1: "文档内容变化",
|
|
3300
|
+
drive_file_title_updated_v1: "文档标题变化",
|
|
3301
|
+
drive_file_created_in_folder_v1: "文件夹中新增文件",
|
|
3302
|
+
drive_file_deleted_v1: "文件被删除",
|
|
3303
|
+
drive_file_bitable_record_changed_v1: "多维表格记录变化",
|
|
3304
|
+
drive_file_bitable_field_changed_v1: "多维表格字段变化",
|
|
3305
|
+
calendar_calendar_event_changed_v4: "日程变化",
|
|
3306
|
+
calendar_calendar_changed_v4: "日历变化",
|
|
3307
|
+
approval_instance_status_changed_v4: "审批实例状态变化",
|
|
3308
|
+
approval_task_status_changed_v4: "审批任务状态变化",
|
|
3309
|
+
approval_instance: "审批实例(旧版事件)",
|
|
3310
|
+
contact_user_created_v3: "员工入职",
|
|
3311
|
+
contact_user_updated_v3: "员工信息变化",
|
|
3312
|
+
contact_user_deleted_v3: "员工离职"
|
|
3313
|
+
},
|
|
3314
|
+
identityUnavailable: "当前 Connector 未提供已验证的应用 ID,请升级 Connector 后再创建事件源。",
|
|
3315
|
+
selectApp: "选择飞书应用",
|
|
3316
|
+
configureCallback: "配置事件回调",
|
|
3317
|
+
selectAppHint: "先在飞书创建企业自建应用,再在 Connector 中选择 Feishu App Bot,用 App ID 和 App Secret 连接。这里不使用 Feishu 用户授权连接;创建飞书应用时不需要事件回调地址。",
|
|
3318
|
+
configureCallbackHint: "从飞书应用的“事件与回调 → 安全设置”获取 Verification Token 并配置 Encrypt Key。先保存这里的表单,再把生成的地址填回飞书。",
|
|
3319
|
+
feishuApp: "飞书应用(Feishu App Bot)",
|
|
3320
|
+
noApplications: "当前团队还没有有效的 Feishu App Bot 连接,请先连接应用。",
|
|
3321
|
+
appSourceName: "{{name}} 事件源",
|
|
3322
|
+
resourceManagement: "资源订阅管理",
|
|
3323
|
+
back: "上一步",
|
|
3324
|
+
next: "下一步",
|
|
3325
|
+
receiving: "已收到事件",
|
|
3326
|
+
create: "创建事件源",
|
|
3327
|
+
created: "事件源已创建",
|
|
3328
|
+
flowCreateHint: "事件源将归属当前 Flow 的团队,可供团队内多个 Flow 共用。",
|
|
3329
|
+
bindFailed: "事件源已创建,但未能关联到当前节点,请重试。",
|
|
3330
|
+
useSource: "使用此事件源",
|
|
3331
|
+
verifyBeforePublish: "可以继续编辑 Flow;发布前,请先在飞书完成回调验证。",
|
|
3332
|
+
setupCopy: "1. 复制回调地址",
|
|
3333
|
+
setupFeishu: "2. 在飞书配置事件订阅",
|
|
3334
|
+
setupVerify: "3. 回到这里检查验证结果",
|
|
3335
|
+
copy: "复制",
|
|
3336
|
+
copied: "已复制",
|
|
3337
|
+
copyFailed: "复制失败,请选中地址手动复制。",
|
|
3338
|
+
publicCallbackHint: "此地址需要能被飞书从公网访问;localhost 和内网地址不可用。",
|
|
3339
|
+
setupFeishuHint: "打开对应应用的“事件与回调 → 事件配置”,选择“将事件发送至开发者服务器”,粘贴地址并保存。随后添加下列事件及所需权限,按飞书要求发布应用版本。",
|
|
3340
|
+
openFeishu: "打开飞书开放平台",
|
|
3341
|
+
manualSubscriptionHint: "这里选择的事件不会自动添加到飞书,请在飞书后台逐项配置。",
|
|
3342
|
+
awaitingVerification: "尚未收到飞书的回调验证。完成飞书配置后,点击下方按钮检查。",
|
|
3343
|
+
callbackVerified: "回调已验证。是否已收到业务事件,请查看事件源的接收状态。",
|
|
3344
|
+
checkingVerification: "正在检查…",
|
|
3345
|
+
checkVerification: "检查验证结果",
|
|
3346
|
+
specifiedChats: "指定会话(可选)",
|
|
3347
|
+
specifiedChatsHint: "每行填写一个会话 ID(chat_id)。留空表示不限制会话;应用仍只能接收有权限访问的会话事件。",
|
|
3348
|
+
subscribeResource: "订阅指定资源",
|
|
3349
|
+
subscribeResourceHint: "可选。开启后会在发布时向飞书申请该资源的订阅,并仅用该资源的事件触发此 Flow。",
|
|
3350
|
+
managementRequired: "此事件源未开启“资源订阅管理”,请先在设置中的事件源页面开启。",
|
|
3351
|
+
incompatibleChats: "当前事件不支持会话筛选,请移除旧的会话条件。",
|
|
3352
|
+
incompatibleResource: "当前事件与已配置的资源不匹配,请关闭资源订阅后重新选择事件。",
|
|
3353
|
+
removeFilter: "移除筛选条件",
|
|
3354
|
+
documentType: "文档类型",
|
|
3355
|
+
documentTypes: {
|
|
3356
|
+
doc: "旧版文档",
|
|
3357
|
+
docx: "新版文档",
|
|
3358
|
+
sheet: "电子表格",
|
|
3359
|
+
bitable: "多维表格",
|
|
3360
|
+
file: "文件",
|
|
3361
|
+
folder: "文件夹"
|
|
3362
|
+
},
|
|
3363
|
+
resourceIds: {
|
|
3364
|
+
document: "文档 Token",
|
|
3365
|
+
calendar: "日历 ID",
|
|
3366
|
+
approval: "审批定义 Code"
|
|
3367
|
+
},
|
|
3368
|
+
resourceHints: {
|
|
3369
|
+
document: "填写文档或多维表格的 Token,不是完整链接。",
|
|
3370
|
+
calendar: "填写需要监听日程变化的日历 ID。",
|
|
3371
|
+
approval: "填写审批定义的 Code,不是单个审批实例 ID;当前仅支持旧版审批业务事件。"
|
|
3372
|
+
},
|
|
3373
|
+
connectApp: "连接 Feishu App Bot",
|
|
3374
|
+
connectAppHint: "将在新标签页打开 Connector。请使用当前 Flow 所属团队;连接完成后返回这里,列表会自动刷新。"
|
|
2570
3375
|
}
|
|
2571
3376
|
},
|
|
2572
3377
|
"zh-TW": {
|
|
@@ -2590,7 +3395,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
2590
3395
|
javascriptDescription: "為這個節點建立 JavaScript 小腳本。",
|
|
2591
3396
|
llmChat: "LLM 對話",
|
|
2592
3397
|
llmChatDescription: "依訊息和提示詞範本產生文字回覆。",
|
|
2593
|
-
llmStructured: "LLM
|
|
3398
|
+
llmStructured: "LLM JSON",
|
|
2594
3399
|
llmStructuredDescription: "依訊息和提示詞範本產生結構化 JSON。",
|
|
2595
3400
|
generatedResponse: "產生的回覆。",
|
|
2596
3401
|
subflowDescription: "加入現有的 Subflow。",
|
|
@@ -2603,7 +3408,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
2603
3408
|
triggers: "Trigger",
|
|
2604
3409
|
value: "固定值",
|
|
2605
3410
|
valueDescription: "設定固定的文字、數字等值,供下游節點使用。",
|
|
2606
|
-
wait: "
|
|
3411
|
+
wait: "等待確認",
|
|
2607
3412
|
waitDescription: "暫停 Run,直到 Operator 繼續或審批。",
|
|
2608
3413
|
webhook: "Webhook",
|
|
2609
3414
|
webhookDescription: "透過專屬的 HTTP 端點接收外部事件。",
|
|
@@ -2662,7 +3467,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
2662
3467
|
noConnections: "這個 Trigger 沒有可用的 Connection。",
|
|
2663
3468
|
retry: "重試",
|
|
2664
3469
|
search: "搜尋節點",
|
|
2665
|
-
searchPlaceholder: "搜尋節點…"
|
|
3470
|
+
searchPlaceholder: "搜尋節點…",
|
|
3471
|
+
catalogRefreshFailed: "無法重新整理觸發器清單,仍可使用已快取的結果。",
|
|
3472
|
+
resize: "調整屬性面板寬度"
|
|
2666
3473
|
},
|
|
2667
3474
|
empty: {
|
|
2668
3475
|
loadFailedDescription: "請檢查 API 設定,並確認部署端點可以連線。",
|
|
@@ -2853,6 +3660,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
2853
3660
|
preview: "預覽",
|
|
2854
3661
|
duplicate: "建立副本",
|
|
2855
3662
|
delete: "刪除"
|
|
3663
|
+
},
|
|
3664
|
+
ports: {
|
|
3665
|
+
reorder: "調整 {{name}} 的順序",
|
|
3666
|
+
reorderHint: "拖動調整組內順序,或聚焦後使用上、下方向鍵。",
|
|
3667
|
+
moved: "{{name}} 已移至第 {{position}} 位。",
|
|
3668
|
+
groupSettings: "群組設定",
|
|
3669
|
+
connected: "已連接",
|
|
3670
|
+
columnName: "名稱",
|
|
3671
|
+
columnType: "類型",
|
|
3672
|
+
columnValue: "值"
|
|
2856
3673
|
}
|
|
2857
3674
|
},
|
|
2858
3675
|
language: { label: "語言" },
|
|
@@ -2899,7 +3716,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
2899
3716
|
triggerNotFound: "找不到此 Trigger,請重新整理 Trigger 列表。",
|
|
2900
3717
|
variableInvalid: "Variable 名稱或值不符合要求,請檢查後再試一次。",
|
|
2901
3718
|
variableLimitReached: "目前部署的 Variable 已達上限。",
|
|
2902
|
-
variableNotFound: "找不到此 Variable,請重新整理 Variable 列表。"
|
|
3719
|
+
variableNotFound: "找不到此 Variable,請重新整理 Variable 列表。",
|
|
3720
|
+
connectorConsoleUnconfigured: "尚未設定 Connector 授權控制台地址。請前往「設定 → Connector → 授權控制台地址」完成設定後重試。"
|
|
2903
3721
|
},
|
|
2904
3722
|
flowDeleted: "已刪除 {{name}}。",
|
|
2905
3723
|
flowDeleteAccepted: "正在刪除 {{name}}。",
|
|
@@ -3455,6 +4273,192 @@ var d = (e, t = {}, n = "") => {
|
|
|
3455
4273
|
deleteOne: "刪除 1 個節點",
|
|
3456
4274
|
pasteOne: "貼上 1 個節點",
|
|
3457
4275
|
moveOne: "移動 1 個節點"
|
|
4276
|
+
},
|
|
4277
|
+
linearTrigger: {
|
|
4278
|
+
team: "Team",
|
|
4279
|
+
selectTeam: "選擇 Team",
|
|
4280
|
+
connectFirst: "請先選擇連線。",
|
|
4281
|
+
loading: "載入中…",
|
|
4282
|
+
noTeams: "沒有可存取的 Team。",
|
|
4283
|
+
missingTeam: "已選 Team 不再可用,請重新選擇。",
|
|
4284
|
+
loadFailed: "無法載入選項。",
|
|
4285
|
+
retry: "重試",
|
|
4286
|
+
statuses: "Issue 狀態",
|
|
4287
|
+
selectTeamFirst: "請先選擇 Team。",
|
|
4288
|
+
statusHint: "比對 Issue 變更時的目前狀態,不僅限於進入該狀態的變更。",
|
|
4289
|
+
allStatuses: "全部狀態",
|
|
4290
|
+
selectedCount: "已選擇 {{count}} 個狀態",
|
|
4291
|
+
noStatuses: "沒有可用狀態。",
|
|
4292
|
+
unavailableStatus: "不可用的狀態({{id}})",
|
|
4293
|
+
missingStatuses: "部分已選狀態不再可用,請移除或重新選擇。"
|
|
4294
|
+
},
|
|
4295
|
+
nodePicker: {
|
|
4296
|
+
actionGroups: {
|
|
4297
|
+
read: "讀取介面",
|
|
4298
|
+
write: "寫入介面",
|
|
4299
|
+
destructive: "高風險介面",
|
|
4300
|
+
other: "其他介面"
|
|
4301
|
+
},
|
|
4302
|
+
builtInNodes: "內建節點",
|
|
4303
|
+
configured: "已設定",
|
|
4304
|
+
configuredDescription: "已設定帳號,可直接使用。",
|
|
4305
|
+
builtInAccount: "內建帳號",
|
|
4306
|
+
builtInAccountDescription: "使用 OOMOL 提供的內建帳號,使用時會扣除點數。",
|
|
4307
|
+
noSetup: "免設定",
|
|
4308
|
+
noSetupDescription: "無需設定帳號即可使用。",
|
|
4309
|
+
needsSetup: "需要設定",
|
|
4310
|
+
needsSetupDescription: "新增或重新授權帳號後即可使用。",
|
|
4311
|
+
clearSearch: "清空搜尋",
|
|
4312
|
+
search: "搜尋節點、應用或操作…",
|
|
4313
|
+
apps: "應用",
|
|
4314
|
+
searching: "正在搜尋…",
|
|
4315
|
+
browseNodes: "瀏覽全部節點",
|
|
4316
|
+
backToResults: "返回搜尋結果",
|
|
4317
|
+
back: "返回全部節點",
|
|
4318
|
+
results: "搜尋結果",
|
|
4319
|
+
builtIn: "內建"
|
|
4320
|
+
},
|
|
4321
|
+
eventSources: {
|
|
4322
|
+
required: "必填",
|
|
4323
|
+
optional: "選填",
|
|
4324
|
+
tenantHint: "儲存時會從所選連線帳號自動取得租戶資訊,無需填寫 Tenant Key。",
|
|
4325
|
+
secretsHint: "從飛書應用程式的「事件與回呼」加密設定中複製這兩項。本事件來源使用加密回呼;編輯時留空可保留原金鑰。",
|
|
4326
|
+
openConsole: "開啟飛書開發者後台",
|
|
4327
|
+
defaultName: "飛書事件來源",
|
|
4328
|
+
title: "事件來源",
|
|
4329
|
+
description: "統一接收應用程式事件,供多個 Flow 使用。",
|
|
4330
|
+
refresh: "重新整理",
|
|
4331
|
+
add: "新增事件來源",
|
|
4332
|
+
loading: "正在載入事件來源…",
|
|
4333
|
+
empty: "尚無事件來源",
|
|
4334
|
+
emptyDescription: "連接飛書應用程式,在事件發生時啟動 Flow。",
|
|
4335
|
+
edit: "編輯",
|
|
4336
|
+
disabled: "已停用",
|
|
4337
|
+
unverified: "等待驗證回呼位址",
|
|
4338
|
+
ready: "回呼已驗證",
|
|
4339
|
+
disable: "停用",
|
|
4340
|
+
enable: "啟用",
|
|
4341
|
+
callback: "回呼位址",
|
|
4342
|
+
originMissing: "請先在部署設定中設定 Integration 公開位址。",
|
|
4343
|
+
connection: "連線帳號",
|
|
4344
|
+
lastReceived: "最近接收事件",
|
|
4345
|
+
never: "尚未收到事件",
|
|
4346
|
+
consumers: "引用此來源的已發佈 Flow",
|
|
4347
|
+
noConsumers: "尚無已發佈 Flow 使用此來源。",
|
|
4348
|
+
deleteConfirm: "刪除此事件來源?",
|
|
4349
|
+
delete: "刪除",
|
|
4350
|
+
cancel: "取消",
|
|
4351
|
+
name: "名稱",
|
|
4352
|
+
team: "Connector 團隊",
|
|
4353
|
+
keepSecret: "留空保留已儲存的值",
|
|
4354
|
+
events: "接收的事件",
|
|
4355
|
+
eventsHint: "在此選擇接收的事件,並在飛書應用程式後台啟用對應事件與權限。此處選擇不會自動設定飛書應用程式,不支援需要同步回應的互動回呼。",
|
|
4356
|
+
manageHint: "允許目前部署管理該應用程式的資源訂閱,包括接管既有訂閱,以及在不再被已發佈 Flow 使用時自動清理。",
|
|
4357
|
+
save: "儲存",
|
|
4358
|
+
invalid: "事件來源設定無效,請檢查帳號、租戶和必填欄位。",
|
|
4359
|
+
notFound: "所選帳號無法使用此事件來源。",
|
|
4360
|
+
conflict: "來源已變更或仍在使用,請重新整理並檢查相關 Flow 和訂閱。",
|
|
4361
|
+
source: "事件來源",
|
|
4362
|
+
noSources: "目前 Flow 所屬團隊尚無飛書事件來源,可以在此建立。",
|
|
4363
|
+
loadFailed: "無法載入事件來源。",
|
|
4364
|
+
searchEvents: "搜尋事件名稱或識別碼",
|
|
4365
|
+
customEvent: "新增自訂事件類型",
|
|
4366
|
+
addCustom: "新增",
|
|
4367
|
+
noEventMatches: "沒有符合的事件",
|
|
4368
|
+
chooseEvents: "請至少選擇一個事件",
|
|
4369
|
+
customInvalid: "請輸入有效的非同步事件識別碼。",
|
|
4370
|
+
sourceEventsHint: "只能選擇此事件來源允許接收的事件。",
|
|
4371
|
+
eventUnavailable: "此事件不在所選事件來源的接收範圍內,請移除或修改事件來源。",
|
|
4372
|
+
eventGroups: {
|
|
4373
|
+
messages: "訊息",
|
|
4374
|
+
documents: "文件",
|
|
4375
|
+
base: "多維表格",
|
|
4376
|
+
calendar: "日曆",
|
|
4377
|
+
approval: "審批",
|
|
4378
|
+
contacts: "通訊錄",
|
|
4379
|
+
custom: "自訂事件"
|
|
4380
|
+
},
|
|
4381
|
+
eventNames: {
|
|
4382
|
+
im_message_receive_v1: "收到訊息",
|
|
4383
|
+
im_message_recalled_v1: "訊息被撤回",
|
|
4384
|
+
im_message_reaction_created_v1: "新增訊息表情回覆",
|
|
4385
|
+
im_chat_member_bot_added_v1: "機器人加入群組",
|
|
4386
|
+
drive_file_edit_v1: "文件內容變更",
|
|
4387
|
+
drive_file_title_updated_v1: "文件標題變更",
|
|
4388
|
+
drive_file_created_in_folder_v1: "資料夾新增檔案",
|
|
4389
|
+
drive_file_deleted_v1: "檔案被刪除",
|
|
4390
|
+
drive_file_bitable_record_changed_v1: "多維表格記錄變更",
|
|
4391
|
+
drive_file_bitable_field_changed_v1: "多維表格欄位變更",
|
|
4392
|
+
calendar_calendar_event_changed_v4: "行程變更",
|
|
4393
|
+
calendar_calendar_changed_v4: "日曆變更",
|
|
4394
|
+
approval_instance_status_changed_v4: "審批實例狀態變更",
|
|
4395
|
+
approval_task_status_changed_v4: "審批任務狀態變更",
|
|
4396
|
+
approval_instance: "審批實例(舊版事件)",
|
|
4397
|
+
contact_user_created_v3: "員工到職",
|
|
4398
|
+
contact_user_updated_v3: "員工資訊變更",
|
|
4399
|
+
contact_user_deleted_v3: "員工離職"
|
|
4400
|
+
},
|
|
4401
|
+
identityUnavailable: "目前 Connector 未提供已驗證的應用程式 ID,請升級 Connector 後再建立事件來源。",
|
|
4402
|
+
selectApp: "選擇飛書應用程式",
|
|
4403
|
+
configureCallback: "設定事件回呼",
|
|
4404
|
+
selectAppHint: "先在飛書建立企業自建應用,再於 Connector 選擇 Feishu App Bot,以 App ID 與 App Secret 連接。此處不使用 Feishu 使用者授權連接;建立應用時不需要事件回呼地址。",
|
|
4405
|
+
configureCallbackHint: "從飛書應用的「事件與回呼 → 安全設定」取得 Verification Token 並設定 Encrypt Key。先儲存此表單,再將產生的地址填回飛書。",
|
|
4406
|
+
feishuApp: "飛書應用(Feishu App Bot)",
|
|
4407
|
+
noApplications: "目前團隊尚無有效的 Feishu App Bot 連接,請先連接應用。",
|
|
4408
|
+
appSourceName: "{{name}} 事件來源",
|
|
4409
|
+
resourceManagement: "資源訂閱管理",
|
|
4410
|
+
back: "上一步",
|
|
4411
|
+
next: "下一步",
|
|
4412
|
+
receiving: "已收到事件",
|
|
4413
|
+
create: "建立事件來源",
|
|
4414
|
+
created: "事件來源已建立",
|
|
4415
|
+
flowCreateHint: "事件來源將歸屬目前 Flow 的團隊,可供團隊內多個 Flow 共用。",
|
|
4416
|
+
bindFailed: "事件來源已建立,但未能關聯至目前節點,請重試。",
|
|
4417
|
+
useSource: "使用此事件來源",
|
|
4418
|
+
verifyBeforePublish: "可以繼續編輯 Flow;發佈前,請先在飛書完成回呼驗證。",
|
|
4419
|
+
setupCopy: "1. 複製回呼地址",
|
|
4420
|
+
setupFeishu: "2. 在飛書設定事件訂閱",
|
|
4421
|
+
setupVerify: "3. 回到此處檢查驗證結果",
|
|
4422
|
+
copy: "複製",
|
|
4423
|
+
copied: "已複製",
|
|
4424
|
+
copyFailed: "複製失敗,請選取地址手動複製。",
|
|
4425
|
+
publicCallbackHint: "此地址必須能讓飛書從公網存取;localhost 與內網地址無法使用。",
|
|
4426
|
+
setupFeishuHint: "開啟對應應用的「事件與回呼 → 事件設定」,選擇將事件傳送至開發者伺服器,貼上地址並儲存。接著新增下列事件與所需權限,依飛書要求發佈應用版本。",
|
|
4427
|
+
openFeishu: "開啟飛書開放平台",
|
|
4428
|
+
manualSubscriptionHint: "此處選取的事件不會自動新增至飛書,請在飛書後台逐項設定。",
|
|
4429
|
+
awaitingVerification: "尚未收到飛書的回呼驗證。完成飛書設定後,點擊下方按鈕檢查。",
|
|
4430
|
+
callbackVerified: "回呼已驗證。是否已收到業務事件,請查看事件來源的接收狀態。",
|
|
4431
|
+
checkingVerification: "正在檢查…",
|
|
4432
|
+
checkVerification: "檢查驗證結果",
|
|
4433
|
+
specifiedChats: "指定會話(選填)",
|
|
4434
|
+
specifiedChatsHint: "每行填寫一個會話 ID(chat_id)。留空表示不限會話;應用仍只能接收有權限存取的會話事件。",
|
|
4435
|
+
subscribeResource: "訂閱指定資源",
|
|
4436
|
+
subscribeResourceHint: "選填。開啟後會在發佈時向飛書申請該資源的訂閱,並僅以該資源的事件觸發此 Flow。",
|
|
4437
|
+
managementRequired: "此事件來源未開啟「資源訂閱管理」,請先在設定中的事件來源頁面開啟。",
|
|
4438
|
+
incompatibleChats: "目前事件不支援會話篩選,請移除舊的會話條件。",
|
|
4439
|
+
incompatibleResource: "目前事件與已設定的資源不符,請關閉資源訂閱後重新選取事件。",
|
|
4440
|
+
removeFilter: "移除篩選條件",
|
|
4441
|
+
documentType: "文件類型",
|
|
4442
|
+
documentTypes: {
|
|
4443
|
+
doc: "舊版文件",
|
|
4444
|
+
docx: "新版文件",
|
|
4445
|
+
sheet: "試算表",
|
|
4446
|
+
bitable: "多維表格",
|
|
4447
|
+
file: "檔案",
|
|
4448
|
+
folder: "資料夾"
|
|
4449
|
+
},
|
|
4450
|
+
resourceIds: {
|
|
4451
|
+
document: "文件 Token",
|
|
4452
|
+
calendar: "日曆 ID",
|
|
4453
|
+
approval: "審批定義 Code"
|
|
4454
|
+
},
|
|
4455
|
+
resourceHints: {
|
|
4456
|
+
document: "填寫文件或多維表格的 Token,非完整連結。",
|
|
4457
|
+
calendar: "填寫要監聽日程變更的日曆 ID。",
|
|
4458
|
+
approval: "填寫審批定義 Code,非單個審批實例 ID;目前僅支援舊版審批業務事件。"
|
|
4459
|
+
},
|
|
4460
|
+
connectApp: "連接 Feishu App Bot",
|
|
4461
|
+
connectAppHint: "將於新分頁開啟 Connector。請使用目前 Flow 所屬團隊;連接完成後返回此處,清單會自動更新。"
|
|
3458
4462
|
}
|
|
3459
4463
|
},
|
|
3460
4464
|
ja: {
|
|
@@ -3478,7 +4482,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
3478
4482
|
javascriptDescription: "このノード用の JavaScript スクリプトレットを作成します。",
|
|
3479
4483
|
llmChat: "LLM チャット",
|
|
3480
4484
|
llmChatDescription: "メッセージとプロンプトテンプレートからテキストの応答を生成します。",
|
|
3481
|
-
llmStructured: "LLM
|
|
4485
|
+
llmStructured: "LLM JSON",
|
|
3482
4486
|
llmStructuredDescription: "メッセージとプロンプトテンプレートから構造化された JSON を生成します。",
|
|
3483
4487
|
generatedResponse: "生成された応答。",
|
|
3484
4488
|
subflowDescription: "既存の Subflow を追加します。",
|
|
@@ -3491,7 +4495,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
3491
4495
|
triggers: "Trigger",
|
|
3492
4496
|
value: "固定値",
|
|
3493
4497
|
valueDescription: "テキストや数値などの固定値を設定し、下流のノードで使用します。",
|
|
3494
|
-
wait: "
|
|
4498
|
+
wait: "確認待ち",
|
|
3495
4499
|
waitDescription: "オペレーターが続行または承認するまで Run を一時停止します。",
|
|
3496
4500
|
webhook: "Webhook",
|
|
3497
4501
|
webhookDescription: "専用の HTTP エンドポイントで外部イベントを受信します。",
|
|
@@ -3550,7 +4554,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
3550
4554
|
noConnections: "この Trigger で利用できる Connection はありません。",
|
|
3551
4555
|
retry: "再試行",
|
|
3552
4556
|
search: "ノードを検索",
|
|
3553
|
-
searchPlaceholder: "ノードを検索…"
|
|
4557
|
+
searchPlaceholder: "ノードを検索…",
|
|
4558
|
+
catalogRefreshFailed: "トリガー一覧を更新できませんでした。キャッシュ済みの結果は引き続き利用できます。",
|
|
4559
|
+
resize: "プロパティパネルの幅を変更"
|
|
3554
4560
|
},
|
|
3555
4561
|
empty: {
|
|
3556
4562
|
loadFailedDescription: "API 設定を確認し、デプロイ先のエンドポイントに接続できることを確認してください。",
|
|
@@ -3741,6 +4747,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
3741
4747
|
preview: "プレビュー",
|
|
3742
4748
|
duplicate: "複製",
|
|
3743
4749
|
delete: "削除"
|
|
4750
|
+
},
|
|
4751
|
+
ports: {
|
|
4752
|
+
reorder: "{{name}} の順序を変更",
|
|
4753
|
+
reorderHint: "ドラッグでグループ内の順序を変更。フォーカス時は上下キーでも移動できます。",
|
|
4754
|
+
moved: "{{name}} を {{position}} 番目に移動しました。",
|
|
4755
|
+
groupSettings: "グループ設定",
|
|
4756
|
+
connected: "接続済み",
|
|
4757
|
+
columnName: "名前",
|
|
4758
|
+
columnType: "型",
|
|
4759
|
+
columnValue: "値"
|
|
3744
4760
|
}
|
|
3745
4761
|
},
|
|
3746
4762
|
language: { label: "言語" },
|
|
@@ -3787,7 +4803,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
3787
4803
|
triggerNotFound: "この Trigger は存在しないか、削除されています。Trigger 一覧を更新してください。",
|
|
3788
4804
|
variableInvalid: "Variable の名前または値が無効です。確認してから再試行してください。",
|
|
3789
4805
|
variableLimitReached: "このデプロイでは Variable が上限に達しました。",
|
|
3790
|
-
variableNotFound: "この Variable は存在しないか、削除されています。Variable 一覧を更新してください。"
|
|
4806
|
+
variableNotFound: "この Variable は存在しないか、削除されています。Variable 一覧を更新してください。",
|
|
4807
|
+
connectorConsoleUnconfigured: "Connector の認証コンソール URL が未設定です。「設定 → Connector → 認証コンソール URL」で設定してから再試行してください。"
|
|
3791
4808
|
},
|
|
3792
4809
|
flowDeleted: "{{name}} を削除しました。",
|
|
3793
4810
|
flowDeleteAccepted: "{{name}} を削除しています。",
|
|
@@ -4343,6 +5360,192 @@ var d = (e, t = {}, n = "") => {
|
|
|
4343
5360
|
deleteOne: "ノードを 1 個削除",
|
|
4344
5361
|
pasteOne: "ノードを 1 個貼り付け",
|
|
4345
5362
|
moveOne: "ノードを 1 個移動"
|
|
5363
|
+
},
|
|
5364
|
+
linearTrigger: {
|
|
5365
|
+
team: "チーム",
|
|
5366
|
+
selectTeam: "チームを選択",
|
|
5367
|
+
connectFirst: "先に接続を選択してください。",
|
|
5368
|
+
loading: "読み込み中…",
|
|
5369
|
+
noTeams: "アクセス可能なチームがありません。",
|
|
5370
|
+
missingTeam: "選択したチームは利用できません。別のチームを選択してください。",
|
|
5371
|
+
loadFailed: "選択肢を読み込めませんでした。",
|
|
5372
|
+
retry: "再試行",
|
|
5373
|
+
statuses: "Issue のステータス",
|
|
5374
|
+
selectTeamFirst: "先にチームを選択してください。",
|
|
5375
|
+
statusHint: "Issue の変更時の現在のステータスに一致します。そのステータスへの遷移だけには限定されません。",
|
|
5376
|
+
allStatuses: "すべてのステータス",
|
|
5377
|
+
selectedCount: "{{count}} 件のステータスを選択中",
|
|
5378
|
+
noStatuses: "利用可能なステータスがありません。",
|
|
5379
|
+
unavailableStatus: "利用できないステータス({{id}})",
|
|
5380
|
+
missingStatuses: "選択したステータスの一部は利用できません。削除するか選び直してください。"
|
|
5381
|
+
},
|
|
5382
|
+
nodePicker: {
|
|
5383
|
+
actionGroups: {
|
|
5384
|
+
read: "読み取り操作",
|
|
5385
|
+
write: "書き込み操作",
|
|
5386
|
+
destructive: "高リスク操作",
|
|
5387
|
+
other: "その他の操作"
|
|
5388
|
+
},
|
|
5389
|
+
builtInNodes: "組み込みノード",
|
|
5390
|
+
configured: "設定済み",
|
|
5391
|
+
configuredDescription: "アカウントが設定済みで、そのまま利用できます。",
|
|
5392
|
+
builtInAccount: "組み込みアカウント",
|
|
5393
|
+
builtInAccountDescription: "OOMOL が提供するアカウントを使用します。利用時にクレジットが消費されます。",
|
|
5394
|
+
noSetup: "設定不要",
|
|
5395
|
+
noSetupDescription: "アカウントを設定せずに利用できます。",
|
|
5396
|
+
needsSetup: "要設定",
|
|
5397
|
+
needsSetupDescription: "アカウントを追加または再認証すると利用できます。",
|
|
5398
|
+
clearSearch: "検索をクリア",
|
|
5399
|
+
search: "ノード、アプリ、操作を検索…",
|
|
5400
|
+
apps: "アプリ",
|
|
5401
|
+
searching: "検索中…",
|
|
5402
|
+
browseNodes: "すべてのノードを表示",
|
|
5403
|
+
backToResults: "検索結果に戻る",
|
|
5404
|
+
back: "すべてのノードに戻る",
|
|
5405
|
+
results: "検索結果",
|
|
5406
|
+
builtIn: "組み込み"
|
|
5407
|
+
},
|
|
5408
|
+
eventSources: {
|
|
5409
|
+
required: "必須",
|
|
5410
|
+
optional: "任意",
|
|
5411
|
+
tenantHint: "保存時に選択した接続からテナント情報を取得するため、Tenant Key の入力は不要です。",
|
|
5412
|
+
secretsHint: "アプリのイベントとコールバックの暗号化設定から両方の値をコピーします。暗号化されたコールバックが必要です。編集時は空欄にすると現在のキーを保持します。",
|
|
5413
|
+
openConsole: "Feishu 開発者コンソールを開く",
|
|
5414
|
+
defaultName: "Feishu イベントソース",
|
|
5415
|
+
title: "イベントソース",
|
|
5416
|
+
description: "アプリのイベントを受信し、複数の Flow で共有します。",
|
|
5417
|
+
refresh: "更新",
|
|
5418
|
+
add: "イベントソースを追加",
|
|
5419
|
+
loading: "イベントソースを読み込み中…",
|
|
5420
|
+
empty: "イベントソースがありません",
|
|
5421
|
+
emptyDescription: "Feishu アプリを接続し、イベントで Flow を開始します。",
|
|
5422
|
+
edit: "編集",
|
|
5423
|
+
disabled: "無効",
|
|
5424
|
+
unverified: "アドレスの検証待ち",
|
|
5425
|
+
ready: "コールバック検証済み",
|
|
5426
|
+
disable: "無効にする",
|
|
5427
|
+
enable: "有効にする",
|
|
5428
|
+
callback: "コールバック URL",
|
|
5429
|
+
originMissing: "先にデプロイ設定で Integration の公開 URL を設定してください。",
|
|
5430
|
+
connection: "接続",
|
|
5431
|
+
lastReceived: "最終イベント受信",
|
|
5432
|
+
never: "未受信",
|
|
5433
|
+
consumers: "公開済み Flow",
|
|
5434
|
+
noConsumers: "このソースを使用する公開済み Flow はありません。",
|
|
5435
|
+
deleteConfirm: "このイベントソースを削除しますか?",
|
|
5436
|
+
delete: "削除",
|
|
5437
|
+
cancel: "キャンセル",
|
|
5438
|
+
name: "名前",
|
|
5439
|
+
team: "Connector チーム",
|
|
5440
|
+
keepSecret: "空欄で保存済みの値を維持",
|
|
5441
|
+
events: "受信するイベント",
|
|
5442
|
+
eventsHint: "受信するイベントを選択し、Feishu 側でも対応するイベントと権限を有効にしてください。この選択ではアプリは設定されません。同期応答が必要なコールバックには対応していません。",
|
|
5443
|
+
manageHint: "既存の購読の引き継ぎと、公開済み Flow が使用しなくなった購読の自動削除を含め、このデプロイによるリソース購読の管理を許可します。",
|
|
5444
|
+
save: "保存",
|
|
5445
|
+
invalid: "イベントソースの設定が無効です。接続、テナント、必須項目を確認してください。",
|
|
5446
|
+
notFound: "選択した接続ではこのソースを使用できません。",
|
|
5447
|
+
conflict: "ソースが変更されたか使用中です。更新して Flow と購読を確認してください。",
|
|
5448
|
+
source: "イベントソース",
|
|
5449
|
+
noSources: "この Flow のチームには Feishu イベントソースがありません。ここで作成できます。",
|
|
5450
|
+
loadFailed: "イベントソースを読み込めませんでした。",
|
|
5451
|
+
searchEvents: "イベント名または ID を検索",
|
|
5452
|
+
customEvent: "カスタムイベント追加",
|
|
5453
|
+
addCustom: "追加",
|
|
5454
|
+
noEventMatches: "一致するイベントがありません",
|
|
5455
|
+
chooseEvents: "イベントを1つ以上選択してください",
|
|
5456
|
+
customInvalid: "有効な非同期イベント ID を入力してください。",
|
|
5457
|
+
sourceEventsHint: "選択したソースで許可されたイベントのみ選択できます。",
|
|
5458
|
+
eventUnavailable: "このソースでは許可されていません。削除するかソースを更新してください。",
|
|
5459
|
+
eventGroups: {
|
|
5460
|
+
messages: "メッセージ",
|
|
5461
|
+
documents: "ドキュメント",
|
|
5462
|
+
base: "Base",
|
|
5463
|
+
calendar: "カレンダー",
|
|
5464
|
+
approval: "承認",
|
|
5465
|
+
contacts: "連絡先",
|
|
5466
|
+
custom: "カスタムイベント"
|
|
5467
|
+
},
|
|
5468
|
+
eventNames: {
|
|
5469
|
+
im_message_receive_v1: "メッセージ受信",
|
|
5470
|
+
im_message_recalled_v1: "メッセージ取り消し",
|
|
5471
|
+
im_message_reaction_created_v1: "リアクション追加",
|
|
5472
|
+
im_chat_member_bot_added_v1: "ボットがグループに参加",
|
|
5473
|
+
drive_file_edit_v1: "ドキュメント編集",
|
|
5474
|
+
drive_file_title_updated_v1: "ドキュメント名変更",
|
|
5475
|
+
drive_file_created_in_folder_v1: "フォルダー内にファイル追加",
|
|
5476
|
+
drive_file_deleted_v1: "ファイル削除",
|
|
5477
|
+
drive_file_bitable_record_changed_v1: "Base レコード変更",
|
|
5478
|
+
drive_file_bitable_field_changed_v1: "Base フィールド変更",
|
|
5479
|
+
calendar_calendar_event_changed_v4: "予定変更",
|
|
5480
|
+
calendar_calendar_changed_v4: "カレンダー変更",
|
|
5481
|
+
approval_instance_status_changed_v4: "承認インスタンスの状態変更",
|
|
5482
|
+
approval_task_status_changed_v4: "承認タスクの状態変更",
|
|
5483
|
+
approval_instance: "承認インスタンス(旧形式)",
|
|
5484
|
+
contact_user_created_v3: "従業員追加",
|
|
5485
|
+
contact_user_updated_v3: "従業員情報更新",
|
|
5486
|
+
contact_user_deleted_v3: "従業員削除"
|
|
5487
|
+
},
|
|
5488
|
+
identityUnavailable: "Connector が検証済みアプリ ID を提供していません。更新してから作成してください。",
|
|
5489
|
+
selectApp: "Feishu アプリを選択",
|
|
5490
|
+
configureCallback: "コールバックを設定",
|
|
5491
|
+
selectAppHint: "Feishu で企業自作アプリを作成し、Connector の Feishu App Bot を選んで App ID と App Secret で接続します。Feishu のユーザー認証接続は対象外です。アプリ作成時にコールバック URL は不要です。",
|
|
5492
|
+
configureCallbackHint: "Feishu の「イベントとコールバック → セキュリティ設定」で Verification Token を取得し、Encrypt Key を設定します。このフォームを保存してから、生成された URL を Feishu に入力してください。",
|
|
5493
|
+
feishuApp: "Feishu アプリ(Feishu App Bot)",
|
|
5494
|
+
noApplications: "このチームには有効な Feishu App Bot 接続がありません。先にアプリを接続してください。",
|
|
5495
|
+
appSourceName: "{{name}} イベント",
|
|
5496
|
+
resourceManagement: "リソース購読管理",
|
|
5497
|
+
back: "戻る",
|
|
5498
|
+
next: "次へ",
|
|
5499
|
+
receiving: "イベント受信済み",
|
|
5500
|
+
create: "イベントソースを作成",
|
|
5501
|
+
created: "イベントソースを作成しました",
|
|
5502
|
+
flowCreateHint: "このイベントソースは現在の Flow のチームに属し、複数の Flow で共有できます。",
|
|
5503
|
+
bindFailed: "イベントソースを作成しましたが、ノードに関連付けられませんでした。再試行してください。",
|
|
5504
|
+
useSource: "このイベントソースを使用",
|
|
5505
|
+
verifyBeforePublish: "Flow の編集を続けられます。公開前に Feishu でコールバックを検証してください。",
|
|
5506
|
+
setupCopy: "1. コールバック URL をコピー",
|
|
5507
|
+
setupFeishu: "2. Feishu でイベント購読を設定",
|
|
5508
|
+
setupVerify: "3. ここに戻って検証結果を確認",
|
|
5509
|
+
copy: "コピー",
|
|
5510
|
+
copied: "コピー済み",
|
|
5511
|
+
copyFailed: "コピーに失敗しました。URL を選択して手動でコピーしてください。",
|
|
5512
|
+
publicCallbackHint: "Feishu からインターネット経由でアクセスできる URL が必要です。localhost やプライベートアドレスは使えません。",
|
|
5513
|
+
setupFeishuHint: "アプリの「イベントとコールバック → イベント設定」で開発者サーバーへの送信を選び、URL を貼り付けて保存します。以下のイベントと必要な権限を追加し、Feishu の要件に従ってアプリを公開してください。",
|
|
5514
|
+
openFeishu: "Feishu 開発者コンソールを開く",
|
|
5515
|
+
manualSubscriptionHint: "ここで選んだイベントは Feishu に自動追加されません。Feishu 側でも設定してください。",
|
|
5516
|
+
awaitingVerification: "コールバック検証はまだ届いていません。Feishu の設定後に確認してください。",
|
|
5517
|
+
callbackVerified: "コールバック検証済みです。業務イベントの到着はソースの受信状態で確認してください。",
|
|
5518
|
+
checkingVerification: "確認中…",
|
|
5519
|
+
checkVerification: "検証結果を確認",
|
|
5520
|
+
specifiedChats: "会話を指定(任意)",
|
|
5521
|
+
specifiedChatsHint: "1 行に 1 つの chat_id を入力します。空欄の場合、アプリに権限があるすべての会話が対象です。",
|
|
5522
|
+
subscribeResource: "特定のリソースを購読",
|
|
5523
|
+
subscribeResourceHint: "任意です。公開時に Feishu でリソースを購読し、この Flow をそのリソースのイベントに限定します。",
|
|
5524
|
+
managementRequired: "先に設定のイベントソースでリソース購読管理を有効にしてください。",
|
|
5525
|
+
incompatibleChats: "選択したイベントは会話フィルターに対応していません。以前の条件を削除してください。",
|
|
5526
|
+
incompatibleResource: "リソースとイベントが一致しません。購読を無効にして、対応するイベントを選択してください。",
|
|
5527
|
+
removeFilter: "フィルターを削除",
|
|
5528
|
+
documentType: "文書の種類",
|
|
5529
|
+
documentTypes: {
|
|
5530
|
+
doc: "旧文書",
|
|
5531
|
+
docx: "文書",
|
|
5532
|
+
sheet: "スプレッドシート",
|
|
5533
|
+
bitable: "Base",
|
|
5534
|
+
file: "ファイル",
|
|
5535
|
+
folder: "フォルダー"
|
|
5536
|
+
},
|
|
5537
|
+
resourceIds: {
|
|
5538
|
+
document: "文書トークン",
|
|
5539
|
+
calendar: "カレンダー ID",
|
|
5540
|
+
approval: "承認定義コード"
|
|
5541
|
+
},
|
|
5542
|
+
resourceHints: {
|
|
5543
|
+
document: "URL ではなく、文書または Base のトークンを入力します。",
|
|
5544
|
+
calendar: "予定の変更を監視するカレンダー ID を入力します。",
|
|
5545
|
+
approval: "承認インスタンス ID ではなく承認定義コードを入力します。旧版の承認イベントのみ対応しています。"
|
|
5546
|
+
},
|
|
5547
|
+
connectApp: "Feishu App Bot を接続",
|
|
5548
|
+
connectAppHint: "Connector を新しいタブで開きます。この Flow のチームを使用してください。接続後に戻ると一覧が自動更新されます。"
|
|
4346
5549
|
}
|
|
4347
5550
|
},
|
|
4348
5551
|
ko: {
|
|
@@ -4366,7 +5569,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
4366
5569
|
javascriptDescription: "이 노드에 사용할 JavaScript 스크립틀릿을 만듭니다.",
|
|
4367
5570
|
llmChat: "LLM 대화",
|
|
4368
5571
|
llmChatDescription: "메시지와 프롬프트 템플릿으로 텍스트 응답을 생성합니다.",
|
|
4369
|
-
llmStructured: "LLM
|
|
5572
|
+
llmStructured: "LLM JSON",
|
|
4370
5573
|
llmStructuredDescription: "메시지와 프롬프트 템플릿으로 구조화된 JSON을 생성합니다.",
|
|
4371
5574
|
generatedResponse: "생성된 응답.",
|
|
4372
5575
|
subflowDescription: "기존 Subflow를 추가합니다.",
|
|
@@ -4379,7 +5582,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
4379
5582
|
triggers: "Trigger",
|
|
4380
5583
|
value: "고정 값",
|
|
4381
5584
|
valueDescription: "다운스트림 노드에서 사용할 텍스트, 숫자 등의 고정 값을 설정합니다.",
|
|
4382
|
-
wait: "대기",
|
|
5585
|
+
wait: "확인 대기",
|
|
4383
5586
|
waitDescription: "운영자가 계속하거나 승인할 때까지 Run을 일시 중지합니다.",
|
|
4384
5587
|
webhook: "Webhook",
|
|
4385
5588
|
webhookDescription: "전용 HTTP 엔드포인트로 외부 이벤트를 수신합니다.",
|
|
@@ -4438,7 +5641,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
4438
5641
|
noConnections: "이 Trigger에는 사용할 수 있는 Connection이 없습니다.",
|
|
4439
5642
|
retry: "다시 시도",
|
|
4440
5643
|
search: "블록 검색",
|
|
4441
|
-
searchPlaceholder: "블록 검색…"
|
|
5644
|
+
searchPlaceholder: "블록 검색…",
|
|
5645
|
+
catalogRefreshFailed: "트리거 목록을 새로 고치지 못했습니다. 캐시된 결과는 계속 사용할 수 있습니다.",
|
|
5646
|
+
resize: "속성 패널 너비 조절"
|
|
4442
5647
|
},
|
|
4443
5648
|
empty: {
|
|
4444
5649
|
loadFailedDescription: "API 설정을 확인하고 배포 엔드포인트에 연결할 수 있는지 확인하세요.",
|
|
@@ -4629,6 +5834,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
4629
5834
|
preview: "미리 보기",
|
|
4630
5835
|
duplicate: "복제",
|
|
4631
5836
|
delete: "삭제"
|
|
5837
|
+
},
|
|
5838
|
+
ports: {
|
|
5839
|
+
reorder: "{{name}} 순서 변경",
|
|
5840
|
+
reorderHint: "그룹 안에서 드래그하거나 포커스 후 위 / 아래 키로 순서를 변경하세요.",
|
|
5841
|
+
moved: "{{name}}이(가) {{position}}번째로 이동했습니다.",
|
|
5842
|
+
groupSettings: "그룹 설정",
|
|
5843
|
+
connected: "연결됨",
|
|
5844
|
+
columnName: "이름",
|
|
5845
|
+
columnType: "유형",
|
|
5846
|
+
columnValue: "값"
|
|
4632
5847
|
}
|
|
4633
5848
|
},
|
|
4634
5849
|
language: { label: "언어" },
|
|
@@ -4675,7 +5890,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
4675
5890
|
triggerNotFound: "이 Trigger가 없거나 삭제되었습니다. Trigger 목록을 새로 고치세요.",
|
|
4676
5891
|
variableInvalid: "Variable 이름 또는 값이 올바르지 않습니다. 확인한 뒤 다시 시도하세요.",
|
|
4677
5892
|
variableLimitReached: "이 배포에서 Variable이 한도에 도달했습니다.",
|
|
4678
|
-
variableNotFound: "이 Variable이 없거나 삭제되었습니다. Variable 목록을 새로 고치세요."
|
|
5893
|
+
variableNotFound: "이 Variable이 없거나 삭제되었습니다. Variable 목록을 새로 고치세요.",
|
|
5894
|
+
connectorConsoleUnconfigured: "Connector 인증 콘솔 URL이 설정되지 않았습니다. 설정 → Connector → 인증 콘솔 URL에서 설정한 후 다시 시도하세요."
|
|
4679
5895
|
},
|
|
4680
5896
|
flowDeleted: "{{name}} 삭제를 완료했습니다.",
|
|
4681
5897
|
flowDeleteAccepted: "{{name}}을(를) 삭제하는 중입니다.",
|
|
@@ -5231,6 +6447,192 @@ var d = (e, t = {}, n = "") => {
|
|
|
5231
6447
|
deleteOne: "노드 1개 삭제",
|
|
5232
6448
|
pasteOne: "노드 1개 붙여넣기",
|
|
5233
6449
|
moveOne: "노드 1개 이동"
|
|
6450
|
+
},
|
|
6451
|
+
linearTrigger: {
|
|
6452
|
+
team: "팀",
|
|
6453
|
+
selectTeam: "팀 선택",
|
|
6454
|
+
connectFirst: "먼저 연결을 선택하세요.",
|
|
6455
|
+
loading: "불러오는 중…",
|
|
6456
|
+
noTeams: "접근 가능한 팀이 없습니다.",
|
|
6457
|
+
missingTeam: "선택한 팀을 사용할 수 없습니다. 다른 팀을 선택하세요.",
|
|
6458
|
+
loadFailed: "옵션을 불러오지 못했습니다.",
|
|
6459
|
+
retry: "다시 시도",
|
|
6460
|
+
statuses: "Issue 상태",
|
|
6461
|
+
selectTeamFirst: "먼저 팀을 선택하세요.",
|
|
6462
|
+
statusHint: "해당 상태로 전환될 때뿐 아니라 Issue 변경 시 현재 상태와 일치하는지 확인합니다.",
|
|
6463
|
+
allStatuses: "모든 상태",
|
|
6464
|
+
selectedCount: "상태 {{count}}개 선택됨",
|
|
6465
|
+
noStatuses: "사용 가능한 상태가 없습니다.",
|
|
6466
|
+
unavailableStatus: "사용할 수 없는 상태 ({{id}})",
|
|
6467
|
+
missingStatuses: "선택한 상태 중 일부를 사용할 수 없습니다. 삭제하거나 다시 선택하세요."
|
|
6468
|
+
},
|
|
6469
|
+
nodePicker: {
|
|
6470
|
+
actionGroups: {
|
|
6471
|
+
read: "읽기 작업",
|
|
6472
|
+
write: "쓰기 작업",
|
|
6473
|
+
destructive: "고위험 작업",
|
|
6474
|
+
other: "기타 작업"
|
|
6475
|
+
},
|
|
6476
|
+
builtInNodes: "기본 노드",
|
|
6477
|
+
configured: "설정 완료",
|
|
6478
|
+
configuredDescription: "계정이 설정되어 바로 사용할 수 있습니다.",
|
|
6479
|
+
builtInAccount: "기본 제공 계정",
|
|
6480
|
+
builtInAccountDescription: "OOMOL이 제공하는 계정을 사용합니다. 사용 시 크레딧이 차감됩니다.",
|
|
6481
|
+
noSetup: "설정 불필요",
|
|
6482
|
+
noSetupDescription: "계정을 설정하지 않고 바로 사용할 수 있습니다.",
|
|
6483
|
+
needsSetup: "설정 필요",
|
|
6484
|
+
needsSetupDescription: "계정을 추가하거나 다시 인증하면 사용할 수 있습니다.",
|
|
6485
|
+
clearSearch: "검색 지우기",
|
|
6486
|
+
search: "노드, 앱 또는 작업 검색…",
|
|
6487
|
+
apps: "앱",
|
|
6488
|
+
searching: "검색 중…",
|
|
6489
|
+
browseNodes: "모든 노드 보기",
|
|
6490
|
+
backToResults: "검색 결과로 돌아가기",
|
|
6491
|
+
back: "모든 노드로 돌아가기",
|
|
6492
|
+
results: "검색 결과",
|
|
6493
|
+
builtIn: "기본 제공"
|
|
6494
|
+
},
|
|
6495
|
+
eventSources: {
|
|
6496
|
+
required: "필수",
|
|
6497
|
+
optional: "선택",
|
|
6498
|
+
tenantHint: "저장할 때 선택한 연결에서 테넌트 정보를 자동으로 가져옵니다. Tenant Key를 입력할 필요가 없습니다.",
|
|
6499
|
+
secretsHint: "앱의 이벤트 및 콜백 암호화 설정에서 두 값을 복사하세요. 암호화된 콜백이 필요합니다. 수정 시 비워 두면 기존 키가 유지됩니다.",
|
|
6500
|
+
openConsole: "Feishu 개발자 콘솔 열기",
|
|
6501
|
+
defaultName: "Feishu 이벤트 소스",
|
|
6502
|
+
title: "이벤트 소스",
|
|
6503
|
+
description: "앱 이벤트를 수신하여 여러 Flow에서 공유합니다.",
|
|
6504
|
+
refresh: "새로 고침",
|
|
6505
|
+
add: "이벤트 소스 추가",
|
|
6506
|
+
loading: "이벤트 소스 로드 중…",
|
|
6507
|
+
empty: "이벤트 소스가 없습니다",
|
|
6508
|
+
emptyDescription: "Feishu 앱을 연결하여 이벤트가 발생하면 Flow를 시작합니다.",
|
|
6509
|
+
edit: "편집",
|
|
6510
|
+
disabled: "비활성화됨",
|
|
6511
|
+
unverified: "주소 확인 대기 중",
|
|
6512
|
+
ready: "콜백 검증 완료",
|
|
6513
|
+
disable: "비활성화",
|
|
6514
|
+
enable: "활성화",
|
|
6515
|
+
callback: "콜백 URL",
|
|
6516
|
+
originMissing: "먼저 배포 설정에서 Integration 공개 주소를 설정하세요.",
|
|
6517
|
+
connection: "연결",
|
|
6518
|
+
lastReceived: "마지막 이벤트 수신",
|
|
6519
|
+
never: "수신한 이벤트 없음",
|
|
6520
|
+
consumers: "게시된 Flow",
|
|
6521
|
+
noConsumers: "이 소스를 사용하는 게시된 Flow가 없습니다.",
|
|
6522
|
+
deleteConfirm: "이 이벤트 소스를 삭제할까요?",
|
|
6523
|
+
delete: "삭제",
|
|
6524
|
+
cancel: "취소",
|
|
6525
|
+
name: "이름",
|
|
6526
|
+
team: "Connector 팀",
|
|
6527
|
+
keepSecret: "비워 두면 저장된 값 유지",
|
|
6528
|
+
events: "수신할 이벤트",
|
|
6529
|
+
eventsHint: "수신할 이벤트를 선택하고 Feishu 앱에서도 해당 이벤트와 권한을 활성화하세요. 여기서 선택해도 앱은 자동 설정되지 않습니다. 동기 응답이 필요한 콜백은 지원하지 않습니다.",
|
|
6530
|
+
manageHint: "기존 구독 인계 및 게시된 Flow에서 더 이상 필요하지 않은 구독의 자동 정리를 포함하여 이 배포가 리소스 구독을 관리하도록 허용합니다.",
|
|
6531
|
+
save: "저장",
|
|
6532
|
+
invalid: "이벤트 소스 설정이 잘못되었습니다. 연결, 테넌트 및 필수 항목을 확인하세요.",
|
|
6533
|
+
notFound: "선택한 연결에서 이 소스를 사용할 수 없습니다.",
|
|
6534
|
+
conflict: "소스가 변경되었거나 사용 중입니다. 새로 고침 후 Flow와 구독을 확인하세요.",
|
|
6535
|
+
source: "이벤트 소스",
|
|
6536
|
+
noSources: "현재 Flow의 팀에 Feishu 이벤트 소스가 없습니다. 여기에서 만들 수 있습니다.",
|
|
6537
|
+
loadFailed: "이벤트 소스를 불러올 수 없습니다。",
|
|
6538
|
+
searchEvents: "이벤트 이름 또는 ID 검색",
|
|
6539
|
+
customEvent: "사용자 지정 이벤트 추가",
|
|
6540
|
+
addCustom: "추가",
|
|
6541
|
+
noEventMatches: "일치하는 이벤트 없음",
|
|
6542
|
+
chooseEvents: "이벤트를 하나 이상 선택하세요",
|
|
6543
|
+
customInvalid: "유효한 비동기 이벤트 ID를 입력하세요.",
|
|
6544
|
+
sourceEventsHint: "선택한 소스에서 허용한 이벤트만 선택할 수 있습니다.",
|
|
6545
|
+
eventUnavailable: "이 소스에서 허용하지 않는 이벤트입니다. 제거하거나 소스를 수정하세요.",
|
|
6546
|
+
eventGroups: {
|
|
6547
|
+
messages: "메시지",
|
|
6548
|
+
documents: "문서",
|
|
6549
|
+
base: "Base",
|
|
6550
|
+
calendar: "캘린더",
|
|
6551
|
+
approval: "승인",
|
|
6552
|
+
contacts: "연락처",
|
|
6553
|
+
custom: "사용자 지정 이벤트"
|
|
6554
|
+
},
|
|
6555
|
+
eventNames: {
|
|
6556
|
+
im_message_receive_v1: "메시지 수신",
|
|
6557
|
+
im_message_recalled_v1: "메시지 회수",
|
|
6558
|
+
im_message_reaction_created_v1: "반응 추가",
|
|
6559
|
+
im_chat_member_bot_added_v1: "봇이 그룹에 추가됨",
|
|
6560
|
+
drive_file_edit_v1: "문서 편집",
|
|
6561
|
+
drive_file_title_updated_v1: "문서 이름 변경",
|
|
6562
|
+
drive_file_created_in_folder_v1: "폴더에 파일 추가",
|
|
6563
|
+
drive_file_deleted_v1: "파일 삭제",
|
|
6564
|
+
drive_file_bitable_record_changed_v1: "Base 레코드 변경",
|
|
6565
|
+
drive_file_bitable_field_changed_v1: "Base 필드 변경",
|
|
6566
|
+
calendar_calendar_event_changed_v4: "일정 변경",
|
|
6567
|
+
calendar_calendar_changed_v4: "캘린더 변경",
|
|
6568
|
+
approval_instance_status_changed_v4: "승인 인스턴스 상태 변경",
|
|
6569
|
+
approval_task_status_changed_v4: "승인 작업 상태 변경",
|
|
6570
|
+
approval_instance: "승인 인스턴스 (레거시)",
|
|
6571
|
+
contact_user_created_v3: "직원 추가",
|
|
6572
|
+
contact_user_updated_v3: "직원 정보 변경",
|
|
6573
|
+
contact_user_deleted_v3: "직원 삭제"
|
|
6574
|
+
},
|
|
6575
|
+
identityUnavailable: "Connector가 검증된 앱 ID를 제공하지 않습니다. 업데이트 후 생성하세요.",
|
|
6576
|
+
selectApp: "Feishu 앱 선택",
|
|
6577
|
+
configureCallback: "콜백 설정",
|
|
6578
|
+
selectAppHint: "Feishu에서 기업 자체 앱을 만든 후 Connector의 Feishu App Bot을 선택해 App ID와 App Secret으로 연결하세요. Feishu 사용자 OAuth 연결은 대상이 아닙니다. 앱 생성 시 콜백 URL은 필요하지 않습니다.",
|
|
6579
|
+
configureCallbackHint: "Feishu의 이벤트 및 콜백 → 보안 설정에서 Verification Token을 확인하고 Encrypt Key를 설정하세요. 이 양식을 먼저 저장한 후 생성된 URL을 Feishu에 입력하세요.",
|
|
6580
|
+
feishuApp: "Feishu 앱 (Feishu App Bot)",
|
|
6581
|
+
noApplications: "이 팀에 활성 Feishu App Bot 연결이 없습니다. 먼저 앱을 연결하세요.",
|
|
6582
|
+
appSourceName: "{{name}} 이벤트",
|
|
6583
|
+
resourceManagement: "리소스 구독 관리",
|
|
6584
|
+
back: "이전",
|
|
6585
|
+
next: "다음",
|
|
6586
|
+
receiving: "이벤트 수신됨",
|
|
6587
|
+
create: "이벤트 소스 만들기",
|
|
6588
|
+
created: "이벤트 소스 생성 완료",
|
|
6589
|
+
flowCreateHint: "이벤트 소스는 현재 Flow의 팀에 속하며 여러 Flow에서 공유할 수 있습니다.",
|
|
6590
|
+
bindFailed: "이벤트 소스를 만들었지만 현재 노드에 연결하지 못했습니다. 다시 시도하세요.",
|
|
6591
|
+
useSource: "이 이벤트 소스 사용",
|
|
6592
|
+
verifyBeforePublish: "Flow 편집을 계속할 수 있습니다. 게시 전에 Feishu에서 콜백을 검증하세요.",
|
|
6593
|
+
setupCopy: "1. 콜백 URL 복사",
|
|
6594
|
+
setupFeishu: "2. Feishu에서 이벤트 구독 설정",
|
|
6595
|
+
setupVerify: "3. 여기로 돌아와 검증 결과 확인",
|
|
6596
|
+
copy: "복사",
|
|
6597
|
+
copied: "복사됨",
|
|
6598
|
+
copyFailed: "복사하지 못했습니다. URL을 선택하여 직접 복사하세요.",
|
|
6599
|
+
publicCallbackHint: "Feishu가 인터넷을 통해 접근할 수 있는 URL이어야 합니다. localhost와 사설 주소는 사용할 수 없습니다.",
|
|
6600
|
+
setupFeishuHint: "앱의 이벤트 및 콜백 → 이벤트 설정에서 개발자 서버로 전송을 선택하고 URL을 붙여 넣어 저장하세요. 아래 이벤트와 필요한 권한을 추가하고 Feishu 요구 사항에 따라 앱 버전을 게시하세요.",
|
|
6601
|
+
openFeishu: "Feishu 개발자 콘솔 열기",
|
|
6602
|
+
manualSubscriptionHint: "여기서 선택한 이벤트는 Feishu에 자동으로 추가되지 않습니다. Feishu 콘솔에서도 설정하세요.",
|
|
6603
|
+
awaitingVerification: "아직 콜백 검증을 받지 못했습니다. Feishu 설정을 마친 후 아래에서 확인하세요.",
|
|
6604
|
+
callbackVerified: "콜백이 검증되었습니다. 실제 이벤트 수신 여부는 소스의 수신 상태에서 확인하세요.",
|
|
6605
|
+
checkingVerification: "확인 중…",
|
|
6606
|
+
checkVerification: "검증 결과 확인",
|
|
6607
|
+
specifiedChats: "특정 대화 지정 (선택)",
|
|
6608
|
+
specifiedChatsHint: "한 줄에 chat_id 하나를 입력하세요. 비워 두면 앱에 권한이 있는 모든 대화가 대상입니다.",
|
|
6609
|
+
subscribeResource: "특정 리소스 구독",
|
|
6610
|
+
subscribeResourceHint: "선택 사항입니다. 게시 시 Feishu에 리소스 구독을 요청하고 이 Flow를 해당 리소스의 이벤트로 제한합니다.",
|
|
6611
|
+
managementRequired: "먼저 설정의 이벤트 소스에서 리소스 구독 관리를 활성화하세요.",
|
|
6612
|
+
incompatibleChats: "선택한 이벤트는 대화 필터를 지원하지 않습니다. 기존 조건을 삭제하세요.",
|
|
6613
|
+
incompatibleResource: "리소스가 선택한 이벤트와 일치하지 않습니다. 구독을 끄고 호환되는 이벤트를 선택하세요.",
|
|
6614
|
+
removeFilter: "필터 삭제",
|
|
6615
|
+
documentType: "문서 유형",
|
|
6616
|
+
documentTypes: {
|
|
6617
|
+
doc: "이전 문서",
|
|
6618
|
+
docx: "문서",
|
|
6619
|
+
sheet: "스프레드시트",
|
|
6620
|
+
bitable: "Base",
|
|
6621
|
+
file: "파일",
|
|
6622
|
+
folder: "폴더"
|
|
6623
|
+
},
|
|
6624
|
+
resourceIds: {
|
|
6625
|
+
document: "문서 토큰",
|
|
6626
|
+
calendar: "캘린더 ID",
|
|
6627
|
+
approval: "승인 정의 코드"
|
|
6628
|
+
},
|
|
6629
|
+
resourceHints: {
|
|
6630
|
+
document: "전체 URL 대신 문서 또는 Base 토큰을 입력하세요.",
|
|
6631
|
+
calendar: "일정 변경을 수신할 캘린더 ID를 입력하세요.",
|
|
6632
|
+
approval: "인스턴스 ID 대신 승인 정의 코드를 입력하세요. 이전 버전 승인 이벤트만 지원합니다."
|
|
6633
|
+
},
|
|
6634
|
+
connectApp: "Feishu App Bot 연결",
|
|
6635
|
+
connectAppHint: "새 탭에서 Connector를 엽니다. 현재 Flow의 팀을 사용하세요. 연결 후 돌아오면 목록이 자동으로 새로 고쳐집니다."
|
|
5234
6636
|
}
|
|
5235
6637
|
},
|
|
5236
6638
|
ru: {
|
|
@@ -5254,7 +6656,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
5254
6656
|
javascriptDescription: "Создать JavaScript-скриптлет для этого узла.",
|
|
5255
6657
|
llmChat: "Чат LLM",
|
|
5256
6658
|
llmChatDescription: "Генерировать текстовый ответ по сообщениям и шаблону промпта.",
|
|
5257
|
-
llmStructured: "
|
|
6659
|
+
llmStructured: "LLM JSON",
|
|
5258
6660
|
llmStructuredDescription: "Генерировать структурированный JSON по сообщениям и шаблону промпта.",
|
|
5259
6661
|
generatedResponse: "Сгенерированный ответ.",
|
|
5260
6662
|
subflowDescription: "Добавить существующий Subflow.",
|
|
@@ -5267,7 +6669,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
5267
6669
|
triggers: "Triggers",
|
|
5268
6670
|
value: "Фиксированные значения",
|
|
5269
6671
|
valueDescription: "Задайте фиксированные значения, например текст или числа, для использования в последующих узлах.",
|
|
5270
|
-
wait: "Ожидание",
|
|
6672
|
+
wait: "Ожидание подтверждения",
|
|
5271
6673
|
waitDescription: "Приостановить Run, пока оператор не продолжит, не одобрит или не отклонит его.",
|
|
5272
6674
|
webhook: "Webhook",
|
|
5273
6675
|
webhookDescription: "Получать внешние события через выделенный HTTP-адрес.",
|
|
@@ -5326,7 +6728,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
5326
6728
|
noConnections: "Для этого Trigger нет доступных Connection.",
|
|
5327
6729
|
retry: "Повторить",
|
|
5328
6730
|
search: "Поиск узлов",
|
|
5329
|
-
searchPlaceholder: "Поиск узлов…"
|
|
6731
|
+
searchPlaceholder: "Поиск узлов…",
|
|
6732
|
+
catalogRefreshFailed: "Не удалось обновить каталог триггеров. Сохранённые результаты остаются доступны.",
|
|
6733
|
+
resize: "Изменить ширину панели свойств"
|
|
5330
6734
|
},
|
|
5331
6735
|
empty: {
|
|
5332
6736
|
loadFailedDescription: "Проверьте настройки API и убедитесь, что адрес развёртывания доступен.",
|
|
@@ -5517,6 +6921,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
5517
6921
|
preview: "Предпросмотр",
|
|
5518
6922
|
duplicate: "Дублировать",
|
|
5519
6923
|
delete: "Удалить"
|
|
6924
|
+
},
|
|
6925
|
+
ports: {
|
|
6926
|
+
reorder: "Изменить порядок {{name}}",
|
|
6927
|
+
reorderHint: "Перетащите внутри группы или используйте стрелки вверх / вниз при фокусе.",
|
|
6928
|
+
moved: "{{name}} перемещён на позицию {{position}}.",
|
|
6929
|
+
groupSettings: "Настройки группы",
|
|
6930
|
+
connected: "Подключено",
|
|
6931
|
+
columnName: "Имя",
|
|
6932
|
+
columnType: "Тип",
|
|
6933
|
+
columnValue: "Значение"
|
|
5520
6934
|
}
|
|
5521
6935
|
},
|
|
5522
6936
|
language: { label: "Язык" },
|
|
@@ -5563,7 +6977,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
5563
6977
|
triggerNotFound: "Этот Trigger не существует или был удалён. Обновите список Trigger.",
|
|
5564
6978
|
variableInvalid: "Имя или значение Variable недопустимо. Проверьте данные и повторите попытку.",
|
|
5565
6979
|
variableLimitReached: "Достигнут предел Variable для этого развертывания.",
|
|
5566
|
-
variableNotFound: "Эта Variable не существует или была удалена. Обновите список Variable."
|
|
6980
|
+
variableNotFound: "Эта Variable не существует или была удалена. Обновите список Variable.",
|
|
6981
|
+
connectorConsoleUnconfigured: "URL консоли авторизации Connector не настроен. Укажите его в разделе «Настройки → Connector → URL консоли авторизации» и повторите попытку."
|
|
5567
6982
|
},
|
|
5568
6983
|
flowDeleted: "Удалено: {{name}}.",
|
|
5569
6984
|
flowDeleteAccepted: "Удаление {{name}}.",
|
|
@@ -6119,7 +7534,52 @@ var d = (e, t = {}, n = "") => {
|
|
|
6119
7534
|
deleteOne: "Удалить узлы: 1",
|
|
6120
7535
|
pasteOne: "Вставить узлы: 1",
|
|
6121
7536
|
moveOne: "Переместить узлы: 1"
|
|
6122
|
-
}
|
|
7537
|
+
},
|
|
7538
|
+
linearTrigger: {
|
|
7539
|
+
team: "Команда",
|
|
7540
|
+
selectTeam: "Выберите команду",
|
|
7541
|
+
connectFirst: "Сначала выберите подключение.",
|
|
7542
|
+
loading: "Загрузка…",
|
|
7543
|
+
noTeams: "Нет доступных команд.",
|
|
7544
|
+
missingTeam: "Выбранная команда больше недоступна. Выберите другую.",
|
|
7545
|
+
loadFailed: "Не удалось загрузить варианты.",
|
|
7546
|
+
retry: "Повторить",
|
|
7547
|
+
statuses: "Статусы задач",
|
|
7548
|
+
selectTeamFirst: "Сначала выберите команду.",
|
|
7549
|
+
statusHint: "Проверяется текущий статус при изменении задачи, а не только переход в этот статус.",
|
|
7550
|
+
allStatuses: "Все статусы",
|
|
7551
|
+
selectedCount: "Выбрано статусов: {{count}}",
|
|
7552
|
+
noStatuses: "Нет доступных статусов.",
|
|
7553
|
+
unavailableStatus: "Недоступный статус ({{id}})",
|
|
7554
|
+
missingStatuses: "Некоторые выбранные статусы больше недоступны. Удалите или замените их."
|
|
7555
|
+
},
|
|
7556
|
+
nodePicker: {
|
|
7557
|
+
actionGroups: {
|
|
7558
|
+
read: "Операции чтения",
|
|
7559
|
+
write: "Операции записи",
|
|
7560
|
+
destructive: "Операции высокого риска",
|
|
7561
|
+
other: "Другие операции"
|
|
7562
|
+
},
|
|
7563
|
+
builtInNodes: "Встроенные узлы",
|
|
7564
|
+
configured: "Настроено",
|
|
7565
|
+
configuredDescription: "Аккаунт настроен и готов к использованию.",
|
|
7566
|
+
builtInAccount: "Встроенный аккаунт",
|
|
7567
|
+
builtInAccountDescription: "Используется аккаунт OOMOL. При использовании списываются кредиты.",
|
|
7568
|
+
noSetup: "Без настройки",
|
|
7569
|
+
noSetupDescription: "Можно использовать без настройки аккаунта.",
|
|
7570
|
+
needsSetup: "Требуется настройка",
|
|
7571
|
+
needsSetupDescription: "Добавьте аккаунт или повторно авторизуйте его для использования этих приложений.",
|
|
7572
|
+
clearSearch: "Очистить поиск",
|
|
7573
|
+
search: "Поиск узлов, приложений и действий…",
|
|
7574
|
+
apps: "Приложения",
|
|
7575
|
+
searching: "Поиск…",
|
|
7576
|
+
browseNodes: "Просмотреть все узлы",
|
|
7577
|
+
backToResults: "Назад к результатам поиска",
|
|
7578
|
+
back: "Назад ко всем узлам",
|
|
7579
|
+
results: "Результаты поиска",
|
|
7580
|
+
builtIn: "Встроенные"
|
|
7581
|
+
},
|
|
7582
|
+
eventSources: /* @__PURE__ */ JSON.parse("{\"required\":\"Обязательно\",\"optional\":\"Необязательно\",\"tenantHint\":\"При сохранении организация определяется автоматически по выбранному подключению. Tenant Key вводить не нужно.\",\"secretsHint\":\"Скопируйте оба значения из настроек шифрования событий и обратных вызовов приложения. Требуются зашифрованные вызовы. При редактировании оставьте поле пустым, чтобы сохранить текущий ключ.\",\"openConsole\":\"Открыть консоль разработчика Feishu\",\"defaultName\":\"Источник событий Feishu\",\"title\":\"Источники событий\",\"description\":\"Принимайте события приложения и передавайте их нескольким Flow.\",\"refresh\":\"Обновить\",\"add\":\"Добавить источник\",\"loading\":\"Загрузка источников…\",\"empty\":\"Источников событий пока нет\",\"emptyDescription\":\"Подключите приложение Feishu для запуска Flow по событиям.\",\"edit\":\"Изменить\",\"disabled\":\"Отключён\",\"unverified\":\"Ожидается проверка адреса\",\"ready\":\"Обратный вызов проверен\",\"disable\":\"Отключить\",\"enable\":\"Включить\",\"callback\":\"URL обратного вызова\",\"originMissing\":\"Сначала настройте публичный адрес Integration в параметрах развёртывания.\",\"connection\":\"Подключение\",\"lastReceived\":\"Последнее полученное событие\",\"never\":\"Событий ещё нет\",\"consumers\":\"Опубликованные Flow\",\"noConsumers\":\"Ни один опубликованный Flow не использует этот источник.\",\"deleteConfirm\":\"Удалить этот источник?\",\"delete\":\"Удалить\",\"cancel\":\"Отмена\",\"name\":\"Название\",\"team\":\"Команда Connector\",\"keepSecret\":\"Оставьте пустым, чтобы сохранить значение\",\"events\":\"Принимаемые события\",\"eventsHint\":\"Выберите события и включите их с нужными разрешениями в Feishu. Этот выбор не настраивает приложение. Интерактивные вызовы с синхронным ответом не поддерживаются.\",\"manageHint\":\"Разрешить управление подписками на ресурсы, включая существующие подписки и их автоматическое удаление, когда они не нужны опубликованным Flow.\",\"save\":\"Сохранить\",\"invalid\":\"Неверные параметры источника. Проверьте подключение, организацию и обязательные поля.\",\"notFound\":\"Источник недоступен для выбранного подключения.\",\"conflict\":\"Источник изменён или используется. Обновите данные и проверьте Flow и подписки.\",\"source\":\"Источник событий\",\"noSources\":\"У команды этого Flow пока нет источников событий Feishu. Создайте источник здесь.\",\"loadFailed\":\"Не удалось загрузить источники.\",\"searchEvents\":\"Поиск по названию или ID\",\"customEvent\":\"Добавить свой тип события\",\"addCustom\":\"Добавить\",\"noEventMatches\":\"Нет подходящих событий\",\"chooseEvents\":\"Выберите хотя бы одно событие\",\"customInvalid\":\"Введите корректный ID асинхронного события.\",\"sourceEventsHint\":\"Доступны только события, разрешённые выбранным источником.\",\"eventUnavailable\":\"Событие не разрешено источником. Удалите его или обновите источник.\",\"eventGroups\":{\"messages\":\"Сообщения\",\"documents\":\"Документы\",\"base\":\"Base\",\"calendar\":\"Календарь\",\"approval\":\"Согласования\",\"contacts\":\"Контакты\",\"custom\":\"Свои события\"},\"eventNames\":{\"im_message_receive_v1\":\"Получено сообщение\",\"im_message_recalled_v1\":\"Сообщение отозвано\",\"im_message_reaction_created_v1\":\"Добавлена реакция\",\"im_chat_member_bot_added_v1\":\"Бот добавлен в группу\",\"drive_file_edit_v1\":\"Документ изменён\",\"drive_file_title_updated_v1\":\"Документ переименован\",\"drive_file_created_in_folder_v1\":\"Файл добавлен в папку\",\"drive_file_deleted_v1\":\"Файл удалён\",\"drive_file_bitable_record_changed_v1\":\"Записи Base изменены\",\"drive_file_bitable_field_changed_v1\":\"Поля Base изменены\",\"calendar_calendar_event_changed_v4\":\"Событие календаря изменено\",\"calendar_calendar_changed_v4\":\"Календарь изменён\",\"approval_instance_status_changed_v4\":\"Статус экземпляра согласования изменён\",\"approval_task_status_changed_v4\":\"Статус задачи согласования изменён\",\"approval_instance\":\"Экземпляр согласования (старый формат)\",\"contact_user_created_v3\":\"Сотрудник добавлен\",\"contact_user_updated_v3\":\"Данные сотрудника обновлены\",\"contact_user_deleted_v3\":\"Сотрудник удалён\"},\"identityUnavailable\":\"Connector не предоставляет проверенный ID приложения. Обновите Connector перед созданием источника.\",\"selectApp\":\"Выберите приложение Feishu\",\"configureCallback\":\"Настройте обратный вызов\",\"selectAppHint\":\"Создайте корпоративное приложение в Feishu, затем выберите Feishu App Bot в Connector и подключитесь через App ID и App Secret. Пользовательские OAuth-подключения Feishu здесь не используются. Для создания приложения URL callback не нужен.\",\"configureCallbackHint\":\"Получите Verification Token и настройте Encrypt Key в разделе «События и callback → Настройки безопасности». Сохраните эту форму, затем укажите полученный URL в Feishu.\",\"feishuApp\":\"Приложение Feishu (Feishu App Bot)\",\"noApplications\":\"В этой команде нет активных подключений Feishu App Bot. Сначала подключите приложение.\",\"appSourceName\":\"События {{name}}\",\"resourceManagement\":\"Управление подписками на ресурсы\",\"back\":\"Назад\",\"next\":\"Далее\",\"receiving\":\"События получены\",\"create\":\"Создать источник событий\",\"created\":\"Источник событий создан\",\"flowCreateHint\":\"Источник принадлежит команде текущего Flow и доступен нескольким Flow.\",\"bindFailed\":\"Источник создан, но его не удалось связать с узлом. Повторите попытку.\",\"useSource\":\"Использовать этот источник\",\"verifyBeforePublish\":\"Можно продолжить редактирование Flow. Перед публикацией подтвердите callback в Feishu.\",\"setupCopy\":\"1. Скопируйте URL callback\",\"setupFeishu\":\"2. Настройте подписки в Feishu\",\"setupVerify\":\"3. Вернитесь сюда для проверки\",\"copy\":\"Копировать\",\"copied\":\"Скопировано\",\"copyFailed\":\"Не удалось скопировать. Выделите URL и скопируйте вручную.\",\"publicCallbackHint\":\"URL должен быть доступен Feishu через интернет. Localhost и частные адреса не подходят.\",\"setupFeishuHint\":\"В приложении откройте «События и callback → Настройка событий», выберите отправку на сервер разработчика, вставьте URL и сохраните. Добавьте события ниже и необходимые разрешения, затем опубликуйте версию по требованиям Feishu.\",\"openFeishu\":\"Открыть консоль Feishu\",\"manualSubscriptionHint\":\"Выбор здесь не добавляет события в Feishu автоматически. Настройте их также в консоли Feishu.\",\"awaitingVerification\":\"Подтверждение callback ещё не получено. Завершите настройку в Feishu и проверьте результат ниже.\",\"callbackVerified\":\"Callback подтверждён. Поступление рабочих событий смотрите в статусе приёма источника.\",\"checkingVerification\":\"Проверка…\",\"checkVerification\":\"Проверить callback\",\"specifiedChats\":\"Конкретные чаты (необязательно)\",\"specifiedChatsHint\":\"Один chat_id в каждой строке. Пустое поле означает все чаты, доступные приложению.\",\"subscribeResource\":\"Подписаться на конкретный ресурс\",\"subscribeResourceHint\":\"Необязательно. При публикации будет запрошена подписка Feishu, и Flow будет получать только события этого ресурса.\",\"managementRequired\":\"Сначала включите управление подписками у этого источника в настройках.\",\"incompatibleChats\":\"Выбранные события не поддерживают фильтр чатов. Удалите прежний фильтр.\",\"incompatibleResource\":\"Ресурс не соответствует событиям. Отключите подписку и выберите совместимые события.\",\"removeFilter\":\"Удалить фильтр\",\"documentType\":\"Тип документа\",\"documentTypes\":{\"doc\":\"Старый документ\",\"docx\":\"Документ\",\"sheet\":\"Таблица\",\"bitable\":\"Base\",\"file\":\"Файл\",\"folder\":\"Папка\"},\"resourceIds\":{\"document\":\"Токен документа\",\"calendar\":\"ID календаря\",\"approval\":\"Код определения согласования\"},\"resourceHints\":{\"document\":\"Введите токен документа или Base, а не полный URL.\",\"calendar\":\"Введите ID календаря для отслеживания изменений встреч.\",\"approval\":\"Введите код определения, а не ID экземпляра. Поддерживаются только старые бизнес-события согласования.\"},\"connectApp\":\"Подключить Feishu App Bot\",\"connectAppHint\":\"Connector откроется в новой вкладке. Используйте команду текущего Flow. После подключения и возвращения список обновится автоматически.\"}")
|
|
6123
7583
|
},
|
|
6124
7584
|
fr: {
|
|
6125
7585
|
addNode: {
|
|
@@ -6142,7 +7602,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
6142
7602
|
javascriptDescription: "Créer un mini-script JavaScript pour ce nœud.",
|
|
6143
7603
|
llmChat: "Conversation LLM",
|
|
6144
7604
|
llmChatDescription: "Générer une réponse texte à partir de messages et d'un modèle de prompt.",
|
|
6145
|
-
llmStructured: "
|
|
7605
|
+
llmStructured: "LLM JSON",
|
|
6146
7606
|
llmStructuredDescription: "Générer du JSON structuré à partir de messages et d'un modèle de prompt.",
|
|
6147
7607
|
generatedResponse: "Réponse générée.",
|
|
6148
7608
|
subflowDescription: "Ajouter un Subflow existant.",
|
|
@@ -6155,7 +7615,7 @@ var d = (e, t = {}, n = "") => {
|
|
|
6155
7615
|
triggers: "Triggers",
|
|
6156
7616
|
value: "Valeurs fixes",
|
|
6157
7617
|
valueDescription: "Définir des valeurs fixes, comme du texte ou des nombres, à utiliser par les nœuds en aval.",
|
|
6158
|
-
wait: "
|
|
7618
|
+
wait: "Attendre une confirmation",
|
|
6159
7619
|
waitDescription: "Mettre le Run en pause jusqu’à ce qu’un opérateur le poursuive ou l’approuve.",
|
|
6160
7620
|
webhook: "Webhook",
|
|
6161
7621
|
webhookDescription: "Recevoir des événements externes via un point de terminaison HTTP dédié.",
|
|
@@ -6214,7 +7674,9 @@ var d = (e, t = {}, n = "") => {
|
|
|
6214
7674
|
noConnections: "Aucune Connection n'est disponible pour ce Trigger.",
|
|
6215
7675
|
retry: "Réessayer",
|
|
6216
7676
|
search: "Rechercher des blocs",
|
|
6217
|
-
searchPlaceholder: "Rechercher des blocs…"
|
|
7677
|
+
searchPlaceholder: "Rechercher des blocs…",
|
|
7678
|
+
catalogRefreshFailed: "Impossible d’actualiser le catalogue des déclencheurs. Les résultats en cache restent disponibles.",
|
|
7679
|
+
resize: "Redimensionner le panneau de propriétés"
|
|
6218
7680
|
},
|
|
6219
7681
|
empty: {
|
|
6220
7682
|
loadFailedDescription: "Vérifiez la configuration de l'API et assurez-vous que le point de terminaison de déploiement est accessible.",
|
|
@@ -6405,6 +7867,16 @@ var d = (e, t = {}, n = "") => {
|
|
|
6405
7867
|
preview: "Aperçu",
|
|
6406
7868
|
duplicate: "Dupliquer",
|
|
6407
7869
|
delete: "Supprimer"
|
|
7870
|
+
},
|
|
7871
|
+
ports: {
|
|
7872
|
+
reorder: "Réordonner {{name}}",
|
|
7873
|
+
reorderHint: "Glissez dans le groupe ou utilisez les flèches haut / bas au clavier.",
|
|
7874
|
+
moved: "{{name}} déplacé en position {{position}}.",
|
|
7875
|
+
groupSettings: "Paramètres du groupe",
|
|
7876
|
+
connected: "Connecté",
|
|
7877
|
+
columnName: "Nom",
|
|
7878
|
+
columnType: "Type",
|
|
7879
|
+
columnValue: "Valeur"
|
|
6408
7880
|
}
|
|
6409
7881
|
},
|
|
6410
7882
|
language: { label: "Langue" },
|
|
@@ -6451,7 +7923,8 @@ var d = (e, t = {}, n = "") => {
|
|
|
6451
7923
|
triggerNotFound: "Ce Trigger n’existe pas ou a été supprimé. Actualisez la liste des Triggers.",
|
|
6452
7924
|
variableInvalid: "Le nom ou la valeur de la Variable n’est pas valide. Vérifiez-la, puis réessayez.",
|
|
6453
7925
|
variableLimitReached: "Ce déploiement a atteint sa limite de Variables.",
|
|
6454
|
-
variableNotFound: "Cette Variable n’existe pas ou a été supprimée. Actualisez la liste des Variables."
|
|
7926
|
+
variableNotFound: "Cette Variable n’existe pas ou a été supprimée. Actualisez la liste des Variables.",
|
|
7927
|
+
connectorConsoleUnconfigured: "L’URL de la console d’autorisation Connector n’est pas configurée. Renseignez-la dans Paramètres → Connector → URL de la console d’autorisation, puis réessayez."
|
|
6455
7928
|
},
|
|
6456
7929
|
flowDeleted: "{{name}} supprimé.",
|
|
6457
7930
|
flowDeleteAccepted: "Suppression de {{name}}.",
|
|
@@ -7007,15 +8480,268 @@ var d = (e, t = {}, n = "") => {
|
|
|
7007
8480
|
deleteOne: "Supprimer 1 nœuds",
|
|
7008
8481
|
pasteOne: "Coller 1 nœuds",
|
|
7009
8482
|
moveOne: "Déplacer 1 nœuds"
|
|
8483
|
+
},
|
|
8484
|
+
linearTrigger: {
|
|
8485
|
+
team: "Équipe",
|
|
8486
|
+
selectTeam: "Choisir une équipe",
|
|
8487
|
+
connectFirst: "Choisissez d’abord une connexion.",
|
|
8488
|
+
loading: "Chargement…",
|
|
8489
|
+
noTeams: "Aucune équipe accessible.",
|
|
8490
|
+
missingTeam: "L’équipe sélectionnée n’est plus disponible. Choisissez-en une autre.",
|
|
8491
|
+
loadFailed: "Impossible de charger les options.",
|
|
8492
|
+
retry: "Réessayer",
|
|
8493
|
+
statuses: "Statuts des issues",
|
|
8494
|
+
selectTeamFirst: "Choisissez d’abord une équipe.",
|
|
8495
|
+
statusHint: "Correspond au statut actuel lors d’une modification, pas uniquement aux transitions vers ce statut.",
|
|
8496
|
+
allStatuses: "Tous les statuts",
|
|
8497
|
+
selectedCount: "{{count}} statuts sélectionnés",
|
|
8498
|
+
noStatuses: "Aucun statut disponible.",
|
|
8499
|
+
unavailableStatus: "Statut indisponible ({{id}})",
|
|
8500
|
+
missingStatuses: "Certains statuts sélectionnés ne sont plus disponibles. Supprimez-les ou remplacez-les."
|
|
8501
|
+
},
|
|
8502
|
+
nodePicker: {
|
|
8503
|
+
actionGroups: {
|
|
8504
|
+
read: "Actions de lecture",
|
|
8505
|
+
write: "Actions d’écriture",
|
|
8506
|
+
destructive: "Actions à haut risque",
|
|
8507
|
+
other: "Autres actions"
|
|
8508
|
+
},
|
|
8509
|
+
builtInNodes: "Nœuds intégrés",
|
|
8510
|
+
configured: "Configurées",
|
|
8511
|
+
configuredDescription: "Un compte est configuré et prêt à être utilisé.",
|
|
8512
|
+
builtInAccount: "Compte intégré",
|
|
8513
|
+
builtInAccountDescription: "Utilise un compte fourni par OOMOL. Son utilisation consomme des crédits.",
|
|
8514
|
+
noSetup: "Sans configuration",
|
|
8515
|
+
noSetupDescription: "Prêt à utiliser sans configurer de compte.",
|
|
8516
|
+
needsSetup: "À configurer",
|
|
8517
|
+
needsSetupDescription: "Ajoutez un compte ou renouvelez son autorisation pour utiliser ces applications.",
|
|
8518
|
+
clearSearch: "Effacer la recherche",
|
|
8519
|
+
search: "Rechercher des nœuds, applications ou actions…",
|
|
8520
|
+
apps: "Applications",
|
|
8521
|
+
searching: "Recherche en cours…",
|
|
8522
|
+
browseNodes: "Parcourir tous les nœuds",
|
|
8523
|
+
backToResults: "Retour aux résultats de recherche",
|
|
8524
|
+
back: "Retour à tous les nœuds",
|
|
8525
|
+
results: "Résultats",
|
|
8526
|
+
builtIn: "Intégrés"
|
|
8527
|
+
},
|
|
8528
|
+
eventSources: {
|
|
8529
|
+
required: "Obligatoire",
|
|
8530
|
+
optional: "Facultatif",
|
|
8531
|
+
tenantHint: "Le tenant est récupéré automatiquement depuis la connexion sélectionnée lors de l’enregistrement.",
|
|
8532
|
+
secretsHint: "Copiez ces deux valeurs depuis les paramètres de chiffrement des événements et rappels de l’application. Les rappels chiffrés sont requis. Lors d’une modification, laissez un secret vide pour conserver sa valeur.",
|
|
8533
|
+
openConsole: "Ouvrir la console développeur Feishu",
|
|
8534
|
+
defaultName: "Source d’événements Feishu",
|
|
8535
|
+
title: "Sources d’événements",
|
|
8536
|
+
description: "Recevez les événements d’une application et partagez-les entre plusieurs Flows.",
|
|
8537
|
+
refresh: "Actualiser",
|
|
8538
|
+
add: "Ajouter une source",
|
|
8539
|
+
loading: "Chargement des sources…",
|
|
8540
|
+
empty: "Aucune source d’événements",
|
|
8541
|
+
emptyDescription: "Connectez une application Feishu pour démarrer des Flows lors d’événements.",
|
|
8542
|
+
edit: "Modifier",
|
|
8543
|
+
disabled: "Désactivée",
|
|
8544
|
+
unverified: "Vérification de l’adresse en attente",
|
|
8545
|
+
ready: "Rappel vérifié",
|
|
8546
|
+
disable: "Désactiver",
|
|
8547
|
+
enable: "Activer",
|
|
8548
|
+
callback: "URL de rappel",
|
|
8549
|
+
originMissing: "Configurez d’abord l’URL publique Integration dans les paramètres du déploiement.",
|
|
8550
|
+
connection: "Connexion",
|
|
8551
|
+
lastReceived: "Dernier événement reçu",
|
|
8552
|
+
never: "Aucun événement reçu",
|
|
8553
|
+
consumers: "Flows publiés",
|
|
8554
|
+
noConsumers: "Aucun Flow publié n’utilise cette source.",
|
|
8555
|
+
deleteConfirm: "Supprimer cette source ?",
|
|
8556
|
+
delete: "Supprimer",
|
|
8557
|
+
cancel: "Annuler",
|
|
8558
|
+
name: "Nom",
|
|
8559
|
+
team: "Équipe Connector",
|
|
8560
|
+
keepSecret: "Laisser vide pour conserver la valeur enregistrée",
|
|
8561
|
+
events: "Événements à recevoir",
|
|
8562
|
+
eventsHint: "Sélectionnez les événements à recevoir et activez les mêmes événements et autorisations dans Feishu. Ce choix ne configure pas l’application. Les rappels interactifs synchrones ne sont pas pris en charge.",
|
|
8563
|
+
manageHint: "Autoriser ce déploiement à gérer les abonnements aux ressources, y compris les abonnements existants et leur suppression automatique lorsqu’aucun Flow publié ne les utilise.",
|
|
8564
|
+
save: "Enregistrer",
|
|
8565
|
+
invalid: "Configuration invalide. Vérifiez la connexion, le tenant et les champs obligatoires.",
|
|
8566
|
+
notFound: "Cette source n’est pas disponible pour la connexion sélectionnée.",
|
|
8567
|
+
conflict: "La source a changé ou est utilisée. Actualisez et vérifiez les Flows et abonnements concernés.",
|
|
8568
|
+
source: "Source d’événements",
|
|
8569
|
+
noSources: "L’équipe de ce Flow ne possède aucune source Feishu. Vous pouvez en créer une ici.",
|
|
8570
|
+
loadFailed: "Impossible de charger les sources.",
|
|
8571
|
+
searchEvents: "Rechercher un nom ou un identifiant",
|
|
8572
|
+
customEvent: "Ajouter un type personnalisé",
|
|
8573
|
+
addCustom: "Ajouter",
|
|
8574
|
+
noEventMatches: "Aucun événement correspondant",
|
|
8575
|
+
chooseEvents: "Sélectionnez au moins un événement",
|
|
8576
|
+
customInvalid: "Saisissez un identifiant d’événement asynchrone valide.",
|
|
8577
|
+
sourceEventsHint: "Seuls les événements autorisés par cette source sont disponibles.",
|
|
8578
|
+
eventUnavailable: "Événement non autorisé par cette source. Supprimez-le ou modifiez la source.",
|
|
8579
|
+
eventGroups: {
|
|
8580
|
+
messages: "Messages",
|
|
8581
|
+
documents: "Documents",
|
|
8582
|
+
base: "Base",
|
|
8583
|
+
calendar: "Calendrier",
|
|
8584
|
+
approval: "Approbations",
|
|
8585
|
+
contacts: "Contacts",
|
|
8586
|
+
custom: "Événements personnalisés"
|
|
8587
|
+
},
|
|
8588
|
+
eventNames: {
|
|
8589
|
+
im_message_receive_v1: "Message reçu",
|
|
8590
|
+
im_message_recalled_v1: "Message retiré",
|
|
8591
|
+
im_message_reaction_created_v1: "Réaction ajoutée",
|
|
8592
|
+
im_chat_member_bot_added_v1: "Bot ajouté au groupe",
|
|
8593
|
+
drive_file_edit_v1: "Document modifié",
|
|
8594
|
+
drive_file_title_updated_v1: "Document renommé",
|
|
8595
|
+
drive_file_created_in_folder_v1: "Fichier ajouté au dossier",
|
|
8596
|
+
drive_file_deleted_v1: "Fichier supprimé",
|
|
8597
|
+
drive_file_bitable_record_changed_v1: "Enregistrements Base modifiés",
|
|
8598
|
+
drive_file_bitable_field_changed_v1: "Champs Base modifiés",
|
|
8599
|
+
calendar_calendar_event_changed_v4: "Événement de calendrier modifié",
|
|
8600
|
+
calendar_calendar_changed_v4: "Calendrier modifié",
|
|
8601
|
+
approval_instance_status_changed_v4: "Statut de l’instance d’approbation modifié",
|
|
8602
|
+
approval_task_status_changed_v4: "Statut de la tâche d’approbation modifié",
|
|
8603
|
+
approval_instance: "Instance d’approbation (ancien format)",
|
|
8604
|
+
contact_user_created_v3: "Employé ajouté",
|
|
8605
|
+
contact_user_updated_v3: "Employé mis à jour",
|
|
8606
|
+
contact_user_deleted_v3: "Employé supprimé"
|
|
8607
|
+
},
|
|
8608
|
+
identityUnavailable: "Ce Connector ne fournit pas d’identifiant d’application vérifié. Mettez-le à jour avant de créer la source.",
|
|
8609
|
+
selectApp: "Choisir une application Feishu",
|
|
8610
|
+
configureCallback: "Configurer le rappel",
|
|
8611
|
+
selectAppHint: "Créez une application d’entreprise dans Feishu, puis choisissez Feishu App Bot dans Connector et utilisez son App ID et son App Secret. Les connexions OAuth utilisateur Feishu ne sont pas utilisées ici. Aucun callback n’est nécessaire pour créer l’application.",
|
|
8612
|
+
configureCallbackHint: "Récupérez le Verification Token et configurez l’Encrypt Key dans Événements et callbacks → Paramètres de sécurité. Enregistrez ce formulaire, puis renseignez l’URL générée dans Feishu.",
|
|
8613
|
+
feishuApp: "Application Feishu (Feishu App Bot)",
|
|
8614
|
+
noApplications: "Cette équipe ne possède aucune connexion Feishu App Bot active. Connectez une application pour continuer.",
|
|
8615
|
+
appSourceName: "Événements {{name}}",
|
|
8616
|
+
resourceManagement: "Gestion des abonnements aux ressources",
|
|
8617
|
+
back: "Retour",
|
|
8618
|
+
next: "Suivant",
|
|
8619
|
+
receiving: "Événements reçus",
|
|
8620
|
+
create: "Créer une source d’événements",
|
|
8621
|
+
created: "Source d’événements créée",
|
|
8622
|
+
flowCreateHint: "Cette source appartient à l’équipe du Flow actuel et peut être partagée par plusieurs Flows.",
|
|
8623
|
+
bindFailed: "La source a été créée, mais son association au nœud a échoué. Réessayez.",
|
|
8624
|
+
useSource: "Utiliser cette source",
|
|
8625
|
+
verifyBeforePublish: "Vous pouvez continuer à modifier le Flow. Validez le callback dans Feishu avant de publier.",
|
|
8626
|
+
setupCopy: "1. Copier l’URL de callback",
|
|
8627
|
+
setupFeishu: "2. Configurer les abonnements dans Feishu",
|
|
8628
|
+
setupVerify: "3. Revenir ici pour vérifier",
|
|
8629
|
+
copy: "Copier",
|
|
8630
|
+
copied: "Copié",
|
|
8631
|
+
copyFailed: "Échec de la copie. Sélectionnez l’URL et copiez-la manuellement.",
|
|
8632
|
+
publicCallbackHint: "Cette URL doit être accessible à Feishu sur Internet. Les adresses privées et localhost ne conviennent pas.",
|
|
8633
|
+
setupFeishuHint: "Dans Événements et callbacks → Configuration des événements, choisissez l’envoi vers votre serveur, collez l’URL et enregistrez. Ajoutez les événements ci-dessous et leurs permissions, puis publiez une version selon les exigences de Feishu.",
|
|
8634
|
+
openFeishu: "Ouvrir la console Feishu",
|
|
8635
|
+
manualSubscriptionHint: "La sélection ici n’ajoute pas les événements dans Feishu. Configurez-les aussi dans sa console.",
|
|
8636
|
+
awaitingVerification: "Aucune vérification reçue. Terminez la configuration dans Feishu, puis vérifiez ci-dessous.",
|
|
8637
|
+
callbackVerified: "Callback vérifié. Consultez l’état de réception de la source pour savoir si des événements métier sont arrivés.",
|
|
8638
|
+
checkingVerification: "Vérification…",
|
|
8639
|
+
checkVerification: "Vérifier le callback",
|
|
8640
|
+
specifiedChats: "Conversations précises (facultatif)",
|
|
8641
|
+
specifiedChatsHint: "Saisissez un chat_id par ligne. Laissez vide pour toutes les conversations accessibles à l’application.",
|
|
8642
|
+
subscribeResource: "S’abonner à une ressource précise",
|
|
8643
|
+
subscribeResourceHint: "Facultatif. La publication demandera un abonnement Feishu à cette ressource et limitera ce Flow à ses événements.",
|
|
8644
|
+
managementRequired: "Activez d’abord la gestion des abonnements de cette source dans les paramètres.",
|
|
8645
|
+
incompatibleChats: "Ces événements ne permettent pas de filtrer les conversations. Supprimez le filtre précédent.",
|
|
8646
|
+
incompatibleResource: "La ressource ne correspond pas aux événements. Désactivez l’abonnement et choisissez des événements compatibles.",
|
|
8647
|
+
removeFilter: "Supprimer le filtre",
|
|
8648
|
+
documentType: "Type de document",
|
|
8649
|
+
documentTypes: {
|
|
8650
|
+
doc: "Ancien document",
|
|
8651
|
+
docx: "Document",
|
|
8652
|
+
sheet: "Tableur",
|
|
8653
|
+
bitable: "Base",
|
|
8654
|
+
file: "Fichier",
|
|
8655
|
+
folder: "Dossier"
|
|
8656
|
+
},
|
|
8657
|
+
resourceIds: {
|
|
8658
|
+
document: "Token du document",
|
|
8659
|
+
calendar: "ID du calendrier",
|
|
8660
|
+
approval: "Code de définition d’approbation"
|
|
8661
|
+
},
|
|
8662
|
+
resourceHints: {
|
|
8663
|
+
document: "Saisissez le token du document ou de la Base, pas son URL complète.",
|
|
8664
|
+
calendar: "Saisissez l’ID du calendrier dont vous souhaitez suivre les changements de rendez-vous.",
|
|
8665
|
+
approval: "Saisissez le code de définition, pas un ID d’instance. Seuls les anciens événements métier d’approbation sont pris en charge."
|
|
8666
|
+
},
|
|
8667
|
+
connectApp: "Connecter Feishu App Bot",
|
|
8668
|
+
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."
|
|
7010
8669
|
}
|
|
7011
8670
|
}
|
|
7012
|
-
},
|
|
7013
|
-
...
|
|
7014
|
-
...
|
|
7015
|
-
...
|
|
8671
|
+
}, le = Object.fromEntries(M.map((e) => [e, {
|
|
8672
|
+
...ce[e],
|
|
8673
|
+
...se[e],
|
|
8674
|
+
...oe[e]
|
|
7016
8675
|
}]));
|
|
7017
|
-
function
|
|
7018
|
-
return new
|
|
8676
|
+
function ue(e = "en") {
|
|
8677
|
+
return new ae(N([e]), le);
|
|
8678
|
+
}
|
|
8679
|
+
//#endregion
|
|
8680
|
+
//#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);
|
|
8683
|
+
return {
|
|
8684
|
+
preFocusGuardRef: n,
|
|
8685
|
+
handlePreFocusGuardFocus: b((t) => {
|
|
8686
|
+
I.flushSync(() => {
|
|
8687
|
+
e.setOpen(!1, x(_, t.nativeEvent, t.currentTarget));
|
|
8688
|
+
}), w(n.current)?.focus();
|
|
8689
|
+
}),
|
|
8690
|
+
handleFocusTargetFocus: b((n) => {
|
|
8691
|
+
let i = e.select("positionerElement");
|
|
8692
|
+
if (i && u(n, i)) e.context.beforeContentFocusGuardRef.current?.focus();
|
|
8693
|
+
else {
|
|
8694
|
+
I.flushSync(() => {
|
|
8695
|
+
e.setOpen(!1, x(_, n.nativeEvent, n.currentTarget));
|
|
8696
|
+
});
|
|
8697
|
+
let a = r(e.context.triggerFocusTargetRef.current || t.current);
|
|
8698
|
+
for (; a !== null && h(i, a);) {
|
|
8699
|
+
let e = a;
|
|
8700
|
+
if (a = T(a), a === e) break;
|
|
8701
|
+
}
|
|
8702
|
+
a?.focus();
|
|
8703
|
+
}
|
|
8704
|
+
})
|
|
8705
|
+
};
|
|
8706
|
+
}
|
|
8707
|
+
//#endregion
|
|
8708
|
+
//#region src/ui/browser/input-group.tsx
|
|
8709
|
+
function fe({ className: e, ...t }) {
|
|
8710
|
+
return /* @__PURE__ */ P("div", {
|
|
8711
|
+
"data-slot": "input-group",
|
|
8712
|
+
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),
|
|
8714
|
+
...t
|
|
8715
|
+
});
|
|
8716
|
+
}
|
|
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", {
|
|
8718
|
+
variants: { align: {
|
|
8719
|
+
"inline-start": "order-first pl-2 has-[>button]:ml-[-0.3rem] has-[>kbd]:ml-[-0.15rem]",
|
|
8720
|
+
"inline-end": "order-last pr-2 has-[>button]:mr-[-0.3rem] has-[>kbd]:mr-[-0.15rem]",
|
|
8721
|
+
"block-start": "order-first w-full justify-start px-2.5 pt-2 group-has-[>input]/input-group:pt-2 [.border-b]:pb-2",
|
|
8722
|
+
"block-end": "order-last w-full justify-start px-2.5 pb-2 group-has-[>input]/input-group:pb-2 [.border-t]:pt-2"
|
|
8723
|
+
} },
|
|
8724
|
+
defaultVariants: { align: "inline-start" }
|
|
8725
|
+
});
|
|
8726
|
+
function me({ className: e, align: t = "inline-start", ...n }) {
|
|
8727
|
+
return /* @__PURE__ */ P("div", {
|
|
8728
|
+
role: "group",
|
|
8729
|
+
"data-slot": "input-group-addon",
|
|
8730
|
+
"data-align": t,
|
|
8731
|
+
className: j(pe({ align: t }), e),
|
|
8732
|
+
onClick: (e) => {
|
|
8733
|
+
e.target.closest("button") || e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
8734
|
+
},
|
|
8735
|
+
...n
|
|
8736
|
+
});
|
|
7019
8737
|
}
|
|
8738
|
+
var he = F.forwardRef(function({ className: e, ...t }, n) {
|
|
8739
|
+
return /* @__PURE__ */ P(o, {
|
|
8740
|
+
ref: n,
|
|
8741
|
+
"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),
|
|
8743
|
+
...t
|
|
8744
|
+
});
|
|
8745
|
+
});
|
|
7020
8746
|
//#endregion
|
|
7021
|
-
export { c as i,
|
|
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 };
|