@nysds/nys-fileinput 1.6.0 → 1.8.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.
@@ -14,10 +14,10 @@ import { css as C, LitElement as D, html as h } from "lit";
14
14
  * Copyright 2019 Google LLC
15
15
  * SPDX-License-Identifier: BSD-3-Clause
16
16
  */
17
- const m = globalThis, w = m.ShadowRoot && (m.ShadyCSS === void 0 || m.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, z = Symbol(), x = /* @__PURE__ */ new WeakMap();
18
- let U = class {
17
+ const g = globalThis, w = g.ShadowRoot && (g.ShadyCSS === void 0 || g.ShadyCSS.nativeShadow) && "adoptedStyleSheets" in Document.prototype && "replace" in CSSStyleSheet.prototype, U = Symbol(), x = /* @__PURE__ */ new WeakMap();
18
+ let A = class {
19
19
  constructor(e, t, i) {
20
- if (this._$cssResult$ = !0, i !== z) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
20
+ if (this._$cssResult$ = !0, i !== U) throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");
21
21
  this.cssText = e, this.t = t;
22
22
  }
23
23
  get styleSheet() {
@@ -33,52 +33,52 @@ let U = class {
33
33
  return this.cssText;
34
34
  }
35
35
  };
36
- const A = (n) => new U(typeof n == "string" ? n : n + "", void 0, z), M = (n, e) => {
37
- if (w) n.adoptedStyleSheets = e.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
36
+ const z = (o) => new A(typeof o == "string" ? o : o + "", void 0, U), M = (o, e) => {
37
+ if (w) o.adoptedStyleSheets = e.map((t) => t instanceof CSSStyleSheet ? t : t.styleSheet);
38
38
  else for (const t of e) {
39
- const i = document.createElement("style"), s = m.litNonce;
40
- s !== void 0 && i.setAttribute("nonce", s), i.textContent = t.cssText, n.appendChild(i);
39
+ const i = document.createElement("style"), s = g.litNonce;
40
+ s !== void 0 && i.setAttribute("nonce", s), i.textContent = t.cssText, o.appendChild(i);
41
41
  }
42
- }, P = w ? (n) => n : (n) => n instanceof CSSStyleSheet ? ((e) => {
42
+ }, P = w ? (o) => o : (o) => o instanceof CSSStyleSheet ? ((e) => {
43
43
  let t = "";
44
44
  for (const i of e.cssRules) t += i.cssText;
45
- return A(t);
46
- })(n) : n;
45
+ return z(t);
46
+ })(o) : o;
47
47
  /**
48
48
  * @license
49
49
  * Copyright 2017 Google LLC
50
50
  * SPDX-License-Identifier: BSD-3-Clause
51
51
  */
52
- const { is: R, defineProperty: q, getOwnPropertyDescriptor: O, getOwnPropertyNames: L, getOwnPropertySymbols: I, getPrototypeOf: T } = Object, c = globalThis, F = c.trustedTypes, V = F ? F.emptyScript : "", $ = c.reactiveElementPolyfillSupport, y = (n, e) => n, g = { toAttribute(n, e) {
52
+ const { is: R, defineProperty: q, getOwnPropertyDescriptor: O, getOwnPropertyNames: L, getOwnPropertySymbols: I, getPrototypeOf: T } = Object, p = globalThis, k = p.trustedTypes, V = k ? k.emptyScript : "", $ = p.reactiveElementPolyfillSupport, y = (o, e) => o, m = { toAttribute(o, e) {
53
53
  switch (e) {
54
54
  case Boolean:
55
- n = n ? V : null;
55
+ o = o ? V : null;
56
56
  break;
57
57
  case Object:
58
58
  case Array:
59
- n = n == null ? n : JSON.stringify(n);
59
+ o = o == null ? o : JSON.stringify(o);
60
60
  }
61
- return n;
62
- }, fromAttribute(n, e) {
63
- let t = n;
61
+ return o;
62
+ }, fromAttribute(o, e) {
63
+ let t = o;
64
64
  switch (e) {
65
65
  case Boolean:
66
- t = n !== null;
66
+ t = o !== null;
67
67
  break;
68
68
  case Number:
69
- t = n === null ? null : Number(n);
69
+ t = o === null ? null : Number(o);
70
70
  break;
71
71
  case Object:
72
72
  case Array:
73
73
  try {
74
- t = JSON.parse(n);
74
+ t = JSON.parse(o);
75
75
  } catch {
76
76
  t = null;
77
77
  }
78
78
  }
79
79
  return t;
80
- } }, E = (n, e) => !R(n, e), k = { attribute: !0, type: String, converter: g, reflect: !1, hasChanged: E };
81
- Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), c.litPropertyMetadata ?? (c.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
80
+ } }, E = (o, e) => !R(o, e), F = { attribute: !0, type: String, converter: m, reflect: !1, hasChanged: E };
81
+ Symbol.metadata ?? (Symbol.metadata = Symbol("metadata")), p.litPropertyMetadata ?? (p.litPropertyMetadata = /* @__PURE__ */ new WeakMap());
82
82
  class f extends HTMLElement {
83
83
  static addInitializer(e) {
84
84
  this._$Ei(), (this.l ?? (this.l = [])).push(e);
@@ -86,7 +86,7 @@ class f extends HTMLElement {
86
86
  static get observedAttributes() {
87
87
  return this.finalize(), this._$Eh && [...this._$Eh.keys()];
88
88
  }
89
- static createProperty(e, t = k) {
89
+ static createProperty(e, t = F) {
90
90
  if (t.state && (t.attribute = !1), this._$Ei(), this.elementProperties.set(e, t), !t.noAccessor) {
91
91
  const i = Symbol(), s = this.getPropertyDescriptor(e, i, t);
92
92
  s !== void 0 && q(this.prototype, e, s);
@@ -95,18 +95,18 @@ class f extends HTMLElement {
95
95
  static getPropertyDescriptor(e, t, i) {
96
96
  const { get: s, set: r } = O(this.prototype, e) ?? { get() {
97
97
  return this[t];
98
- }, set(o) {
99
- this[t] = o;
98
+ }, set(n) {
99
+ this[t] = n;
100
100
  } };
101
101
  return { get() {
102
102
  return s == null ? void 0 : s.call(this);
103
- }, set(o) {
104
- const p = s == null ? void 0 : s.call(this);
105
- r.call(this, o), this.requestUpdate(e, p, i);
103
+ }, set(n) {
104
+ const c = s == null ? void 0 : s.call(this);
105
+ r.call(this, n), this.requestUpdate(e, c, i);
106
106
  }, configurable: !0, enumerable: !0 };
107
107
  }
108
108
  static getPropertyOptions(e) {
109
- return this.elementProperties.get(e) ?? k;
109
+ return this.elementProperties.get(e) ?? F;
110
110
  }
111
111
  static _$Ei() {
112
112
  if (this.hasOwnProperty(y("elementProperties"))) return;
@@ -190,16 +190,16 @@ class f extends HTMLElement {
190
190
  var r;
191
191
  const i = this.constructor.elementProperties.get(e), s = this.constructor._$Eu(e, i);
192
192
  if (s !== void 0 && i.reflect === !0) {
193
- const o = (((r = i.converter) == null ? void 0 : r.toAttribute) !== void 0 ? i.converter : g).toAttribute(t, i.type);
194
- this._$Em = e, o == null ? this.removeAttribute(s) : this.setAttribute(s, o), this._$Em = null;
193
+ const n = (((r = i.converter) == null ? void 0 : r.toAttribute) !== void 0 ? i.converter : m).toAttribute(t, i.type);
194
+ this._$Em = e, n == null ? this.removeAttribute(s) : this.setAttribute(s, n), this._$Em = null;
195
195
  }
196
196
  }
197
197
  _$AK(e, t) {
198
198
  var r;
199
199
  const i = this.constructor, s = i._$Eh.get(e);
200
200
  if (s !== void 0 && this._$Em !== s) {
201
- const o = i.getPropertyOptions(s), p = typeof o.converter == "function" ? { fromAttribute: o.converter } : ((r = o.converter) == null ? void 0 : r.fromAttribute) !== void 0 ? o.converter : g;
202
- this._$Em = s, this[s] = p.fromAttribute(t, o.type), this._$Em = null;
201
+ const n = i.getPropertyOptions(s), c = typeof n.converter == "function" ? { fromAttribute: n.converter } : ((r = n.converter) == null ? void 0 : r.fromAttribute) !== void 0 ? n.converter : m;
202
+ this._$Em = s, this[s] = c.fromAttribute(t, n.type), this._$Em = null;
203
203
  }
204
204
  }
205
205
  requestUpdate(e, t, i) {
@@ -230,11 +230,11 @@ class f extends HTMLElement {
230
230
  if (!this.isUpdatePending) return;
231
231
  if (!this.hasUpdated) {
232
232
  if (this.renderRoot ?? (this.renderRoot = this.createRenderRoot()), this._$Ep) {
233
- for (const [r, o] of this._$Ep) this[r] = o;
233
+ for (const [r, n] of this._$Ep) this[r] = n;
234
234
  this._$Ep = void 0;
235
235
  }
236
236
  const s = this.constructor.elementProperties;
237
- if (s.size > 0) for (const [r, o] of s) o.wrapped !== !0 || this._$AL.has(r) || this[r] === void 0 || this.P(r, this[r], o);
237
+ if (s.size > 0) for (const [r, n] of s) n.wrapped !== !0 || this._$AL.has(r) || this[r] === void 0 || this.P(r, this[r], n);
238
238
  }
239
239
  let e = !1;
240
240
  const t = this._$AL;
@@ -277,44 +277,44 @@ class f extends HTMLElement {
277
277
  firstUpdated(e) {
278
278
  }
279
279
  }
280
- f.elementStyles = [], f.shadowRootOptions = { mode: "open" }, f[y("elementProperties")] = /* @__PURE__ */ new Map(), f[y("finalized")] = /* @__PURE__ */ new Map(), $ == null || $({ ReactiveElement: f }), (c.reactiveElementVersions ?? (c.reactiveElementVersions = [])).push("2.0.4");
280
+ f.elementStyles = [], f.shadowRootOptions = { mode: "open" }, f[y("elementProperties")] = /* @__PURE__ */ new Map(), f[y("finalized")] = /* @__PURE__ */ new Map(), $ == null || $({ ReactiveElement: f }), (p.reactiveElementVersions ?? (p.reactiveElementVersions = [])).push("2.0.4");
281
281
  /**
282
282
  * @license
283
283
  * Copyright 2017 Google LLC
284
284
  * SPDX-License-Identifier: BSD-3-Clause
285
285
  */
286
- const B = { attribute: !0, type: String, converter: g, reflect: !1, hasChanged: E }, j = (n = B, e, t) => {
286
+ const B = { attribute: !0, type: String, converter: m, reflect: !1, hasChanged: E }, j = (o = B, e, t) => {
287
287
  const { kind: i, metadata: s } = t;
288
288
  let r = globalThis.litPropertyMetadata.get(s);
289
- if (r === void 0 && globalThis.litPropertyMetadata.set(s, r = /* @__PURE__ */ new Map()), r.set(t.name, n), i === "accessor") {
290
- const { name: o } = t;
291
- return { set(p) {
289
+ if (r === void 0 && globalThis.litPropertyMetadata.set(s, r = /* @__PURE__ */ new Map()), r.set(t.name, o), i === "accessor") {
290
+ const { name: n } = t;
291
+ return { set(c) {
292
292
  const b = e.get.call(this);
293
- e.set.call(this, p), this.requestUpdate(o, b, n);
294
- }, init(p) {
295
- return p !== void 0 && this.P(o, void 0, n), p;
293
+ e.set.call(this, c), this.requestUpdate(n, b, o);
294
+ }, init(c) {
295
+ return c !== void 0 && this.P(n, void 0, o), c;
296
296
  } };
297
297
  }
298
298
  if (i === "setter") {
299
- const { name: o } = t;
300
- return function(p) {
301
- const b = this[o];
302
- e.call(this, p), this.requestUpdate(o, b, n);
299
+ const { name: n } = t;
300
+ return function(c) {
301
+ const b = this[n];
302
+ e.call(this, c), this.requestUpdate(n, b, o);
303
303
  };
304
304
  }
305
305
  throw Error("Unsupported decorator location: " + i);
306
306
  };
307
- function a(n) {
308
- return (e, t) => typeof t == "object" ? j(n, e, t) : ((i, s, r) => {
309
- const o = s.hasOwnProperty(r);
310
- return s.constructor.createProperty(r, o ? { ...i, wrapped: !0 } : i), o ? Object.getOwnPropertyDescriptor(s, r) : void 0;
311
- })(n, e, t);
307
+ function a(o) {
308
+ return (e, t) => typeof t == "object" ? j(o, e, t) : ((i, s, r) => {
309
+ const n = s.hasOwnProperty(r);
310
+ return s.constructor.createProperty(r, n ? { ...i, wrapped: !0 } : i), n ? Object.getOwnPropertyDescriptor(s, r) : void 0;
311
+ })(o, e, t);
312
312
  }
313
- async function N(n, e) {
313
+ async function N(o, e) {
314
314
  if (!e || e.trim() === "") return !0;
315
- const t = e.toLowerCase().split(",").map((r) => r.trim()), i = n.name.toLowerCase(), s = i.includes(".") ? i.split(".").pop() : "";
315
+ const t = e.toLowerCase().split(",").map((r) => r.trim()), i = o.name.toLowerCase(), s = i.includes(".") ? i.split(".").pop() : "";
316
316
  for (const r of t)
317
- if (r.startsWith(".") && r.slice(1) === s || r.endsWith("/*") && n.type.startsWith(r.slice(0, -1)) || n.type === r)
317
+ if (r.startsWith(".") && r.slice(1) === s || r.endsWith("/*") && o.type.startsWith(r.slice(0, -1)) || o.type === r)
318
318
  return !0;
319
319
  return !1;
320
320
  }
@@ -340,14 +340,25 @@ const H = C`
340
340
  );
341
341
 
342
342
  /* Dropzone */
343
- --_nys-fileinput-dropzone-background: var(--nys-color-ink-reverse, #fff);
344
- --_nys-fileinput-dropzone-radius: var(
343
+ --_nys-fileinput-background-color--dropzone: var(
344
+ --nys-color-ink-reverse,
345
+ #fff
346
+ );
347
+ --_nys-fileinput-background-color--dropzone--disabled: var(
348
+ --nys-color-neutral-10,
349
+ #f6f6f6
350
+ );
351
+ --_nys-fileinput-background-color--dropzone--active: var(
352
+ --nys-color-theme-faint,
353
+ #f7fafd
354
+ );
355
+ --_nys-fileinput-border-radius--dropzone: var(
345
356
  --nys-radius-lg,
346
357
  var(--nys-space-100, 8px)
347
358
  );
348
- --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 1px) dashed
349
- var(--nys-color-neutral-200, #bec0c1);
350
- --_nys-fileinput-dropzone-color: var(--nys-color-text-disabled, #bec0c1);
359
+ --_nys-fileinput-border-style: dashed;
360
+ --_nys-fileinput-border-color: var(--nys-color-neutral-200, #bec0c1);
361
+ --_nys-fileinput-border-width: var(--nys-border-width-sm, 1px);
351
362
  }
352
363
 
353
364
  .nys-fileinput {
@@ -375,7 +386,7 @@ const H = C`
375
386
  gap: var(--_nys-fileinput-gap);
376
387
  }
377
388
 
378
- /***** Dragzone *****/
389
+ /***** Dropzone *****/
379
390
  .nys-fileinput__dropzone {
380
391
  display: flex;
381
392
  padding: var(--nys-space-400, 32px) var(--nys-space-200, 16px);
@@ -383,40 +394,42 @@ const H = C`
383
394
  align-items: center;
384
395
  gap: 12px;
385
396
  align-self: stretch;
386
- border-radius: var(--_nys-fileinput-dropzone-radius);
387
- outline: var(--_nys-fileinput-dropzone-border);
388
- background: var(--_nys-fileinput-dropzone-background);
397
+ border-radius: var(--_nys-fileinput-border-radius--dropzone);
398
+ outline: var(--_nys-fileinput-border-width)
399
+ var(--_nys-fileinput-border-style) var(--_nys-fileinput-border-color);
400
+ background-color: var(--_nys-fileinput-background-color--dropzone);
389
401
  transition: all 60ms ease-in-out;
390
402
  }
391
403
 
392
404
  .nys-fileinput__dropzone:hover {
393
405
  cursor: pointer;
394
- --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 2px) dashed
395
- var(--nys-color-neutral-700, #4a4d4f);
406
+ --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);
407
+ --_nys-fileinput-border-color: var(--nys-color-neutral-700, #4a4d4f);
396
408
  }
397
409
 
398
410
  .nys-fileinput__dropzone.drag-active {
399
- --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 2px) solid
400
- var(--nys-color-theme, #154973);
401
- --_nys-fileinput-dropzone-background: var(--nys-color-theme-faint, #f7fafd);
411
+ --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);
412
+ --_nys-fileinput-border-color: var(--nys-color-theme, #154973);
413
+ --_nys-fileinput-border-style: solid;
402
414
  }
403
415
 
404
416
  .nys-fileinput__dropzone.error {
405
- --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 1px) dashed
406
- var(--nys-color-danger, #b52c2c);
417
+ --_nys-fileinput-border-color: var(--nys-color-danger, #b52c2c);
407
418
  }
408
419
 
409
420
  .nys-fileinput__dropzone.error:hover {
410
- --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 2px) dashed
411
- var(--nys-color-emergency, #721c1c);
421
+ --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);
422
+ --_nys-fileinput-border-color: var(--nys-color-emergency, #721c1c);
412
423
  }
413
424
 
414
425
  .nys-fileinput__dropzone.disabled {
415
426
  cursor: not-allowed;
416
- --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 1px) dashed
417
- var(--nys-color-neutral-300, #a7a9ab);
418
- --_nys-fileinput-dropzone-background: var(--nys-color-neutral-10, #f6f6f6);
419
- color: var(--_nys-fileinput-dropzone-color);
427
+ --_nys-fileinput-border-color: var(--nys-color-neutral-300, #a7a9ab);
428
+ --_nys-fileinput-border-width: var(--nys-border-width-sm, 1px);
429
+ background-color: var(
430
+ --_nys-fileinput-background-color--dropzone--disabled
431
+ );
432
+ color: var(--_nys-fileinput-color--dropzone--disabled);
420
433
  }
421
434
 
422
435
  progress {
@@ -424,30 +437,28 @@ const H = C`
424
437
  width: 100%;
425
438
  height: 6px;
426
439
  border-radius: var(--nys-radius-round, 1776px);
427
- background: var(--_nys-fileinput-progress-background);
440
+ background-color: var(--_nys-fileinput-progress-background);
428
441
  overflow: hidden;
429
442
  appearance: none;
430
443
  border: none;
431
444
  }
432
445
  progress::-moz-progress-bar {
433
- background: var(--_nys-fileinput-progress-background);
446
+ background-color: var(--_nys-fileinput-progress-background);
434
447
  }
435
448
  progress::-webkit-progress-value {
436
- background: var(--_nys-fileinput-progress-background);
449
+ background-color: var(--_nys-fileinput-progress-background);
437
450
  }
438
451
  progress::-webkit-progress-bar {
439
- background: var(--_nys-fileinput-progress-background);
452
+ background-color: var(--_nys-fileinput-progress-background);
440
453
  }
441
454
  `, W = C`
442
455
  :host {
443
456
  /* Global fileitem Styles */
444
- --_nys-fileitem-items-radius: var(--nys-radius-md, 4px);
445
- --_nys-fileitem-items-padding: var(--nys-space-100, 8px)
457
+ --_nys-fileitem-border-radius: var(--nys-radius-md, 4px);
458
+ --_nys-fileitem-padding: var(--nys-space-100, 8px)
446
459
  var(--nys-space-200, 16px);
447
- --_nys-fileitem-items-background: var(--nys-color-ink-reverse, #fff);
448
- --_nys-fileitem-items-border: var(--nys-border-width-sm, 1px) solid
449
- var(--nys-color-neutral-100, #d0d0ce);
450
- --_nys-fileitem-error-color: var(--nys-color-danger, #b52c2c);
460
+ --_nys-fileitem-background-color: var(--nys-color-ink-reverse, #fff);
461
+ --_nys-fileitem-border-color: var(--nys-color-neutral-100, #d0d0ce);
451
462
 
452
463
  /* Typography */
453
464
  --_nys-fileitem-font-family: var(
@@ -462,26 +473,36 @@ const H = C`
462
473
  )
463
474
  );
464
475
  --_nys-fileitem-font-size: var(--nys-font-size-ui-md, 16px);
465
- --_nys-fileitem-font-weight-400: var(--nys-font-weight-regular, 400);
476
+ --_nys-fileitem-font-weight: var(--nys-font-weight-regular, 400);
466
477
  --_nys-fileitem-line-height: var(--nys-font-lineheight-ui-md, 24px);
467
- --_nys-fileitem-letterspacing: var(--nys-font-letterspacing-ui-md, 0.044px);
478
+ --_nys-fileitem-letter-spacing: var(
479
+ --nys-font-letterspacing-ui-md,
480
+ 0.044px
481
+ );
468
482
 
469
483
  /* Progress Bar */
470
- --_nys-fileitem-progress-background: var(--nys-color-neutral-50, #ededed);
471
- --_nys-fileitem-progress-fill-background: var(--nys-color-info, #004dd1);
484
+ --_nys-fileitem-background-color--progress: var(
485
+ --nys-color-neutral-50,
486
+ #ededed
487
+ );
488
+ --_nys-fileitem-background-color--progress--fill: var(
489
+ --nys-color-info,
490
+ #004dd1
491
+ );
472
492
  }
473
493
 
474
494
  /***** File List Item *****/
475
495
  .file-item {
476
496
  position: relative;
477
- border-radius: var(--_nys-fileitem-items-radius);
478
- border: var(--_nys-fileitem-items-border);
479
- background: var(--_nys-fileitem-items-background);
497
+ border-radius: var(--_nys-fileitem-border-radius);
498
+ border-width: var(--nys-border-width-sm, 1px);
499
+ border-style: solid;
500
+ border-color: var(--_nys-fileitem-border-color);
501
+ background-color: var(--_nys-fileitem-background-color);
480
502
  }
481
503
 
482
504
  .file-item.error {
483
- --_nys-fileitem-items-border: var(--nys-border-width-sm, 1px) solid
484
- var(--nys-color-danger, #b52c2c);
505
+ --_nys-fileitem-border-color: var(--nys-color-danger, #b52c2c);
485
506
  }
486
507
 
487
508
  .file-item__main {
@@ -489,7 +510,7 @@ const H = C`
489
510
  justify-items: center;
490
511
  align-items: center;
491
512
  gap: var(--_nys-fileinput-gap);
492
- padding: var(--_nys-fileitem-items-padding);
513
+ padding: var(--_nys-fileitem-padding);
493
514
  height: 56px;
494
515
  box-sizing: border-box;
495
516
  }
@@ -502,9 +523,9 @@ const H = C`
502
523
  font-family: var(--_nys-fileitem-font-family);
503
524
  font-size: var(--_nys-fileitem-font-size);
504
525
  font-style: normal;
505
- font-weight: var(--_nys-fileitem-font-weight-400);
526
+ font-weight: var(--_nys-fileitem-font-weight);
506
527
  line-height: var(--_nys-fileitem-line-height);
507
- letter-spacing: var(--_nys-fileitem-letterspacing);
528
+ letter-spacing: var(--_nys-fileitem-letter-spacing);
508
529
  }
509
530
 
510
531
  .file-item__info-name {
@@ -528,7 +549,7 @@ const H = C`
528
549
  }
529
550
 
530
551
  .file-item__error {
531
- color: var(--_nys-fileitem-error-color);
552
+ color: var(--nys-color-danger, #b52c2c);
532
553
  text-overflow: ellipsis;
533
554
  font-weight: 700;
534
555
  }
@@ -541,21 +562,21 @@ const H = C`
541
562
  width: 100%;
542
563
  height: 6px;
543
564
  border-radius: var(--nys-radius-round, 1776px);
544
- background: var(--_nys-fileitem-progress-fill-background);
565
+ background: var(--_nys-fileitem-background-color--progress--fill);
545
566
  overflow: hidden;
546
567
  appearance: none;
547
568
  }
548
569
  /* Track */
549
570
  progress::-moz-progress-bar {
550
- background: var(--_nys-fileitem-progress-background);
571
+ background-color: var(--_nys-fileitem-background-color--progress);
551
572
  }
552
573
  /* Filled value (the blue bar) */
553
574
  progress::-webkit-progress-value {
554
- background: var(--_nys-fileitem-progress-fill-background);
575
+ background-color: var(--_nys-fileitem-background-color--progress--fill);
555
576
  }
556
577
  /* Firefox */
557
578
  progress::-webkit-progress-bar {
558
- background: var(--_nys-fileitem-progress-background);
579
+ background-color: var(--_nys-fileitem-background-color--progress);
559
580
  }
560
581
 
561
582
  /**** Icon ****/
@@ -564,7 +585,7 @@ const H = C`
564
585
  }
565
586
 
566
587
  .file-icon[name="error"] {
567
- color: var(--_nys-fileitem-error-color);
588
+ color: var(--nys-color-danger, #b52c2c);
568
589
  }
569
590
 
570
591
  @keyframes spin {
@@ -576,9 +597,9 @@ const H = C`
576
597
  }
577
598
  }
578
599
  `;
579
- var Y = Object.defineProperty, v = (n, e, t, i) => {
580
- for (var s = void 0, r = n.length - 1, o; r >= 0; r--)
581
- (o = n[r]) && (s = o(e, t, s) || s);
600
+ var Y = Object.defineProperty, v = (o, e, t, i) => {
601
+ for (var s = void 0, r = o.length - 1, n; r >= 0; r--)
602
+ (n = o[r]) && (s = n(e, t, s) || s);
582
603
  return s && Y(e, t, s), s;
583
604
  };
584
605
  const S = class S extends D {
@@ -595,8 +616,8 @@ const S = class S extends D {
595
616
  );
596
617
  }
597
618
  splitFilename(e) {
598
- const t = e.lastIndexOf("."), i = t !== -1 ? e.slice(t) : "", s = t !== -1 ? e.slice(0, t) : e, r = s.slice(0, s.length - 3), o = s.slice(-3);
599
- return { startPart: r, endPart: o, extension: i };
619
+ const t = e.lastIndexOf("."), i = t !== -1 ? e.slice(t) : "", s = t !== -1 ? e.slice(0, t) : e, r = s.slice(0, s.length - 3), n = s.slice(-3);
620
+ return { startPart: r, endPart: n, extension: i };
600
621
  }
601
622
  render() {
602
623
  const { startPart: e, endPart: t, extension: i } = this.splitFilename(this.filename);
@@ -669,9 +690,9 @@ v([
669
690
  a({ type: String })
670
691
  ], u.prototype, "errorMessage");
671
692
  customElements.define("nys-fileitem", u);
672
- var G = Object.defineProperty, d = (n, e, t, i) => {
673
- for (var s = void 0, r = n.length - 1, o; r >= 0; r--)
674
- (o = n[r]) && (s = o(e, t, s) || s);
693
+ var G = Object.defineProperty, d = (o, e, t, i) => {
694
+ for (var s = void 0, r = o.length - 1, n; r >= 0; r--)
695
+ (n = o[r]) && (s = n(e, t, s) || s);
675
696
  return s && G(e, t, s), s;
676
697
  };
677
698
  let J = 0;
@@ -744,7 +765,7 @@ const _ = class _ extends D {
744
765
  const e = (s = this.shadowRoot) == null ? void 0 : s.querySelector("input");
745
766
  if (!e) return;
746
767
  const t = this.errorMessage || "Please upload a file.";
747
- this.required && this._selectedFiles.length == 0 ? (this._internals.ariaRequired = "true", this._internals.setValidity({ valueMissing: !0 }, t, e)) : (this._internals.ariaRequired = "false", this._internals.setValidity({}));
768
+ this.required && this._selectedFiles.length == 0 ? (this._internals.ariaRequired = "true", this._internals.setValidity({ valueMissing: !0 }, t, e)) : (this._internals.ariaRequired = "false", this._internals.setValidity({}, "", e));
748
769
  }
749
770
  _setValidityMessage(e = "") {
750
771
  var i, s;
@@ -774,8 +795,8 @@ const _ = class _ extends D {
774
795
  if (t) {
775
796
  const i = this._internals.form;
776
797
  i ? Array.from(i.elements).find(
777
- (o) => typeof o.checkValidity == "function" && !o.checkValidity()
778
- ) === this && t.focus() : t.focus();
798
+ (n) => typeof n.checkValidity == "function" && !n.checkValidity()
799
+ ) === this && (t.focus(), t.classList.add("active-focus")) : (t.focus(), t.classList.add("active-focus"));
779
800
  }
780
801
  }
781
802
  /******************** Functions ********************/
@@ -817,7 +838,7 @@ const _ = class _ extends D {
817
838
  _dispatchChangeEvent() {
818
839
  this.dispatchEvent(
819
840
  new CustomEvent("nys-change", {
820
- detail: { files: this._selectedFiles },
841
+ detail: { id: this.id, files: this._selectedFiles },
821
842
  bubbles: !0,
822
843
  composed: !0
823
844
  })
@@ -851,16 +872,23 @@ const _ = class _ extends D {
851
872
  /******************** Event Handlers ********************/
852
873
  // Access the selected files & add new files to the internal list via the hidden <input type="file">
853
874
  _handleFileChange(e) {
854
- const t = e.target, i = t.files;
875
+ const i = e.target.files;
855
876
  (i ? Array.from(i) : []).map((r) => {
856
877
  this._saveSelectedFiles(r);
857
- }), t.value = "", this.requestUpdate(), this._dispatchChangeEvent(), this._handlePostFileSelectionFocus();
878
+ }), this.requestUpdate(), this._dispatchChangeEvent(), this._handlePostFileSelectionFocus();
858
879
  }
859
880
  _handleFileRemove(e) {
881
+ var i;
860
882
  const t = e.detail.filename;
861
- this._selectedFiles = this._selectedFiles.filter(
862
- (i) => i.file.name !== t
863
- ), this._setValue(), this._validate(), this.requestUpdate(), this._dispatchChangeEvent();
883
+ if (this._selectedFiles = this._selectedFiles.filter(
884
+ (s) => s.file.name !== t
885
+ ), this._selectedFiles.length === 0) {
886
+ const s = (i = this.shadowRoot) == null ? void 0 : i.querySelector(
887
+ "input"
888
+ );
889
+ s && (s.value = "");
890
+ }
891
+ this._setValue(), this._validate(), this.requestUpdate(), this._dispatchChangeEvent();
864
892
  }
865
893
  _onDragOver(e) {
866
894
  this.disabled || (e.stopPropagation(), e.preventDefault(), this._dragActive || (this._dragActive = !0, this.requestUpdate()));
@@ -886,7 +914,7 @@ const _ = class _ extends D {
886
914
  @nys-fileRemove=${this._handleFileRemove}
887
915
  >
888
916
  <nys-label
889
- id=${this.id}
917
+ for=${this.id}
890
918
  label=${this.label}
891
919
  description=${this.description}
892
920
  flag=${this.required ? "required" : this.optional ? "optional" : ""}
@@ -905,8 +933,8 @@ const _ = class _ extends D {
905
933
  ?disabled=${this.disabled || !this.multiple && this._selectedFiles.length > 0}
906
934
  aria-disabled="${this.disabled}"
907
935
  aria-hidden="true"
908
- hidden
909
936
  @change=${this._handleFileChange}
937
+ hidden
910
938
  />
911
939
 
912
940
  ${this.dropzone ? h`<div
@@ -1 +1 @@
1
- {"version":3,"file":"nys-fileinput.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../src/validateFileHeader.ts","../src/nys-fileinput.styles.ts","../src/nys-fileitem.styles.ts","../src/nys-fileitem.ts","../src/nys-fileinput.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// The main function for file validation based only on extension and `accept` attribute.\nexport async function validateFileHeader(\n file: File,\n accept: string,\n): Promise<boolean> {\n // 1) If no accept attribute is defined, assume anything is allowed\n if (!accept || accept.trim() === \"\") return true;\n\n // 2) Normalize and parse the accept attribute\n const acceptItems = accept\n .toLowerCase()\n .split(\",\")\n .map((a) => a.trim());\n\n // 3) Get the file extension\n const filename = file.name.toLowerCase();\n const fileExt = filename.includes(\".\") ? filename.split(\".\").pop()! : \"\";\n\n // 4) Check if extension matches any of the accept items\n for (const acceptItem of acceptItems) {\n // Direct extension match (e.g. \".pdf\")\n if (acceptItem.startsWith(\".\") && acceptItem.slice(1) === fileExt) {\n return true;\n }\n\n // Wildcard /* (e.g. \"image/*\") -> match common prefixes\n if (\n acceptItem.endsWith(\"/*\") &&\n file.type.startsWith(acceptItem.slice(0, -1))\n ) {\n return true;\n }\n\n // Exact MIME match\n if (file.type === acceptItem) {\n return true;\n }\n }\n\n // 5) Not matched\n return false;\n}\n","import { css } from \"lit\";\n\nexport default css`\n :host {\n /* Global Fileinput Styles */\n --_nys-fileinput-gap: var(--nys-space-100, 8px);\n\n /* Typography */\n --_nys-fileinput-font-size: var(--nys-font-size-ui-md, 16px);\n --_nys-fileinput-font-weight: var(--nys-font-weight-semibold, 600);\n --_nys-fileinput-line-height: var(--nys-font-lineheight-ui-md, 24px);\n --_nys-fileinput-font-family: var(\n --nys-font-family-ui,\n var(\n --nys-font-family-sans,\n \"Proxima Nova\",\n \"Helvetica Neue\",\n \"Helvetica\",\n \"Arial\",\n sans-serif\n )\n );\n\n /* Dropzone */\n --_nys-fileinput-dropzone-background: var(--nys-color-ink-reverse, #fff);\n --_nys-fileinput-dropzone-radius: var(\n --nys-radius-lg,\n var(--nys-space-100, 8px)\n );\n --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 1px) dashed\n var(--nys-color-neutral-200, #bec0c1);\n --_nys-fileinput-dropzone-color: var(--nys-color-text-disabled, #bec0c1);\n }\n\n .nys-fileinput {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: var(--_nys-fileinput-gap);\n font-family: var(--_nys-fileinput-font-family);\n font-size: var(--_nys-fileinput-font-size);\n font-weight: var(--_nys-fileinput-font-weight);\n line-height: var(--_nys-fileinput-line-height);\n }\n :host([width=\"lg\"]) .nys-fileinput {\n max-width: var(--nys-form-width-lg, 384px);\n }\n\n ul {\n list-style-type: none;\n padding: 0px;\n margin: 0px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--_nys-fileinput-gap);\n }\n\n /***** Dragzone *****/\n .nys-fileinput__dropzone {\n display: flex;\n padding: var(--nys-space-400, 32px) var(--nys-space-200, 16px);\n justify-content: center;\n align-items: center;\n gap: 12px;\n align-self: stretch;\n border-radius: var(--_nys-fileinput-dropzone-radius);\n outline: var(--_nys-fileinput-dropzone-border);\n background: var(--_nys-fileinput-dropzone-background);\n transition: all 60ms ease-in-out;\n }\n\n .nys-fileinput__dropzone:hover {\n cursor: pointer;\n --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 2px) dashed\n var(--nys-color-neutral-700, #4a4d4f);\n }\n\n .nys-fileinput__dropzone.drag-active {\n --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 2px) solid\n var(--nys-color-theme, #154973);\n --_nys-fileinput-dropzone-background: var(--nys-color-theme-faint, #f7fafd);\n }\n\n .nys-fileinput__dropzone.error {\n --_nys-fileinput-dropzone-border: var(--nys-border-width-md, 1px) dashed\n var(--nys-color-danger, #b52c2c);\n }\n\n .nys-fileinput__dropzone.error:hover {\n --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 2px) dashed\n var(--nys-color-emergency, #721c1c);\n }\n\n .nys-fileinput__dropzone.disabled {\n cursor: not-allowed;\n --_nys-fileinput-dropzone-border: var(--nys-border-width-sm, 1px) dashed\n var(--nys-color-neutral-300, #a7a9ab);\n --_nys-fileinput-dropzone-background: var(--nys-color-neutral-10, #f6f6f6);\n color: var(--_nys-fileinput-dropzone-color);\n }\n\n progress {\n display: flex;\n width: 100%;\n height: 6px;\n border-radius: var(--nys-radius-round, 1776px);\n background: var(--_nys-fileinput-progress-background);\n overflow: hidden;\n appearance: none;\n border: none;\n }\n progress::-moz-progress-bar {\n background: var(--_nys-fileinput-progress-background);\n }\n progress::-webkit-progress-value {\n background: var(--_nys-fileinput-progress-background);\n }\n progress::-webkit-progress-bar {\n background: var(--_nys-fileinput-progress-background);\n }\n`;\n","import { css } from \"lit\";\n\nexport default css`\n :host {\n /* Global fileitem Styles */\n --_nys-fileitem-items-radius: var(--nys-radius-md, 4px);\n --_nys-fileitem-items-padding: var(--nys-space-100, 8px)\n var(--nys-space-200, 16px);\n --_nys-fileitem-items-background: var(--nys-color-ink-reverse, #fff);\n --_nys-fileitem-items-border: var(--nys-border-width-sm, 1px) solid\n var(--nys-color-neutral-100, #d0d0ce);\n --_nys-fileitem-error-color: var(--nys-color-danger, #b52c2c);\n\n /* Typography */\n --_nys-fileitem-font-family: var(\n --nys-font-family-ui,\n var(\n --nys-font-family-sans,\n \"Proxima Nova\",\n \"Helvetica Neue\",\n \"Helvetica\",\n \"Arial\",\n sans-serif\n )\n );\n --_nys-fileitem-font-size: var(--nys-font-size-ui-md, 16px);\n --_nys-fileitem-font-weight-400: var(--nys-font-weight-regular, 400);\n --_nys-fileitem-line-height: var(--nys-font-lineheight-ui-md, 24px);\n --_nys-fileitem-letterspacing: var(--nys-font-letterspacing-ui-md, 0.044px);\n\n /* Progress Bar */\n --_nys-fileitem-progress-background: var(--nys-color-neutral-50, #ededed);\n --_nys-fileitem-progress-fill-background: var(--nys-color-info, #004dd1);\n }\n\n /***** File List Item *****/\n .file-item {\n position: relative;\n border-radius: var(--_nys-fileitem-items-radius);\n border: var(--_nys-fileitem-items-border);\n background: var(--_nys-fileitem-items-background);\n }\n\n .file-item.error {\n --_nys-fileitem-items-border: var(--nys-border-width-sm, 1px) solid\n var(--nys-color-danger, #b52c2c);\n }\n\n .file-item__main {\n display: flex;\n justify-items: center;\n align-items: center;\n gap: var(--_nys-fileinput-gap);\n padding: var(--_nys-fileitem-items-padding);\n height: 56px;\n box-sizing: border-box;\n }\n\n .file-item__info {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n font-family: var(--_nys-fileitem-font-family);\n font-size: var(--_nys-fileitem-font-size);\n font-style: normal;\n font-weight: var(--_nys-fileitem-font-weight-400);\n line-height: var(--_nys-fileitem-line-height);\n letter-spacing: var(--_nys-fileitem-letterspacing);\n }\n\n .file-item__info-name {\n display: flex;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n }\n\n .file-item__info-name-start {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 1;\n min-width: 0;\n }\n\n .file-item p {\n margin: 0;\n }\n\n .file-item__error {\n color: var(--_nys-fileitem-error-color);\n text-overflow: ellipsis;\n font-weight: 700;\n }\n\n /**** Progress Bar ****/\n progress {\n position: absolute;\n bottom: 0;\n display: flex;\n width: 100%;\n height: 6px;\n border-radius: var(--nys-radius-round, 1776px);\n background: var(--_nys-fileitem-progress-fill-background);\n overflow: hidden;\n appearance: none;\n }\n /* Track */\n progress::-moz-progress-bar {\n background: var(--_nys-fileitem-progress-background);\n }\n /* Filled value (the blue bar) */\n progress::-webkit-progress-value {\n background: var(--_nys-fileitem-progress-fill-background);\n }\n /* Firefox */\n progress::-webkit-progress-bar {\n background: var(--_nys-fileitem-progress-background);\n }\n\n /**** Icon ****/\n .file-icon[name=\"progress_activity\"] {\n animation: spin 1s linear infinite;\n }\n\n .file-icon[name=\"error\"] {\n color: var(--_nys-fileitem-error-color);\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n","import { LitElement, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport styles from \"./nys-fileitem.styles\";\n\nexport class NysFileItem extends LitElement {\n @property({ type: String }) filename = \"\";\n @property({ type: String }) status:\n | \"pending\"\n | \"processing\"\n | \"done\"\n | \"error\" = \"pending\";\n @property({ type: Number }) progress = 0;\n @property({ type: String }) errorMessage = \"\";\n\n static styles = styles;\n\n private _handleRemove() {\n this.dispatchEvent(\n new CustomEvent(\"nys-fileRemove\", {\n detail: { filename: this.filename },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private splitFilename(filename: string) {\n const lastDotIndex = filename.lastIndexOf(\".\");\n const extension = lastDotIndex !== -1 ? filename.slice(lastDotIndex) : \"\"; // e.g. \".pdf\"\n const name =\n lastDotIndex !== -1 ? filename.slice(0, lastDotIndex) : filename;\n\n const startPart = name.slice(0, name.length - 3);\n const endPart = name.slice(-3);\n\n return { startPart, endPart, extension };\n }\n\n render() {\n const { startPart, endPart, extension } = this.splitFilename(this.filename);\n\n return html`\n <div\n class=\"file-item ${this.status}\"\n aria-busy=${this.status === \"processing\" ? \"true\" : \"false\"}\n aria-label=\"You have selected ${this.filename}\"\n >\n <div class=\"file-item__main\" role=\"group\">\n <nys-icon\n class=\"file-icon\"\n name=${this.status === \"processing\"\n ? \"progress_activity\"\n : this.status === \"error\"\n ? \"error\"\n : \"attach_file\"}\n size=\"2xl\"\n ></nys-icon>\n <div class=\"file-item__info\">\n <div class=\"file-item__info-name\">\n <span class=\"file-item__info-name-start\">${startPart}</span>\n <span class=\"file-item__info-name-end\"\n >${endPart}${extension}</span\n >\n </div>\n ${this.errorMessage\n ? html`<p\n class=\"file-item__error\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-invalid=\"true\"\n aria-errormessage=${this.errorMessage}\n id=\"${this.filename}-error\"\n >\n ${this.errorMessage}\n </p>`\n : null}\n </div>\n <nys-button\n circle\n icon=\"close\"\n ariaLabel=\"close button\"\n size=\"sm\"\n variant=\"ghost\"\n .onClick=${() => this._handleRemove()}\n ariaLabel=\"Remove file: ${this.filename}\"\n ></nys-button>\n </div>\n ${this.status === \"processing\"\n ? html`<div\n class=\"file-item__progress-container\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow=\"${this.progress}\"\n aria-label=\"Upload progress for ${this.filename}\"\n >\n <progress value=${this.progress} max=\"100\"></progress>\n </div>`\n : null}\n </div>\n `;\n }\n}\n\ncustomElements.define(\"nys-fileitem\", NysFileItem);\n","import { LitElement, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { validateFileHeader } from \"./validateFileHeader\";\nimport styles from \"./nys-fileinput.styles\";\nimport \"./nys-fileitem\";\n\nlet fileinputIdCounter = 0; // Counter for generating unique IDs\n\ninterface FileWithProgress {\n file: File;\n progress: number;\n status: \"pending\" | \"processing\" | \"done\" | \"error\";\n errorMsg?: string;\n}\n\nexport class NysFileinput extends LitElement {\n @property({ type: String }) id = \"\";\n @property({ type: String, reflect: true }) name = \"\";\n @property({ type: String }) label = \"\";\n @property({ type: String }) description = \"\";\n @property({ type: Boolean }) multiple = false;\n @property({ type: String }) accept = \"\"; // e.g. \"image/*,.pdf\"\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) optional = false;\n @property({ type: Boolean, reflect: true }) showError = false;\n @property({ type: String }) errorMessage = \"\";\n @property({ type: Boolean }) dropzone = false;\n @property({ type: String, reflect: true }) width: \"lg\" | \"full\" = \"full\";\n\n static styles = styles;\n\n private _selectedFiles: FileWithProgress[] = [];\n private _dragActive = false;\n private get _isDropDisabled(): boolean {\n return this.disabled || (!this.multiple && this._selectedFiles.length > 0);\n }\n\n private get _buttonAriaLabel(): string {\n if (this._selectedFiles.length === 0) {\n return this.multiple ? \"Choose files: \" : \"Choose file: \";\n }\n\n return this.multiple ? \"Change files: \" : \"Change file: \";\n }\n\n private get _buttonAriaDescription(): string {\n if (this._selectedFiles.length === 0)\n return `${this.label + \" \" + this.description}`;\n\n const hasInvalidFiles = this._selectedFiles.some(\n (file) => file.status === \"error\",\n );\n\n let base = \"\";\n\n if (this._selectedFiles.length === 1) {\n base = `You have selected ${this._selectedFiles[0].file.name}.`;\n } else {\n const fileNames = this._selectedFiles.map((f) => f.file.name).join(\", \");\n base = `You have selected ${this._selectedFiles.length} files: ${fileNames}`;\n }\n\n const error = hasInvalidFiles\n ? \" Error: One or more files are not valid file types.\"\n : \"\";\n\n return `${base}${error}`;\n }\n\n private get _innerNysButton(): HTMLElement | null {\n const nysButton = this.renderRoot.querySelector(\n '[name=\"file-btn\"]',\n ) as HTMLButtonElement | null;\n const innerButton = nysButton?.shadowRoot?.querySelector(\n \"button\",\n ) as HTMLElement | null;\n return innerButton;\n }\n\n private _internals: ElementInternals;\n\n /********************** Lifecycle updates **********************/\n static formAssociated = true; // allows use of elementInternals' API\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n // Generate a unique ID if one is not provided\n connectedCallback() {\n super.connectedCallback();\n if (!this.id) {\n this.id = `nys-fileinput-${Date.now()}-${fileinputIdCounter++}`;\n }\n\n this.addEventListener(\"invalid\", this._handleInvalid);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener(\"invalid\", this._handleInvalid);\n }\n\n firstUpdated() {\n // This ensures our element always participates in the form\n this._setValue();\n }\n\n /********************** Form Integration **********************/\n private _setValue() {\n // for multiple file uploads, we upload File object as an array\n if (this.multiple) {\n const files = this._selectedFiles.map((entry) => entry.file);\n\n if (files.length > 0) {\n const formData = new FormData();\n files.forEach((file) => {\n formData.append(this.name, file);\n });\n this._internals.setFormValue(formData);\n } else {\n this._internals.setFormValue(null);\n }\n } else {\n const singleFile = this._selectedFiles[0]?.file || null;\n this._internals.setFormValue(singleFile);\n }\n\n this._manageRequire(); // Check validation when value is set\n }\n\n // Called to internally set the initial internalElement required flag.\n private _manageRequire() {\n const input = this.shadowRoot?.querySelector(\"input\");\n if (!input) return;\n\n const message = this.errorMessage || \"Please upload a file.\";\n const isInvalid = this.required && this._selectedFiles.length == 0;\n\n if (isInvalid) {\n this._internals.ariaRequired = \"true\"; // Screen readers should announce error\n this._internals.setValidity({ valueMissing: true }, message, input);\n } else {\n this._internals.ariaRequired = \"false\"; // Reset when valid\n this._internals.setValidity({});\n }\n }\n\n private _setValidityMessage(message: string = \"\") {\n const input = this.shadowRoot?.querySelector(\"input\");\n if (!input) return;\n\n // Toggle the HTML <div> tag error message\n this.showError = message === (this.errorMessage || \"Please upload a file.\");\n\n // If user sets errorMessage, this will always override the native validation message\n if (this.errorMessage?.trim() && message !== \"\") {\n message = this.errorMessage;\n }\n\n this._internals.setValidity(\n message ? { customError: true } : {},\n message,\n input,\n );\n }\n\n private _validate() {\n const hasErrorFiles = this._selectedFiles.some(\n (entry) => entry.status === \"error\",\n );\n const isEmpty = this.required && this._selectedFiles.length === 0;\n\n let message = \"\";\n if (isEmpty) {\n message = this.errorMessage || \"Please upload a file.\";\n } else if (hasErrorFiles) {\n message = \"One or more files are invalid.\";\n }\n\n this._setValidityMessage(message);\n }\n\n // This helper function is called to perform the element's native validation.\n checkValidity(): boolean {\n const input = this.shadowRoot?.querySelector(\"input\");\n return input ? input.checkValidity() : true;\n }\n\n private _handleInvalid(event: Event) {\n event.preventDefault();\n this._validate();\n\n const innerButton = this._innerNysButton;\n if (innerButton) {\n // Focus only if this is the first invalid element (top-down approach)\n const form = this._internals.form;\n if (form) {\n const elements = Array.from(form.elements) as Array<\n HTMLElement & { checkValidity?: () => boolean }\n >;\n // Find the first element in the form that is invalid\n const firstInvalidElement = elements.find(\n (element) =>\n typeof element.checkValidity === \"function\" &&\n !element.checkValidity(),\n );\n if (firstInvalidElement === this) {\n innerButton.focus();\n }\n } else {\n // If not part of a form, simply focus.\n innerButton.focus();\n }\n }\n }\n\n /******************** Functions ********************/\n\n // Store the files to be displayed\n private async _saveSelectedFiles(file: File) {\n const isDuplicate = this._selectedFiles.some(\n (existingFile) => existingFile.file.name == file.name,\n );\n if (isDuplicate) return;\n\n if (!this.multiple && this._selectedFiles.length >= 1) return;\n\n const entry: FileWithProgress = {\n file,\n progress: 0,\n status: \"pending\",\n };\n\n this._selectedFiles.push(entry);\n await this._processFile(entry);\n\n // Now that the file is added, update form value and validation\n this._setValue();\n this._validate();\n }\n\n // Read the contents of stored files, this will indicate loading progress of the uploaded files\n private async _processFile(entry: FileWithProgress) {\n entry.status = \"processing\";\n\n try {\n const isValid = await validateFileHeader(entry.file, this.accept);\n if (!isValid) {\n entry.status = \"error\";\n entry.errorMsg = \"File type is invalid.\";\n this.requestUpdate();\n return;\n }\n\n const reader = new FileReader();\n\n reader.onprogress = (e) => {\n if (e.lengthComputable) {\n const percentage = Math.round((e.loaded * 100) / e.total);\n entry.progress = percentage;\n this.requestUpdate();\n }\n };\n\n reader.onload = () => {\n entry.progress = 100;\n entry.status = \"done\";\n this.requestUpdate();\n };\n\n reader.onerror = () => {\n entry.status = \"error\";\n entry.errorMsg = \"Failed to load file.\";\n this.requestUpdate();\n };\n\n reader.readAsArrayBuffer(entry.file);\n } catch {\n entry.status = \"error\";\n entry.errorMsg = \"Error validating file.\";\n this.requestUpdate();\n }\n }\n\n private _dispatchChangeEvent() {\n this.dispatchEvent(\n new CustomEvent(\"nys-change\", {\n detail: { files: this._selectedFiles },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _openFileDialog() {\n const input = this.renderRoot.querySelector(\n \".hidden-file-input\",\n ) as HTMLInputElement;\n\n input?.click();\n }\n\n private _handlePostFileSelectionFocus() {\n if (this.multiple) {\n const innerButton = this._innerNysButton;\n\n if (innerButton) {\n innerButton.focus();\n }\n } else {\n this._focusFirstFileItemIfSingleMode();\n }\n }\n\n private async _focusFirstFileItemIfSingleMode() {\n if (!this.multiple) {\n await this.updateComplete;\n const fileItem = this.renderRoot.querySelector(\n \"nys-fileitem\",\n ) as HTMLElement;\n\n const innerFileItemMainContainer = fileItem?.shadowRoot?.querySelector(\n \".file-item\",\n ) as HTMLElement | null;\n\n if (innerFileItemMainContainer) {\n innerFileItemMainContainer.setAttribute(\"tabindex\", \"-1\");\n innerFileItemMainContainer.focus();\n }\n }\n }\n\n /******************** Event Handlers ********************/\n // Access the selected files & add new files to the internal list via the hidden <input type=\"file\">\n private _handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement;\n const files = input.files;\n const newFiles = files ? Array.from(files) : []; // changes FileList to array\n\n // Store the uploaded files\n newFiles.map((file) => {\n this._saveSelectedFiles(file);\n });\n\n input.value = \"\";\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n this._handlePostFileSelectionFocus();\n }\n\n private _handleFileRemove(e: CustomEvent) {\n const filenameToRemove = e.detail.filename;\n\n // Remove selected files\n this._selectedFiles = this._selectedFiles.filter(\n (existingFile) => existingFile.file.name !== filenameToRemove,\n );\n this._setValue();\n this._validate();\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n }\n\n private _onDragOver(e: DragEvent) {\n if (this.disabled) return;\n\n e.stopPropagation();\n e.preventDefault();\n if (!this._dragActive) {\n this._dragActive = true; // For styling purpose\n this.requestUpdate();\n }\n }\n\n // Mostly used for styling purpose\n private _onDragLeave(e: DragEvent) {\n if (this.disabled) return;\n\n e.stopPropagation();\n e.preventDefault();\n // Only reset if leaving the dropzone itself (not children)\n if (e.currentTarget === e.target) {\n this._dragActive = false; // For styling purpose\n this.requestUpdate();\n }\n }\n\n private _onDrop(e: DragEvent) {\n if (this.disabled) return;\n\n e.preventDefault();\n this._dragActive = false; // For styling purpose\n this.requestUpdate();\n\n const files = e.dataTransfer?.files;\n if (!files) return;\n\n const newFiles = Array.from(files);\n\n if (this.multiple) {\n newFiles.forEach((file) => {\n this._saveSelectedFiles(file);\n });\n } else {\n this._saveSelectedFiles(newFiles[0]);\n }\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n }\n\n render() {\n return html`<div\n class=\"nys-fileinput\"\n @nys-fileRemove=${this._handleFileRemove}\n >\n <nys-label\n id=${this.id}\n label=${this.label}\n description=${this.description}\n flag=${this.required ? \"required\" : this.optional ? \"optional\" : \"\"}\n >\n <slot name=\"description\" slot=\"description\">${this.description}</slot>\n </nys-label>\n\n <input\n class=\"hidden-file-input\"\n tabindex=\"-1\"\n type=\"file\"\n name=${this.name}\n ?multiple=${this.multiple}\n accept=${this.accept}\n ?required=${this.required}\n ?disabled=${this.disabled ||\n (!this.multiple && this._selectedFiles.length > 0)}\n aria-disabled=\"${this.disabled}\"\n aria-hidden=\"true\"\n hidden\n @change=${this._handleFileChange}\n />\n\n ${!this.dropzone\n ? html`<nys-button\n id=${this.id}\n name=\"file-btn\"\n label=${this.multiple ? \"Choose files\" : \"Choose file\"}\n variant=\"outline\"\n ariaLabel=${this._buttonAriaLabel}\n ariaDescription=${this._buttonAriaDescription}\n ?disabled=${this.disabled ||\n (!this.multiple && this._selectedFiles.length > 0)}\n .onClick=${() => this._openFileDialog()}\n ></nys-button>`\n : html`<div\n class=\"nys-fileinput__dropzone\n ${this._dragActive ? \"drag-active\" : \"\"}\n ${this._isDropDisabled ? \"disabled\" : \"\"}\n ${this.showError && !this._isDropDisabled ? \"error\" : \"\"}\"\n @click=${this._isDropDisabled ? null : this._openFileDialog}\n @keydown=${(e: KeyboardEvent) =>\n !this._isDropDisabled &&\n (e.key === \"Enter\" || e.key === \" \") &&\n this._openFileDialog()}\n @dragover=${this._isDropDisabled ? null : this._onDragOver}\n @dragleave=${this._isDropDisabled ? null : this._onDragLeave}\n @drop=${this._isDropDisabled ? null : this._onDrop}\n aria-label=\"Drag files here or choose from folder\"\n >\n ${this._dragActive\n ? html`<p>Drop file to upload</p>`\n : html` <nys-button\n id=${this.id}\n name=\"file-btn\"\n label=${this.multiple ? \"Choose files\" : \"Choose file\"}\n variant=\"outline\"\n ariaLabel=${this._buttonAriaLabel}\n ariaDescription=${this._buttonAriaDescription}\n ?disabled=${this._isDropDisabled}\n .onClick=${(e: Event) => {\n e.stopPropagation();\n this._openFileDialog();\n }}\n ></nys-button>\n <p>or drag here</p>`}\n </div>`}\n ${this.showError\n ? html`\n <nys-errormessage\n ?showError=${this.showError}\n errorMessage=${this._internals.validationMessage ||\n this.errorMessage}\n ></nys-errormessage>\n `\n : null}\n ${this._selectedFiles.length > 0\n ? html`\n <ul>\n ${this._selectedFiles.map(\n (entry) =>\n html`<li>\n <nys-fileitem\n filename=${entry.file.name}\n status=${entry.status}\n progress=${entry.progress}\n errorMessage=${entry.errorMsg || \"\"}\n ></nys-fileitem>\n </li>`,\n )}\n </ul>\n `\n : null}\n </div>`;\n }\n}\n\nif (!customElements.get(\"nys-fileinput\")) {\n customElements.define(\"nys-fileinput\", NysFileinput);\n}\n"],"names":["t","e","s","o","n$2","r","n","S","c","i","h","a","l","p","d","u","f","y","b","_a","validateFileHeader","file","accept","acceptItems","filename","fileExt","acceptItem","styles$1","css","styles","_NysFileItem","LitElement","lastDotIndex","extension","name","startPart","endPart","html","NysFileItem","__decorateClass","property","fileinputIdCounter","_NysFileinput","hasInvalidFiles","base","fileNames","nysButton","files","entry","formData","singleFile","input","message","_b","hasErrorFiles","isEmpty","event","innerButton","form","element","existingFile","reader","percentage","fileItem","innerFileItemMainContainer","filenameToRemove","newFiles","NysFileinput"],"mappings":"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","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"nys-fileinput.js","sources":["../../../node_modules/@lit/reactive-element/css-tag.js","../../../node_modules/@lit/reactive-element/reactive-element.js","../../../node_modules/@lit/reactive-element/decorators/property.js","../src/validateFileHeader.ts","../src/nys-fileinput.styles.ts","../src/nys-fileitem.styles.ts","../src/nys-fileitem.ts","../src/nys-fileinput.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2019 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */\nconst t=globalThis,e=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShadow)&&\"adoptedStyleSheets\"in Document.prototype&&\"replace\"in CSSStyleSheet.prototype,s=Symbol(),o=new WeakMap;class n{constructor(t,e,o){if(this._$cssResult$=!0,o!==s)throw Error(\"CSSResult is not constructable. Use `unsafeCSS` or `css` instead.\");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const s=this.t;if(e&&void 0===t){const e=void 0!==s&&1===s.length;e&&(t=o.get(s)),void 0===t&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),e&&o.set(s,t))}return t}toString(){return this.cssText}}const r=t=>new n(\"string\"==typeof t?t:t+\"\",void 0,s),i=(t,...e)=>{const o=1===t.length?t[0]:e.reduce(((e,s,o)=>e+(t=>{if(!0===t._$cssResult$)return t.cssText;if(\"number\"==typeof t)return t;throw Error(\"Value passed to 'css' function must be a 'css' function result: \"+t+\". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.\")})(s)+t[o+1]),t[0]);return new n(o,t,s)},S=(s,o)=>{if(e)s.adoptedStyleSheets=o.map((t=>t instanceof CSSStyleSheet?t:t.styleSheet));else for(const e of o){const o=document.createElement(\"style\"),n=t.litNonce;void 0!==n&&o.setAttribute(\"nonce\",n),o.textContent=e.cssText,s.appendChild(o)}},c=e?t=>t:t=>t instanceof CSSStyleSheet?(t=>{let e=\"\";for(const s of t.cssRules)e+=s.cssText;return r(e)})(t):t;export{n as CSSResult,S as adoptStyles,i as css,c as getCompatibleStyle,e as supportsAdoptingStyleSheets,r as unsafeCSS};\n//# sourceMappingURL=css-tag.js.map\n","import{getCompatibleStyle as t,adoptStyles as s}from\"./css-tag.js\";export{CSSResult,adoptStyles,css,getCompatibleStyle,supportsAdoptingStyleSheets,unsafeCSS}from\"./css-tag.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const{is:i,defineProperty:e,getOwnPropertyDescriptor:r,getOwnPropertyNames:h,getOwnPropertySymbols:o,getPrototypeOf:n}=Object,a=globalThis,c=a.trustedTypes,l=c?c.emptyScript:\"\",p=a.reactiveElementPolyfillSupport,d=(t,s)=>t,u={toAttribute(t,s){switch(s){case Boolean:t=t?l:null;break;case Object:case Array:t=null==t?t:JSON.stringify(t)}return t},fromAttribute(t,s){let i=t;switch(s){case Boolean:i=null!==t;break;case Number:i=null===t?null:Number(t);break;case Object:case Array:try{i=JSON.parse(t)}catch(t){i=null}}return i}},f=(t,s)=>!i(t,s),y={attribute:!0,type:String,converter:u,reflect:!1,hasChanged:f};Symbol.metadata??=Symbol(\"metadata\"),a.litPropertyMetadata??=new WeakMap;class b extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??=[]).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,s=y){if(s.state&&(s.attribute=!1),this._$Ei(),this.elementProperties.set(t,s),!s.noAccessor){const i=Symbol(),r=this.getPropertyDescriptor(t,i,s);void 0!==r&&e(this.prototype,t,r)}}static getPropertyDescriptor(t,s,i){const{get:e,set:h}=r(this.prototype,t)??{get(){return this[s]},set(t){this[s]=t}};return{get(){return e?.call(this)},set(s){const r=e?.call(this);h.call(this,s),this.requestUpdate(t,r,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??y}static _$Ei(){if(this.hasOwnProperty(d(\"elementProperties\")))return;const t=n(this);t.finalize(),void 0!==t.l&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(d(\"finalized\")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(d(\"properties\"))){const t=this.properties,s=[...h(t),...o(t)];for(const i of s)this.createProperty(i,t[i])}const t=this[Symbol.metadata];if(null!==t){const s=litPropertyMetadata.get(t);if(void 0!==s)for(const[t,i]of s)this.elementProperties.set(t,i)}this._$Eh=new Map;for(const[t,s]of this.elementProperties){const i=this._$Eu(t,s);void 0!==i&&this._$Eh.set(i,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(s){const i=[];if(Array.isArray(s)){const e=new Set(s.flat(1/0).reverse());for(const s of e)i.unshift(t(s))}else void 0!==s&&i.push(t(s));return i}static _$Eu(t,s){const i=s.attribute;return!1===i?void 0:\"string\"==typeof i?i:\"string\"==typeof t?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise((t=>this.enableUpdating=t)),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach((t=>t(this)))}addController(t){(this._$EO??=new Set).add(t),void 0!==this.renderRoot&&this.isConnected&&t.hostConnected?.()}removeController(t){this._$EO?.delete(t)}_$E_(){const t=new Map,s=this.constructor.elementProperties;for(const i of s.keys())this.hasOwnProperty(i)&&(t.set(i,this[i]),delete this[i]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return s(t,this.constructor.elementStyles),t}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach((t=>t.hostConnected?.()))}enableUpdating(t){}disconnectedCallback(){this._$EO?.forEach((t=>t.hostDisconnected?.()))}attributeChangedCallback(t,s,i){this._$AK(t,i)}_$EC(t,s){const i=this.constructor.elementProperties.get(t),e=this.constructor._$Eu(t,i);if(void 0!==e&&!0===i.reflect){const r=(void 0!==i.converter?.toAttribute?i.converter:u).toAttribute(s,i.type);this._$Em=t,null==r?this.removeAttribute(e):this.setAttribute(e,r),this._$Em=null}}_$AK(t,s){const i=this.constructor,e=i._$Eh.get(t);if(void 0!==e&&this._$Em!==e){const t=i.getPropertyOptions(e),r=\"function\"==typeof t.converter?{fromAttribute:t.converter}:void 0!==t.converter?.fromAttribute?t.converter:u;this._$Em=e,this[e]=r.fromAttribute(s,t.type),this._$Em=null}}requestUpdate(t,s,i){if(void 0!==t){if(i??=this.constructor.getPropertyOptions(t),!(i.hasChanged??f)(this[t],s))return;this.P(t,s,i)}!1===this.isUpdatePending&&(this._$ES=this._$ET())}P(t,s,i){this._$AL.has(t)||this._$AL.set(t,s),!0===i.reflect&&this._$Em!==t&&(this._$Ej??=new Set).add(t)}async _$ET(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}const t=this.scheduleUpdate();return null!=t&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(const[t,s]of this._$Ep)this[t]=s;this._$Ep=void 0}const t=this.constructor.elementProperties;if(t.size>0)for(const[s,i]of t)!0!==i.wrapped||this._$AL.has(s)||void 0===this[s]||this.P(s,this[s],i)}let t=!1;const s=this._$AL;try{t=this.shouldUpdate(s),t?(this.willUpdate(s),this._$EO?.forEach((t=>t.hostUpdate?.())),this.update(s)):this._$EU()}catch(s){throw t=!1,this._$EU(),s}t&&this._$AE(s)}willUpdate(t){}_$AE(t){this._$EO?.forEach((t=>t.hostUpdated?.())),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EU(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Ej&&=this._$Ej.forEach((t=>this._$EC(t,this[t]))),this._$EU()}updated(t){}firstUpdated(t){}}b.elementStyles=[],b.shadowRootOptions={mode:\"open\"},b[d(\"elementProperties\")]=new Map,b[d(\"finalized\")]=new Map,p?.({ReactiveElement:b}),(a.reactiveElementVersions??=[]).push(\"2.0.4\");export{b as ReactiveElement,u as defaultConverter,f as notEqual};\n//# sourceMappingURL=reactive-element.js.map\n","import{defaultConverter as t,notEqual as e}from\"../reactive-element.js\";\n/**\n * @license\n * Copyright 2017 Google LLC\n * SPDX-License-Identifier: BSD-3-Clause\n */const o={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(t=o,e,r)=>{const{kind:n,metadata:i}=r;let s=globalThis.litPropertyMetadata.get(i);if(void 0===s&&globalThis.litPropertyMetadata.set(i,s=new Map),s.set(r.name,t),\"accessor\"===n){const{name:o}=r;return{set(r){const n=e.get.call(this);e.set.call(this,r),this.requestUpdate(o,n,t)},init(e){return void 0!==e&&this.P(o,void 0,t),e}}}if(\"setter\"===n){const{name:o}=r;return function(r){const n=this[o];e.call(this,r),this.requestUpdate(o,n,t)}}throw Error(\"Unsupported decorator location: \"+n)};function n(t){return(e,o)=>\"object\"==typeof o?r(t,e,o):((t,e,o)=>{const r=e.hasOwnProperty(o);return e.constructor.createProperty(o,r?{...t,wrapped:!0}:t),r?Object.getOwnPropertyDescriptor(e,o):void 0})(t,e,o)}export{n as property,r as standardProperty};\n//# sourceMappingURL=property.js.map\n","// The main function for file validation based only on extension and `accept` attribute.\nexport async function validateFileHeader(\n file: File,\n accept: string,\n): Promise<boolean> {\n // 1) If no accept attribute is defined, assume anything is allowed\n if (!accept || accept.trim() === \"\") return true;\n\n // 2) Normalize and parse the accept attribute\n const acceptItems = accept\n .toLowerCase()\n .split(\",\")\n .map((a) => a.trim());\n\n // 3) Get the file extension\n const filename = file.name.toLowerCase();\n const fileExt = filename.includes(\".\") ? filename.split(\".\").pop()! : \"\";\n\n // 4) Check if extension matches any of the accept items\n for (const acceptItem of acceptItems) {\n // Direct extension match (e.g. \".pdf\")\n if (acceptItem.startsWith(\".\") && acceptItem.slice(1) === fileExt) {\n return true;\n }\n\n // Wildcard /* (e.g. \"image/*\") -> match common prefixes\n if (\n acceptItem.endsWith(\"/*\") &&\n file.type.startsWith(acceptItem.slice(0, -1))\n ) {\n return true;\n }\n\n // Exact MIME match\n if (file.type === acceptItem) {\n return true;\n }\n }\n\n // 5) Not matched\n return false;\n}\n","import { css } from \"lit\";\n\nexport default css`\n :host {\n /* Global Fileinput Styles */\n --_nys-fileinput-gap: var(--nys-space-100, 8px);\n\n /* Typography */\n --_nys-fileinput-font-size: var(--nys-font-size-ui-md, 16px);\n --_nys-fileinput-font-weight: var(--nys-font-weight-semibold, 600);\n --_nys-fileinput-line-height: var(--nys-font-lineheight-ui-md, 24px);\n --_nys-fileinput-font-family: var(\n --nys-font-family-ui,\n var(\n --nys-font-family-sans,\n \"Proxima Nova\",\n \"Helvetica Neue\",\n \"Helvetica\",\n \"Arial\",\n sans-serif\n )\n );\n\n /* Dropzone */\n --_nys-fileinput-background-color--dropzone: var(\n --nys-color-ink-reverse,\n #fff\n );\n --_nys-fileinput-background-color--dropzone--disabled: var(\n --nys-color-neutral-10,\n #f6f6f6\n );\n --_nys-fileinput-background-color--dropzone--active: var(\n --nys-color-theme-faint,\n #f7fafd\n );\n --_nys-fileinput-border-radius--dropzone: var(\n --nys-radius-lg,\n var(--nys-space-100, 8px)\n );\n --_nys-fileinput-border-style: dashed;\n --_nys-fileinput-border-color: var(--nys-color-neutral-200, #bec0c1);\n --_nys-fileinput-border-width: var(--nys-border-width-sm, 1px);\n }\n\n .nys-fileinput {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n gap: var(--_nys-fileinput-gap);\n font-family: var(--_nys-fileinput-font-family);\n font-size: var(--_nys-fileinput-font-size);\n font-weight: var(--_nys-fileinput-font-weight);\n line-height: var(--_nys-fileinput-line-height);\n }\n :host([width=\"lg\"]) .nys-fileinput {\n max-width: var(--nys-form-width-lg, 384px);\n }\n\n ul {\n list-style-type: none;\n padding: 0px;\n margin: 0px;\n width: 100%;\n display: flex;\n flex-direction: column;\n gap: var(--_nys-fileinput-gap);\n }\n\n /***** Dropzone *****/\n .nys-fileinput__dropzone {\n display: flex;\n padding: var(--nys-space-400, 32px) var(--nys-space-200, 16px);\n justify-content: center;\n align-items: center;\n gap: 12px;\n align-self: stretch;\n border-radius: var(--_nys-fileinput-border-radius--dropzone);\n outline: var(--_nys-fileinput-border-width)\n var(--_nys-fileinput-border-style) var(--_nys-fileinput-border-color);\n background-color: var(--_nys-fileinput-background-color--dropzone);\n transition: all 60ms ease-in-out;\n }\n\n .nys-fileinput__dropzone:hover {\n cursor: pointer;\n --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);\n --_nys-fileinput-border-color: var(--nys-color-neutral-700, #4a4d4f);\n }\n\n .nys-fileinput__dropzone.drag-active {\n --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);\n --_nys-fileinput-border-color: var(--nys-color-theme, #154973);\n --_nys-fileinput-border-style: solid;\n }\n\n .nys-fileinput__dropzone.error {\n --_nys-fileinput-border-color: var(--nys-color-danger, #b52c2c);\n }\n\n .nys-fileinput__dropzone.error:hover {\n --_nys-fileinput-border-width: var(--nys-border-width-md, 2px);\n --_nys-fileinput-border-color: var(--nys-color-emergency, #721c1c);\n }\n\n .nys-fileinput__dropzone.disabled {\n cursor: not-allowed;\n --_nys-fileinput-border-color: var(--nys-color-neutral-300, #a7a9ab);\n --_nys-fileinput-border-width: var(--nys-border-width-sm, 1px);\n background-color: var(\n --_nys-fileinput-background-color--dropzone--disabled\n );\n color: var(--_nys-fileinput-color--dropzone--disabled);\n }\n\n progress {\n display: flex;\n width: 100%;\n height: 6px;\n border-radius: var(--nys-radius-round, 1776px);\n background-color: var(--_nys-fileinput-progress-background);\n overflow: hidden;\n appearance: none;\n border: none;\n }\n progress::-moz-progress-bar {\n background-color: var(--_nys-fileinput-progress-background);\n }\n progress::-webkit-progress-value {\n background-color: var(--_nys-fileinput-progress-background);\n }\n progress::-webkit-progress-bar {\n background-color: var(--_nys-fileinput-progress-background);\n }\n`;\n","import { css } from \"lit\";\n\nexport default css`\n :host {\n /* Global fileitem Styles */\n --_nys-fileitem-border-radius: var(--nys-radius-md, 4px);\n --_nys-fileitem-padding: var(--nys-space-100, 8px)\n var(--nys-space-200, 16px);\n --_nys-fileitem-background-color: var(--nys-color-ink-reverse, #fff);\n --_nys-fileitem-border-color: var(--nys-color-neutral-100, #d0d0ce);\n\n /* Typography */\n --_nys-fileitem-font-family: var(\n --nys-font-family-ui,\n var(\n --nys-font-family-sans,\n \"Proxima Nova\",\n \"Helvetica Neue\",\n \"Helvetica\",\n \"Arial\",\n sans-serif\n )\n );\n --_nys-fileitem-font-size: var(--nys-font-size-ui-md, 16px);\n --_nys-fileitem-font-weight: var(--nys-font-weight-regular, 400);\n --_nys-fileitem-line-height: var(--nys-font-lineheight-ui-md, 24px);\n --_nys-fileitem-letter-spacing: var(\n --nys-font-letterspacing-ui-md,\n 0.044px\n );\n\n /* Progress Bar */\n --_nys-fileitem-background-color--progress: var(\n --nys-color-neutral-50,\n #ededed\n );\n --_nys-fileitem-background-color--progress--fill: var(\n --nys-color-info,\n #004dd1\n );\n }\n\n /***** File List Item *****/\n .file-item {\n position: relative;\n border-radius: var(--_nys-fileitem-border-radius);\n border-width: var(--nys-border-width-sm, 1px);\n border-style: solid;\n border-color: var(--_nys-fileitem-border-color);\n background-color: var(--_nys-fileitem-background-color);\n }\n\n .file-item.error {\n --_nys-fileitem-border-color: var(--nys-color-danger, #b52c2c);\n }\n\n .file-item__main {\n display: flex;\n justify-items: center;\n align-items: center;\n gap: var(--_nys-fileinput-gap);\n padding: var(--_nys-fileitem-padding);\n height: 56px;\n box-sizing: border-box;\n }\n\n .file-item__info {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 0;\n font-family: var(--_nys-fileitem-font-family);\n font-size: var(--_nys-fileitem-font-size);\n font-style: normal;\n font-weight: var(--_nys-fileitem-font-weight);\n line-height: var(--_nys-fileitem-line-height);\n letter-spacing: var(--_nys-fileitem-letter-spacing);\n }\n\n .file-item__info-name {\n display: flex;\n max-width: 100%;\n overflow: hidden;\n white-space: nowrap;\n align-items: center;\n }\n\n .file-item__info-name-start {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 1;\n min-width: 0;\n }\n\n .file-item p {\n margin: 0;\n }\n\n .file-item__error {\n color: var(--nys-color-danger, #b52c2c);\n text-overflow: ellipsis;\n font-weight: 700;\n }\n\n /**** Progress Bar ****/\n progress {\n position: absolute;\n bottom: 0;\n display: flex;\n width: 100%;\n height: 6px;\n border-radius: var(--nys-radius-round, 1776px);\n background: var(--_nys-fileitem-background-color--progress--fill);\n overflow: hidden;\n appearance: none;\n }\n /* Track */\n progress::-moz-progress-bar {\n background-color: var(--_nys-fileitem-background-color--progress);\n }\n /* Filled value (the blue bar) */\n progress::-webkit-progress-value {\n background-color: var(--_nys-fileitem-background-color--progress--fill);\n }\n /* Firefox */\n progress::-webkit-progress-bar {\n background-color: var(--_nys-fileitem-background-color--progress);\n }\n\n /**** Icon ****/\n .file-icon[name=\"progress_activity\"] {\n animation: spin 1s linear infinite;\n }\n\n .file-icon[name=\"error\"] {\n color: var(--nys-color-danger, #b52c2c);\n }\n\n @keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n`;\n","import { LitElement, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport styles from \"./nys-fileitem.styles\";\n\nexport class NysFileItem extends LitElement {\n @property({ type: String }) filename = \"\";\n @property({ type: String }) status:\n | \"pending\"\n | \"processing\"\n | \"done\"\n | \"error\" = \"pending\";\n @property({ type: Number }) progress = 0;\n @property({ type: String }) errorMessage = \"\";\n\n static styles = styles;\n\n private _handleRemove() {\n this.dispatchEvent(\n new CustomEvent(\"nys-fileRemove\", {\n detail: { filename: this.filename },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private splitFilename(filename: string) {\n const lastDotIndex = filename.lastIndexOf(\".\");\n const extension = lastDotIndex !== -1 ? filename.slice(lastDotIndex) : \"\"; // e.g. \".pdf\"\n const name =\n lastDotIndex !== -1 ? filename.slice(0, lastDotIndex) : filename;\n\n const startPart = name.slice(0, name.length - 3);\n const endPart = name.slice(-3);\n\n return { startPart, endPart, extension };\n }\n\n render() {\n const { startPart, endPart, extension } = this.splitFilename(this.filename);\n\n return html`\n <div\n class=\"file-item ${this.status}\"\n aria-busy=${this.status === \"processing\" ? \"true\" : \"false\"}\n aria-label=\"You have selected ${this.filename}\"\n >\n <div class=\"file-item__main\" role=\"group\">\n <nys-icon\n class=\"file-icon\"\n name=${this.status === \"processing\"\n ? \"progress_activity\"\n : this.status === \"error\"\n ? \"error\"\n : \"attach_file\"}\n size=\"2xl\"\n ></nys-icon>\n <div class=\"file-item__info\">\n <div class=\"file-item__info-name\">\n <span class=\"file-item__info-name-start\">${startPart}</span>\n <span class=\"file-item__info-name-end\"\n >${endPart}${extension}</span\n >\n </div>\n ${this.errorMessage\n ? html`<p\n class=\"file-item__error\"\n role=\"alert\"\n aria-live=\"assertive\"\n aria-invalid=\"true\"\n aria-errormessage=${this.errorMessage}\n id=\"${this.filename}-error\"\n >\n ${this.errorMessage}\n </p>`\n : null}\n </div>\n <nys-button\n circle\n icon=\"close\"\n ariaLabel=\"close button\"\n size=\"sm\"\n variant=\"ghost\"\n .onClick=${() => this._handleRemove()}\n ariaLabel=\"Remove file: ${this.filename}\"\n ></nys-button>\n </div>\n ${this.status === \"processing\"\n ? html`<div\n class=\"file-item__progress-container\"\n role=\"progressbar\"\n aria-valuemin=\"0\"\n aria-valuemax=\"100\"\n aria-valuenow=\"${this.progress}\"\n aria-label=\"Upload progress for ${this.filename}\"\n >\n <progress value=${this.progress} max=\"100\"></progress>\n </div>`\n : null}\n </div>\n `;\n }\n}\n\ncustomElements.define(\"nys-fileitem\", NysFileItem);\n","import { LitElement, html } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { validateFileHeader } from \"./validateFileHeader\";\nimport styles from \"./nys-fileinput.styles\";\nimport \"./nys-fileitem\";\n\nlet fileinputIdCounter = 0; // Counter for generating unique IDs\n\ninterface FileWithProgress {\n file: File;\n progress: number;\n status: \"pending\" | \"processing\" | \"done\" | \"error\";\n errorMsg?: string;\n}\n\nexport class NysFileinput extends LitElement {\n @property({ type: String }) id = \"\";\n @property({ type: String, reflect: true }) name = \"\";\n @property({ type: String }) label = \"\";\n @property({ type: String }) description = \"\";\n @property({ type: Boolean }) multiple = false;\n @property({ type: String }) accept = \"\"; // e.g. \"image/*,.pdf\"\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: Boolean, reflect: true }) required = false;\n @property({ type: Boolean, reflect: true }) optional = false;\n @property({ type: Boolean, reflect: true }) showError = false;\n @property({ type: String }) errorMessage = \"\";\n @property({ type: Boolean }) dropzone = false;\n @property({ type: String, reflect: true }) width: \"lg\" | \"full\" = \"full\";\n\n static styles = styles;\n\n private _selectedFiles: FileWithProgress[] = [];\n private _dragActive = false;\n private get _isDropDisabled(): boolean {\n return this.disabled || (!this.multiple && this._selectedFiles.length > 0);\n }\n\n private get _buttonAriaLabel(): string {\n if (this._selectedFiles.length === 0) {\n return this.multiple ? \"Choose files: \" : \"Choose file: \";\n }\n\n return this.multiple ? \"Change files: \" : \"Change file: \";\n }\n\n private get _buttonAriaDescription(): string {\n if (this._selectedFiles.length === 0)\n return `${this.label + \" \" + this.description}`;\n\n const hasInvalidFiles = this._selectedFiles.some(\n (file) => file.status === \"error\",\n );\n\n let base = \"\";\n\n if (this._selectedFiles.length === 1) {\n base = `You have selected ${this._selectedFiles[0].file.name}.`;\n } else {\n const fileNames = this._selectedFiles.map((f) => f.file.name).join(\", \");\n base = `You have selected ${this._selectedFiles.length} files: ${fileNames}`;\n }\n\n const error = hasInvalidFiles\n ? \" Error: One or more files are not valid file types.\"\n : \"\";\n\n return `${base}${error}`;\n }\n\n private get _innerNysButton(): HTMLElement | null {\n const nysButton = this.renderRoot.querySelector(\n '[name=\"file-btn\"]',\n ) as HTMLButtonElement | null;\n const innerButton = nysButton?.shadowRoot?.querySelector(\n \"button\",\n ) as HTMLElement | null;\n return innerButton;\n }\n\n private _internals: ElementInternals;\n\n /********************** Lifecycle updates **********************/\n static formAssociated = true; // allows use of elementInternals' API\n\n constructor() {\n super();\n this._internals = this.attachInternals();\n }\n\n // Generate a unique ID if one is not provided\n connectedCallback() {\n super.connectedCallback();\n if (!this.id) {\n this.id = `nys-fileinput-${Date.now()}-${fileinputIdCounter++}`;\n }\n\n this.addEventListener(\"invalid\", this._handleInvalid);\n }\n\n disconnectedCallback() {\n super.disconnectedCallback();\n this.removeEventListener(\"invalid\", this._handleInvalid);\n }\n\n firstUpdated() {\n // This ensures our element always participates in the form\n this._setValue();\n }\n\n /********************** Form Integration **********************/\n private _setValue() {\n // for multiple file uploads, we upload File object as an array\n if (this.multiple) {\n const files = this._selectedFiles.map((entry) => entry.file);\n\n if (files.length > 0) {\n const formData = new FormData();\n files.forEach((file) => {\n formData.append(this.name, file);\n });\n this._internals.setFormValue(formData);\n } else {\n this._internals.setFormValue(null);\n }\n } else {\n const singleFile = this._selectedFiles[0]?.file || null;\n this._internals.setFormValue(singleFile);\n }\n\n this._manageRequire(); // Check validation when value is set\n }\n\n // Called to internally set the initial internalElement required flag.\n private _manageRequire() {\n const input = this.shadowRoot?.querySelector(\"input\");\n if (!input) return;\n\n const message = this.errorMessage || \"Please upload a file.\";\n const isInvalid = this.required && this._selectedFiles.length == 0;\n\n if (isInvalid) {\n this._internals.ariaRequired = \"true\"; // Screen readers should announce error\n this._internals.setValidity({ valueMissing: true }, message, input);\n } else {\n this._internals.ariaRequired = \"false\"; // Reset when valid\n this._internals.setValidity({}, \"\", input);\n }\n }\n\n private _setValidityMessage(message: string = \"\") {\n const input = this.shadowRoot?.querySelector(\"input\");\n if (!input) return;\n\n // Toggle the HTML <div> tag error message\n this.showError = message === (this.errorMessage || \"Please upload a file.\");\n\n // If user sets errorMessage, this will always override the native validation message\n if (this.errorMessage?.trim() && message !== \"\") {\n message = this.errorMessage;\n }\n\n this._internals.setValidity(\n message ? { customError: true } : {},\n message,\n input,\n );\n }\n\n private _validate() {\n const hasErrorFiles = this._selectedFiles.some(\n (entry) => entry.status === \"error\",\n );\n const isEmpty = this.required && this._selectedFiles.length === 0;\n\n let message = \"\";\n if (isEmpty) {\n message = this.errorMessage || \"Please upload a file.\";\n } else if (hasErrorFiles) {\n message = \"One or more files are invalid.\";\n }\n\n this._setValidityMessage(message);\n }\n\n // This helper function is called to perform the element's native validation.\n checkValidity(): boolean {\n const input = this.shadowRoot?.querySelector(\"input\");\n return input ? input.checkValidity() : true;\n }\n\n private _handleInvalid(event: Event) {\n event.preventDefault();\n this._validate();\n\n const innerButton = this._innerNysButton;\n if (innerButton) {\n // Focus only if this is the first invalid element (top-down approach)\n const form = this._internals.form;\n if (form) {\n const elements = Array.from(form.elements) as Array<\n HTMLElement & { checkValidity?: () => boolean }\n >;\n // Find the first element in the form that is invalid\n const firstInvalidElement = elements.find(\n (element) =>\n typeof element.checkValidity === \"function\" &&\n !element.checkValidity(),\n );\n if (firstInvalidElement === this) {\n innerButton.focus();\n innerButton.classList.add(\"active-focus\"); // This class styling is found within <nys-button>\n }\n } else {\n // If not part of a form, simply focus.\n innerButton.focus();\n innerButton.classList.add(\"active-focus\"); // This class styling is found within <nys-button>\n }\n }\n }\n\n /******************** Functions ********************/\n\n // Store the files to be displayed\n private async _saveSelectedFiles(file: File) {\n const isDuplicate = this._selectedFiles.some(\n (existingFile) => existingFile.file.name == file.name,\n );\n if (isDuplicate) return;\n\n if (!this.multiple && this._selectedFiles.length >= 1) return;\n\n const entry: FileWithProgress = {\n file,\n progress: 0,\n status: \"pending\",\n };\n\n this._selectedFiles.push(entry);\n await this._processFile(entry);\n\n // Now that the file is added, update form value and validation\n this._setValue();\n this._validate();\n }\n\n // Read the contents of stored files, this will indicate loading progress of the uploaded files\n private async _processFile(entry: FileWithProgress) {\n entry.status = \"processing\";\n\n try {\n const isValid = await validateFileHeader(entry.file, this.accept);\n if (!isValid) {\n entry.status = \"error\";\n entry.errorMsg = \"File type is invalid.\";\n this.requestUpdate();\n return;\n }\n\n const reader = new FileReader();\n\n reader.onprogress = (e) => {\n if (e.lengthComputable) {\n const percentage = Math.round((e.loaded * 100) / e.total);\n entry.progress = percentage;\n this.requestUpdate();\n }\n };\n\n reader.onload = () => {\n entry.progress = 100;\n entry.status = \"done\";\n this.requestUpdate();\n };\n\n reader.onerror = () => {\n entry.status = \"error\";\n entry.errorMsg = \"Failed to load file.\";\n this.requestUpdate();\n };\n\n reader.readAsArrayBuffer(entry.file);\n } catch {\n entry.status = \"error\";\n entry.errorMsg = \"Error validating file.\";\n this.requestUpdate();\n }\n }\n\n private _dispatchChangeEvent() {\n this.dispatchEvent(\n new CustomEvent(\"nys-change\", {\n detail: { id: this.id, files: this._selectedFiles },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _openFileDialog() {\n const input = this.renderRoot.querySelector(\n \".hidden-file-input\",\n ) as HTMLInputElement;\n\n input?.click();\n }\n\n private _handlePostFileSelectionFocus() {\n if (this.multiple) {\n const innerButton = this._innerNysButton;\n\n if (innerButton) {\n innerButton.focus();\n }\n } else {\n this._focusFirstFileItemIfSingleMode();\n }\n }\n\n private async _focusFirstFileItemIfSingleMode() {\n if (!this.multiple) {\n await this.updateComplete;\n const fileItem = this.renderRoot.querySelector(\n \"nys-fileitem\",\n ) as HTMLElement;\n\n const innerFileItemMainContainer = fileItem?.shadowRoot?.querySelector(\n \".file-item\",\n ) as HTMLElement | null;\n\n if (innerFileItemMainContainer) {\n innerFileItemMainContainer.setAttribute(\"tabindex\", \"-1\");\n innerFileItemMainContainer.focus();\n }\n }\n }\n\n /******************** Event Handlers ********************/\n // Access the selected files & add new files to the internal list via the hidden <input type=\"file\">\n private _handleFileChange(e: Event) {\n const input = e.target as HTMLInputElement;\n const files = input.files;\n const newFiles = files ? Array.from(files) : []; // changes FileList to array\n\n // Store the uploaded files\n newFiles.map((file) => {\n this._saveSelectedFiles(file);\n });\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n this._handlePostFileSelectionFocus();\n }\n\n private _handleFileRemove(e: CustomEvent) {\n const filenameToRemove = e.detail.filename;\n\n // Remove selected files\n this._selectedFiles = this._selectedFiles.filter(\n (existingFile) => existingFile.file.name !== filenameToRemove,\n );\n\n if (this._selectedFiles.length === 0) {\n const input = this.shadowRoot?.querySelector(\n \"input\",\n ) as HTMLInputElement | null;\n if (input) input.value = \"\";\n }\n\n this._setValue();\n this._validate();\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n }\n\n private _onDragOver(e: DragEvent) {\n if (this.disabled) return;\n\n e.stopPropagation();\n e.preventDefault();\n if (!this._dragActive) {\n this._dragActive = true; // For styling purpose\n this.requestUpdate();\n }\n }\n\n // Mostly used for styling purpose\n private _onDragLeave(e: DragEvent) {\n if (this.disabled) return;\n\n e.stopPropagation();\n e.preventDefault();\n // Only reset if leaving the dropzone itself (not children)\n if (e.currentTarget === e.target) {\n this._dragActive = false; // For styling purpose\n this.requestUpdate();\n }\n }\n\n private _onDrop(e: DragEvent) {\n if (this.disabled) return;\n\n e.preventDefault();\n this._dragActive = false; // For styling purpose\n this.requestUpdate();\n\n const files = e.dataTransfer?.files;\n if (!files) return;\n\n const newFiles = Array.from(files);\n\n if (this.multiple) {\n newFiles.forEach((file) => {\n this._saveSelectedFiles(file);\n });\n } else {\n this._saveSelectedFiles(newFiles[0]);\n }\n\n this.requestUpdate();\n this._dispatchChangeEvent();\n }\n\n render() {\n return html`<div\n class=\"nys-fileinput\"\n @nys-fileRemove=${this._handleFileRemove}\n >\n <nys-label\n for=${this.id}\n label=${this.label}\n description=${this.description}\n flag=${this.required ? \"required\" : this.optional ? \"optional\" : \"\"}\n >\n <slot name=\"description\" slot=\"description\">${this.description}</slot>\n </nys-label>\n\n <input\n class=\"hidden-file-input\"\n tabindex=\"-1\"\n type=\"file\"\n name=${this.name}\n ?multiple=${this.multiple}\n accept=${this.accept}\n ?required=${this.required}\n ?disabled=${this.disabled ||\n (!this.multiple && this._selectedFiles.length > 0)}\n aria-disabled=\"${this.disabled}\"\n aria-hidden=\"true\"\n @change=${this._handleFileChange}\n hidden\n />\n\n ${!this.dropzone\n ? html`<nys-button\n id=${this.id}\n name=\"file-btn\"\n label=${this.multiple ? \"Choose files\" : \"Choose file\"}\n variant=\"outline\"\n ariaLabel=${this._buttonAriaLabel}\n ariaDescription=${this._buttonAriaDescription}\n ?disabled=${this.disabled ||\n (!this.multiple && this._selectedFiles.length > 0)}\n .onClick=${() => this._openFileDialog()}\n ></nys-button>`\n : html`<div\n class=\"nys-fileinput__dropzone\n ${this._dragActive ? \"drag-active\" : \"\"}\n ${this._isDropDisabled ? \"disabled\" : \"\"}\n ${this.showError && !this._isDropDisabled ? \"error\" : \"\"}\"\n @click=${this._isDropDisabled ? null : this._openFileDialog}\n @keydown=${(e: KeyboardEvent) =>\n !this._isDropDisabled &&\n (e.key === \"Enter\" || e.key === \" \") &&\n this._openFileDialog()}\n @dragover=${this._isDropDisabled ? null : this._onDragOver}\n @dragleave=${this._isDropDisabled ? null : this._onDragLeave}\n @drop=${this._isDropDisabled ? null : this._onDrop}\n aria-label=\"Drag files here or choose from folder\"\n >\n ${this._dragActive\n ? html`<p>Drop file to upload</p>`\n : html` <nys-button\n id=${this.id}\n name=\"file-btn\"\n label=${this.multiple ? \"Choose files\" : \"Choose file\"}\n variant=\"outline\"\n ariaLabel=${this._buttonAriaLabel}\n ariaDescription=${this._buttonAriaDescription}\n ?disabled=${this._isDropDisabled}\n .onClick=${(e: Event) => {\n e.stopPropagation();\n this._openFileDialog();\n }}\n ></nys-button>\n <p>or drag here</p>`}\n </div>`}\n ${this.showError\n ? html`\n <nys-errormessage\n ?showError=${this.showError}\n errorMessage=${this._internals.validationMessage ||\n this.errorMessage}\n ></nys-errormessage>\n `\n : null}\n ${this._selectedFiles.length > 0\n ? html`\n <ul>\n ${this._selectedFiles.map(\n (entry) =>\n html`<li>\n <nys-fileitem\n filename=${entry.file.name}\n status=${entry.status}\n progress=${entry.progress}\n errorMessage=${entry.errorMsg || \"\"}\n ></nys-fileitem>\n </li>`,\n )}\n </ul>\n `\n : null}\n </div>`;\n }\n}\n\nif (!customElements.get(\"nys-fileinput\")) {\n customElements.define(\"nys-fileinput\", NysFileinput);\n}\n"],"names":["t","e","s","o","n$2","r","n","S","c","i","h","a","l","p","d","u","f","y","b","_a","validateFileHeader","file","accept","acceptItems","filename","fileExt","acceptItem","styles$1","css","styles","_NysFileItem","LitElement","lastDotIndex","extension","name","startPart","endPart","html","NysFileItem","__decorateClass","property","fileinputIdCounter","_NysFileinput","hasInvalidFiles","base","fileNames","nysButton","files","entry","formData","singleFile","input","message","_b","hasErrorFiles","isEmpty","event","innerButton","form","element","existingFile","reader","percentage","fileItem","innerFileItemMainContainer","filenameToRemove","newFiles","NysFileinput"],"mappings":";;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,MAAMA,IAAE,YAAWC,IAAED,EAAE,eAAsBA,EAAE,aAAX,UAAqBA,EAAE,SAAS,iBAAe,wBAAuB,SAAS,aAAW,aAAY,cAAc,WAAUE,IAAE,OAAM,GAAGC,IAAE,oBAAI;AAAO,IAAAC,IAAC,MAAO;AAAA,EAAC,YAAYJ,GAAEC,GAAEE,GAAE;AAAC,QAAG,KAAK,eAAa,IAAGA,MAAID,EAAE,OAAM,MAAM,mEAAmE;AAAE,SAAK,UAAQF,GAAE,KAAK,IAAEC;AAAA,EAAC;AAAA,EAAC,IAAI,aAAY;AAAC,QAAID,IAAE,KAAK;AAAE,UAAME,IAAE,KAAK;AAAE,QAAGD,KAAYD,MAAT,QAAW;AAAC,YAAMC,IAAWC,MAAT,UAAgBA,EAAE,WAAN;AAAa,MAAAD,MAAID,IAAEG,EAAE,IAAID,CAAC,IAAYF,MAAT,YAAc,KAAK,IAAEA,IAAE,IAAI,iBAAe,YAAY,KAAK,OAAO,GAAEC,KAAGE,EAAE,IAAID,GAAEF,CAAC;AAAA,IAAE;AAAC,WAAOA;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,WAAO,KAAK;AAAA,EAAO;AAAC;AAAM,MAACK,IAAE,CAAAL,MAAG,IAAIM,EAAY,OAAON,KAAjB,WAAmBA,IAAEA,IAAE,IAAG,QAAOE,CAAC,GAA2VK,IAAE,CAACL,GAAEC,MAAI;AAAC,MAAGF,EAAE,CAAAC,EAAE,qBAAmBC,EAAE,IAAK,OAAG,aAAa,gBAAc,IAAE,EAAE,UAAU;AAAA,MAAQ,YAAUF,KAAKE,GAAE;AAAC,UAAMA,IAAE,SAAS,cAAc,OAAO,GAAEG,IAAEN,EAAE;AAAS,IAASM,MAAT,UAAYH,EAAE,aAAa,SAAQG,CAAC,GAAEH,EAAE,cAAYF,EAAE,SAAQC,EAAE,YAAYC,CAAC;AAAA,EAAC;AAAC,GAAEK,IAAEP,IAAE,CAAAD,MAAGA,IAAE,CAAAA,MAAGA,aAAa,iBAAe,CAAAA,MAAG;AAAC,MAAIC,IAAE;AAAG,aAAUC,KAAKF,EAAE,SAAS,CAAAC,KAAGC,EAAE;AAAQ,SAAOG,EAAEJ,CAAC;AAAC,GAAGD,CAAC,IAAEA;ACJ3zC;AAAA;AAAA;AAAA;AAAA;AAIG,MAAK,EAAC,IAAGS,GAAE,gBAAeR,GAAE,0BAAyBI,GAAE,qBAAoBK,GAAE,uBAAsBP,GAAE,gBAAeG,EAAC,IAAE,QAAOK,IAAE,YAAWH,IAAEG,EAAE,cAAaC,IAAEJ,IAAEA,EAAE,cAAY,IAAGK,IAAEF,EAAE,gCAA+BG,IAAE,CAACd,GAAEE,MAAIF,GAAEe,IAAE,EAAC,YAAYf,GAAEE,GAAE;AAAC,UAAOA,GAAC;AAAA,IAAE,KAAK;AAAQ,MAAAF,IAAEA,IAAEY,IAAE;AAAK;AAAA,IAAM,KAAK;AAAA,IAAO,KAAK;AAAM,MAAAZ,IAAQA,KAAN,OAAQA,IAAE,KAAK,UAAUA,CAAC;AAAA,EAAC;AAAC,SAAOA;AAAC,GAAE,cAAcA,GAAEE,GAAE;AAAC,MAAIO,IAAET;AAAE,UAAOE,GAAC;AAAA,IAAE,KAAK;AAAQ,MAAAO,IAAST,MAAP;AAAS;AAAA,IAAM,KAAK;AAAO,MAAAS,IAAST,MAAP,OAAS,OAAK,OAAOA,CAAC;AAAE;AAAA,IAAM,KAAK;AAAA,IAAO,KAAK;AAAM,UAAG;AAAC,QAAAS,IAAE,KAAK,MAAMT,CAAC;AAAA,MAAC,QAAS;AAAC,QAAAS,IAAE;AAAA,MAAI;AAAA,EAAC;AAAC,SAAOA;AAAC,EAAC,GAAEO,IAAE,CAAChB,GAAEE,MAAI,CAACO,EAAET,GAAEE,CAAC,GAAEe,IAAE,EAAC,WAAU,IAAG,MAAK,QAAO,WAAUF,GAAE,SAAQ,IAAG,YAAWC,EAAC;AAAE,OAAO,aAAP,OAAO,WAAW,OAAO,UAAU,IAAEL,EAAE,wBAAFA,EAAE,sBAAsB,oBAAI;AAAQ,MAAMO,UAAU,YAAW;AAAA,EAAC,OAAO,eAAelB,GAAE;AAAC,SAAK,KAAI,IAAI,KAAK,MAAL,KAAK,IAAI,CAAA,IAAI,KAAKA,CAAC;AAAA,EAAC;AAAA,EAAC,WAAW,qBAAoB;AAAC,WAAO,KAAK,SAAQ,GAAG,KAAK,QAAM,CAAC,GAAG,KAAK,KAAK,KAAI,CAAE;AAAA,EAAC;AAAA,EAAC,OAAO,eAAeA,GAAEE,IAAEe,GAAE;AAAC,QAAGf,EAAE,UAAQA,EAAE,YAAU,KAAI,KAAK,KAAI,GAAG,KAAK,kBAAkB,IAAIF,GAAEE,CAAC,GAAE,CAACA,EAAE,YAAW;AAAC,YAAM,IAAE,OAAM,GAAGG,IAAE,KAAK,sBAAsBL,GAAE,GAAEE,CAAC;AAAE,MAASG,MAAT,UAAYJ,EAAE,KAAK,WAAUD,GAAEK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAA,EAAC,OAAO,sBAAsBL,GAAEE,GAAE,GAAE;AAAC,UAAK,EAAC,KAAID,GAAE,KAAIS,EAAC,IAAEL,EAAE,KAAK,WAAUL,CAAC,KAAG,EAAC,MAAK;AAAC,aAAO,KAAKE,CAAC;AAAA,IAAC,GAAE,IAAIF,GAAE;AAAC,WAAKE,CAAC,IAAEF;AAAA,IAAC,EAAC;AAAE,WAAM,EAAC,MAAK;AAAC,aAAOC,KAAA,gBAAAA,EAAG,KAAK;AAAA,IAAK,GAAE,IAAIC,GAAE;AAAC,YAAMG,IAAEJ,KAAA,gBAAAA,EAAG,KAAK;AAAM,MAAAS,EAAE,KAAK,MAAKR,CAAC,GAAE,KAAK,cAAcF,GAAEK,GAAE,CAAC;AAAA,IAAC,GAAE,cAAa,IAAG,YAAW,GAAE;AAAA,EAAC;AAAA,EAAC,OAAO,mBAAmBL,GAAE;AAAC,WAAO,KAAK,kBAAkB,IAAIA,CAAC,KAAGiB;AAAA,EAAC;AAAA,EAAC,OAAO,OAAM;AAAC,QAAG,KAAK,eAAeH,EAAE,mBAAmB,CAAC,EAAE;AAAO,UAAMd,IAAEM,EAAE,IAAI;AAAE,IAAAN,EAAE,SAAQ,GAAYA,EAAE,MAAX,WAAe,KAAK,IAAE,CAAC,GAAGA,EAAE,CAAC,IAAG,KAAK,oBAAkB,IAAI,IAAIA,EAAE,iBAAiB;AAAA,EAAC;AAAA,EAAC,OAAO,WAAU;AAAC,QAAG,KAAK,eAAec,EAAE,WAAW,CAAC,EAAE;AAAO,QAAG,KAAK,YAAU,IAAG,KAAK,KAAI,GAAG,KAAK,eAAeA,EAAE,YAAY,CAAC,GAAE;AAAC,YAAM,IAAE,KAAK,YAAWZ,IAAE,CAAC,GAAGQ,EAAE,CAAC,GAAE,GAAGP,EAAE,CAAC,CAAC;AAAE,iBAAUM,KAAKP,EAAE,MAAK,eAAeO,GAAE,EAAEA,CAAC,CAAC;AAAA,IAAC;AAAC,UAAMT,IAAE,KAAK,OAAO,QAAQ;AAAE,QAAUA,MAAP,MAAS;AAAC,YAAME,IAAE,oBAAoB,IAAIF,CAAC;AAAE,UAAYE,MAAT,OAAW,YAAS,CAACF,GAAES,CAAC,KAAIP,EAAE,MAAK,kBAAkB,IAAIF,GAAES,CAAC;AAAA,IAAC;AAAC,SAAK,OAAK,oBAAI;AAAI,eAAS,CAAC,GAAEP,CAAC,KAAI,KAAK,mBAAkB;AAAC,YAAMO,IAAE,KAAK,KAAK,GAAEP,CAAC;AAAE,MAASO,MAAT,UAAY,KAAK,KAAK,IAAIA,GAAE,CAAC;AAAA,IAAC;AAAC,SAAK,gBAAc,KAAK,eAAe,KAAK,MAAM;AAAA,EAAC;AAAA,EAAC,OAAO,eAAeP,GAAE;AAAC,UAAMO,IAAE,CAAA;AAAG,QAAG,MAAM,QAAQP,CAAC,GAAE;AAAC,YAAMD,IAAE,IAAI,IAAIC,EAAE,KAAK,KAAG,EAAE,QAAO,CAAE;AAAE,iBAAU,KAAKD,EAAE,CAAAQ,EAAE,QAAQT,EAAE,CAAC,CAAC;AAAA,IAAC,MAAM,CAASE,MAAT,UAAYO,EAAE,KAAKT,EAAEE,CAAC,CAAC;AAAE,WAAOO;AAAA,EAAC;AAAA,EAAC,OAAO,KAAKT,GAAEE,GAAE;AAAC,UAAM,IAAEA,EAAE;AAAU,WAAW,MAAL,KAAO,SAAiB,OAAO,KAAjB,WAAmB,IAAY,OAAOF,KAAjB,WAAmBA,EAAE,YAAW,IAAG;AAAA,EAAM;AAAA,EAAC,cAAa;AAAC,UAAK,GAAG,KAAK,OAAK,QAAO,KAAK,kBAAgB,IAAG,KAAK,aAAW,IAAG,KAAK,OAAK,MAAK,KAAK,KAAI;AAAA,EAAE;AAAA,EAAC,OAAM;;AAAC,SAAK,OAAK,IAAI,QAAS,OAAG,KAAK,iBAAe,CAAC,GAAG,KAAK,OAAK,oBAAI,OAAI,KAAK,KAAI,GAAG,KAAK,cAAa,IAAGmB,IAAA,KAAK,YAAY,MAAjB,QAAAA,EAAoB,QAAS,OAAG,EAAE,IAAI;AAAA,EAAG;AAAA,EAAC,cAAcnB,GAAE;;AAAC,KAAC,KAAK,SAAL,KAAK,OAAO,oBAAI,QAAK,IAAIA,CAAC,GAAW,KAAK,eAAd,UAA0B,KAAK,iBAAamB,IAAAnB,EAAE,kBAAF,QAAAmB,EAAA,KAAAnB;AAAA,EAAmB;AAAA,EAAC,iBAAiBA,GAAE;;AAAC,KAAAmB,IAAA,KAAK,SAAL,QAAAA,EAAW,OAAOnB;AAAA,EAAE;AAAA,EAAC,OAAM;AAAC,UAAMA,IAAE,oBAAI,OAAIE,IAAE,KAAK,YAAY;AAAkB,eAAU,KAAKA,EAAE,KAAI,EAAG,MAAK,eAAe,CAAC,MAAIF,EAAE,IAAI,GAAE,KAAK,CAAC,CAAC,GAAE,OAAO,KAAK,CAAC;AAAG,IAAAA,EAAE,OAAK,MAAI,KAAK,OAAKA;AAAA,EAAE;AAAA,EAAC,mBAAkB;AAAC,UAAMA,IAAE,KAAK,cAAY,KAAK,aAAa,KAAK,YAAY,iBAAiB;AAAE,WAAOE,EAAEF,GAAE,KAAK,YAAY,aAAa,GAAEA;AAAA,EAAC;AAAA,EAAC,oBAAmB;;AAAC,SAAK,eAAL,KAAK,aAAa,KAAK,iBAAgB,IAAG,KAAK,eAAe,EAAE,IAAEmB,IAAA,KAAK,SAAL,QAAAA,EAAW,QAAS,OAAC;;AAAE,cAAAA,IAAA,EAAE,kBAAF,gBAAAA,EAAA;AAAA;AAAA,EAAqB;AAAA,EAAC,eAAenB,GAAE;AAAA,EAAC;AAAA,EAAC,uBAAsB;;AAAC,KAAAmB,IAAA,KAAK,SAAL,QAAAA,EAAW,QAAS,OAAC;;AAAE,cAAAA,IAAA,EAAE,qBAAF,gBAAAA,EAAA;AAAA;AAAA,EAAwB;AAAA,EAAC,yBAAyBnB,GAAEE,GAAE,GAAE;AAAC,SAAK,KAAKF,GAAE,CAAC;AAAA,EAAC;AAAA,EAAC,KAAKA,GAAEE,GAAE;;AAAC,UAAM,IAAE,KAAK,YAAY,kBAAkB,IAAIF,CAAC,GAAEC,IAAE,KAAK,YAAY,KAAKD,GAAE,CAAC;AAAE,QAAYC,MAAT,UAAiB,EAAE,YAAP,IAAe;AAAC,YAAMI,OAAYc,IAAA,EAAE,cAAF,gBAAAA,EAAa,iBAAtB,SAAkC,EAAE,YAAUJ,GAAG,YAAYb,GAAE,EAAE,IAAI;AAAE,WAAK,OAAKF,GAAQK,KAAN,OAAQ,KAAK,gBAAgBJ,CAAC,IAAE,KAAK,aAAaA,GAAEI,CAAC,GAAE,KAAK,OAAK;AAAA,IAAI;AAAA,EAAC;AAAA,EAAC,KAAKL,GAAEE,GAAE;;AAAC,UAAM,IAAE,KAAK,aAAYD,IAAE,EAAE,KAAK,IAAID,CAAC;AAAE,QAAYC,MAAT,UAAY,KAAK,SAAOA,GAAE;AAAC,YAAMD,IAAE,EAAE,mBAAmBC,CAAC,GAAEI,IAAc,OAAOL,EAAE,aAArB,aAA+B,EAAC,eAAcA,EAAE,UAAS,MAAWmB,IAAAnB,EAAE,cAAF,gBAAAmB,EAAa,mBAAtB,SAAoCnB,EAAE,YAAUe;AAAE,WAAK,OAAKd,GAAE,KAAKA,CAAC,IAAEI,EAAE,cAAcH,GAAEF,EAAE,IAAI,GAAE,KAAK,OAAK;AAAA,IAAI;AAAA,EAAC;AAAA,EAAC,cAAcA,GAAEE,GAAE,GAAE;AAAC,QAAYF,MAAT,QAAW;AAAC,UAAG,UAAI,KAAK,YAAY,mBAAmBA,CAAC,IAAE,EAAE,EAAE,cAAYgB,GAAG,KAAKhB,CAAC,GAAEE,CAAC,EAAE;AAAO,WAAK,EAAEF,GAAEE,GAAE,CAAC;AAAA,IAAC;AAAC,IAAK,KAAK,oBAAV,OAA4B,KAAK,OAAK,KAAK,KAAI;AAAA,EAAG;AAAA,EAAC,EAAEF,GAAEE,GAAE,GAAE;AAAC,SAAK,KAAK,IAAIF,CAAC,KAAG,KAAK,KAAK,IAAIA,GAAEE,CAAC,GAAO,EAAE,YAAP,MAAgB,KAAK,SAAOF,MAAI,KAAK,SAAL,KAAK,OAAO,oBAAI,QAAK,IAAIA,CAAC;AAAA,EAAC;AAAA,EAAC,MAAM,OAAM;AAAC,SAAK,kBAAgB;AAAG,QAAG;AAAC,YAAM,KAAK;AAAA,IAAI,SAAO,GAAE;AAAC,cAAQ,OAAO,CAAC;AAAA,IAAC;AAAC,UAAMA,IAAE,KAAK,eAAc;AAAG,WAAaA,KAAN,QAAS,MAAMA,GAAE,CAAC,KAAK;AAAA,EAAe;AAAA,EAAC,iBAAgB;AAAC,WAAO,KAAK;EAAe;AAAA,EAAC,gBAAe;;AAAC,QAAG,CAAC,KAAK,gBAAgB;AAAO,QAAG,CAAC,KAAK,YAAW;AAAC,UAAG,KAAK,eAAL,KAAK,aAAa,KAAK,iBAAgB,IAAG,KAAK,MAAK;AAAC,mBAAS,CAACA,GAAEE,CAAC,KAAI,KAAK,KAAK,MAAKF,CAAC,IAAEE;AAAE,aAAK,OAAK;AAAA,MAAM;AAAC,YAAMF,IAAE,KAAK,YAAY;AAAkB,UAAGA,EAAE,OAAK,EAAE,YAAS,CAACE,GAAEO,CAAC,KAAIT,EAAE,CAAKS,EAAE,YAAP,MAAgB,KAAK,KAAK,IAAIP,CAAC,KAAY,KAAKA,CAAC,MAAf,UAAkB,KAAK,EAAEA,GAAE,KAAKA,CAAC,GAAEO,CAAC;AAAA,IAAC;AAAC,QAAIT,IAAE;AAAG,UAAME,IAAE,KAAK;AAAK,QAAG;AAAC,MAAAF,IAAE,KAAK,aAAaE,CAAC,GAAEF,KAAG,KAAK,WAAWE,CAAC,IAAEiB,IAAA,KAAK,SAAL,QAAAA,EAAW,QAAS,CAAAnB,MAAC;;AAAE,gBAAAmB,IAAAnB,EAAE,eAAF,gBAAAmB,EAAA,KAAAnB;AAAA,UAAmB,KAAK,OAAOE,CAAC,KAAG,KAAK,KAAI;AAAA,IAAE,SAAO,GAAE;AAAC,YAAMF,IAAE,IAAG,KAAK,KAAI,GAAG;AAAA,IAAC;AAAC,IAAAA,KAAG,KAAK,KAAKE,CAAC;AAAA,EAAC;AAAA,EAAC,WAAWF,GAAE;AAAA,EAAC;AAAA,EAAC,KAAKA,GAAE;;AAAC,KAAAmB,IAAA,KAAK,SAAL,QAAAA,EAAW,QAAS,CAAAnB,MAAC;;AAAE,cAAAmB,IAAAnB,EAAE,gBAAF,gBAAAmB,EAAA,KAAAnB;AAAA,QAAoB,KAAK,eAAa,KAAK,aAAW,IAAG,KAAK,aAAaA,CAAC,IAAG,KAAK,QAAQA,CAAC;AAAA,EAAC;AAAA,EAAC,OAAM;AAAC,SAAK,OAAK,oBAAI,OAAI,KAAK,kBAAgB;AAAA,EAAE;AAAA,EAAC,IAAI,iBAAgB;AAAC,WAAO,KAAK,kBAAiB;AAAA,EAAE;AAAA,EAAC,oBAAmB;AAAC,WAAO,KAAK;AAAA,EAAI;AAAA,EAAC,aAAaA,GAAE;AAAC,WAAM;AAAA,EAAE;AAAA,EAAC,OAAOA,GAAE;AAAC,SAAK,SAAL,KAAK,OAAO,KAAK,KAAK,QAAS,OAAG,KAAK,KAAK,GAAE,KAAK,CAAC,CAAC,CAAC,IAAG,KAAK,KAAI;AAAA,EAAE;AAAA,EAAC,QAAQA,GAAE;AAAA,EAAC;AAAA,EAAC,aAAaA,GAAE;AAAA,EAAC;AAAC;AAACkB,EAAE,gBAAc,CAAA,GAAGA,EAAE,oBAAkB,EAAC,MAAK,OAAM,GAAEA,EAAEJ,EAAE,mBAAmB,CAAC,IAAE,oBAAI,OAAII,EAAEJ,EAAE,WAAW,CAAC,IAAE,oBAAI,OAAID,KAAA,QAAAA,EAAI,EAAC,iBAAgBK,EAAC,KAAIP,EAAE,4BAAFA,EAAE,0BAA0B,CAAA,IAAI,KAAK,OAAO;ACJx7K;AAAA;AAAA;AAAA;AAAA;AAIG,MAAMR,IAAE,EAAC,WAAU,IAAG,MAAK,QAAO,WAAUH,GAAE,SAAQ,IAAG,YAAWC,EAAC,GAAEI,IAAE,CAACL,IAAEG,GAAE,GAAEE,MAAI;AAAC,QAAK,EAAC,MAAKC,GAAE,UAASG,EAAC,IAAEJ;AAAE,MAAIH,IAAE,WAAW,oBAAoB,IAAIO,CAAC;AAAE,MAAYP,MAAT,UAAY,WAAW,oBAAoB,IAAIO,GAAEP,IAAE,oBAAI,KAAG,GAAEA,EAAE,IAAIG,EAAE,MAAKL,CAAC,GAAeM,MAAb,YAAe;AAAC,UAAK,EAAC,MAAKH,EAAC,IAAEE;AAAE,WAAM,EAAC,IAAIA,GAAE;AAAC,YAAMC,IAAE,EAAE,IAAI,KAAK,IAAI;AAAE,QAAE,IAAI,KAAK,MAAKD,CAAC,GAAE,KAAK,cAAcF,GAAEG,GAAEN,CAAC;AAAA,IAAC,GAAE,KAAKC,GAAE;AAAC,aAAgBA,MAAT,UAAY,KAAK,EAAEE,GAAE,QAAOH,CAAC,GAAEC;AAAA,IAAC,EAAC;AAAA,EAAC;AAAC,MAAcK,MAAX,UAAa;AAAC,UAAK,EAAC,MAAKH,EAAC,IAAEE;AAAE,WAAO,SAASA,GAAE;AAAC,YAAMC,IAAE,KAAKH,CAAC;AAAE,QAAE,KAAK,MAAKE,CAAC,GAAE,KAAK,cAAcF,GAAEG,GAAEN,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAM,MAAM,qCAAmCM,CAAC;AAAC;AAAE,SAASA,EAAEN,GAAE;AAAC,SAAM,CAAC,GAAEG,MAAc,OAAOA,KAAjB,WAAmBE,EAAEL,GAAE,GAAEG,CAAC,KAAG,CAACH,GAAEC,GAAEE,MAAI;AAAC,UAAME,IAAEJ,EAAE,eAAeE,CAAC;AAAE,WAAOF,EAAE,YAAY,eAAeE,GAAEE,IAAE,EAAC,GAAGL,GAAE,SAAQ,GAAE,IAAEA,CAAC,GAAEK,IAAE,OAAO,yBAAyBJ,GAAEE,CAAC,IAAE;AAAA,EAAM,GAAGH,GAAE,GAAEG,CAAC;AAAC;ACJvwB,eAAsBiB,EACpBC,GACAC,GACkB;AAElB,MAAI,CAACA,KAAUA,EAAO,KAAA,MAAW,GAAI,QAAO;AAG5C,QAAMC,IAAcD,EACjB,YAAA,EACA,MAAM,GAAG,EACT,IAAI,CAACX,MAAMA,EAAE,KAAA,CAAM,GAGhBa,IAAWH,EAAK,KAAK,YAAA,GACrBI,IAAUD,EAAS,SAAS,GAAG,IAAIA,EAAS,MAAM,GAAG,EAAE,IAAA,IAAS;AAGtE,aAAWE,KAAcH;AAevB,QAbIG,EAAW,WAAW,GAAG,KAAKA,EAAW,MAAM,CAAC,MAAMD,KAMxDC,EAAW,SAAS,IAAI,KACxBL,EAAK,KAAK,WAAWK,EAAW,MAAM,GAAG,EAAE,CAAC,KAM1CL,EAAK,SAASK;AAChB,aAAO;AAKX,SAAO;AACT;ACvCA,MAAAC,IAAeC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GCAfC,IAAeD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;ACER,MAAME,IAAN,MAAMA,UAAoBC,EAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA,GACuB,KAAA,WAAW,IACX,KAAA,SAId,WACc,KAAA,WAAW,GACX,KAAA,eAAe;AAAA,EAAA;AAAA,EAInC,gBAAgB;AACtB,SAAK;AAAA,MACH,IAAI,YAAY,kBAAkB;AAAA,QAChC,QAAQ,EAAE,UAAU,KAAK,SAAA;AAAA,QACzB,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,cAAcP,GAAkB;AACtC,UAAMQ,IAAeR,EAAS,YAAY,GAAG,GACvCS,IAAYD,MAAiB,KAAKR,EAAS,MAAMQ,CAAY,IAAI,IACjEE,IACJF,MAAiB,KAAKR,EAAS,MAAM,GAAGQ,CAAY,IAAIR,GAEpDW,IAAYD,EAAK,MAAM,GAAGA,EAAK,SAAS,CAAC,GACzCE,IAAUF,EAAK,MAAM,EAAE;AAE7B,WAAO,EAAE,WAAAC,GAAW,SAAAC,GAAS,WAAAH,EAAA;AAAA,EAC/B;AAAA,EAEA,SAAS;AACP,UAAM,EAAE,WAAAE,GAAW,SAAAC,GAAS,WAAAH,EAAA,IAAc,KAAK,cAAc,KAAK,QAAQ;AAE1E,WAAOI;AAAA;AAAA,2BAEgB,KAAK,MAAM;AAAA,oBAClB,KAAK,WAAW,eAAe,SAAS,OAAO;AAAA,wCAC3B,KAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,mBAKlC,KAAK,WAAW,eACnB,sBACA,KAAK,WAAW,UACd,UACA,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA,yDAK0BF,CAAS;AAAA;AAAA,mBAE/CC,CAAO,GAAGH,CAAS;AAAA;AAAA;AAAA,cAGxB,KAAK,eACHI;AAAA;AAAA;AAAA;AAAA;AAAA,sCAKsB,KAAK,YAAY;AAAA,wBAC/B,KAAK,QAAQ;AAAA;AAAA,oBAEjB,KAAK,YAAY;AAAA,wBAErB,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAQG,MAAM,KAAK,cAAA,CAAe;AAAA,sCACX,KAAK,QAAQ;AAAA;AAAA;AAAA,UAGzC,KAAK,WAAW,eACdA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAKmB,KAAK,QAAQ;AAAA,gDACI,KAAK,QAAQ;AAAA;AAAA,gCAE7B,KAAK,QAAQ;AAAA,sBAEjC,IAAI;AAAA;AAAA;AAAA,EAGd;AACF;AAxFEP,EAAO,SAASD;AAVX,IAAMS,IAANR;AACuBS,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GADfF,EACiB,WAAA,UAAA;AACAC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAFfF,EAEiB,WAAA,QAAA;AAKAC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAPfF,EAOiB,WAAA,UAAA;AACAC,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GARfF,EAQiB,WAAA,cAAA;AA4F9B,eAAe,OAAO,gBAAgBA,CAAW;;;;;;AClGjD,IAAIG,IAAqB;AASlB,MAAMC,IAAN,MAAMA,UAAqBX,EAAW;AAAA;AAAA,EAsE3C,cAAc;AACZ,UAAA,GAtE0B,KAAA,KAAK,IACU,KAAA,OAAO,IACtB,KAAA,QAAQ,IACR,KAAA,cAAc,IACb,KAAA,WAAW,IACZ,KAAA,SAAS,IACO,KAAA,WAAW,IACX,KAAA,WAAW,IACX,KAAA,WAAW,IACX,KAAA,YAAY,IAC5B,KAAA,eAAe,IACd,KAAA,WAAW,IACG,KAAA,QAAuB,QAIlE,KAAQ,iBAAqC,CAAA,GAC7C,KAAQ,cAAc,IAsDpB,KAAK,aAAa,KAAK,gBAAA;AAAA,EACzB;AAAA,EAtDA,IAAY,kBAA2B;AACrC,WAAO,KAAK,YAAa,CAAC,KAAK,YAAY,KAAK,eAAe,SAAS;AAAA,EAC1E;AAAA,EAEA,IAAY,mBAA2B;AACrC,WAAI,KAAK,eAAe,WAAW,IAC1B,KAAK,WAAW,mBAAmB,kBAGrC,KAAK,WAAW,mBAAmB;AAAA,EAC5C;AAAA,EAEA,IAAY,yBAAiC;AAC3C,QAAI,KAAK,eAAe,WAAW;AACjC,aAAO,GAAG,KAAK,QAAQ,MAAM,KAAK,WAAW;AAE/C,UAAMY,IAAkB,KAAK,eAAe;AAAA,MAC1C,CAACtB,MAASA,EAAK,WAAW;AAAA,IAAA;AAG5B,QAAIuB,IAAO;AAEX,QAAI,KAAK,eAAe,WAAW;AACjC,MAAAA,IAAO,qBAAqB,KAAK,eAAe,CAAC,EAAE,KAAK,IAAI;AAAA,SACvD;AACL,YAAMC,IAAY,KAAK,eAAe,IAAI,CAAC7B,MAAMA,EAAE,KAAK,IAAI,EAAE,KAAK,IAAI;AACvE,MAAA4B,IAAO,qBAAqB,KAAK,eAAe,MAAM,WAAWC,CAAS;AAAA,IAC5E;AAMA,WAAO,GAAGD,CAAI,GAJAD,IACV,wDACA,EAEkB;AAAA,EACxB;AAAA,EAEA,IAAY,kBAAsC;;AAChD,UAAMG,IAAY,KAAK,WAAW;AAAA,MAChC;AAAA,IAAA;AAKF,YAHoB3B,IAAA2B,KAAA,gBAAAA,EAAW,eAAX,gBAAA3B,EAAuB;AAAA,MACzC;AAAA;AAAA,EAGJ;AAAA;AAAA,EAaA,oBAAoB;AAClB,UAAM,kBAAA,GACD,KAAK,OACR,KAAK,KAAK,iBAAiB,KAAK,KAAK,IAAIsB,GAAoB,KAG/D,KAAK,iBAAiB,WAAW,KAAK,cAAc;AAAA,EACtD;AAAA,EAEA,uBAAuB;AACrB,UAAM,qBAAA,GACN,KAAK,oBAAoB,WAAW,KAAK,cAAc;AAAA,EACzD;AAAA,EAEA,eAAe;AAEb,SAAK,UAAA;AAAA,EACP;AAAA;AAAA,EAGQ,YAAY;;AAElB,QAAI,KAAK,UAAU;AACjB,YAAMM,IAAQ,KAAK,eAAe,IAAI,CAACC,MAAUA,EAAM,IAAI;AAE3D,UAAID,EAAM,SAAS,GAAG;AACpB,cAAME,IAAW,IAAI,SAAA;AACrB,QAAAF,EAAM,QAAQ,CAAC1B,MAAS;AACtB,UAAA4B,EAAS,OAAO,KAAK,MAAM5B,CAAI;AAAA,QACjC,CAAC,GACD,KAAK,WAAW,aAAa4B,CAAQ;AAAA,MACvC;AACE,aAAK,WAAW,aAAa,IAAI;AAAA,IAErC,OAAO;AACL,YAAMC,MAAa/B,IAAA,KAAK,eAAe,CAAC,MAArB,gBAAAA,EAAwB,SAAQ;AACnD,WAAK,WAAW,aAAa+B,CAAU;AAAA,IACzC;AAEA,SAAK,eAAA;AAAA,EACP;AAAA;AAAA,EAGQ,iBAAiB;;AACvB,UAAMC,KAAQhC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc;AAC7C,QAAI,CAACgC,EAAO;AAEZ,UAAMC,IAAU,KAAK,gBAAgB;AAGrC,IAFkB,KAAK,YAAY,KAAK,eAAe,UAAU,KAG/D,KAAK,WAAW,eAAe,QAC/B,KAAK,WAAW,YAAY,EAAE,cAAc,GAAA,GAAQA,GAASD,CAAK,MAElE,KAAK,WAAW,eAAe,SAC/B,KAAK,WAAW,YAAY,CAAA,GAAI,IAAIA,CAAK;AAAA,EAE7C;AAAA,EAEQ,oBAAoBC,IAAkB,IAAI;;AAChD,UAAMD,KAAQhC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc;AAC7C,IAAKgC,MAGL,KAAK,YAAYC,OAAa,KAAK,gBAAgB,2BAG/CC,IAAA,KAAK,iBAAL,QAAAA,EAAmB,UAAUD,MAAY,OAC3CA,IAAU,KAAK,eAGjB,KAAK,WAAW;AAAA,MACdA,IAAU,EAAE,aAAa,GAAA,IAAS,CAAA;AAAA,MAClCA;AAAA,MACAD;AAAA,IAAA;AAAA,EAEJ;AAAA,EAEQ,YAAY;AAClB,UAAMG,IAAgB,KAAK,eAAe;AAAA,MACxC,CAACN,MAAUA,EAAM,WAAW;AAAA,IAAA,GAExBO,IAAU,KAAK,YAAY,KAAK,eAAe,WAAW;AAEhE,QAAIH,IAAU;AACd,IAAIG,IACFH,IAAU,KAAK,gBAAgB,0BACtBE,MACTF,IAAU,mCAGZ,KAAK,oBAAoBA,CAAO;AAAA,EAClC;AAAA;AAAA,EAGA,gBAAyB;;AACvB,UAAMD,KAAQhC,IAAA,KAAK,eAAL,gBAAAA,EAAiB,cAAc;AAC7C,WAAOgC,IAAQA,EAAM,cAAA,IAAkB;AAAA,EACzC;AAAA,EAEQ,eAAeK,GAAc;AACnC,IAAAA,EAAM,eAAA,GACN,KAAK,UAAA;AAEL,UAAMC,IAAc,KAAK;AACzB,QAAIA,GAAa;AAEf,YAAMC,IAAO,KAAK,WAAW;AAC7B,MAAIA,IACe,MAAM,KAAKA,EAAK,QAAQ,EAIJ;AAAA,QACnC,CAACC,MACC,OAAOA,EAAQ,iBAAkB,cACjC,CAACA,EAAQ,cAAA;AAAA,MAAc,MAEC,SAC1BF,EAAY,MAAA,GACZA,EAAY,UAAU,IAAI,cAAc,MAI1CA,EAAY,MAAA,GACZA,EAAY,UAAU,IAAI,cAAc;AAAA,IAE5C;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,MAAc,mBAAmBpC,GAAY;AAM3C,QALoB,KAAK,eAAe;AAAA,MACtC,CAACuC,MAAiBA,EAAa,KAAK,QAAQvC,EAAK;AAAA,IAAA,KAI/C,CAAC,KAAK,YAAY,KAAK,eAAe,UAAU,EAAG;AAEvD,UAAM2B,IAA0B;AAAA,MAC9B,MAAA3B;AAAA,MACA,UAAU;AAAA,MACV,QAAQ;AAAA,IAAA;AAGV,SAAK,eAAe,KAAK2B,CAAK,GAC9B,MAAM,KAAK,aAAaA,CAAK,GAG7B,KAAK,UAAA,GACL,KAAK,UAAA;AAAA,EACP;AAAA;AAAA,EAGA,MAAc,aAAaA,GAAyB;AAClD,IAAAA,EAAM,SAAS;AAEf,QAAI;AAEF,UAAI,CADY,MAAM5B,EAAmB4B,EAAM,MAAM,KAAK,MAAM,GAClD;AACZ,QAAAA,EAAM,SAAS,SACfA,EAAM,WAAW,yBACjB,KAAK,cAAA;AACL;AAAA,MACF;AAEA,YAAMa,IAAS,IAAI,WAAA;AAEnB,MAAAA,EAAO,aAAa,CAAC5D,MAAM;AACzB,YAAIA,EAAE,kBAAkB;AACtB,gBAAM6D,IAAa,KAAK,MAAO7D,EAAE,SAAS,MAAOA,EAAE,KAAK;AACxD,UAAA+C,EAAM,WAAWc,GACjB,KAAK,cAAA;AAAA,QACP;AAAA,MACF,GAEAD,EAAO,SAAS,MAAM;AACpB,QAAAb,EAAM,WAAW,KACjBA,EAAM,SAAS,QACf,KAAK,cAAA;AAAA,MACP,GAEAa,EAAO,UAAU,MAAM;AACrB,QAAAb,EAAM,SAAS,SACfA,EAAM,WAAW,wBACjB,KAAK,cAAA;AAAA,MACP,GAEAa,EAAO,kBAAkBb,EAAM,IAAI;AAAA,IACrC,QAAQ;AACN,MAAAA,EAAM,SAAS,SACfA,EAAM,WAAW,0BACjB,KAAK,cAAA;AAAA,IACP;AAAA,EACF;AAAA,EAEQ,uBAAuB;AAC7B,SAAK;AAAA,MACH,IAAI,YAAY,cAAc;AAAA,QAC5B,QAAQ,EAAE,IAAI,KAAK,IAAI,OAAO,KAAK,eAAA;AAAA,QACnC,SAAS;AAAA,QACT,UAAU;AAAA,MAAA,CACX;AAAA,IAAA;AAAA,EAEL;AAAA,EAEQ,kBAAkB;AACxB,UAAMG,IAAQ,KAAK,WAAW;AAAA,MAC5B;AAAA,IAAA;AAGF,IAAAA,KAAA,QAAAA,EAAO;AAAA,EACT;AAAA,EAEQ,gCAAgC;AACtC,QAAI,KAAK,UAAU;AACjB,YAAMM,IAAc,KAAK;AAEzB,MAAIA,KACFA,EAAY,MAAA;AAAA,IAEhB;AACE,WAAK,gCAAA;AAAA,EAET;AAAA,EAEA,MAAc,kCAAkC;;AAC9C,QAAI,CAAC,KAAK,UAAU;AAClB,YAAM,KAAK;AACX,YAAMM,IAAW,KAAK,WAAW;AAAA,QAC/B;AAAA,MAAA,GAGIC,KAA6B7C,IAAA4C,KAAA,gBAAAA,EAAU,eAAV,gBAAA5C,EAAsB;AAAA,QACvD;AAAA;AAGF,MAAI6C,MACFA,EAA2B,aAAa,YAAY,IAAI,GACxDA,EAA2B,MAAA;AAAA,IAE/B;AAAA,EACF;AAAA;AAAA;AAAA,EAIQ,kBAAkB,GAAU;AAElC,UAAMjB,IADQ,EAAE,OACI;AAIpB,KAHiBA,IAAQ,MAAM,KAAKA,CAAK,IAAI,CAAA,GAGpC,IAAI,CAAC1B,MAAS;AACrB,WAAK,mBAAmBA,CAAI;AAAA,IAC9B,CAAC,GAED,KAAK,cAAA,GACL,KAAK,qBAAA,GACL,KAAK,8BAAA;AAAA,EACP;AAAA,EAEQ,kBAAkB,GAAgB;;AACxC,UAAM4C,IAAmB,EAAE,OAAO;AAOlC,QAJA,KAAK,iBAAiB,KAAK,eAAe;AAAA,MACxC,CAACL,MAAiBA,EAAa,KAAK,SAASK;AAAA,IAAA,GAG3C,KAAK,eAAe,WAAW,GAAG;AACpC,YAAMd,KAAQhC,IAAA,KAAK,eAAL,gBAAAA,EAAiB;AAAA,QAC7B;AAAA;AAEF,MAAIgC,QAAa,QAAQ;AAAA,IAC3B;AAEA,SAAK,UAAA,GACL,KAAK,UAAA,GAEL,KAAK,cAAA,GACL,KAAK,qBAAA;AAAA,EACP;AAAA,EAEQ,YAAY,GAAc;AAChC,IAAI,KAAK,aAET,EAAE,gBAAA,GACF,EAAE,eAAA,GACG,KAAK,gBACR,KAAK,cAAc,IACnB,KAAK,cAAA;AAAA,EAET;AAAA;AAAA,EAGQ,aAAa,GAAc;AACjC,IAAI,KAAK,aAET,EAAE,gBAAA,GACF,EAAE,eAAA,GAEE,EAAE,kBAAkB,EAAE,WACxB,KAAK,cAAc,IACnB,KAAK,cAAA;AAAA,EAET;AAAA,EAEQ,QAAQ,GAAc;;AAC5B,QAAI,KAAK,SAAU;AAEnB,MAAE,eAAA,GACF,KAAK,cAAc,IACnB,KAAK,cAAA;AAEL,UAAMJ,KAAQ5B,IAAA,EAAE,iBAAF,gBAAAA,EAAgB;AAC9B,QAAI,CAAC4B,EAAO;AAEZ,UAAMmB,IAAW,MAAM,KAAKnB,CAAK;AAEjC,IAAI,KAAK,WACPmB,EAAS,QAAQ,CAAC7C,MAAS;AACzB,WAAK,mBAAmBA,CAAI;AAAA,IAC9B,CAAC,IAED,KAAK,mBAAmB6C,EAAS,CAAC,CAAC,GAGrC,KAAK,cAAA,GACL,KAAK,qBAAA;AAAA,EACP;AAAA,EAEA,SAAS;AACP,WAAO7B;AAAA;AAAA,wBAEa,KAAK,iBAAiB;AAAA;AAAA;AAAA,cAGhC,KAAK,EAAE;AAAA,gBACL,KAAK,KAAK;AAAA,sBACJ,KAAK,WAAW;AAAA,eACvB,KAAK,WAAW,aAAa,KAAK,WAAW,aAAa,EAAE;AAAA;AAAA,sDAErB,KAAK,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAOvD,KAAK,IAAI;AAAA,oBACJ,KAAK,QAAQ;AAAA,iBAChB,KAAK,MAAM;AAAA,oBACR,KAAK,QAAQ;AAAA,oBACb,KAAK,YAChB,CAAC,KAAK,YAAY,KAAK,eAAe,SAAS,CAAE;AAAA,yBACjC,KAAK,QAAQ;AAAA;AAAA,kBAEpB,KAAK,iBAAiB;AAAA;AAAA;AAAA;AAAA,QAI/B,KAAK,WAYJA;AAAA;AAAA,cAEI,KAAK,cAAc,gBAAgB,EAAE;AAAA,cACrC,KAAK,kBAAkB,aAAa,EAAE;AAAA,cACtC,KAAK,aAAa,CAAC,KAAK,kBAAkB,UAAU,EAAE;AAAA,qBAC/C,KAAK,kBAAkB,OAAO,KAAK,eAAe;AAAA,uBAChD,CAAC,MACV,CAAC,KAAK,oBACL,EAAE,QAAQ,WAAW,EAAE,QAAQ,QAChC,KAAK,iBAAiB;AAAA,wBACZ,KAAK,kBAAkB,OAAO,KAAK,WAAW;AAAA,yBAC7C,KAAK,kBAAkB,OAAO,KAAK,YAAY;AAAA,oBACpD,KAAK,kBAAkB,OAAO,KAAK,OAAO;AAAA;AAAA;AAAA,cAGhD,KAAK,cACHA,gCACAA;AAAA,yBACS,KAAK,EAAE;AAAA;AAAA,4BAEJ,KAAK,WAAW,iBAAiB,aAAa;AAAA;AAAA,gCAE1C,KAAK,gBAAgB;AAAA,sCACf,KAAK,sBAAsB;AAAA,gCACjC,KAAK,eAAe;AAAA,+BACrB,CAAC,MAAa;AACvB,QAAE,gBAAA,GACF,KAAK,gBAAA;AAAA,IACP,CAAC;AAAA;AAAA,sCAEiB;AAAA,oBAzC5BA;AAAA,iBACO,KAAK,EAAE;AAAA;AAAA,oBAEJ,KAAK,WAAW,iBAAiB,aAAa;AAAA;AAAA,wBAE1C,KAAK,gBAAgB;AAAA,8BACf,KAAK,sBAAsB;AAAA,wBACjC,KAAK,YAChB,CAAC,KAAK,YAAY,KAAK,eAAe,SAAS,CAAE;AAAA,uBACvC,MAAM,KAAK,gBAAA,CAAiB;AAAA,yBAiClC;AAAA,QACT,KAAK,YACHA;AAAA;AAAA,2BAEiB,KAAK,SAAS;AAAA,6BACZ,KAAK,WAAW,qBAC/B,KAAK,YAAY;AAAA;AAAA,cAGrB,IAAI;AAAA,QACN,KAAK,eAAe,SAAS,IAC3BA;AAAA;AAAA,gBAEM,KAAK,eAAe;AAAA,MACpB,CAACW,MACCX;AAAA;AAAA,iCAEeW,EAAM,KAAK,IAAI;AAAA,+BACjBA,EAAM,MAAM;AAAA,iCACVA,EAAM,QAAQ;AAAA,qCACVA,EAAM,YAAY,EAAE;AAAA;AAAA;AAAA,IAAA,CAG1C;AAAA;AAAA,cAGL,IAAI;AAAA;AAAA,EAEZ;AACF;AAhfEN,EAAO,SAASb,GAqDhBa,EAAO,iBAAiB;AApEnB,IAAMyB,IAANzB;AACuBH,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GADf2B,EACiB,WAAA,IAAA;AACe5B,EAAA;AAAA,EAA1CC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAF9B2B,EAEgC,WAAA,MAAA;AACf5B,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAHf2B,EAGiB,WAAA,OAAA;AACA5B,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAJf2B,EAIiB,WAAA,aAAA;AACC5B,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GALhB2B,EAKkB,WAAA,UAAA;AACD5B,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GANf2B,EAMiB,WAAA,QAAA;AACgB5B,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAP/B2B,EAOiC,WAAA,UAAA;AACA5B,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAR/B2B,EAQiC,WAAA,UAAA;AACA5B,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAT/B2B,EASiC,WAAA,UAAA;AACA5B,EAAA;AAAA,EAA3CC,EAAS,EAAE,MAAM,SAAS,SAAS,IAAM;AAAA,GAV/B2B,EAUiC,WAAA,WAAA;AAChB5B,EAAA;AAAA,EAA3BC,EAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAXf2B,EAWiB,WAAA,cAAA;AACC5B,EAAA;AAAA,EAA5BC,EAAS,EAAE,MAAM,QAAA,CAAS;AAAA,GAZhB2B,EAYkB,WAAA,UAAA;AACc5B,EAAA;AAAA,EAA1CC,EAAS,EAAE,MAAM,QAAQ,SAAS,IAAM;AAAA,GAb9B2B,EAagC,WAAA,OAAA;AAofxC,eAAe,IAAI,eAAe,KACrC,eAAe,OAAO,iBAAiBA,CAAY;","x_google_ignoreList":[0,1,2]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nysds/nys-fileinput",
3
- "version": "1.6.0",
3
+ "version": "1.8.0",
4
4
  "description": "The Fileinput component from the NYS Design System.",
5
5
  "module": "dist/nys-fileinput.js",
6
6
  "types": "dist/index.d.ts",
@@ -25,10 +25,10 @@
25
25
  "lit": "^3.2.1"
26
26
  },
27
27
  "dependencies": {
28
- "@nysds/nys-icon": "^1.6.0",
29
- "@nysds/nys-button": "^1.6.0",
30
- "@nysds/nys-label": "^1.6.0",
31
- "@nysds/nys-errormessage": "^1.6.0"
28
+ "@nysds/nys-icon": "^1.8.0",
29
+ "@nysds/nys-button": "^1.8.0",
30
+ "@nysds/nys-label": "^1.8.0",
31
+ "@nysds/nys-errormessage": "^1.8.0"
32
32
  },
33
33
  "devDependencies": {
34
34
  "lit": "^3.2.1",