@mattilsynet/design 3.2.2 → 3.2.4

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.
@@ -19,7 +19,7 @@ class r extends g {
19
19
  }
20
20
  constructor() {
21
21
  super(), this.attachShadow({ mode: "open" }).append(m("figure")), C(this, `@layer leaflet{${h}}
22
- @layer mt.v3-2-2design{${b}`);
22
+ @layer mt.v3-2-4design{${b}`);
23
23
  }
24
24
  connectedCallback() {
25
25
  const t = this.shadowRoot?.lastElementChild, e = a(this, "data-cluster") ?? "false", o = new i.TileLayer(k, {
@@ -1,10 +1,10 @@
1
1
  import { DSFieldElement as p } from "@digdir/designsystemet-web";
2
- import n from "./styles.module.css.js";
3
- import { getByCSSModule as l, isBrowser as i, onHotReload as y, on as u, QUICK_EVENT as S, onMutation as E, attr as s, debounce as D } from "./utils.js";
2
+ import l from "./styles.module.css.js";
3
+ import { getByCSSModule as n, isBrowser as d, onHotReload as y, on as u, QUICK_EVENT as S, onMutation as E, attr as s, debounce as D } from "./utils.js";
4
4
  const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (t, e, r) => window.dsWarnings === !1 || console.warn(
5
5
  `\x1B[1m@mattilsynet/design:\x1B[m ${t} is deprecated, please use ${e}:`,
6
6
  r
7
- ), A = l("togglegroup"), g = n.button.split(" "), L = () => {
7
+ ), A = n("togglegroup"), g = l.button.split(" "), L = () => {
8
8
  for (const t of A) {
9
9
  a(t) && !t.hasAttribute("data-toggle-group") && (s(t, "data-toggle-group", "Valgknapper"), o(
10
10
  'Only setting class="styles.togglegroup"',
@@ -18,21 +18,21 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
18
18
  e
19
19
  ));
20
20
  }
21
- }, O = l("breadcrumbs"), C = () => {
21
+ }, O = n("breadcrumbs"), C = () => {
22
22
  for (const t of O)
23
- a(t) && t.nodeName !== "DS-BREADCRUMBS" && (t.classList.add(...n.breadcrumbs.split(" ")), o(
23
+ a(t) && t.nodeName !== "DS-BREADCRUMBS" && (t.classList.add(...l.breadcrumbs.split(" ")), o(
24
24
  'Only setting class="styles.breadcrumbs"',
25
25
  '<ds-breadcrumbs class="styles.breadcrumbs">',
26
26
  t
27
27
  ));
28
- }, N = l("errorsummary"), R = () => {
28
+ }, N = n("errorsummary"), R = () => {
29
29
  for (const t of N)
30
30
  a(t) && t.nodeName !== "DS-ERROR-SUMMARY" && o(
31
31
  'Only setting class="styles.errorsummary"',
32
32
  '<ds-error-summary class="styles.errorsummary">',
33
33
  t
34
34
  );
35
- }, w = l("dialog"), b = () => {
35
+ }, w = n("dialog"), b = () => {
36
36
  for (const t of w) {
37
37
  if (a(t)) {
38
38
  const e = s(t, "data-closedby");
@@ -56,7 +56,7 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
56
56
  for (const t of document.querySelectorAll("[data-count]"))
57
57
  if (a(t)) {
58
58
  const e = s(t, "data-count");
59
- t.classList.add(...n.validation.split(" ")), s(t, "data-limit", e), o(
59
+ t.classList.add(...l.validation.split(" ")), s(t, "data-limit", e), o(
60
60
  `data-count="${e}"`,
61
61
  `class="styles.validation" data-field="counter" data-limit="${e}"`,
62
62
  t
@@ -76,13 +76,13 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
76
76
  t
77
77
  );
78
78
  }
79
- }, h = i() ? document.getElementsByTagName("u-tabs") : [], I = () => {
79
+ }, h = d() ? document.getElementsByTagName("u-tabs") : [], I = () => {
80
80
  for (const t of h) a(t) && o("u-tabs", "ds-tabs", t);
81
- }, d = n.suggestion.split(" "), v = i() ? document.getElementsByTagName("u-combobox") : [], $ = i() ? document.getElementsByTagName("ds-suggestion") : [], M = () => {
81
+ }, i = l.suggestion.split(" "), v = d() ? document.getElementsByTagName("u-combobox") : [], $ = d() ? document.getElementsByTagName("ds-suggestion") : [], M = () => {
82
82
  for (const t of v)
83
- a(t) && (t.classList.add(...d), o("<u-combobox>", '<ds-suggestion class="styles.suggestion">', t));
83
+ a(t) && (t.classList.add(...i), o("<u-combobox>", '<ds-suggestion class="styles.suggestion">', t));
84
84
  for (const t of $)
85
- a(t) && !t.classList.contains(d[0]) && (t.classList.add(...d), o(
85
+ a(t) && !t.classList.contains(i[0]) && (t.classList.add(...i), o(
86
86
  "Only using <ds-suggestion>",
87
87
  '<ds-suggestion class="styles.suggestion">',
88
88
  t
@@ -93,7 +93,7 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
93
93
  e && !t?.closest('a,button,label,input,select,textarea,[role="button"]') && e.click();
94
94
  const m = t?.closest("dialog");
95
95
  m && t?.closest('[data-command="close"]') && m.close();
96
- }, k = l("field"), c = /* @__PURE__ */ new Set(), F = () => {
96
+ }, k = n("field"), c = /* @__PURE__ */ new Set(), F = () => {
97
97
  for (const t of k)
98
98
  t.nodeName !== "DS-FIELD" && (a(t) || o(
99
99
  'Only setting class="styles.field"',
@@ -103,14 +103,14 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
103
103
  }, G = () => {
104
104
  for (const t of c)
105
105
  p.prototype.disconnectedCallback.call(t), c.delete(t);
106
- }, x = `[data-description], .${n.field.split(" ")[0]} label + p`, q = () => {
106
+ }, x = `[data-description], .${l.field.split(" ")[0]} label + p`, q = () => {
107
107
  for (const t of document.querySelectorAll(x))
108
108
  a(t) && t.getAttribute("data-field") !== "description" && (s(t, "data-field", "description"), o(
109
109
  "Descriptions created by data-description of <p> only",
110
110
  'data-field="data-description"',
111
111
  t
112
112
  ));
113
- }, P = l("validation"), _ = () => {
113
+ }, P = n("validation"), _ = () => {
114
114
  for (const t of P)
115
115
  a(t) && !t.hasAttribute("data-field") && (s(t, "data-field", "validation"), o(
116
116
  'Only setting class="styles.validation"',
@@ -121,7 +121,7 @@ const f = /* @__PURE__ */ new WeakSet(), a = (t) => !f.has(t) && f.add(t), o = (
121
121
  for (const t of document.querySelectorAll("[popover][data-position]"))
122
122
  a(t) && (s(t, "data-placement", s(t, "data-position")), o("data-position", "data-placement", t));
123
123
  }, W = D(() => {
124
- B(), T(), C(), b(), R(), q(), _(), V(), F(), L(), M(), I();
124
+ d() && (B(), T(), C(), b(), R(), q(), _(), V(), F(), L(), M(), I());
125
125
  }, 200);
126
126
  y("deprecations", () => [
127
127
  G,
@@ -1 +1 @@
1
- {"version":3,"file":"deprecations.js","sources":["../designsystem/deprecations.ts"],"sourcesContent":["import { DSFieldElement } from \"@digdir/designsystemet-web\";\nimport styles from \"./styles.module.css\";\nimport {\n\tattr,\n\tdebounce,\n\tgetByCSSModule,\n\tisBrowser,\n\ton,\n\tonHotReload,\n\tonMutation,\n\tQUICK_EVENT,\n} from \"./utils\";\n\nconst DEPRECATIONS = new WeakSet<Element>();\nconst deprecate = (el: Element) =>\n\t!DEPRECATIONS.has(el) && DEPRECATIONS.add(el);\n\nconst warn = (from: string, to: string, el: Element) =>\n\twindow.dsWarnings === false ||\n\tconsole.warn(\n\t\t`\\x1B[1m@mattilsynet/design:\\x1B[m ${from} is deprecated, please use ${to}:`,\n\t\tel,\n\t);\n\n// Deprecate togglegroup without data-toggle-group attribute\nconst TOGGLEGROUPS = getByCSSModule(\"togglegroup\");\nconst CSS_BUTTON = styles.button.split(\" \");\nconst deprecateToggleGroup = () => {\n\tfor (const el of TOGGLEGROUPS) {\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-toggle-group\")) {\n\t\t\tattr(el, \"data-toggle-group\", \"Valgknapper\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.togglegroup\"',\n\t\t\t\t'data-toggle-group=\"LABEL-HERE\" attribute also for better accessibility',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n\t\tfor (const label of el.getElementsByTagName(\"label\")) {\n\t\t\tif (deprecate(label) && !label.classList.contains(CSS_BUTTON[0])) {\n\t\t\t\tlabel.classList.add(...CSS_BUTTON);\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.button\"',\n\t\t\t\t\t`<label class=\"styles.button\">`,\n\t\t\t\t\tlabel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst BREADCRUMBS = getByCSSModule(\"breadcrumbs\");\nconst deprecateBreadcrumbs = () => {\n\tfor (const el of BREADCRUMBS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-BREADCRUMBS\") {\n\t\t\tel.classList.add(...styles.breadcrumbs.split(\" \"));\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.breadcrumbs\"',\n\t\t\t\t'<ds-breadcrumbs class=\"styles.breadcrumbs\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst ERRORSUMMARYS = getByCSSModule(\"errorsummary\");\nconst deprecateErrorSummary = () => {\n\tfor (const el of ERRORSUMMARYS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-ERROR-SUMMARY\") {\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.errorsummary\"',\n\t\t\t\t'<ds-error-summary class=\"styles.errorsummary\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-variant and data-modal and data-closedby on dialogs\nconst DIALOGS = getByCSSModule(\"dialog\") as HTMLCollectionOf<HTMLDialogElement>;\nconst deprecateDialog = () => {\n\tfor (const el of DIALOGS) {\n\t\tif (deprecate(el)) {\n\t\t\tconst closedby = attr(el, \"data-closedby\");\n\t\t\tif (closedby) {\n\t\t\t\tattr(el, \"closedby\", closedby);\n\t\t\t\twarn(\n\t\t\t\t\t`<dialog data-closedby=\"${closedby}\">`,\n\t\t\t\t\t`<dialog closedby=\"${closedby}\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (el.hasAttribute(\"data-variant\")) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-variant=\"drawer\">',\n\t\t\t\t\t'<dialog data-placement=\"center|left|right|top|bottom\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (el.isConnected && el.showModal && el.close) {\n\t\t\tif (\n\t\t\t\tel.matches('[open][data-modal]:not([data-modal=\"false\"]):not(:modal)')\n\t\t\t) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-modal=\"true\">',\n\t\t\t\t\t'.showModal() or <button command=\"show-modal\" commandfor=\"DIALOG-ID\"></button>',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t\tattr(el, \"open\", null); // Using attribute instead of .close to avoid `close` event\n\t\t\t\tel.showModal();\n\t\t\t} else if (el.matches(\":modal:not([open])\")) {\n\t\t\t\tattr(el, \"open\", \"\"); // Set as open\n\t\t\t\tel.close(); // So we correctly can call .close, removing <dialog> from #top-layer\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate data-count in favor of data-limit\nconst deprecateCounter = () => {\n\tfor (const el of document.querySelectorAll(\"[data-count]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst count = attr(el, \"data-count\");\n\t\t\tel.classList.add(...styles.validation.split(\" \"));\n\t\t\tattr(el, \"data-limit\", count);\n\t\t\twarn(\n\t\t\t\t`data-count=\"${count}\"`,\n\t\t\t\t`class=\"styles.validation\" data-field=\"counter\" data-limit=\"${count}\"`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-command on buttons and other elements\nconst deprecateDataCommand = () => {\n\tfor (const el of document.querySelectorAll(\"[data-command]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst command = attr(el, \"data-command\");\n\n\t\t\tif (command === \"row\")\n\t\t\t\twarn(\n\t\t\t\t\t`<${el.nodeName.toLowerCase()} data-command=\"${command}\">`,\n\t\t\t\t\t`<tr data-clickdelegatefor=\"${el.nodeName}-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\telse\n\t\t\t\twarn(\n\t\t\t\t\t`<button data-command=\"${command}\">`,\n\t\t\t\t\t`<button command=\"${command?.replace(\"toggle-app-expanded\", \"show-modal\")}\" commandfor=\"TARGET-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t}\n};\n\n// Deprecate u-tabs\nconst TABS = isBrowser() ? document.getElementsByTagName(\"u-tabs\") : [];\nconst deprecateUTabs = () => {\n\tfor (const el of TABS) if (deprecate(el)) warn(\"u-tabs\", \"ds-tabs\", el);\n};\n\n// Deprecate u-combobox and add class to ds-suggestion\nconst CSS_SUGGESTION = styles.suggestion.split(\" \");\nconst OLD = isBrowser() ? document.getElementsByTagName(\"u-combobox\") : [];\nconst NEW = isBrowser() ? document.getElementsByTagName(\"ds-suggestion\") : [];\nconst deprecateUCombobox = () => {\n\tfor (const el of OLD)\n\t\tif (deprecate(el)) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\"<u-combobox>\", `<ds-suggestion class=\"styles.suggestion\">`, el);\n\t\t}\n\tfor (const el of NEW)\n\t\tif (deprecate(el) && !el.classList.contains(CSS_SUGGESTION[0])) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\n\t\t\t\t\"Only using <ds-suggestion>\",\n\t\t\t\t`<ds-suggestion class=\"styles.suggestion\">`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst handleCommandClick = ({ target: el }: Event) => {\n\tif (el instanceof Element === false) return;\n\tconst row = el?.closest(\"tr\")?.querySelector('[data-command=\"row\"]');\n\tconst click =\n\t\trow && !el?.closest('a,button,label,input,select,textarea,[role=\"button\"]');\n\tif (click) (row as HTMLElement).click(); // Forward click to data-command=\"row\" element\n\n\tconst dialog = el?.closest(\"dialog\");\n\tconst close = dialog && el?.closest('[data-command=\"close\"]');\n\tif (close) dialog.close();\n};\n\n// Deprecate fields without ds-field element\nconst FIELDS = getByCSSModule(\"field\");\nconst FIELD_UNBIND = new Set<Element>();\nconst deprecateField = () => {\n\tfor (const el of FIELDS)\n\t\tif (el.nodeName !== \"DS-FIELD\") {\n\t\t\tif (!deprecate(el))\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.field\"',\n\t\t\t\t\t'<ds-field class=\"styles.field\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\tif (!FIELD_UNBIND.has(el) && FIELD_UNBIND.add(el)) {\n\t\t\t\tDSFieldElement.prototype.connectedCallback.call(el as DSFieldElement);\n\t\t\t}\n\t\t}\n};\nconst unbindFields = () => {\n\tfor (const el of FIELD_UNBIND) {\n\t\tDSFieldElement.prototype.disconnectedCallback.call(el as DSFieldElement);\n\t\tFIELD_UNBIND.delete(el);\n\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst CSS_DESCRIPTIONS = `[data-description], .${styles.field.split(\" \")[0]} label + p`;\nconst deprecateFeildDescription = () => {\n\tfor (const el of document.querySelectorAll(CSS_DESCRIPTIONS))\n\t\tif (deprecate(el) && el.getAttribute(\"data-field\") !== \"description\") {\n\t\t\tattr(el, \"data-field\", \"description\");\n\t\t\twarn(\n\t\t\t\t\"Descriptions created by data-description of <p> only\",\n\t\t\t\t'data-field=\"data-description\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst VALIDATIONS = getByCSSModule(\"validation\");\nconst deprecateFieldValidation = () => {\n\tfor (const el of VALIDATIONS)\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-field\")) {\n\t\t\tattr(el, \"data-field\", \"validation\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.validation\"',\n\t\t\t\t'class=\"styles.validation\" data-field=\"validation\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst deprecatePopoverPosition = () => {\n\tfor (const el of document.querySelectorAll(\"[popover][data-position]\"))\n\t\tif (deprecate(el)) {\n\t\t\tattr(el, \"data-placement\", attr(el, \"data-position\"));\n\t\t\twarn(\"data-position\", \"data-placement\", el);\n\t\t}\n};\n\nconst handleDeprecations = debounce(() => {\n\tdeprecateCounter();\n\tdeprecateDataCommand();\n\tdeprecateBreadcrumbs();\n\tdeprecateDialog();\n\tdeprecateErrorSummary();\n\tdeprecateFeildDescription();\n\tdeprecateFieldValidation();\n\tdeprecatePopoverPosition();\n\tdeprecateField(); // Should run after other field deprecations to access correct data-attributes\n\tdeprecateToggleGroup();\n\tdeprecateUCombobox();\n\tdeprecateUTabs();\n}, 200);\n\nonHotReload(\"deprecations\", () => [\n\tunbindFields, // Return as cleanup function\n\ton(document, \"click\", handleCommandClick, QUICK_EVENT),\n\ton(document, \"toggle\", deprecateDialog, true),\n\tonMutation(document, handleDeprecations, {\n\t\tattributeFilter: [\n\t\t\t\"class\",\n\t\t\t\"data-command\",\n\t\t\t\"data-count\",\n\t\t\t\"data-description\",\n\t\t\t\"data-variant\",\n\t\t\t\"open\",\n\t\t],\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t}),\n]);\n"],"names":["DEPRECATIONS","deprecate","el","warn","from","to","TOGGLEGROUPS","getByCSSModule","CSS_BUTTON","styles","deprecateToggleGroup","attr","label","BREADCRUMBS","deprecateBreadcrumbs","ERRORSUMMARYS","deprecateErrorSummary","DIALOGS","deprecateDialog","closedby","deprecateCounter","count","deprecateDataCommand","command","TABS","isBrowser","deprecateUTabs","CSS_SUGGESTION","OLD","NEW","deprecateUCombobox","handleCommandClick","row","dialog","FIELDS","FIELD_UNBIND","deprecateField","DSFieldElement","unbindFields","CSS_DESCRIPTIONS","deprecateFeildDescription","VALIDATIONS","deprecateFieldValidation","deprecatePopoverPosition","handleDeprecations","debounce","onHotReload","on","QUICK_EVENT","onMutation"],"mappings":"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"}
1
+ {"version":3,"file":"deprecations.js","sources":["../designsystem/deprecations.ts"],"sourcesContent":["import { DSFieldElement } from \"@digdir/designsystemet-web\";\nimport styles from \"./styles.module.css\";\nimport {\n\tattr,\n\tdebounce,\n\tgetByCSSModule,\n\tisBrowser,\n\ton,\n\tonHotReload,\n\tonMutation,\n\tQUICK_EVENT,\n} from \"./utils\";\n\nconst DEPRECATIONS = new WeakSet<Element>();\nconst deprecate = (el: Element) =>\n\t!DEPRECATIONS.has(el) && DEPRECATIONS.add(el);\n\nconst warn = (from: string, to: string, el: Element) =>\n\twindow.dsWarnings === false ||\n\tconsole.warn(\n\t\t`\\x1B[1m@mattilsynet/design:\\x1B[m ${from} is deprecated, please use ${to}:`,\n\t\tel,\n\t);\n\n// Deprecate togglegroup without data-toggle-group attribute\nconst TOGGLEGROUPS = getByCSSModule(\"togglegroup\");\nconst CSS_BUTTON = styles.button.split(\" \");\nconst deprecateToggleGroup = () => {\n\tfor (const el of TOGGLEGROUPS) {\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-toggle-group\")) {\n\t\t\tattr(el, \"data-toggle-group\", \"Valgknapper\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.togglegroup\"',\n\t\t\t\t'data-toggle-group=\"LABEL-HERE\" attribute also for better accessibility',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n\t\tfor (const label of el.getElementsByTagName(\"label\")) {\n\t\t\tif (deprecate(label) && !label.classList.contains(CSS_BUTTON[0])) {\n\t\t\t\tlabel.classList.add(...CSS_BUTTON);\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.button\"',\n\t\t\t\t\t`<label class=\"styles.button\">`,\n\t\t\t\t\tlabel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst BREADCRUMBS = getByCSSModule(\"breadcrumbs\");\nconst deprecateBreadcrumbs = () => {\n\tfor (const el of BREADCRUMBS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-BREADCRUMBS\") {\n\t\t\tel.classList.add(...styles.breadcrumbs.split(\" \"));\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.breadcrumbs\"',\n\t\t\t\t'<ds-breadcrumbs class=\"styles.breadcrumbs\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate errorsummary without ds-error-summary element\nconst ERRORSUMMARYS = getByCSSModule(\"errorsummary\");\nconst deprecateErrorSummary = () => {\n\tfor (const el of ERRORSUMMARYS)\n\t\tif (deprecate(el) && el.nodeName !== \"DS-ERROR-SUMMARY\") {\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.errorsummary\"',\n\t\t\t\t'<ds-error-summary class=\"styles.errorsummary\">',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-variant and data-modal and data-closedby on dialogs\nconst DIALOGS = getByCSSModule(\"dialog\") as HTMLCollectionOf<HTMLDialogElement>;\nconst deprecateDialog = () => {\n\tfor (const el of DIALOGS) {\n\t\tif (deprecate(el)) {\n\t\t\tconst closedby = attr(el, \"data-closedby\");\n\t\t\tif (closedby) {\n\t\t\t\tattr(el, \"closedby\", closedby);\n\t\t\t\twarn(\n\t\t\t\t\t`<dialog data-closedby=\"${closedby}\">`,\n\t\t\t\t\t`<dialog closedby=\"${closedby}\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (el.hasAttribute(\"data-variant\")) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-variant=\"drawer\">',\n\t\t\t\t\t'<dialog data-placement=\"center|left|right|top|bottom\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (el.isConnected && el.showModal && el.close) {\n\t\t\tif (\n\t\t\t\tel.matches('[open][data-modal]:not([data-modal=\"false\"]):not(:modal)')\n\t\t\t) {\n\t\t\t\twarn(\n\t\t\t\t\t'<dialog data-modal=\"true\">',\n\t\t\t\t\t'.showModal() or <button command=\"show-modal\" commandfor=\"DIALOG-ID\"></button>',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\t\tattr(el, \"open\", null); // Using attribute instead of .close to avoid `close` event\n\t\t\t\tel.showModal();\n\t\t\t} else if (el.matches(\":modal:not([open])\")) {\n\t\t\t\tattr(el, \"open\", \"\"); // Set as open\n\t\t\t\tel.close(); // So we correctly can call .close, removing <dialog> from #top-layer\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Deprecate data-count in favor of data-limit\nconst deprecateCounter = () => {\n\tfor (const el of document.querySelectorAll(\"[data-count]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst count = attr(el, \"data-count\");\n\t\t\tel.classList.add(...styles.validation.split(\" \"));\n\t\t\tattr(el, \"data-limit\", count);\n\t\t\twarn(\n\t\t\t\t`data-count=\"${count}\"`,\n\t\t\t\t`class=\"styles.validation\" data-field=\"counter\" data-limit=\"${count}\"`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate data-command on buttons and other elements\nconst deprecateDataCommand = () => {\n\tfor (const el of document.querySelectorAll(\"[data-command]\"))\n\t\tif (deprecate(el)) {\n\t\t\tconst command = attr(el, \"data-command\");\n\n\t\t\tif (command === \"row\")\n\t\t\t\twarn(\n\t\t\t\t\t`<${el.nodeName.toLowerCase()} data-command=\"${command}\">`,\n\t\t\t\t\t`<tr data-clickdelegatefor=\"${el.nodeName}-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\telse\n\t\t\t\twarn(\n\t\t\t\t\t`<button data-command=\"${command}\">`,\n\t\t\t\t\t`<button command=\"${command?.replace(\"toggle-app-expanded\", \"show-modal\")}\" commandfor=\"TARGET-ID\">`,\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t}\n};\n\n// Deprecate u-tabs\nconst TABS = isBrowser() ? document.getElementsByTagName(\"u-tabs\") : [];\nconst deprecateUTabs = () => {\n\tfor (const el of TABS) if (deprecate(el)) warn(\"u-tabs\", \"ds-tabs\", el);\n};\n\n// Deprecate u-combobox and add class to ds-suggestion\nconst CSS_SUGGESTION = styles.suggestion.split(\" \");\nconst OLD = isBrowser() ? document.getElementsByTagName(\"u-combobox\") : [];\nconst NEW = isBrowser() ? document.getElementsByTagName(\"ds-suggestion\") : [];\nconst deprecateUCombobox = () => {\n\tfor (const el of OLD)\n\t\tif (deprecate(el)) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\"<u-combobox>\", `<ds-suggestion class=\"styles.suggestion\">`, el);\n\t\t}\n\tfor (const el of NEW)\n\t\tif (deprecate(el) && !el.classList.contains(CSS_SUGGESTION[0])) {\n\t\t\tel.classList.add(...CSS_SUGGESTION);\n\t\t\twarn(\n\t\t\t\t\"Only using <ds-suggestion>\",\n\t\t\t\t`<ds-suggestion class=\"styles.suggestion\">`,\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst handleCommandClick = ({ target: el }: Event) => {\n\tif (el instanceof Element === false) return;\n\tconst row = el?.closest(\"tr\")?.querySelector('[data-command=\"row\"]');\n\tconst click =\n\t\trow && !el?.closest('a,button,label,input,select,textarea,[role=\"button\"]');\n\tif (click) (row as HTMLElement).click(); // Forward click to data-command=\"row\" element\n\n\tconst dialog = el?.closest(\"dialog\");\n\tconst close = dialog && el?.closest('[data-command=\"close\"]');\n\tif (close) dialog.close();\n};\n\n// Deprecate fields without ds-field element\nconst FIELDS = getByCSSModule(\"field\");\nconst FIELD_UNBIND = new Set<Element>();\nconst deprecateField = () => {\n\tfor (const el of FIELDS)\n\t\tif (el.nodeName !== \"DS-FIELD\") {\n\t\t\tif (!deprecate(el))\n\t\t\t\twarn(\n\t\t\t\t\t'Only setting class=\"styles.field\"',\n\t\t\t\t\t'<ds-field class=\"styles.field\">',\n\t\t\t\t\tel,\n\t\t\t\t);\n\t\t\tif (!FIELD_UNBIND.has(el) && FIELD_UNBIND.add(el)) {\n\t\t\t\tDSFieldElement.prototype.connectedCallback.call(el as DSFieldElement);\n\t\t\t}\n\t\t}\n};\nconst unbindFields = () => {\n\tfor (const el of FIELD_UNBIND) {\n\t\tDSFieldElement.prototype.disconnectedCallback.call(el as DSFieldElement);\n\t\tFIELD_UNBIND.delete(el);\n\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst CSS_DESCRIPTIONS = `[data-description], .${styles.field.split(\" \")[0]} label + p`;\nconst deprecateFeildDescription = () => {\n\tfor (const el of document.querySelectorAll(CSS_DESCRIPTIONS))\n\t\tif (deprecate(el) && el.getAttribute(\"data-field\") !== \"description\") {\n\t\t\tattr(el, \"data-field\", \"description\");\n\t\t\twarn(\n\t\t\t\t\"Descriptions created by data-description of <p> only\",\n\t\t\t\t'data-field=\"data-description\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\n// Deprecate validation without data-field=\"validation\"\nconst VALIDATIONS = getByCSSModule(\"validation\");\nconst deprecateFieldValidation = () => {\n\tfor (const el of VALIDATIONS)\n\t\tif (deprecate(el) && !el.hasAttribute(\"data-field\")) {\n\t\t\tattr(el, \"data-field\", \"validation\");\n\t\t\twarn(\n\t\t\t\t'Only setting class=\"styles.validation\"',\n\t\t\t\t'class=\"styles.validation\" data-field=\"validation\"',\n\t\t\t\tel,\n\t\t\t);\n\t\t}\n};\n\nconst deprecatePopoverPosition = () => {\n\tfor (const el of document.querySelectorAll(\"[popover][data-position]\"))\n\t\tif (deprecate(el)) {\n\t\t\tattr(el, \"data-placement\", attr(el, \"data-position\"));\n\t\t\twarn(\"data-position\", \"data-placement\", el);\n\t\t}\n};\n\nconst handleDeprecations = debounce(() => {\n\tif (!isBrowser()) return; // Check if document is still available, since this can run in test environments after document is destroyed\n\tdeprecateCounter();\n\tdeprecateDataCommand();\n\tdeprecateBreadcrumbs();\n\tdeprecateDialog();\n\tdeprecateErrorSummary();\n\tdeprecateFeildDescription();\n\tdeprecateFieldValidation();\n\tdeprecatePopoverPosition();\n\tdeprecateField(); // Should run after other field deprecations to access correct data-attributes\n\tdeprecateToggleGroup();\n\tdeprecateUCombobox();\n\tdeprecateUTabs();\n}, 200);\n\nonHotReload(\"deprecations\", () => [\n\tunbindFields, // Return as cleanup function\n\ton(document, \"click\", handleCommandClick, QUICK_EVENT),\n\ton(document, \"toggle\", deprecateDialog, true),\n\tonMutation(document, handleDeprecations, {\n\t\tattributeFilter: [\n\t\t\t\"class\",\n\t\t\t\"data-command\",\n\t\t\t\"data-count\",\n\t\t\t\"data-description\",\n\t\t\t\"data-variant\",\n\t\t\t\"open\",\n\t\t],\n\t\tattributes: true,\n\t\tchildList: true,\n\t\tsubtree: true,\n\t}),\n]);\n"],"names":["DEPRECATIONS","deprecate","el","warn","from","to","TOGGLEGROUPS","getByCSSModule","CSS_BUTTON","styles","deprecateToggleGroup","attr","label","BREADCRUMBS","deprecateBreadcrumbs","ERRORSUMMARYS","deprecateErrorSummary","DIALOGS","deprecateDialog","closedby","deprecateCounter","count","deprecateDataCommand","command","TABS","isBrowser","deprecateUTabs","CSS_SUGGESTION","OLD","NEW","deprecateUCombobox","handleCommandClick","row","dialog","FIELDS","FIELD_UNBIND","deprecateField","DSFieldElement","unbindFields","CSS_DESCRIPTIONS","deprecateFeildDescription","VALIDATIONS","deprecateFieldValidation","deprecatePopoverPosition","handleDeprecations","debounce","onHotReload","on","QUICK_EVENT","onMutation"],"mappings":"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"}
@@ -0,0 +1,288 @@
1
+ var Y = Object.defineProperty, R = Object.getOwnPropertySymbols, z = Object.prototype.hasOwnProperty, G = Object.prototype.propertyIsEnumerable, $ = (t, e, o) => e in t ? Y(t, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : t[e] = o, J = (t, e) => {
2
+ for (var o in e || (e = {}))
3
+ z.call(e, o) && $(t, o, e[o]);
4
+ if (R)
5
+ for (var o of R(e))
6
+ G.call(e, o) && $(t, o, e[o]);
7
+ return t;
8
+ }, T = () => typeof window < "u" && typeof window.document < "u" && typeof window.navigator < "u", g = T(), k = g ? navigator.userAgent : "", P = /android/i.test(k), Q = /firefox/i.test(k), B = /iPad|iPhone|iPod/.test(k), D, Z = g && // @ts-expect-error Typescript has not implemented userAgentData yet https://stackoverflow.com/a/71392474
9
+ /^Mac/i.test(((D = navigator.userAgentData) == null ? void 0 : D.platform) || navigator.platform), tt = g && window.CSSStyleSheet && document.adoptedStyleSheets, H = { once: !0, capture: !0, passive: !0 }, et = ":host(:not([hidden])) { display: block }", ot = "outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color", nt = `${P ? "data" : "aria"}-multiselectable`, it = typeof HTMLElement > "u" ? class {
10
+ } : HTMLElement, s = (t, e, o) => o === void 0 ? t.getAttribute(e) : (o === null ? t.removeAttribute(e) : t.getAttribute(e) !== o && t.setAttribute(e, o), null), L = (t, ...e) => {
11
+ const [o, ...n] = e;
12
+ for (const i of o.split(" ")) t.addEventListener(i, ...n);
13
+ return () => K(t, ...e);
14
+ }, K = (t, ...e) => {
15
+ const [o, ...n] = e;
16
+ for (const i of o.split(" ")) t.removeEventListener(i, ...n);
17
+ }, rt = (t, e) => {
18
+ const o = t.shadowRoot || t.attachShadow({ mode: "open" });
19
+ if (o.querySelector("slot") || o.append(y("slot")), !o.querySelector("style"))
20
+ if (!tt) o.append(y("style", null, e));
21
+ else {
22
+ const n = new CSSStyleSheet();
23
+ n.replaceSync(e), o.adoptedStyleSheets = [n];
24
+ }
25
+ return o;
26
+ }, at = (t, e, o) => {
27
+ const n = new MutationObserver((r) => {
28
+ if (!T() || !t.isConnected) return i();
29
+ e(t, r);
30
+ }), i = Object.assign(() => n.disconnect(), {
31
+ takeRecords: () => n.takeRecords()
32
+ // Expose takeRecords - useful if mutating a attribute that is observed
33
+ });
34
+ return e(t), n.observe(t, o), i;
35
+ }, lt = (t) => {
36
+ var e;
37
+ const o = ((e = t.getRootNode) == null ? void 0 : e.call(t)) || t.ownerDocument;
38
+ return o instanceof Document || o instanceof ShadowRoot ? o : document;
39
+ }, O = (t) => lt(t).activeElement, st = (t) => {
40
+ var e;
41
+ const o = s(t, "aria-label") || "";
42
+ return [
43
+ ...(((e = s(t, "aria-labelledby")) == null ? void 0 : e.split(" ")) || []).map((i) => document.getElementById(i.trim() || "-")),
44
+ // Get all labelledby elements
45
+ ...Array.from(t.labels || [])
46
+ // Get all <label> elements
47
+ ].reduce((i, r) => {
48
+ var l;
49
+ return i || ((l = r?.innerText) == null ? void 0 : l.trim()) || "";
50
+ }, o).trim();
51
+ }, ut = (t) => {
52
+ if (!t || !g) return null;
53
+ if (window.uElementsId || (window.uElementsId = {}), !t.id) {
54
+ const e = t.nodeName.toLowerCase();
55
+ window.uElementsId[e] || (window.uElementsId[e] = 1), t.id = `:${e}${window.uElementsId[e]++}`;
56
+ }
57
+ return t.id;
58
+ }, y = (t, e, o) => {
59
+ const n = document.createElement(t);
60
+ if (o && (n.textContent = o), e) for (const [i, r] of Object.entries(e)) s(n, i, r);
61
+ return n;
62
+ }, ct = {
63
+ define: (t, e) => !T() || window.customElements.get(t) || window.customElements.define(t, e)
64
+ }, V = (t, e, o = "") => {
65
+ var n, i;
66
+ const r = { bubbles: !0, composed: !0, data: e, inputType: o }, l = HTMLInputElement.prototype;
67
+ t.dispatchEvent(new InputEvent("beforeinput", r)), (i = (n = Object.getOwnPropertyDescriptor(l, "value")) == null ? void 0 : n.set) == null || i.call(t, e), t.dispatchEvent(new InputEvent("input", r)), t.dispatchEvent(new Event("change", { bubbles: !0 }));
68
+ }, I = /* @__PURE__ */ new WeakSet(), q = (t, e) => (e?.type === "pointerdown" && (I.add(t), L(document, "pointerup", () => I.delete(t), H)), I.has(t)), dt = (t, e = "<slot></slot>") => `<template shadowrootmode="open">${e}<style>${t}</style></template>`, vt = (t) => {
69
+ const e = s(t, "form");
70
+ s(t, "form", "#"), setTimeout(pt, 0, t, e);
71
+ }, pt = (t, e) => s(t, "form", e), _ = (t) => {
72
+ var e;
73
+ return ((e = t?.textContent) == null ? void 0 : e.trim()) || "";
74
+ }, m, mt = 0, M = 0, x = (t) => {
75
+ clearTimeout(M), m || (m = y("div", { "aria-live": "assertive" }), m.style.overflow = "hidden", m.style.position = "fixed", m.style.whiteSpace = "nowrap", m.style.width = "1px"), m.isConnected || document.body.append(m), t === "" && (m.textContent = ""), t && (m.textContent = `${t}${mt++ % 2 ? " " : ""}`, M = setTimeout(x, !Z && Q ? 2e3 : 300, ""));
76
+ }, U = `${et}
77
+ :is(:host(:not([data-multiple])), :host([data-multiple="false"])) [part="items"] { display: none }
78
+ [role="listbox"] { display: contents }
79
+ ::slotted(button[type="reset"]),::slotted(del) { font: inherit; border: 0; padding: 0; background: none; color: inherit; cursor: pointer; text-decoration: none }
80
+ ::slotted(data) { cursor: pointer; pointer-events: none }
81
+ ::slotted(data)::after { padding-inline: .5ch; pointer-events: auto }
82
+ ::slotted(data)::after,::slotted(button[type="reset"]:empty)::before,::slotted(del:empty)::before { content: '\\00D7'; content: '\\00D7' / '' }
83
+ ::slotted(data:focus),::slotted(del:focus),::slotted(button[type="reset"]:focus) { ${ot} }`, Lt = dt(U), f = "aria-label", ft = 'button[type="reset"],del', ht = 'datalist,[role="listbox"]', _t = 'option,[role="option"]', N = "blur focus click input keydown pointerdown", S = "false", w = {
84
+ added: "Added",
85
+ clear: "Clear input",
86
+ empty: "No selected",
87
+ found: "Navigate left to find %d selected",
88
+ invalid: "Invalid value",
89
+ items: "Selected",
90
+ // Note: Not announced by NVDA
91
+ of: "of",
92
+ remove: "Press to remove",
93
+ removed: "Removed"
94
+ }, bt = class extends it {
95
+ constructor() {
96
+ super(), this._focusMoved = !1, this._itemSingleVale = "", this._speak = "", this._texts = J({}, w), this._value = "";
97
+ const t = rt(this, U);
98
+ this._listbox = t.querySelector('[role="listbox"]') || y("div"), this._listbox.innerHTML = '<slot name="items"></slot>', s(this._listbox, "aria-orientation", "horizontal"), s(this._listbox, "role", "listbox"), s(this._listbox, "part", "items"), s(this._listbox, "tabindex", "-1"), t.prepend(this._listbox);
99
+ }
100
+ // Locally store value to store value before input-click
101
+ static get observedAttributes() {
102
+ return Object.keys(w).map((t) => `data-sr-${t}`);
103
+ }
104
+ connectedCallback() {
105
+ L(this, N, this, !0), this._umutate = at(this, It, {
106
+ attributeFilter: ["id", "value", "role"],
107
+ // Respond to changes in <data> value or id or role of <datalist>
108
+ attributes: !0,
109
+ characterData: !0,
110
+ // Respond to changes in <data> textContent
111
+ childList: !0,
112
+ subtree: !0
113
+ }), E(this), A(this);
114
+ }
115
+ attributeChangedCallback(t, e, o) {
116
+ const n = t.split("data-sr-")[1];
117
+ w[n] && (this._texts[n] = o || w[n]), n === "clear" && this.clear && s(this.clear, f, this._texts.clear);
118
+ }
119
+ disconnectedCallback() {
120
+ var t;
121
+ K(this, N, this, !0), (t = this._umutate) == null || t.call(this), this._umutate = this._list = this._options = this._match = void 0, this._items = this._clear = this._control = this._select = void 0;
122
+ }
123
+ handleEvent(t) {
124
+ var e, o;
125
+ (e = this.control) != null && e.disabled || (o = this.control) != null && o.readOnly || (t.type === "blur" && yt(this), t.type === "click" && wt(this, t), t.type === "focus" && x(), t.type === "input" && Et(this, t), t.type === "keydown" && gt(this, t), t.type === "pointerdown" && q(this, t));
126
+ }
127
+ get multiple() {
128
+ var t;
129
+ return ((t = s(this, "data-multiple")) != null ? t : S) !== S;
130
+ }
131
+ set multiple(t) {
132
+ s(this, "data-multiple", t ? "" : null);
133
+ }
134
+ get creatable() {
135
+ var t;
136
+ return ((t = s(this, "data-creatable")) != null ? t : S) !== S;
137
+ }
138
+ set creatable(t) {
139
+ s(this, "data-creatable", t ? "" : null);
140
+ }
141
+ get control() {
142
+ var t;
143
+ return (t = this._control) != null && t.isConnected || (this._control = this.querySelector("input")), this._control;
144
+ }
145
+ get list() {
146
+ var t;
147
+ return (t = this._list) != null && t.isConnected || (this._list = this.querySelector(ht), this._options = void 0), this._list;
148
+ }
149
+ get clear() {
150
+ var t;
151
+ return (t = this._clear) != null && t.isConnected || (this._clear = this.querySelector(ft)), this._clear;
152
+ }
153
+ get items() {
154
+ return this._items || (this._items = this.getElementsByTagName("data")), this._items;
155
+ }
156
+ get options() {
157
+ var t, e, o;
158
+ const n = !this._options && ((e = (t = this.list) == null ? void 0 : t.querySelector(_t)) == null ? void 0 : e.nodeName);
159
+ return n && (this._options = (o = this.list) == null ? void 0 : o.getElementsByTagName(n)), this._options || this.getElementsByTagName("-");
160
+ }
161
+ get values() {
162
+ return Array.from(this.items, ({ value: t }) => t);
163
+ }
164
+ }, j = (t) => {
165
+ var e;
166
+ const { creatable: o, control: n, options: i, multiple: r } = t, l = ((e = n?.value) == null ? void 0 : e.trim()) || "", u = l.toLowerCase() || null;
167
+ let a = [...i].find((c) => c.label.trim().toLowerCase() === u);
168
+ const d = { bubbles: !0, cancelable: !0, detail: a };
169
+ if (t.dispatchEvent(new CustomEvent("comboboxbeforematch", d)) || (a = [...i].find((c) => c.selected)), r) W(t);
170
+ else for (const c of i) c.selected = c === a;
171
+ return !a && o && l ? { value: l, label: l } : a && { value: a.value, label: a.label };
172
+ }, b = (t, e, o = !0) => {
173
+ const { _texts: n, control: i, items: r, multiple: l } = t;
174
+ if (!e)
175
+ return l ? x(n.invalid) : !i?.value && r[0] ? b(t, r[0]) : E(t);
176
+ const u = [...r].findIndex((p) => p.value === e.value), a = r[u], d = a === O(t) && (l && (r[u - 1] || r[u + 1]) || i);
177
+ if (a && !o) return E(t);
178
+ d && d.focus(), t._focusMoved = !!d;
179
+ const c = y("data", { value: e.value }, e.label || e.value), v = { bubbles: !0, cancelable: !0, detail: a || c };
180
+ if (t.dispatchEvent(new CustomEvent("comboboxbeforeselect", v))) {
181
+ if (!l) for (const p of [...r]) p.remove();
182
+ a ? a.remove() : i?.insertAdjacentElement("beforebegin", c), t.dispatchEvent(new CustomEvent("comboboxafterselect", v));
183
+ }
184
+ }, yt = (t) => q(t) || setTimeout(St, 0, t), St = (t) => t.multiple || t.contains(O(t)) || b(t, t._match, !1), wt = (t, e) => {
185
+ const { clientX: o, clientY: n, target: i } = e, { clear: r, control: l, items: u } = t;
186
+ if (l && r?.contains(i))
187
+ return e.preventDefault(), V(l, "", "deleteContentBackward"), l.focus();
188
+ for (const a of u) {
189
+ if (a.contains(i)) return b(t, a);
190
+ const d = a.getBoundingClientRect(), { top: c, right: v, bottom: p, left: C, width: h, height: X } = d;
191
+ if (h && X && n >= c && n <= p && o >= C && o <= v) return a.focus();
192
+ }
193
+ i === t && l?.focus();
194
+ }, Et = (t, e) => {
195
+ var o;
196
+ const { control: n, options: i, multiple: r } = t, l = n?.value || null, u = e instanceof InputEvent ? !e.inputType || e.inputType === "insertReplacementText" : !!n?.value;
197
+ if (u || (t._value = n?.value || ""), u) {
198
+ (o = e.stopImmediatePropagation) == null || o.call(e);
199
+ const a = [...i].find((d) => d.value === l);
200
+ if (n && (n.value = t._value), a) return b(t, a, r);
201
+ } else r || (t._match = j(t));
202
+ A(t);
203
+ }, gt = (t, e) => {
204
+ e.ctrlKey || e.metaKey || e.shiftKey || e.key === "Alt" || (t.control === e.target ? xt(t, e) : Ct(t, e));
205
+ }, xt = (t, e) => {
206
+ var o;
207
+ const { _match: n, clear: i, control: r, items: l, multiple: u } = t;
208
+ (e.key === "ArrowLeft" || e.key === "Backspace") && !r?.selectionEnd && ((o = l[l.length - 1]) == null || o.focus()), e.key === "Enter" && r && (vt(r), b(t, u ? j(t) : n, u)), e.key === "Tab" && !e.shiftKey && i && !i.hidden && (e.preventDefault(), s(i, "aria-hidden", "false"), s(i, "tabindex", "0"), i.focus(), L(i, "blur", () => A(t), H));
209
+ }, Ct = (t, e) => {
210
+ var o, n, i;
211
+ const { clear: r, control: l, items: u } = t, { key: a, repeat: d, target: c } = e, v = [...u].indexOf(c);
212
+ if ((a === " " || a === "Enter") && (u[v] || c === r))
213
+ return (o = u[v] || r) == null || o.click(), e.preventDefault();
214
+ if (u[v]) {
215
+ if (a === "ArrowLeft") return (n = u[v - 1]) == null ? void 0 : n.focus();
216
+ if (a === "ArrowRight") return (i = u[v + 1] || l) == null ? void 0 : i.focus();
217
+ if (a === "Backspace")
218
+ return e.preventDefault(), d || b(t, u[v]);
219
+ l?.focus();
220
+ }
221
+ }, It = (t, e) => {
222
+ var o;
223
+ if (!t.control) return;
224
+ const { _texts: n, control: i, items: r, list: l, multiple: u } = t, a = [];
225
+ for (const { addedNodes: p, removedNodes: C } of e || []) {
226
+ for (const h of p) h instanceof HTMLDataElement && a.unshift(h);
227
+ for (const h of C) h instanceof HTMLDataElement && a.push(h);
228
+ }
229
+ const d = O(t);
230
+ if ((u ? a.length === 1 : a[0] === d) && t.contains(d)) {
231
+ const p = i ? s(i, f) : null;
232
+ t._speak = `${n[a[0].isConnected ? "added" : "removed"]} ${_(a[0])}, `, s(i, f, `${t._speak}${st(i)}`), t._focusMoved || setTimeout(() => x(t._speak.slice(0, -2))), setTimeout(Tt, 300, t, p);
233
+ }
234
+ if (!u) {
235
+ const p = _(r[0]);
236
+ p !== t._itemSingleVale && E(t), t._itemSingleVale = p;
237
+ }
238
+ F(t), W(t), kt(t);
239
+ const v = `${r.length ? n.found.replace("%d", `${r.length}`) : n.empty}`;
240
+ s(i, "aria-description", u ? v : null), s(i, "list", ut(l)), s(t._listbox, f, n.items), (o = t._umutate) == null || o.takeRecords();
241
+ }, Tt = (t, e) => {
242
+ t._speak = "", t.control && s(t.control, f, e), F(t);
243
+ }, F = (t) => {
244
+ const { _texts: e, _speak: o, items: n } = t;
245
+ let i = 0;
246
+ for (const r of n) {
247
+ const l = `${o}${_(r)}, ${e.remove}${B ? `, ${++i} ${e.of} ${n.length}` : ""}`;
248
+ s(r, f, l), s(r, "role", "option"), s(r, "slot", "items"), s(r, "tabindex", "-1"), s(r, "value", r.value || _(r));
249
+ }
250
+ }, kt = (t) => {
251
+ var e, o;
252
+ if ((e = t._select) != null && e.isConnected || (t._select = t.querySelector("select")), !t._select) return;
253
+ const { _select: n, items: i, multiple: r } = t, l = [];
254
+ let u = 0;
255
+ s(n, "multiple", r ? "" : null);
256
+ for (const a of i) {
257
+ const d = n?.options[u++], c = _(a), v = a?.value;
258
+ d ? Object.assign(d, {
259
+ defaultSelected: !0,
260
+ selected: !0,
261
+ text: c,
262
+ value: v
263
+ }) : l.push(new Option(c, v, !0, !0));
264
+ }
265
+ if (l.length) n.append(...l);
266
+ else for (const a of [...n.options].slice(u)) a.remove();
267
+ (o = t._umutate) == null || o.takeRecords();
268
+ }, A = (t) => {
269
+ if (!t.clear) return;
270
+ const { clear: e, control: o } = t, n = !o?.value || o?.disabled || o?.readOnly;
271
+ e.nodeName === "DEL" && s(e, "role", "button"), s(e, f) || s(e, f, t._texts.clear), s(e, "aria-hidden", `${B || P}`), s(e, "hidden", n ? "" : null), s(e, "tabindex", "-1");
272
+ }, W = (t) => {
273
+ if (!t.list) return;
274
+ const { _texts: e, list: o, multiple: n, options: i, values: r } = t;
275
+ s(o, "data-sr-of", e.of), s(o, nt, `${n}`);
276
+ for (const l of i) l.selected = r.includes(l.value);
277
+ }, E = (t) => {
278
+ if (!t.control || t.multiple) return;
279
+ const { control: e, items: o } = t, n = _(o[0]), i = n ? "insertText" : "deleteContentBackward";
280
+ n !== e.value && V(e, n, i);
281
+ };
282
+ ct.define("u-combobox", bt);
283
+ export {
284
+ bt as UHTMLComboboxElement,
285
+ Lt as UHTMLComboboxShadowRoot,
286
+ U as UHTMLComboboxStyle
287
+ };
288
+ //# sourceMappingURL=u-combobox.js.map
@@ -0,0 +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 isBrowser = () => typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.navigator !== \"undefined\";\nvar IS_BROWSER = isBrowser();\nvar AGENT = IS_BROWSER ? navigator.userAgent : \"\";\nvar IS_ANDROID = /android/i.test(AGENT);\nvar IS_FIREFOX = /firefox/i.test(AGENT);\nvar IS_IOS = /iPad|iPhone|iPod/.test(AGENT);\nvar _a;\nvar IS_MAC = IS_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 SUPPORTS_CONSTRUCTED_CSS = IS_BROWSER && window.CSSStyleSheet && document.adoptedStyleSheets;\nvar EVENT_ONCE = { once: true, capture: true, passive: true };\nvar DISPLAY_BLOCK = \":host(:not([hidden])) { display: block }\";\nvar FOCUS_OUTLINE = `outline: 1px dotted; outline: 5px auto Highlight; outline: 5px auto -webkit-focus-ring-color`;\nvar SAFE_MULTISELECTABLE = `${IS_ANDROID ? \"data\" : \"aria\"}-multiselectable`;\nvar UHTMLElement = typeof HTMLElement === \"undefined\" ? class {\n} : HTMLElement;\nvar 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 on = (el, ...rest) => {\n const [types, ...options] = rest;\n for (const type of types.split(\" \")) el.addEventListener(type, ...options);\n return () => off(el, ...rest);\n};\nvar off = (el, ...rest) => {\n const [types, ...options] = rest;\n for (const type of types.split(\" \")) el.removeEventListener(type, ...options);\n};\nvar attachStyle = (el, css) => {\n const root = el.shadowRoot || el.attachShadow({ mode: \"open\" });\n if (!root.querySelector(\"slot\")) root.append(tag(\"slot\"));\n if (!root.querySelector(\"style\")) {\n if (!SUPPORTS_CONSTRUCTED_CSS) root.append(tag(\"style\", null, css));\n else {\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(css);\n root.adoptedStyleSheets = [sheet];\n }\n }\n return root;\n};\nvar onMutation = (el, callback, options) => {\n const observer = new MutationObserver((records) => {\n if (!isBrowser() || !el.isConnected) return cleanup();\n callback(el, records);\n });\n const cleanup = Object.assign(() => observer.disconnect(), {\n takeRecords: () => observer.takeRecords()\n // Expose takeRecords - useful if mutating a attribute that is observed\n });\n callback(el);\n observer.observe(el, options);\n return cleanup;\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 getFocusedElement = (node) => getRoot(node).activeElement;\nvar getLabel = (el) => {\n var _a2;\n const label = attr(el, \"aria-label\") || \"\";\n const labels = ((_a2 = attr(el, \"aria-labelledby\")) == null ? void 0 : _a2.split(\" \")) || [];\n return [\n ...labels.map((id) => document.getElementById(id.trim() || \"-\")),\n // Get all labelledby elements\n ...Array.from(el.labels || [])\n // Get all <label> elements\n ].reduce((acc, el2) => {\n var _a3;\n return acc || ((_a3 = el2 == null ? void 0 : el2.innerText) == null ? void 0 : _a3.trim()) || \"\";\n }, label).trim();\n};\nvar useId = (el) => {\n if (!el || !IS_BROWSER) return null;\n if (!window.uElementsId) window.uElementsId = {};\n if (!el.id) {\n const node = el.nodeName.toLowerCase();\n if (!window.uElementsId[node]) window.uElementsId[node] = 1;\n el.id = `:${node}${window.uElementsId[node]++}`;\n }\n return el.id;\n};\nvar tag = (tagName, attrs, content) => {\n const el = document.createElement(tagName);\n if (content) el.textContent = content;\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) => !isBrowser() || window.customElements.get(name) || window.customElements.define(name, instance)\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 = /* @__PURE__ */ new WeakSet();\nvar isPointerDown = (el, e) => {\n if ((e == null ? void 0 : e.type) === \"pointerdown\") {\n IS_PRESS.add(el);\n on(document, \"pointerup\", () => IS_PRESS.delete(el), EVENT_ONCE);\n }\n return IS_PRESS.has(el);\n};\nvar declarativeShadowRoot = (style, slot = \"<slot></slot>\") => `<template shadowrootmode=\"open\">${slot}<style>${style}</style></template>`;\nvar preventSubmit = (input) => {\n const form = attr(input, \"form\");\n attr(input, \"form\", \"#\");\n setTimeout(restoreSubmit, 0, input, form);\n};\nvar restoreSubmit = (input, form) => attr(input, \"form\", form);\nvar getText = (el) => {\n var _a2;\n return ((_a2 = el == null ? void 0 : el.textContent) == null ? void 0 : _a2.trim()) || \"\";\n};\nvar LIVE;\nvar LIVE_SR_FIX = 0;\nvar LIVE_CLEAR = 0;\nvar speak = (text) => {\n clearTimeout(LIVE_CLEAR);\n if (!LIVE) {\n LIVE = tag(\"div\", { \"aria-live\": \"assertive\" });\n LIVE.style.overflow = \"hidden\";\n LIVE.style.position = \"fixed\";\n LIVE.style.whiteSpace = \"nowrap\";\n LIVE.style.width = \"1px\";\n }\n if (!LIVE.isConnected) document.body.append(LIVE);\n if (text === \"\") LIVE.textContent = \"\";\n if (text) {\n LIVE.textContent = `${text}${LIVE_SR_FIX++ % 2 ? \"\\xA0\" : \"\"}`;\n LIVE_CLEAR = setTimeout(speak, !IS_MAC && IS_FIREFOX ? 2e3 : 300, \"\");\n }\n};\n\n// u-combobox.ts\nvar UHTMLComboboxStyle = `${DISPLAY_BLOCK}\n:is(:host(:not([data-multiple])), :host([data-multiple=\"false\"])) [part=\"items\"] { display: none }\n[role=\"listbox\"] { display: contents }\n::slotted(button[type=\"reset\"]),::slotted(del) { font: inherit; border: 0; padding: 0; background: none; color: inherit; cursor: pointer; text-decoration: none }\n::slotted(data) { cursor: pointer; pointer-events: none }\n::slotted(data)::after { padding-inline: .5ch; pointer-events: auto }\n::slotted(data)::after,::slotted(button[type=\"reset\"]:empty)::before,::slotted(del:empty)::before { content: '\\\\00D7'; content: '\\\\00D7' / '' }\n::slotted(data:focus),::slotted(del:focus),::slotted(button[type=\"reset\"]:focus) { ${FOCUS_OUTLINE} }`;\nvar UHTMLComboboxShadowRoot = declarativeShadowRoot(UHTMLComboboxStyle);\nvar ARIA_LABEL = \"aria-label\";\nvar CSS_CLEAR = `button[type=\"reset\"],del`;\nvar CSS_DATALIST = `datalist,[role=\"listbox\"]`;\nvar CSS_OPTION = `option,[role=\"option\"]`;\nvar EVENTS = \"blur focus click input keydown pointerdown\";\nvar FALSE = \"false\";\nvar TEXTS = {\n added: \"Added\",\n clear: \"Clear input\",\n empty: \"No selected\",\n found: \"Navigate left to find %d selected\",\n invalid: \"Invalid value\",\n items: \"Selected\",\n // Note: Not announced by NVDA\n of: \"of\",\n remove: \"Press to remove\",\n removed: \"Removed\"\n};\nvar UHTMLComboboxElement = class extends UHTMLElement {\n constructor() {\n super();\n this._focusMoved = false;\n // Used to determine if we announce through aria-live or aria-label when items are added or removed\n this._itemSingleVale = \"\";\n // Used to store current match\n this._speak = \"\";\n this._texts = __spreadValues({}, TEXTS);\n this._value = \"\";\n const root = attachStyle(this, UHTMLComboboxStyle);\n this._listbox = root.querySelector('[role=\"listbox\"]') || tag(\"div\");\n this._listbox.innerHTML = `<slot name=\"items\"></slot>`;\n attr(this._listbox, \"aria-orientation\", \"horizontal\");\n attr(this._listbox, \"role\", \"listbox\");\n attr(this._listbox, \"part\", \"items\");\n attr(this._listbox, \"tabindex\", \"-1\");\n root.prepend(this._listbox);\n }\n // Locally store value to store value before input-click\n static get observedAttributes() {\n return Object.keys(TEXTS).map((key) => `data-sr-${key}`);\n }\n connectedCallback() {\n on(this, EVENTS, this, true);\n this._umutate = onMutation(this, onMutations, {\n attributeFilter: [\"id\", \"value\", \"role\"],\n // Respond to changes in <data> value or id or role of <datalist>\n attributes: true,\n characterData: true,\n // Respond to changes in <data> textContent\n childList: true,\n subtree: true\n });\n syncInputWithItemSingleMode(this);\n syncClearWithInput(this);\n }\n attributeChangedCallback(prop, _, val) {\n const text = prop.split(\"data-sr-\")[1];\n if (TEXTS[text]) this._texts[text] = val || TEXTS[text];\n if (text === \"clear\" && this.clear)\n attr(this.clear, ARIA_LABEL, this._texts.clear);\n }\n disconnectedCallback() {\n var _a2;\n off(this, EVENTS, this, true);\n (_a2 = this._umutate) == null ? void 0 : _a2.call(this);\n this._umutate = this._list = this._options = this._match = void 0;\n this._items = this._clear = this._control = this._select = void 0;\n }\n handleEvent(event) {\n var _a2, _b;\n if (((_a2 = this.control) == null ? void 0 : _a2.disabled) || ((_b = this.control) == null ? void 0 : _b.readOnly)) return;\n if (event.type === \"blur\") onBlur(this);\n if (event.type === \"click\") onClick(this, event);\n if (event.type === \"focus\") speak();\n if (event.type === \"input\") onInput(this, event);\n if (event.type === \"keydown\") onKeyDown(this, event);\n if (event.type === \"pointerdown\") isPointerDown(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(CSS_DATALIST);\n this._options = void 0;\n }\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(CSS_CLEAR);\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, _c;\n const el = !this._options && ((_b = (_a2 = this.list) == null ? void 0 : _a2.querySelector(CSS_OPTION)) == null ? void 0 : _b.nodeName);\n if (el) this._options = (_c = this.list) == null ? void 0 : _c.getElementsByTagName(el);\n return this._options || this.getElementsByTagName(\"-\");\n }\n get values() {\n return Array.from(this.items, ({ value }) => value);\n }\n};\nvar dispatchMatch = (self) => {\n var _a2;\n const { creatable, control, options, 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((o) => o.label.trim().toLowerCase() === query);\n const event = { bubbles: true, cancelable: true, detail: match };\n if (!self.dispatchEvent(new CustomEvent(\"comboboxbeforematch\", event)))\n match = [...options].find((o) => o.selected);\n if (!multiple) for (const o of options) o.selected = o === match;\n else syncOptionsWithItems(self);\n if (!match && creatable && value) return { value, label: value };\n return match && { value: match.value, label: match.label };\n};\nvar dispatchSelect = (self, item, canRemove = true) => {\n const { _texts, control, items, multiple } = self;\n if (!item) {\n if (multiple) return speak(_texts.invalid);\n if (!(control == null ? void 0 : control.value) && items[0]) return dispatchSelect(self, items[0]);\n return syncInputWithItemSingleMode(self);\n }\n const index = [...items].findIndex((i) => i.value === item.value);\n const remove = items[index];\n const focus = remove === getFocusedElement(self) && (multiple ? items[index - 1] || items[index + 1] || control : control);\n if (remove && !canRemove) return syncInputWithItemSingleMode(self);\n if (focus) focus.focus();\n self._focusMoved = !!focus;\n const add = tag(\"data\", { value: item.value }, item.label || item.value);\n const event = { bubbles: true, cancelable: true, detail: remove || add };\n if (self.dispatchEvent(new CustomEvent(\"comboboxbeforeselect\", 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(\"comboboxafterselect\", event));\n }\n};\nvar onBlur = (self) => isPointerDown(self) || setTimeout(onBlurred, 0, self);\nvar onBlurred = (self) => self.multiple || self.contains(getFocusedElement(self)) || dispatchSelect(self, self._match, false);\nvar onClick = (self, event) => {\n const { clientX: x, clientY: y, target } = event;\n const { clear, control, items } = self;\n if (control && (clear == null ? void 0 : clear.contains(target))) {\n event.preventDefault();\n setValue(control, \"\", \"deleteContentBackward\");\n return control.focus();\n }\n for (const item of items) {\n if (item.contains(target)) return dispatchSelect(self, item);\n const rect = item.getBoundingClientRect();\n const { top: t, right: r, bottom: b, left: l, width: w, height: h } = rect;\n if (w && h && y >= t && y <= b && x >= l && x <= r) return item.focus();\n }\n if (target === self) control == null ? void 0 : control.focus();\n};\nvar onInput = (self, event) => {\n var _a2;\n const { control, options, multiple } = self;\n const value = (control == null ? void 0 : control.value) || null;\n const isDatalistClick = event instanceof InputEvent ? !event.inputType || event.inputType === \"insertReplacementText\" : !!(control == null ? void 0 : control.value);\n if (!isDatalistClick) self._value = (control == null ? void 0 : control.value) || \"\";\n if (isDatalistClick) {\n (_a2 = event.stopImmediatePropagation) == null ? void 0 : _a2.call(event);\n const clicked = [...options].find((o) => o.value === value);\n if (control) control.value = self._value;\n if (clicked) return dispatchSelect(self, clicked, multiple);\n } else if (!multiple) self._match = dispatchMatch(self);\n syncClearWithInput(self);\n};\nvar onKeyDown = (self, e) => {\n if (e.ctrlKey || e.metaKey || e.shiftKey || e.key === \"Alt\") return;\n if (self.control === e.target) onKeyDownControl(self, e);\n else onKeyDownItems(self, e);\n};\nvar onKeyDownControl = (self, e) => {\n var _a2;\n const { _match, clear, control: input, items, multiple } = self;\n if ((e.key === \"ArrowLeft\" || e.key === \"Backspace\") && !(input == null ? void 0 : input.selectionEnd))\n (_a2 = items[items.length - 1]) == null ? void 0 : _a2.focus();\n if (e.key === \"Enter\" && input) {\n preventSubmit(input);\n dispatchSelect(self, multiple ? dispatchMatch(self) : _match, multiple);\n }\n if (e.key === \"Tab\" && !e.shiftKey && clear && !clear.hidden) {\n e.preventDefault();\n attr(clear, \"aria-hidden\", \"false\");\n attr(clear, \"tabindex\", \"0\");\n clear.focus();\n on(clear, \"blur\", () => syncClearWithInput(self), EVENT_ONCE);\n }\n};\nvar onKeyDownItems = (self, event) => {\n var _a2, _b, _c;\n const { clear, control, items } = self;\n const { key, repeat, target } = event;\n const index = [...items].indexOf(target);\n const isKeyClick = key === \" \" || key === \"Enter\";\n if (isKeyClick && (items[index] || target === clear)) {\n (_a2 = items[index] || clear) == null ? void 0 : _a2.click();\n return event.preventDefault();\n }\n if (!items[index]) return;\n if (key === \"ArrowLeft\") return (_b = items[index - 1]) == null ? void 0 : _b.focus();\n if (key === \"ArrowRight\") return (_c = items[index + 1] || control) == null ? void 0 : _c.focus();\n if (key === \"Backspace\") {\n event.preventDefault();\n return repeat || dispatchSelect(self, items[index]);\n }\n control == null ? void 0 : control.focus();\n};\nvar onMutations = (self, edit) => {\n var _a2;\n if (!self.control) return;\n const { _texts, control, items, list, multiple } = self;\n const edits = [];\n for (const { addedNodes: add, removedNodes: del } of edit || []) {\n for (const el of add) if (el instanceof HTMLDataElement) edits.unshift(el);\n for (const el of del) if (el instanceof HTMLDataElement) edits.push(el);\n }\n const focus = getFocusedElement(self);\n const doSpeak = multiple ? edits.length === 1 : edits[0] === focus;\n if (doSpeak && self.contains(focus)) {\n const label = control ? attr(control, ARIA_LABEL) : null;\n self._speak = `${_texts[edits[0].isConnected ? \"added\" : \"removed\"]} ${getText(edits[0])}, `;\n attr(control, ARIA_LABEL, `${self._speak}${getLabel(control)}`);\n if (!self._focusMoved) setTimeout(() => speak(self._speak.slice(0, -2)));\n setTimeout(speakReset, 300, self, label);\n }\n if (!multiple) {\n const item = getText(items[0]);\n if (item !== self._itemSingleVale) syncInputWithItemSingleMode(self);\n self._itemSingleVale = item;\n }\n syncItems(self);\n syncOptionsWithItems(self);\n syncSelectWithItems(self);\n const hint = `${items.length ? _texts.found.replace(\"%d\", `${items.length}`) : _texts.empty}`;\n attr(control, \"aria-description\", multiple ? hint : null);\n attr(control, \"list\", useId(list));\n attr(self._listbox, ARIA_LABEL, _texts.items);\n (_a2 = self._umutate) == null ? void 0 : _a2.takeRecords();\n};\nvar speakReset = (self, label) => {\n self._speak = \"\";\n if (self.control) attr(self.control, ARIA_LABEL, label);\n syncItems(self);\n};\nvar syncItems = (self) => {\n const { _texts, _speak, items } = self;\n let idx = 0;\n for (const item of items) {\n const text = `${_speak}${getText(item)}, ${_texts.remove}${IS_IOS ? `, ${++idx} ${_texts.of} ${items.length}` : \"\"}`;\n attr(item, ARIA_LABEL, text);\n attr(item, \"role\", \"option\");\n attr(item, \"slot\", \"items\");\n attr(item, \"tabindex\", \"-1\");\n attr(item, \"value\", item.value || getText(item));\n }\n};\nvar syncSelectWithItems = (self) => {\n var _a2, _b;\n if (!((_a2 = self._select) == null ? void 0 : _a2.isConnected)) self._select = self.querySelector(\"select\");\n if (!self._select) return;\n const { _select, items, multiple } = self;\n const append = [];\n let idx = 0;\n attr(_select, \"multiple\", multiple ? \"\" : null);\n for (const item of items) {\n const option = _select == null ? void 0 : _select.options[idx++];\n const text = getText(item);\n const value = item == null ? void 0 : item.value;\n if (!option) append.push(new Option(text, value, true, true));\n else\n Object.assign(option, {\n defaultSelected: true,\n selected: true,\n text,\n value\n });\n }\n if (append.length) _select.append(...append);\n else for (const opt of [..._select.options].slice(idx)) opt.remove();\n (_b = self._umutate) == null ? void 0 : _b.takeRecords();\n};\nvar syncClearWithInput = (self) => {\n if (!self.clear) return;\n const { clear, control } = self;\n const hidden = !(control == null ? void 0 : control.value) || (control == null ? void 0 : control.disabled) || (control == null ? void 0 : control.readOnly);\n if (clear.nodeName === \"DEL\") attr(clear, \"role\", \"button\");\n if (!attr(clear, ARIA_LABEL)) attr(clear, ARIA_LABEL, self._texts.clear);\n attr(clear, \"aria-hidden\", `${IS_IOS || IS_ANDROID}`);\n attr(clear, \"hidden\", hidden ? \"\" : null);\n attr(clear, \"tabindex\", \"-1\");\n};\nvar syncOptionsWithItems = (self) => {\n if (!self.list) return;\n const { _texts, list, multiple, options, values } = self;\n attr(list, \"data-sr-of\", _texts.of);\n attr(list, SAFE_MULTISELECTABLE, `${multiple}`);\n for (const opt of options) opt.selected = values.includes(opt.value);\n};\nvar syncInputWithItemSingleMode = (self) => {\n if (!self.control || self.multiple) return;\n const { control, items } = self;\n const value = getText(items[0]);\n const action = value ? \"insertText\" : \"deleteContentBackward\";\n if (value !== control.value) setValue(control, value, action);\n};\ncustomElements.define(\"u-combobox\", UHTMLComboboxElement);\n\nexport { UHTMLComboboxElement, UHTMLComboboxShadowRoot, UHTMLComboboxStyle };\n"],"names":["__defProp","__getOwnPropSymbols","__hasOwnProp","__propIsEnum","__defNormalProp","obj","key","value","__spreadValues","a","b","prop","isBrowser","IS_BROWSER","AGENT","IS_ANDROID","IS_FIREFOX","IS_IOS","_a","IS_MAC","SUPPORTS_CONSTRUCTED_CSS","EVENT_ONCE","DISPLAY_BLOCK","FOCUS_OUTLINE","SAFE_MULTISELECTABLE","UHTMLElement","attr","el","name","on","rest","types","options","type","off","attachStyle","css","root","tag","sheet","onMutation","callback","observer","records","cleanup","getRoot","node","_a2","getFocusedElement","getLabel","label","id","acc","el2","_a3","useId","tagName","attrs","content","val","customElements","instance","setValue","input","data","_b","event","proto","IS_PRESS","isPointerDown","declarativeShadowRoot","style","slot","preventSubmit","form","restoreSubmit","getText","LIVE","LIVE_SR_FIX","LIVE_CLEAR","speak","text","UHTMLComboboxStyle","UHTMLComboboxShadowRoot","ARIA_LABEL","CSS_CLEAR","CSS_DATALIST","CSS_OPTION","EVENTS","FALSE","TEXTS","UHTMLComboboxElement","onMutations","syncInputWithItemSingleMode","syncClearWithInput","_","onBlur","onClick","onInput","onKeyDown","_c","dispatchMatch","self","creatable","control","multiple","query","match","o","syncOptionsWithItems","dispatchSelect","item","canRemove","_texts","items","index","i","remove","focus","add","item2","onBlurred","x","y","target","clear","rect","t","r","l","w","h","isDatalistClick","clicked","onKeyDownControl","onKeyDownItems","_match","repeat","edit","list","edits","del","speakReset","syncItems","syncSelectWithItems","hint","_speak","idx","_select","append","option","opt","hidden","values","action"],"mappings":"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","x_google_ignoreList":[0]}