@base-framework/ui 0.0.16 → 0.0.20

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.
@@ -1,22 +1,22 @@
1
- import { Button as w, Div as o, On as j, Span as y, Th as O, UseParent as z, I as Y, Thead as U, Tr as F, Table as E, P as g, Li as v, Time as Q, Nav as D, Ul as p, Section as B } from "@base-framework/atoms";
2
- import { Atom as d, Component as u, Data as S, DateTime as H, Jot as I, router as b, NavLink as M } from "@base-framework/base";
3
- import { B as R, I as T } from "./icon-B9QUT2NY.js";
4
- import { Icons as k } from "./icons.es.js";
5
- import { TableBody as K, List as _ } from "@base-framework/organisms";
6
- import { C as G, I as V } from "./inputs-O_WkdbI3.js";
7
- import { A as q, P as J } from "./calendar-B5TK6tLi.js";
8
- d((t, e) => ({
1
+ import { Button as v, Div as o, On as U, Span as y, Th as O, UseParent as Y, I as E, Thead as F, Tr as H, Table as Q, P as m, Li as D, Time as X, Nav as S, Ul as b, Section as P } from "@base-framework/atoms";
2
+ import { Atom as u, Component as f, Data as L, DateTime as q, Jot as R, router as k, NavLink as M, base as B, Dom as I } from "@base-framework/base";
3
+ import { B as C, I as z } from "./icon-B9QUT2NY.js";
4
+ import { Icons as w } from "./icons.es.js";
5
+ import { TableBody as K, List as _, IntervalTimer as G } from "@base-framework/organisms";
6
+ import { C as V, I as J, H as Z } from "./inputs-O_WkdbI3.js";
7
+ import { A as ee, P as te } from "./calendar-B5TK6tLi.js";
8
+ u((t, e) => ({
9
9
  class: "flex items-center px-4 py-2",
10
10
  ...t,
11
11
  children: e
12
12
  }));
13
- d(({ value: t, label: e }) => w({
13
+ u(({ value: t, label: e }) => v({
14
14
  class: "inline-flex flex-auto items-center justify-center whitespace-nowrap rounded-md px-8 py-1 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow",
15
15
  onState: ["performance", { active: t }],
16
16
  dataSet: ["performance", ["state", t, "active"]],
17
- click: (s, { state: n }) => n.performance = t
17
+ click: (s, { state: a }) => a.performance = t
18
18
  }, e));
19
- class Ee extends u {
19
+ class Ke extends f {
20
20
  /**
21
21
  * This will declare the props for the compiler.
22
22
  *
@@ -34,55 +34,55 @@ class Ee extends u {
34
34
  return o({ class: this.class || "" }, this.children);
35
35
  }
36
36
  }
37
- const X = (t) => {
37
+ const se = (t) => {
38
38
  const e = new Date(t, 11, 31), s = new Date(t, 0, 1);
39
39
  return e.getDay() === 4 || // December 31 is a Thursday
40
40
  s.getDay() === 4;
41
- }, Z = (t) => {
41
+ }, ae = (t) => {
42
42
  const e = new Date(t.valueOf()), s = (e.getDay() + 6) % 7;
43
43
  e.setDate(e.getDate() - s + 3);
44
- const n = e.getFullYear(), a = new Date(n, 0, 4);
45
- a.setDate(a.getDate() - (a.getDay() + 6) % 7);
46
- const i = Math.ceil((e - a) / 6048e5) + 1;
47
- return i > 52 && !X(n) ? {
44
+ const a = e.getFullYear(), n = new Date(a, 0, 4);
45
+ n.setDate(n.getDate() - (n.getDay() + 6) % 7);
46
+ const i = Math.ceil((e - n) / 6048e5) + 1;
47
+ return i > 52 && !se(a) ? {
48
48
  weekNumber: 1,
49
- year: n + 1
49
+ year: a + 1
50
50
  } : {
51
51
  weekNumber: i,
52
- year: n
52
+ year: a
53
53
  };
54
- }, ee = (t, e, s) => {
54
+ }, ne = (t, e, s) => {
55
55
  if (s === 0) return [];
56
- const n = new Date(t, e, 0).getDate();
56
+ const a = new Date(t, e, 0).getDate();
57
57
  return Array.from(
58
58
  { length: s },
59
- (a, i) => new Date(t, e - 1, n - s + i + 1)
59
+ (n, i) => new Date(t, e - 1, a - s + i + 1)
60
60
  );
61
- }, te = (t, e, s) => Array.from({ length: s }, (n, a) => new Date(t, e + 1, a + 1)), L = (t, e) => {
62
- const s = new Date(e, 0, 4), n = (s.getDay() + 6) % 7, a = new Date(s);
63
- a.setDate(s.getDate() - n);
64
- const i = new Date(a);
65
- return i.setDate(a.getDate() + (t - 1) * 7), i;
66
- }, Qe = (t, e) => {
67
- const s = new Date(t, e, 1).getDay(), n = new Date(t, e + 1, 0).getDate(), a = [];
61
+ }, ie = (t, e, s) => Array.from({ length: s }, (a, n) => new Date(t, e + 1, n + 1)), T = (t, e) => {
62
+ const s = new Date(e, 0, 4), a = (s.getDay() + 6) % 7, n = new Date(s);
63
+ n.setDate(s.getDate() - a);
64
+ const i = new Date(n);
65
+ return i.setDate(n.getDate() + (t - 1) * 7), i;
66
+ }, _e = (t, e) => {
67
+ const s = new Date(t, e, 1).getDay(), a = new Date(t, e + 1, 0).getDate(), n = [];
68
68
  let i = [];
69
- for (let r = 1 - s; r <= n; r++) {
70
- const h = new Date(t, e, r);
71
- i.push(r > 0 ? h : null), (i.length === 7 || r === n) && (a.push([...i]), i = []);
72
- }
73
- return a;
74
- }, He = (t, e) => {
75
- const s = new Date(t, e + 1, 0).getDate(), n = [];
76
- let a = [];
69
+ for (let l = 1 - s; l <= a; l++) {
70
+ const d = new Date(t, e, l);
71
+ i.push(l > 0 ? d : null), (i.length === 7 || l === a) && (n.push([...i]), i = []);
72
+ }
73
+ return n;
74
+ }, Ge = (t, e) => {
75
+ const s = new Date(t, e + 1, 0).getDate(), a = [];
76
+ let n = [];
77
77
  for (let i = 1; i <= s; i++)
78
- a.push(new Date(t, e, i)), a.length === 7 && (n.push(a), a = []);
79
- return a.length > 0 && n.push(a), n;
80
- }, se = (t, e, s) => {
81
- const n = /* @__PURE__ */ new Date();
82
- return n.getDate() === t && n.getMonth() === e && n.getFullYear() === s;
83
- }, ne = ({ day: t, month: e, year: s, weekNumber: n, selectWeek: a }) => {
84
- const i = se(t, e, s);
85
- return w({
78
+ n.push(new Date(t, e, i)), n.length === 7 && (a.push(n), n = []);
79
+ return n.length > 0 && a.push(n), a;
80
+ }, oe = (t, e, s) => {
81
+ const a = /* @__PURE__ */ new Date();
82
+ return a.getDate() === t && a.getMonth() === e && a.getFullYear() === s;
83
+ }, le = ({ day: t, month: e, year: s, weekNumber: a, selectWeek: n }) => {
84
+ const i = oe(t, e, s);
85
+ return v({
86
86
  text: t || "",
87
87
  disabled: !t,
88
88
  class: `
@@ -90,21 +90,21 @@ const X = (t) => {
90
90
  ${i ? "bg-accent text-accent-foreground" : ""}
91
91
  hover:bg-primary hover:text-primary-foreground
92
92
  `,
93
- click: () => a(n, s)
93
+ click: () => n(a, s)
94
94
  });
95
- }, ae = (t, e) => {
96
- const s = new Date(t, e, 1).getDay(), n = new Date(t, e + 1, 0).getDate(), a = ee(t, e, s), i = Array.from({ length: n }, (l, x) => new Date(t, e, x + 1)), r = (a.length + i.length) % 7, h = r === 0 ? 0 : 7 - r, c = te(t, e, h), f = [...a, ...i, ...c], m = [];
97
- for (let l = 0; l < f.length; l += 7) {
98
- const x = f.slice(l, l + 7), W = x.find((A) => A) || new Date(t, e, 1), { weekNumber: $, year: P } = Z(W);
99
- m.push({
95
+ }, re = (t, e) => {
96
+ const s = new Date(t, e, 1).getDay(), a = new Date(t, e + 1, 0).getDate(), n = ne(t, e, s), i = Array.from({ length: a }, (r, p) => new Date(t, e, p + 1)), l = (n.length + i.length) % 7, d = l === 0 ? 0 : 7 - l, c = ie(t, e, d), h = [...n, ...i, ...c], g = [];
97
+ for (let r = 0; r < h.length; r += 7) {
98
+ const p = h.slice(r, r + 7), x = p.find((j) => j) || new Date(t, e, 1), { weekNumber: $, year: A } = ae(x);
99
+ g.push({
100
100
  weekNumber: $,
101
- year: P,
102
- days: x
101
+ year: A,
102
+ days: p
103
103
  });
104
104
  }
105
- return m;
106
- }, ie = ({ selectWeek: t }) => j("month", (e, s, { data: n }) => {
107
- const { year: a, month: i, currentDate: r } = n, h = ae(a, i);
105
+ return g;
106
+ }, ce = ({ selectWeek: t }) => U("month", (e, s, { data: a }) => {
107
+ const { year: n, month: i, currentDate: l } = a, d = re(n, i);
108
108
  return o(
109
109
  { class: "grid grid-cols-8 gap-1 text-sm px-4 py-2" },
110
110
  [
@@ -119,8 +119,8 @@ const X = (t) => {
119
119
  )
120
120
  ),
121
121
  // Render each "week" row
122
- ...h.map(
123
- ({ weekNumber: c, days: f, year: m }) => o({
122
+ ...d.map(
123
+ ({ weekNumber: c, days: h, year: g }) => o({
124
124
  class: "grid grid-cols-8 col-span-8 items-center ring-primary rounded-sm px-1",
125
125
  onSet: ["currentWeek", {
126
126
  ring: c
@@ -129,7 +129,7 @@ const X = (t) => {
129
129
  // Left column: ISO week number
130
130
  o({
131
131
  class: "font-medium text-center col-span-1 rounded-sm cursor-pointer",
132
- click: () => t(c, m),
132
+ click: () => t(c, g),
133
133
  // If you have a 'currentWeek' state, you can highlight it with 'onSet'
134
134
  onSet: ["currentWeek", {
135
135
  "text-primary-foreground": c,
@@ -140,14 +140,14 @@ const X = (t) => {
140
140
  // The 7 cells for each day in the row
141
141
  o(
142
142
  { class: "grid grid-cols-7 col-span-7 text-center" },
143
- f.map(
144
- (l) => ne({
145
- year: (l == null ? void 0 : l.getFullYear()) || null,
146
- month: (l == null ? void 0 : l.getMonth()) || null,
147
- day: (l == null ? void 0 : l.getDate()) || null,
148
- week: f,
143
+ h.map(
144
+ (r) => le({
145
+ year: (r == null ? void 0 : r.getFullYear()) || null,
146
+ month: (r == null ? void 0 : r.getMonth()) || null,
147
+ day: (r == null ? void 0 : r.getDate()) || null,
148
+ week: h,
149
149
  weekNumber: c,
150
- currentDate: r,
150
+ currentDate: l,
151
151
  selectWeek: t
152
152
  })
153
153
  )
@@ -156,7 +156,7 @@ const X = (t) => {
156
156
  )
157
157
  ]
158
158
  );
159
- }), C = ({ label: t, click: e }) => R(
159
+ }), W = ({ label: t, click: e }) => C(
160
160
  {
161
161
  class: `
162
162
  inline-flex items-center justify-center h-7 w-7 bg-transparent p-0
@@ -167,20 +167,20 @@ const X = (t) => {
167
167
  click: e,
168
168
  "aria-label": `${t} month`,
169
169
  variant: "icon",
170
- icon: t === "Previous" ? k.chevron.single.left : k.chevron.single.right
170
+ icon: t === "Previous" ? w.chevron.single.left : w.chevron.single.right
171
171
  }
172
- ), oe = ({ next: t, previous: e }) => o({ class: "flex flex-auto min-h-12 text-sm font-medium relative justify-center items-center" }, [
172
+ ), de = ({ next: t, previous: e }) => o({ class: "flex flex-auto min-h-12 text-sm font-medium relative justify-center items-center" }, [
173
173
  y("[[monthName]] [[year]]"),
174
- C({
174
+ W({
175
175
  label: "Previous",
176
176
  click: e
177
177
  }),
178
- C({
178
+ W({
179
179
  label: "Next",
180
180
  click: t
181
181
  })
182
182
  ]);
183
- class Ke extends u {
183
+ class Ve extends f {
184
184
  /**
185
185
  * This will declare the props for the compiler.
186
186
  *
@@ -195,12 +195,12 @@ class Ke extends u {
195
195
  * @returns {Data}
196
196
  */
197
197
  setData() {
198
- const e = /* @__PURE__ */ new Date(), s = this.selectedWeek || this.calculateCurrentWeek(e), n = L(s, e.getFullYear());
199
- return new S({
200
- monthName: this.getMonthName(n.getMonth()),
201
- year: n.getFullYear(),
202
- month: n.getMonth(),
203
- currentDate: n.getDate(),
198
+ const e = /* @__PURE__ */ new Date(), s = this.selectedWeek || this.calculateCurrentWeek(e), a = T(s, e.getFullYear());
199
+ return new L({
200
+ monthName: this.getMonthName(a.getMonth()),
201
+ year: a.getFullYear(),
202
+ month: a.getMonth(),
203
+ currentDate: a.getDate(),
204
204
  currentWeek: s
205
205
  });
206
206
  }
@@ -221,10 +221,10 @@ class Ke extends u {
221
221
  * @returns {number}
222
222
  */
223
223
  calculateCurrentWeek(e) {
224
- const s = new Date(e.valueOf()), n = (e.getDay() + 6) % 7;
225
- s.setDate(s.getDate() - n + 3);
226
- const a = s.valueOf();
227
- return s.setMonth(0, 1), s.getDay() !== 4 && s.setMonth(0, 1 + (4 - s.getDay() + 7) % 7), 1 + Math.ceil((a - s) / 6048e5);
224
+ const s = new Date(e.valueOf()), a = (e.getDay() + 6) % 7;
225
+ s.setDate(s.getDate() - a + 3);
226
+ const n = s.valueOf();
227
+ return s.setMonth(0, 1), s.getDay() !== 4 && s.setMonth(0, 1 + (4 - s.getDay() + 7) % 7), 1 + Math.ceil((n - s) / 6048e5);
228
228
  }
229
229
  /**
230
230
  * Gets the name of the month.
@@ -233,7 +233,7 @@ class Ke extends u {
233
233
  * @returns {string}
234
234
  */
235
235
  getMonthName(e) {
236
- return H.monthNames[e];
236
+ return q.monthNames[e];
237
237
  }
238
238
  /**
239
239
  * Updates the calendar to show the previous month.
@@ -242,8 +242,8 @@ class Ke extends u {
242
242
  */
243
243
  goToPreviousMonth() {
244
244
  const e = this.data;
245
- let { year: s, month: n } = e;
246
- n === 0 ? (n = 11, s--) : n--, this.setDate(n, s);
245
+ let { year: s, month: a } = e;
246
+ a === 0 ? (a = 11, s--) : a--, this.setDate(a, s);
247
247
  }
248
248
  /**
249
249
  * Updates the calendar to show the next month.
@@ -252,8 +252,8 @@ class Ke extends u {
252
252
  */
253
253
  goToNextMonth() {
254
254
  const e = this.data;
255
- let { year: s, month: n } = e;
256
- n === 11 ? (n = 0, s++) : n++, this.setDate(n, s);
255
+ let { year: s, month: a } = e;
256
+ a === 11 ? (a = 0, s++) : a++, this.setDate(a, s);
257
257
  }
258
258
  /**
259
259
  * Sets the selected date.
@@ -263,12 +263,12 @@ class Ke extends u {
263
263
  * @param {number|null} [date=null]
264
264
  * @returns {void}
265
265
  */
266
- setDate(e, s, n) {
266
+ setDate(e, s, a) {
267
267
  this.data.set({
268
268
  year: s,
269
269
  month: e,
270
270
  monthName: this.getMonthName(e)
271
- }), n && (this.data.currentDate = n);
271
+ }), a && (this.data.currentDate = a);
272
272
  }
273
273
  /**
274
274
  * Handles week selection.
@@ -278,8 +278,8 @@ class Ke extends u {
278
278
  */
279
279
  selectWeek(e, s) {
280
280
  this.data.currentWeek = e;
281
- const n = L(e, s);
282
- this.setDate(n.getMonth(), n.getFullYear(), n.getDate()), typeof this.selectedCallBack == "function" && this.selectedCallBack(e);
281
+ const a = T(e, s);
282
+ this.setDate(a.getMonth(), a.getFullYear(), a.getDate()), typeof this.selectedCallBack == "function" && this.selectedCallBack(e);
283
283
  }
284
284
  /**
285
285
  * Renders the WeekCalendar component.
@@ -288,33 +288,33 @@ class Ke extends u {
288
288
  */
289
289
  render() {
290
290
  return o({ class: "week-calendar-container border rounded-md bg-background p-3" }, [
291
- oe({
291
+ de({
292
292
  next: () => this.goToNextMonth(),
293
293
  previous: () => this.goToPreviousMonth()
294
294
  }),
295
- ie({
295
+ ce({
296
296
  selectWeek: (e, s) => this.selectWeek(e, s)
297
297
  })
298
298
  ]);
299
299
  }
300
300
  }
301
- const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class || ""}` }, [
302
- z((e) => new G({ class: "mr-2", onChange: () => e.toggleAllSelectedRows() }))
303
- ]), re = ({ align: t, sortable: e, key: s, label: n, sort: a, class: i }) => {
304
- const r = t || "justify-start";
301
+ const he = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class || ""}` }, [
302
+ Y((e) => new V({ class: "mr-2", onChange: () => e.toggleAllSelectedRows() }))
303
+ ]), ue = ({ align: t, sortable: e, key: s, label: a, sort: n, class: i }) => {
304
+ const l = t || "justify-start";
305
305
  return O({
306
306
  class: `cursor-pointer py-3 px-4 text-base ${i || ""}`,
307
- click: e && (() => a(s))
307
+ click: e && (() => n(s))
308
308
  }, [
309
- o({ class: `flex flex-auto w-full items-center ${r}` }, [
310
- y(n),
311
- e && Y({ class: "ml-2", html: k.arrows.upDown })
309
+ o({ class: `flex flex-auto w-full items-center ${l}` }, [
310
+ y(a),
311
+ e && E({ class: "ml-2", html: w.arrows.upDown })
312
312
  ])
313
313
  ]);
314
- }, ce = (t) => U([
315
- F({
314
+ }, fe = (t) => F([
315
+ H({
316
316
  class: "text-muted-foreground border-b",
317
- map: [t.headers, (e) => e.label === "checkbox" ? le({ toggle: t.toggle }) : re({
317
+ map: [t.headers, (e) => e.label === "checkbox" ? he({ toggle: t.toggle }) : ue({
318
318
  align: e.align,
319
319
  sortable: e.sortable,
320
320
  key: e.key,
@@ -322,13 +322,13 @@ const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class
322
322
  sort: t.sort
323
323
  })]
324
324
  })
325
- ]), de = ({ key: t, rows: e, selectRow: s, rowItem: n }) => new K({
325
+ ]), ge = ({ key: t, rows: e, selectRow: s, rowItem: a }) => new K({
326
326
  cache: "table",
327
327
  key: t,
328
328
  items: e,
329
- rowItem: (a) => n(a, s),
329
+ rowItem: (n) => a(n, s),
330
330
  class: "divide-y divide-border"
331
- }), _e = I(
331
+ }), Je = R(
332
332
  {
333
333
  /**
334
334
  * Initializes component data.
@@ -336,7 +336,7 @@ const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class
336
336
  * @returns {Data}
337
337
  */
338
338
  setData() {
339
- return new S({
339
+ return new L({
340
340
  selectedRows: [],
341
341
  selected: !1
342
342
  });
@@ -386,8 +386,8 @@ const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class
386
386
  selectRow(t) {
387
387
  const e = t.selected ?? !1;
388
388
  t.selected = !e;
389
- const s = this.data.get("selectedRows"), n = t.selected ? [...s, t] : s.filter((a) => a !== t);
390
- this.data.selectedRows = n, this.updateSelected();
389
+ const s = this.data.get("selectedRows"), a = t.selected ? [...s, t] : s.filter((n) => n !== t);
390
+ this.data.selectedRows = a, this.updateSelected();
391
391
  },
392
392
  /**
393
393
  * Renders the DataTable component.
@@ -398,12 +398,12 @@ const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class
398
398
  const t = this.rows, e = this.border !== !1 ? "border" : "";
399
399
  return o({ class: "w-full" }, [
400
400
  o({ class: `w-full rounded-md ${e} overflow-x-auto` }, [
401
- E({ class: "w-full" }, [
401
+ Q({ class: "w-full" }, [
402
402
  // @ts-ignore
403
- this.headers && ce({ headers: this.headers, sort: (s) => this.sortRows(s) }),
403
+ this.headers && fe({ headers: this.headers, sort: (s) => this.sortRows(s) }),
404
404
  // @ts-ignore
405
405
  this.customHeader ?? null,
406
- de({
406
+ ge({
407
407
  // @ts-ignore
408
408
  key: this.key,
409
409
  rows: t,
@@ -476,45 +476,45 @@ const le = (t) => O({ class: `cursor-pointer py-3 px-4 text-base w-10 ${t.class
476
476
  this.data.selectedRows = [];
477
477
  }
478
478
  }
479
- ), ue = d(({ name: t, email: e }) => o({ class: "min-w-0 flex-auto" }, [
480
- g({ class: "text-base font-semibold leading-6 m-0" }, t),
481
- g({ class: "truncate text-sm leading-5 text-muted-foreground m-0" }, e)
482
- ])), he = () => o({ class: "flex items-center gap-x-1.5" }, [
479
+ ), pe = u(({ name: t, email: e }) => o({ class: "min-w-0 flex-auto" }, [
480
+ m({ class: "text-base font-semibold leading-6 m-0" }, t),
481
+ m({ class: "truncate text-sm leading-5 text-muted-foreground m-0" }, e)
482
+ ])), me = () => o({ class: "flex items-center gap-x-1.5" }, [
483
483
  o({ class: "flex-none rounded-full bg-emerald-500/20 p-1" }, [
484
484
  o({ class: "h-1.5 w-1.5 rounded-full bg-emerald-500" })
485
485
  ]),
486
- g({ class: "text-xs leading-5 text-gray-500" }, "Online")
487
- ]), fe = (t) => g({ class: "text-xs leading-5 text-muted-foreground" }, [
486
+ m({ class: "text-xs leading-5 text-gray-500" }, "Online")
487
+ ]), we = (t) => m({ class: "text-xs leading-5 text-muted-foreground" }, [
488
488
  y("Last seen "),
489
- Q({ datetime: t }, "3h ago")
490
- ]), ge = (t, e) => t === "online" ? he() : fe(e), pe = d(({ role: t, lastSeen: e, status: s }) => o({ class: "hidden shrink-0 sm:flex sm:flex-col sm:items-end" }, [
491
- g({ class: "text-sm leading-6 m-0" }, t),
492
- ge(s, e)
493
- ])), me = (t) => t.split(" ").map((s) => s[0]).join(""), xe = d((t) => v({ class: "fadeIn flex justify-between gap-x-6 py-4 px-4 rounded-md hover:bg-muted/50" }, [
489
+ X({ datetime: t }, "3h ago")
490
+ ]), be = (t, e) => t === "online" ? me() : we(e), xe = u(({ role: t, lastSeen: e, status: s }) => o({ class: "hidden shrink-0 sm:flex sm:flex-col sm:items-end" }, [
491
+ m({ class: "text-sm leading-6 m-0" }, t),
492
+ be(s, e)
493
+ ])), ke = (t) => t.split(" ").map((s) => s[0]).join(""), ve = u((t) => D({ class: "fadeIn flex justify-between gap-x-6 py-4 px-4 rounded-md hover:bg-muted/50" }, [
494
494
  o({ class: "flex min-w-0 gap-x-4" }, [
495
- q({ src: t.image, alt: t.name, fallbackText: me(t.name) }),
496
- ue({ name: t.name, email: t.email })
495
+ ee({ src: t.image, alt: t.name, fallbackText: ke(t.name) }),
496
+ pe({ name: t.name, email: t.email })
497
497
  ]),
498
- pe({
498
+ xe({
499
499
  role: t.role,
500
500
  lastSeen: t.lastSeen,
501
501
  status: t.status
502
502
  })
503
- ])), Ge = d((t) => new _({
503
+ ])), Ze = u((t) => new _({
504
504
  cache: "list",
505
505
  key: "name",
506
506
  items: t.users,
507
507
  role: "list",
508
508
  class: "divide-y divide-border",
509
- rowItem: xe
510
- })), be = (t, e) => e.includes(t), ke = (t, e, s) => t.exact ? s === e : be(e, s), we = ({ text: t, href: e, exact: s, hidden: n }) => new M({
509
+ rowItem: ve
510
+ })), ye = (t, e) => e.includes(t), De = (t, e, s) => t.exact ? s === e : ye(e, s), Se = ({ text: t, href: e, exact: s, hidden: a }) => new M({
511
511
  text: t,
512
512
  href: e,
513
513
  exact: s,
514
514
  dataSet: ["selected", ["state", !0, "active"]],
515
- class: `${n ? "hidden" : "inline-flex"} items-center justify-center whitespace-nowrap px-3 py-1.5 text-sm font-medium transition-all rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring focus-visible:ring-offset-background hover:bg-primary hover:text-primary-foreground disabled:opacity-50 disabled:pointer-events-none data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm`
515
+ class: `${a ? "hidden" : "inline-flex"} items-center justify-center whitespace-nowrap px-3 py-1.5 text-sm font-medium transition-all rounded-md focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:ring-ring focus-visible:ring-offset-background hover:bg-primary hover:text-primary-foreground disabled:opacity-50 disabled:pointer-events-none data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm`
516
516
  });
517
- class Ve extends u {
517
+ class et extends f {
518
518
  /**
519
519
  * This will declare the props for the compiler.
520
520
  *
@@ -535,14 +535,14 @@ class Ve extends u {
535
535
  * @returns {object}
536
536
  */
537
537
  render() {
538
- return D(
538
+ return S(
539
539
  { class: `flex items-center justify-center p-2 text-muted-foreground rounded-md ${this.class || ""}` },
540
540
  [
541
- p({
541
+ b({
542
542
  class: "flex space-x-4",
543
543
  map: [this.options, (e) => this.addLink(e)],
544
544
  watch: {
545
- value: ["[[path]]", b.data],
545
+ value: ["[[path]]", k.data],
546
546
  callBack: this.updateLinks.bind(this)
547
547
  }
548
548
  })
@@ -555,7 +555,7 @@ class Ve extends u {
555
555
  * @returns {void}
556
556
  */
557
557
  afterSetup() {
558
- const e = b.data.path;
558
+ const e = k.data.path;
559
559
  this.updateLinks(e);
560
560
  }
561
561
  /**
@@ -567,10 +567,10 @@ class Ve extends u {
567
567
  updateLinks(e) {
568
568
  let s = !1;
569
569
  this.deactivateAllLinks();
570
- for (const n of this.links) {
571
- if (!n.rendered)
570
+ for (const a of this.links) {
571
+ if (!a.rendered)
572
572
  continue;
573
- ke(n, n.getLinkPath(), e) ? (this.updateLink(n, !0), s = !0) : this.updateLink(n, !1);
573
+ De(a, a.getLinkPath(), e) ? (this.updateLink(a, !0), s = !0) : this.updateLink(a, !1);
574
574
  }
575
575
  !s && this.links[0] && this.updateLink(this.links[0], !0);
576
576
  }
@@ -599,8 +599,8 @@ class Ve extends u {
599
599
  * @param {object} option
600
600
  * @returns {object}
601
601
  */
602
- addLink({ label: e, href: s, exact: n, hidden: a }) {
603
- const i = we({ text: e, href: s, exact: n, hidden: a });
602
+ addLink({ label: e, href: s, exact: a, hidden: n }) {
603
+ const i = Se({ text: e, href: s, exact: a, hidden: n });
604
604
  return this.links.push(i), i;
605
605
  }
606
606
  /**
@@ -612,10 +612,10 @@ class Ve extends u {
612
612
  this.links = [];
613
613
  }
614
614
  }
615
- const qe = d((t) => {
615
+ const tt = u((t) => {
616
616
  const e = t.margin || "m-4 ml-0";
617
617
  return o({ class: `flex-none ${e}` }, [
618
- R({
618
+ C({
619
619
  variant: "icon",
620
620
  class: "back-button",
621
621
  click: () => {
@@ -626,11 +626,11 @@ const qe = d((t) => {
626
626
  t.backUrl && app.navigate(t.backUrl);
627
627
  }
628
628
  }, [
629
- T(k.arrows.left)
629
+ z(w.arrows.left)
630
630
  ])
631
631
  ]);
632
632
  });
633
- class N extends u {
633
+ class N extends f {
634
634
  /**
635
635
  * This will declare the props for the compiler.
636
636
  *
@@ -717,7 +717,7 @@ class N extends u {
717
717
  return this.children;
718
718
  }
719
719
  }
720
- class Je extends N {
720
+ class st extends N {
721
721
  /**
722
722
  * This will stop presistence.
723
723
  *
@@ -739,8 +739,8 @@ class Je extends N {
739
739
  ["loading", {
740
740
  loading: !0
741
741
  }],
742
- ["docked", (s, n) => {
743
- s ? (n.className = this.getDockedClassName(), e.appendChild(n), document.documentElement.style.overflowY = "auto") : (n.className = this.getClassName(), app.root.appendChild(n), document.documentElement.style.overflowY = "hidden");
742
+ ["docked", (s, a) => {
743
+ s ? (a.className = this.getDockedClassName(), e.appendChild(a), document.documentElement.style.overflowY = "auto") : (a.className = this.getClassName(), app.root.appendChild(a), document.documentElement.style.overflowY = "hidden");
744
744
  }]
745
745
  ]
746
746
  },
@@ -820,7 +820,7 @@ class Je extends N {
820
820
  document.documentElement.style.overflowY = "auto";
821
821
  }
822
822
  }
823
- class Xe extends N {
823
+ class at extends N {
824
824
  /**
825
825
  * This will get the overlay type.
826
826
  *
@@ -839,7 +839,7 @@ class Xe extends N {
839
839
  this.container = e, this.initialize();
840
840
  }
841
841
  }
842
- const ye = d(({ index: t, click: e, state: s }, n) => v({
842
+ const Le = u(({ index: t, click: e, state: s }, a) => D({
843
843
  class: "p-2 cursor-pointer hover:bg-muted/50",
844
844
  onState: [
845
845
  [s, "selectedIndex", {
@@ -848,11 +848,11 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
848
848
  }]
849
849
  ],
850
850
  pointerdown: () => e(t)
851
- }, n)), ve = d(({ selectOption: t, state: e }) => p({
851
+ }, a)), Ce = u(({ selectOption: t, state: e }) => b({
852
852
  class: "border rounded-md list-none m-0 p-0 max-h-[400px] overflow-y-auto",
853
- for: ["filteredOptions", (s, n) => ye({ index: n, click: t, state: e }, s.label)]
854
- })), De = 100, Se = d((t) => o({ class: "relative flex items-center" }, [
855
- V({
853
+ for: ["filteredOptions", (s, a) => Le({ index: a, click: t, state: e }, s.label)]
854
+ })), Be = 100, Ie = u((t) => o({ class: "relative flex items-center" }, [
855
+ J({
856
856
  cache: "input",
857
857
  placeholder: t.placeholder ?? "Search...",
858
858
  bind: [t.state, "searchQuery"],
@@ -860,26 +860,26 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
860
860
  s.state.open = !0, typeof t.filterOptions == "function" && t.filterOptions(), s.dropdown.updatePosition();
861
861
  },
862
862
  pointerup: (e, s) => s.toggleDropdown(),
863
- blur: (e, { state: s }) => setTimeout(() => s.open = !1, De),
863
+ blur: (e, { state: s }) => setTimeout(() => s.open = !1, Be),
864
864
  keydown: (e) => typeof t.handleKeyDown == "function" && t.handleKeyDown(e)
865
865
  }),
866
866
  t.icon && o({ class: "absolute right-0 mr-2" }, [
867
- T(t.icon)
867
+ z(t.icon)
868
868
  ])
869
- ])), Le = (t) => o({
869
+ ])), Te = (t) => o({
870
870
  class: "relative flex fle-auto flex-col",
871
- onState: ["open", (e, s, n) => {
871
+ onState: ["open", (e, s, a) => {
872
872
  if (e)
873
- return new J({
873
+ return new te({
874
874
  cache: "dropdown",
875
- parent: n,
876
- button: n.input,
875
+ parent: a,
876
+ button: a.input,
877
877
  size: "xl"
878
878
  }, [
879
- ve(t)
879
+ Ce(t)
880
880
  ]);
881
881
  }]
882
- }), Ze = I(
882
+ }), nt = R(
883
883
  {
884
884
  /**
885
885
  * This will set up the data object.
@@ -888,7 +888,7 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
888
888
  */
889
889
  setData() {
890
890
  const t = this.options || [];
891
- return new S({
891
+ return new L({
892
892
  options: t,
893
893
  filteredOptions: t
894
894
  });
@@ -914,7 +914,7 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
914
914
  const t = this.data.filteredOptions;
915
915
  let { searchQuery: e } = this.state;
916
916
  e = e.toLowerCase();
917
- const s = t.findIndex((n) => n.label.toLowerCase() === e);
917
+ const s = t.findIndex((a) => a.label.toLowerCase() === e);
918
918
  s >= 0 && (this.state.selectedIndex = s);
919
919
  },
920
920
  /**
@@ -976,7 +976,7 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
976
976
  */
977
977
  render() {
978
978
  return o({ class: "relative w-full max-w-md" }, [
979
- Se({
979
+ Ie({
980
980
  // @ts-ignore
981
981
  state: this.state,
982
982
  // @ts-ignore
@@ -988,7 +988,7 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
988
988
  // @ts-ignore
989
989
  handleKeyDown: this.handleKeyDown.bind(this)
990
990
  }),
991
- Le({
991
+ Te({
992
992
  // @ts-ignore
993
993
  state: this.state,
994
994
  // @ts-ignore
@@ -999,22 +999,22 @@ const ye = d(({ index: t, click: e, state: s }, n) => v({
999
999
  ]);
1000
1000
  }
1001
1001
  }
1002
- ), Ce = (t) => v(
1002
+ ), We = (t) => D(
1003
1003
  {
1004
1004
  class: "inline-flex flex-auto items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm",
1005
1005
  dataSet: ["selected", ["state", t.value, "active"]]
1006
1006
  },
1007
1007
  [
1008
- w({
1008
+ v({
1009
1009
  class: "flex flex-auto justify-center items-center px-3 py-1.5",
1010
1010
  onSet: ["selected", { selected: t.value }],
1011
1011
  click: (e) => t.callBack(t.value)
1012
1012
  }, t.label)
1013
1013
  ]
1014
- ), Oe = (t, e) => (t.callBack = e, Ce(t)), Be = (t) => D({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${t.class}` }, [
1015
- p({ class: "flex flex-auto flex-row", map: [t.options, (e) => Oe(e, t.callBack)] })
1014
+ ), Oe = (t, e) => (t.callBack = e, We(t)), Pe = (t) => S({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${t.class}` }, [
1015
+ b({ class: "flex flex-auto flex-row", map: [t.options, (e) => Oe(e, t.callBack)] })
1016
1016
  ]);
1017
- class et extends u {
1017
+ class it extends f {
1018
1018
  /**
1019
1019
  * This will declare the props for the compiler.
1020
1020
  *
@@ -1031,12 +1031,12 @@ class et extends u {
1031
1031
  render() {
1032
1032
  const e = this.select.bind(this);
1033
1033
  return o({ class: "" }, [
1034
- Be({
1034
+ Pe({
1035
1035
  class: this.class,
1036
1036
  options: this.options,
1037
1037
  callBack: e
1038
1038
  }),
1039
- B({
1039
+ P({
1040
1040
  class: "tab-content",
1041
1041
  onState: ["selected", this.updateContent.bind(this)]
1042
1042
  })
@@ -1079,11 +1079,11 @@ class et extends u {
1079
1079
  const s = this.options;
1080
1080
  if (!s || s.length < 1)
1081
1081
  return;
1082
- const n = s[0];
1083
- for (const a of s)
1084
- if (a.value === e)
1085
- return a.layout;
1086
- return n.layout;
1082
+ const a = s[0];
1083
+ for (const n of s)
1084
+ if (n.value === e)
1085
+ return n.layout;
1086
+ return a.layout;
1087
1087
  }
1088
1088
  /**
1089
1089
  * This will setup the states.
@@ -1095,30 +1095,30 @@ class et extends u {
1095
1095
  return {
1096
1096
  selected: {
1097
1097
  state: this.getFirstValue(),
1098
- callBack(n) {
1099
- s === "function" && e(n);
1098
+ callBack(a) {
1099
+ s === "function" && e(a);
1100
1100
  }
1101
1101
  }
1102
1102
  };
1103
1103
  }
1104
1104
  }
1105
- const Ie = (t) => v(
1105
+ const Re = (t) => D(
1106
1106
  {
1107
1107
  class: "inline-flex flex-auto items-center justify-center whitespace-nowrap rounded-sm text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm",
1108
1108
  dataSet: ["selected", ["state", t.value, "active"]]
1109
1109
  },
1110
1110
  [
1111
- w({
1111
+ v({
1112
1112
  class: "flex flex-auto justify-center items-center px-3 py-1.5 disabled:opacity-50 disabled:cursor-not-allowed",
1113
1113
  onSet: ["selected", { selected: t.value }],
1114
1114
  click: (e) => t.callBack(t.value),
1115
1115
  disabled: t.disabled
1116
1116
  }, t.label)
1117
1117
  ]
1118
- ), Me = (t, e) => (t.callBack = e, Ie(t)), Re = (t) => D({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${t.class}` }, [
1119
- p({ class: "flex flex-auto flex-row", map: [t.options, (e) => Me(e, t.callBack)] })
1118
+ ), Me = (t, e) => (t.callBack = e, Re(t)), ze = (t) => S({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${t.class}` }, [
1119
+ b({ class: "flex flex-auto flex-row", map: [t.options, (e) => Me(e, t.callBack)] })
1120
1120
  ]);
1121
- class tt extends u {
1121
+ class ot extends f {
1122
1122
  /**
1123
1123
  * This will declare the props for the compiler.
1124
1124
  *
@@ -1134,7 +1134,7 @@ class tt extends u {
1134
1134
  */
1135
1135
  render() {
1136
1136
  const e = this.select.bind(this);
1137
- return Re({
1137
+ return ze({
1138
1138
  class: this.class,
1139
1139
  options: this.options,
1140
1140
  callBack: e
@@ -1161,17 +1161,17 @@ class tt extends u {
1161
1161
  };
1162
1162
  }
1163
1163
  }
1164
- const Te = (t, e) => new RegExp(`${t}($|/|\\.).*`).test(e), Ne = (t, e) => {
1164
+ const Ne = (t, e) => new RegExp(`${t}($|/|\\.).*`).test(e), $e = (t, e) => {
1165
1165
  const s = t.getLinkPath();
1166
- return t.exact ? e === s : Te(s, e);
1167
- }, We = ({ text: t, href: e, exact: s }) => new M({
1166
+ return t.exact ? e === s : Ne(s, e);
1167
+ }, Ae = ({ text: t, href: e, exact: s }) => new M({
1168
1168
  text: t,
1169
1169
  href: e,
1170
1170
  exact: s,
1171
1171
  dataSet: ["selected", ["state", !0, "active"]],
1172
1172
  class: "inline-flex flex-auto items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-primary data-[state=active]:text-primary-foreground data-[state=active]:shadow-sm"
1173
1173
  });
1174
- class $e extends u {
1174
+ class je extends f {
1175
1175
  /**
1176
1176
  * This will declare the props for the compiler.
1177
1177
  *
@@ -1192,12 +1192,12 @@ class $e extends u {
1192
1192
  * @returns {object}
1193
1193
  */
1194
1194
  render() {
1195
- return D({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${this.class}` }, [
1196
- p({
1195
+ return S({ class: `tab items-center justify-center rounded-md bg-muted p-1 text-muted-foreground ${this.class}` }, [
1196
+ b({
1197
1197
  class: "flex flex-auto flex-row",
1198
1198
  map: [this.options, (e) => this.addLink(e)],
1199
1199
  watch: {
1200
- value: ["[[path]]", b.data],
1200
+ value: ["[[path]]", k.data],
1201
1201
  callBack: this.updateLinks.bind(this)
1202
1202
  }
1203
1203
  })
@@ -1209,7 +1209,7 @@ class $e extends u {
1209
1209
  * @returns {void}
1210
1210
  */
1211
1211
  afterSetup() {
1212
- const e = b.data.path;
1212
+ const e = k.data.path;
1213
1213
  this.updateLinks(e);
1214
1214
  }
1215
1215
  /**
@@ -1219,14 +1219,14 @@ class $e extends u {
1219
1219
  * @returns {void}
1220
1220
  */
1221
1221
  updateLinks(e) {
1222
- let s = !1, n = this.links[0];
1222
+ let s = !1, a = this.links[0];
1223
1223
  this.deactivateAllLinks();
1224
- for (const a of this.links)
1225
- if (a.rendered !== !1 && (s = Ne(a, e), s === !0)) {
1226
- this.updateLink(a, !0);
1224
+ for (const n of this.links)
1225
+ if (n.rendered !== !1 && (s = $e(n, e), s === !0)) {
1226
+ this.updateLink(n, !0);
1227
1227
  break;
1228
1228
  }
1229
- s !== !0 && n && this.updateLink(n, !0);
1229
+ s !== !0 && a && this.updateLink(a, !0);
1230
1230
  }
1231
1231
  /**
1232
1232
  * This will deactivate all links.
@@ -1253,9 +1253,9 @@ class $e extends u {
1253
1253
  * @param {object} option
1254
1254
  * @returns {object}
1255
1255
  */
1256
- addLink({ label: e, href: s, exact: n }) {
1257
- const a = We({ text: e, href: s, exact: n });
1258
- return this.links.push(a), a;
1256
+ addLink({ label: e, href: s, exact: a }) {
1257
+ const n = Ae({ text: e, href: s, exact: a });
1258
+ return this.links.push(n), n;
1259
1259
  }
1260
1260
  /**
1261
1261
  * This will remove all the links.
@@ -1266,7 +1266,7 @@ class $e extends u {
1266
1266
  this.links = [];
1267
1267
  }
1268
1268
  }
1269
- class st extends u {
1269
+ class lt extends f {
1270
1270
  /**
1271
1271
  * This will declare the props for the compiler.
1272
1272
  *
@@ -1282,11 +1282,11 @@ class st extends u {
1282
1282
  */
1283
1283
  render() {
1284
1284
  return o({ class: "tab-panel" }, [
1285
- new $e({
1285
+ new je({
1286
1286
  class: this.class,
1287
1287
  options: this.options
1288
1288
  }),
1289
- B({
1289
+ P({
1290
1290
  class: "tab-content",
1291
1291
  switch: this.addGroup()
1292
1292
  })
@@ -1299,9 +1299,9 @@ class st extends u {
1299
1299
  */
1300
1300
  addGroup() {
1301
1301
  let e;
1302
- const s = [], n = this.options;
1303
- for (let a = 0, i = n.length; a < i; a++)
1304
- e = n[a], s.push(
1302
+ const s = [], a = this.options;
1303
+ for (let n = 0, i = a.length; n < i; n++)
1304
+ e = a[n], s.push(
1305
1305
  {
1306
1306
  uri: e.uri || e.href,
1307
1307
  component: e.component,
@@ -1312,33 +1312,347 @@ class st extends u {
1312
1312
  return s;
1313
1313
  }
1314
1314
  }
1315
+ class Ue extends f {
1316
+ /**
1317
+ * Runs before rendering, sets up defaults, a timer for drawing,
1318
+ * and basic canvas properties.
1319
+ *
1320
+ * @returns {void}
1321
+ */
1322
+ onCreated() {
1323
+ this.lineWidth = this.lineWidth || 3, this.lineColor = this.lineColor || "#000000", this.canvas = null, this.ctx = null, this.status = "stopped";
1324
+ const e = 1e3 / 60;
1325
+ this.timer = new G(e, this.draw.bind(this)), this.width = 0, this.height = 0, this.signed = !1, this.mouse = { x: 0, y: 0, status: "up" }, this.margin = this.margin || { x: 40, y: 60 }, this.targetSize = this.targetSize || { width: 740, height: 345 }, this.baseLineWidth = this.baseLineWidth || 2, this.baseStrokeColor = this.baseStrokeColor || "#000000";
1326
+ }
1327
+ /**
1328
+ * Renders a <canvas> element.
1329
+ *
1330
+ * @returns {object} Layout definition for the canvas.
1331
+ */
1332
+ render() {
1333
+ return {
1334
+ tag: "canvas"
1335
+ };
1336
+ }
1337
+ /**
1338
+ * Called before the component is destroyed. Stops the timer
1339
+ * to prevent memory leaks or ongoing animation.
1340
+ *
1341
+ * @returns {void}
1342
+ */
1343
+ beforeDestroy() {
1344
+ this.stopTimer();
1345
+ }
1346
+ /**
1347
+ * Called after component setup. Initializes canvas context,
1348
+ * schedules a resize, and draws the initial content.
1349
+ *
1350
+ * @returns {void}
1351
+ */
1352
+ afterSetup() {
1353
+ this.canvas = this.panel, this.ctx = this.canvas.getContext("2d"), window.setTimeout(() => {
1354
+ this.resize(), this.draw();
1355
+ }, 1);
1356
+ }
1357
+ /**
1358
+ * Defines the DOM events to set up for this canvas component.
1359
+ *
1360
+ * @returns {Array} An array of [eventName, element, callback] definitions.
1361
+ */
1362
+ setupEvents() {
1363
+ const e = this.panel, s = this.pointerPosition.bind(this), a = this.pointerUp.bind(this), n = this.pointerDown.bind(this), i = this.resize.bind(this);
1364
+ return [
1365
+ ["pointermove", e, s],
1366
+ ["pointerup", e, a],
1367
+ ["pointerdown", e, n],
1368
+ ["pointerout", e, a],
1369
+ ["resize", window, i]
1370
+ ];
1371
+ }
1372
+ /**
1373
+ * Calculates and saves the current pointer position in canvas coordinates.
1374
+ *
1375
+ * @param {Event} e The event object (mouse or touch).
1376
+ * @returns {void}
1377
+ */
1378
+ getEventPosition(e) {
1379
+ let s, a;
1380
+ const n = this.canvas, i = n.width / parseInt(n.style.width), l = n.getBoundingClientRect();
1381
+ if (e.touches && e.touches.length) {
1382
+ const h = e.touches[0];
1383
+ s = h.clientX, a = h.clientY;
1384
+ } else
1385
+ s = e.x || e.clientX, a = e.y || e.clientY;
1386
+ const d = parseInt((s - l.left) * i), c = parseInt((a - l.top) * i);
1387
+ this.mouse.x = d, this.mouse.y = c;
1388
+ }
1389
+ /**
1390
+ * Called when the pointer goes down on the canvas.
1391
+ * Begins a new path, sets the mouse status, and starts the timer.
1392
+ *
1393
+ * @param {Event} e The event object.
1394
+ * @returns {void}
1395
+ */
1396
+ pointerDown(e) {
1397
+ e.preventDefault(), this.getEventPosition(e);
1398
+ const { ctx: s, mouse: a } = this;
1399
+ s.beginPath(), s.moveTo(a.x, a.y), a.status = "down", this.startTimer();
1400
+ }
1401
+ /**
1402
+ * Called when the pointer goes up or leaves the canvas area.
1403
+ * Closes the path and stops the drawing timer.
1404
+ *
1405
+ * @param {Event} e The event object.
1406
+ * @returns {void}
1407
+ */
1408
+ pointerUp(e) {
1409
+ e.preventDefault(), this.ctx.closePath(), this.mouse.status = "up", this.stopTimer();
1410
+ }
1411
+ /**
1412
+ * Tracks pointer movement, updates position in real time.
1413
+ *
1414
+ * @param {Event} e The event object.
1415
+ * @returns {void}
1416
+ */
1417
+ pointerPosition(e) {
1418
+ this.getEventPosition(e), this.mouse.status === "down" && e.preventDefault();
1419
+ }
1420
+ /**
1421
+ * Resizes the canvas, preserves existing drawing by converting
1422
+ * it to a data URL, then re-drawing.
1423
+ *
1424
+ * @returns {void}
1425
+ */
1426
+ resize() {
1427
+ const { canvas: e, ctx: s } = this, a = e.toDataURL();
1428
+ if (this.scale(), this.setupBackground(s), a !== "data:,") {
1429
+ const n = new window.Image();
1430
+ B.on("load", n, function i() {
1431
+ s.drawImage(n, 0, 0), B.off("load", n, i);
1432
+ }), n.src = a;
1433
+ }
1434
+ this.draw();
1435
+ }
1436
+ /**
1437
+ * Returns a JPEG data URL of the current canvas content.
1438
+ *
1439
+ * @returns {string} The signature image as a data URL.
1440
+ */
1441
+ getImage() {
1442
+ return this.canvas.toDataURL("image/jpeg", 0.7);
1443
+ }
1444
+ /**
1445
+ * (Deprecated approach) Resize the canvas to the container size
1446
+ * without scaling logic.
1447
+ *
1448
+ * @returns {void}
1449
+ */
1450
+ noScaleResize() {
1451
+ const e = I.getSize(container);
1452
+ this.width = canvas.width = e.width, this.height = canvas.height = e.height;
1453
+ }
1454
+ /**
1455
+ * Scales the canvas to fit within its container, preserving aspect ratio
1456
+ * relative to this.targetSize.
1457
+ *
1458
+ * @returns {void}
1459
+ */
1460
+ scale() {
1461
+ const e = this.canvas, s = this.container, a = I.getSize(s), n = this.targetSize, i = n.width, l = n.height;
1462
+ let d = i + "px", c = l + "px";
1463
+ if (this.width = e.width = i, this.height = e.height = l, a.width !== 0 && a.height !== 0) {
1464
+ const h = a.width, g = a.height, r = h / i, p = g / l, x = Math.min(r, p);
1465
+ d = i * x + "px", c = l * x + "px";
1466
+ }
1467
+ e.style.width = d, e.style.height = c;
1468
+ }
1469
+ /**
1470
+ * Main drawing loop. If the mouse is down, adds a line
1471
+ * from the last point to the current pointer position.
1472
+ *
1473
+ * @returns {void}
1474
+ */
1475
+ draw() {
1476
+ this.mouse.status === "down" && this.addLine(this.ctx, this.mouse.x, this.mouse.y, this.lineColor);
1477
+ }
1478
+ /**
1479
+ * Draws the baseline at the bottom of the canvas.
1480
+ *
1481
+ * @param {CanvasRenderingContext2D} ctx The canvas 2D context.
1482
+ * @returns {void}
1483
+ */
1484
+ drawBottomLine(e) {
1485
+ const s = this.canvas;
1486
+ e.globalAlpha = 1, e.shadowBlur = 0;
1487
+ const a = this.margin.x, n = this.height - this.margin.y;
1488
+ e.beginPath(), e.moveTo(a, n), e.lineTo(s.width - this.margin.x, n), e.lineWidth = this.baseLineWidth, e.strokeStyle = this.baseStrokeColor, e.stroke(), e.closePath();
1489
+ }
1490
+ /**
1491
+ * Adds a line to the current path, updating the 'signed' status.
1492
+ *
1493
+ * @param {CanvasRenderingContext2D} ctx The canvas context.
1494
+ * @param {number} px The x-coordinate.
1495
+ * @param {number} py The y-coordinate.
1496
+ * @param {string} color The stroke color.
1497
+ * @returns {void}
1498
+ */
1499
+ addLine(e, s, a, n) {
1500
+ this.signed || (this.signed = !0);
1501
+ const i = Math.round(s), l = Math.round(a);
1502
+ e.lineWidth = this.lineWidth, e.strokeStyle = n, e.lineTo(i, l), e.stroke();
1503
+ }
1504
+ /**
1505
+ * Clears the canvas, sets signed to false, and re-initializes
1506
+ * the background for a fresh signature.
1507
+ *
1508
+ * @returns {void}
1509
+ */
1510
+ reset() {
1511
+ this.signed = !1;
1512
+ const { ctx: e } = this;
1513
+ e.clearRect(0, 0, this.width, this.height), this.setupBackground(e);
1514
+ }
1515
+ /**
1516
+ * Fills the canvas background with white and draws the baseline.
1517
+ *
1518
+ * @param {CanvasRenderingContext2D} ctx The canvas context.
1519
+ * @returns {void}
1520
+ */
1521
+ setupBackground(e) {
1522
+ e.fillStyle = "", e.fillRect(0, 0, this.width, this.height), this.drawBottomLine(e);
1523
+ }
1524
+ /**
1525
+ * Starts the drawing timer so new lines can be added as pointer moves.
1526
+ *
1527
+ * @returns {void}
1528
+ */
1529
+ startTimer() {
1530
+ this.stopTimer(), this.draw(), this.timer.start(), this.status = "started";
1531
+ }
1532
+ /**
1533
+ * Stops the drawing timer.
1534
+ *
1535
+ * @returns {void}
1536
+ */
1537
+ stopTimer() {
1538
+ this.timer.stop(), this.status = "stopped";
1539
+ }
1540
+ }
1541
+ class rt extends f {
1542
+ /**
1543
+ * Sets up default properties for the signature panel.
1544
+ *
1545
+ * @returns {void}
1546
+ */
1547
+ setupProps() {
1548
+ this.data = null, this.lineColor = null, this.lineWidth = null, this.baseLineWidth = null, this.baseStrokeColor = null, this.margin = null, this.targetSize = null, this.callBackData = null, this.pointerUp = null, this.path = null, this.canvasLayer = null;
1549
+ }
1550
+ /**
1551
+ * This will run once the component is created, before rendering.
1552
+ * Sets a default line color if not provided.
1553
+ *
1554
+ * @returns {void}
1555
+ */
1556
+ onCreated() {
1557
+ this.lineColor = this.lineColor || "#00aeef";
1558
+ }
1559
+ /**
1560
+ * Renders the main layout for the signature panel,
1561
+ * including a hidden input and a reset button.
1562
+ *
1563
+ * @returns {object} The layout object for the component.
1564
+ */
1565
+ render() {
1566
+ return o({ class: "signature-panel relative flex flex-auto" }, [
1567
+ Z({
1568
+ cache: "hiddenInput",
1569
+ required: !0,
1570
+ bind: this.path + ".data"
1571
+ }),
1572
+ o({ class: "absolute top-2 right-2" }, [
1573
+ C({
1574
+ variant: "icon",
1575
+ icon: w.circleX,
1576
+ click: this.reset.bind(this)
1577
+ })
1578
+ ]),
1579
+ new Ue({
1580
+ cache: "canvasLayer",
1581
+ margin: this.margin,
1582
+ targetSize: this.targetSize,
1583
+ lineColor: this.lineColor,
1584
+ lineWidth: this.lineWidth,
1585
+ baseLineWidth: this.baseLineWidth,
1586
+ baseStrokeColor: this.baseStrokeColor,
1587
+ pointerUpCallBack: this.pointerUp,
1588
+ callBackData: this.callBackData
1589
+ })
1590
+ ]);
1591
+ }
1592
+ /**
1593
+ * Called after component setup. Resizes the signature canvas once
1594
+ * everything is ready.
1595
+ *
1596
+ * @returns {void}
1597
+ */
1598
+ afterSetup() {
1599
+ this.canvasLayer.resize();
1600
+ }
1601
+ /**
1602
+ * Gets the signature image from the canvas layer, as a data URL.
1603
+ *
1604
+ * @returns {string} The signature image data URL.
1605
+ */
1606
+ getImage() {
1607
+ return this.canvasLayer.getImage();
1608
+ }
1609
+ /**
1610
+ * Checks if the user has drawn anything on the signature canvas.
1611
+ *
1612
+ * @returns {boolean} True if the canvas has been signed, otherwise false.
1613
+ */
1614
+ isSigned() {
1615
+ return this.canvasLayer ? this.canvasLayer.signed : !1;
1616
+ }
1617
+ /**
1618
+ * Resets the signature canvas to a blank state.
1619
+ *
1620
+ * @param {Event} [e] The event object (if called by a click event).
1621
+ * @returns {void}
1622
+ */
1623
+ reset(e) {
1624
+ if (this.canvasLayer)
1625
+ return this.canvasLayer.reset();
1626
+ }
1627
+ }
1315
1628
  export {
1316
- qe as B,
1317
- le as C,
1318
- de as D,
1319
- re as H,
1320
- Xe as I,
1321
- Ve as N,
1629
+ tt as B,
1630
+ he as C,
1631
+ ge as D,
1632
+ ue as H,
1633
+ at as I,
1634
+ et as N,
1322
1635
  N as O,
1323
- Ee as P,
1324
- Ze as S,
1325
- ce as T,
1326
- xe as U,
1327
- Ke as W,
1328
- te as a,
1329
- L as b,
1330
- Z as c,
1331
- Qe as d,
1332
- He as e,
1333
- ne as f,
1334
- ee as g,
1335
- ie as h,
1336
- oe as i,
1337
- _e as j,
1338
- Ge as k,
1339
- Je as l,
1340
- et as m,
1341
- tt as n,
1342
- $e as o,
1343
- st as p
1636
+ Ke as P,
1637
+ nt as S,
1638
+ fe as T,
1639
+ ve as U,
1640
+ Ve as W,
1641
+ ie as a,
1642
+ T as b,
1643
+ ae as c,
1644
+ _e as d,
1645
+ Ge as e,
1646
+ le as f,
1647
+ ne as g,
1648
+ ce as h,
1649
+ de as i,
1650
+ Je as j,
1651
+ Ze as k,
1652
+ st as l,
1653
+ it as m,
1654
+ ot as n,
1655
+ je as o,
1656
+ lt as p,
1657
+ rt as q
1344
1658
  };