@nl-design-system-community/clippy-components 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/dist/clippy-button/index.d.ts +5 -4
  2. package/dist/clippy-button/index.d.ts.map +1 -1
  3. package/dist/clippy-button/index.js +7 -95
  4. package/dist/clippy-code/index.d.ts +3 -1
  5. package/dist/clippy-code/index.d.ts.map +1 -1
  6. package/dist/clippy-code/index.js +18 -14
  7. package/dist/clippy-color-combobox/index.d.ts +18 -17
  8. package/dist/clippy-color-combobox/index.d.ts.map +1 -1
  9. package/dist/clippy-color-combobox/index.js +5 -2
  10. package/dist/clippy-color-combobox/lib.d.ts +16 -12
  11. package/dist/clippy-color-combobox/lib.d.ts.map +1 -1
  12. package/dist/clippy-color-combobox/messages/en.d.ts +14 -6
  13. package/dist/clippy-color-combobox/messages/en.d.ts.map +1 -1
  14. package/dist/clippy-color-combobox/messages/nl.d.ts +14 -6
  15. package/dist/clippy-color-combobox/messages/nl.d.ts.map +1 -1
  16. package/dist/clippy-combobox/index.d.ts +26 -11
  17. package/dist/clippy-combobox/index.d.ts.map +1 -1
  18. package/dist/clippy-combobox/index.js +613 -294
  19. package/dist/clippy-font-combobox/index.d.ts +9 -3
  20. package/dist/clippy-font-combobox/index.d.ts.map +1 -1
  21. package/dist/clippy-font-combobox/index.js +100 -46
  22. package/dist/clippy-heading/index.d.ts +14 -0
  23. package/dist/clippy-heading/index.d.ts.map +1 -0
  24. package/dist/clippy-heading/index.js +268 -0
  25. package/dist/clippy-html-image/index.d.ts.map +1 -1
  26. package/dist/clippy-html-image/index.js +51 -28
  27. package/dist/clippy-icon/index.d.ts.map +1 -1
  28. package/dist/clippy-icon/index.js +22 -16
  29. package/dist/clippy-lang-combobox/index.d.ts +41 -0
  30. package/dist/clippy-lang-combobox/index.d.ts.map +1 -0
  31. package/dist/clippy-lang-combobox/index.js +316 -0
  32. package/dist/clippy-lang-combobox/languages.d.ts +202 -0
  33. package/dist/clippy-lang-combobox/languages.d.ts.map +1 -0
  34. package/dist/clippy-modal/index.d.ts +3 -3
  35. package/dist/clippy-modal/index.d.ts.map +1 -1
  36. package/dist/clippy-modal/index.js +103 -78
  37. package/dist/clippy-toggletip/index.d.ts +16 -0
  38. package/dist/clippy-toggletip/index.d.ts.map +1 -0
  39. package/dist/clippy-toggletip/index.js +180 -0
  40. package/dist/decorators-Cq82_-g_.js +11 -0
  41. package/dist/en-D1kE0w6o.js +4 -0
  42. package/dist/external-BCrp-PaG.js +4 -0
  43. package/dist/index-7tZ2Ykfm.js +135 -0
  44. package/dist/index-C9pF3BXT.js +10683 -0
  45. package/dist/lib/{FormField → FormElement}/index.d.ts +2 -1
  46. package/dist/lib/FormElement/index.d.ts.map +1 -0
  47. package/dist/lib/FormElement/index.js +95 -0
  48. package/dist/lib/LocalizationMixin/index.d.ts +29 -0
  49. package/dist/lib/LocalizationMixin/index.d.ts.map +1 -0
  50. package/dist/lib/LocalizationMixin/index.js +64 -0
  51. package/dist/lib/converters/index.d.ts +5 -0
  52. package/dist/lib/converters/index.d.ts.map +1 -1
  53. package/dist/lib/converters/index.js +35 -0
  54. package/dist/lib/decorators.d.ts +12 -0
  55. package/dist/lib/decorators.d.ts.map +1 -0
  56. package/dist/lib/sr-only/index.d.ts +3 -0
  57. package/dist/lib/sr-only/index.d.ts.map +1 -0
  58. package/dist/lib/sr-only/index.js +18 -0
  59. package/dist/nl-99gBQbne.js +19 -0
  60. package/package.json +21 -16
  61. package/dist/en-DR1i85jp.js +0 -4
  62. package/dist/external-GSP7IGqN.js +0 -4
  63. package/dist/index-C_dkFbzv.js +0 -3616
  64. package/dist/lib/FormField/index.d.ts.map +0 -1
  65. package/dist/nl-CJG2-yS5.js +0 -11
@@ -1,7 +1,8 @@
1
1
  import { ClippyCombobox } from '../clippy-combobox';
2
2
  type Option = {
3
3
  label: string;
4
- value: string | Array<string>;
4
+ value: string[];
5
+ description?: string;
5
6
  cssUrl?: string;
6
7
  };
7
8
  declare const tag = "clippy-font-combobox";
@@ -12,10 +13,15 @@ declare global {
12
13
  }
13
14
  export declare class ClippyFontCombobox extends ClippyCombobox<Option> {
14
15
  #private;
16
+ allow: (typeof ClippyCombobox.allowances)[number];
15
17
  readonly listboxElement?: Element;
18
+ set value(value: Option['value'] | null);
19
+ get value(): Option['value'] | null;
16
20
  fetchAdditionalOptions(query: string): Promise<Option[]>;
17
- valueToQuery(value: Option['value']): string;
18
- renderEntry(option: Option, _index: number): import('lit').TemplateResult<1>;
21
+ valueToQuery(value: Option['value'] | null): string;
22
+ queryToValue(query: string): string[];
23
+ getOptionForValue(value: Option['value'] | null): Option | undefined;
24
+ renderEntry({ cssUrl, description, label, value }: Option, index: number): import('lit').TemplateResult<1>;
19
25
  }
20
26
  export {};
21
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-font-combobox/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,QAAA,MAAM,GAAG,yBAAyB,CAAC;AAEnC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC;KAC3B;CACF;AAED,qBACa,kBAAmB,SAAQ,cAAc,CAAC,MAAM,CAAC;;IAI5D,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEnB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgC9D,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM;IAI5C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAWpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-font-combobox/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGpD,KAAK,MAAM,GAAG;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAKF,QAAA,MAAM,GAAG,yBAAyB,CAAC;AAEnC,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC;KAC3B;CACF;AAED,qBACa,kBAAmB,SAAQ,cAAc,CAAC,MAAM,CAAC;;IAEnD,KAAK,EAAE,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAoB;IAI9E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAElC,IACa,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,EAG/C;IAED,IAAa,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAE3C;IAEc,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAiC9D,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM;IAOnD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAKrC,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS;IAIpE,WAAW,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAalF"}
@@ -1,58 +1,112 @@
1
- import { html as _ } from "lit";
2
- import { query as b, customElement as w } from "lit/decorators.js";
3
- import { ref as E } from "lit/directives/ref.js";
4
- import { styleMap as x } from "lit/directives/style-map.js";
5
- import { ClippyCombobox as C } from "../clippy-combobox/index.js";
6
- var A = Object.defineProperty, O = Object.getOwnPropertyDescriptor, m = (t) => {
7
- throw TypeError(t);
8
- }, u = (t, e, r, o) => {
9
- for (var s = o > 1 ? void 0 : o ? O(e, r) : e, i = t.length - 1, n; i >= 0; i--)
10
- (n = t[i]) && (s = (o ? n(e, r, s) : n(s)) || s);
11
- return o && s && A(e, r, s), s;
12
- }, y = (t, e, r) => e.has(t) || m("Cannot " + r), a = (t, e, r) => (y(t, e, "read from private field"), r ? r.call(t) : e.get(t)), p = (t, e, r) => e.has(t) ? m("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, r), v = (t, e, r, o) => (y(t, e, "write to private field"), e.set(t, r), r), c, l, f;
13
- const g = "clippy-font-combobox";
14
- let h = class extends C {
1
+ import { s as safeCustomElement } from "../decorators-Cq82_-g_.js";
2
+ import { nothing, html } from "lit";
3
+ import { property, query } from "lit/decorators.js";
4
+ import { ifDefined } from "lit/directives/if-defined.js";
5
+ import { ref } from "lit/directives/ref.js";
6
+ import { styleMap } from "lit/directives/style-map.js";
7
+ import { ClippyCombobox } from "../clippy-combobox/index.js";
8
+ import { allowedValuesConverter, arrayFromCommaList } from "../lib/converters/index.js";
9
+ var __defProp = Object.defineProperty;
10
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11
+ var __typeError = (msg) => {
12
+ throw TypeError(msg);
13
+ };
14
+ var __decorateClass = (decorators, target, key, kind) => {
15
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
16
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
17
+ if (decorator = decorators[i])
18
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
19
+ if (kind && result) __defProp(target, key, result);
20
+ return result;
21
+ };
22
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
25
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
26
+ var _additional, _intersectionObserver, _loadFontsInView;
27
+ const defaultAllowance = "other";
28
+ const tag = "clippy-font-combobox";
29
+ let ClippyFontCombobox = class extends ClippyCombobox {
15
30
  constructor() {
16
- super(...arguments), p(this, c), p(this, l), p(this, f, (t) => {
17
- for (const e of t) {
18
- const { intersectionRatio: r, target: o } = e;
19
- if (r > 0 && o instanceof HTMLElement) {
20
- const s = o.dataset.cssUrl || "", i = document.querySelector(`[href="${s}"]`);
21
- if (s && !i) {
22
- const n = document.createElement("link");
23
- n.setAttribute("rel", "stylesheet"), n.setAttribute("href", s), document.head.appendChild(n);
31
+ super(...arguments);
32
+ this.allow = defaultAllowance;
33
+ __privateAdd(this, _additional);
34
+ __privateAdd(this, _intersectionObserver);
35
+ __privateAdd(this, _loadFontsInView, (entries) => {
36
+ for (const entry of entries) {
37
+ const { intersectionRatio, target } = entry;
38
+ if (intersectionRatio > 0 && target instanceof HTMLElement) {
39
+ const cssUrl = target.dataset["cssUrl"] || "";
40
+ const stylesheets = document.querySelector(`[href="${cssUrl}"]`);
41
+ if (cssUrl && !stylesheets) {
42
+ const link = document.createElement("link");
43
+ link.setAttribute("rel", "stylesheet");
44
+ link.setAttribute("href", cssUrl);
45
+ document.head.appendChild(link);
24
46
  }
25
- a(this, l)?.unobserve(o);
47
+ __privateGet(this, _intersectionObserver)?.unobserve(target);
26
48
  }
27
49
  }
28
50
  });
29
51
  }
30
- async fetchAdditionalOptions(t) {
31
- v(this, c, a(this, c) ?? await import("../external-GSP7IGqN.js").then(({ default: r }) => r));
32
- const e = a(this, c).filter((r) => r.label.includes(t));
33
- return e.length && v(this, l, a(this, l) ?? new IntersectionObserver(a(this, f), {
34
- root: this.listboxElement
35
- })), e;
52
+ set value(value) {
53
+ super.value = value;
54
+ this.query = this.valueToQuery(value);
55
+ }
56
+ get value() {
57
+ return super.value;
58
+ }
59
+ async fetchAdditionalOptions(query2) {
60
+ __privateSet(this, _additional, __privateGet(this, _additional) ?? await import("../external-BCrp-PaG.js").then(({ default: items }) => items));
61
+ const filter = this.filter(query2);
62
+ const options = __privateGet(this, _additional).filter(filter);
63
+ if (options.length) {
64
+ __privateSet(this, _intersectionObserver, __privateGet(this, _intersectionObserver) ?? new IntersectionObserver(__privateGet(this, _loadFontsInView), {
65
+ root: this.listboxElement
66
+ }));
67
+ }
68
+ return options;
36
69
  }
37
- valueToQuery(t) {
38
- return Array.isArray(t) ? t[0] : t.split(",")[0];
70
+ valueToQuery(value) {
71
+ if (value === null) {
72
+ return "";
73
+ }
74
+ return Array.isArray(value) ? value[0] : value;
39
75
  }
40
- renderEntry(t, e) {
41
- const { cssUrl: r, label: o, value: s } = t, i = { fontFamily: s.toString(), fontSizeAdjust: 0.5 };
42
- return _`<span ${E((d) => {
43
- d && a(this, l) && a(this, l).observe(d);
44
- })} style=${x(i)} data-css-url=${r}> ${o} </span>`;
76
+ queryToValue(query2) {
77
+ return this.options.find((option) => option.value[0] === query2)?.value ?? [query2];
78
+ }
79
+ getOptionForValue(value) {
80
+ return this.options.find((option) => option.value.every((entry, index) => value?.[index] === entry));
81
+ }
82
+ renderEntry({ cssUrl, description, label, value }, index) {
83
+ const styles = { fontFamily: value.toString(), fontSizeAdjust: 0.5 };
84
+ const observeElement = (element) => {
85
+ if (element && __privateGet(this, _intersectionObserver)) {
86
+ __privateGet(this, _intersectionObserver).observe(element);
87
+ }
88
+ };
89
+ return html`
90
+ <div ${ref(observeElement)} style=${styleMap(styles)} data-css-url=${ifDefined(cssUrl)}>${label}</div>
91
+ ${description && index !== void 0 ? html`<div>${description}</div>` : nothing}
92
+ `;
45
93
  }
46
94
  };
47
- c = /* @__PURE__ */ new WeakMap();
48
- l = /* @__PURE__ */ new WeakMap();
49
- f = /* @__PURE__ */ new WeakMap();
50
- u([
51
- b("[role=listbox]")
52
- ], h.prototype, "listboxElement", 2);
53
- h = u([
54
- w(g)
55
- ], h);
95
+ _additional = /* @__PURE__ */ new WeakMap();
96
+ _intersectionObserver = /* @__PURE__ */ new WeakMap();
97
+ _loadFontsInView = /* @__PURE__ */ new WeakMap();
98
+ __decorateClass([
99
+ property({ converter: allowedValuesConverter(ClippyCombobox.allowances, defaultAllowance) })
100
+ ], ClippyFontCombobox.prototype, "allow", 2);
101
+ __decorateClass([
102
+ query("[role=listbox]")
103
+ ], ClippyFontCombobox.prototype, "listboxElement", 2);
104
+ __decorateClass([
105
+ property({ converter: arrayFromCommaList })
106
+ ], ClippyFontCombobox.prototype, "value", 1);
107
+ ClippyFontCombobox = __decorateClass([
108
+ safeCustomElement(tag)
109
+ ], ClippyFontCombobox);
56
110
  export {
57
- h as ClippyFontCombobox
111
+ ClippyFontCombobox
58
112
  };
@@ -0,0 +1,14 @@
1
+ import { LitElement } from 'lit';
2
+ declare const tag = "clippy-heading";
3
+ export declare class ClippyHeading extends LitElement {
4
+ level: number;
5
+ static readonly styles: import('lit').CSSResult[];
6
+ render(): import('lit').TemplateResult;
7
+ }
8
+ declare global {
9
+ interface HTMLElementTagNameMap {
10
+ [tag]: ClippyHeading;
11
+ }
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-heading/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAa,MAAM,KAAK,CAAC;AAI5C,QAAA,MAAM,GAAG,mBAAmB,CAAC;AAE7B,qBACa,aAAc,SAAQ,UAAU;IACf,KAAK,SAAK;IAEtC,gBAAyB,MAAM,4BAA2B;IAEjD,MAAM;CAKhB;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC;KACtB;CACF"}
@@ -0,0 +1,268 @@
1
+ import { s as safeCustomElement } from "../decorators-Cq82_-g_.js";
2
+ import { unsafeCSS, LitElement } from "lit";
3
+ import { property } from "lit/decorators.js";
4
+ const headingCss = ".nl-heading{break-after:avoid;break-inside:avoid}.nl-heading--level-1{color:var(--nl-heading-level-1-color, inherit);font-family:var(--nl-heading-level-1-font-family);font-size:var(--nl-heading-level-1-font-size, revert);font-weight:var(--nl-heading-level-1-font-weight, bold);line-height:var(--nl-heading-level-1-line-height);margin-block-end:var(--nl-heading-level-1-margin-block-end, revert);margin-block-start:var(--nl-heading-level-1-margin-block-start, revert)}.nl-heading--level-2{color:var(--nl-heading-level-2-color, inherit);font-family:var(--nl-heading-level-2-font-family);font-size:var(--nl-heading-level-2-font-size, revert);font-weight:var(--nl-heading-level-2-font-weight, bold);line-height:var(--nl-heading-level-2-line-height);margin-block-end:var(--nl-heading-level-2-margin-block-end, revert);margin-block-start:var(--nl-heading-level-2-margin-block-start, revert)}.nl-heading--level-3{color:var(--nl-heading-level-3-color, inherit);font-family:var(--nl-heading-level-3-font-family);font-size:var(--nl-heading-level-3-font-size, revert);font-weight:var(--nl-heading-level-3-font-weight, bold);line-height:var(--nl-heading-level-3-line-height);margin-block-end:var(--nl-heading-level-3-margin-block-end, revert);margin-block-start:var(--nl-heading-level-3-margin-block-start, revert)}.nl-heading--level-4{color:var(--nl-heading-level-4-color, inherit);font-family:var(--nl-heading-level-4-font-family);font-size:var(--nl-heading-level-4-font-size, revert);font-weight:var(--nl-heading-level-4-font-weight, bold);line-height:var(--nl-heading-level-4-line-height);margin-block-end:var(--nl-heading-level-4-margin-block-end, revert);margin-block-start:var(--nl-heading-level-4-margin-block-start, revert)}.nl-heading--level-5{color:var(--nl-heading-level-5-color, inherit);font-family:var(--nl-heading-level-5-font-family);font-size:var(--nl-heading-level-5-font-size, revert);font-weight:var(--nl-heading-level-5-font-weight, bold);line-height:var(--nl-heading-level-5-line-height);margin-block-end:var(--nl-heading-level-5-margin-block-end, revert);margin-block-start:var(--nl-heading-level-5-margin-block-start, revert)}.nl-heading--level-6{color:var(--nl-heading-level-6-color, inherit);font-family:var(--nl-heading-level-6-font-family);font-size:var(--nl-heading-level-6-font-size, revert);font-weight:var(--nl-heading-level-6-font-weight, bold);line-height:var(--nl-heading-level-6-line-height);margin-block-end:var(--nl-heading-level-6-margin-block-end, revert);margin-block-start:var(--nl-heading-level-6-margin-block-start, revert)}/*# sourceMappingURL=heading.css.map */\n";
5
+ const t = globalThis, i = (t2) => t2, s$1 = t.trustedTypes, e = s$1 ? s$1.createPolicy("lit-html", { createHTML: (t2) => t2 }) : void 0, h = "$lit$", o$1 = `lit$${Math.random().toFixed(9).slice(2)}$`, n$1 = "?" + o$1, r = `<${n$1}>`, l$1 = document, c = () => l$1.createComment(""), a$1 = (t2) => null === t2 || "object" != typeof t2 && "function" != typeof t2, u$1 = Array.isArray, d = (t2) => u$1(t2) || "function" == typeof t2?.[Symbol.iterator], f = "[ \n\f\r]", v = /<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g, _ = /-->/g, m = />/g, p = RegExp(`>|${f}(?:([^\\s"'>=/]+)(${f}*=${f}*(?:[^
6
+ \f\r"'\`<>=]|("|')|))|$)`, "g"), g = /'/g, $ = /"/g, y = /^(?:script|style|textarea|title)$/i, x = (t2) => (i2, ...s2) => ({ _$litType$: t2, strings: i2, values: s2 }), b = x(1), E = /* @__PURE__ */ Symbol.for("lit-noChange"), A = /* @__PURE__ */ Symbol.for("lit-nothing"), C = /* @__PURE__ */ new WeakMap(), P = l$1.createTreeWalker(l$1, 129);
7
+ function V(t2, i2) {
8
+ if (!u$1(t2) || !t2.hasOwnProperty("raw")) throw Error("invalid template strings array");
9
+ return void 0 !== e ? e.createHTML(i2) : i2;
10
+ }
11
+ const N = (t2, i2) => {
12
+ const s2 = t2.length - 1, e2 = [];
13
+ let n2, l2 = 2 === i2 ? "<svg>" : 3 === i2 ? "<math>" : "", c2 = v;
14
+ for (let i3 = 0; i3 < s2; i3++) {
15
+ const s3 = t2[i3];
16
+ let a2, u2, d2 = -1, f2 = 0;
17
+ for (; f2 < s3.length && (c2.lastIndex = f2, u2 = c2.exec(s3), null !== u2); ) f2 = c2.lastIndex, c2 === v ? "!--" === u2[1] ? c2 = _ : void 0 !== u2[1] ? c2 = m : void 0 !== u2[2] ? (y.test(u2[2]) && (n2 = RegExp("</" + u2[2], "g")), c2 = p) : void 0 !== u2[3] && (c2 = p) : c2 === p ? ">" === u2[0] ? (c2 = n2 ?? v, d2 = -1) : void 0 === u2[1] ? d2 = -2 : (d2 = c2.lastIndex - u2[2].length, a2 = u2[1], c2 = void 0 === u2[3] ? p : '"' === u2[3] ? $ : g) : c2 === $ || c2 === g ? c2 = p : c2 === _ || c2 === m ? c2 = v : (c2 = p, n2 = void 0);
18
+ const x2 = c2 === p && t2[i3 + 1].startsWith("/>") ? " " : "";
19
+ l2 += c2 === v ? s3 + r : d2 >= 0 ? (e2.push(a2), s3.slice(0, d2) + h + s3.slice(d2) + o$1 + x2) : s3 + o$1 + (-2 === d2 ? i3 : x2);
20
+ }
21
+ return [V(t2, l2 + (t2[s2] || "<?>") + (2 === i2 ? "</svg>" : 3 === i2 ? "</math>" : "")), e2];
22
+ };
23
+ class S {
24
+ constructor({ strings: t2, _$litType$: i2 }, e2) {
25
+ let r2;
26
+ this.parts = [];
27
+ let l2 = 0, a2 = 0;
28
+ const u2 = t2.length - 1, d2 = this.parts, [f2, v2] = N(t2, i2);
29
+ if (this.el = S.createElement(f2, e2), P.currentNode = this.el.content, 2 === i2 || 3 === i2) {
30
+ const t3 = this.el.content.firstChild;
31
+ t3.replaceWith(...t3.childNodes);
32
+ }
33
+ for (; null !== (r2 = P.nextNode()) && d2.length < u2; ) {
34
+ if (1 === r2.nodeType) {
35
+ if (r2.hasAttributes()) for (const t3 of r2.getAttributeNames()) if (t3.endsWith(h)) {
36
+ const i3 = v2[a2++], s2 = r2.getAttribute(t3).split(o$1), e3 = /([.?@])?(.*)/.exec(i3);
37
+ d2.push({ type: 1, index: l2, name: e3[2], strings: s2, ctor: "." === e3[1] ? I : "?" === e3[1] ? L : "@" === e3[1] ? z : H }), r2.removeAttribute(t3);
38
+ } else t3.startsWith(o$1) && (d2.push({ type: 6, index: l2 }), r2.removeAttribute(t3));
39
+ if (y.test(r2.tagName)) {
40
+ const t3 = r2.textContent.split(o$1), i3 = t3.length - 1;
41
+ if (i3 > 0) {
42
+ r2.textContent = s$1 ? s$1.emptyScript : "";
43
+ for (let s2 = 0; s2 < i3; s2++) r2.append(t3[s2], c()), P.nextNode(), d2.push({ type: 2, index: ++l2 });
44
+ r2.append(t3[i3], c());
45
+ }
46
+ }
47
+ } else if (8 === r2.nodeType) if (r2.data === n$1) d2.push({ type: 2, index: l2 });
48
+ else {
49
+ let t3 = -1;
50
+ for (; -1 !== (t3 = r2.data.indexOf(o$1, t3 + 1)); ) d2.push({ type: 7, index: l2 }), t3 += o$1.length - 1;
51
+ }
52
+ l2++;
53
+ }
54
+ }
55
+ static createElement(t2, i2) {
56
+ const s2 = l$1.createElement("template");
57
+ return s2.innerHTML = t2, s2;
58
+ }
59
+ }
60
+ function M(t2, i2, s2 = t2, e2) {
61
+ if (i2 === E) return i2;
62
+ let h2 = void 0 !== e2 ? s2._$Co?.[e2] : s2._$Cl;
63
+ const o2 = a$1(i2) ? void 0 : i2._$litDirective$;
64
+ return h2?.constructor !== o2 && (h2?._$AO?.(false), void 0 === o2 ? h2 = void 0 : (h2 = new o2(t2), h2._$AT(t2, s2, e2)), void 0 !== e2 ? (s2._$Co ??= [])[e2] = h2 : s2._$Cl = h2), void 0 !== h2 && (i2 = M(t2, h2._$AS(t2, i2.values), h2, e2)), i2;
65
+ }
66
+ class R {
67
+ constructor(t2, i2) {
68
+ this._$AV = [], this._$AN = void 0, this._$AD = t2, this._$AM = i2;
69
+ }
70
+ get parentNode() {
71
+ return this._$AM.parentNode;
72
+ }
73
+ get _$AU() {
74
+ return this._$AM._$AU;
75
+ }
76
+ u(t2) {
77
+ const { el: { content: i2 }, parts: s2 } = this._$AD, e2 = (t2?.creationScope ?? l$1).importNode(i2, true);
78
+ P.currentNode = e2;
79
+ let h2 = P.nextNode(), o2 = 0, n2 = 0, r2 = s2[0];
80
+ for (; void 0 !== r2; ) {
81
+ if (o2 === r2.index) {
82
+ let i3;
83
+ 2 === r2.type ? i3 = new k(h2, h2.nextSibling, this, t2) : 1 === r2.type ? i3 = new r2.ctor(h2, r2.name, r2.strings, this, t2) : 6 === r2.type && (i3 = new Z(h2, this, t2)), this._$AV.push(i3), r2 = s2[++n2];
84
+ }
85
+ o2 !== r2?.index && (h2 = P.nextNode(), o2++);
86
+ }
87
+ return P.currentNode = l$1, e2;
88
+ }
89
+ p(t2) {
90
+ let i2 = 0;
91
+ for (const s2 of this._$AV) void 0 !== s2 && (void 0 !== s2.strings ? (s2._$AI(t2, s2, i2), i2 += s2.strings.length - 2) : s2._$AI(t2[i2])), i2++;
92
+ }
93
+ }
94
+ class k {
95
+ get _$AU() {
96
+ return this._$AM?._$AU ?? this._$Cv;
97
+ }
98
+ constructor(t2, i2, s2, e2) {
99
+ this.type = 2, this._$AH = A, this._$AN = void 0, this._$AA = t2, this._$AB = i2, this._$AM = s2, this.options = e2, this._$Cv = e2?.isConnected ?? true;
100
+ }
101
+ get parentNode() {
102
+ let t2 = this._$AA.parentNode;
103
+ const i2 = this._$AM;
104
+ return void 0 !== i2 && 11 === t2?.nodeType && (t2 = i2.parentNode), t2;
105
+ }
106
+ get startNode() {
107
+ return this._$AA;
108
+ }
109
+ get endNode() {
110
+ return this._$AB;
111
+ }
112
+ _$AI(t2, i2 = this) {
113
+ t2 = M(this, t2, i2), a$1(t2) ? t2 === A || null == t2 || "" === t2 ? (this._$AH !== A && this._$AR(), this._$AH = A) : t2 !== this._$AH && t2 !== E && this._(t2) : void 0 !== t2._$litType$ ? this.$(t2) : void 0 !== t2.nodeType ? this.T(t2) : d(t2) ? this.k(t2) : this._(t2);
114
+ }
115
+ O(t2) {
116
+ return this._$AA.parentNode.insertBefore(t2, this._$AB);
117
+ }
118
+ T(t2) {
119
+ this._$AH !== t2 && (this._$AR(), this._$AH = this.O(t2));
120
+ }
121
+ _(t2) {
122
+ this._$AH !== A && a$1(this._$AH) ? this._$AA.nextSibling.data = t2 : this.T(l$1.createTextNode(t2)), this._$AH = t2;
123
+ }
124
+ $(t2) {
125
+ const { values: i2, _$litType$: s2 } = t2, e2 = "number" == typeof s2 ? this._$AC(t2) : (void 0 === s2.el && (s2.el = S.createElement(V(s2.h, s2.h[0]), this.options)), s2);
126
+ if (this._$AH?._$AD === e2) this._$AH.p(i2);
127
+ else {
128
+ const t3 = new R(e2, this), s3 = t3.u(this.options);
129
+ t3.p(i2), this.T(s3), this._$AH = t3;
130
+ }
131
+ }
132
+ _$AC(t2) {
133
+ let i2 = C.get(t2.strings);
134
+ return void 0 === i2 && C.set(t2.strings, i2 = new S(t2)), i2;
135
+ }
136
+ k(t2) {
137
+ u$1(this._$AH) || (this._$AH = [], this._$AR());
138
+ const i2 = this._$AH;
139
+ let s2, e2 = 0;
140
+ for (const h2 of t2) e2 === i2.length ? i2.push(s2 = new k(this.O(c()), this.O(c()), this, this.options)) : s2 = i2[e2], s2._$AI(h2), e2++;
141
+ e2 < i2.length && (this._$AR(s2 && s2._$AB.nextSibling, e2), i2.length = e2);
142
+ }
143
+ _$AR(t2 = this._$AA.nextSibling, s2) {
144
+ for (this._$AP?.(false, true, s2); t2 !== this._$AB; ) {
145
+ const s3 = i(t2).nextSibling;
146
+ i(t2).remove(), t2 = s3;
147
+ }
148
+ }
149
+ setConnected(t2) {
150
+ void 0 === this._$AM && (this._$Cv = t2, this._$AP?.(t2));
151
+ }
152
+ }
153
+ class H {
154
+ get tagName() {
155
+ return this.element.tagName;
156
+ }
157
+ get _$AU() {
158
+ return this._$AM._$AU;
159
+ }
160
+ constructor(t2, i2, s2, e2, h2) {
161
+ this.type = 1, this._$AH = A, this._$AN = void 0, this.element = t2, this.name = i2, this._$AM = e2, this.options = h2, s2.length > 2 || "" !== s2[0] || "" !== s2[1] ? (this._$AH = Array(s2.length - 1).fill(new String()), this.strings = s2) : this._$AH = A;
162
+ }
163
+ _$AI(t2, i2 = this, s2, e2) {
164
+ const h2 = this.strings;
165
+ let o2 = false;
166
+ if (void 0 === h2) t2 = M(this, t2, i2, 0), o2 = !a$1(t2) || t2 !== this._$AH && t2 !== E, o2 && (this._$AH = t2);
167
+ else {
168
+ const e3 = t2;
169
+ let n2, r2;
170
+ for (t2 = h2[0], n2 = 0; n2 < h2.length - 1; n2++) r2 = M(this, e3[s2 + n2], i2, n2), r2 === E && (r2 = this._$AH[n2]), o2 ||= !a$1(r2) || r2 !== this._$AH[n2], r2 === A ? t2 = A : t2 !== A && (t2 += (r2 ?? "") + h2[n2 + 1]), this._$AH[n2] = r2;
171
+ }
172
+ o2 && !e2 && this.j(t2);
173
+ }
174
+ j(t2) {
175
+ t2 === A ? this.element.removeAttribute(this.name) : this.element.setAttribute(this.name, t2 ?? "");
176
+ }
177
+ }
178
+ class I extends H {
179
+ constructor() {
180
+ super(...arguments), this.type = 3;
181
+ }
182
+ j(t2) {
183
+ this.element[this.name] = t2 === A ? void 0 : t2;
184
+ }
185
+ }
186
+ class L extends H {
187
+ constructor() {
188
+ super(...arguments), this.type = 4;
189
+ }
190
+ j(t2) {
191
+ this.element.toggleAttribute(this.name, !!t2 && t2 !== A);
192
+ }
193
+ }
194
+ class z extends H {
195
+ constructor(t2, i2, s2, e2, h2) {
196
+ super(t2, i2, s2, e2, h2), this.type = 5;
197
+ }
198
+ _$AI(t2, i2 = this) {
199
+ if ((t2 = M(this, t2, i2, 0) ?? A) === E) return;
200
+ const s2 = this._$AH, e2 = t2 === A && s2 !== A || t2.capture !== s2.capture || t2.once !== s2.once || t2.passive !== s2.passive, h2 = t2 !== A && (s2 === A || e2);
201
+ e2 && this.element.removeEventListener(this.name, this, s2), h2 && this.element.addEventListener(this.name, this, t2), this._$AH = t2;
202
+ }
203
+ handleEvent(t2) {
204
+ "function" == typeof this._$AH ? this._$AH.call(this.options?.host ?? this.element, t2) : this._$AH.handleEvent(t2);
205
+ }
206
+ }
207
+ class Z {
208
+ constructor(t2, i2, s2) {
209
+ this.element = t2, this.type = 6, this._$AN = void 0, this._$AM = i2, this.options = s2;
210
+ }
211
+ get _$AU() {
212
+ return this._$AM._$AU;
213
+ }
214
+ _$AI(t2) {
215
+ M(this, t2);
216
+ }
217
+ }
218
+ const B = t.litHtmlPolyfillSupport;
219
+ B?.(S, k), (t.litHtmlVersions ??= []).push("3.3.2");
220
+ const a = /* @__PURE__ */ Symbol.for(""), o = (t2) => {
221
+ if (t2?.r === a) return t2?._$litStatic$;
222
+ }, s = (t2) => ({ _$litStatic$: t2, r: a }), l = /* @__PURE__ */ new Map(), n = (t2) => (r2, ...e2) => {
223
+ const a2 = e2.length;
224
+ let s2, i2;
225
+ const n2 = [], u2 = [];
226
+ let c2, $2 = 0, f2 = false;
227
+ for (; $2 < a2; ) {
228
+ for (c2 = r2[$2]; $2 < a2 && void 0 !== (i2 = e2[$2], s2 = o(i2)); ) c2 += s2 + r2[++$2], f2 = true;
229
+ $2 !== a2 && u2.push(i2), n2.push(c2), $2++;
230
+ }
231
+ if ($2 === a2 && n2.push(r2[a2]), f2) {
232
+ const t3 = n2.join("$$lit$$");
233
+ void 0 === (r2 = l.get(t3)) && (n2.raw = n2, l.set(t3, r2 = n2)), e2 = u2;
234
+ }
235
+ return t2(r2, ...e2);
236
+ }, u = n(b);
237
+ var __defProp = Object.defineProperty;
238
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
239
+ var __decorateClass = (decorators, target, key, kind) => {
240
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
241
+ for (var i2 = decorators.length - 1, decorator; i2 >= 0; i2--)
242
+ if (decorator = decorators[i2])
243
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
244
+ if (kind && result) __defProp(target, key, result);
245
+ return result;
246
+ };
247
+ const tag = "clippy-heading";
248
+ let ClippyHeading = class extends LitElement {
249
+ constructor() {
250
+ super(...arguments);
251
+ this.level = 1;
252
+ }
253
+ render() {
254
+ const safeLevel = Math.min(6, Math.max(1, Number(this.level) || 1));
255
+ const tag2 = s(`h${safeLevel}`);
256
+ return u`<${tag2} class="nl-heading nl-heading--level-${safeLevel}"><slot></slot></${tag2}>`;
257
+ }
258
+ };
259
+ ClippyHeading.styles = [unsafeCSS(headingCss)];
260
+ __decorateClass([
261
+ property({ type: Number })
262
+ ], ClippyHeading.prototype, "level", 2);
263
+ ClippyHeading = __decorateClass([
264
+ safeCustomElement(tag)
265
+ ], ClippyHeading);
266
+ export {
267
+ ClippyHeading
268
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-html-image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAMvC,qBACa,eAAgB,SAAQ,UAAU;IAC7C,gBAAyB,MAAM,4BAAY;IAG3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAkB;IAG7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,CAAmB;IAE3B,iBAAiB;IAYjB,OAAO;IAOP,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IAEF,OAAO,CAAC,gBAAgB;IAaf,MAAM;CAShB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-html-image/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAQvC,qBACa,eAAgB,SAAQ,UAAU;IAC7C,gBAAyB,MAAM,4BAAY;IAG3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAkB;IAG7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAiB;IAEzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA+C;IACvE,OAAO,CAAC,QAAQ,CAAC,CAAmB;IAE3B,iBAAiB;IAYjB,OAAO;IAOP,oBAAoB;IAM7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAEhC;IAEF,OAAO,CAAC,gBAAgB;IAaf,MAAM;CAShB"}
@@ -1,6 +1,7 @@
1
- import { css as d, LitElement as h, html as c } from "lit";
2
- import { query as b, customElement as u } from "lit/decorators.js";
3
- const p = d`
1
+ import { s as safeCustomElement } from "../decorators-Cq82_-g_.js";
2
+ import { css, LitElement, html } from "lit";
3
+ import { query } from "lit/decorators.js";
4
+ const styles = css`
4
5
  :host {
5
6
  cursor: default;
6
7
  forced-color-adjust: none;
@@ -11,37 +12,59 @@ const p = d`
11
12
  display: none;
12
13
  }
13
14
  `;
14
- var m = Object.defineProperty, v = Object.getOwnPropertyDescriptor, n = (a, t, o, s) => {
15
- for (var e = s > 1 ? void 0 : s ? v(t, o) : t, i = a.length - 1, r; i >= 0; i--)
16
- (r = a[i]) && (e = (s ? r(t, o, e) : r(e)) || e);
17
- return s && e && m(t, o, e), e;
15
+ var __defProp = Object.defineProperty;
16
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
17
+ var __decorateClass = (decorators, target, key, kind) => {
18
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
19
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
20
+ if (decorator = decorators[i])
21
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
22
+ if (kind && result) __defProp(target, key, result);
23
+ return result;
18
24
  };
19
- let g = 0, l = class extends h {
25
+ let labelCounter = 0;
26
+ const tag = "clippy-html-image";
27
+ let ClippyHtmlImage = class extends LitElement {
20
28
  constructor() {
21
- super(...arguments), this.labelId = `clippy-html-image-label-${++g}`, this.onLabelSlotChange = () => {
29
+ super(...arguments);
30
+ this.labelId = `clippy-html-image-label-${++labelCounter}`;
31
+ this.onLabelSlotChange = () => {
22
32
  this.updateLabelledBy();
23
33
  };
24
34
  }
25
35
  connectedCallback() {
26
- super.connectedCallback(), this.observer = new MutationObserver(() => {
36
+ super.connectedCallback();
37
+ this.observer = new MutationObserver(() => {
27
38
  this.updateLabelledBy();
28
- }), this.observer.observe(this, {
29
- childList: !0,
30
- subtree: !0
39
+ });
40
+ this.observer.observe(this, {
41
+ childList: true,
42
+ subtree: true
31
43
  });
32
44
  }
33
45
  updated() {
34
- this.updateLabelledBy(), this.labelSlot && this.labelSlot.addEventListener("slotchange", this.onLabelSlotChange);
46
+ this.updateLabelledBy();
47
+ if (this.labelSlot) {
48
+ this.labelSlot.addEventListener("slotchange", this.onLabelSlotChange);
49
+ }
35
50
  }
36
51
  disconnectedCallback() {
37
- super.disconnectedCallback(), this.observer?.disconnect(), this.labelSlot?.removeEventListener("slotchange", this.onLabelSlotChange);
52
+ super.disconnectedCallback();
53
+ this.observer?.disconnect();
54
+ this.labelSlot?.removeEventListener("slotchange", this.onLabelSlotChange);
38
55
  }
39
56
  updateLabelledBy() {
40
57
  if (!this.labelSlot || !this.imgDiv) return;
41
- this.labelSlot.assignedNodes({ flatten: !0 }).length > 0 ? this.imgDiv.setAttribute("aria-labelledby", this.labelId) : this.imgDiv.removeAttribute("aria-labelledby");
58
+ const nodes = this.labelSlot.assignedNodes({ flatten: true });
59
+ const hasLabel = nodes.length > 0;
60
+ if (hasLabel) {
61
+ this.imgDiv.setAttribute("aria-labelledby", this.labelId);
62
+ } else {
63
+ this.imgDiv.removeAttribute("aria-labelledby");
64
+ }
42
65
  }
43
66
  render() {
44
- return c`<div role="img">
67
+ return html`<div role="img">
45
68
  <div inert>
46
69
  <slot></slot>
47
70
  </div>
@@ -49,16 +72,16 @@ let g = 0, l = class extends h {
49
72
  <slot id=${this.labelId} name="label" @slotchange=${this.onLabelSlotChange}></slot>`;
50
73
  }
51
74
  };
52
- l.styles = [p];
53
- n([
54
- b('slot[name="label"]')
55
- ], l.prototype, "labelSlot", 2);
56
- n([
57
- b('[role="img"]')
58
- ], l.prototype, "imgDiv", 2);
59
- l = n([
60
- u("clippy-html-image")
61
- ], l);
75
+ ClippyHtmlImage.styles = [styles];
76
+ __decorateClass([
77
+ query('slot[name="label"]')
78
+ ], ClippyHtmlImage.prototype, "labelSlot", 2);
79
+ __decorateClass([
80
+ query('[role="img"]')
81
+ ], ClippyHtmlImage.prototype, "imgDiv", 2);
82
+ ClippyHtmlImage = __decorateClass([
83
+ safeCustomElement(tag)
84
+ ], ClippyHtmlImage);
62
85
  export {
63
- l as ClippyHtmlImage
86
+ ClippyHtmlImage
64
87
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAIvC,QAAA,MAAM,GAAG,gBAAgB,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,gBAAyB,MAAM,4BAAgB;IAEtC,MAAM;IAIN,iBAAiB;CAO3B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;KACnB;CACF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clippy-icon/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAQ,MAAM,KAAK,CAAC;AAGvC,QAAA,MAAM,GAAG,gBAAgB,CAAC;AAE1B;;;;;;;;;;;GAWG;AACH,qBACa,UAAW,SAAQ,UAAU;IACxC,gBAAyB,MAAM,4BAAgB;IAEtC,MAAM;IAIN,iBAAiB;CAO3B;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;KACnB;CACF"}