snice 7.6.0 → 7.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/adapters/react/SniceProvider.js +1 -1
  2. package/adapters/react/SniceRouter.js +1 -1
  3. package/adapters/react/calendar.d.ts +1 -0
  4. package/adapters/react/calendar.d.ts.map +1 -1
  5. package/adapters/react/calendar.js +1 -1
  6. package/adapters/react/calendar.js.map +1 -1
  7. package/adapters/react/calendar.tsx +2 -1
  8. package/adapters/react/matchRoute.js +1 -1
  9. package/adapters/react/useRequestHandler.js +1 -1
  10. package/bin/analyzer-contracts.js +8 -2
  11. package/custom-elements.json +15 -1
  12. package/dist/cdn/accordion/snice-accordion.js +1 -1
  13. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  14. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  15. package/dist/cdn/alert/snice-alert.js +1 -1
  16. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  17. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  18. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  19. package/dist/cdn/availability/snice-availability.js +1 -1
  20. package/dist/cdn/avatar/snice-avatar.js +1 -1
  21. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  22. package/dist/cdn/badge/snice-badge.js +1 -1
  23. package/dist/cdn/banner/snice-banner.js +1 -1
  24. package/dist/cdn/binpack/snice-binpack.js +1 -1
  25. package/dist/cdn/book/snice-book.js +1 -1
  26. package/dist/cdn/booking/snice-booking.js +1 -1
  27. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  28. package/dist/cdn/button/snice-button.js +2 -2
  29. package/dist/cdn/button/snice-button.js.map +1 -1
  30. package/dist/cdn/button/snice-button.min.js +1 -1
  31. package/dist/cdn/button/snice-button.min.js.map +1 -1
  32. package/dist/cdn/calendar/README.md +2 -2
  33. package/dist/cdn/calendar/snice-calendar.js +26 -2
  34. package/dist/cdn/calendar/snice-calendar.js.map +1 -1
  35. package/dist/cdn/calendar/snice-calendar.min.js +2 -2
  36. package/dist/cdn/calendar/snice-calendar.min.js.map +1 -1
  37. package/dist/cdn/camera/snice-camera.js +1 -1
  38. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  39. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  40. package/dist/cdn/card/snice-card.js +1 -1
  41. package/dist/cdn/carousel/snice-carousel.js +1 -1
  42. package/dist/cdn/cart/snice-cart.js +1 -1
  43. package/dist/cdn/chart/snice-chart.js +1 -1
  44. package/dist/cdn/chat/snice-chat.js +1 -1
  45. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  46. package/dist/cdn/chip/snice-chip.js +1 -1
  47. package/dist/cdn/code-block/snice-code-block.js +1 -1
  48. package/dist/cdn/color-display/snice-color-display.js +1 -1
  49. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  50. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  51. package/dist/cdn/comments/snice-comments.js +1 -1
  52. package/dist/cdn/countdown/snice-countdown.js +1 -1
  53. package/dist/cdn/cropper/snice-cropper.js +1 -1
  54. package/dist/cdn/data-card/snice-data-card.js +1 -1
  55. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  56. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  57. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  58. package/dist/cdn/diff/snice-diff.js +1 -1
  59. package/dist/cdn/divider/snice-divider.js +1 -1
  60. package/dist/cdn/doc/snice-doc.js +1 -1
  61. package/dist/cdn/draw/snice-draw.js +1 -1
  62. package/dist/cdn/drawer/snice-drawer.js +1 -1
  63. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  64. package/dist/cdn/estimate/snice-estimate.js +1 -1
  65. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  66. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  67. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  68. package/dist/cdn/flow/snice-flow.js +1 -1
  69. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  70. package/dist/cdn/funnel/snice-funnel.js +1 -1
  71. package/dist/cdn/gantt/snice-gantt.js +1 -1
  72. package/dist/cdn/gauge/snice-gauge.js +1 -1
  73. package/dist/cdn/grid/snice-grid.js +1 -1
  74. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  75. package/dist/cdn/image/snice-image.js +1 -1
  76. package/dist/cdn/input/snice-input.js +1 -1
  77. package/dist/cdn/invoice/snice-invoice.js +1 -1
  78. package/dist/cdn/kanban/snice-kanban.js +1 -1
  79. package/dist/cdn/key-value/snice-key-value.js +1 -1
  80. package/dist/cdn/kpi/snice-kpi.js +1 -1
  81. package/dist/cdn/layout/snice-layout.js +1 -1
  82. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  83. package/dist/cdn/link/snice-link.js +1 -1
  84. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  85. package/dist/cdn/list/snice-list.js +1 -1
  86. package/dist/cdn/location/snice-location.js +1 -1
  87. package/dist/cdn/login/README.md +1 -1
  88. package/dist/cdn/login/snice-login.js +2 -2
  89. package/dist/cdn/login/snice-login.js.map +1 -1
  90. package/dist/cdn/login/snice-login.min.js +1 -1
  91. package/dist/cdn/login/snice-login.min.js.map +1 -1
  92. package/dist/cdn/map/snice-map.js +1 -1
  93. package/dist/cdn/markdown/snice-markdown.js +1 -1
  94. package/dist/cdn/masonry/snice-masonry.js +1 -1
  95. package/dist/cdn/menu/snice-menu.js +1 -1
  96. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  97. package/dist/cdn/modal/snice-modal.js +1 -1
  98. package/dist/cdn/music-player/snice-music-player.js +1 -1
  99. package/dist/cdn/nav/snice-nav.js +1 -1
  100. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  101. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  102. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  103. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  104. package/dist/cdn/pagination/snice-pagination.js +1 -1
  105. package/dist/cdn/paint/snice-paint.js +1 -1
  106. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  107. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  108. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  109. package/dist/cdn/popover/snice-popover.js +1 -1
  110. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  111. package/dist/cdn/product-card/snice-product-card.js +1 -1
  112. package/dist/cdn/progress/snice-progress.js +1 -1
  113. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  114. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  115. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  116. package/dist/cdn/radio/snice-radio.js +1 -1
  117. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  118. package/dist/cdn/rating/snice-rating.js +1 -1
  119. package/dist/cdn/receipt/snice-receipt.js +1 -1
  120. package/dist/cdn/recipe/snice-recipe.js +1 -1
  121. package/dist/cdn/runtime/README.md +2 -2
  122. package/dist/cdn/runtime/snice-runtime.esm.js +130 -31
  123. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  124. package/dist/cdn/runtime/snice-runtime.esm.min.js +1 -1
  125. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  126. package/dist/cdn/runtime/snice-runtime.js +130 -31
  127. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  128. package/dist/cdn/runtime/snice-runtime.min.js +1 -1
  129. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  130. package/dist/cdn/sankey/snice-sankey.js +1 -1
  131. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  132. package/dist/cdn/select/snice-select.js +1 -1
  133. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  134. package/dist/cdn/slider/snice-slider.js +1 -1
  135. package/dist/cdn/sortable/snice-sortable.js +1 -1
  136. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  137. package/dist/cdn/spinner/snice-spinner.js +1 -1
  138. package/dist/cdn/split-button/snice-split-button.js +1 -1
  139. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  140. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  141. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  142. package/dist/cdn/step-input/snice-step-input.js +1 -1
  143. package/dist/cdn/stepper/snice-stepper.js +1 -1
  144. package/dist/cdn/switch/snice-switch.js +1 -1
  145. package/dist/cdn/table/README.md +2 -2
  146. package/dist/cdn/table/snice-table.esm.js +227 -36
  147. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  148. package/dist/cdn/table/snice-table.esm.min.js +69 -48
  149. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  150. package/dist/cdn/table/snice-table.js +226 -35
  151. package/dist/cdn/table/snice-table.js.map +1 -1
  152. package/dist/cdn/table/snice-table.min.js +47 -26
  153. package/dist/cdn/table/snice-table.min.js.map +1 -1
  154. package/dist/cdn/tabs/snice-tabs.js +1 -1
  155. package/dist/cdn/tag/snice-tag.js +1 -1
  156. package/dist/cdn/tag-input/README.md +2 -2
  157. package/dist/cdn/tag-input/snice-tag-input.js +10 -16
  158. package/dist/cdn/tag-input/snice-tag-input.js.map +1 -1
  159. package/dist/cdn/tag-input/snice-tag-input.min.js +2 -2
  160. package/dist/cdn/tag-input/snice-tag-input.min.js.map +1 -1
  161. package/dist/cdn/terminal/snice-terminal.js +1 -1
  162. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  163. package/dist/cdn/textarea/snice-textarea.js +1 -1
  164. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  165. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  166. package/dist/cdn/timeline/snice-timeline.js +1 -1
  167. package/dist/cdn/timer/snice-timer.js +1 -1
  168. package/dist/cdn/toast/snice-toast.js +1 -1
  169. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  170. package/dist/cdn/tree/snice-tree.js +1 -1
  171. package/dist/cdn/treemap/snice-treemap.js +1 -1
  172. package/dist/cdn/user-card/snice-user-card.js +1 -1
  173. package/dist/cdn/video-player/snice-video-player.js +1 -1
  174. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  175. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  176. package/dist/cdn/weather/snice-weather.js +1 -1
  177. package/dist/cdn/work-order/snice-work-order.js +1 -1
  178. package/dist/components/button/snice-button.js +1 -1
  179. package/dist/components/button/snice-button.js.map +1 -1
  180. package/dist/components/calendar/snice-calendar.d.ts +2 -0
  181. package/dist/components/calendar/snice-calendar.js +25 -1
  182. package/dist/components/calendar/snice-calendar.js.map +1 -1
  183. package/dist/components/table/snice-row.d.ts +6 -0
  184. package/dist/components/table/snice-row.js +11 -3
  185. package/dist/components/table/snice-row.js.map +1 -1
  186. package/dist/components/table/snice-table.d.ts +40 -3
  187. package/dist/components/table/snice-table.js +157 -17
  188. package/dist/components/table/snice-table.js.map +1 -1
  189. package/dist/components/table/table-cell-presentation.d.ts +11 -0
  190. package/dist/components/table/table-cell-presentation.js +25 -8
  191. package/dist/components/table/table-cell-presentation.js.map +1 -1
  192. package/dist/components/table/table-export.d.ts +6 -0
  193. package/dist/components/table/table-export.js +11 -2
  194. package/dist/components/table/table-export.js.map +1 -1
  195. package/dist/components/table/table-keyboard.js +1 -1
  196. package/dist/components/table/table-keyboard.js.map +1 -1
  197. package/dist/components/table/table-master-detail.d.ts +11 -2
  198. package/dist/components/table/table-master-detail.js +20 -3
  199. package/dist/components/table/table-master-detail.js.map +1 -1
  200. package/dist/components/tag-input/snice-tag-input.d.ts +2 -2
  201. package/dist/components/tag-input/snice-tag-input.js +9 -15
  202. package/dist/components/tag-input/snice-tag-input.js.map +1 -1
  203. package/dist/index.cjs +127 -28
  204. package/dist/index.cjs.map +1 -1
  205. package/dist/index.esm.js +127 -28
  206. package/dist/index.esm.js.map +1 -1
  207. package/dist/index.iife.js +127 -28
  208. package/dist/index.iife.js.map +1 -1
  209. package/dist/react/SniceProvider.js +1 -1
  210. package/dist/react/SniceRouter.js +1 -1
  211. package/dist/react/index.js +1 -1
  212. package/dist/react/matchRoute.js +1 -1
  213. package/dist/react/useRequestHandler.js +1 -1
  214. package/dist/request-response.d.ts +24 -1
  215. package/dist/symbols.cjs +1 -1
  216. package/dist/symbols.esm.js +1 -1
  217. package/dist/testing-dom.cjs +1 -1
  218. package/dist/testing-dom.esm.js +1 -1
  219. package/dist/transitions.cjs +1 -1
  220. package/dist/transitions.esm.js +1 -1
  221. package/docs/ai/DEVELOPMENT.md +1 -1
  222. package/docs/ai/components/calendar.md +8 -0
  223. package/docs/ai/components/tag-input.md +4 -0
  224. package/docs/ai/controllers.md +22 -6
  225. package/docs/components/calendar.md +24 -0
  226. package/docs/components/tag-input.md +6 -1
  227. package/docs/controllers.md +57 -6
  228. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-tag-input.min.js");var SniceTagInput=function(t,e){"use strict";function i(t,e,i,s,a,n){function r(t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("Function expected");return t}for(var l,o=s.kind,h="getter"===o?"get":"setter"===o?"set":"value",c=!e&&t?s.static?t:t.prototype:null,d=e||(c?Object.getOwnPropertyDescriptor(c,s.name):{}),u=!1,g=i.length-1;g>=0;g--){var m={};for(var p in s)m[p]="access"===p?{}:s[p];for(var p in s.access)m.access[p]=s.access[p];m.addInitializer=function(t){if(u)throw new TypeError("Cannot add initializers after decoration has completed");n.push(r(t||null))};var f=(0,i[g])("accessor"===o?{get:d.get,set:d.set}:d[h],m);if("accessor"===o){if(void 0===f)continue;if(null===f||"object"!=typeof f)throw new TypeError("Object expected");(l=r(f.get))&&(d.get=l),(l=r(f.set))&&(d.set=l),(l=r(f.init))&&a.unshift(l)}else(l=r(f))&&("field"===o?a.unshift(l):d[h]=l)}c&&Object.defineProperty(c,s.name,d),u=!0}function s(t,e,i){for(var s=arguments.length>2,a=0;a<e.length;a++)i=s?e[a].call(t,i):e[a].call(t);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError;const a=new WeakMap;function n(t){return t.replace(/\s+/gu," ").trim()}function r(t,e){return t===e||t.nodeType===Node.ELEMENT_NODE&&t.contains(e)}function l(t,e){const i=t.getRootNode();return"getElementById"in i?i.getElementById(e):null}function o(t,e){if(t===e)return"";if(t.nodeType===Node.TEXT_NODE)return t.nodeValue||"";if(t.nodeType!==Node.ELEMENT_NODE)return"";const i=t;return i.hidden||"true"===i.getAttribute("aria-hidden")||["script","style","template"].includes(i.localName)?"":"br"===i.localName?" ":"img"===i.localName?i.getAttribute("alt")||"":Array.from(i.childNodes).map(t=>o(t,e)).join(" ")}function h(t,e){const i=t.getAttribute("aria-labelledby");if(i){const s=n(i.split(/\s+/u).map(e=>l(t,e)).filter(e=>Boolean(e)&&e!==t).map(t=>o(t,e)).join(" "));if(s)return s}return t.hasAttribute("aria-label")?n(t.getAttribute("aria-label")||""):n(o(t,e))||n(t.getAttribute("title")||"")}class c{constructor(t,e,i,s,a){this.host=t,this.getInternals=e,this.getTarget=i,this.getFallbackName=s,this.syncRelatedNames=a,this.connected=!1,this.currentLabels=[],this.currentNamingNodes=[],this.referencedIds=new Set,this.handleHostActivation=t=>{if(t.composedPath()[0]!==this.host)return;if(this.currentLabels=this.resolveLabels(),0===this.currentLabels.length)return;const e=this.getTarget();e?e.focus():t.preventDefault()},this.handleLabelActivation=t=>{const e=t.composedPath(),i=t.target;if(i===this.host||i instanceof Node&&this.host.contains(i))return;const s=t.currentTarget;if(e.some(t=>t instanceof HTMLElement&&t!==s&&t.matches('a[href], button, input, select, textarea, [contenteditable]:not([contenteditable="false"]), [role="button"], [role="link"]')))return;const a=this.getTarget();a?(a.focus(),setTimeout(()=>{const t=this.getTarget();this.connected&&t?.isConnected&&this.currentLabels.includes(s)&&t.focus()},0)):t.preventDefault()}}get labels(){const t=this.host.getRootNode();if(this.host.id&&"querySelectorAll"in t)try{const e=CSS.escape(this.host.id),i=CSS.escape(this.host.localName);return t.querySelectorAll(`label[for="${e}"], label:not([for]):has(${i}#${e})`)}catch{}return this.getInternals()?.labels??null}get accessibleName(){const t=this.resolveLabels();return n(t.length>0?t.map(t=>h(t,this.host)).join(" "):this.getFallbackName())}connect(){this.connected||(this.connected=!0,this.host.addEventListener("click",this.handleHostActivation),this.bindRegistry(),this.sync())}disconnect(){this.connected&&(this.connected=!1,this.host.removeEventListener("click",this.handleHostActivation),this.unbindLabelActivation(),this.releaseRegistry(),this.currentLabels=[],this.currentNamingNodes=[],this.referencedIds.clear())}sync(){if(this.connected&&this.bindRegistry(),this.unbindLabelActivation(),this.currentLabels=this.resolveLabels(),this.connected)for(const t of this.currentLabels)t.addEventListener("click",this.handleLabelActivation);this.currentNamingNodes=[...this.currentLabels],this.referencedIds.clear();for(const t of this.currentLabels)for(const e of(t.getAttribute("aria-labelledby")||"").split(/\s+/u).filter(Boolean)){this.referencedIds.add(e);const i=l(t,e);i&&i!==t&&this.currentNamingNodes.push(i)}const t=n(this.currentLabels.length>0?this.currentLabels.map(t=>h(t,this.host)).join(" "):this.getFallbackName());this.getTarget()?.setAttribute("aria-label",t),this.syncRelatedNames?.(t)}isAffectedBy(t){if("attributes"===t.type){if(t.target===this.host&&"id"===t.attributeName)return!0;const e=t.target;return"label"===e.localName&&"for"===t.attributeName?this.currentLabels.includes(e)||Boolean(this.host.id)&&e.htmlFor===this.host.id:!("id"!==t.attributeName||!this.referencedIds.has(e.id))||this.currentNamingNodes.some(t=>t===e||t.contains(e))}return!!this.currentNamingNodes.some(e=>e===t.target||e.contains(t.target))||"childList"===t.type&&[...t.addedNodes,...t.removedNodes].some(t=>{if(r(t,this.host)||r(this.host,t))return!0;if(this.currentNamingNodes.some(e=>r(t,e)))return!0;if(t.nodeType!==Node.ELEMENT_NODE)return!1;const e=t;return!!("label"===e.localName?[e]:Array.from(e.querySelectorAll("label"))).some(t=>t.hasAttribute("for")?Boolean(this.host.id)&&t.htmlFor===this.host.id:t.contains(this.host))||[e,...Array.from(e.querySelectorAll("[id]"))].some(t=>this.referencedIds.has(t.id))})}unbindLabelActivation(){for(const t of this.currentLabels)t.removeEventListener("click",this.handleLabelActivation)}bindRegistry(){const t=function(t){const e=t.getRootNode();return e.nodeType===Node.DOCUMENT_NODE||"undefined"!=typeof ShadowRoot&&e instanceof ShadowRoot?e:null}(this.host);t!==this.registryRoot&&(this.releaseRegistry(),t&&(this.registryRoot=t,this.registry=function(t){const e=t.nodeType===Node.DOCUMENT_NODE?t.documentElement:t;if(!e||"undefined"==typeof MutationObserver)return null;const i=a.get(t);if(i)return i;const s=new Set,n=new MutationObserver(t=>{for(const e of s)t.some(t=>e.isAffectedBy(t))&&e.sync()});n.observe(e,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["for","id","aria-label","aria-labelledby","aria-hidden","hidden","alt","title"]});const r={associations:s,observer:n};return a.set(t,r),r}(t)||void 0,this.registry?.associations.add(this)))}releaseRegistry(){this.registry?.associations.delete(this),this.registry&&0===this.registry.associations.size&&this.registryRoot&&(this.registry.observer.disconnect(),a.delete(this.registryRoot)),this.registry=void 0,this.registryRoot=void 0}resolveLabels(){const t=this.host.getRootNode();return"querySelectorAll"in t?Array.from(t.querySelectorAll("label")).filter(t=>t.hasAttribute("for")?Boolean(this.host.id)&&t.htmlFor===this.host.id:t.contains(this.host)):Array.from(this.getInternals()?.labels||[])}}const d=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"];function u(t){return d.some(e=>Boolean(t[e]))}let g=(()=>{let t,a,n,r,l,o,h,d,g,m,p,f,v,b,y,x,S,w,V,k,A,E,N,D,T,I,L,C,R,$,M,B,F=[e.element("snice-tag-input",{formAssociated:!0,delegatesFocus:!0})],O=[],j=HTMLElement,z=[],P=[],q=[],H=[],U=[],_=[],J=[],K=[],W=[],X=[],G=[],Q=[],Y=[],Z=[],tt=[],et=[],it=[],st=[],at=[],nt=[],rt=[],lt=[],ot=[],ht=[],ct=[],dt=[],ut=[],gt=[],mt=[],pt=[],ft=[],vt=[],bt=[],yt=[],xt=[],St=[],wt=[],Vt=[],kt=[];return class extends j{static{a=this}static{const c="function"==typeof Symbol&&Symbol.metadata?Object.create(j[Symbol.metadata]??null):void 0;n=[e.state()],r=[e.state()],l=[e.state()],o=[e.property({type:Array,attribute:"value"})],h=[e.property({type:Array,attribute:!1})],d=[e.property({type:Number,attribute:"max-tags"})],g=[e.property({type:Boolean,attribute:"allow-duplicates"})],m=[e.property()],p=[e.property({type:Boolean})],f=[e.property({type:Boolean})],v=[e.property()],b=[e.property()],y=[e.property({attribute:!1})],x=[e.property({type:Array,attribute:!1})],S=[e.property({type:Boolean,attribute:!1})],w=[e.property({type:Number,attribute:!1})],V=[e.query(".tag-input-field")],k=[e.query(".tag-remove")],A=[e.query(".tag-input-container")],E=[e.styles()],N=[e.ready()],D=[e.reconnect()],T=[e.dispose()],I=[e.watch("valueState",{immediate:!1})],L=[e.watch("defaultValue",{immediate:!1})],C=[e.watch("maxTags","allowDuplicates","disabled","readonly","formDisabled",{immediate:!1})],R=[e.render()],$=[e.dispatch("tag-add",{bubbles:!0,composed:!0})],M=[e.dispatch("tag-remove",{bubbles:!0,composed:!0})],B=[e.dispatch("tag-change",{bubbles:!0,composed:!0})],i(this,null,E,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:t=>"componentStyles"in t,get:t=>t.componentStyles},metadata:c},null,z),i(this,null,N,{kind:"method",name:"init",static:!1,private:!1,access:{has:t=>"init"in t,get:t=>t.init},metadata:c},null,z),i(this,null,D,{kind:"method",name:"onReconnect",static:!1,private:!1,access:{has:t=>"onReconnect"in t,get:t=>t.onReconnect},metadata:c},null,z),i(this,null,T,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:t=>"cleanup"in t,get:t=>t.cleanup},metadata:c},null,z),i(this,null,I,{kind:"method",name:"handleValueChange",static:!1,private:!1,access:{has:t=>"handleValueChange"in t,get:t=>t.handleValueChange},metadata:c},null,z),i(this,null,L,{kind:"method",name:"handleDefaultValueChange",static:!1,private:!1,access:{has:t=>"handleDefaultValueChange"in t,get:t=>t.handleDefaultValueChange},metadata:c},null,z),i(this,null,C,{kind:"method",name:"handleValidationConfigurationChange",static:!1,private:!1,access:{has:t=>"handleValidationConfigurationChange"in t,get:t=>t.handleValidationConfigurationChange},metadata:c},null,z),i(this,null,R,{kind:"method",name:"renderTagInput",static:!1,private:!1,access:{has:t=>"renderTagInput"in t,get:t=>t.renderTagInput},metadata:c},null,z),i(this,null,$,{kind:"method",name:"emitAdd",static:!1,private:!1,access:{has:t=>"emitAdd"in t,get:t=>t.emitAdd},metadata:c},null,z),i(this,null,M,{kind:"method",name:"emitRemove",static:!1,private:!1,access:{has:t=>"emitRemove"in t,get:t=>t.emitRemove},metadata:c},null,z),i(this,null,B,{kind:"method",name:"emitChange",static:!1,private:!1,access:{has:t=>"emitChange"in t,get:t=>t.emitChange},metadata:c},null,z),i(null,null,n,{kind:"field",name:"valueState",static:!1,private:!1,access:{has:t=>"valueState"in t,get:t=>t.valueState,set:(t,e)=>{t.valueState=e}},metadata:c},P,q),i(null,null,r,{kind:"field",name:"formDisabled",static:!1,private:!1,access:{has:t=>"formDisabled"in t,get:t=>t.formDisabled,set:(t,e)=>{t.formDisabled=e}},metadata:c},H,U),i(null,null,l,{kind:"field",name:"constraintInvalid",static:!1,private:!1,access:{has:t=>"constraintInvalid"in t,get:t=>t.constraintInvalid,set:(t,e)=>{t.constraintInvalid=e}},metadata:c},_,J),i(null,null,o,{kind:"field",name:"defaultValue",static:!1,private:!1,access:{has:t=>"defaultValue"in t,get:t=>t.defaultValue,set:(t,e)=>{t.defaultValue=e}},metadata:c},K,W),i(null,null,h,{kind:"field",name:"suggestions",static:!1,private:!1,access:{has:t=>"suggestions"in t,get:t=>t.suggestions,set:(t,e)=>{t.suggestions=e}},metadata:c},X,G),i(null,null,d,{kind:"field",name:"maxTags",static:!1,private:!1,access:{has:t=>"maxTags"in t,get:t=>t.maxTags,set:(t,e)=>{t.maxTags=e}},metadata:c},Q,Y),i(null,null,g,{kind:"field",name:"allowDuplicates",static:!1,private:!1,access:{has:t=>"allowDuplicates"in t,get:t=>t.allowDuplicates,set:(t,e)=>{t.allowDuplicates=e}},metadata:c},Z,tt),i(null,null,m,{kind:"field",name:"placeholder",static:!1,private:!1,access:{has:t=>"placeholder"in t,get:t=>t.placeholder,set:(t,e)=>{t.placeholder=e}},metadata:c},et,it),i(null,null,p,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:c},st,at),i(null,null,f,{kind:"field",name:"readonly",static:!1,private:!1,access:{has:t=>"readonly"in t,get:t=>t.readonly,set:(t,e)=>{t.readonly=e}},metadata:c},nt,rt),i(null,null,v,{kind:"field",name:"label",static:!1,private:!1,access:{has:t=>"label"in t,get:t=>t.label,set:(t,e)=>{t.label=e}},metadata:c},lt,ot),i(null,null,b,{kind:"field",name:"name",static:!1,private:!1,access:{has:t=>"name"in t,get:t=>t.name,set:(t,e)=>{t.name=e}},metadata:c},ht,ct),i(null,null,y,{kind:"field",name:"inputValue",static:!1,private:!1,access:{has:t=>"inputValue"in t,get:t=>t.inputValue,set:(t,e)=>{t.inputValue=e}},metadata:c},dt,ut),i(null,null,x,{kind:"field",name:"filteredSuggestions",static:!1,private:!1,access:{has:t=>"filteredSuggestions"in t,get:t=>t.filteredSuggestions,set:(t,e)=>{t.filteredSuggestions=e}},metadata:c},gt,mt),i(null,null,S,{kind:"field",name:"showSuggestions",static:!1,private:!1,access:{has:t=>"showSuggestions"in t,get:t=>t.showSuggestions,set:(t,e)=>{t.showSuggestions=e}},metadata:c},pt,ft),i(null,null,w,{kind:"field",name:"highlightedIndex",static:!1,private:!1,access:{has:t=>"highlightedIndex"in t,get:t=>t.highlightedIndex,set:(t,e)=>{t.highlightedIndex=e}},metadata:c},vt,bt),i(null,null,V,{kind:"field",name:"inputElement",static:!1,private:!1,access:{has:t=>"inputElement"in t,get:t=>t.inputElement,set:(t,e)=>{t.inputElement=e}},metadata:c},yt,xt),i(null,null,k,{kind:"field",name:"firstRemoveButton",static:!1,private:!1,access:{has:t=>"firstRemoveButton"in t,get:t=>t.firstRemoveButton,set:(t,e)=>{t.firstRemoveButton=e}},metadata:c},St,wt),i(null,null,A,{kind:"field",name:"containerElement",static:!1,private:!1,access:{has:t=>"containerElement"in t,get:t=>t.containerElement,set:(t,e)=>{t.containerElement=e}},metadata:c},Vt,kt),i(null,t={value:a},F,{kind:"class",name:a.name,metadata:c},null,O),a=t.value,c&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:c}),s(a,O)}constructor(){super(),this.internals=s(this,z),this.dirtyValue=!1,this.suppressValueEvent=!1,this.customValidationMessage="",this.valueState=s(this,P,[]),this.formDisabled=(s(this,q),s(this,H,!1)),this.constraintInvalid=(s(this,U),s(this,_,!1)),this.defaultValue=(s(this,J),s(this,K,[])),this.suggestions=(s(this,W),s(this,X,[])),this.maxTags=(s(this,G),s(this,Q,0)),this.allowDuplicates=(s(this,Y),s(this,Z,!1)),this.placeholder=(s(this,tt),s(this,et,"Add a tag...")),this.disabled=(s(this,it),s(this,st,!1)),this.readonly=(s(this,at),s(this,nt,!1)),this.label=(s(this,rt),s(this,lt,"")),this.name=(s(this,ot),s(this,ht,"")),this.inputValue=(s(this,ct),s(this,dt,"")),this.filteredSuggestions=(s(this,ut),s(this,gt,[])),this.showSuggestions=(s(this,mt),s(this,pt,!1)),this.highlightedIndex=(s(this,ft),s(this,vt,-1)),this.inputElement=(s(this,bt),s(this,yt,void 0)),this.firstRemoveButton=(s(this,xt),s(this,St,void 0)),this.containerElement=(s(this,wt),s(this,Vt,void 0)),this.handleDocumentClick=(s(this,kt),t=>{t.composedPath().includes(this)||(this.showSuggestions=!1)}),"function"==typeof this.attachInternals&&(this.internals=this.attachInternals()),this.labelAssociation=new c(this,()=>this.internals,()=>this.interactionDisabled?void 0:this.validationAnchor,()=>this.label||"Tags")}get value(){return this.valueState}set value(t){this.setValue(t,!0,!0)}formAssociatedCallback(){this.syncFormState()}formResetCallback(){this.dirtyValue=!1,this.applyDefaultValue(),this.clearDraft()}formDisabledCallback(t){this.formDisabled=t,this.syncValidity()}formStateRestoreCallback(t){if("string"==typeof t)try{const e=JSON.parse(t);Array.isArray(e)&&(this.setValue(e.map(String),!0,!1),this.clearDraft())}catch{}}componentStyles(){return e.css`${":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif)}.tag-input-wrapper{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem)}.tag-input-label{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,rgb(23 23 23))}.tag-input-container{display:flex;flex-wrap:wrap;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));cursor:text;transition:border-color var(--snice-transition-fast, 150ms) ease,box-shadow var(--snice-transition-fast, 150ms) ease;min-height:2.5rem;position:relative}.tag-input-container:focus-within{border-color:var(--snice-color-primary,rgb(37 99 235));box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.tag-input-container--disabled{opacity:.5;cursor:not-allowed;background:var(--snice-color-surface-container-high,rgb(252 251 249))}.tag-input-container--invalid{border-color:var(--snice-color-danger,rgb(220 38 38))}.tag{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,hsl(214 100% 97%));color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);line-height:var(--snice-line-height-normal, 1.5);max-width:100%;animation:150ms tag-appear}@keyframes tag-appear{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.tag-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-remove{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;padding:0;color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);width:1rem;height:1rem;flex-shrink:0;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-remove:hover{background:var(--snice-color-primary,hsl(217 83% 53%));color:var(--snice-color-text-inverse,rgb(250 250 250))}.tag-input-field{flex:1;min-width:4rem;border:none;outline:0;background:0 0;font-family:inherit;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));padding:var(--snice-spacing-3xs,.125rem) 0}.tag-input-field::placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.tag-input-field:disabled{cursor:not-allowed}.tag-suggestions{position:absolute;top:100%;left:-1px;right:-1px;margin-top:2px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1));max-height:12.5rem;overflow-y:auto;z-index:100}.tag-suggestion-item{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-suggestion-item--highlighted,.tag-suggestion-item:hover{background:var(--snice-color-surface-hover,rgb(241 241 241))}.tag-suggestion-item--highlighted{color:var(--snice-color-primary,rgb(37 99 235))}.tag-suggestions::-webkit-scrollbar{width:.5rem}.tag-suggestions::-webkit-scrollbar-track{background:var(--snice-color-surface-container-high,rgb(252 251 249));border-radius:9999px}.tag-suggestions::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:9999px}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}"}`}init(){if(Object.prototype.hasOwnProperty.call(this,"value")){const t=this.value;delete this.value,Array.isArray(t)&&(this.value=t.map(String))}else this.dirtyValue||this.applyDefaultValue();this.syncFormState(),this.attachOutsideClickListener(),this.labelAssociation.connect()}onReconnect(){this.attachOutsideClickListener(),this.labelAssociation.connect()}cleanup(){document.removeEventListener("click",this.handleDocumentClick),this.labelAssociation.disconnect()}attachOutsideClickListener(){document.addEventListener("click",this.handleDocumentClick)}get interactionDisabled(){return this.disabled||this.formDisabled}applyDefaultValue(){this.setValue(this.defaultValue,!1,!1)}setValue(t,e,i){if(Array.isArray(t)){e&&(this.dirtyValue=!0),this.suppressValueEvent=!i;try{this.valueState=t.map(String)}finally{this.suppressValueEvent=!1}this.syncFormState()}}syncFormValue(){const t=JSON.stringify(this.value);!function(t,e,i){t&&"function"==typeof t.setFormValue&&(void 0===i?t.setFormValue(e):t.setFormValue(e,i))}(this.internals,t,t)}syncFormState(){this.syncFormValue(),this.syncValidity()}get validationAnchor(){return this.inputElement??this.firstRemoveButton}syncValidityAfterRender(){queueMicrotask(()=>{this.rendered.then(()=>{this.isConnected&&this.syncValidity()})})}syncValidity(){const t=this.interactionDisabled||this.readonly,e=!t&&this.maxTags>0&&this.value.length>this.maxTags,i=!t&&!this.allowDuplicates&&new Set(this.value).size!==this.value.length,s=t?{}:{customError:Boolean(this.customValidationMessage)||i,tooLong:e},a=u(s),n=this.customValidationMessage||(e?`Use no more than ${this.maxTags} tags.`:"")||(i?"Duplicate tags are not allowed.":"");this.constraintInvalid=a,this.validationProxy.setCustomValidity(a?n:""),this.inputElement?.setCustomValidity(a?n:""),this.inputElement?.setAttribute("aria-invalid",String(a)),this.containerElement?.setAttribute("aria-invalid",String(a)),this.containerElement?.classList.toggle("tag-input-container--invalid",a),function(t,e,i,s){t&&"function"==typeof t.setValidity&&(u(e)?s?t.setValidity(e,i,s):t.setValidity(e,i):t.setValidity({}))}(this.internals,s,n,this.validationAnchor)}get validationProxy(){return this.validationInput||(this.validationInput=document.createElement("input")),this.validationInput}clearDraft(){this.inputValue="",this.filteredSuggestions=[],this.showSuggestions=!1,this.highlightedIndex=-1,this.inputElement&&(this.inputElement.value="")}handleValueChange(){this.syncFormState(),this.syncValidityAfterRender(),this.suppressValueEvent||this.emitChange()}handleDefaultValueChange(){this.dirtyValue||this.applyDefaultValue()}handleValidationConfigurationChange(){this.syncValidity(),this.syncValidityAfterRender()}renderTagInput(){const t=this.interactionDisabled,i=this.readonly,s=!t&&!i&&(this.maxTags<=0||this.value.length<this.maxTags),a=this.showSuggestions&&this.filteredSuggestions.length>0;return e.html`
1
+ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be loaded before snice-tag-input.min.js");var SniceTagInput=function(t,e){"use strict";function i(t,e,i,s,a,n){function r(t){if(void 0!==t&&"function"!=typeof t)throw new TypeError("Function expected");return t}for(var l,o=s.kind,h="getter"===o?"get":"setter"===o?"set":"value",c=!e&&t?s.static?t:t.prototype:null,d=e||(c?Object.getOwnPropertyDescriptor(c,s.name):{}),u=!1,g=i.length-1;g>=0;g--){var m={};for(var p in s)m[p]="access"===p?{}:s[p];for(var p in s.access)m.access[p]=s.access[p];m.addInitializer=function(t){if(u)throw new TypeError("Cannot add initializers after decoration has completed");n.push(r(t||null))};var f=(0,i[g])("accessor"===o?{get:d.get,set:d.set}:d[h],m);if("accessor"===o){if(void 0===f)continue;if(null===f||"object"!=typeof f)throw new TypeError("Object expected");(l=r(f.get))&&(d.get=l),(l=r(f.set))&&(d.set=l),(l=r(f.init))&&a.unshift(l)}else(l=r(f))&&("field"===o?a.unshift(l):d[h]=l)}c&&Object.defineProperty(c,s.name,d),u=!0}function s(t,e,i){for(var s=arguments.length>2,a=0;a<e.length;a++)i=s?e[a].call(t,i):e[a].call(t);return s?i:void 0}"function"==typeof SuppressedError&&SuppressedError;const a=new WeakMap;function n(t){return t.replace(/\s+/gu," ").trim()}function r(t,e){return t===e||t.nodeType===Node.ELEMENT_NODE&&t.contains(e)}function l(t,e){const i=t.getRootNode();return"getElementById"in i?i.getElementById(e):null}function o(t,e){if(t===e)return"";if(t.nodeType===Node.TEXT_NODE)return t.nodeValue||"";if(t.nodeType!==Node.ELEMENT_NODE)return"";const i=t;return i.hidden||"true"===i.getAttribute("aria-hidden")||["script","style","template"].includes(i.localName)?"":"br"===i.localName?" ":"img"===i.localName?i.getAttribute("alt")||"":Array.from(i.childNodes).map(t=>o(t,e)).join(" ")}function h(t,e){const i=t.getAttribute("aria-labelledby");if(i){const s=n(i.split(/\s+/u).map(e=>l(t,e)).filter(e=>Boolean(e)&&e!==t).map(t=>o(t,e)).join(" "));if(s)return s}return t.hasAttribute("aria-label")?n(t.getAttribute("aria-label")||""):n(o(t,e))||n(t.getAttribute("title")||"")}class c{constructor(t,e,i,s,a){this.host=t,this.getInternals=e,this.getTarget=i,this.getFallbackName=s,this.syncRelatedNames=a,this.connected=!1,this.currentLabels=[],this.currentNamingNodes=[],this.referencedIds=new Set,this.handleHostActivation=t=>{if(t.composedPath()[0]!==this.host)return;if(this.currentLabels=this.resolveLabels(),0===this.currentLabels.length)return;const e=this.getTarget();e?e.focus():t.preventDefault()},this.handleLabelActivation=t=>{const e=t.composedPath(),i=t.target;if(i===this.host||i instanceof Node&&this.host.contains(i))return;const s=t.currentTarget;if(e.some(t=>t instanceof HTMLElement&&t!==s&&t.matches('a[href], button, input, select, textarea, [contenteditable]:not([contenteditable="false"]), [role="button"], [role="link"]')))return;const a=this.getTarget();a?(a.focus(),setTimeout(()=>{const t=this.getTarget();this.connected&&t?.isConnected&&this.currentLabels.includes(s)&&t.focus()},0)):t.preventDefault()}}get labels(){const t=this.host.getRootNode();if(this.host.id&&"querySelectorAll"in t)try{const e=CSS.escape(this.host.id),i=CSS.escape(this.host.localName);return t.querySelectorAll(`label[for="${e}"], label:not([for]):has(${i}#${e})`)}catch{}return this.getInternals()?.labels??null}get accessibleName(){const t=this.resolveLabels();return n(t.length>0?t.map(t=>h(t,this.host)).join(" "):this.getFallbackName())}connect(){this.connected||(this.connected=!0,this.host.addEventListener("click",this.handleHostActivation),this.bindRegistry(),this.sync())}disconnect(){this.connected&&(this.connected=!1,this.host.removeEventListener("click",this.handleHostActivation),this.unbindLabelActivation(),this.releaseRegistry(),this.currentLabels=[],this.currentNamingNodes=[],this.referencedIds.clear())}sync(){if(this.connected&&this.bindRegistry(),this.unbindLabelActivation(),this.currentLabels=this.resolveLabels(),this.connected)for(const t of this.currentLabels)t.addEventListener("click",this.handleLabelActivation);this.currentNamingNodes=[...this.currentLabels],this.referencedIds.clear();for(const t of this.currentLabels)for(const e of(t.getAttribute("aria-labelledby")||"").split(/\s+/u).filter(Boolean)){this.referencedIds.add(e);const i=l(t,e);i&&i!==t&&this.currentNamingNodes.push(i)}const t=n(this.currentLabels.length>0?this.currentLabels.map(t=>h(t,this.host)).join(" "):this.getFallbackName());this.getTarget()?.setAttribute("aria-label",t),this.syncRelatedNames?.(t)}isAffectedBy(t){if("attributes"===t.type){if(t.target===this.host&&"id"===t.attributeName)return!0;const e=t.target;return"label"===e.localName&&"for"===t.attributeName?this.currentLabels.includes(e)||Boolean(this.host.id)&&e.htmlFor===this.host.id:!("id"!==t.attributeName||!this.referencedIds.has(e.id))||this.currentNamingNodes.some(t=>t===e||t.contains(e))}return!!this.currentNamingNodes.some(e=>e===t.target||e.contains(t.target))||"childList"===t.type&&[...t.addedNodes,...t.removedNodes].some(t=>{if(r(t,this.host)||r(this.host,t))return!0;if(this.currentNamingNodes.some(e=>r(t,e)))return!0;if(t.nodeType!==Node.ELEMENT_NODE)return!1;const e=t;return!!("label"===e.localName?[e]:Array.from(e.querySelectorAll("label"))).some(t=>t.hasAttribute("for")?Boolean(this.host.id)&&t.htmlFor===this.host.id:t.contains(this.host))||[e,...Array.from(e.querySelectorAll("[id]"))].some(t=>this.referencedIds.has(t.id))})}unbindLabelActivation(){for(const t of this.currentLabels)t.removeEventListener("click",this.handleLabelActivation)}bindRegistry(){const t=function(t){const e=t.getRootNode();return e.nodeType===Node.DOCUMENT_NODE||"undefined"!=typeof ShadowRoot&&e instanceof ShadowRoot?e:null}(this.host);t!==this.registryRoot&&(this.releaseRegistry(),t&&(this.registryRoot=t,this.registry=function(t){const e=t.nodeType===Node.DOCUMENT_NODE?t.documentElement:t;if(!e||"undefined"==typeof MutationObserver)return null;const i=a.get(t);if(i)return i;const s=new Set,n=new MutationObserver(t=>{for(const e of s)t.some(t=>e.isAffectedBy(t))&&e.sync()});n.observe(e,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["for","id","aria-label","aria-labelledby","aria-hidden","hidden","alt","title"]});const r={associations:s,observer:n};return a.set(t,r),r}(t)||void 0,this.registry?.associations.add(this)))}releaseRegistry(){this.registry?.associations.delete(this),this.registry&&0===this.registry.associations.size&&this.registryRoot&&(this.registry.observer.disconnect(),a.delete(this.registryRoot)),this.registry=void 0,this.registryRoot=void 0}resolveLabels(){const t=this.host.getRootNode();return"querySelectorAll"in t?Array.from(t.querySelectorAll("label")).filter(t=>t.hasAttribute("for")?Boolean(this.host.id)&&t.htmlFor===this.host.id:t.contains(this.host)):Array.from(this.getInternals()?.labels||[])}}const d=["badInput","customError","patternMismatch","rangeOverflow","rangeUnderflow","stepMismatch","tooLong","tooShort","typeMismatch","valueMissing"];function u(t){return d.some(e=>Boolean(t[e]))}let g=(()=>{let t,a,n,r,l,o,h,d,g,m,p,f,v,b,y,x,S,w,k,V,A,E,N,D,T,I,L,C,R,$,M,B,F=[e.element("snice-tag-input",{formAssociated:!0,delegatesFocus:!0})],O=[],j=HTMLElement,z=[],P=[],q=[],H=[],U=[],_=[],J=[],K=[],W=[],X=[],G=[],Q=[],Y=[],Z=[],tt=[],et=[],it=[],st=[],at=[],nt=[],rt=[],lt=[],ot=[],ht=[],ct=[],dt=[],ut=[],gt=[],mt=[],pt=[],ft=[],vt=[],bt=[],yt=[],xt=[],St=[],wt=[],kt=[],Vt=[];return class extends j{static{a=this}static{const c="function"==typeof Symbol&&Symbol.metadata?Object.create(j[Symbol.metadata]??null):void 0;n=[e.state()],r=[e.state()],l=[e.state()],o=[e.property({type:Array,attribute:"value"})],h=[e.property({type:Array,attribute:!1})],d=[e.property({type:Number,attribute:"max-tags"})],g=[e.property({type:Boolean,attribute:"allow-duplicates"})],m=[e.property()],p=[e.property({type:Boolean})],f=[e.property({type:Boolean})],v=[e.property()],b=[e.property()],y=[e.property({attribute:!1})],x=[e.property({type:Array,attribute:!1})],S=[e.property({type:Boolean,attribute:!1})],w=[e.property({type:Number,attribute:!1})],k=[e.query(".tag-input-field")],V=[e.query(".tag-remove")],A=[e.query(".tag-input-container")],E=[e.styles()],N=[e.ready()],D=[e.reconnect()],T=[e.dispose()],I=[e.watch("valueState",{immediate:!1})],L=[e.watch("defaultValue",{immediate:!1})],C=[e.watch("maxTags","allowDuplicates","disabled","readonly","formDisabled",{immediate:!1})],R=[e.render()],$=[e.dispatch("tag-add",{bubbles:!0,composed:!0})],M=[e.dispatch("tag-remove",{bubbles:!0,composed:!0})],B=[e.dispatch("tag-change",{bubbles:!0,composed:!0})],i(this,null,E,{kind:"method",name:"componentStyles",static:!1,private:!1,access:{has:t=>"componentStyles"in t,get:t=>t.componentStyles},metadata:c},null,z),i(this,null,N,{kind:"method",name:"init",static:!1,private:!1,access:{has:t=>"init"in t,get:t=>t.init},metadata:c},null,z),i(this,null,D,{kind:"method",name:"onReconnect",static:!1,private:!1,access:{has:t=>"onReconnect"in t,get:t=>t.onReconnect},metadata:c},null,z),i(this,null,T,{kind:"method",name:"cleanup",static:!1,private:!1,access:{has:t=>"cleanup"in t,get:t=>t.cleanup},metadata:c},null,z),i(this,null,I,{kind:"method",name:"handleValueChange",static:!1,private:!1,access:{has:t=>"handleValueChange"in t,get:t=>t.handleValueChange},metadata:c},null,z),i(this,null,L,{kind:"method",name:"handleDefaultValueChange",static:!1,private:!1,access:{has:t=>"handleDefaultValueChange"in t,get:t=>t.handleDefaultValueChange},metadata:c},null,z),i(this,null,C,{kind:"method",name:"handleValidationConfigurationChange",static:!1,private:!1,access:{has:t=>"handleValidationConfigurationChange"in t,get:t=>t.handleValidationConfigurationChange},metadata:c},null,z),i(this,null,R,{kind:"method",name:"renderTagInput",static:!1,private:!1,access:{has:t=>"renderTagInput"in t,get:t=>t.renderTagInput},metadata:c},null,z),i(this,null,$,{kind:"method",name:"emitAdd",static:!1,private:!1,access:{has:t=>"emitAdd"in t,get:t=>t.emitAdd},metadata:c},null,z),i(this,null,M,{kind:"method",name:"emitRemove",static:!1,private:!1,access:{has:t=>"emitRemove"in t,get:t=>t.emitRemove},metadata:c},null,z),i(this,null,B,{kind:"method",name:"emitChange",static:!1,private:!1,access:{has:t=>"emitChange"in t,get:t=>t.emitChange},metadata:c},null,z),i(null,null,n,{kind:"field",name:"valueState",static:!1,private:!1,access:{has:t=>"valueState"in t,get:t=>t.valueState,set:(t,e)=>{t.valueState=e}},metadata:c},P,q),i(null,null,r,{kind:"field",name:"formDisabled",static:!1,private:!1,access:{has:t=>"formDisabled"in t,get:t=>t.formDisabled,set:(t,e)=>{t.formDisabled=e}},metadata:c},H,U),i(null,null,l,{kind:"field",name:"constraintInvalid",static:!1,private:!1,access:{has:t=>"constraintInvalid"in t,get:t=>t.constraintInvalid,set:(t,e)=>{t.constraintInvalid=e}},metadata:c},_,J),i(null,null,o,{kind:"field",name:"defaultValue",static:!1,private:!1,access:{has:t=>"defaultValue"in t,get:t=>t.defaultValue,set:(t,e)=>{t.defaultValue=e}},metadata:c},K,W),i(null,null,h,{kind:"field",name:"suggestions",static:!1,private:!1,access:{has:t=>"suggestions"in t,get:t=>t.suggestions,set:(t,e)=>{t.suggestions=e}},metadata:c},X,G),i(null,null,d,{kind:"field",name:"maxTags",static:!1,private:!1,access:{has:t=>"maxTags"in t,get:t=>t.maxTags,set:(t,e)=>{t.maxTags=e}},metadata:c},Q,Y),i(null,null,g,{kind:"field",name:"allowDuplicates",static:!1,private:!1,access:{has:t=>"allowDuplicates"in t,get:t=>t.allowDuplicates,set:(t,e)=>{t.allowDuplicates=e}},metadata:c},Z,tt),i(null,null,m,{kind:"field",name:"placeholder",static:!1,private:!1,access:{has:t=>"placeholder"in t,get:t=>t.placeholder,set:(t,e)=>{t.placeholder=e}},metadata:c},et,it),i(null,null,p,{kind:"field",name:"disabled",static:!1,private:!1,access:{has:t=>"disabled"in t,get:t=>t.disabled,set:(t,e)=>{t.disabled=e}},metadata:c},st,at),i(null,null,f,{kind:"field",name:"readonly",static:!1,private:!1,access:{has:t=>"readonly"in t,get:t=>t.readonly,set:(t,e)=>{t.readonly=e}},metadata:c},nt,rt),i(null,null,v,{kind:"field",name:"label",static:!1,private:!1,access:{has:t=>"label"in t,get:t=>t.label,set:(t,e)=>{t.label=e}},metadata:c},lt,ot),i(null,null,b,{kind:"field",name:"name",static:!1,private:!1,access:{has:t=>"name"in t,get:t=>t.name,set:(t,e)=>{t.name=e}},metadata:c},ht,ct),i(null,null,y,{kind:"field",name:"inputValue",static:!1,private:!1,access:{has:t=>"inputValue"in t,get:t=>t.inputValue,set:(t,e)=>{t.inputValue=e}},metadata:c},dt,ut),i(null,null,x,{kind:"field",name:"filteredSuggestions",static:!1,private:!1,access:{has:t=>"filteredSuggestions"in t,get:t=>t.filteredSuggestions,set:(t,e)=>{t.filteredSuggestions=e}},metadata:c},gt,mt),i(null,null,S,{kind:"field",name:"showSuggestions",static:!1,private:!1,access:{has:t=>"showSuggestions"in t,get:t=>t.showSuggestions,set:(t,e)=>{t.showSuggestions=e}},metadata:c},pt,ft),i(null,null,w,{kind:"field",name:"highlightedIndex",static:!1,private:!1,access:{has:t=>"highlightedIndex"in t,get:t=>t.highlightedIndex,set:(t,e)=>{t.highlightedIndex=e}},metadata:c},vt,bt),i(null,null,k,{kind:"field",name:"inputElement",static:!1,private:!1,access:{has:t=>"inputElement"in t,get:t=>t.inputElement,set:(t,e)=>{t.inputElement=e}},metadata:c},yt,xt),i(null,null,V,{kind:"field",name:"firstRemoveButton",static:!1,private:!1,access:{has:t=>"firstRemoveButton"in t,get:t=>t.firstRemoveButton,set:(t,e)=>{t.firstRemoveButton=e}},metadata:c},St,wt),i(null,null,A,{kind:"field",name:"containerElement",static:!1,private:!1,access:{has:t=>"containerElement"in t,get:t=>t.containerElement,set:(t,e)=>{t.containerElement=e}},metadata:c},kt,Vt),i(null,t={value:a},F,{kind:"class",name:a.name,metadata:c},null,O),a=t.value,c&&Object.defineProperty(a,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:c}),s(a,O)}constructor(){super(),this.internals=s(this,z),this.dirtyValue=!1,this.customValidationMessage="",this.valueState=s(this,P,[]),this.formDisabled=(s(this,q),s(this,H,!1)),this.constraintInvalid=(s(this,U),s(this,_,!1)),this.defaultValue=(s(this,J),s(this,K,[])),this.suggestions=(s(this,W),s(this,X,[])),this.maxTags=(s(this,G),s(this,Q,0)),this.allowDuplicates=(s(this,Y),s(this,Z,!1)),this.placeholder=(s(this,tt),s(this,et,"Add a tag...")),this.disabled=(s(this,it),s(this,st,!1)),this.readonly=(s(this,at),s(this,nt,!1)),this.label=(s(this,rt),s(this,lt,"")),this.name=(s(this,ot),s(this,ht,"")),this.inputValue=(s(this,ct),s(this,dt,"")),this.filteredSuggestions=(s(this,ut),s(this,gt,[])),this.showSuggestions=(s(this,mt),s(this,pt,!1)),this.highlightedIndex=(s(this,ft),s(this,vt,-1)),this.inputElement=(s(this,bt),s(this,yt,void 0)),this.firstRemoveButton=(s(this,xt),s(this,St,void 0)),this.containerElement=(s(this,wt),s(this,kt,void 0)),this.handleDocumentClick=(s(this,Vt),t=>{t.composedPath().includes(this)||(this.showSuggestions=!1)}),"function"==typeof this.attachInternals&&(this.internals=this.attachInternals()),this.labelAssociation=new c(this,()=>this.internals,()=>this.interactionDisabled?void 0:this.validationAnchor,()=>this.label||"Tags")}get value(){return this.valueState}set value(t){this.setValue(t,!0)}formAssociatedCallback(){this.syncFormState()}formResetCallback(){this.dirtyValue=!1,this.applyDefaultValue(),this.clearDraft()}formDisabledCallback(t){this.formDisabled=t,this.syncValidity()}formStateRestoreCallback(t){if("string"==typeof t)try{const e=JSON.parse(t);Array.isArray(e)&&(this.setValue(e.map(String),!0),this.clearDraft())}catch{}}componentStyles(){return e.css`${":host([hidden]){display:none}:host{display:block;font-family:var(--snice-font-family, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif)}.tag-input-wrapper{display:flex;flex-direction:column;gap:var(--snice-spacing-2xs,.25rem)}.tag-input-label{font-size:var(--snice-font-size-sm, .875rem);font-weight:var(--snice-font-weight-medium,500);color:var(--snice-color-text,rgb(23 23 23))}.tag-input-container{display:flex;flex-wrap:wrap;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-xs,.5rem);border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);background:var(--snice-color-surface,rgb(255 255 255));cursor:text;transition:border-color var(--snice-transition-fast, 150ms) ease,box-shadow var(--snice-transition-fast, 150ms) ease;min-height:2.5rem;position:relative}.tag-input-container:focus-within{border-color:var(--snice-color-primary,rgb(37 99 235));box-shadow:0 0 0 var(--snice-focus-ring-width,2px) var(--snice-focus-ring-color,rgb(59 130 246 / .5))}.tag-input-container--disabled{opacity:.5;cursor:not-allowed;background:var(--snice-color-surface-container-high,rgb(252 251 249))}.tag-input-container--invalid{border-color:var(--snice-color-danger,rgb(220 38 38))}.tag{display:inline-flex;align-items:center;gap:var(--snice-spacing-2xs,.25rem);padding:var(--snice-spacing-3xs,.125rem) var(--snice-spacing-xs,.5rem);background:var(--snice-color-primary-subtle,hsl(214 100% 97%));color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);font-size:var(--snice-font-size-sm, .875rem);line-height:var(--snice-line-height-normal, 1.5);max-width:100%;animation:150ms tag-appear}@keyframes tag-appear{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.tag-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tag-remove{display:inline-flex;align-items:center;justify-content:center;background:0 0;border:none;cursor:pointer;padding:0;color:var(--snice-color-primary-hover,hsl(217 77% 48%));border-radius:var(--snice-border-radius-md,.25rem);width:1rem;height:1rem;flex-shrink:0;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-remove:hover{background:var(--snice-color-primary,hsl(217 83% 53%));color:var(--snice-color-text-inverse,rgb(250 250 250))}.tag-input-field{flex:1;min-width:4rem;border:none;outline:0;background:0 0;font-family:inherit;font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));padding:var(--snice-spacing-3xs,.125rem) 0}.tag-input-field::placeholder{color:var(--snice-color-text-tertiary,rgb(115 115 115))}.tag-input-field:disabled{cursor:not-allowed}.tag-suggestions{position:absolute;top:100%;left:-1px;right:-1px;margin-top:2px;background:var(--snice-color-surface,rgb(255 255 255));border:1px solid var(--snice-color-border,rgb(226 226 226));border-radius:var(--snice-border-radius-md,.25rem);box-shadow:var(--snice-shadow-lg,0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -4px rgb(0 0 0 / .1));max-height:12.5rem;overflow-y:auto;z-index:100}.tag-suggestion-item{padding:var(--snice-spacing-xs,.5rem) var(--snice-spacing-sm,.75rem);font-size:var(--snice-font-size-sm, .875rem);color:var(--snice-color-text,rgb(23 23 23));cursor:pointer;transition:background-color var(--snice-transition-fast, 150ms) ease}.tag-suggestion-item--highlighted,.tag-suggestion-item:hover{background:var(--snice-color-surface-hover,rgb(241 241 241))}.tag-suggestion-item--highlighted{color:var(--snice-color-primary,rgb(37 99 235))}.tag-suggestions::-webkit-scrollbar{width:.5rem}.tag-suggestions::-webkit-scrollbar-track{background:var(--snice-color-surface-container-high,rgb(252 251 249));border-radius:9999px}.tag-suggestions::-webkit-scrollbar-thumb{background:var(--snice-color-border,rgb(226 226 226));border-radius:9999px}@media (prefers-reduced-motion:reduce){*{transition-duration:0s!important;animation-duration:0s!important}}"}`}init(){if(Object.prototype.hasOwnProperty.call(this,"value")){const t=this.value;delete this.value,Array.isArray(t)&&(this.value=t.map(String))}else this.dirtyValue||this.applyDefaultValue();this.syncFormState(),this.attachOutsideClickListener(),this.labelAssociation.connect()}onReconnect(){this.attachOutsideClickListener(),this.labelAssociation.connect()}cleanup(){document.removeEventListener("click",this.handleDocumentClick),this.labelAssociation.disconnect()}attachOutsideClickListener(){document.addEventListener("click",this.handleDocumentClick)}get interactionDisabled(){return this.disabled||this.formDisabled}applyDefaultValue(){this.setValue(this.defaultValue,!1)}setValue(t,e){Array.isArray(t)&&(e&&(this.dirtyValue=!0),this.valueState=t.map(String),this.syncFormState())}syncFormValue(){const t=JSON.stringify(this.value);!function(t,e,i){t&&"function"==typeof t.setFormValue&&(void 0===i?t.setFormValue(e):t.setFormValue(e,i))}(this.internals,t,t)}syncFormState(){this.syncFormValue(),this.syncValidity()}get validationAnchor(){return this.inputElement??this.firstRemoveButton}syncValidityAfterRender(){queueMicrotask(()=>{this.rendered.then(()=>{this.isConnected&&this.syncValidity()})})}syncValidity(){const t=this.interactionDisabled||this.readonly,e=!t&&this.maxTags>0&&this.value.length>this.maxTags,i=!t&&!this.allowDuplicates&&new Set(this.value).size!==this.value.length,s=t?{}:{customError:Boolean(this.customValidationMessage)||i,tooLong:e},a=u(s),n=this.customValidationMessage||(e?`Use no more than ${this.maxTags} tags.`:"")||(i?"Duplicate tags are not allowed.":"");this.constraintInvalid=a,this.validationProxy.setCustomValidity(a?n:""),this.inputElement?.setCustomValidity(a?n:""),this.inputElement?.setAttribute("aria-invalid",String(a)),this.containerElement?.setAttribute("aria-invalid",String(a)),this.containerElement?.classList.toggle("tag-input-container--invalid",a),function(t,e,i,s){t&&"function"==typeof t.setValidity&&(u(e)?s?t.setValidity(e,i,s):t.setValidity(e,i):t.setValidity({}))}(this.internals,s,n,this.validationAnchor)}get validationProxy(){return this.validationInput||(this.validationInput=document.createElement("input")),this.validationInput}clearDraft(){this.inputValue="",this.filteredSuggestions=[],this.showSuggestions=!1,this.highlightedIndex=-1,this.inputElement&&(this.inputElement.value="")}handleValueChange(){this.syncFormState(),this.syncValidityAfterRender()}handleDefaultValueChange(){this.dirtyValue||this.applyDefaultValue()}handleValidationConfigurationChange(){this.syncValidity(),this.syncValidityAfterRender()}renderTagInput(){const t=this.interactionDisabled,i=this.readonly,s=!t&&!i&&(this.maxTags<=0||this.value.length<this.maxTags),a=this.showSuggestions&&this.filteredSuggestions.length>0;return e.html`
2
2
  <div part="base" class="tag-input-wrapper">
3
3
  <if ${!!this.label}>
4
4
  <label part="label" class="tag-input-label">${this.label}</label>
@@ -60,5 +60,5 @@ void 0===globalThis.Snice&&console.warn("[snice] snice-runtime.min.js must be lo
60
60
  </if>
61
61
  </div>
62
62
  </div>
63
- `}addTag(t){const e=t.trim();e&&(!this.allowDuplicates&&this.value.includes(e)||this.maxTags>0&&this.value.length>=this.maxTags||(this.value=[...this.value,e],this.emitAdd(e)))}removeTag(t){if(t<0||t>=this.value.length)return;const e=this.value[t];this.value=this.value.filter((e,i)=>i!==t),this.emitRemove(e,t)}clear(){this.value=[]}focus(){this.interactionDisabled||this.validationAnchor?.focus()}blur(){this.validationAnchor?.blur()}get type(){return"text"}get form(){return function(t,e){if(e?.form)return e.form;const i=t.getAttribute("form");if(null!==i){const e=t.getRootNode();return"querySelectorAll"in e?Array.from(e.querySelectorAll("form[id]")).find(t=>t instanceof HTMLFormElement&&t.id===i)??null:null}return t.closest("form")}(this,this.internals)}get validity(){return this.internals?.validity??this.validationProxy.validity}get validationMessage(){return this.internals?.validationMessage??this.validationProxy.validationMessage}get willValidate(){return!this.interactionDisabled&&!this.readonly&&(this.internals?.willValidate??this.inputElement?.willValidate??!0)}get labels(){return this.labelAssociation.labels}checkValidity(){return this.syncValidity(),this.internals?.checkValidity()??this.validationProxy.checkValidity()}reportValidity(){return this.syncValidity(),this.internals?.reportValidity()??this.validationProxy.reportValidity()}setCustomValidity(t){this.customValidationMessage=String(t),this.syncValidity()}handleInput(t){const e=t.target;if(this.inputValue=e.value,this.inputValue.includes(",")){const t=this.inputValue.split(",");for(const e of t)e.trim()&&this.addTag(e);return this.inputValue="",e.value="",void(this.showSuggestions=!1)}this.updateFilteredSuggestions()}handleKeyDown(t){switch(t.key){case"Enter":t.preventDefault(),this.highlightedIndex>=0&&this.highlightedIndex<this.filteredSuggestions.length?this.selectSuggestion(this.filteredSuggestions[this.highlightedIndex]):this.inputValue.trim()&&(this.addTag(this.inputValue),this.inputValue="",this.inputElement&&(this.inputElement.value=""),this.showSuggestions=!1);break;case"Backspace":!this.inputValue&&this.value.length>0&&this.removeTag(this.value.length-1);break;case"ArrowDown":t.preventDefault(),this.showSuggestions&&this.filteredSuggestions.length>0&&(this.highlightedIndex=Math.min(this.highlightedIndex+1,this.filteredSuggestions.length-1));break;case"ArrowUp":t.preventDefault(),this.showSuggestions&&(this.highlightedIndex=Math.max(this.highlightedIndex-1,-1));break;case"Escape":this.showSuggestions=!1,this.highlightedIndex=-1}}handleFocus(){this.updateFilteredSuggestions()}handleBlur(){setTimeout(()=>{this.showSuggestions=!1,this.highlightedIndex=-1},200)}selectSuggestion(t){this.addTag(t),this.inputValue="",this.inputElement&&(this.inputElement.value=""),this.showSuggestions=!1,this.highlightedIndex=-1,this.focus()}updateFilteredSuggestions(){if(0===this.suggestions.length)return void(this.showSuggestions=!1);const t=this.inputValue.toLowerCase();this.filteredSuggestions=this.suggestions.filter(e=>{const i=!t||e.toLowerCase().includes(t),s=this.allowDuplicates||!this.value.includes(e);return i&&s}),this.showSuggestions=this.filteredSuggestions.length>0,this.highlightedIndex=-1}emitAdd(t){return{tag:t,value:this.value}}emitRemove(t,e){return{tag:t,index:e,value:this.value}}emitChange(){return{value:this.value}}},a})();return t.SniceTagInput=g,t}({},Snice);
63
+ `}addTag(t){const e=t.trim();e&&(!this.allowDuplicates&&this.value.includes(e)||this.maxTags>0&&this.value.length>=this.maxTags||(this.value=[...this.value,e],this.emitAdd(e),this.emitChange()))}removeTag(t){if(t<0||t>=this.value.length)return;const e=this.value[t];this.value=this.value.filter((e,i)=>i!==t),this.emitRemove(e,t),this.emitChange()}clear(){this.value=[]}focus(){this.interactionDisabled||this.validationAnchor?.focus()}blur(){this.validationAnchor?.blur()}get type(){return"text"}get form(){return function(t,e){if(e?.form)return e.form;const i=t.getAttribute("form");if(null!==i){const e=t.getRootNode();return"querySelectorAll"in e?Array.from(e.querySelectorAll("form[id]")).find(t=>t instanceof HTMLFormElement&&t.id===i)??null:null}return t.closest("form")}(this,this.internals)}get validity(){return this.internals?.validity??this.validationProxy.validity}get validationMessage(){return this.internals?.validationMessage??this.validationProxy.validationMessage}get willValidate(){return!this.interactionDisabled&&!this.readonly&&(this.internals?.willValidate??this.inputElement?.willValidate??!0)}get labels(){return this.labelAssociation.labels}checkValidity(){return this.syncValidity(),this.internals?.checkValidity()??this.validationProxy.checkValidity()}reportValidity(){return this.syncValidity(),this.internals?.reportValidity()??this.validationProxy.reportValidity()}setCustomValidity(t){this.customValidationMessage=String(t),this.syncValidity()}handleInput(t){const e=t.target;if(this.inputValue=e.value,this.inputValue.includes(",")){const t=this.inputValue.split(",");for(const e of t)e.trim()&&this.addTag(e);return this.inputValue="",e.value="",void(this.showSuggestions=!1)}this.updateFilteredSuggestions()}handleKeyDown(t){switch(t.key){case"Enter":t.preventDefault(),this.highlightedIndex>=0&&this.highlightedIndex<this.filteredSuggestions.length?this.selectSuggestion(this.filteredSuggestions[this.highlightedIndex]):this.inputValue.trim()&&(this.addTag(this.inputValue),this.inputValue="",this.inputElement&&(this.inputElement.value=""),this.showSuggestions=!1);break;case"Backspace":!this.inputValue&&this.value.length>0&&this.removeTag(this.value.length-1);break;case"ArrowDown":t.preventDefault(),this.showSuggestions&&this.filteredSuggestions.length>0&&(this.highlightedIndex=Math.min(this.highlightedIndex+1,this.filteredSuggestions.length-1));break;case"ArrowUp":t.preventDefault(),this.showSuggestions&&(this.highlightedIndex=Math.max(this.highlightedIndex-1,-1));break;case"Escape":this.showSuggestions=!1,this.highlightedIndex=-1}}handleFocus(){this.updateFilteredSuggestions()}handleBlur(){setTimeout(()=>{this.showSuggestions=!1,this.highlightedIndex=-1},200)}selectSuggestion(t){this.addTag(t),this.inputValue="",this.inputElement&&(this.inputElement.value=""),this.showSuggestions=!1,this.highlightedIndex=-1,this.focus()}updateFilteredSuggestions(){if(0===this.suggestions.length)return void(this.showSuggestions=!1);const t=this.inputValue.toLowerCase();this.filteredSuggestions=this.suggestions.filter(e=>{const i=!t||e.toLowerCase().includes(t),s=this.allowDuplicates||!this.value.includes(e);return i&&s}),this.showSuggestions=this.filteredSuggestions.length>0,this.highlightedIndex=-1}emitAdd(t){return{tag:t,value:this.value}}emitRemove(t,e){return{tag:t,index:e,value:this.value}}emitChange(){return{value:this.value}}},a})();return t.SniceTagInput=g,t}({},Snice);
64
64
  //# sourceMappingURL=snice-tag-input.min.js.map