@mattilsynet/design 1.3.8 → 1.3.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import m from "../styles.module.css.js";
2
2
  import { onLoaded as T, onMutation as w, on as r, QUICK_EVENT as p, debounce as _ } from "../utils.js";
3
- import "./app-toggle.js";
3
+ import "./app-toggle2.js";
4
4
  const f = m.app.split(" ")[0], P = m.sticky.split(" ")[0], E = '[data-command="toggle-app-expanded"]', g = `.${f} > dialog,.${f} dialog ~ main`, S = (e) => {
5
5
  document.startViewTransition ? document.startViewTransition(e) : e();
6
6
  }, h = (e) => (
@@ -1,11 +1,27 @@
1
- typeof window < "u" && window.CSSStyleSheet && document.adoptedStyleSheets && (() => {
2
- const e = "--mtds-app-expanded", d = new CSSStyleSheet(), o = () => !window.localStorage.getItem(e)?.includes("false");
3
- document.adoptedStyleSheets.push(d), window.mtdsToggleAppExpanded = (n) => {
4
- try {
5
- const t = n ?? !o();
6
- d.replaceSync?.(`:root { ${e}: var(${e}--${t})}`), window.localStorage.setItem(e, t);
7
- } catch {
8
- }
9
- }, window.mtdsToggleAppExpanded(o());
10
- })();
1
+ const t = `if (
2
+ typeof window !== "undefined" &&
3
+ window.CSSStyleSheet &&
4
+ document.adoptedStyleSheets
5
+ )
6
+ (() => {
7
+ const key = "--mtds-app-expanded";
8
+ const sheet = new CSSStyleSheet();
9
+ const prev = () => !window.localStorage.getItem(key)?.includes("false");
10
+
11
+ document.adoptedStyleSheets.push(sheet);
12
+ window.mtdsToggleAppExpanded = (force) => {
13
+ try {
14
+ const next = force ?? !prev();
15
+ sheet.replaceSync?.(\`:root { \${key}: var(\${key}--\${next})}\`);
16
+ window.localStorage.setItem(key, next);
17
+ } catch (_err) {} // localStorage is full or replaceSync is not supported
18
+ };
19
+
20
+ // Set and store initial state
21
+ window.mtdsToggleAppExpanded(prev());
22
+ })();
23
+ `;
24
+ export {
25
+ t as default
26
+ };
11
27
  //# sourceMappingURL=app-toggle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-toggle.js","sources":["../../designsystem/app/app-toggle.js"],"sourcesContent":["if (\n\ttypeof window !== \"undefined\" &&\n\twindow.CSSStyleSheet &&\n\tdocument.adoptedStyleSheets\n)\n\t(() => {\n\t\tconst key = \"--mtds-app-expanded\";\n\t\tconst sheet = new CSSStyleSheet();\n\t\tconst prev = () => !window.localStorage.getItem(key)?.includes(\"false\");\n\n\t\tdocument.adoptedStyleSheets.push(sheet);\n\t\twindow.mtdsToggleAppExpanded = (force) => {\n\t\t\ttry {\n\t\t\t\tconst next = force ?? !prev();\n\t\t\t\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\n\t\t\t\twindow.localStorage.setItem(key, next);\n\t\t\t} catch (_err) {} // localStorage is full or replaceSync is not supported\n\t\t};\n\n\t\t// Set and store initial state\n\t\twindow.mtdsToggleAppExpanded(prev());\n\t})();\n"],"names":["key","sheet","prev","force","next"],"mappings":"AACC,OAAO,SAAW,OAClB,OAAO,iBACP,SAAS,uBAER,MAAM;AACN,QAAMA,IAAM,uBACNC,IAAQ,IAAI,cAAe,GAC3BC,IAAO,MAAM,CAAC,OAAO,aAAa,QAAQF,CAAG,GAAG,SAAS,OAAO;AAEtE,WAAS,mBAAmB,KAAKC,CAAK,GACtC,OAAO,wBAAwB,CAACE,MAAU;AACzC,QAAI;AACH,YAAMC,IAAOD,KAAS,CAACD,EAAM;AAC7B,MAAAD,EAAM,cAAc,WAAWD,CAAG,SAASA,CAAG,KAAKI,CAAI,IAAI,GAC3D,OAAO,aAAa,QAAQJ,GAAKI,CAAI;AAAA,IACzC,QAAkB;AAAA,IAAE;AAAA,EACjB,GAGD,OAAO,sBAAsBF,GAAM;AACrC,GAAK;"}
1
+ {"version":3,"file":"app-toggle.js","sources":["../../designsystem/app/app-toggle.js?raw"],"sourcesContent":["export default \"if (\\n\\ttypeof window !== \\\"undefined\\\" &&\\n\\twindow.CSSStyleSheet &&\\n\\tdocument.adoptedStyleSheets\\n)\\n\\t(() => {\\n\\t\\tconst key = \\\"--mtds-app-expanded\\\";\\n\\t\\tconst sheet = new CSSStyleSheet();\\n\\t\\tconst prev = () => !window.localStorage.getItem(key)?.includes(\\\"false\\\");\\n\\n\\t\\tdocument.adoptedStyleSheets.push(sheet);\\n\\t\\twindow.mtdsToggleAppExpanded = (force) => {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst next = force ?? !prev();\\n\\t\\t\\t\\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\\n\\t\\t\\t\\twindow.localStorage.setItem(key, next);\\n\\t\\t\\t} catch (_err) {} // localStorage is full or replaceSync is not supported\\n\\t\\t};\\n\\n\\t\\t// Set and store initial state\\n\\t\\twindow.mtdsToggleAppExpanded(prev());\\n\\t})();\\n\""],"names":["script"],"mappings":"AAAA,MAAeA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,27 +1,11 @@
1
- const t = `if (
2
- typeof window !== "undefined" &&
3
- window.CSSStyleSheet &&
4
- document.adoptedStyleSheets
5
- )
6
- (() => {
7
- const key = "--mtds-app-expanded";
8
- const sheet = new CSSStyleSheet();
9
- const prev = () => !window.localStorage.getItem(key)?.includes("false");
10
-
11
- document.adoptedStyleSheets.push(sheet);
12
- window.mtdsToggleAppExpanded = (force) => {
13
- try {
14
- const next = force ?? !prev();
15
- sheet.replaceSync?.(\`:root { \${key}: var(\${key}--\${next})}\`);
16
- window.localStorage.setItem(key, next);
17
- } catch (_err) {} // localStorage is full or replaceSync is not supported
18
- };
19
-
20
- // Set and store initial state
21
- window.mtdsToggleAppExpanded(prev());
22
- })();
23
- `;
24
- export {
25
- t as default
26
- };
1
+ typeof window < "u" && window.CSSStyleSheet && document.adoptedStyleSheets && (() => {
2
+ const e = "--mtds-app-expanded", d = new CSSStyleSheet(), o = () => !window.localStorage.getItem(e)?.includes("false");
3
+ document.adoptedStyleSheets.push(d), window.mtdsToggleAppExpanded = (n) => {
4
+ try {
5
+ const t = n ?? !o();
6
+ d.replaceSync?.(`:root { ${e}: var(${e}--${t})}`), window.localStorage.setItem(e, t);
7
+ } catch {
8
+ }
9
+ }, window.mtdsToggleAppExpanded(o());
10
+ })();
27
11
  //# sourceMappingURL=app-toggle2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-toggle2.js","sources":["../../designsystem/app/app-toggle.js?raw"],"sourcesContent":["export default \"if (\\n\\ttypeof window !== \\\"undefined\\\" &&\\n\\twindow.CSSStyleSheet &&\\n\\tdocument.adoptedStyleSheets\\n)\\n\\t(() => {\\n\\t\\tconst key = \\\"--mtds-app-expanded\\\";\\n\\t\\tconst sheet = new CSSStyleSheet();\\n\\t\\tconst prev = () => !window.localStorage.getItem(key)?.includes(\\\"false\\\");\\n\\n\\t\\tdocument.adoptedStyleSheets.push(sheet);\\n\\t\\twindow.mtdsToggleAppExpanded = (force) => {\\n\\t\\t\\ttry {\\n\\t\\t\\t\\tconst next = force ?? !prev();\\n\\t\\t\\t\\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\\n\\t\\t\\t\\twindow.localStorage.setItem(key, next);\\n\\t\\t\\t} catch (_err) {} // localStorage is full or replaceSync is not supported\\n\\t\\t};\\n\\n\\t\\t// Set and store initial state\\n\\t\\twindow.mtdsToggleAppExpanded(prev());\\n\\t})();\\n\""],"names":["script"],"mappings":"AAAA,MAAeA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"app-toggle2.js","sources":["../../designsystem/app/app-toggle.js"],"sourcesContent":["if (\n\ttypeof window !== \"undefined\" &&\n\twindow.CSSStyleSheet &&\n\tdocument.adoptedStyleSheets\n)\n\t(() => {\n\t\tconst key = \"--mtds-app-expanded\";\n\t\tconst sheet = new CSSStyleSheet();\n\t\tconst prev = () => !window.localStorage.getItem(key)?.includes(\"false\");\n\n\t\tdocument.adoptedStyleSheets.push(sheet);\n\t\twindow.mtdsToggleAppExpanded = (force) => {\n\t\t\ttry {\n\t\t\t\tconst next = force ?? !prev();\n\t\t\t\tsheet.replaceSync?.(`:root { ${key}: var(${key}--${next})}`);\n\t\t\t\twindow.localStorage.setItem(key, next);\n\t\t\t} catch (_err) {} // localStorage is full or replaceSync is not supported\n\t\t};\n\n\t\t// Set and store initial state\n\t\twindow.mtdsToggleAppExpanded(prev());\n\t})();\n"],"names":["key","sheet","prev","force","next"],"mappings":"AACC,OAAO,SAAW,OAClB,OAAO,iBACP,SAAS,uBAER,MAAM;AACN,QAAMA,IAAM,uBACNC,IAAQ,IAAI,cAAe,GAC3BC,IAAO,MAAM,CAAC,OAAO,aAAa,QAAQF,CAAG,GAAG,SAAS,OAAO;AAEtE,WAAS,mBAAmB,KAAKC,CAAK,GACtC,OAAO,wBAAwB,CAACE,MAAU;AACzC,QAAI;AACH,YAAMC,IAAOD,KAAS,CAACD,EAAM;AAC7B,MAAAD,EAAM,cAAc,WAAWD,CAAG,SAASA,CAAG,KAAKI,CAAI,IAAI,GAC3D,OAAO,aAAa,QAAQJ,GAAKI,CAAI;AAAA,IACzC,QAAkB;AAAA,IAAE;AAAA,EACjB,GAGD,OAAO,sBAAsBF,GAAM;AACrC,GAAK;"}
package/mtds/app/app.js CHANGED
@@ -32,7 +32,7 @@ import "../togglegroup/togglegroup.js";
32
32
  import "../typography/typography.js";
33
33
  import "../validation/validation.js";
34
34
  import a from "../styles.module.css.js";
35
- import d from "./app-toggle2.js";
35
+ import d from "./app-toggle.js";
36
36
  const f = p(function({ as: t, className: r, ...m }, n) {
37
37
  return /* @__PURE__ */ o(t || "div", { className: e(a.app, r), ref: n, ...m });
38
38
  }), u = p(function({ as: t, className: r, ...m }, n) {
@@ -14,8 +14,8 @@ function s(t, e, o) {
14
14
  return o === void 0 ? t.getAttribute(e) : (o === null ? t.removeAttribute(e) : t.getAttribute(e) !== o && t.setAttribute(e, o), null);
15
15
  }
16
16
  var q = (t, e, o) => {
17
- for (const i of o[0].split(","))
18
- o[0] = i, Element.prototype[`${t}EventListener`].apply(e, o);
17
+ for (const n of o[0].split(","))
18
+ o[0] = n, Element.prototype[`${t}EventListener`].apply(e, o);
19
19
  }, O = (t, ...e) => q("add", t, e), it = (t, ...e) => q("remove", t, e), x = /* @__PURE__ */ new WeakMap(), L = (t, e) => {
20
20
  if (e === void 0) return x.get(t);
21
21
  try {
@@ -24,30 +24,30 @@ var q = (t, e, o) => {
24
24
  }
25
25
  if (e) {
26
26
  const o = new MutationObserver(
27
- (i) => t.handleEvent({ type: "mutation", detail: i })
27
+ (n) => t.handleEvent({ type: "mutation", detail: n })
28
28
  );
29
29
  o.observe(t, e), x.set(t, o);
30
30
  }
31
31
  }, nt = (t) => {
32
32
  const e = "key" in t && (t.key === " " || t.key === "Enter");
33
33
  return e && t.preventDefault(), e && t.target instanceof HTMLElement && t.target.click(), e;
34
- }, rt = (t) => {
34
+ }, at = (t) => {
35
35
  var e;
36
36
  const o = ((e = t.getRootNode) == null ? void 0 : e.call(t)) || t.ownerDocument;
37
37
  return o instanceof Document || o instanceof ShadowRoot ? o : document;
38
- }, at = 0, lt = (t) => t ? (t.id || (t.id = `:${t.nodeName.toLowerCase()}${(++at).toString(32)}`), t.id) : "", C = (t, e, o) => {
39
- const i = document.createElement(t);
40
- if (e && (i.textContent = e), o) for (const [n, r] of Object.entries(o)) s(i, n, r);
41
- return i;
38
+ }, rt = 0, lt = (t) => t ? (t.id || (t.id = `:${t.nodeName.toLowerCase()}${(++rt).toString(32)}`), t.id) : "", I = (t, e, o) => {
39
+ const n = document.createElement(t);
40
+ if (e && (n.textContent = e), o) for (const [i, a] of Object.entries(o)) s(n, i, a);
41
+ return n;
42
42
  }, st = {
43
43
  define: (t, e) => !w || window.customElements.get(t) || window.customElements.define(t, e)
44
44
  }, y, ut = 0, M = (t) => {
45
- y || (y = C("div"), y.style.cssText = "position:fixed;overflow:hidden;width:1px;white-space:nowrap", s(y, "aria-live", "assertive")), y.isConnected || document.body.append(y), t && (y.textContent = `${t}${ut++ % 2 ? " " : ""}`);
45
+ y || (y = I("div"), y.style.cssText = "position:fixed;overflow:hidden;width:1px;white-space:nowrap", s(y, "aria-live", "assertive")), y.isConnected || document.body.append(y), t && (y.textContent = `${t}${ut++ % 2 ? " " : ""}`);
46
46
  }, K = (t, e, o = "") => {
47
- var i, n;
48
- const r = { bubbles: !0, composed: !0, data: e, inputType: o }, a = HTMLInputElement.prototype;
49
- t.dispatchEvent(new InputEvent("beforeinput", r)), (n = (i = Object.getOwnPropertyDescriptor(a, "value")) == null ? void 0 : i.set) == null || n.call(t, e), t.dispatchEvent(new InputEvent("input", r)), t.dispatchEvent(new Event("change", { bubbles: !0 }));
50
- }, A = !1, N = (t) => (t?.type === "mouseup" && (A = !1), t?.type === "mousedown" && (A = !0, O(document, "mouseup", N, { once: !0 })), A), j = "beforeinput,blur,focus,click,input,keydown,mousedown", U = { once: !0, passive: !0 }, ct = Z && !V, dt = V || tt, k = "false", T = {
47
+ var n, i;
48
+ const a = { bubbles: !0, composed: !0, data: e, inputType: o }, r = HTMLInputElement.prototype;
49
+ t.dispatchEvent(new InputEvent("beforeinput", a)), (i = (n = Object.getOwnPropertyDescriptor(r, "value")) == null ? void 0 : n.set) == null || i.call(t, e), t.dispatchEvent(new InputEvent("input", a)), t.dispatchEvent(new Event("change", { bubbles: !0 }));
50
+ }, A = !1, N = (t) => (t?.type === "mouseup" && (A = !1), t?.type === "mousedown" && (A = !0, O(document, "mouseup", N, { once: !0 })), A), j = "beforeinput,blur,focus,click,input,keydown,mousedown", U = { once: !0, passive: !0 }, ct = Z && !V, dt = V || tt, k = "false", C = {
51
51
  added: "Added",
52
52
  empty: "No selected",
53
53
  found: "Navigate left to find %d selected",
@@ -55,12 +55,12 @@ var q = (t, e, o) => {
55
55
  of: "of",
56
56
  remove: "Press to remove",
57
57
  removed: "Removed"
58
- }, vt = class extends ot {
58
+ }, pt = class extends ot {
59
59
  constructor() {
60
- super(), this._itemText = "", this._speak = "", this._texts = Q({}, T), this._value = "", this.attachShadow({ mode: "open" }).append(
61
- C("slot"),
60
+ super(), this._item = "", this._speak = "", this._texts = Q({}, C), this._value = "", this.attachShadow({ mode: "open" }).append(
61
+ I("slot"),
62
62
  // Content slot
63
- C(
63
+ I(
64
64
  "style",
65
65
  `:host(:not([hidden])) { display: block; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } /* Must be display block in Safari to allow focus inside */
66
66
  :host(:not([data-multiple])) ::slotted(data),
@@ -76,29 +76,29 @@ var q = (t, e, o) => {
76
76
  // Locally store value to store value before input-click
77
77
  // Using ES2015 syntax for backwards compatibility
78
78
  static get observedAttributes() {
79
- return Object.keys(T).map((t) => `data-sr-${t}`);
79
+ return Object.keys(C).map((t) => `data-sr-${t}`);
80
80
  }
81
81
  connectedCallback() {
82
- this._root = rt(this), O(this, j, this, !0), L(this, {
83
- attributeFilter: ["value"],
84
- // Respond to changes in <data> value,
82
+ this._root = at(this), O(this, j, this, !0), L(this, {
83
+ attributeFilter: ["value", "id"],
84
+ // Respond to changes in <data> value or change of id for <datalist> to reconnect with input
85
85
  attributes: !0,
86
86
  characterData: !0,
87
87
  // Respond to changes in <data> textContent
88
88
  childList: !0,
89
89
  subtree: !0
90
- }), setTimeout(I, 0, this), setTimeout(S, 0, this);
90
+ }), setTimeout(T, 0, this), setTimeout(S, 0, this);
91
91
  }
92
92
  attributeChangedCallback(t, e, o) {
93
- const i = t.split("data-sr-")[1];
94
- T[i] && (this._texts[i] = o || T[i]);
93
+ const n = t.split("data-sr-")[1];
94
+ C[n] && (this._texts[n] = o || C[n]);
95
95
  }
96
96
  disconnectedCallback() {
97
97
  L(this, !1), it(this, j, this, !0), this._items = this._clear = this._focus = this._control = void 0, this._list = this._options = this._root = void 0;
98
98
  }
99
99
  handleEvent(t) {
100
100
  const e = t.target;
101
- t.type === "beforeinput" && (this._value = e?.value || ""), t.type === "blur" && ft(this), t.type === "click" && ht(this, t), t.type === "focus" && pt(this, t), t.type === "input" && _t(this, t), t.type === "keydown" && bt(this, t), t.type === "mousedown" && N(t), t.type === "mutation" && I(this, t);
101
+ t.type === "beforeinput" && (this._value = e?.value || ""), t.type === "blur" && ft(this), t.type === "click" && ht(this, t), t.type === "focus" && vt(this, t), t.type === "input" && _t(this, t), t.type === "keydown" && bt(this, t), t.type === "mousedown" && N(t), t.type === "mutation" && T(this, t);
102
102
  }
103
103
  get multiple() {
104
104
  var t;
@@ -143,114 +143,111 @@ var q = (t, e, o) => {
143
143
  }, b = (t) => {
144
144
  var e;
145
145
  return ((e = t?.textContent) == null ? void 0 : e.trim()) || "";
146
- }, D = (t) => t instanceof HTMLDataElement, I = (t, e) => {
147
- var o, i;
148
- const { _focus: n, _texts: r, items: a, control: l, list: d, multiple: c } = t;
149
- let v = `${b((o = l?.labels) == null ? void 0 : o[0])}, ${c ? a.length ? r.found.replace("%d", `${a.length}`) : r.empty : ""}`;
150
- const u = [];
146
+ }, D = (t) => t instanceof HTMLDataElement, T = (t, e) => {
147
+ var o, n;
148
+ const { _focus: i, _texts: a, items: r, control: l, list: d, multiple: u } = t;
149
+ let p = `${b((o = l?.labels) == null ? void 0 : o[0])}, ${u ? r.length ? a.found.replace("%d", `${r.length}`) : a.empty : ""}`;
150
+ const c = [];
151
151
  for (const { addedNodes: m, removedNodes: h } of e?.detail || []) {
152
- for (const p of m) D(p) && u.unshift(p);
153
- for (const p of h) D(p) && u.push(p);
154
- }
155
- const g = c ? u.length === 1 : u[0] === n;
156
- if (n && l && g) {
157
- const m = s(l, "inputmode"), h = D(n) ? l : n;
158
- t._speak = `${r[u[0].isConnected ? "added" : "removed"]} ${b(u[0])}, `, (dt || n === l) && M(t._speak), l !== h && (s(l, "aria-expanded", null), s(l, "inputmode", "none"), v = " ", l.focus()), setTimeout(() => {
159
- var p;
160
- s(l, "aria-expanded", "true"), s(l, "inputmode", m), (p = h?.focus) == null || p.call(h), t._speak = "", ct ? O(t, "blur", () => I(t), U) : setTimeout(I, 100, t);
152
+ for (const v of m) D(v) && c.unshift(v);
153
+ for (const v of h) D(v) && c.push(v);
154
+ }
155
+ const g = u ? c.length === 1 : c[0] === i;
156
+ if (i && l && g) {
157
+ const m = s(l, "inputmode"), h = D(i) ? l : i;
158
+ t._speak = `${a[c[0].isConnected ? "added" : "removed"]} ${b(c[0])}, `, (dt || i === l) && M(t._speak), l !== h && (s(l, "aria-expanded", null), s(l, "inputmode", "none"), p = " ", l.focus()), setTimeout(() => {
159
+ var v;
160
+ s(l, "aria-expanded", "true"), s(l, "inputmode", m), (v = h?.focus) == null || v.call(h), t._speak = "", ct ? O(t, "blur", () => T(t), U) : setTimeout(T, 100, t);
161
161
  }, 100);
162
162
  }
163
163
  let f = 0;
164
164
  const _ = t.querySelector("select");
165
- for (const m of a) {
166
- const h = _?.options[f], p = b(m), $ = m.value || p, Y = `${t._speak}${p}, ${r.remove}, ${++f} ${r.of} ${a.length}`;
167
- s(m, "role", "button"), s(m, "value", $), s(m, "tabindex", "-1"), s(m, "aria-label", Y), h ? Object.assign(h, { textContent: p, value: $ }) : _?.appendChild(new Option(p, $, !0, !0));
165
+ for (const m of r) {
166
+ const h = _?.options[f], v = b(m), $ = m.value || v, Y = `${t._speak}${v}, ${a.remove}, ${++f} ${a.of} ${r.length}`;
167
+ s(m, "role", "button"), s(m, "value", $), s(m, "tabindex", "-1"), s(m, "aria-label", Y), h ? Object.assign(h, { textContent: v, value: $ }) : _?.appendChild(new Option(v, $, !0, !0));
168
168
  }
169
- _ && s(_, "multiple", c ? "" : null);
169
+ _ && s(_, "multiple", u ? "" : null);
170
170
  for (const m of [..._?.options || []].slice(f)) m.remove();
171
- !c && f > 1 && console.warn("u-combobox: Multiple <data> found in single mode."), d && s(d, "aria-multiselectable", `${c}`), l && s(l, "list", lt(d)), l && s(l, "aria-label", `${t._speak}${v}`);
172
- const R = b(a[0]);
173
- R !== t._itemText && S(t, !1), t._itemText = R, X(t), W(t), (i = L(t)) == null || i.takeRecords();
171
+ !u && f > 1 && console.warn("u-combobox: Multiple <data> found in single mode."), d && s(d, "aria-multiselectable", `${u}`), l && s(l, "list", lt(d)), l && s(l, "aria-label", `${t._speak}${p}`);
172
+ const R = b(r[0]);
173
+ R !== t._item && S(t), t._item = R, X(t), W(t), (n = L(t)) == null || n.takeRecords();
174
174
  }, X = (t) => {
175
175
  var e;
176
176
  t.clear && s(t.clear, "role", "button"), t.clear && (t.clear.hidden = !((e = t.control) != null && e.value));
177
177
  }, W = (t) => {
178
178
  var e;
179
- const { _speak: o, options: i = [], values: n } = t;
180
- for (const r of i) {
181
- const a = (e = s(r, "value")) != null ? e : b(r);
182
- s(r, "aria-label", o ? `${o}${b(r)}` : null), s(r, "selected", n.includes(a) ? "" : null);
183
- }
184
- }, S = (t, e = !0) => {
185
- const { multiple: o, control: i, items: n } = t, r = b(n[0]);
186
- if (!(o || !i || r === i.value)) {
187
- if (e) return K(i, r, "insertText");
188
- i.value = r;
189
- }
179
+ const { _speak: o, options: n = [], values: i } = t;
180
+ for (const a of n) {
181
+ const r = (e = s(a, "value")) != null ? e : b(a);
182
+ s(a, "aria-label", o ? `${o}${b(a)}` : null), s(a, "selected", i.includes(r) ? "" : null);
183
+ }
184
+ }, S = (t) => {
185
+ const { multiple: e, control: o, items: n } = t, i = b(n[0]);
186
+ !e && o && i !== o.value && K(o, i, i ? "insertText" : "deleteContent");
190
187
  }, P = (t, e = !0) => {
191
188
  var o;
192
- const { _texts: i, options: n = [], creatable: r, control: a, items: l, multiple: d } = t, c = ((o = a?.value) == null ? void 0 : o.trim()) || "", v = c.toLowerCase() || null;
193
- let u = [...n].find(
194
- (f) => (s(f, "label") || b(f)).trim().toLowerCase() === v
189
+ const { _texts: n, options: i = [], creatable: a, control: r, items: l, multiple: d } = t, u = ((o = r?.value) == null ? void 0 : o.trim()) || "", p = u.toLowerCase() || null;
190
+ let c = [...i].find(
191
+ (f) => (s(f, "label") || b(f)).trim().toLowerCase() === p
195
192
  );
196
- const g = { bubbles: !0, cancelable: !0, detail: u };
197
- if (t.dispatchEvent(new CustomEvent("beforematch", g)) || (u = [...n].find((f) => f.selected)), e)
198
- return W(t), u ? E(t, u, !1) : r && c ? E(t, { value: c }, !1) : (!d && l[0] ? E(t, l[0]) : S(t), M(i.invalid));
199
- for (const f of n) f.selected = f === u;
193
+ const g = { bubbles: !0, cancelable: !0, detail: c };
194
+ if (t.dispatchEvent(new CustomEvent("beforematch", g)) || (c = [...i].find((f) => f.selected)), e)
195
+ return W(t), c ? E(t, c, !1) : a && u ? E(t, { value: u }, !1) : (!d && !u && l[0] ? E(t, l[0]) : S(t), M(n.invalid));
196
+ for (const f of i) f.selected = f === c;
200
197
  }, E = (t, e, o = !0) => {
201
- const { control: i, items: n, multiple: r } = t, a = C("data", e.label || e.value, {
198
+ const { control: n, items: i, multiple: a } = t, r = I("data", e.label || e.value, {
202
199
  value: e.value
203
- }), l = [...n].find((v) => v.value === e.value), d = { bubbles: !0, cancelable: !0, detail: l || a };
200
+ }), l = [...i].find((p) => p.value === e.value), d = { bubbles: !0, cancelable: !0, detail: l || r };
204
201
  if (l && !o) return S(t);
205
202
  if (t.dispatchEvent(new CustomEvent("beforechange", d))) {
206
- if (!r) for (const v of [...n]) v.remove();
207
- l ? l.remove() : i?.insertAdjacentElement("beforebegin", a), t.dispatchEvent(new CustomEvent("afterchange", d));
203
+ if (!a) for (const p of [...i]) p.remove();
204
+ l ? l.remove() : n?.insertAdjacentElement("beforebegin", r), t.dispatchEvent(new CustomEvent("afterchange", d));
208
205
  }
209
- }, pt = (t, { target: e }) => {
206
+ }, vt = (t, { target: e }) => {
210
207
  e instanceof HTMLElement && (t._focus = e), M();
211
208
  }, ft = (t) => N() || setTimeout(mt, 0, t), mt = (t) => {
212
209
  var e;
213
210
  !t._focus || t.contains((e = t._root) == null ? void 0 : e.activeElement) || (t.multiple || P(t), t._focus = void 0);
214
211
  }, ht = (t, e) => {
215
- const { clientX: o, clientY: i, target: n } = e, { clear: r, control: a, items: l } = t;
216
- if (r?.contains(n))
217
- return a && K(a, "", "deleteContentBackward"), a?.focus();
212
+ const { clientX: o, clientY: n, target: i } = e, { clear: a, control: r, items: l } = t;
213
+ if (a?.contains(i))
214
+ return r && K(r, "", "deleteContentBackward"), r?.focus();
218
215
  for (const d of l) {
219
- const { top: c, right: v, bottom: u, left: g } = d.getBoundingClientRect();
220
- if (d.contains(n)) return E(t, d);
221
- if (i >= c && i <= u && o >= g && o <= v) return d.focus();
216
+ const { top: u, right: p, bottom: c, left: g } = d.getBoundingClientRect();
217
+ if (d.contains(i)) return E(t, d);
218
+ if (n >= u && n <= c && o >= g && o <= p) return d.focus();
222
219
  }
223
- n === t && a?.focus();
220
+ i === t && r?.focus();
224
221
  }, _t = (t, e) => {
225
222
  var o;
226
- const { options: i = [], control: n, multiple: r } = t, a = ((o = n?.value) == null ? void 0 : o.trim()) || "";
227
- if (e instanceof InputEvent ? !e.inputType || e.inputType === "insertReplacementText" : !!a) {
228
- e.stopImmediatePropagation(), n && (n.value = t._value);
229
- for (const d of i)
230
- if (d.value && d.value === a)
231
- return E(t, d, r);
232
- } else r || P(t, !1);
223
+ const { options: n = [], control: i, multiple: a } = t, r = ((o = i?.value) == null ? void 0 : o.trim()) || "";
224
+ if (e instanceof InputEvent ? !e.inputType || e.inputType === "insertReplacementText" : !!r) {
225
+ e.stopImmediatePropagation(), i && (i.value = t._value);
226
+ for (const d of n)
227
+ if (d.value && d.value === r)
228
+ return E(t, d, a);
229
+ } else a || P(t, !1);
233
230
  X(t);
234
231
  }, bt = (t, e) => {
235
232
  var o;
236
233
  if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) return;
237
- const { clear: i, control: n, items: r } = t, { key: a, repeat: l, target: d } = e, c = n && n === d, v = c && n?.selectionEnd;
238
- let u = c ? r.length : [...r].indexOf(d);
239
- if (c && a === "Tab" && i && !i.hidden && (e.preventDefault(), i.tabIndex = -1, i.focus(), O(i, "blur", () => s(i, "tabindex", null), U)), !(!c && nt(e) || u === -1)) {
240
- if (a === "ArrowRight" && !c) u += 1;
241
- else if (a === "ArrowLeft" && !v) u -= 1;
242
- else if (a === "Enter" && c) {
243
- const g = s(n, "form");
244
- return s(n, "form", "#"), requestAnimationFrame(() => s(n, "form", g)), P(t);
245
- } else if ((a === "Backspace" || a === "Delete") && !v) {
246
- if (e.preventDefault(), !l && r[u]) return E(t, r[u]);
247
- c && (u -= 1);
248
- } else return c || n?.focus();
249
- e.preventDefault(), (o = r[Math.max(0, u)] || n) == null || o.focus();
234
+ const { clear: n, control: i, items: a } = t, { key: r, repeat: l, target: d } = e, u = i && i === d, p = u && i?.selectionEnd;
235
+ let c = u ? a.length : [...a].indexOf(d);
236
+ if (u && r === "Tab" && n && !n.hidden && (e.preventDefault(), n.tabIndex = -1, n.focus(), O(n, "blur", () => s(n, "tabindex", null), U)), !(!u && nt(e) || c === -1)) {
237
+ if (r === "ArrowRight" && !u) c += 1;
238
+ else if (r === "ArrowLeft" && !p) c -= 1;
239
+ else if (r === "Enter" && u) {
240
+ const g = s(i, "form");
241
+ return s(i, "form", "#"), requestAnimationFrame(() => s(i, "form", g)), P(t);
242
+ } else if ((r === "Backspace" || r === "Delete") && !p) {
243
+ if (e.preventDefault(), !l && a[c]) return E(t, a[c]);
244
+ u && (c -= 1);
245
+ } else return u || i?.focus();
246
+ e.preventDefault(), (o = a[Math.max(0, c)] || i) == null || o.focus();
250
247
  }
251
248
  };
252
- st.define("u-combobox", vt);
249
+ st.define("u-combobox", pt);
253
250
  export {
254
- vt as UHTMLComboboxElement
251
+ pt as UHTMLComboboxElement
255
252
  };
256
253
  //# sourceMappingURL=u-combobox.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"u-combobox.js","sources":["../../../../../node_modules/@u-elements/u-combobox/dist/u-combobox.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_FIREFOX = IS_BROWSER && /firefox/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar asButton = (event) => {\n const isClick = \"key\" in event && (event.key === \" \" || event.key === \"Enter\");\n if (isClick) event.preventDefault();\n if (isClick && event.target instanceof HTMLElement) event.target.click();\n return isClick;\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text2, attrs) => {\n const el = document.createElement(tagName);\n if (text2) el.textContent = text2;\n if (attrs) for (const [key, val] of Object.entries(attrs)) attr(el, key, val);\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text2) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text2) LIVE.textContent = `${text2}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-combobox.ts\nvar EVENTS = \"beforeinput,blur,focus,click,input,keydown,mousedown\";\nvar EVENT_ONCE = { once: true, passive: true };\nvar IS_FIREFOX_DESKTOP = IS_FIREFOX && !IS_ANDROID;\nvar IS_MOBILE = IS_ANDROID || IS_IOS;\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._itemText = \"\";\n // Locally store item text to compare change in single mode\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Content slot\n createElement(\n \"style\",\n `:host(:not([hidden])) { display: block; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } /* Must be display block in Safari to allow focus inside */\n\t\t\t\t:host(:not([data-multiple])) ::slotted(data),\n\t\t\t\t:host([data-multiple=\"false\"]) ::slotted(data) { display: none } /* Hide data if not multiple */\n\t\t\t\t::slotted(input[inputmode=\"none\"]) { outline: none } /* Hide temporary foucs outline flash */\n\t\t\t\t::slotted(del) { text-decoration: none }\n\t\t\t\t::slotted(data:not([hidden])) { display: inline-block; pointer-events: none }\n ::slotted(data)::after { content: '\\\\00D7'; content: '\\\\00D7' / ''; padding-inline: .5ch; pointer-events: auto }\n ::slotted(data:focus) { ${FOCUS_OUTLINE} }`\n )\n );\n }\n // Locally store value to store value before input-click\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n this._root = getRoot(this);\n on(this, EVENTS, this, true);\n mutationObserver(this, {\n attributeFilter: [\"value\"],\n // Respond to changes in <data> value,\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n setTimeout(render, 0, this);\n setTimeout(syncInputValue, 0, this);\n }\n attributeChangedCallback(prop, _, val) {\n const text2 = prop.split(\"data-sr-\")[1];\n if (TEXTS[text2]) this._texts[text2] = val || TEXTS[text2];\n }\n disconnectedCallback() {\n mutationObserver(this, false);\n off(this, EVENTS, this, true);\n this._items = this._clear = this._focus = this._control = void 0;\n this._list = this._options = this._root = void 0;\n }\n handleEvent(event) {\n const target = event.target;\n if (event.type === \"beforeinput\") this._value = (target == null ? void 0 : target.value) || \"\";\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") onFocus(this, event);\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"mousedown\") isMouseDown(event);\n if (event.type === \"mutation\") render(this, event);\n }\n get multiple() {\n var _a2;\n return ((_a2 = attr(this, \"data-multiple\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set multiple(value) {\n attr(this, \"data-multiple\", value ? \"\" : null);\n }\n get creatable() {\n var _a2;\n return ((_a2 = attr(this, \"data-creatable\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set creatable(value) {\n attr(this, \"data-creatable\", value ? \"\" : null);\n }\n get control() {\n var _a2;\n if (!((_a2 = this._control) == null ? void 0 : _a2.isConnected))\n this._control = this.querySelector(\"input\");\n return this._control;\n }\n get list() {\n var _a2;\n if (!((_a2 = this._list) == null ? void 0 : _a2.isConnected))\n this._list = this.querySelector(\"u-datalist,datalist\");\n return this._list;\n }\n get clear() {\n var _a2;\n if (!((_a2 = this._clear) == null ? void 0 : _a2.isConnected)) this._clear = this.querySelector(\"del\");\n return this._clear;\n }\n get items() {\n if (!this._items) this._items = this.getElementsByTagName(\"data\");\n return this._items;\n }\n get options() {\n var _a2, _b;\n if (!this._options) {\n const tag = ((_a2 = this.list) == null ? void 0 : _a2.nodeName) === \"U-DATALIST\" ? \"u-option\" : \"option\";\n this._options = (_b = this.list) == null ? void 0 : _b.getElementsByTagName(tag);\n }\n return this._options;\n }\n get values() {\n return [...this.items].map(({ value }) => value);\n }\n};\nvar text = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar isData = (el) => el instanceof HTMLDataElement;\nvar render = (self, event) => {\n var _a2, _b;\n const { _focus, _texts, items, control, list, multiple } = self;\n let label = `${text((_a2 = control == null ? void 0 : control.labels) == null ? void 0 : _a2[0])}, ${multiple ? items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty : \"\"}`;\n const edits = [];\n for (const { addedNodes, removedNodes } of (event == null ? void 0 : event.detail) || []) {\n for (const el of addedNodes) if (isData(el)) edits.unshift(el);\n for (const el of removedNodes) if (isData(el)) edits.push(el);\n }\n const shouldAnnounce = multiple ? edits.length === 1 : edits[0] === _focus;\n if (_focus && control && shouldAnnounce) {\n const inputMode = attr(control, \"inputmode\");\n const nextFocus = isData(_focus) ? control : _focus;\n self._speak = `${_texts[edits[0].isConnected ? \"added\" : \"removed\"]} ${text(edits[0])}, `;\n if (IS_MOBILE || _focus === control) speak(self._speak);\n if (control !== nextFocus) {\n attr(control, \"aria-expanded\", null);\n attr(control, \"inputmode\", \"none\");\n label = \"\\xA0\";\n control.focus();\n }\n setTimeout(() => {\n var _a3;\n attr(control, \"aria-expanded\", \"true\");\n attr(control, \"inputmode\", inputMode);\n (_a3 = nextFocus == null ? void 0 : nextFocus.focus) == null ? void 0 : _a3.call(nextFocus);\n self._speak = \"\";\n if (IS_FIREFOX_DESKTOP) on(self, \"blur\", () => render(self), EVENT_ONCE);\n else setTimeout(render, 100, self);\n }, 100);\n }\n let idx = 0;\n const select = self.querySelector(\"select\");\n for (const item of items) {\n const option = select == null ? void 0 : select.options[idx];\n const label2 = text(item);\n const value = item.value || label2;\n const aria = `${self._speak}${label2}, ${_texts.remove}, ${++idx} ${_texts.of} ${items.length}`;\n attr(item, \"role\", \"button\");\n attr(item, \"value\", value);\n attr(item, \"tabindex\", \"-1\");\n attr(item, \"aria-label\", aria);\n if (option) Object.assign(option, { textContent: label2, value });\n else select == null ? void 0 : select.appendChild(new Option(label2, value, true, true));\n }\n if (select) attr(select, \"multiple\", multiple ? \"\" : null);\n for (const opt of [...(select == null ? void 0 : select.options) || []].slice(idx)) opt.remove();\n if (!multiple && idx > 1)\n console.warn(\"u-combobox: Multiple <data> found in single mode.\");\n if (list) attr(list, \"aria-multiselectable\", `${multiple}`);\n if (control) attr(control, \"list\", useId(list));\n if (control) attr(control, \"aria-label\", `${self._speak}${label}`);\n const itemText = text(items[0]);\n if (itemText !== self._itemText) syncInputValue(self, false);\n self._itemText = itemText;\n syncClearWithInput(self);\n syncOptionsWithItems(self);\n (_b = mutationObserver(self)) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n var _a2;\n if (self.clear) attr(self.clear, \"role\", \"button\");\n if (self.clear) self.clear.hidden = !((_a2 = self.control) == null ? void 0 : _a2.value);\n};\nvar syncOptionsWithItems = (self) => {\n var _a2;\n const { _speak, options = [], values } = self;\n for (const opt of options) {\n const value = (_a2 = attr(opt, \"value\")) != null ? _a2 : text(opt);\n attr(opt, \"aria-label\", _speak ? `${_speak}${text(opt)}` : null);\n attr(opt, \"selected\", values.includes(value) ? \"\" : null);\n }\n};\nvar syncInputValue = (self, withEvent = true) => {\n const { multiple, control, items } = self;\n const value = text(items[0]);\n if (multiple || !control || value === control.value) return;\n if (withEvent) return setValue(control, value, \"insertText\");\n control.value = value;\n};\nvar dispatchMatch = (self, change = true) => {\n var _a2;\n const { _texts, options = [], creatable, control, items, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const query = value.toLowerCase() || null;\n let match = [...options].find(\n (opt) => (attr(opt, \"label\") || text(opt)).trim().toLowerCase() === query\n );\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"beforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (change) {\n syncOptionsWithItems(self);\n if (match) return dispatchChange(self, match, false);\n if (creatable && value) return dispatchChange(self, { value }, false);\n if (!multiple && items[0]) dispatchChange(self, items[0]);\n else syncInputValue(self);\n return speak(_texts.invalid);\n }\n for (const opt of options) opt.selected = opt === match;\n};\nvar dispatchChange = (self, item, removable = true) => {\n const { control, items, multiple } = self;\n const add = createElement(\"data\", item.label || item.value, {\n value: item.value\n });\n const remove = [...items].find((i) => i.value === item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n const skip = remove && !removable;\n if (skip) return syncInputValue(self);\n if (self.dispatchEvent(new CustomEvent(\"beforechange\", event))) {\n if (!multiple) for (const item2 of [...items]) item2.remove();\n if (remove) remove.remove();\n else control == null ? void 0 : control.insertAdjacentElement(\"beforebegin\", add);\n self.dispatchEvent(new CustomEvent(\"afterchange\", event));\n }\n};\nvar onFocus = (self, { target }) => {\n if (target instanceof HTMLElement) self._focus = target;\n speak();\n};\nvar onBlur = (self) => isMouseDown() || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => {\n var _a2;\n if (!self._focus || self.contains((_a2 = self._root) == null ? void 0 : _a2.activeElement)) return;\n if (!self.multiple) dispatchMatch(self);\n self._focus = void 0;\n};\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (clear == null ? void 0 : clear.contains(target)) {\n if (control) setValue(control, \"\", \"deleteContentBackward\");\n return control == null ? void 0 : control.focus();\n }\n for (const item of items) {\n const { top, right, bottom, left } = item.getBoundingClientRect();\n if (item.contains(target)) return dispatchChange(self, item);\n if (y >= top && y <= bottom && x >= left && x <= right) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { options = [], control, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const isClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!value;\n if (isClick) {\n event.stopImmediatePropagation();\n if (control) control.value = self._value;\n for (const opt of options)\n if (opt.value && opt.value === value)\n return dispatchChange(self, opt, multiple);\n } else if (!multiple) dispatchMatch(self, false);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, event) => {\n var _a2;\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const isControl = control && control === target;\n const inText = isControl && (control == null ? void 0 : control.selectionEnd);\n let index = isControl ? items.length : [...items].indexOf(target);\n if (isControl && key === \"Tab\" && clear && !clear.hidden) {\n event.preventDefault();\n clear.tabIndex = -1;\n clear.focus();\n on(clear, \"blur\", () => attr(clear, \"tabindex\", null), EVENT_ONCE);\n }\n if (!isControl && asButton(event) || index === -1) return;\n if (key === \"ArrowRight\" && !isControl) index += 1;\n else if (key === \"ArrowLeft\" && !inText) index -= 1;\n else if (key === \"Enter\" && isControl) {\n const form = attr(control, \"form\");\n attr(control, \"form\", \"#\");\n requestAnimationFrame(() => attr(control, \"form\", form));\n return dispatchMatch(self);\n } else if ((key === \"Backspace\" || key === \"Delete\") && !inText) {\n event.preventDefault();\n if (!repeat && items[index]) return dispatchChange(self, items[index]);\n if (isControl) index -= 1;\n } else return isControl || (control == null ? void 0 : control.focus());\n event.preventDefault();\n (_a2 = items[Math.max(0, index)] || control) == null ? void 0 : _a2.focus();\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","_a2","root","id","useId","createElement","tagName","text2","attrs","val","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","proto","IS_PRESS","isMouseDown","EVENTS","EVENT_ONCE","IS_FIREFOX_DESKTOP","IS_MOBILE","FALSE","TEXTS","UHTMLComboboxElement","render","syncInputValue","_","target","onBlur","onClick","onFocus","onInput","onKeyDown","tag","text","isData","self","_focus","_texts","items","control","list","multiple","label","edits","addedNodes","removedNodes","shouldAnnounce","inputMode","nextFocus","_a3","idx","select","item","option","label2","aria","opt","itemText","syncClearWithInput","syncOptionsWithItems","_speak","values","withEvent","dispatchMatch","change","creatable","query","match","o","dispatchChange","removable","add","remove","i","item2","onBlurred","x","y","clear","top","right","bottom","left","repeat","isControl","inText","index","form"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"u-combobox.js","sources":["../../../../../node_modules/@u-elements/u-combobox/dist/u-combobox.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __spreadValues = (a, b) => {\n for (var prop in b || (b = {}))\n if (__hasOwnProp.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n if (__getOwnPropSymbols)\n for (var prop of __getOwnPropSymbols(b)) {\n if (__propIsEnum.call(b, prop))\n __defNormalProp(a, prop, b[prop]);\n }\n return a;\n};\n\n// ../utils.ts\nvar IS_BROWSER = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_ANDROID = IS_BROWSER && /android/i.test(navigator.userAgent);\nvar IS_FIREFOX = IS_BROWSER && /firefox/i.test(navigator.userAgent);\nvar IS_IOS = IS_BROWSER && /iPad|iPhone|iPod/.test(navigator.userAgent);\nvar _a;\nIS_BROWSER && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474\n/^Mac/i.test(((_a = navigator.userAgentData) == null ? void 0 : _a.platform) || navigator.platform);\nvar FOCUS_OUTLINE = \"outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color\";\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nfunction attr(el, name, value) {\n if (value === void 0) return el.getAttribute(name);\n if (value === null) el.removeAttribute(name);\n else if (el.getAttribute(name) !== value) el.setAttribute(name, value);\n return null;\n}\nvar events = (action, element, rest) => {\n for (const type of rest[0].split(\",\")) {\n rest[0] = type;\n Element.prototype[`${action}EventListener`].apply(element, rest);\n }\n};\nvar on = (element, ...rest) => events(\"add\", element, rest);\nvar off = (element, ...rest) => events(\"remove\", element, rest);\nvar observers = /* @__PURE__ */ new WeakMap();\nvar mutationObserver = (element, options) => {\n if (options === void 0) return observers.get(element);\n try {\n observers.get(element).disconnect();\n observers.delete(element);\n } catch (_err) {\n }\n if (options) {\n const observer = new MutationObserver(\n (detail) => element.handleEvent({ type: \"mutation\", detail })\n );\n observer.observe(element, options);\n observers.set(element, observer);\n }\n};\nvar asButton = (event) => {\n const isClick = \"key\" in event && (event.key === \" \" || event.key === \"Enter\");\n if (isClick) event.preventDefault();\n if (isClick && event.target instanceof HTMLElement) event.target.click();\n return isClick;\n};\nvar getRoot = (node) => {\n var _a2;\n const root = ((_a2 = node.getRootNode) == null ? void 0 : _a2.call(node)) || node.ownerDocument;\n return root instanceof Document || root instanceof ShadowRoot ? root : document;\n};\nvar id = 0;\nvar useId = (el) => {\n if (!el) return \"\";\n if (!el.id) el.id = `:${el.nodeName.toLowerCase()}${(++id).toString(32)}`;\n return el.id;\n};\nvar createElement = (tagName, text2, attrs) => {\n const el = document.createElement(tagName);\n if (text2) el.textContent = text2;\n if (attrs) for (const [key, val] of Object.entries(attrs)) attr(el, key, val);\n return el;\n};\nvar customElements = {\n define: (name, instance) => !IS_BROWSER || window.customElements.get(name) || window.customElements.define(name, instance)\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar speak = (text2) => {\n if (!LIVE) {\n LIVE = createElement(\"div\");\n LIVE.style.cssText = \"position:fixed;overflow:hidden;width:1px;white-space:nowrap\";\n attr(LIVE, \"aria-live\", \"assertive\");\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text2) LIVE.textContent = `${text2}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n};\nvar setValue = (input, data, type = \"\") => {\n var _a2, _b;\n const event = { bubbles: true, composed: true, data, inputType: type };\n const proto = HTMLInputElement.prototype;\n input.dispatchEvent(new InputEvent(\"beforeinput\", event));\n (_b = (_a2 = Object.getOwnPropertyDescriptor(proto, \"value\")) == null ? void 0 : _a2.set) == null ? void 0 : _b.call(input, data);\n input.dispatchEvent(new InputEvent(\"input\", event));\n input.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\nvar IS_PRESS = false;\nvar isMouseDown = (event) => {\n if ((event == null ? void 0 : event.type) === \"mouseup\") IS_PRESS = false;\n if ((event == null ? void 0 : event.type) === \"mousedown\") {\n IS_PRESS = true;\n on(document, \"mouseup\", isMouseDown, { once: true });\n }\n return IS_PRESS;\n};\n\n// u-combobox.ts\nvar EVENTS = \"beforeinput,blur,focus,click,input,keydown,mousedown\";\nvar EVENT_ONCE = { once: true, passive: true };\nvar IS_FIREFOX_DESKTOP = IS_FIREFOX && !IS_ANDROID;\nvar IS_MOBILE = IS_ANDROID || IS_IOS;\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._item = \"\";\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n this.attachShadow({ mode: \"open\" }).append(\n createElement(\"slot\"),\n // Content slot\n createElement(\n \"style\",\n `:host(:not([hidden])) { display: block; cursor: pointer; -webkit-tap-highlight-color: rgba(0, 0, 0, 0) } /* Must be display block in Safari to allow focus inside */\n\t\t\t\t:host(:not([data-multiple])) ::slotted(data),\n\t\t\t\t:host([data-multiple=\"false\"]) ::slotted(data) { display: none } /* Hide data if not multiple */\n\t\t\t\t::slotted(input[inputmode=\"none\"]) { outline: none } /* Hide temporary foucs outline flash */\n\t\t\t\t::slotted(del) { text-decoration: none }\n\t\t\t\t::slotted(data:not([hidden])) { display: inline-block; pointer-events: none }\n ::slotted(data)::after { content: '\\\\00D7'; content: '\\\\00D7' / ''; padding-inline: .5ch; pointer-events: auto }\n ::slotted(data:focus) { ${FOCUS_OUTLINE} }`\n )\n );\n }\n // Locally store value to store value before input-click\n // Using ES2015 syntax for backwards compatibility\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n this._root = getRoot(this);\n on(this, EVENTS, this, true);\n mutationObserver(this, {\n attributeFilter: [\"value\", \"id\"],\n // Respond to changes in <data> value or change of id for <datalist> to reconnect with input\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n setTimeout(render, 0, this);\n setTimeout(syncInputValue, 0, this);\n }\n attributeChangedCallback(prop, _, val) {\n const text2 = prop.split(\"data-sr-\")[1];\n if (TEXTS[text2]) this._texts[text2] = val || TEXTS[text2];\n }\n disconnectedCallback() {\n mutationObserver(this, false);\n off(this, EVENTS, this, true);\n this._items = this._clear = this._focus = this._control = void 0;\n this._list = this._options = this._root = void 0;\n }\n handleEvent(event) {\n const target = event.target;\n if (event.type === \"beforeinput\") this._value = (target == null ? void 0 : target.value) || \"\";\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") onFocus(this, event);\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"mousedown\") isMouseDown(event);\n if (event.type === \"mutation\") render(this, event);\n }\n get multiple() {\n var _a2;\n return ((_a2 = attr(this, \"data-multiple\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set multiple(value) {\n attr(this, \"data-multiple\", value ? \"\" : null);\n }\n get creatable() {\n var _a2;\n return ((_a2 = attr(this, \"data-creatable\")) != null ? _a2 : FALSE) !== FALSE;\n }\n set creatable(value) {\n attr(this, \"data-creatable\", value ? \"\" : null);\n }\n get control() {\n var _a2;\n if (!((_a2 = this._control) == null ? void 0 : _a2.isConnected))\n this._control = this.querySelector(\"input\");\n return this._control;\n }\n get list() {\n var _a2;\n if (!((_a2 = this._list) == null ? void 0 : _a2.isConnected))\n this._list = this.querySelector(\"u-datalist,datalist\");\n return this._list;\n }\n get clear() {\n var _a2;\n if (!((_a2 = this._clear) == null ? void 0 : _a2.isConnected)) this._clear = this.querySelector(\"del\");\n return this._clear;\n }\n get items() {\n if (!this._items) this._items = this.getElementsByTagName(\"data\");\n return this._items;\n }\n get options() {\n var _a2, _b;\n if (!this._options) {\n const tag = ((_a2 = this.list) == null ? void 0 : _a2.nodeName) === \"U-DATALIST\" ? \"u-option\" : \"option\";\n this._options = (_b = this.list) == null ? void 0 : _b.getElementsByTagName(tag);\n }\n return this._options;\n }\n get values() {\n return [...this.items].map(({ value }) => value);\n }\n};\nvar text = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar isData = (el) => el instanceof HTMLDataElement;\nvar render = (self, event) => {\n var _a2, _b;\n const { _focus, _texts, items, control, list, multiple } = self;\n let label = `${text((_a2 = control == null ? void 0 : control.labels) == null ? void 0 : _a2[0])}, ${multiple ? items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty : \"\"}`;\n const edits = [];\n for (const { addedNodes, removedNodes } of (event == null ? void 0 : event.detail) || []) {\n for (const el of addedNodes) if (isData(el)) edits.unshift(el);\n for (const el of removedNodes) if (isData(el)) edits.push(el);\n }\n const shouldAnnounce = multiple ? edits.length === 1 : edits[0] === _focus;\n if (_focus && control && shouldAnnounce) {\n const inputMode = attr(control, \"inputmode\");\n const nextFocus = isData(_focus) ? control : _focus;\n self._speak = `${_texts[edits[0].isConnected ? \"added\" : \"removed\"]} ${text(edits[0])}, `;\n if (IS_MOBILE || _focus === control) speak(self._speak);\n if (control !== nextFocus) {\n attr(control, \"aria-expanded\", null);\n attr(control, \"inputmode\", \"none\");\n label = \"\\xA0\";\n control.focus();\n }\n setTimeout(() => {\n var _a3;\n attr(control, \"aria-expanded\", \"true\");\n attr(control, \"inputmode\", inputMode);\n (_a3 = nextFocus == null ? void 0 : nextFocus.focus) == null ? void 0 : _a3.call(nextFocus);\n self._speak = \"\";\n if (IS_FIREFOX_DESKTOP) on(self, \"blur\", () => render(self), EVENT_ONCE);\n else setTimeout(render, 100, self);\n }, 100);\n }\n let idx = 0;\n const select = self.querySelector(\"select\");\n for (const item2 of items) {\n const option = select == null ? void 0 : select.options[idx];\n const label2 = text(item2);\n const value = item2.value || label2;\n const aria = `${self._speak}${label2}, ${_texts.remove}, ${++idx} ${_texts.of} ${items.length}`;\n attr(item2, \"role\", \"button\");\n attr(item2, \"value\", value);\n attr(item2, \"tabindex\", \"-1\");\n attr(item2, \"aria-label\", aria);\n if (option) Object.assign(option, { textContent: label2, value });\n else select == null ? void 0 : select.appendChild(new Option(label2, value, true, true));\n }\n if (select) attr(select, \"multiple\", multiple ? \"\" : null);\n for (const opt of [...(select == null ? void 0 : select.options) || []].slice(idx)) opt.remove();\n if (!multiple && idx > 1)\n console.warn(\"u-combobox: Multiple <data> found in single mode.\");\n if (list) attr(list, \"aria-multiselectable\", `${multiple}`);\n if (control) attr(control, \"list\", useId(list));\n if (control) attr(control, \"aria-label\", `${self._speak}${label}`);\n const item = text(items[0]);\n if (item !== self._item) syncInputValue(self);\n self._item = item;\n syncClearWithInput(self);\n syncOptionsWithItems(self);\n (_b = mutationObserver(self)) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n var _a2;\n if (self.clear) attr(self.clear, \"role\", \"button\");\n if (self.clear) self.clear.hidden = !((_a2 = self.control) == null ? void 0 : _a2.value);\n};\nvar syncOptionsWithItems = (self) => {\n var _a2;\n const { _speak, options = [], values } = self;\n for (const opt of options) {\n const value = (_a2 = attr(opt, \"value\")) != null ? _a2 : text(opt);\n attr(opt, \"aria-label\", _speak ? `${_speak}${text(opt)}` : null);\n attr(opt, \"selected\", values.includes(value) ? \"\" : null);\n }\n};\nvar syncInputValue = (self) => {\n const { multiple, control, items } = self;\n const value = text(items[0]);\n if (!multiple && control && value !== control.value)\n setValue(control, value, value ? \"insertText\" : \"deleteContent\");\n};\nvar dispatchMatch = (self, change = true) => {\n var _a2;\n const { _texts, options = [], creatable, control, items, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const query = value.toLowerCase() || null;\n let match = [...options].find(\n (opt) => (attr(opt, \"label\") || text(opt)).trim().toLowerCase() === query\n );\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"beforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (change) {\n syncOptionsWithItems(self);\n if (match) return dispatchChange(self, match, false);\n if (creatable && value) return dispatchChange(self, { value }, false);\n if (!multiple && !value && items[0]) dispatchChange(self, items[0]);\n else syncInputValue(self);\n return speak(_texts.invalid);\n }\n for (const opt of options) opt.selected = opt === match;\n};\nvar dispatchChange = (self, item, removable = true) => {\n const { control, items, multiple } = self;\n const add = createElement(\"data\", item.label || item.value, {\n value: item.value\n });\n const remove = [...items].find((i) => i.value === item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n const skip = remove && !removable;\n if (skip) return syncInputValue(self);\n if (self.dispatchEvent(new CustomEvent(\"beforechange\", event))) {\n if (!multiple) for (const item2 of [...items]) item2.remove();\n if (remove) remove.remove();\n else control == null ? void 0 : control.insertAdjacentElement(\"beforebegin\", add);\n self.dispatchEvent(new CustomEvent(\"afterchange\", event));\n }\n};\nvar onFocus = (self, { target }) => {\n if (target instanceof HTMLElement) self._focus = target;\n speak();\n};\nvar onBlur = (self) => isMouseDown() || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => {\n var _a2;\n if (!self._focus || self.contains((_a2 = self._root) == null ? void 0 : _a2.activeElement)) return;\n if (!self.multiple) dispatchMatch(self);\n self._focus = void 0;\n};\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (clear == null ? void 0 : clear.contains(target)) {\n if (control) setValue(control, \"\", \"deleteContentBackward\");\n return control == null ? void 0 : control.focus();\n }\n for (const item of items) {\n const { top, right, bottom, left } = item.getBoundingClientRect();\n if (item.contains(target)) return dispatchChange(self, item);\n if (y >= top && y <= bottom && x >= left && x <= right) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { options = [], control, multiple } = self;\n const value = ((_a2 = control == null ? void 0 : control.value) == null ? void 0 : _a2.trim()) || \"\";\n const isClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!value;\n if (isClick) {\n event.stopImmediatePropagation();\n if (control) control.value = self._value;\n for (const opt of options)\n if (opt.value && opt.value === value)\n return dispatchChange(self, opt, multiple);\n } else if (!multiple) dispatchMatch(self, false);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, event) => {\n var _a2;\n if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const isControl = control && control === target;\n const inText = isControl && (control == null ? void 0 : control.selectionEnd);\n let index = isControl ? items.length : [...items].indexOf(target);\n if (isControl && key === \"Tab\" && clear && !clear.hidden) {\n event.preventDefault();\n clear.tabIndex = -1;\n clear.focus();\n on(clear, \"blur\", () => attr(clear, \"tabindex\", null), EVENT_ONCE);\n }\n if (!isControl && asButton(event) || index === -1) return;\n if (key === \"ArrowRight\" && !isControl) index += 1;\n else if (key === \"ArrowLeft\" && !inText) index -= 1;\n else if (key === \"Enter\" && isControl) {\n const form = attr(control, \"form\");\n attr(control, \"form\", \"#\");\n requestAnimationFrame(() => attr(control, \"form\", form));\n return dispatchMatch(self);\n } else if ((key === \"Backspace\" || key === \"Delete\") && !inText) {\n event.preventDefault();\n if (!repeat && items[index]) return dispatchChange(self, items[index]);\n if (isControl) index -= 1;\n } else return isControl || (control == null ? void 0 : control.focus());\n event.preventDefault();\n (_a2 = items[Math.max(0, index)] || control) == null ? void 0 : _a2.focus();\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","IS_BROWSER","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","FOCUS_OUTLINE","UHTMLElement","attr","el","name","events","action","element","rest","type","on","off","observers","mutationObserver","options","observer","detail","asButton","event","isClick","getRoot","node","_a2","root","id","useId","createElement","tagName","text2","attrs","val","customElements","instance","LIVE","LIVE_SR_FIX","speak","setValue","input","data","_b","proto","IS_PRESS","isMouseDown","EVENTS","EVENT_ONCE","IS_FIREFOX_DESKTOP","IS_MOBILE","FALSE","TEXTS","UHTMLComboboxElement","render","syncInputValue","_","target","onBlur","onClick","onFocus","onInput","onKeyDown","tag","text","isData","self","_focus","_texts","items","control","list","multiple","label","edits","addedNodes","removedNodes","shouldAnnounce","inputMode","nextFocus","_a3","idx","select","item2","option","label2","aria","opt","item","syncClearWithInput","syncOptionsWithItems","_speak","values","dispatchMatch","change","creatable","query","match","o","dispatchChange","removable","add","remove","i","onBlurred","x","y","clear","top","right","bottom","left","repeat","isControl","inText","index","form"],"mappings":"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","x_google_ignoreList":[0]}