@declarion/react 0.45.0 → 0.48.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/dist-lib/{DraggableChildrenTable-BDnJK0AU.js → DraggableChildrenTable-p2ZSdwzj.js} +2 -2
  2. package/dist-lib/{DynamicIcon-DeRpAaXm.js → DynamicIcon-Dc2j-rg_.js} +19 -17
  3. package/dist-lib/{Grid-CcCveEE7.js → Grid-CjLFAKMZ.js} +2 -2
  4. package/dist-lib/{LayoutRenderer-BReuhVdX.js → LayoutRenderer-X3p4yfo_.js} +598 -585
  5. package/dist-lib/{MarkdownRenderer-DPKDFR60.js → MarkdownRenderer-Sb7zcvj0.js} +10 -10
  6. package/dist-lib/{RefreshControl-KddgOhUG.js → RefreshControl-Cnl9nE0x.js} +268 -238
  7. package/dist-lib/{SmartDetailPage.impl-D_hMxiHy.js → SmartDetailPage.impl-bb0UNOII.js} +545 -532
  8. package/dist-lib/{SmartRecordListPage.impl-GIo_mPIJ.js → SmartRecordListPage.impl-BFh8auUZ.js} +171 -158
  9. package/dist-lib/api/agents.d.ts +47 -18
  10. package/dist-lib/components/agents/AgentChatPanel.d.ts +7 -1
  11. package/dist-lib/components/agents/AgentPicker.d.ts +9 -0
  12. package/dist-lib/components/agents/transcript-runs.d.ts +29 -0
  13. package/dist-lib/components/file-widgets/host.d.ts +1 -0
  14. package/dist-lib/components/list/QuickPeek.d.ts +1 -1
  15. package/dist-lib/components/pages/list/ListFloatbar.d.ts +4 -2
  16. package/dist-lib/components/pages/list/cardProjection.d.ts +2 -1
  17. package/dist-lib/components/primitives/Tooltip.d.ts +4 -0
  18. package/dist-lib/components/shared/ResponsiveActionBar.d.ts +10 -5
  19. package/dist-lib/components/shared/RowActionsKebab.d.ts +3 -2
  20. package/dist-lib/components/views/ViewSwitcher.d.ts +2 -1
  21. package/dist-lib/declarion-react.css +1 -1
  22. package/dist-lib/hooks/useAgentConversation.d.ts +10 -24
  23. package/dist-lib/hooks/useBrandingChrome.d.ts +11 -0
  24. package/dist-lib/hooks/useFilters.d.ts +1 -0
  25. package/dist-lib/hooks/useLongPress.d.ts +29 -0
  26. package/dist-lib/hooks/useResponsiveMode.d.ts +2 -21
  27. package/dist-lib/icons.js +1 -1
  28. package/dist-lib/index.d.ts +10 -3
  29. package/dist-lib/index.js +3305 -2741
  30. package/dist-lib/lib/actions.d.ts +13 -5
  31. package/dist-lib/lib/filter-evaluator.d.ts +16 -0
  32. package/dist-lib/lib/filters.d.ts +10 -4
  33. package/dist-lib/lib/longPressGesture.d.ts +55 -0
  34. package/dist-lib/lib/messages.d.ts +1 -0
  35. package/dist-lib/lib/page-inset.d.ts +3 -0
  36. package/dist-lib/lib/variants.d.ts +7 -0
  37. package/dist-lib/lib/viewport-category.d.ts +44 -0
  38. package/dist-lib/{registry-DJKp0yaV.js → registry-CWDnxiLJ.js} +1291 -1008
  39. package/dist-lib/testing.js +10 -10
  40. package/dist-lib/types/api.d.ts +15 -2
  41. package/dist-lib/types/schema.d.ts +26 -0
  42. package/dist-lib/{useCurrentScreen-A3xZDs7U.js → useCurrentScreen-BshVTPVq.js} +1124 -1088
  43. package/dist-lib/{useProperties-TlltWwLv.js → useProperties-B5p9mIH8.js} +92 -61
  44. package/dist-lib/{value-CHY7LgZ-.js → value-B1O6QikE.js} +1 -1
  45. package/dist-lib/vite/index.js +23 -22
  46. package/package.json +12 -12
  47. package/dist-lib/components/agents/AgentVisualHints.d.ts +0 -6
@@ -1,5 +1,5 @@
1
- import { Gt as e, Kt as t, Ln as n, Tn as r, bt as i, pn as a, pt as o, rt as s } from "./useCurrentScreen-A3xZDs7U.js";
2
- import { ut as c } from "./registry-DJKp0yaV.js";
1
+ import { Gt as e, Kt as t, Ln as n, Tn as r, bt as i, pn as a, pt as o, rt as s } from "./useCurrentScreen-BshVTPVq.js";
2
+ import { vt as c } from "./registry-CWDnxiLJ.js";
3
3
  import { useEffect as l, useLayoutEffect as u, useMemo as d } from "react";
4
4
  import { useSearchParams as f } from "react-router";
5
5
  import { useInfiniteQuery as p, useMutation as m, useQueryClient as h } from "@tanstack/react-query";
@@ -72,17 +72,17 @@ var x = class {
72
72
  }
73
73
  async createMany(e) {
74
74
  if (e.length === 0) return [];
75
- let n = await t("system.batch", {
76
- actions: e.map((e) => ({
77
- action: `${this.entity}.__create`,
78
- params: {
79
- entity: this.entity,
80
- fields: e
81
- }
82
- })),
75
+ let n = e.map((e) => ({
76
+ action: `${this.entity}.__create`,
77
+ params: {
78
+ entity: this.entity,
79
+ fields: e
80
+ }
81
+ })), r = await t("system.batch", {
82
+ actions: n,
83
83
  atomic: !0
84
84
  });
85
- return S(n, `${this.entity}.__create`), n.results.map((e) => v(C(e)));
85
+ return S(r, `${this.entity}.__create`), r.results.map((e) => v(C(e)));
86
86
  }
87
87
  async update(e, t) {
88
88
  return (await this.updateMany([{
@@ -92,18 +92,18 @@ var x = class {
92
92
  }
93
93
  async updateMany(e) {
94
94
  if (e.length === 0) return [];
95
- let n = await t("system.batch", {
96
- actions: e.map(({ id: e, ...t }) => ({
97
- action: `${this.entity}.__update`,
98
- params: {
99
- object_ids: [e],
100
- entity: this.entity,
101
- fields: t
102
- }
103
- })),
95
+ let n = e.map(({ id: e, ...t }) => ({
96
+ action: `${this.entity}.__update`,
97
+ params: {
98
+ object_ids: [e],
99
+ entity: this.entity,
100
+ fields: t
101
+ }
102
+ })), r = await t("system.batch", {
103
+ actions: n,
104
104
  atomic: !0
105
105
  });
106
- return S(n, `${this.entity}.__update`), n.results.map((e) => v(C(e)));
106
+ return S(r, `${this.entity}.__update`), r.results.map((e) => v(C(e)));
107
107
  }
108
108
  async delete(e) {
109
109
  await this.deleteMany([e]);
@@ -128,18 +128,18 @@ var x = class {
128
128
  }
129
129
  async upsertMany(e, n) {
130
130
  if (e.length === 0) return [];
131
- let r = await t("system.batch", {
132
- actions: e.map((e) => ({
133
- action: `${this.entity}.__upsert`,
134
- params: {
135
- entity: this.entity,
136
- fields: e,
137
- unique_by: n
138
- }
139
- })),
131
+ let r = e.map((e) => ({
132
+ action: `${this.entity}.__upsert`,
133
+ params: {
134
+ entity: this.entity,
135
+ fields: e,
136
+ unique_by: n
137
+ }
138
+ })), i = await t("system.batch", {
139
+ actions: r,
140
140
  atomic: !0
141
141
  });
142
- return S(r, `${this.entity}.__upsert`), r.results.map((e) => v(w(e)));
142
+ return S(i, `${this.entity}.__upsert`), i.results.map((e) => v(w(e)));
143
143
  }
144
144
  };
145
145
  function S(e, t) {
@@ -303,32 +303,49 @@ var N = /* @__PURE__ */ new Set([
303
303
  };
304
304
  function I(e) {
305
305
  let t = e.get("filters");
306
- if (!t) return [];
306
+ if (t == null || t === "") return {
307
+ filters: [],
308
+ error: null
309
+ };
307
310
  try {
308
- let e = JSON.parse(t);
309
- return Array.isArray(e) ? e.filter((e) => typeof e == "object" && !!e) : [];
311
+ return {
312
+ filters: L(e),
313
+ error: null
314
+ };
315
+ } catch (e) {
316
+ return {
317
+ filters: [],
318
+ error: e instanceof Error ? e.message : "The filters URL value is invalid."
319
+ };
320
+ }
321
+ }
322
+ function L(e) {
323
+ let t = e.get("filters");
324
+ if (t == null || t === "") return [];
325
+ let n;
326
+ try {
327
+ n = JSON.parse(t);
310
328
  } catch {
311
- return [];
329
+ throw Error("The filters URL value is not valid JSON.");
312
330
  }
331
+ if (!Array.isArray(n) || !n.every(G)) throw Error("The filters URL value is not a valid filter tree.");
332
+ return n;
313
333
  }
314
- function L(e, t) {
334
+ function R(e, t) {
315
335
  e.length === 0 ? t.delete("filters") : t.set("filters", JSON.stringify(e));
316
336
  }
317
- function R(e) {
318
- return e.some((e) => e.or != null);
319
- }
320
337
  function z(e) {
338
+ return e.some((e) => !e || typeof e != "object" ? !1 : e.or != null || e.and != null && z(e.and));
339
+ }
340
+ function B(e) {
321
341
  let t = [];
322
- for (let n of e) if (!(!n || typeof n != "object")) {
323
- if (n.field && n.op && t.push(n), n.or) for (let e of n.or) t.push(...z(e));
324
- n.and && t.push(...z(n.and));
325
- }
342
+ for (let n of e) !n || typeof n != "object" || (n.field && n.op && t.push(n), n.or && t.push(...B(n.or)), n.and && t.push(...B(n.and)));
326
343
  return t;
327
344
  }
328
- function B(e) {
329
- return z(e).length;
345
+ function V(e) {
346
+ return B(e).length;
330
347
  }
331
- function V(e, t) {
348
+ function H(e, t) {
332
349
  if (!e.field || !e.op) return "";
333
350
  let r = F[e.op] || e.op;
334
351
  if (N.has(e.op)) return `${r}`;
@@ -341,18 +358,18 @@ function V(e, t) {
341
358
  };
342
359
  return `${r} ${Array.isArray(e.value) ? e.value.map(a).join(", ") : a(e.value)}`;
343
360
  }
344
- function H(e, t) {
361
+ function U(e, t) {
345
362
  return {
346
363
  field: e,
347
364
  op: "eq",
348
365
  value: t
349
366
  };
350
367
  }
351
- function U(e, t) {
368
+ function W(e, t) {
352
369
  let n = [];
353
- for (let r of e) if (r.field !== t) {
370
+ for (let r of e) if (!(!r || typeof r != "object") && r.field !== t) {
354
371
  if (r.or) {
355
- let e = r.or.map((e) => U(e, t)).filter((e) => e.length > 0);
372
+ let e = W(r.or, t);
356
373
  e.length > 0 && n.push({
357
374
  ...r,
358
375
  or: e
@@ -360,7 +377,7 @@ function U(e, t) {
360
377
  continue;
361
378
  }
362
379
  if (r.and) {
363
- let e = U(r.and, t);
380
+ let e = W(r.and, t);
364
381
  e.length > 0 && n.push({
365
382
  ...r,
366
383
  and: e
@@ -371,9 +388,23 @@ function U(e, t) {
371
388
  }
372
389
  return n;
373
390
  }
391
+ function G(e) {
392
+ if (typeof e != "object" || !e || Array.isArray(e)) return !1;
393
+ let t = e, n = Object.prototype.hasOwnProperty.call(t, "field"), r = Object.prototype.hasOwnProperty.call(t, "op"), i = Object.prototype.hasOwnProperty.call(t, "value"), a = Object.prototype.hasOwnProperty.call(t, "or"), o = Object.prototype.hasOwnProperty.call(t, "and");
394
+ if (a && o) return !1;
395
+ if (a || o) {
396
+ if (n || r || i) return !1;
397
+ let e = a ? t.or : t.and;
398
+ return Array.isArray(e) && e.length > 0 && e.every(G);
399
+ }
400
+ if (!(n && r && typeof t.field == "string" && t.field.length > 0 && typeof t.op == "string" && K.has(t.op))) return !1;
401
+ let s = t.op;
402
+ return N.has(s) ? !i || t.value === null : i && t.value !== null;
403
+ }
404
+ var K = new Set(Object.keys(F));
374
405
  //#endregion
375
406
  //#region src/api/status.ts
376
- async function W(e, t, n, r, a) {
407
+ async function q(e, t, n, r, a) {
377
408
  let o = {
378
409
  status_group_code: n,
379
410
  status_code: r
@@ -388,10 +419,10 @@ async function W(e, t, n, r, a) {
388
419
  }
389
420
  //#endregion
390
421
  //#region src/hooks/useObjectStatus.ts
391
- function G(e, t) {
422
+ function J(e, t) {
392
423
  let n = h();
393
424
  return m({
394
- mutationFn: ({ groupCode: n, statusCode: r, note: i }) => W(e, t, n, r, i),
425
+ mutationFn: ({ groupCode: n, statusCode: r, note: i }) => q(e, t, n, r, i),
395
426
  onSuccess: () => {
396
427
  n.invalidateQueries({ queryKey: ["entity-item", e] });
397
428
  },
@@ -402,7 +433,7 @@ function G(e, t) {
402
433
  }
403
434
  //#endregion
404
435
  //#region src/api/properties.ts
405
- async function K(e, t, n, r) {
436
+ async function Y(e, t, n, r) {
406
437
  let a = (await i(`${e}.__update`, {
407
438
  object_ids: [t],
408
439
  entity: e,
@@ -413,7 +444,7 @@ async function K(e, t, n, r) {
413
444
  })).result?.rows?.[0]?.$properties ?? [];
414
445
  return a.find((e) => e.property_code === n) ?? a[0];
415
446
  }
416
- async function q(e, t, n) {
447
+ async function X(e, t, n) {
417
448
  await i(`${e}.__update`, {
418
449
  object_ids: [t],
419
450
  entity: e,
@@ -425,10 +456,10 @@ async function q(e, t, n) {
425
456
  }
426
457
  //#endregion
427
458
  //#region src/hooks/useProperties.ts
428
- function J(e, t) {
459
+ function Z(e, t) {
429
460
  let n = h();
430
461
  return m({
431
- mutationFn: ({ propertyCode: n, value: r }) => K(e, t, n, r),
462
+ mutationFn: ({ propertyCode: n, value: r }) => Y(e, t, n, r),
432
463
  onSuccess: () => {
433
464
  n.invalidateQueries({ queryKey: ["entity-item", e] });
434
465
  },
@@ -437,10 +468,10 @@ function J(e, t) {
437
468
  }
438
469
  });
439
470
  }
440
- function Y(e, t) {
471
+ function Q(e, t) {
441
472
  let n = h();
442
473
  return m({
443
- mutationFn: (n) => q(e, t, n),
474
+ mutationFn: (n) => X(e, t, n),
444
475
  onSuccess: () => {
445
476
  n.invalidateQueries({ queryKey: ["entity-item", e] });
446
477
  },
@@ -450,4 +481,4 @@ function Y(e, t) {
450
481
  });
451
482
  }
452
483
  //#endregion
453
- export { y as C, x as S, A as _, N as a, D as b, H as c, R as d, I as f, j as g, M as h, P as i, z as l, L as m, J as n, F as o, U as p, G as r, B as s, Y as t, V as u, E as v, T as w, k as x, O as y };
484
+ export { x as C, k as S, T, j as _, N as a, O as b, U as c, z as d, I as f, M as g, R as h, P as i, B as l, W as m, Z as n, F as o, L as p, J as r, V as s, Q as t, H as u, A as v, y as w, D as x, E as y };
@@ -1,4 +1,4 @@
1
- import { $t as e, en as t, rn as n } from "./useCurrentScreen-A3xZDs7U.js";
1
+ import { $t as e, en as t, rn as n } from "./useCurrentScreen-BshVTPVq.js";
2
2
  import { useCallback as r, useEffect as i, useRef as a, useState as o } from "react";
3
3
  //#region src/embed/file-src.ts
4
4
  var s = "/api/files";
@@ -1,44 +1,45 @@
1
1
  import { createHash as e } from "node:crypto";
2
- import { readFileSync as t, readdirSync as n, statSync as r, writeFileSync as i } from "node:fs";
3
- import { join as a } from "node:path";
2
+ import { mkdirSync as t, readFileSync as n, readdirSync as r, statSync as i, writeFileSync as a } from "node:fs";
3
+ import { join as o } from "node:path";
4
4
  //#region src/vite/fingerprint-plugin.ts
5
- function o(n = {}) {
6
- let r = n.filename ?? "bundle-fingerprint.txt";
5
+ function s(r = {}) {
6
+ let i = r.filename ?? "bundle-fingerprint.txt";
7
7
  return {
8
8
  name: "declarion-fingerprint",
9
9
  apply: "build",
10
- closeBundle: {
10
+ writeBundle: {
11
+ order: "post",
11
12
  sequential: !0,
12
13
  handler() {
13
- let o = this.environment.config, c = o.build.outDir, l = a(c, n.assetsDir ?? o.build.assetsDir ?? "assets"), u = s(l);
14
- u.sort();
15
- let d = e("sha256");
16
- for (let n of u) {
17
- let r = a(l, n), i = e("sha256").update(t(r)).digest("hex");
18
- d.update(`${n.length}:${n}\n`), d.update(`${i.length}:${i}\n`);
14
+ let s = this.environment.config, l = s.build.outDir, u = r.assetsDir ?? s.build.assetsDir ?? "assets", d = o(l, u), f = c(d);
15
+ f.sort();
16
+ let p = e("sha256");
17
+ for (let t of f) {
18
+ let r = o(d, t), i = e("sha256").update(n(r)).digest("hex");
19
+ p.update(`${t.length}:${t}\n`), p.update(`${i.length}:${i}\n`);
19
20
  }
20
- let f = d.digest("hex");
21
- i(a(c, r), f + "\n", "utf8");
21
+ let m = p.digest("hex");
22
+ t(l, { recursive: !0 }), a(o(l, i), m + "\n", "utf8");
22
23
  }
23
24
  }
24
25
  };
25
26
  }
26
- function s(e) {
27
- let t = [], i = [{
27
+ function c(e) {
28
+ let t = [], n = [{
28
29
  abs: e,
29
30
  rel: ""
30
31
  }];
31
- for (; i.length > 0;) {
32
- let { abs: e, rel: o } = i.pop(), s;
32
+ for (; n.length > 0;) {
33
+ let { abs: e, rel: a } = n.pop(), s;
33
34
  try {
34
- s = n(e);
35
+ s = r(e);
35
36
  } catch (e) {
36
37
  if (e && typeof e == "object" && "code" in e && e.code === "ENOENT") return [];
37
38
  throw e;
38
39
  }
39
- for (let n of s) {
40
- let s = a(e, n), c = o ? `${o}/${n}` : n;
41
- r(s).isDirectory() ? i.push({
40
+ for (let r of s) {
41
+ let s = o(e, r), c = a ? `${a}/${r}` : r;
42
+ i(s).isDirectory() ? n.push({
42
43
  abs: s,
43
44
  rel: c
44
45
  }) : t.push(c);
@@ -47,4 +48,4 @@ function s(e) {
47
48
  return t;
48
49
  }
49
50
  //#endregion
50
- export { o as declarionFingerprintPlugin };
51
+ export { s as declarionFingerprintPlugin };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@declarion/react",
3
- "version": "0.45.0",
3
+ "version": "0.48.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "React SDK for Declarion, the schema-driven business apps platform.",
@@ -67,11 +67,11 @@
67
67
  "@radix-ui/react-slot": "^1.3.3",
68
68
  "@tanstack/react-query": "^5.101.4",
69
69
  "@tanstack/react-table": "^8.21.3",
70
- "@tanstack/react-virtual": "^3.14.8",
70
+ "@tanstack/react-virtual": "^3.14.9",
71
71
  "class-variance-authority": "^0.7.1",
72
72
  "clsx": "^2.1.1",
73
73
  "date-fns": "^4.4.0",
74
- "lucide-react": "^1.27.0",
74
+ "lucide-react": "^1.30.0",
75
75
  "mdast-util-to-string": "^4.0.0",
76
76
  "monaco-editor": "^0.56.0",
77
77
  "react-markdown": "^10.1.0",
@@ -94,24 +94,24 @@
94
94
  "@testing-library/dom": "^10.4.1",
95
95
  "@testing-library/jest-dom": "^7.0.0",
96
96
  "@testing-library/react": "^16.3.2",
97
- "@testing-library/user-event": "^14.6.1",
98
- "@types/react": "^19.2.17",
99
- "@types/react-dom": "^19.2.3",
100
- "@vitejs/plugin-react": "^6.0.4",
97
+ "@testing-library/user-event": "^14.6.3",
98
+ "@types/react": "^19.2.18",
99
+ "@types/react-dom": "^19.2.4",
100
+ "@vitejs/plugin-react": "^6.0.5",
101
101
  "@vitest/coverage-v8": "^4.1.10",
102
- "axe-core": "^4.12.1",
103
- "eslint": "^10.8.0",
102
+ "axe-core": "^4.13.0",
103
+ "eslint": "^10.8.1",
104
104
  "eslint-plugin-react-hooks": "^7.1.1",
105
105
  "jsdom": "^29.1.1",
106
106
  "msw": "^2.15.0",
107
- "publint": "^0.3.22",
107
+ "publint": "^0.3.23",
108
108
  "react": "^19.2.8",
109
109
  "react-dom": "^19.2.8",
110
110
  "tailwindcss": "^4.3.3",
111
111
  "tsc-alias": "^1.9.1",
112
112
  "typescript": "^6.0.3",
113
- "typescript-eslint": "^8.65.0",
114
- "vite": "^8.1.5",
113
+ "typescript-eslint": "^8.66.0",
114
+ "vite": "^8.2.1",
115
115
  "vitest": "^4.1.10"
116
116
  },
117
117
  "scripts": {
@@ -1,6 +0,0 @@
1
- import type { AgentTurnState } from "../../hooks/useAgentConversation";
2
- export interface AgentVisualHintsProps {
3
- turn: AgentTurnState;
4
- navigate?: (path: string) => void;
5
- }
6
- export declare function AgentVisualHints({ turn, navigate }: AgentVisualHintsProps): null;