manolis-ui 0.28.0 → 0.28.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.
@@ -1,1189 +0,0 @@
1
- var $e = (t) => {
2
- throw TypeError(t);
3
- };
4
- var Pe = (t, e, n) => e.has(t) || $e("Cannot " + n);
5
- var A = (t, e, n) => (Pe(t, e, "read from private field"), n ? n.call(t) : e.get(t)), Z = (t, e, n) => e.has(t) ? $e("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, n), ee = (t, e, n, o) => (Pe(t, e, "write to private field"), o ? o.call(t, n) : e.set(t, n), n);
6
- var $, M;
7
- class ht {
8
- /**
9
- * @param {T} current
10
- */
11
- constructor(e) {
12
- /**
13
- * @type {T}
14
- */
15
- Z(this, $);
16
- Z(this, M, /* @__PURE__ */ new Set());
17
- ee(this, $, e);
18
- }
19
- /**
20
- * @return {T}
21
- */
22
- get current() {
23
- return A(this, $);
24
- }
25
- /**
26
- * @param {T} value
27
- */
28
- set current(e) {
29
- A(this, $) != e && (ee(this, $, e), A(this, M).forEach((n) => n(e)));
30
- }
31
- /**
32
- * @type {import("hooks").Ref["on"]}
33
- */
34
- on(e) {
35
- return A(this, M).add(e), () => A(this, M).delete(e);
36
- }
37
- }
38
- $ = new WeakMap(), M = new WeakMap();
39
- const Le = (t) => new ht(t), ie = Symbol.for("atomico.hooks");
40
- globalThis[ie] = globalThis[ie] || {};
41
- let U = globalThis[ie];
42
- const ft = Symbol.for("Atomico.suspense"), Ye = Symbol.for("Atomico.effect"), pt = Symbol.for("Atomico.layoutEffect"), Ie = Symbol.for("Atomico.insertionEffect"), O = (t, e, n) => {
43
- const { i: o, hooks: r } = U.c, a = r[o] = r[o] || {};
44
- return a.value = t(a.value), a.effect = e, a.tag = n, U.c.i++, r[o].value;
45
- }, yt = (t) => O((e = Le(t)) => e), I = () => O((t = Le(U.c.host)) => t), Re = () => U.c.update, mt = (t, e, n = 0) => {
46
- let o = {}, r = !1;
47
- const a = () => r, s = (l, c) => {
48
- for (const u in o) {
49
- const i = o[u];
50
- i.effect && i.tag === l && (i.value = i.effect(i.value, c));
51
- }
52
- };
53
- return { load: (l) => {
54
- U.c = { host: e, hooks: o, update: t, i: 0, id: n };
55
- let c;
56
- try {
57
- r = !1, c = l();
58
- } catch (u) {
59
- if (u !== ft)
60
- throw u;
61
- r = !0;
62
- } finally {
63
- U.c = null;
64
- }
65
- return c;
66
- }, cleanEffects: (l) => (s(Ie, l), () => (s(pt, l), () => {
67
- s(Ye, l);
68
- })), isSuspense: a };
69
- }, F = Symbol.for;
70
- function He(t, e) {
71
- const n = t.length;
72
- if (n !== e.length)
73
- return !1;
74
- for (let o = 0; o < n; o++) {
75
- let r = t[o], a = e[o];
76
- if (r !== a)
77
- return !1;
78
- }
79
- return !0;
80
- }
81
- const x = (t) => typeof t == "function", q = (t) => typeof t == "object", { isArray: gt } = Array, ce = (t, e) => (e ? t instanceof HTMLStyleElement : !0) && "hydrate" in ((t == null ? void 0 : t.dataset) || {});
82
- function Ve(t, e) {
83
- let n;
84
- const o = (r) => {
85
- let { length: a } = r;
86
- for (let s = 0; s < a; s++) {
87
- const l = r[s];
88
- if (l && Array.isArray(l))
89
- o(l);
90
- else {
91
- const c = typeof l;
92
- if (l == null || c === "function" || c === "boolean")
93
- continue;
94
- c === "string" || c === "number" ? (n == null && (n = ""), n += l) : (n != null && (e(n), n = null), e(l));
95
- }
96
- }
97
- };
98
- o(t), n != null && e(n);
99
- }
100
- const _e = (t, e, n) => (t.addEventListener(e, n), () => t.removeEventListener(e, n));
101
- class We {
102
- /**
103
- *
104
- * @param {HTMLElement} target
105
- * @param {string} message
106
- * @param {string} value
107
- */
108
- constructor(e, n, o) {
109
- this.message = n, this.target = e, this.value = o;
110
- }
111
- }
112
- class Je extends We {
113
- }
114
- class bt extends We {
115
- }
116
- const W = "Custom", vt = null, wt = { true: 1, "": 1, 1: 1 };
117
- function kt(t, e, n, o, r) {
118
- const {
119
- type: a,
120
- reflect: s,
121
- event: l,
122
- value: c,
123
- attr: u = Dt(e)
124
- } = (n == null ? void 0 : n.name) != W && q(n) && n != vt ? n : { type: n }, i = (a == null ? void 0 : a.name) === W && a.map, h = c != null ? a == Function || !x(c) ? () => c : c : null;
125
- Object.defineProperty(t, e, {
126
- configurable: !0,
127
- /**
128
- * @this {import("dom").AtomicoThisInternal}
129
- * @param {any} newValue
130
- */
131
- set(d) {
132
- const p = this[e];
133
- h && a != Boolean && d == null && (d = h());
134
- const { error: v, value: w } = (i ? Ct : Et)(
135
- a,
136
- d
137
- );
138
- if (v && w != null)
139
- throw new Je(
140
- this,
141
- `The value defined for prop '${e}' must be of type '${a.name}'`,
142
- w
143
- );
144
- p != w && (this._props[e] = w ?? void 0, this.update(), l && Ke(this, l), this.updated.then(() => {
145
- s && (this._ignoreAttr = u, St(this, a, u, this[e]), this._ignoreAttr = null);
146
- }));
147
- },
148
- /**
149
- * @this {import("dom").AtomicoThisInternal}
150
- */
151
- get() {
152
- return this._props[e];
153
- }
154
- }), h && (r[e] = h()), o[u] = { prop: e, type: a };
155
- }
156
- const Ke = (t, { type: e, base: n = CustomEvent, ...o }) => t.dispatchEvent(new n(e, o)), Dt = (t) => t.replace(/([A-Z])/g, "-$1").toLowerCase(), St = (t, e, n, o) => o == null || e == Boolean && !o ? t.removeAttribute(n) : t.setAttribute(
157
- n,
158
- (e == null ? void 0 : e.name) === W && (e != null && e.serialize) ? e == null ? void 0 : e.serialize(o) : q(o) ? JSON.stringify(o) : e == Boolean ? "" : o
159
- ), xt = (t, e) => t == Boolean ? !!wt[e] : t == Number ? Number(e) : t == String ? e : t == Array || t == Object ? JSON.parse(e) : t.name == W ? e : (
160
- // TODO: If when defining reflect the prop can also be of type string?
161
- new t(e)
162
- ), Ct = ({ map: t }, e) => {
163
- try {
164
- return { value: t(e), error: !1 };
165
- } catch {
166
- return { value: e, error: !0 };
167
- }
168
- }, Et = (t, e) => t == null || e == null ? { value: e, error: !1 } : t != String && e === "" ? { value: void 0, error: !1 } : t == Object || t == Array || t == Symbol ? {
169
- value: e,
170
- error: {}.toString.call(e) !== `[object ${t.name}]`
171
- } : e instanceof t ? {
172
- value: e,
173
- error: t == Number && Number.isNaN(e.valueOf())
174
- } : t == String || t == Number || t == Boolean ? {
175
- value: e,
176
- error: t == Number ? typeof e != "number" ? !0 : Number.isNaN(e) : t == String ? typeof e != "string" : typeof e != "boolean"
177
- } : { value: e, error: !0 };
178
- let Tt = 0;
179
- const Nt = (t) => {
180
- var n;
181
- return ((n = (t == null ? void 0 : t.dataset) || {}) == null ? void 0 : n.hydrate) || "" || "c" + Tt++;
182
- }, R = (t, e = HTMLElement) => {
183
- const n = {}, o = {}, r = "prototype" in e && e.prototype instanceof Element, a = r ? e : "base" in e ? e.base : HTMLElement, { props: s, styles: l } = r ? t : e;
184
- class c extends a {
185
- constructor() {
186
- super(), this._setup(), this._render = () => t({ ...this._props });
187
- for (const i in o)
188
- this[i] = o[i];
189
- }
190
- /**
191
- * @returns {import("core").Sheets[]}
192
- */
193
- static get styles() {
194
- return [super.styles, l];
195
- }
196
- async _setup() {
197
- if (this._props)
198
- return;
199
- this._props = {};
200
- let i, h;
201
- this.mounted = new Promise(
202
- (y) => this.mount = () => {
203
- y(), i != this.parentNode && (h != i ? this.unmounted.then(this.update) : this.update()), i = this.parentNode;
204
- }
205
- ), this.unmounted = new Promise(
206
- (y) => this.unmount = () => {
207
- y(), (i != this.parentNode || !this.isConnected) && (d.cleanEffects(!0)()(), h = this.parentNode, i = null);
208
- }
209
- ), this.symbolId = this.symbolId || Symbol(), this.symbolIdParent = Symbol();
210
- const d = mt(
211
- () => this.update(),
212
- this,
213
- Nt(this)
214
- );
215
- let p, v = !0;
216
- const w = ce(this);
217
- this.update = () => (p || (p = !0, this.updated = (this.updated || this.mounted).then(() => {
218
- try {
219
- const y = d.load(this._render), f = d.cleanEffects();
220
- return y && //@ts-ignore
221
- y.render(this, this.symbolId, w), p = !1, v && !d.isSuspense() && (v = !1, !w && $t(this)), f();
222
- } finally {
223
- p = !1;
224
- }
225
- }).then(
226
- /**
227
- * @param {import("internal/hooks.js").CleanUseEffects} [cleanUseEffect]
228
- */
229
- (y) => {
230
- y && y();
231
- }
232
- )), this.updated), this.update();
233
- }
234
- connectedCallback() {
235
- this.mount(), super.connectedCallback && super.connectedCallback();
236
- }
237
- disconnectedCallback() {
238
- super.disconnectedCallback && super.disconnectedCallback(), this.unmount();
239
- }
240
- /**
241
- * @this {import("dom").AtomicoThisInternal}
242
- * @param {string} attr
243
- * @param {(string|null)} oldValue
244
- * @param {(string|null)} value
245
- */
246
- attributeChangedCallback(i, h, d) {
247
- if (n[i]) {
248
- if (i === this._ignoreAttr || h === d)
249
- return;
250
- const { prop: p, type: v } = n[i];
251
- try {
252
- this[p] = xt(v, d);
253
- } catch {
254
- throw new bt(
255
- this,
256
- `The value defined as attr '${i}' cannot be parsed by type '${v.name}'`,
257
- d
258
- );
259
- }
260
- } else
261
- super.attributeChangedCallback(i, h, d);
262
- }
263
- static get props() {
264
- return { ...super.props, ...s };
265
- }
266
- static get observedAttributes() {
267
- const i = super.observedAttributes || [];
268
- for (const h in s)
269
- kt(this.prototype, h, s[h], n, o);
270
- return Object.keys(n).concat(i);
271
- }
272
- }
273
- return c;
274
- };
275
- function $t(t) {
276
- const { styles: e } = t.constructor, { shadowRoot: n } = t;
277
- if (n && e.length) {
278
- const o = [];
279
- Ve(e, (r) => {
280
- r && (r instanceof Element ? n.appendChild(r.cloneNode(!0)) : o.push(r));
281
- }), o.length && (n.adoptedStyleSheets = o);
282
- }
283
- }
284
- const Ge = (t) => (e, n) => {
285
- O(
286
- /**
287
- * Clean the effect hook
288
- * @type {import("internal/hooks.js").CollectorEffect}
289
- */
290
- ([o, r] = []) => ((r || !r) && (r && He(r, n) ? o = o || !0 : (x(o) && o(), o = null)), [o, n]),
291
- /**
292
- * @returns {any}
293
- */
294
- ([o, r], a) => a ? (x(o) && o(), []) : [o || e(), r],
295
- t
296
- );
297
- }, L = Ge(Ye), Pt = Ge(Ie);
298
- class Qe extends Array {
299
- /**
300
- *
301
- * @param {any} initialState
302
- * @param {(nextState: any, state:any[], mount: boolean )=>void} mapState
303
- */
304
- constructor(e, n) {
305
- let o = !0;
306
- const r = (a) => {
307
- try {
308
- n(a, this, o);
309
- } finally {
310
- o = !1;
311
- }
312
- };
313
- super(void 0, r, n), r(e);
314
- }
315
- /**
316
- * The following code allows a mutable approach to useState
317
- * and useProp this with the idea of allowing an alternative
318
- * approach similar to Vue or Qwik of state management
319
- * @todo pending review with the community
320
- */
321
- // get value() {
322
- // return this[0];
323
- // }
324
- // set value(nextState) {
325
- // this[2](nextState, this);
326
- // }
327
- }
328
- const he = (t) => {
329
- const e = Re();
330
- return O(
331
- (n = new Qe(t, (o, r, a) => {
332
- o = x(o) ? o(r[0]) : o, o !== r[0] && (r[0] = o, a || e());
333
- })) => n
334
- );
335
- }, C = (t, e) => {
336
- const [n] = O(([o, r, a = 0] = []) => ((!r || r && !He(r, e)) && (o = t()), [o, e, a]));
337
- return n;
338
- }, fe = (t) => {
339
- const { current: e } = I();
340
- if (!(t in e))
341
- throw new Je(
342
- e,
343
- `For useProp("${t}"), the prop does not exist on the host.`,
344
- t
345
- );
346
- return O(
347
- (n = new Qe(e[t], (o, r) => {
348
- o = x(o) ? o(e[t]) : o, e[t] = o;
349
- })) => (n[0] = e[t], n)
350
- );
351
- }, E = (t, e = {}) => {
352
- const n = I();
353
- return n[t] || (n[t] = (o = e.detail) => Ke(n.current, {
354
- type: t,
355
- ...e,
356
- detail: o
357
- })), n[t];
358
- }, le = F("atomico/options");
359
- globalThis[le] = globalThis[le] || {
360
- sheet: !!document.adoptedStyleSheets
361
- };
362
- const Xe = globalThis[le], At = {
363
- checked: 1,
364
- value: 1,
365
- selected: 1
366
- }, Mt = {
367
- list: 1,
368
- type: 1,
369
- size: 1,
370
- form: 1,
371
- width: 1,
372
- height: 1,
373
- src: 1,
374
- href: 1,
375
- slot: 1
376
- }, Ut = {
377
- shadowDom: 1,
378
- staticNode: 1,
379
- cloneNode: 1,
380
- children: 1,
381
- key: 1
382
- }, _ = {}, ue = [];
383
- class de extends Text {
384
- }
385
- const Ot = F("atomico/id"), z = F("atomico/type"), te = F("atomico/ref"), Ze = F("atomico/vnode"), Ft = () => {
386
- };
387
- function jt(t, e, n) {
388
- return tt(this, t, e, n);
389
- }
390
- const et = (t, e, ...n) => {
391
- const o = e || _;
392
- let { children: r } = o;
393
- if (r = r ?? (n.length ? n : ue), t === Ft)
394
- return r;
395
- const a = t ? t instanceof Node ? 1 : (
396
- //@ts-ignore
397
- t.prototype instanceof HTMLElement && 2
398
- ) : 0;
399
- if (a === !1 && t instanceof Function)
400
- return t(
401
- r != ue ? { children: r, ...o } : o
402
- );
403
- const s = Xe.render || jt;
404
- return {
405
- [z]: Ze,
406
- type: t,
407
- props: o,
408
- children: r,
409
- key: o.key,
410
- // key for lists by keys
411
- // define if the node declares its shadowDom
412
- shadow: o.shadowDom,
413
- // allows renderings to run only once
414
- static: o.staticNode,
415
- // defines whether the type is a childNode `1` or a constructor `2`
416
- raw: a,
417
- // defines whether to use the second parameter for document.createElement
418
- is: o.is,
419
- // clone the node if it comes from a reference
420
- clone: o.cloneNode,
421
- render: s
422
- };
423
- };
424
- function tt(t, e, n = Ot, o, r) {
425
- let a;
426
- if (e && e[n] && e[n].vnode == t || t[z] != Ze)
427
- return e;
428
- (t || !e) && (r = r || t.type == "svg", a = t.type != "host" && (t.raw == 1 ? (e && t.clone ? e[te] : e) != t.type : t.raw == 2 ? !(e instanceof t.type) : e ? e[te] || e.localName != t.type : !e), a && t.type != null && (t.raw == 1 && t.clone ? (o = !0, e = t.type.cloneNode(!0), e[te] = t.type) : e = t.raw == 1 ? t.type : t.raw == 2 ? new t.type() : r ? document.createElementNS(
429
- "http://www.w3.org/2000/svg",
430
- t.type
431
- ) : document.createElement(
432
- t.type,
433
- t.is ? { is: t.is } : void 0
434
- )));
435
- const s = e[n] ? e[n] : _, { vnode: l = _, cycle: c = 0 } = s;
436
- let { fragment: u, handlers: i } = s;
437
- const { children: h = ue, props: d = _ } = l;
438
- if (i = a ? {} : i || {}, t.static && !a)
439
- return e;
440
- if (t.shadow && !e.shadowRoot && // @ts-ignore
441
- e.attachShadow({ mode: "open", ...t.shadow }), t.props != d && Bt(e, d, t.props, i, r), t.children !== h) {
442
- const p = t.shadow ? e.shadowRoot : e;
443
- u = zt(
444
- t.children,
445
- /**
446
- * @todo for hydration use attribute and send childNodes
447
- */
448
- u,
449
- p,
450
- n,
451
- // add support to foreignObject, children will escape from svg
452
- !c && o,
453
- r && t.type == "foreignObject" ? !1 : r
454
- );
455
- }
456
- return e[n] = { vnode: t, handlers: i, fragment: u, cycle: c + 1 }, e;
457
- }
458
- function qt(t, e) {
459
- const n = new de(""), o = new de("");
460
- let r;
461
- if (t[e ? "prepend" : "append"](n), e) {
462
- let { lastElementChild: a } = t;
463
- for (; a; ) {
464
- const { previousElementSibling: s } = a;
465
- if (ce(a, !0) && !ce(s, !0)) {
466
- r = a;
467
- break;
468
- }
469
- a = s;
470
- }
471
- }
472
- return r ? r.before(o) : t.append(o), {
473
- markStart: n,
474
- markEnd: o
475
- };
476
- }
477
- function zt(t, e, n, o, r, a) {
478
- t = t == null ? null : gt(t) ? t : [t];
479
- const s = e || qt(n, r), { markStart: l, markEnd: c, keyes: u } = s;
480
- let i;
481
- const h = u && /* @__PURE__ */ new Set();
482
- let d = l;
483
- if (t && Ve(t, (p) => {
484
- if (typeof p == "object" && !p[z])
485
- return;
486
- const v = p[z] && p.key, w = u && v != null && u.get(v);
487
- d != c && d === w ? h.delete(d) : d = d == c ? c : d.nextSibling;
488
- const y = u ? w : d;
489
- let f = y;
490
- if (p[z])
491
- f = tt(p, y, o, r, a);
492
- else {
493
- const D = p + "";
494
- !(f instanceof Text) || f instanceof de ? f = new Text(D) : f.data != D && (f.data = D);
495
- }
496
- f != d && (u && h.delete(f), !y || u ? (n.insertBefore(f, d), u && d != c && h.add(d)) : y == c ? n.insertBefore(f, c) : (n.replaceChild(f, y), d = f)), v != null && (i = i || /* @__PURE__ */ new Map(), i.set(v, f));
497
- }), d = d == c ? c : d.nextSibling, e && d != c)
498
- for (; d != c; ) {
499
- const p = d;
500
- d = d.nextSibling, p.remove();
501
- }
502
- return h && h.forEach((p) => p.remove()), s.keyes = i, s;
503
- }
504
- function Bt(t, e, n, o, r) {
505
- for (const a in e)
506
- !(a in n) && Ae(t, a, e[a], null, r, o);
507
- for (const a in n)
508
- Ae(t, a, e[a], n[a], r, o);
509
- }
510
- function Ae(t, e, n, o, r, a) {
511
- if (e = e == "class" && !r ? "className" : e, n = n ?? null, o = o ?? null, e in t && At[e] && (n = t[e]), !(o === n || Ut[e] || e[0] == "_"))
512
- if (e[0] == "o" && e[1] == "n" && (x(o) || x(n)))
513
- Lt(t, e.slice(2), o, a);
514
- else if (e == "ref")
515
- o && (x(o) ? o(t) : o.current = t);
516
- else if (e == "style") {
517
- const { style: s } = t;
518
- n = n || "", o = o || "";
519
- const l = q(n), c = q(o);
520
- if (l)
521
- for (const u in n)
522
- if (c)
523
- !(u in o) && Me(s, u, null);
524
- else
525
- break;
526
- if (c)
527
- for (const u in o) {
528
- const i = o[u];
529
- l && n[u] === i || Me(s, u, i);
530
- }
531
- else
532
- s.cssText = o;
533
- } else {
534
- const s = e[0] == "$" ? e.slice(1) : e;
535
- s === e && (!r && !Mt[e] && e in t || x(o) || x(n)) ? t[e] = o ?? "" : o == null ? t.removeAttribute(s) : t.setAttribute(
536
- s,
537
- q(o) ? JSON.stringify(o) : o
538
- );
539
- }
540
- }
541
- function Lt(t, e, n, o) {
542
- if (o.handleEvent || (o.handleEvent = (r) => o[r.type].call(t, r)), n) {
543
- if (!o[e]) {
544
- const r = n.capture || n.once || n.passive ? Object.assign({}, n) : null;
545
- t.addEventListener(e, o, r);
546
- }
547
- o[e] = n;
548
- } else
549
- o[e] && (t.removeEventListener(e, o), delete o[e]);
550
- }
551
- function Me(t, e, n) {
552
- let o = "setProperty";
553
- n == null && (o = "removeProperty", n = null), ~e.indexOf("-") ? t[o](e, n) : t[e] = n;
554
- }
555
- const Ue = {};
556
- function K(t, ...e) {
557
- const n = (t.raw || t).reduce(
558
- (o, r, a) => o + r + (e[a] || ""),
559
- ""
560
- );
561
- return Ue[n] = Ue[n] || Yt(n);
562
- }
563
- function Yt(t) {
564
- if (Xe.sheet) {
565
- const e = new CSSStyleSheet();
566
- return e.replaceSync(t), e;
567
- } else {
568
- const e = document.createElement("style");
569
- return e.textContent = t, e;
570
- }
571
- }
572
- const It = et("host", { style: "display: contents" }), ne = F("atomico/context"), Rt = (t, e) => {
573
- const n = I();
574
- Pt(
575
- () => _e(
576
- n.current,
577
- "ConnectContext",
578
- /**
579
- * @param {CustomEvent<import("context").DetailConnectContext>} event
580
- */
581
- (o) => {
582
- t === o.detail.id && (o.stopPropagation(), o.detail.connect(e));
583
- }
584
- ),
585
- [t]
586
- );
587
- }, Ht = (t) => {
588
- const e = E("ConnectContext", {
589
- bubbles: !0,
590
- composed: !0
591
- }), n = () => {
592
- let a;
593
- return e({
594
- id: t,
595
- connect(s) {
596
- a = s;
597
- }
598
- }), a;
599
- }, [o, r] = he(
600
- n
601
- );
602
- return L(() => {
603
- o || (t[ne] || (t[ne] = customElements.whenDefined(
604
- new t().localName
605
- )), t[ne].then(
606
- () => r(n)
607
- ));
608
- }, [t]), o;
609
- }, Vt = (t) => {
610
- const e = Ht(t), n = Re();
611
- return L(() => {
612
- if (e)
613
- return _e(e, "UpdatedValue", n);
614
- }, [e]), (e || t).value;
615
- }, _t = (t) => {
616
- const e = R(
617
- () => (Rt(e, I().current), It),
618
- {
619
- props: {
620
- value: {
621
- type: Object,
622
- event: { type: "UpdatedValue" },
623
- value: () => t
624
- }
625
- }
626
- }
627
- );
628
- return e.value = t, e;
629
- }, m = (t, e, n) => (e == null ? e = { key: n } : e.key = n, et(t, e)), B = m, nt = K`*,*:before,*:after{box-sizing:border-box}button{padding:0;touch-action:manipulation;cursor:pointer;user-select:none}`, ot = K`.vh{position:absolute;transform:scale(0)}`;
630
- function pe() {
631
- const t = /* @__PURE__ */ new Date();
632
- return new b(t.getFullYear(), t.getMonth() + 1, t.getDate());
633
- }
634
- function ye(t, e = 0) {
635
- const n = S(t), o = n.getUTCDay(), r = (o < e ? 7 : 0) + o - e;
636
- return n.setUTCDate(n.getUTCDate() - r), b.from(n);
637
- }
638
- function rt(t, e = 0) {
639
- return ye(t, e).add({ days: 6 });
640
- }
641
- function at(t) {
642
- return b.from(new Date(Date.UTC(t.year, t.month, 0)));
643
- }
644
- function G(t, e, n) {
645
- return e && b.compare(t, e) < 0 ? e : n && b.compare(t, n) > 0 ? n : t;
646
- }
647
- const Wt = { days: 1 };
648
- function Jt(t, e = 0) {
649
- let n = ye(t.toPlainDate(), e);
650
- const o = rt(at(t), e), r = [];
651
- for (; b.compare(n, o) < 0; ) {
652
- const a = [];
653
- for (let s = 0; s < 7; s++)
654
- a.push(n), n = n.add(Wt);
655
- r.push(a);
656
- }
657
- return r;
658
- }
659
- function S(t) {
660
- return new Date(Date.UTC(t.year, t.month - 1, t.day ?? 1));
661
- }
662
- const Kt = /^(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[0-1])$/, oe = (t, e) => t.toString().padStart(e, "0");
663
- class b {
664
- constructor(e, n, o) {
665
- this.year = e, this.month = n, this.day = o;
666
- }
667
- // this is an incomplete implementation that only handles arithmetic on a single unit at a time.
668
- // i didn't want to get into more complex arithmetic since it get tricky fast
669
- // this is enough to serve my needs and will still be a drop-in replacement when actual Temporal API lands
670
- add(e) {
671
- const n = S(this);
672
- if ("days" in e)
673
- return n.setUTCDate(this.day + e.days), b.from(n);
674
- let { year: o, month: r } = this;
675
- "months" in e ? (r = this.month + e.months, n.setUTCMonth(r - 1)) : (o = this.year + e.years, n.setUTCFullYear(o));
676
- const a = b.from(S({ year: o, month: r, day: 1 }));
677
- return G(b.from(n), a, at(a));
678
- }
679
- toString() {
680
- return `${oe(this.year, 4)}-${oe(this.month, 2)}-${oe(this.day, 2)}`;
681
- }
682
- toPlainYearMonth() {
683
- return new Q(this.year, this.month);
684
- }
685
- equals(e) {
686
- return b.compare(this, e) === 0;
687
- }
688
- static compare(e, n) {
689
- return e.year < n.year ? -1 : e.year > n.year ? 1 : e.month < n.month ? -1 : e.month > n.month ? 1 : e.day < n.day ? -1 : e.day > n.day ? 1 : 0;
690
- }
691
- static from(e) {
692
- if (typeof e == "string") {
693
- const n = e.match(Kt);
694
- if (!n)
695
- throw new TypeError(e);
696
- const [, o, r, a] = n;
697
- return new b(
698
- parseInt(o, 10),
699
- parseInt(r, 10),
700
- parseInt(a, 10)
701
- );
702
- }
703
- return new b(
704
- e.getUTCFullYear(),
705
- e.getUTCMonth() + 1,
706
- e.getUTCDate()
707
- );
708
- }
709
- }
710
- class Q {
711
- constructor(e, n) {
712
- this.year = e, this.month = n;
713
- }
714
- add(e) {
715
- const n = S(this), o = (e.months ?? 0) + (e.years ?? 0) * 12;
716
- return n.setUTCMonth(n.getUTCMonth() + o), new Q(n.getUTCFullYear(), n.getUTCMonth() + 1);
717
- }
718
- equals(e) {
719
- return this.year === e.year && this.month === e.month;
720
- }
721
- toPlainDate() {
722
- return new b(this.year, this.month, 1);
723
- }
724
- }
725
- function J(t, e) {
726
- if (e)
727
- try {
728
- return t.from(e);
729
- } catch {
730
- }
731
- }
732
- function T(t) {
733
- const [e, n] = fe(t);
734
- return [C(() => J(b, e), [e]), (o) => n(o == null ? void 0 : o.toString())];
735
- }
736
- function Gt(t) {
737
- const [e = "", n] = fe(t);
738
- return [C(() => {
739
- const [o, r] = e.split("/"), a = J(b, o), s = J(b, r);
740
- return a && s ? [a, s] : [];
741
- }, [e]), (o) => n(`${o[0]}/${o[1]}`)];
742
- }
743
- function Qt(t) {
744
- const [e = "", n] = fe(t);
745
- return [C(() => {
746
- const o = [];
747
- for (const r of e.trim().split(/\s+/)) {
748
- const a = J(b, r);
749
- a && o.push(a);
750
- }
751
- return o;
752
- }, [e]), (o) => n(o.join(" "))];
753
- }
754
- function Y(t, e) {
755
- return C(
756
- () => new Intl.DateTimeFormat(e, { timeZone: "UTC", ...t }),
757
- [e, t]
758
- );
759
- }
760
- function Oe(t, e, n) {
761
- const o = Y(t, n);
762
- return C(() => {
763
- const r = [], a = /* @__PURE__ */ new Date();
764
- for (var s = 0; s < 7; s++) {
765
- const l = (a.getUTCDay() - e + 7) % 7;
766
- r[l] = o.format(a), a.setUTCDate(a.getUTCDate() + 1);
767
- }
768
- return r;
769
- }, [e, o]);
770
- }
771
- const Fe = (t, e, n) => G(t, e, n) === t, je = (t) => t.target.matches(":dir(ltr)"), Xt = { month: "long", day: "numeric" }, Zt = { month: "long" }, en = { weekday: "long" }, re = { bubbles: !0 };
772
- function tn({ props: t, context: e }) {
773
- const { offset: n } = t, {
774
- firstDayOfWeek: o,
775
- isDateDisallowed: r,
776
- min: a,
777
- max: s,
778
- today: l,
779
- page: c,
780
- locale: u,
781
- focusedDate: i,
782
- formatWeekday: h
783
- } = e, d = l ?? pe(), p = Oe(en, o, u), v = C(
784
- () => ({ weekday: h }),
785
- [h]
786
- ), w = Oe(v, o, u), y = Y(Xt, u), f = Y(Zt, u), D = C(
787
- () => c.start.add({ months: n }),
788
- [c, n]
789
- ), X = C(
790
- () => Jt(D, o),
791
- [D, o]
792
- ), st = E("focusday", re), it = E("selectday", re), ct = E("hoverday", re);
793
- function ke(g) {
794
- st(G(g, a, s));
795
- }
796
- function lt(g) {
797
- let k;
798
- switch (g.key) {
799
- case "ArrowRight":
800
- k = i.add({ days: je(g) ? 1 : -1 });
801
- break;
802
- case "ArrowLeft":
803
- k = i.add({ days: je(g) ? -1 : 1 });
804
- break;
805
- case "ArrowDown":
806
- k = i.add({ days: 7 });
807
- break;
808
- case "ArrowUp":
809
- k = i.add({ days: -7 });
810
- break;
811
- case "PageUp":
812
- k = i.add(g.shiftKey ? { years: -1 } : { months: -1 });
813
- break;
814
- case "PageDown":
815
- k = i.add(g.shiftKey ? { years: 1 } : { months: 1 });
816
- break;
817
- case "Home":
818
- k = ye(i, o);
819
- break;
820
- case "End":
821
- k = rt(i, o);
822
- break;
823
- default:
824
- return;
825
- }
826
- ke(k), g.preventDefault();
827
- }
828
- function ut(g) {
829
- var Ce, Ee;
830
- const k = D.equals(g);
831
- if (!e.showOutsideDays && !k)
832
- return;
833
- const dt = g.equals(i), De = g.equals(d), H = S(g), V = r == null ? void 0 : r(H), Se = !Fe(g, a, s);
834
- let xe = "", P;
835
- if (e.type === "range") {
836
- const [N, j] = e.value, Te = N == null ? void 0 : N.equals(g), Ne = j == null ? void 0 : j.equals(g);
837
- P = N && j && Fe(g, N, j), xe = `${Te ? "range-start" : ""} ${Ne ? "range-end" : ""} ${P && !Te && !Ne ? "range-inner" : ""}`;
838
- } else
839
- e.type === "multi" ? P = e.value.some((N) => N.equals(g)) : P = (Ce = e.value) == null ? void 0 : Ce.equals(g);
840
- return {
841
- part: `${`button day day-${H.getDay()} ${// we don't want outside days to ever be shown as selected
842
- k ? P ? "selected" : "" : "outside"} ${V ? "disallowed" : ""} ${De ? "today" : ""} ${((Ee = e.getDayParts) == null ? void 0 : Ee.call(e, H)) ?? ""}`} ${xe}`,
843
- tabindex: k && dt ? 0 : -1,
844
- disabled: Se,
845
- "aria-disabled": V ? "true" : void 0,
846
- "aria-pressed": k && P,
847
- "aria-current": De ? "date" : void 0,
848
- "aria-label": y.format(H),
849
- onkeydown: lt,
850
- onclick() {
851
- V || it(g), ke(g);
852
- },
853
- onmouseover() {
854
- !V && !Se && ct(g);
855
- }
856
- };
857
- }
858
- return {
859
- weeks: X,
860
- yearMonth: D,
861
- daysLong: p,
862
- daysVisible: w,
863
- formatter: f,
864
- getDayProps: ut
865
- };
866
- }
867
- const ae = pe(), me = _t({
868
- type: "date",
869
- firstDayOfWeek: 1,
870
- focusedDate: ae,
871
- page: { start: ae.toPlainYearMonth(), end: ae.toPlainYearMonth() }
872
- });
873
- customElements.define("calendar-ctx", me);
874
- const nn = (t, e) => (e + t) % 7, on = R(
875
- (t) => {
876
- const e = Vt(me), n = yt(), o = tn({ props: t, context: e });
877
- function r() {
878
- var a;
879
- (a = n.current.querySelector("button[tabindex='0']")) == null || a.focus();
880
- }
881
- return /* @__PURE__ */ B("host", { shadowDom: !0, focus: r, children: [
882
- /* @__PURE__ */ m("div", { id: "h", part: "heading", children: o.formatter.format(S(o.yearMonth)) }),
883
- /* @__PURE__ */ B("table", { ref: n, "aria-labelledby": "h", part: "table", children: [
884
- /* @__PURE__ */ m("thead", { children: /* @__PURE__ */ m("tr", { part: "tr head", children: o.daysLong.map((a, s) => /* @__PURE__ */ B(
885
- "th",
886
- {
887
- part: `th day day-${nn(e.firstDayOfWeek, s)}`,
888
- scope: "col",
889
- children: [
890
- /* @__PURE__ */ m("span", { class: "vh", children: a }),
891
- /* @__PURE__ */ m("span", { "aria-hidden": "true", children: o.daysVisible[s] })
892
- ]
893
- }
894
- )) }) }),
895
- /* @__PURE__ */ m("tbody", { children: o.weeks.map((a, s) => /* @__PURE__ */ m("tr", { part: "tr week", children: a.map((l, c) => {
896
- const u = o.getDayProps(l);
897
- return /* @__PURE__ */ m("td", { part: "td", children: u && /* @__PURE__ */ m("button", { ...u, children: l.day }) }, c);
898
- }) }, s)) })
899
- ] })
900
- ] });
901
- },
902
- {
903
- props: {
904
- offset: {
905
- type: Number,
906
- value: 0
907
- }
908
- },
909
- styles: [
910
- nt,
911
- ot,
912
- K`:host{--color-accent: black;--color-text-on-accent: white;display:flex;flex-direction:column;gap:.25rem;text-align:center;inline-size:fit-content}table{border-collapse:collapse;font-size:.875rem}th{font-weight:700;block-size:2.25rem}td{padding-inline:0}button{color:inherit;font-size:inherit;background:transparent;border:0;font-variant-numeric:tabular-nums;block-size:2.25rem;inline-size:2.25rem}button:hover:where(:not(:disabled,[aria-disabled])){background:#0000000d}button:is([aria-pressed=true],:focus-visible){background:var(--color-accent);color:var(--color-text-on-accent)}button:focus-visible{outline:1px solid var(--color-text-on-accent);outline-offset:-2px}button:disabled,:host::part(outside),:host::part(disallowed){cursor:default;opacity:.5}`
913
- ]
914
- }
915
- );
916
- customElements.define("calendar-month", on);
917
- function qe(t) {
918
- return /* @__PURE__ */ m(
919
- "button",
920
- {
921
- part: `button ${t.name} ${t.onclick ? "" : "disabled"}`,
922
- onclick: t.onclick,
923
- "aria-disabled": t.onclick ? null : "true",
924
- children: /* @__PURE__ */ m("slot", { name: t.name, children: t.children })
925
- }
926
- );
927
- }
928
- function ge(t) {
929
- const e = S(t.page.start), n = S(t.page.end);
930
- return /* @__PURE__ */ B("div", { role: "group", "aria-labelledby": "h", part: "container", children: [
931
- /* @__PURE__ */ m("div", { id: "h", class: "vh", "aria-live": "polite", "aria-atomic": "true", children: t.formatVerbose.formatRange(e, n) }),
932
- /* @__PURE__ */ B("div", { part: "header", children: [
933
- /* @__PURE__ */ m(qe, { name: "previous", onclick: t.previous, children: "Previous" }),
934
- /* @__PURE__ */ m("slot", { part: "heading", name: "heading", children: /* @__PURE__ */ m("div", { "aria-hidden": "true", children: t.format.formatRange(e, n) }) }),
935
- /* @__PURE__ */ m(qe, { name: "next", onclick: t.next, children: "Next" })
936
- ] }),
937
- /* @__PURE__ */ m(
938
- me,
939
- {
940
- value: t,
941
- onselectday: t.onSelect,
942
- onfocusday: t.onFocus,
943
- onhoverday: t.onHover,
944
- children: /* @__PURE__ */ m("slot", {})
945
- }
946
- )
947
- ] });
948
- }
949
- const be = {
950
- value: {
951
- type: String,
952
- value: ""
953
- },
954
- min: {
955
- type: String,
956
- value: ""
957
- },
958
- max: {
959
- type: String,
960
- value: ""
961
- },
962
- today: {
963
- type: String,
964
- value: ""
965
- },
966
- isDateDisallowed: {
967
- type: Function,
968
- value: (t) => !1
969
- },
970
- formatWeekday: {
971
- type: String,
972
- value: () => "narrow"
973
- },
974
- getDayParts: {
975
- type: Function,
976
- value: (t) => ""
977
- },
978
- firstDayOfWeek: {
979
- type: Number,
980
- value: () => 1
981
- },
982
- showOutsideDays: {
983
- type: Boolean,
984
- value: !1
985
- },
986
- locale: {
987
- type: String,
988
- value: () => {
989
- }
990
- },
991
- months: {
992
- type: Number,
993
- value: 1
994
- },
995
- focusedDate: {
996
- type: String,
997
- value: () => {
998
- }
999
- },
1000
- pageBy: {
1001
- type: String,
1002
- value: () => "months"
1003
- }
1004
- }, ve = [
1005
- nt,
1006
- ot,
1007
- K`:host{display:block;inline-size:fit-content}[role=group]{display:flex;flex-direction:column;gap:1em}:host::part(header){display:flex;align-items:center;justify-content:space-between}:host::part(heading){font-weight:700;font-size:1.25em}button{display:flex;align-items:center;justify-content:center}button[aria-disabled]{cursor:default;opacity:.5}`
1008
- ], rn = { year: "numeric" }, an = { year: "numeric", month: "long" };
1009
- function se(t, e) {
1010
- return (e.year - t.year) * 12 + e.month - t.month;
1011
- }
1012
- const ze = (t, e) => (t = e === 12 ? new Q(t.year, 1) : t, {
1013
- start: t,
1014
- end: t.add({ months: e - 1 })
1015
- });
1016
- function sn({
1017
- pageBy: t,
1018
- focusedDate: e,
1019
- months: n,
1020
- max: o,
1021
- min: r,
1022
- goto: a
1023
- }) {
1024
- const s = t === "single" ? 1 : n, [l, c] = he(
1025
- () => ze(e.toPlainYearMonth(), n)
1026
- ), u = (h) => c(ze(l.start.add({ months: h }), n)), i = (h) => {
1027
- const d = se(l.start, h.toPlainYearMonth());
1028
- return d >= 0 && d < n;
1029
- };
1030
- return L(() => {
1031
- if (i(e))
1032
- return;
1033
- const h = se(e.toPlainYearMonth(), l.start);
1034
- a(e.add({ months: h }));
1035
- }, [l.start]), L(() => {
1036
- if (i(e))
1037
- return;
1038
- const h = se(l.start, e.toPlainYearMonth());
1039
- u(h === -1 ? -s : h === n ? s : Math.floor(h / n) * n);
1040
- }, [e, s, n]), {
1041
- page: l,
1042
- previous: !r || !i(r) ? () => u(-s) : void 0,
1043
- next: !o || !i(o) ? () => u(s) : void 0
1044
- };
1045
- }
1046
- function we({
1047
- months: t,
1048
- pageBy: e,
1049
- locale: n,
1050
- focusedDate: o,
1051
- setFocusedDate: r
1052
- }) {
1053
- const [a] = T("min"), [s] = T("max"), [l] = T("today"), c = E("focusday"), u = E("change"), i = C(
1054
- () => G(o ?? l ?? pe(), a, s),
1055
- [o, l, a, s]
1056
- );
1057
- function h(f) {
1058
- r(f), c(S(f));
1059
- }
1060
- const { next: d, previous: p, page: v } = sn({
1061
- pageBy: e,
1062
- focusedDate: i,
1063
- months: t,
1064
- min: a,
1065
- max: s,
1066
- goto: h
1067
- }), w = I();
1068
- function y(f) {
1069
- const D = (f == null ? void 0 : f.target) ?? "day";
1070
- D === "day" ? w.current.querySelectorAll("calendar-month").forEach((X) => X.focus(f)) : w.current.shadowRoot.querySelector(`[part~='${D}']`).focus(f);
1071
- }
1072
- return {
1073
- format: Y(rn, n),
1074
- formatVerbose: Y(an, n),
1075
- page: v,
1076
- focusedDate: i,
1077
- dispatch: u,
1078
- onFocus(f) {
1079
- f.stopPropagation(), h(f.detail), setTimeout(y);
1080
- },
1081
- min: a,
1082
- max: s,
1083
- today: l,
1084
- next: d,
1085
- previous: p,
1086
- focus: y
1087
- };
1088
- }
1089
- const cn = R(
1090
- (t) => {
1091
- const [e, n] = T("value"), [o = e, r] = T("focusedDate"), a = we({
1092
- ...t,
1093
- focusedDate: o,
1094
- setFocusedDate: r
1095
- });
1096
- function s(l) {
1097
- n(l.detail), a.dispatch();
1098
- }
1099
- return /* @__PURE__ */ m("host", { shadowDom: !0, focus: a.focus, children: /* @__PURE__ */ m(
1100
- ge,
1101
- {
1102
- ...t,
1103
- ...a,
1104
- type: "date",
1105
- value: e,
1106
- onSelect: s
1107
- }
1108
- ) });
1109
- },
1110
- { props: be, styles: ve }
1111
- );
1112
- customElements.define("calendar-date", cn);
1113
- const Be = (t, e) => b.compare(t, e) < 0 ? [t, e] : [e, t], ln = R(
1114
- (t) => {
1115
- const [e, n] = Gt("value"), [o = e[0], r] = T("focusedDate"), a = we({
1116
- ...t,
1117
- focusedDate: o,
1118
- setFocusedDate: r
1119
- }), s = E("rangestart"), l = E("rangeend"), [c, u] = T(
1120
- "tentative"
1121
- ), [i, h] = he();
1122
- L(() => h(void 0), [c]);
1123
- function d(y) {
1124
- a.onFocus(y), p(y);
1125
- }
1126
- function p(y) {
1127
- y.stopPropagation(), c && h(y.detail);
1128
- }
1129
- function v(y) {
1130
- const f = y.detail;
1131
- y.stopPropagation(), c ? (n(Be(c, f)), u(void 0), l(S(f)), a.dispatch()) : (u(f), s(S(f)));
1132
- }
1133
- const w = c ? Be(c, i ?? c) : e;
1134
- return /* @__PURE__ */ m("host", { shadowDom: !0, focus: a.focus, children: /* @__PURE__ */ m(
1135
- ge,
1136
- {
1137
- ...t,
1138
- ...a,
1139
- type: "range",
1140
- value: w,
1141
- onFocus: d,
1142
- onHover: p,
1143
- onSelect: v
1144
- }
1145
- ) });
1146
- },
1147
- {
1148
- props: {
1149
- ...be,
1150
- tentative: {
1151
- type: String,
1152
- value: ""
1153
- }
1154
- },
1155
- styles: ve
1156
- }
1157
- );
1158
- customElements.define("calendar-range", ln);
1159
- const un = R(
1160
- (t) => {
1161
- const [e, n] = Qt("value"), [o = e[0], r] = T("focusedDate"), a = we({
1162
- ...t,
1163
- focusedDate: o,
1164
- setFocusedDate: r
1165
- });
1166
- function s(l) {
1167
- const c = [...e], u = e.findIndex((i) => i.equals(l.detail));
1168
- u < 0 ? c.push(l.detail) : c.splice(u, 1), n(c), a.dispatch();
1169
- }
1170
- return /* @__PURE__ */ m("host", { shadowDom: !0, focus: a.focus, children: /* @__PURE__ */ m(
1171
- ge,
1172
- {
1173
- ...t,
1174
- ...a,
1175
- type: "multi",
1176
- value: e,
1177
- onSelect: s
1178
- }
1179
- ) });
1180
- },
1181
- { props: be, styles: ve }
1182
- );
1183
- customElements.define("calendar-multi", un);
1184
- export {
1185
- cn as CalendarDate,
1186
- on as CalendarMonth,
1187
- un as CalendarMulti,
1188
- ln as CalendarRange
1189
- };