@cadraos/sdk 0.3.12 → 0.3.14-p102.1
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/board-host/index.cjs +217 -129
- package/dist/board-host/index.cjs.map +1 -1
- package/dist/board-host/index.d.cts +268 -3
- package/dist/board-host/index.d.ts +268 -3
- package/dist/board-host/index.js +218 -131
- package/dist/board-host/index.js.map +1 -1
- package/dist/board-host/server/index.d.cts +218 -2
- package/dist/board-host/server/index.d.ts +218 -2
- package/dist/chat/index.cjs +528 -47
- package/dist/chat/index.cjs.map +1 -1
- package/dist/chat/index.d.cts +29 -0
- package/dist/chat/index.d.ts +29 -0
- package/dist/chat/index.js +528 -47
- package/dist/chat/index.js.map +1 -1
- package/dist/index.cjs +453 -38
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +81 -1
- package/dist/index.d.ts +81 -1
- package/dist/index.js +453 -38
- package/dist/index.js.map +1 -1
- package/dist/kanban/engine/index.cjs +1535 -434
- package/dist/kanban/engine/index.cjs.map +1 -1
- package/dist/kanban/engine/index.d.cts +628 -6
- package/dist/kanban/engine/index.d.ts +628 -6
- package/dist/kanban/engine/index.js +1520 -435
- package/dist/kanban/engine/index.js.map +1 -1
- package/dist/kanban/index.cjs +751 -60
- package/dist/kanban/index.cjs.map +1 -1
- package/dist/kanban/index.d.cts +555 -9
- package/dist/kanban/index.d.ts +555 -9
- package/dist/kanban/index.js +747 -61
- package/dist/kanban/index.js.map +1 -1
- package/dist/teams/index.cjs +453 -38
- package/dist/teams/index.cjs.map +1 -1
- package/dist/teams/index.d.cts +27 -0
- package/dist/teams/index.d.ts +27 -0
- package/dist/teams/index.js +453 -38
- package/dist/teams/index.js.map +1 -1
- package/package.json +1 -1
package/dist/board-host/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createContext, useMemo, useContext, useState, useCallback, useEffect } from 'react';
|
|
2
|
-
import { jsx,
|
|
2
|
+
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
|
|
4
4
|
var BoardHostMappingContext = createContext(null);
|
|
5
5
|
function BoardHostMappingProvider({
|
|
@@ -71,86 +71,8 @@ function collectDueRefs(lanes) {
|
|
|
71
71
|
}
|
|
72
72
|
return Array.from(byRef.values());
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return lane.id ?? lane.key;
|
|
77
|
-
}
|
|
78
|
-
function suggestHostState(lane) {
|
|
79
|
-
return lane.label ?? lane.key ?? "";
|
|
80
|
-
}
|
|
81
|
-
function freshFieldRow(ref, requiresPredicate) {
|
|
82
|
-
return {
|
|
83
|
-
ref,
|
|
84
|
-
kind: requiresPredicate ? "predicate" : "column",
|
|
85
|
-
column: "",
|
|
86
|
-
path: "",
|
|
87
|
-
via: "",
|
|
88
|
-
table: "",
|
|
89
|
-
name: "",
|
|
90
|
-
predicateOnly: requiresPredicate
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function fieldRowFromBinding(b, requiresPredicate) {
|
|
94
|
-
const base = freshFieldRow(b.ref, requiresPredicate);
|
|
95
|
-
switch (b.kind) {
|
|
96
|
-
case "column":
|
|
97
|
-
return { ...base, kind: "column", column: b.column };
|
|
98
|
-
case "json":
|
|
99
|
-
return { ...base, kind: "json", column: b.column, path: b.path };
|
|
100
|
-
case "fk":
|
|
101
|
-
return { ...base, kind: "fk", via: b.via, table: b.table, column: b.column };
|
|
102
|
-
case "predicate":
|
|
103
|
-
return { ...base, kind: "predicate", name: b.name };
|
|
104
|
-
default:
|
|
105
|
-
return base;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function fieldRowError(row) {
|
|
109
|
-
switch (row.kind) {
|
|
110
|
-
case "column":
|
|
111
|
-
return identifierError(row.column) && `column ${identifierError(row.column)}`;
|
|
112
|
-
case "json": {
|
|
113
|
-
const colErr = identifierError(row.column);
|
|
114
|
-
if (colErr) return `column ${colErr}`;
|
|
115
|
-
if (!isValidJsonPath(row.path))
|
|
116
|
-
return "path must be dot-separated identifiers";
|
|
117
|
-
return null;
|
|
118
|
-
}
|
|
119
|
-
case "fk": {
|
|
120
|
-
const viaErr = identifierError(row.via);
|
|
121
|
-
if (viaErr) return `via ${viaErr}`;
|
|
122
|
-
const tableErr = identifierError(row.table);
|
|
123
|
-
if (tableErr) return `table ${tableErr}`;
|
|
124
|
-
const colErr = identifierError(row.column);
|
|
125
|
-
if (colErr) return `column ${colErr}`;
|
|
126
|
-
return null;
|
|
127
|
-
}
|
|
128
|
-
case "predicate":
|
|
129
|
-
return row.name.length === 0 ? "pick a predicate" : !isValidIdentifier(row.name) ? "predicate name must be a single identifier" : null;
|
|
130
|
-
default:
|
|
131
|
-
return "unknown kind";
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
function rowToBinding(row) {
|
|
135
|
-
switch (row.kind) {
|
|
136
|
-
case "column":
|
|
137
|
-
return { ref: row.ref, kind: "column", column: row.column };
|
|
138
|
-
case "json":
|
|
139
|
-
return { ref: row.ref, kind: "json", column: row.column, path: row.path };
|
|
140
|
-
case "fk":
|
|
141
|
-
return {
|
|
142
|
-
ref: row.ref,
|
|
143
|
-
kind: "fk",
|
|
144
|
-
via: row.via,
|
|
145
|
-
table: row.table,
|
|
146
|
-
column: row.column
|
|
147
|
-
};
|
|
148
|
-
case "predicate":
|
|
149
|
-
return { ref: row.ref, kind: "predicate", name: row.name };
|
|
150
|
-
default:
|
|
151
|
-
return { ref: row.ref, kind: "column", column: "" };
|
|
152
|
-
}
|
|
153
|
-
}
|
|
74
|
+
|
|
75
|
+
// src/board-host/widget/styles.ts
|
|
154
76
|
var S = {
|
|
155
77
|
card: {
|
|
156
78
|
background: "#fff",
|
|
@@ -232,6 +154,200 @@ var S = {
|
|
|
232
154
|
borderRadius: 999
|
|
233
155
|
}
|
|
234
156
|
};
|
|
157
|
+
function laneStageId(lane) {
|
|
158
|
+
return lane.id ?? lane.key;
|
|
159
|
+
}
|
|
160
|
+
function withStale(offered, extra) {
|
|
161
|
+
const known = new Set(offered.map((o) => o.value));
|
|
162
|
+
const stale = extra.filter((v) => v && !known.has(v)).map((v) => ({ value: v, label: `${v} (not on the board)` }));
|
|
163
|
+
return [...offered, ...stale];
|
|
164
|
+
}
|
|
165
|
+
function LaneMapStep({
|
|
166
|
+
lanes,
|
|
167
|
+
value,
|
|
168
|
+
onChange,
|
|
169
|
+
hostStates,
|
|
170
|
+
createIfMissing
|
|
171
|
+
}) {
|
|
172
|
+
function setEntry(key, entry) {
|
|
173
|
+
onChange({ ...value, [key]: entry });
|
|
174
|
+
}
|
|
175
|
+
return /* @__PURE__ */ jsx(Fragment, { children: lanes.map((lane) => {
|
|
176
|
+
const entry = value[lane.key];
|
|
177
|
+
const hostState = entry?.hostState ?? "";
|
|
178
|
+
const alsoFrom = entry?.alsoFrom ?? [];
|
|
179
|
+
const mapped = hostState.trim().length > 0;
|
|
180
|
+
return /* @__PURE__ */ jsxs("div", { style: S.lane, children: [
|
|
181
|
+
/* @__PURE__ */ jsxs("span", { children: [
|
|
182
|
+
lane.label,
|
|
183
|
+
/* @__PURE__ */ jsx("small", { style: { display: "block", color: "#98a1ad", fontSize: 11 }, children: laneStageId(lane) })
|
|
184
|
+
] }),
|
|
185
|
+
/* @__PURE__ */ jsx("span", { style: { color: "#98a1ad", textAlign: "center" }, children: "\u2192" }),
|
|
186
|
+
hostStates ? /* @__PURE__ */ jsxs(
|
|
187
|
+
"select",
|
|
188
|
+
{
|
|
189
|
+
"aria-label": `Host state for ${lane.label}`,
|
|
190
|
+
value: hostState,
|
|
191
|
+
onChange: (e) => {
|
|
192
|
+
const next = e.target.value;
|
|
193
|
+
setEntry(lane.key, {
|
|
194
|
+
hostState: next,
|
|
195
|
+
alsoFrom: alsoFrom.filter((s) => s !== next)
|
|
196
|
+
});
|
|
197
|
+
},
|
|
198
|
+
style: { ...S.input, minWidth: 0, width: "100%" },
|
|
199
|
+
children: [
|
|
200
|
+
/* @__PURE__ */ jsx("option", { value: "", children: "\u2014 host state \u2014" }),
|
|
201
|
+
withStale(hostStates, [hostState]).map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.label }, o.value))
|
|
202
|
+
]
|
|
203
|
+
}
|
|
204
|
+
) : /* @__PURE__ */ jsx(
|
|
205
|
+
"input",
|
|
206
|
+
{
|
|
207
|
+
"aria-label": `Host state for ${lane.label}`,
|
|
208
|
+
value: hostState,
|
|
209
|
+
placeholder: "\u2014 host state \u2014",
|
|
210
|
+
onChange: (e) => {
|
|
211
|
+
setEntry(lane.key, { ...entry, hostState: e.target.value });
|
|
212
|
+
},
|
|
213
|
+
style: { ...S.input, minWidth: 0, width: "100%" }
|
|
214
|
+
}
|
|
215
|
+
),
|
|
216
|
+
createIfMissing ? /* @__PURE__ */ jsxs(
|
|
217
|
+
"label",
|
|
218
|
+
{
|
|
219
|
+
style: { display: "flex", alignItems: "center", gap: 6, fontSize: 11.5, color: "#6b7480" },
|
|
220
|
+
children: [
|
|
221
|
+
/* @__PURE__ */ jsx(
|
|
222
|
+
"input",
|
|
223
|
+
{
|
|
224
|
+
type: "checkbox",
|
|
225
|
+
"aria-label": `Create lane ${lane.label} if missing`,
|
|
226
|
+
checked: createIfMissing.value[lane.key] ?? false,
|
|
227
|
+
onChange: (e) => createIfMissing.onChange(lane.key, e.target.checked)
|
|
228
|
+
}
|
|
229
|
+
),
|
|
230
|
+
"create"
|
|
231
|
+
]
|
|
232
|
+
}
|
|
233
|
+
) : /* @__PURE__ */ jsx("span", {}),
|
|
234
|
+
hostStates && /* @__PURE__ */ jsxs(
|
|
235
|
+
"label",
|
|
236
|
+
{
|
|
237
|
+
style: {
|
|
238
|
+
gridColumn: "1 / -1",
|
|
239
|
+
display: "flex",
|
|
240
|
+
alignItems: "flex-start",
|
|
241
|
+
gap: 8,
|
|
242
|
+
fontSize: 11.5,
|
|
243
|
+
color: "#6b7480"
|
|
244
|
+
},
|
|
245
|
+
children: [
|
|
246
|
+
"Also accepts",
|
|
247
|
+
/* @__PURE__ */ jsx(
|
|
248
|
+
"select",
|
|
249
|
+
{
|
|
250
|
+
multiple: true,
|
|
251
|
+
"aria-label": `Also accepts for ${lane.label}`,
|
|
252
|
+
value: alsoFrom,
|
|
253
|
+
onChange: (e) => {
|
|
254
|
+
const picked = Array.from(e.target.options).filter((o) => o.selected).map((o) => o.value);
|
|
255
|
+
setEntry(lane.key, { hostState, alsoFrom: picked });
|
|
256
|
+
},
|
|
257
|
+
style: { ...S.input, minWidth: 0, flex: 1 },
|
|
258
|
+
children: withStale(hostStates, alsoFrom).filter((o) => o.value !== hostState).map((o) => /* @__PURE__ */ jsx("option", { value: o.value, children: o.label }, o.value))
|
|
259
|
+
}
|
|
260
|
+
)
|
|
261
|
+
]
|
|
262
|
+
}
|
|
263
|
+
),
|
|
264
|
+
/* @__PURE__ */ jsx(
|
|
265
|
+
"span",
|
|
266
|
+
{
|
|
267
|
+
style: { ...S.st, color: mapped ? "#16a34a" : "#c2710c", gridColumn: "1 / -1", marginTop: 2 },
|
|
268
|
+
children: mapped ? "\u2713 mapped" : "\u26A0 gap \u2014 unmapped lane"
|
|
269
|
+
}
|
|
270
|
+
)
|
|
271
|
+
] }, lane.key);
|
|
272
|
+
}) });
|
|
273
|
+
}
|
|
274
|
+
var DEFAULT_ORG_COLUMN = "org_id";
|
|
275
|
+
function suggestHostState(lane) {
|
|
276
|
+
return lane.label ?? lane.key ?? "";
|
|
277
|
+
}
|
|
278
|
+
function freshFieldRow(ref, requiresPredicate) {
|
|
279
|
+
return {
|
|
280
|
+
ref,
|
|
281
|
+
kind: requiresPredicate ? "predicate" : "column",
|
|
282
|
+
column: "",
|
|
283
|
+
path: "",
|
|
284
|
+
via: "",
|
|
285
|
+
table: "",
|
|
286
|
+
name: "",
|
|
287
|
+
predicateOnly: requiresPredicate
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
function fieldRowFromBinding(b, requiresPredicate) {
|
|
291
|
+
const base = freshFieldRow(b.ref, requiresPredicate);
|
|
292
|
+
switch (b.kind) {
|
|
293
|
+
case "column":
|
|
294
|
+
return { ...base, kind: "column", column: b.column };
|
|
295
|
+
case "json":
|
|
296
|
+
return { ...base, kind: "json", column: b.column, path: b.path };
|
|
297
|
+
case "fk":
|
|
298
|
+
return { ...base, kind: "fk", via: b.via, table: b.table, column: b.column };
|
|
299
|
+
case "predicate":
|
|
300
|
+
return { ...base, kind: "predicate", name: b.name };
|
|
301
|
+
default:
|
|
302
|
+
return base;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function fieldRowError(row) {
|
|
306
|
+
switch (row.kind) {
|
|
307
|
+
case "column":
|
|
308
|
+
return identifierError(row.column) && `column ${identifierError(row.column)}`;
|
|
309
|
+
case "json": {
|
|
310
|
+
const colErr = identifierError(row.column);
|
|
311
|
+
if (colErr) return `column ${colErr}`;
|
|
312
|
+
if (!isValidJsonPath(row.path))
|
|
313
|
+
return "path must be dot-separated identifiers";
|
|
314
|
+
return null;
|
|
315
|
+
}
|
|
316
|
+
case "fk": {
|
|
317
|
+
const viaErr = identifierError(row.via);
|
|
318
|
+
if (viaErr) return `via ${viaErr}`;
|
|
319
|
+
const tableErr = identifierError(row.table);
|
|
320
|
+
if (tableErr) return `table ${tableErr}`;
|
|
321
|
+
const colErr = identifierError(row.column);
|
|
322
|
+
if (colErr) return `column ${colErr}`;
|
|
323
|
+
return null;
|
|
324
|
+
}
|
|
325
|
+
case "predicate":
|
|
326
|
+
return row.name.length === 0 ? "pick a predicate" : !isValidIdentifier(row.name) ? "predicate name must be a single identifier" : null;
|
|
327
|
+
default:
|
|
328
|
+
return "unknown kind";
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
function rowToBinding(row) {
|
|
332
|
+
switch (row.kind) {
|
|
333
|
+
case "column":
|
|
334
|
+
return { ref: row.ref, kind: "column", column: row.column };
|
|
335
|
+
case "json":
|
|
336
|
+
return { ref: row.ref, kind: "json", column: row.column, path: row.path };
|
|
337
|
+
case "fk":
|
|
338
|
+
return {
|
|
339
|
+
ref: row.ref,
|
|
340
|
+
kind: "fk",
|
|
341
|
+
via: row.via,
|
|
342
|
+
table: row.table,
|
|
343
|
+
column: row.column
|
|
344
|
+
};
|
|
345
|
+
case "predicate":
|
|
346
|
+
return { ref: row.ref, kind: "predicate", name: row.name };
|
|
347
|
+
default:
|
|
348
|
+
return { ref: row.ref, kind: "column", column: "" };
|
|
349
|
+
}
|
|
350
|
+
}
|
|
235
351
|
function statusColors(status) {
|
|
236
352
|
switch (status) {
|
|
237
353
|
case "valid":
|
|
@@ -590,57 +706,28 @@ function BoardHostMapping({
|
|
|
590
706
|
/* @__PURE__ */ jsx("span", { style: S.ttl, children: "Lane map" }),
|
|
591
707
|
/* @__PURE__ */ jsx("span", { style: { marginLeft: "auto", fontSize: 11, color: "#98a1ad" }, children: "auto-matched by name" })
|
|
592
708
|
] }),
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
] }),
|
|
600
|
-
/* @__PURE__ */ jsx("span", { style: { color: "#98a1ad", textAlign: "center" }, children: "\u2192" }),
|
|
601
|
-
/* @__PURE__ */ jsx(
|
|
602
|
-
"input",
|
|
603
|
-
{
|
|
604
|
-
"aria-label": `Host state for ${lane.label}`,
|
|
605
|
-
value: laneStates[lane.key] ?? "",
|
|
606
|
-
placeholder: "\u2014 host state \u2014",
|
|
607
|
-
onChange: (e) => {
|
|
608
|
-
setLaneStates((s) => ({ ...s, [lane.key]: e.target.value }));
|
|
609
|
-
setValidation(null);
|
|
610
|
-
},
|
|
611
|
-
style: { ...S.input, minWidth: 0, width: "100%" }
|
|
612
|
-
}
|
|
613
|
-
),
|
|
614
|
-
/* @__PURE__ */ jsxs(
|
|
615
|
-
"label",
|
|
616
|
-
{
|
|
617
|
-
style: { display: "flex", alignItems: "center", gap: 6, fontSize: 11.5, color: "#6b7480" },
|
|
618
|
-
children: [
|
|
619
|
-
/* @__PURE__ */ jsx(
|
|
620
|
-
"input",
|
|
621
|
-
{
|
|
622
|
-
type: "checkbox",
|
|
623
|
-
"aria-label": `Create lane ${lane.label} if missing`,
|
|
624
|
-
checked: laneCreate[lane.key] ?? false,
|
|
625
|
-
onChange: (e) => {
|
|
626
|
-
setLaneCreate((c) => ({ ...c, [lane.key]: e.target.checked }));
|
|
627
|
-
setValidation(null);
|
|
628
|
-
}
|
|
629
|
-
}
|
|
630
|
-
),
|
|
631
|
-
"create"
|
|
632
|
-
]
|
|
633
|
-
}
|
|
709
|
+
/* @__PURE__ */ jsx(
|
|
710
|
+
LaneMapStep,
|
|
711
|
+
{
|
|
712
|
+
lanes,
|
|
713
|
+
value: Object.fromEntries(
|
|
714
|
+
Object.entries(laneStates).map(([k, hostState]) => [k, { hostState }])
|
|
634
715
|
),
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
716
|
+
onChange: (next) => {
|
|
717
|
+
setLaneStates(
|
|
718
|
+
Object.fromEntries(Object.entries(next).map(([k, e]) => [k, e.hostState]))
|
|
719
|
+
);
|
|
720
|
+
setValidation(null);
|
|
721
|
+
},
|
|
722
|
+
createIfMissing: {
|
|
723
|
+
value: laneCreate,
|
|
724
|
+
onChange: (key, checked) => {
|
|
725
|
+
setLaneCreate((c) => ({ ...c, [key]: checked }));
|
|
726
|
+
setValidation(null);
|
|
640
727
|
}
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
728
|
+
}
|
|
729
|
+
}
|
|
730
|
+
)
|
|
644
731
|
] }),
|
|
645
732
|
/* @__PURE__ */ jsxs("section", { style: S.sec, "aria-label": "Field map", children: [
|
|
646
733
|
/* @__PURE__ */ jsxs("div", { style: S.lbl, children: [
|
|
@@ -815,6 +902,6 @@ function BoardHostMapping({
|
|
|
815
902
|
] });
|
|
816
903
|
}
|
|
817
904
|
|
|
818
|
-
export { BoardHostMapping, BoardHostMappingProvider, WIDGET_IDENTIFIER_PATTERN, collectDueRefs, identifierError, isValidIdentifier, isValidJsonPath, useBoardHostMappingAdapter, useBoardHostMappingAdapterOptional };
|
|
905
|
+
export { BoardHostMapping, BoardHostMappingProvider, LaneMapStep, WIDGET_IDENTIFIER_PATTERN, collectDueRefs, identifierError, isValidIdentifier, isValidJsonPath, useBoardHostMappingAdapter, useBoardHostMappingAdapterOptional };
|
|
819
906
|
//# sourceMappingURL=index.js.map
|
|
820
907
|
//# sourceMappingURL=index.js.map
|