snice 7.0.2 → 7.1.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 (304) hide show
  1. package/.agents/skills/snice/SKILL.md +4 -0
  2. package/.agents/skills/snice/references/core-kitchen-sink.ts +39 -1
  3. package/README.md +59 -14
  4. package/adapters/react/SniceProvider.js +2 -2
  5. package/adapters/react/SniceRouter.js +2 -2
  6. package/adapters/react/matchRoute.js +2 -2
  7. package/adapters/react/useRequestHandler.js +2 -2
  8. package/bin/analyzer-contracts.js +6 -1
  9. package/bin/postinstall.js +59 -0
  10. package/bin/project-analyzer.js +466 -5
  11. package/bin/snice.js +3 -0
  12. package/dist/app-context.d.ts +11 -0
  13. package/dist/cdn/accordion/snice-accordion.js +2 -2
  14. package/dist/cdn/action-bar/snice-action-bar.js +2 -2
  15. package/dist/cdn/activity-feed/snice-activity-feed.js +2 -2
  16. package/dist/cdn/alert/snice-alert.js +2 -2
  17. package/dist/cdn/app-tiles/snice-app-tiles.js +2 -2
  18. package/dist/cdn/approval-flow/snice-approval-flow.js +2 -2
  19. package/dist/cdn/audio-recorder/snice-audio-recorder.js +2 -2
  20. package/dist/cdn/availability/snice-availability.js +2 -2
  21. package/dist/cdn/avatar/snice-avatar.js +2 -2
  22. package/dist/cdn/avatar-group/snice-avatar-group.js +2 -2
  23. package/dist/cdn/badge/snice-badge.js +2 -2
  24. package/dist/cdn/banner/snice-banner.js +2 -2
  25. package/dist/cdn/binpack/snice-binpack.js +2 -2
  26. package/dist/cdn/book/snice-book.js +2 -2
  27. package/dist/cdn/booking/snice-booking.js +2 -2
  28. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +2 -2
  29. package/dist/cdn/button/snice-button.js +2 -2
  30. package/dist/cdn/calendar/snice-calendar.js +2 -2
  31. package/dist/cdn/camera/snice-camera.js +2 -2
  32. package/dist/cdn/camera-annotate/snice-camera-annotate.js +2 -2
  33. package/dist/cdn/candlestick/snice-candlestick.js +2 -2
  34. package/dist/cdn/card/snice-card.js +2 -2
  35. package/dist/cdn/carousel/snice-carousel.js +2 -2
  36. package/dist/cdn/cart/snice-cart.js +2 -2
  37. package/dist/cdn/chart/snice-chart.js +2 -2
  38. package/dist/cdn/chat/snice-chat.js +2 -2
  39. package/dist/cdn/checkbox/snice-checkbox.js +2 -2
  40. package/dist/cdn/chip/snice-chip.js +2 -2
  41. package/dist/cdn/code-block/snice-code-block.js +2 -2
  42. package/dist/cdn/color-display/snice-color-display.js +2 -2
  43. package/dist/cdn/color-picker/snice-color-picker.js +2 -2
  44. package/dist/cdn/command-palette/snice-command-palette.js +2 -2
  45. package/dist/cdn/comments/snice-comments.js +2 -2
  46. package/dist/cdn/countdown/snice-countdown.js +2 -2
  47. package/dist/cdn/cropper/snice-cropper.js +2 -2
  48. package/dist/cdn/data-card/snice-data-card.js +2 -2
  49. package/dist/cdn/date-picker/snice-date-picker.js +2 -2
  50. package/dist/cdn/date-range-picker/snice-date-range-picker.js +2 -2
  51. package/dist/cdn/date-time-picker/snice-date-time-picker.js +2 -2
  52. package/dist/cdn/diff/snice-diff.js +2 -2
  53. package/dist/cdn/divider/snice-divider.js +2 -2
  54. package/dist/cdn/doc/snice-doc.js +2 -2
  55. package/dist/cdn/draw/snice-draw.js +2 -2
  56. package/dist/cdn/drawer/snice-drawer.js +2 -2
  57. package/dist/cdn/empty-state/snice-empty-state.js +2 -2
  58. package/dist/cdn/estimate/snice-estimate.js +2 -2
  59. package/dist/cdn/file-gallery/snice-file-gallery.js +2 -2
  60. package/dist/cdn/file-upload/snice-file-upload.js +2 -2
  61. package/dist/cdn/flip-card/snice-flip-card.js +2 -2
  62. package/dist/cdn/flow/snice-flow.js +2 -2
  63. package/dist/cdn/form-layout/snice-form-layout.js +2 -2
  64. package/dist/cdn/funnel/snice-funnel.js +2 -2
  65. package/dist/cdn/gantt/snice-gantt.js +2 -2
  66. package/dist/cdn/gauge/snice-gauge.js +2 -2
  67. package/dist/cdn/grid/snice-grid.js +2 -2
  68. package/dist/cdn/heatmap/snice-heatmap.js +2 -2
  69. package/dist/cdn/image/snice-image.js +2 -2
  70. package/dist/cdn/input/snice-input.js +2 -2
  71. package/dist/cdn/invoice/snice-invoice.js +2 -2
  72. package/dist/cdn/kanban/snice-kanban.js +2 -2
  73. package/dist/cdn/key-value/snice-key-value.js +2 -2
  74. package/dist/cdn/kpi/snice-kpi.js +2 -2
  75. package/dist/cdn/layout/README.md +17 -2
  76. package/dist/cdn/layout/snice-layout.js +1656 -11
  77. package/dist/cdn/layout/snice-layout.js.map +1 -1
  78. package/dist/cdn/layout/snice-layout.min.js +379 -2
  79. package/dist/cdn/layout/snice-layout.min.js.map +1 -1
  80. package/dist/cdn/leaderboard/snice-leaderboard.js +2 -2
  81. package/dist/cdn/link/snice-link.js +2 -2
  82. package/dist/cdn/link-preview/snice-link-preview.js +2 -2
  83. package/dist/cdn/list/snice-list.js +2 -2
  84. package/dist/cdn/location/snice-location.js +2 -2
  85. package/dist/cdn/login/snice-login.js +2 -2
  86. package/dist/cdn/map/snice-map.js +2 -2
  87. package/dist/cdn/markdown/snice-markdown.js +2 -2
  88. package/dist/cdn/masonry/snice-masonry.js +2 -2
  89. package/dist/cdn/menu/snice-menu.js +2 -2
  90. package/dist/cdn/message-strip/snice-message-strip.js +2 -2
  91. package/dist/cdn/modal/snice-modal.js +2 -2
  92. package/dist/cdn/music-player/snice-music-player.js +2 -2
  93. package/dist/cdn/nav/snice-nav.js +2 -2
  94. package/dist/cdn/network-graph/snice-network-graph.js +2 -2
  95. package/dist/cdn/notification-center/snice-notification-center.js +2 -2
  96. package/dist/cdn/order-tracker/snice-order-tracker.js +2 -2
  97. package/dist/cdn/org-chart/snice-org-chart.js +2 -2
  98. package/dist/cdn/pagination/snice-pagination.js +2 -2
  99. package/dist/cdn/paint/snice-paint.js +2 -2
  100. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +2 -2
  101. package/dist/cdn/permission-matrix/snice-permission-matrix.js +2 -2
  102. package/dist/cdn/podcast-player/snice-podcast-player.js +2 -2
  103. package/dist/cdn/popover/snice-popover.js +2 -2
  104. package/dist/cdn/pricing-table/snice-pricing-table.js +2 -2
  105. package/dist/cdn/product-card/snice-product-card.js +2 -2
  106. package/dist/cdn/progress/snice-progress.js +2 -2
  107. package/dist/cdn/progress-ring/snice-progress-ring.js +2 -2
  108. package/dist/cdn/qr-code/snice-qr-code.js +2 -2
  109. package/dist/cdn/qr-reader/snice-qr-reader.js +2 -2
  110. package/dist/cdn/radio/snice-radio.js +2 -2
  111. package/dist/cdn/range-slider/snice-range-slider.js +2 -2
  112. package/dist/cdn/rating/snice-rating.js +2 -2
  113. package/dist/cdn/receipt/snice-receipt.js +2 -2
  114. package/dist/cdn/recipe/snice-recipe.js +3 -3
  115. package/dist/cdn/recipe/snice-recipe.js.map +1 -1
  116. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  117. package/dist/cdn/recipe/snice-recipe.min.js.map +1 -1
  118. package/dist/cdn/runtime/README.md +2 -2
  119. package/dist/cdn/runtime/snice-runtime.esm.js +3725 -3336
  120. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  121. package/dist/cdn/runtime/snice-runtime.esm.min.js +1 -1
  122. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  123. package/dist/cdn/runtime/snice-runtime.js +3727 -3335
  124. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  125. package/dist/cdn/runtime/snice-runtime.min.js +1 -1
  126. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  127. package/dist/cdn/sankey/snice-sankey.js +2 -2
  128. package/dist/cdn/segmented-control/snice-segmented-control.js +2 -2
  129. package/dist/cdn/select/snice-select.js +2 -2
  130. package/dist/cdn/skeleton/snice-skeleton.js +2 -2
  131. package/dist/cdn/slider/snice-slider.js +2 -2
  132. package/dist/cdn/sortable/snice-sortable.js +2 -2
  133. package/dist/cdn/sparkline/snice-sparkline.js +2 -2
  134. package/dist/cdn/spinner/snice-spinner.js +2 -2
  135. package/dist/cdn/split-button/snice-split-button.js +2 -2
  136. package/dist/cdn/split-pane/snice-split-pane.js +2 -2
  137. package/dist/cdn/spotlight/snice-spotlight.js +2 -2
  138. package/dist/cdn/stat-group/snice-stat-group.js +2 -2
  139. package/dist/cdn/step-input/snice-step-input.js +2 -2
  140. package/dist/cdn/stepper/snice-stepper.js +2 -2
  141. package/dist/cdn/switch/snice-switch.js +2 -2
  142. package/dist/cdn/table/README.md +6 -2
  143. package/dist/cdn/table/snice-table.esm.js +366 -56
  144. package/dist/cdn/table/snice-table.esm.js.map +1 -1
  145. package/dist/cdn/table/snice-table.esm.min.js +107 -46
  146. package/dist/cdn/table/snice-table.esm.min.js.map +1 -1
  147. package/dist/cdn/table/snice-table.js +367 -59
  148. package/dist/cdn/table/snice-table.js.map +1 -1
  149. package/dist/cdn/table/snice-table.min.js +155 -94
  150. package/dist/cdn/table/snice-table.min.js.map +1 -1
  151. package/dist/cdn/tabs/snice-tabs.js +2 -2
  152. package/dist/cdn/tag/snice-tag.js +2 -2
  153. package/dist/cdn/tag-input/snice-tag-input.js +2 -2
  154. package/dist/cdn/terminal/snice-terminal.js +3 -2
  155. package/dist/cdn/terminal/snice-terminal.js.map +1 -1
  156. package/dist/cdn/terminal/snice-terminal.min.js +1 -0
  157. package/dist/cdn/terminal/snice-terminal.min.js.map +1 -1
  158. package/dist/cdn/testimonial/snice-testimonial.js +2 -2
  159. package/dist/cdn/textarea/snice-textarea.js +2 -2
  160. package/dist/cdn/time-picker/snice-time-picker.js +2 -2
  161. package/dist/cdn/time-range-picker/snice-time-range-picker.js +2 -2
  162. package/dist/cdn/timeline/snice-timeline.js +2 -2
  163. package/dist/cdn/timer/snice-timer.js +2 -2
  164. package/dist/cdn/toast/snice-toast.js +2 -2
  165. package/dist/cdn/tooltip/snice-tooltip.js +2 -2
  166. package/dist/cdn/tree/snice-tree.js +2 -2
  167. package/dist/cdn/treemap/snice-treemap.js +2 -2
  168. package/dist/cdn/user-card/snice-user-card.js +2 -2
  169. package/dist/cdn/video-player/README.md +1 -1
  170. package/dist/cdn/video-player/snice-video-player.js +3 -2
  171. package/dist/cdn/video-player/snice-video-player.js.map +1 -1
  172. package/dist/cdn/video-player/snice-video-player.min.js +1 -0
  173. package/dist/cdn/video-player/snice-video-player.min.js.map +1 -1
  174. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +2 -2
  175. package/dist/cdn/waterfall/snice-waterfall.js +2 -2
  176. package/dist/cdn/weather/snice-weather.js +2 -2
  177. package/dist/cdn/work-order/snice-work-order.js +2 -2
  178. package/dist/components/recipe/snice-recipe.js +1 -1
  179. package/dist/components/recipe/snice-recipe.js.map +1 -1
  180. package/dist/components/table/snice-table.d.ts +1 -0
  181. package/dist/components/table/snice-table.js +18 -2
  182. package/dist/components/table/snice-table.js.map +1 -1
  183. package/dist/components/table/table-tree-data.js +1 -0
  184. package/dist/components/table/table-tree-data.js.map +1 -1
  185. package/dist/components/terminal/snice-terminal.js +1 -0
  186. package/dist/components/terminal/snice-terminal.js.map +1 -1
  187. package/dist/components/video-player/snice-video-player.js +1 -0
  188. package/dist/components/video-player/snice-video-player.js.map +1 -1
  189. package/dist/context-provider.d.ts +16 -0
  190. package/dist/daemon-target.d.ts +10 -0
  191. package/dist/daemon.d.ts +10 -0
  192. package/dist/index.cjs +3721 -3329
  193. package/dist/index.cjs.map +1 -1
  194. package/dist/index.d.ts +3 -0
  195. package/dist/index.esm.js +3719 -3330
  196. package/dist/index.esm.js.map +1 -1
  197. package/dist/index.iife.js +3721 -3329
  198. package/dist/index.iife.js.map +1 -1
  199. package/dist/keyboard-filter.d.ts +25 -0
  200. package/dist/on.d.ts +1 -1
  201. package/dist/parts.d.ts +0 -17
  202. package/dist/react/SniceProvider.js +2 -2
  203. package/dist/react/SniceRouter.js +2 -2
  204. package/dist/react/index.js +2 -2
  205. package/dist/react/matchRoute.js +2 -2
  206. package/dist/react/useRequestHandler.js +2 -2
  207. package/dist/request-response.d.ts +9 -1
  208. package/dist/symbols.cjs +11 -2
  209. package/dist/symbols.cjs.map +1 -1
  210. package/dist/symbols.d.ts +3 -0
  211. package/dist/symbols.esm.js +9 -3
  212. package/dist/symbols.esm.js.map +1 -1
  213. package/dist/testing.d.ts +1 -1
  214. package/dist/transitions.cjs +2 -2
  215. package/dist/transitions.esm.js +2 -2
  216. package/dist/types/app-context.d.ts +9 -58
  217. package/dist/types/daemon.d.ts +8 -0
  218. package/dist/types/dispatch-options.d.ts +2 -0
  219. package/dist/types/index.d.ts +1 -0
  220. package/dist/types/on-options.d.ts +5 -0
  221. package/dist/types/request-options.d.ts +2 -0
  222. package/dist/types/respond-options.d.ts +2 -0
  223. package/docs/ai/DEVELOPMENT.md +15 -1
  224. package/docs/ai/README.md +5 -1
  225. package/docs/ai/api.md +13 -4
  226. package/docs/ai/architecture.md +50 -1
  227. package/docs/ai/cli.md +9 -0
  228. package/docs/ai/components/avatar.md +8 -8
  229. package/docs/ai/components/breadcrumbs.md +2 -1
  230. package/docs/ai/components/button.md +2 -7
  231. package/docs/ai/components/calendar.md +1 -1
  232. package/docs/ai/components/camera.md +1 -1
  233. package/docs/ai/components/chart.md +3 -1
  234. package/docs/ai/components/code-block.md +2 -2
  235. package/docs/ai/components/date-picker.md +5 -19
  236. package/docs/ai/components/date-range-picker.md +4 -12
  237. package/docs/ai/components/draw.md +5 -5
  238. package/docs/ai/components/drawer.md +4 -4
  239. package/docs/ai/components/form-layout.md +2 -0
  240. package/docs/ai/components/icons.md +7 -16
  241. package/docs/ai/components/key-value.md +3 -22
  242. package/docs/ai/components/layout.md +8 -12
  243. package/docs/ai/components/leaderboard.md +2 -2
  244. package/docs/ai/components/link-preview.md +4 -3
  245. package/docs/ai/components/login.md +11 -0
  246. package/docs/ai/components/markdown.md +7 -0
  247. package/docs/ai/components/masonry.md +6 -0
  248. package/docs/ai/components/menu.md +1 -1
  249. package/docs/ai/components/modal.md +7 -0
  250. package/docs/ai/components/notification-center.md +5 -4
  251. package/docs/ai/components/radio.md +7 -0
  252. package/docs/ai/components/rating.md +3 -3
  253. package/docs/ai/components/select.md +4 -13
  254. package/docs/ai/components/spotlight.md +2 -0
  255. package/docs/ai/components/table.md +1 -4
  256. package/docs/ai/components/tag-input.md +6 -0
  257. package/docs/ai/components/terminal.md +6 -0
  258. package/docs/ai/components/tooltip.md +10 -16
  259. package/docs/ai/components/tree.md +2 -2
  260. package/docs/ai/components/video-player.md +5 -0
  261. package/docs/ai/components/waterfall.md +7 -0
  262. package/docs/ai/daemons.md +80 -0
  263. package/docs/ai/decorators.md +6 -4
  264. package/docs/ai/events.md +35 -0
  265. package/docs/ai/patterns.md +45 -1
  266. package/docs/ai/request-response.md +26 -9
  267. package/docs/ai/routing.md +16 -1
  268. package/docs/cli.md +7 -0
  269. package/docs/components/breadcrumbs.md +2 -1
  270. package/docs/components/calendar.md +1 -1
  271. package/docs/components/camera.md +1 -1
  272. package/docs/components/chart.md +1 -1
  273. package/docs/components/code-block.md +13 -4
  274. package/docs/components/color-picker.md +6 -5
  275. package/docs/components/date-time-picker.md +14 -0
  276. package/docs/components/diff.md +2 -1
  277. package/docs/components/draw.md +5 -5
  278. package/docs/components/drawer.md +4 -4
  279. package/docs/components/input.md +1 -0
  280. package/docs/components/layout.md +20 -22
  281. package/docs/components/leaderboard.md +10 -3
  282. package/docs/components/link-preview.md +11 -9
  283. package/docs/components/login.md +4 -0
  284. package/docs/components/menu.md +1 -1
  285. package/docs/components/modal.md +1 -0
  286. package/docs/components/nav.md +1 -0
  287. package/docs/components/network-graph.md +1 -0
  288. package/docs/components/notification-center.md +2 -1
  289. package/docs/components/product-card.md +1 -0
  290. package/docs/components/qr-reader.md +1 -0
  291. package/docs/components/rating.md +4 -4
  292. package/docs/components/select.md +1 -0
  293. package/docs/components/spotlight.md +2 -0
  294. package/docs/components/tabs.md +1 -0
  295. package/docs/components/terminal.md +3 -0
  296. package/docs/components/textarea.md +1 -1
  297. package/docs/components/time-picker.md +14 -0
  298. package/docs/components/tooltip.md +2 -0
  299. package/docs/components/tree.md +2 -2
  300. package/docs/daemons.md +200 -0
  301. package/docs/events.md +92 -2
  302. package/docs/request-response.md +20 -13
  303. package/docs/routing.md +25 -1
  304. package/package.json +6 -4
@@ -1,2 +1,2 @@
1
- var Snice=function(e){"use strict";globalThis.snice||(globalThis.snice={controllerRegistry:new Map,pendingControllerAttachments:new Map,controllerIdCounter:0}),globalThis.snice.pendingControllerAttachments??=new Map;const t=globalThis.snice;function n(e){return Symbol.for(`snice:${e}`)}const o=n("is-controller-class"),r=n("is-controller-instance"),s=n("is-element-class"),i=n("channel-handlers"),a=n("ready-promise"),c=n("ready-resolve"),l=n("rendered-promise"),h=n("rendered-resolve"),u=n("pending-reconnect-render"),d=n("render-depth"),f=n("render-root"),m=n("element-options"),p=n("controller"),y=n("initialized"),g=n("controller-key"),b=n("controller-name"),v=n("controller-id"),w=n("controller-operations"),E=n("native-controller"),N=n("direct-controller"),S=n("pending-controller-binding"),A=n("cleanup"),T=n("properties"),_=n("property-values"),C=n("property-defaults"),O=n("property-wrappers"),x=n("pre-init-property-values"),k=n("pre-upgrade-property-bindings"),L=n("properties-initialized"),$=n("property-watchers"),P=n("explicitly-set-properties"),M=n("router-context"),j=n("page-transition"),R=n("created-at"),I=n("ready-handlers"),D=n("dispose-handlers"),V=n("reconnect-handlers"),q=n("moved-handlers"),B=n("adopted-handlers"),F=n("observers"),W=n("setting-from-property"),z=n("moved-timers"),U=n("adopted-timers"),H=n("dispatch-timers"),K=n("render-method"),G=n("render-options"),Q=n("render-instance"),J=n("render-timers"),X=n("render-callbacks"),Y=n("styles-method"),Z=n("styles-applied"),ee=n("parent-styles-methods"),te=n("snice-element-base"),ne=n("context-handler"),oe=n("navigation-context-instance"),re=n("registered-elements"),se=n("is-updating"),ie=n("context-register"),ae=n("context-unregister"),ce=n("context-notify-element"),le=n("context-timer"),he=n("context-called"),ue=n("context-update"),de=n("context-methods"),fe=n("watch-methods"),me=n("observe-methods"),pe=n("on-methods"),ye=n("respond-methods"),ge=n("ready-methods"),be=n("dispose-methods"),ve=n("reconnect-methods"),we=n("moved-methods"),Ee=n("adopted-methods"),Ne=n("controller-abort"),Se=n("controller-attached"),Ae=n("property-definers");class Te{static{this.SEPARATOR=","}static serialize(e){return Array.isArray(e)?e.map(e=>{if("string"==typeof e){if(e.includes(Te.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${Te.SEPARATOR}" (U+FF0C)`);return e}if("number"==typeof e||"boolean"==typeof e)return String(e);throw new Error("SimpleArray only supports string, number, and boolean types. Got: "+typeof e)}).join(Te.SEPARATOR):""}static parse(e){return null==e||""===e?[]:e.split(Te.SEPARATOR).map(e=>{if(/^-?\d+\.?\d*$/.test(e)){const t=Number(e);if(!isNaN(t))return t}return"true"===e||"false"!==e&&e})}}var _e,Ce,Oe;e.TransitionMode=void 0,function(e){e.SEQUENTIAL="sequential",e.SIMULTANEOUS="simultaneous"}(e.TransitionMode||(e.TransitionMode={}));const xe=Symbol.for("snice:registered-elements-set");let ke=0;class Le{constructor(e={},t=[],n="",o={},r){if(this[_e]=new WeakMap,this[Ce]=new Set,this[Oe]=!1,this.id=ke++,this.application=e,this.navigation={placards:t,route:n,params:o},r&&"function"==typeof r.create)this.fetch=r.create(this);else{if("function"!=typeof fetch)throw new Error("No fetch implementation available");this.fetch=fetch.bind(this)}}[(_e=re,Ce=xe,Oe=se,ie)](e,t){const n=this[re];let o=n.get(e);o||(o=new Set,n.set(e,o)),o.add(t),this[xe].add(e)}[ae](e,t){const n=this[re];if(void 0!==t){const o=n.get(e);if(!o)return;if(o.delete(t),o.size>0)return}n.delete(e),this[xe].delete(e)}[ue](e,t,n,o){this.application=e,this.navigation.placards=t,this.navigation.route=n,this.navigation.params=o,this.notify()}update(){this.notify()}notify(){if(this[se])return;this[se]=!0;const e=this[xe],t=this[re];for(const n of e){const e=t.get(n);if(e)for(const t of e)if("function"==typeof n[t])try{n[t](this)}catch(e){console.error(`Error calling @context method ${t}:`,e)}}this[se]=!1}[ce](e){const t=this[re].get(e);if(t)for(const n of t)"function"==typeof e[n]&&e[n](this)}}function $e(e){if(null!=e)return"string"==typeof e?String:"number"==typeof e?Number:"boolean"==typeof e?Boolean:e instanceof Date?Date:"bigint"==typeof e?BigInt:Array.isArray(e)?Array:void 0}function Pe(e,t,n,o){const r=t.type||$e(o);if(t.converter?.fromAttribute)return t.converter.fromAttribute(e,r);switch(r){case Boolean:return null!==e&&"false"!==e;case Number:return null!==e?Number(e):null;case String:return e;case Date:return e?new Date(e):null;case BigInt:return e&&e.endsWith("n")?BigInt(e.slice(0,-1)):e?BigInt(e):null;case Te:return Te.parse(e);case Array:try{return e?JSON.parse(e):[]}catch{return[]}case Object:try{return e?JSON.parse(e):{}}catch{return{}}default:return"number"==typeof n&&null!==e?Number(e):e}}function Me(e,t){return e!==t&&(e==e||t==t)}function je(e,t){return"string"==typeof e.attribute?e.attribute.toLowerCase():!0===e.attribute||"kebab"===e.attributeNaming?t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase():t.toLowerCase()}function Re(e,t){return e[t]||(e[t]=new Set),e[t]}function Ie(e,t){return e[t]||(e[t]={}),e[t]}function De(e,t,n,o,r){const s=t[$];if(!s)return;const i=[n],a=t[T]?.get(n),c=a&&"string"==typeof a.attribute?a.attribute:null;c&&c!==n&&i.push(c);for(const t of i)if(s.has(t))for(const i of s.get(t))try{i.method.call(e,o,r,n)}catch(e){console.error(`Error in @watch('${t}') method ${i.methodName}:`,e)}if(s.has("*"))for(const t of s.get("*"))try{t.method.call(e,o,r,n)}catch(e){console.error(`Error in @watch('*') method ${t.methodName}:`,e)}}function Ve(e,t){let n=null;return function(...o){null!==n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,o),n=null},t)}}function qe(e,t){let n=0,o=null;return function(...r){const s=Date.now(),i=t-(s-n);if(i<=0)return o&&(clearTimeout(o),o=null),n=s,e.apply(this,r);o||(o=setTimeout(()=>{n=Date.now(),o=null,e.apply(this,r)},i))}}function Be(e,t){if(null==t)return e;if("global"===t)return"undefined"!=typeof document?document:null;if("function"==typeof t)try{return t.call(e)||null}catch{return null}return"string"==typeof t?e.closest?.(t)||null:t&&"function"==typeof t.addEventListener?t:null}function Fe(e,t,n){if(null==e||!1===e||t?.type===Te&&Array.isArray(e)&&0===e.length)return null;if(t.converter?.toAttribute)return t.converter.toAttribute(e,t.type);switch(t.type||$e(n)){case Boolean:return"true";case Date:return e instanceof Date?e.toISOString():String(e);case BigInt:return"bigint"==typeof e?e.toString()+"n":String(e);case Te:return Array.isArray(e)?Te.serialize(e):String(e);case Array:return Array.isArray(e)?JSON.stringify(e):String(e);case Object:return"object"==typeof e&&null!==e?JSON.stringify(e):String(e);default:return String(e)}}const We=new WeakSet,ze=new Map;function Ue(e,t){const n=e.constructor[F];if(n&&Array.isArray(n)&&0!==n.length){e[A]?e[A].observers||(e[A].observers=[]):e[A]={events:[],channels:[],observers:[]};for(const o of n){const n=o.method.bind(e),r=o.options?.throttle?qe(n,o.options.throttle):n;switch(o.type){case"intersection":He(e,t,o,r);break;case"resize":Ke(e,t,o,r);break;case"media":Ge(e,0,o,r);break;case"mutation":Qe(e,t,o,r);break;default:console.warn(`Unknown observer type: ${o.type}`)}}}}function He(e,t,n,o){const r={threshold:n.options?.threshold??0,rootMargin:n.options?.rootMargin??"0px",root:n.options?.root??null};if("undefined"==typeof IntersectionObserver)return void console.warn("IntersectionObserver is not available in this environment");const s=new IntersectionObserver(e=>{for(const t of e)try{!1===o(t)&&s&&s.unobserve(t.target)}catch(e){console.error(`Error in intersection observer ${n.methodName}:`,e)}},r),i=n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):[t];i.forEach(e=>s.observe(e)),e[A].observers.push(()=>{i.forEach(e=>s.unobserve(e)),0===s.takeRecords().length&&s.disconnect()})}function Ke(e,t,n,o){const r=n.options?.box||"content-box";if("undefined"==typeof ResizeObserver)return void console.warn("ResizeObserver is not available in this environment");const s=new ResizeObserver(e=>{for(const t of e)try{o(t)}catch(e){console.error(`Error in resize observer ${n.methodName}:`,e)}});(n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):[t]).forEach(e=>{s.observe(e,{box:r})}),e[A].observers.push(()=>{s.disconnect()})}function Ge(e,t,n,o){const r=n.target;if(!r)return void console.warn("Media query observer requires a query string");let s=ze.get(r);if(!s)try{s=window.matchMedia(r),ze.set(r,s)}catch(e){return void console.error(`Invalid media query: ${r}`,e)}const i=e=>{try{o(e.matches)}catch(e){console.error(`Error in media query observer ${n.methodName}:`,e)}};i(s);const a=e=>i(e);s.addEventListener?(s.addEventListener("change",a),e[A].observers.push(()=>{s.removeEventListener("change",a)})):(s.addListener(a),e[A].observers.push(()=>{s.removeListener(a)}))}function Qe(e,t,n,o){const s=n.target.split(":"),i=s[0]||"childList",a=s[1],c={};switch(i){case"childList":c.childList=!0;break;case"attributes":c.attributes=!0,a&&(c.attributeFilter=[a]);break;default:return void(/^[.#[]/.test(i)?console.warn(`@observe: "mutation:${i}" — "${i}" looks like a selector. Selectors are the second argument — did you mean @observe('mutation:childList', '${i}')?`):console.warn(`Unknown mutation type: ${i} (expected childList or attributes)`))}n.options?.subtree&&(c.subtree=!0,n.options.maxDepth&&console.warn("maxDepth is set but requires custom implementation"));const l=!(!n.options?.maxDepth||!n.options.subtree),h=new MutationObserver(e=>{try{if(!l)return void o(e);const r=n.options.maxDepth,s=t.shadowRoot||t,i=e.filter(e=>{let t=0,n=e.target;for(;n&&n!==s&&t<r;)n=n.parentNode,t++;return t<r});i.length>0&&o(i)}catch(e){console.error(`Error in mutation observer ${n.methodName}:`,e)}}),u=!0===e[r];(n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):u&&t.shadowRoot?[t.shadowRoot]:[t]).forEach(e=>{h.observe(e,c)}),e[A].observers.push(()=>{h.disconnect()})}function Je(e){if(e[A]?.observers){for(const t of e[A].observers)t();e[A].observers=[]}}function Xe(e,t){const n=e.constructor[i];if(n){e[A]||(e[A]={events:[],channels:[]});for(const o of n){const n=o.method.bind(e),r=`@request/${o.channelName}`;let s,i,a=0;const c=[];let l=null;const h=(e=>o.options?.debounce?(...t)=>new Promise((n,r)=>{clearTimeout(s),s=setTimeout(async()=>{try{n(await e(...t))}catch(e){r(e)}},o.options.debounce)}):o.options?.throttle?(...t)=>{const n=Date.now(),r=o.options.throttle-(n-a);if(r<=0){clearTimeout(i),i=null,a=n;const o=c.splice(0);l=null;const r=e(...t);return o.length&&Promise.resolve(r).then(e=>{for(const t of o)t.resolve(e)},e=>{for(const t of o)t.reject(e)}),r}return l=t,new Promise((n,o)=>{c.push({resolve:n,reject:o}),i||(i=setTimeout(async()=>{a=Date.now(),i=null;const n=c.splice(0),o=l??t;l=null;try{const t=await e(...o);for(const e of n)e.resolve(t)}catch(e){for(const t of n)t.reject(e)}},r))})}:e)(n),u=e=>{const{data:t,discovery:n,payload:r}=e.detail;e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation(),n.resolve(),Promise.resolve(h(r)).then(e=>{t.resolve(e)}).catch(e=>{t.reject(e),console.error(`Error in response handler ${o.methodName}:`,e)})};t.addEventListener(r,u),e[A].channels.push(()=>{t.removeEventListener(r,u)})}}}function Ye(e){if(e[A]?.channels){for(const t of e[A].channels)t();e[A].channels=[]}}const Ze=Symbol.for("snice:html-result"),et=Symbol.for("snice:css-result"),tt=new WeakMap;function nt(e){return e&&e._$litType$===Ze}function ot(e){return e&&e._$litType$===et}const rt=Symbol.for("snice:nothing"),st=Symbol.for("snice:unsafe-html");function it(e){return e&&e._$litType$===st}const at=Symbol.for("snice:repeat-result"),ct=new WeakSet;function lt(e){return e[f]||e.shadowRoot||null}function ht(e){const t=lt(e);if(t)return t;const n=e.constructor[m];let o;if(o="light"===n?.renderRoot||!1===n?.shadow?e:"function"==typeof e.createRenderRoot?e.createRenderRoot():e.attachShadow({mode:"string"==typeof n?.shadow?n.shadow:"open",delegatesFocus:n?.delegatesFocus}),o!==e&&!(o instanceof ShadowRoot))throw new TypeError("snice: createRenderRoot() must return the host element or a ShadowRoot.");return e[f]=o,ct.add(e),o}function ut(e){const t=e.getRootNode();if(t instanceof ShadowRoot)return t.host;let n=e;for(;n;){if(n instanceof HTMLElement&&ct.has(n))return n;n=n.parentNode}return null}const dt=`snice$${Math.random().toFixed(9).slice(2)}$`,ft="?"+dt,mt=`\x3c!--${ft}--\x3e`,pt=new RegExp(dt.replace(/\$/g,"\\$"),"g"),yt=new WeakMap,gt=Symbol("not-committed");function bt(e,t){const n=e.localName;if(!n?.includes("-"))return;const o=e.ownerDocument?.defaultView?.customElements??globalThis.customElements;if(o?.get(n))return;const r=e;r[k]||(r[k]=new Set),r[k].add(t)}const vt=Symbol.for("snice:no-change"),wt=Symbol.for("snice:live"),Et=e=>null===e||"object"!=typeof e&&"function"!=typeof e,Nt=e=>!!e&&"function"==typeof e[Symbol.asyncIterator];class St{constructor(e,t,n){this.parts=[],this.keyIndex=-1,this.element=t;const o=document.createTreeWalker(t.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_TEXT);let r=0;const s=[];let i;for(;null!==(i=o.nextNode());)if(i.nodeType===Node.ELEMENT_NODE){const e=i,t=e.tagName.toLowerCase(),o=e.parentElement?.tagName.toLowerCase();if(("else"===t||"else-if"===t)&&"if"!==o)throw new Error(`snice: <${t}> must be a direct child of <if>.`);if(("when"===t||"default"===t)&&"case"!==o)throw new Error(`snice: <${t}> must be a direct child of <case>.`);if("if"===t){const t=e.getAttribute("value");if(!t||!t.includes(dt))throw new Error("snice: <if> requires a condition expression.");e.removeAttribute("value"),this.parts.push({type:"conditional-if",index:r++,element:e});continue}if("case"===t){const t=e.getAttribute("value");if(!t||!t.includes(dt))throw new Error("snice: <case> requires a value expression.");for(const t of Array.from(e.childNodes))if(t.nodeType===Node.ELEMENT_NODE){const e=t.tagName.toLowerCase();if("when"!==e&&"default"!==e)throw new Error("snice: <case> may contain only direct <when> and <default> branches.")}else if(t.nodeType===Node.TEXT_NODE&&t.textContent?.trim()||t.nodeType===Node.COMMENT_NODE&&t.data.includes(dt))throw new Error("snice: content inside <case> must be nested in a <when> or <default> branch.");e.removeAttribute("value"),this.parts.push({type:"conditional-case",index:r++,element:e});continue}if("else-if"===t){const t=e.getAttribute("value");if(!t||!t.includes(dt))throw new Error("snice: <else-if> requires a condition expression.");e.removeAttribute("value"),this.parts.push({type:"conditional-else-if",index:r++,element:e});continue}if("when"===t){const t=e.getAttribute("value");t&&t.includes(dt)&&(e.removeAttribute("value"),this.parts.push({type:"conditional-when",index:r++,element:e}));continue}if(e.hasAttributes()){const t=e.attributes,o=[];for(let s=0;s<t.length;s++){const i=t[s],a=i.value;if(a.includes(dt)){o.push(i);const t=n[r]||i.name,s=a.split(dt),c=s.length-1;if(/^@@?|^[.?]/.test(t)||t.startsWith("...")||t.startsWith("class:")||t.startsWith("style:")){const e=s.some(e=>""!==e);(c>1||e)&&console.warn(`snice: binding "${t}" takes a single expression; static text and extra interpolations are ignored. Use a plain attribute for string interpolation.`)}if(t.startsWith("...")){const n=t.slice(3).toLowerCase();if(!["props","properties","attrs","attributes","events"].includes(n))throw new Error(`snice: unknown spread binding "${t}". Use ...props, ...attrs, or ...events.`);this.parts.push({type:"spread",index:r,name:n,element:e}),r+=c}else if(t.startsWith("class:")){if(!t.slice(6))throw new Error("snice: class: binding requires a class name.");this.parts.push({type:"class",index:r,name:t.slice(6),element:e}),r+=c}else if(t.startsWith("style:")){if(!t.slice(6))throw new Error("snice: style: binding requires a CSS property name.");this.parts.push({type:"style",index:r,name:t.slice(6),element:e}),r+=c}else if(t.startsWith("@@")){if(!t.slice(2).split("|")[0])throw new Error("snice: event binding requires an event name.");this.parts.push({type:"event",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith("@")){if(!t.slice(1).split("|")[0])throw new Error("snice: event binding requires an event name.");this.parts.push({type:"event",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith(".")){if(!t.slice(1))throw new Error("snice: property binding requires a property name.");this.parts.push({type:"property",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith("?")){if(!t.slice(1))throw new Error("snice: boolean binding requires an attribute name.");this.parts.push({type:"boolean-attribute",index:r,name:t.slice(1),element:e}),r+=c}else"controller"===i.name&&2===s.length&&""===s[0]&&""===s[1]?(this.parts.push({type:"controller",index:r,element:e}),r+=c):(this.parts.push({type:"attribute",index:r,name:i.name,element:e,attrStrings:s}),r+=c)}}for(const t of o)e.removeAttribute(t.name)}}else if(i.nodeType===Node.COMMENT_NODE){const e=i;if(e.data===ft){const t=e.parentNode,n=document.createComment("");t.insertBefore(n,e.nextSibling),this.parts.push({type:"node",index:r++,startNode:e,endNode:n})}else if(e.data.includes(dt)){const t=e.data.split(pt);this.parts.push({type:"comment",index:r,startNode:e,attrStrings:t}),r+=t.length-1}}else if(i.nodeType===Node.TEXT_NODE){const e=i,t=e.data;if(t.includes(dt)){const n=e.parentNode,o=t.split(pt),i=o.length-1;for(let t=0;t<i;t++){n.insertBefore(document.createTextNode(o[t]),e);const s=document.createComment(""),i=document.createComment("");n.insertBefore(s,e),n.insertBefore(i,e),this.parts.push({type:"node",index:r++,startNode:s,endNode:i})}""!==o[i]?e.data=o[i]:s.push(e)}}for(const e of s)e.parentNode?.removeChild(e);for(const e of this.parts)if("attribute"===e.type&&"key"===e.name){this.keyIndex=e.index;break}}}function At(e){const{strings:t}=e,n=yt.get(t);if(n)return n;const o=[],r=[];let s=!1,i=!1,a=!1,c="",l="";for(let e=0;e<t.length;e++){const n=t[e];if(o.push(n),e<t.length-1){for(let e=0;e<n.length;e++){const t=n[e];if(a)"-"===t&&n.startsWith("--\x3e",e)&&(a=!1,e+=2);else if(s){if(i)t===c&&(i=!1,c="");else if(">"===t)s=!1;else if('"'===t||"'"===t)i=!0,c=t;else if("="===t){let t=e-1;for(;t>=0&&/[\w\-\.@\?/:\+~|]/.test(n[t]);)t--;l=n.substring(t+1,e).trim()}}else"<"===t&&(n.startsWith("\x3c!--",e)?(a=!0,e+=3):/[A-Za-z!/?]/.test(n[e+1]||"")&&(s=!0))}if(a)r.push(""),o.push(dt);else if(i)r.push(l),o.push(dt);else if(s){const e=n.trimEnd();if(e.endsWith("=")){let t=e.length-2;for(;t>=0&&/[\w\-\.@\?\/:\+~|]/.test(e[t]);)t--;l=e.substring(t+1,e.length-1).trim(),r.push(l),o.push(dt)}else{if(!n.match(/<(if|else-if|case|when)\s*$/))throw new Error("snice: expressions directly in opening tags are not supported; use an explicit attribute, property, event, class, style, or named spread binding.");l="value",r.push("value"),o.push(`value="${dt}"`)}}else r.push(""),o.push(mt)}}const h=o.join(""),u=document.createElement("template");if(e.svg){u.innerHTML=`<svg>${h}</svg>`;const e=u.content.firstElementChild;for(;e.firstChild;)u.content.insertBefore(e.firstChild,e);u.content.removeChild(e)}else u.innerHTML=h;const d=new St(e,u,r);return yt.set(t,d),d}function Tt(e){if(!nt(e))return;const t=At(e);return-1===t.keyIndex?void 0:e.values[t.keyIndex]}class _t{constructor(e){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=At(e),this.strings=e.strings}isSameTemplate(e){return this.strings===e}renderFragment(){if(!this.fragment){this.fragment=this.template.element.content.cloneNode(!0);const e=document.createTreeWalker(this.template.element.content,NodeFilter.SHOW_ALL),t=document.createTreeWalker(this.fragment,NodeFilter.SHOW_ALL),n=new Map;let o=e.currentNode,r=t.currentNode;for(;o&&r;)n.set(o,r),o=e.nextNode(),r=t.nextNode();const s=new Set;for(const e of this.template.parts)"conditional-when"===e.type&&s.add(n.get(e.element));for(let e=0;e<this.template.parts.length;e++){const t=this.template.parts[e];let o;switch(t.type){case"node":const e=n.get(t.startNode),r=n.get(t.endNode);o=new Ot(e,r);break;case"attribute":const i=n.get(t.element);o=new xt(i,t.name,t.attrStrings);break;case"property":const a=n.get(t.element);o=new Mt(a,t.name);break;case"boolean-attribute":const c=n.get(t.element);o=new Rt(c,t.name);break;case"event":const l=n.get(t.element);o=new It(l,t.name);break;case"class":const h=n.get(t.element);o=new Lt(h,t.name);break;case"style":const u=n.get(t.element);o=new $t(u,t.name);break;case"spread":const d=n.get(t.element);o=new Pt(d,t.name);break;case"controller":const f=n.get(t.element);o=new jt(f);break;case"conditional-if":const m=n.get(t.element);o=new zt(m);break;case"conditional-else-if":const p=n.get(t.element);o=new Ht(p);break;case"conditional-case":const y=n.get(t.element);o=new Kt(y,s);break;case"conditional-when":const g=n.get(t.element);o=new Qt(g);break;case"comment":const b=n.get(t.startNode);o=new kt(b,t.attrStrings);break;default:throw new Error(`Unknown part type: ${t.type}`)}this.parts.push(o),o instanceof zt||o instanceof Ht||o instanceof Kt||o instanceof Qt?this.conditionalParts.push({part:o,index:t.index}):this.regularParts.push({part:o,index:t.index})}}return this.fragment}render(e){const t=this.renderFragment();return this.update(e),t}update(e){for(const{part:t,index:n}of this.conditionalParts)t.commit(e[n]);const t=new Set;for(const{part:e}of this.conditionalParts){const n=e instanceof Ht||e instanceof Qt?e.coordinator:e;t.has(n)||(t.add(n),(n instanceof zt||n instanceof Kt)&&n.flush())}for(const{part:t,index:n}of this.regularParts)t instanceof xt&&void 0!==t.strings||t instanceof kt?t.commit(e,n):t.commit(e[n]);let n;for(const e of this.parts)try{e.isConnected?e.reconnected():e.disconnected()}catch(e){n??=e}if(n)throw n}clear(){let e;for(const t of this.parts)try{t.destroy()}catch(t){e??=t}if(e)throw e}disconnected(e=!1){let t;for(const n of this.parts)try{n.disconnected(e)}catch(e){t??=e}if(t)throw t}reconnected(){let e;for(const t of this.parts)try{t.reconnected()}catch(t){e??=t}if(e)throw e}}class Ct{get isConnected(){return this.element?.isConnected??!1}disconnected(e=!1){}reconnected(){}destroy(){let e;try{this.clear()}catch(t){e=t}if(e)throw e}}class Ot extends Ct{constructor(e,t){super(),this.type="node",this._committedValue=gt,this._itemKeys=null,this._asyncSource=null,this._asyncVersion=0,this._asyncIterator=null,this._asyncRunning=!1,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1,this._committingAsyncValue=!1,this.startNode=e,this.endNode=t}commit(e){if(e!==vt)if((e=>!!e&&"function"==typeof e.then)(e)||Nt(e))this._commitAsync(e);else if(!this._committingAsyncValue&&this._asyncSource&&this._cancelAsync(!0),e!==rt&&null!=e&&""!==e)Et(e)?e!==this._committedValue&&this._commitText(e):nt(e)?this._commitTemplateResult(e):function(e){return!!e&&e._$repeat$===at}(e)?0===e.values.length?this.commit(e.empty??rt):this._commitIterable(e.values,e.keys):it(e)?this._commitUnsafeHTML(e):void 0===e.nodeType?(e=>Array.isArray(e)||"function"==typeof e?.[Symbol.iterator])(e)?this._commitIterable(e):this._commitText(e):this._commitNode(e);else{if(this._committedValue!==rt){const e=this._clear();if(this._committedValue=rt,e)throw e}this._committedValue=rt}}_commitText(e){if(this._committedValue!==gt&&this._committedValue!==rt&&Et(this._committedValue)&&!Array.isArray(this._committedValue)){const t=this.startNode.nextSibling;if(t&&t.nodeType===Node.TEXT_NODE)return t.data=String(e),void(this._committedValue=e)}const t=this._clear();if(this._insertBefore(document.createTextNode(String(e))),this._committedValue=e,t)throw t}_commitTemplateResult(e){const t=this._committedValue;if(t instanceof _t){const n=yt.get(e.strings);if(n&&t.template===n)return void t.update(e.values)}const n=new _t(e),o=n.renderFragment();try{n.update(e.values)}catch(e){throw n.clear(),e}const r=this._committedValue,s=this._itemKeys,i=this.endNode.ownerDocument.createDocumentFragment();let a=this.startNode.nextSibling;for(;a&&a!==this.endNode;){const e=a.nextSibling;i.appendChild(a),a=e}this._insertBefore(o),this._committedValue=n,this._itemKeys=null;try{this.isConnected&&n.reconnected()}catch(e){try{n.clear()}catch(e){console.error("snice: failed to clean up a rejected nested template:",e)}let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;t.remove(),t=e}throw this._insertBefore(i),this._committedValue=r,this._itemKeys=s,e}this._disposeCommitted(r)}_commitIterable(e,t){const n=Array.isArray(e)?e:Array.from(e),o=t?Array.from(t):n.map(Tt);if(o.length!==n.length)throw new Error("snice: keyed iterable produced a different number of keys and values.");const r=o.filter(e=>void 0!==e);if(r.length>0&&r.length!==o.length&&console.warn("snice: a list mixes keyed and unkeyed items. Identity falls back to position; use repeat(items, { key, render }) for deterministic updates."),r.length>0&&new Set(r).size!==r.length)throw new Error("snice: a keyed list contains duplicate keys.");let s;Array.isArray(this._committedValue)&&this._committedValue[0]instanceof Ot||(s=this._clear(),this._committedValue=[],this._itemKeys=null);const i=n.length>0&&o.every(e=>void 0!==e),a=this._itemKeys;if(i&&a&&this._committedValue.length>0&&(a.length!==o.length||!o.every((e,t)=>e===a[t]))){if(s??=this._reconcileKeyed(n,o,this._committedValue,a),this._itemKeys=o,s)throw s;return}const c=this._committedValue;let l=0;for(const e of n){let t;if(l>=c.length){const e=document.createComment(""),n=document.createComment("");this._insertBefore(e),this._insertBefore(n),t=new Ot(e,n),c.push(t)}else t=c[l];t.commit(e),l++}if(l<c.length){for(let e=l;e<c.length;e++){const t=c[e];try{t.destroy()}catch(e){s??=e}t.startNode.remove(),t.endNode.remove()}c.length=l}if(this._itemKeys=i?o:null,s)throw s}_reconcileKeyed(e,t,n,o){const r=this.endNode.parentNode;let s;const i=new Map;for(let e=0;e<n.length;e++)i.has(o[e])||i.set(o[e],n[e]);const a=new Set,c=new Array(e.length).fill(null);for(let n=0;n<e.length;n++){const e=i.get(t[n]);e&&!a.has(e)&&(a.add(e),c[n]=e)}for(const e of n)if(!a.has(e)){try{e.destroy()}catch(e){s??=e}e.startNode.remove(),e.endNode.remove()}let l=this.startNode.nextSibling;for(let t=0;t<c.length;t++){let n=c[t];if(n)if(n.startNode===l)l=n.endNode.nextSibling;else{const e=document.createDocumentFragment();let t=n.startNode;const o=n.endNode.nextSibling;for(;t&&t!==o;){const n=t.nextSibling;e.appendChild(t),t=n}r.insertBefore(e,l)}else{const e=document.createComment(""),o=document.createComment("");r.insertBefore(e,l),r.insertBefore(o,l),n=new Ot(e,o),c[t]=n}n.commit(e[t])}return this._committedValue=c,s}_commitNode(e){if(this._committedValue!==e){const t=this._clear();if(this._insertBefore(e),this._committedValue=e,t)throw t}}_commitUnsafeHTML(e){const t=this._committedValue;if(it(t)&&t.html===e.html)return;const n=this._clear(),o=document.createElement("template");if(o.innerHTML=e.html,this._insertBefore(o.content),this._committedValue=e,n)throw n}_commitAsync(e){if(e===this._asyncSource)return;this._cancelAsync(!1),this._asyncSource=e,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1;const t=this._clear();if(this._committedValue=rt,this._startAsyncSource(),t)throw t}_startAsyncSource(e=!1){const t=this._asyncSource;if(!t||this._asyncRunning||this._asyncCompleted||!e&&!this.isConnected)return;this._asyncRunning=!0,this._asyncStarted=!0,this._asyncPaused=!1;const n=++this._asyncVersion;if(Nt(t)){try{this._asyncIterator=t[Symbol.asyncIterator]()}catch(e){return this._asyncRunning=!1,this._asyncCompleted=!0,void console.error("snice: async iterable template value failed:",e)}(async()=>{try{for(;this._asyncIterator;){const e=await this._asyncIterator.next();if(e.done||n!==this._asyncVersion)break;this._commitAsyncValue(e.value)}}catch(e){n===this._asyncVersion&&console.error("snice: async iterable template value failed:",e)}finally{n===this._asyncVersion&&(this._asyncIterator=null,this._asyncRunning=!1,this._asyncCompleted=!0)}})()}else Promise.resolve(t).then(e=>{if(n===this._asyncVersion){this._asyncRunning=!1,this._asyncCompleted=!0;try{this._commitAsyncValue(e)}catch(e){console.error("snice: promise template value failed:",e)}}},e=>{n===this._asyncVersion&&(this._asyncRunning=!1,this._asyncCompleted=!0,console.error("snice: promise template value failed:",e))})}_commitAsyncValue(e){this._committingAsyncValue=!0;try{this.commit(e)}finally{this._committingAsyncValue=!1}}_cancelAsync(e){this._asyncVersion++;const t=this._asyncIterator;if(this._asyncIterator=null,this._asyncRunning=!1,e&&(this._asyncSource=null,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1),t?.return)try{Promise.resolve(t.return()).catch(()=>{})}catch{}}_insertBefore(e){this.endNode.parentNode?.insertBefore(e,this.endNode)}_clear(){const e=this.startNode.parentNode,t=this._committedValue;let n;try{this._disposeCommitted(t)}catch(e){n=e}if(!e)return this._committedValue=rt,n;let o=this.startNode.nextSibling;for(;o&&o!==this.endNode;){const t=o.nextSibling;e.removeChild(o),o=t}return this._committedValue=rt,n}_disposeCommitted(e){let t;if(e instanceof _t)try{e.clear()}catch(e){t=e}else if(Array.isArray(e))for(const n of e)if(n instanceof Ot)try{n.destroy()}catch(e){t??=e}if(t)throw t}clear(){this._cancelAsync(!0);const e=this._clear();if(e)throw e}get isConnected(){return this.startNode.isConnected}disconnected(e=!1){let t;if(this._committedValue instanceof _t)try{this._committedValue.disconnected(e)}catch(e){t??=e}else if(Array.isArray(this._committedValue))for(const n of this._committedValue)if(n instanceof Ot)try{n.disconnected(e)}catch(e){t??=e}if(this._asyncSource&&this._asyncRunning&&(this._cancelAsync(!1),this._asyncPaused=!0),t)throw t}reconnected(){let e;if(this._committedValue instanceof _t)try{this._committedValue.reconnected()}catch(t){e??=t}else if(Array.isArray(this._committedValue))for(const t of this._committedValue)if(t instanceof Ot)try{t.reconnected()}catch(t){e??=t}if(!this._asyncSource||this._asyncStarted&&!this._asyncPaused||this._startAsyncSource(!0),e)throw e}}class xt extends Ct{constructor(e,t,n){super(),this.type="attribute",this._committedValue=gt,this.lastValues=null,this.lastValueIndex=0,this.element=e,this.name=t,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(gt),this.strings=n):this._committedValue=gt}commit(e,t=0){let n,o=!1;if(void 0===this.strings){if(e===vt)return;if(o=!Et(e)||e!==this._committedValue&&e!==vt,!o)return;this._committedValue=e,n=e}else{const r=e;this.lastValues=[...r],this.lastValueIndex=t;const s=this._committedValue;n=this.strings[0];for(let e=0;e<this.strings.length-1;e++){let i=r[t+e];i===vt&&(i=s[e],i===gt&&(i="")),o=o||!Et(i)||i!==s[e],i===rt?n=rt:n!==rt&&(n=n+(i??"")+this.strings[e+1]),s[e]=i}if(!o)return}this._commitValue(n)}_commitValue(e){e===rt?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(e??""))}clear(){this.element.removeAttribute(this.name)}}class kt extends Ct{constructor(e,t){super(),this.type="node",this.lastValues=null,this.lastValueIndex=0,this.node=e,this.strings=t,this._committedValues=new Array(t.length-1).fill(gt)}commit(e,t=0){const n=e;this.lastValues=[...n],this.lastValueIndex=t;let o=!1,r=this.strings[0];for(let e=0;e<this.strings.length-1;e++){let s=n[t+e];s===vt&&(s=this._committedValues[e],s===gt&&(s="")),o=o||!Et(s)||s!==this._committedValues[e],this._committedValues[e]=s,r+=String(s===rt?"":s??"")+this.strings[e+1]}if(o){if(r.includes("--")||r.endsWith("-"))throw new Error('snice: comment expressions cannot produce "--" or end with "-".');this.node.data=r}}clear(){}}class Lt extends Ct{constructor(e,t){super(),this.type="class",this.committed=gt,this.element=e,this.name=t}commit(e){if(e===vt)return;const t=e!==rt&&Boolean(e);t!==this.committed&&(this.committed=t,this.element.classList.toggle(this.name,t))}clear(){this.element.classList.remove(this.name),this.committed=gt}}class $t extends Ct{constructor(e,t){super(),this.type="style",this.committed=gt,this.element=e,this.name=t}commit(e){if(e===vt||Object.is(e,this.committed))return;this.committed=e;const t=this.element.style;e===rt||null==e||!1===e?t.removeProperty(this.name):t.setProperty(this.name,String(e))}clear(){this.element.style.removeProperty(this.name),this.committed=gt}}class Pt extends Ct{constructor(e,t){super(),this.type="spread",this.committed={},this.listeners=new Map,this.consumedOnce=new Map,this.element=e,this.name=t}commit(e){if(e===vt)return;if(e!==rt&&null!=e||(e={}),"object"!=typeof e||Array.isArray(e))throw new TypeError(`snice: ...${this.name} expects an object.`);const t=e;"events"===this.name?this.commitEvents(t):"props"===this.name||"properties"===this.name?this.commitProperties(t):this.commitAttributes(t),this.committed={...t}}commitProperties(e){for(const t of Object.keys(this.committed))Object.prototype.hasOwnProperty.call(e,t)||(bt(this.element,t),this.element[t]=void 0);for(const[t,n]of Object.entries(e))Object.is(this.committed[t],n)||(bt(this.element,t),this.element[t]=n===rt?void 0:n)}commitAttributes(e){for(const t of Object.keys(this.committed))Object.prototype.hasOwnProperty.call(e,t)||this.element.removeAttribute(t);for(const[t,n]of Object.entries(e))Object.is(this.committed[t],n)||(n===rt||null==n||!1===n?this.element.removeAttribute(t):this.element.setAttribute(t,!0===n?"":String(n)))}commitEvents(e){!function(e,t){const n=new Set;for(const[o,r]of Object.entries(e)){const e=o.startsWith("@")?o.slice(1):o;if(!e)throw new TypeError(`snice: ${t} contains an empty event name.`);if(n.has(e))throw new TypeError(`snice: ${t} contains duplicate event name "${e}".`);if(n.add(e),r!==rt&&null!=r&&!1!==r&&"function"!=typeof r&&(!r||"object"!=typeof r||"function"!=typeof r.handleEvent))throw new TypeError(`snice: ${t} event "${e}" expects a function, EventListenerObject, or null.`)}}(e,`...${this.name}`);for(const[t,n]of this.consumedOnce){const o=Object.keys(e).find(e=>this.eventName(e)===t);o&&Object.is(e[o],n)||this.consumedOnce.delete(t)}for(const[t,n]of this.listeners){const o=Object.keys(e).find(e=>this.eventName(e)===t);o&&Object.is(e[o],n.value)||(this.element.removeEventListener(t,n.listener,n.options),this.listeners.delete(t))}for(const[t,n]of Object.entries(e)){const e=this.eventName(t);if(this.listeners.has(e))continue;const o=!!n&&"object"==typeof n&&"function"==typeof n.handleEvent;if(n===rt||null==n||!1===n)continue;if(this.consumedOnce.has(e)&&Object.is(this.consumedOnce.get(e),n))continue;this.consumedOnce.delete(e);const r=o?n:void 0,s=t=>{r?.once&&this.consumedOnce.set(e,n),o?n.handleEvent(t):n.call(this.resolveHost(),t)};this.element.addEventListener(e,s,r),this.listeners.set(e,{value:n,listener:s,options:r})}}eventName(e){return e.startsWith("@")?e.slice(1):e}resolveHost(){return ut(this.element)||this.element}clear(){if("events"===this.name){for(const[e,t]of this.listeners)this.element.removeEventListener(e,t.listener,t.options);this.listeners.clear(),this.consumedOnce.clear()}else if("props"!==this.name&&"properties"!==this.name)for(const e of Object.keys(this.committed))this.element.removeAttribute(e);this.committed={}}disconnected(e=!1){"events"!==this.name||e||this.detachListeners()}reconnected(){"events"===this.name&&0===this.listeners.size&&this.commitEvents(this.committed)}detachListeners(){for(const[e,t]of this.listeners)this.element.removeEventListener(e,t.listener,t.options);this.listeners.clear()}}class Mt extends Ct{constructor(e,t){super(),this.type="property",this._committedValue=gt,this.element=e,this.name=t}commit(e){if(e!==vt){if(function(e){return e&&e._$liveMarker$===wt}(e)){if((e=e.value)===vt)return;if(e===this.element[this.name])return void(this._committedValue=e)}else if(e===this._committedValue)return;this._committedValue=e,bt(this.element,this.name),this.element[this.name]=e===rt?void 0:e}}clear(){this._committedValue=gt}}class jt extends Ct{constructor(e){super(),this.type="controller",this._committedValue=gt,this.element=e}commit(e){if(e===vt)return;const t=null==e||!1===e||""===e||e===rt?null:e,n=this._committedValue===gt,o=n?null:this._committedValue;if(!n&&t===o)return;this._committedValue=t;const r=this.element;"function"==typeof o&&"function"!=typeof t&&(void 0!==r[S]?delete r[S]:r[s]?r.controller=null:this._detach()),"function"==typeof t?(this.element.hasAttribute("controller")&&this.element.removeAttribute("controller"),this.isConnected?this._apply(t):this.element.localName.includes("-")&&!r[s]&&(r[S]=t)):"string"==typeof t?this.element.setAttribute("controller",t):"string"==typeof o&&this.element.removeAttribute("controller")}_apply(e){const t=this.element;t[s]?t.controller!==e?t.controller=e:this._attach(e):this.element.localName.includes("-")?t[S]=e:(t.ready||(t.ready=Promise.resolve()),this._attach(e))}_attach(e){rn(this.element,e).catch(t=>{"ControllerAttachAborted"!==t?.name&&console.error(`Failed to attach controller "${e?.name||e}":`,t)})}_detach(){sn(this.element).catch(e=>{console.error("Failed to detach controller:",e)})}disconnected(e=!1){if("function"!=typeof this._committedValue)return;const t=this.element;void 0===t[S]&&(t[s]||this._detach())}reconnected(){const e=this._committedValue;"function"==typeof e&&this._apply(e)}clear(){const e=this.element;void 0!==e[S]&&delete e[S];const t=this._committedValue;this._committedValue=gt,"function"==typeof t&&(e[s]||this._detach())}}class Rt extends Ct{constructor(e,t){super(),this.type="boolean-attribute",this._committedValue=gt,this.element=e,this.name=t}commit(e){if(e===vt)return;const t=!!e&&e!==rt;t!==this._committedValue&&(this._committedValue=t,t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name))}clear(){this.element.removeAttribute(this.name),this._committedValue=gt}}class It extends Ct{constructor(e,t){super(),this.type="event",this.listener=null,this.listenerOptions=void 0,this.value=void 0,this.keyFilter=null,this.host=null,this.modifiers=new Set,this.once=!1,this.onceConsumed=!1,this.element=e;const[n,...o]=t.split("|"),r={preventdefault:"prevent",stoppropagation:"stop",stopimmediatepropagation:"immediate"},s=new Set(["prevent","stop","immediate","once","capture","passive","self"]);for(const e of o){const n=r[e.toLowerCase()]||e.toLowerCase();if(!s.has(n))throw new Error(`snice: unknown event modifier "${e}" in @${t}. Supported modifiers: prevent, stop, immediate, once, capture, passive, self.`);this.modifiers.add(n)}if(this.modifiers.has("passive")&&this.modifiers.has("prevent"))throw new Error(`snice: @${t} cannot combine passive and prevent.`);const i=["keydown","keyup","keypress"].includes(n.split(".")[0].split(":")[0]),a=i?n.indexOf("."):-1,c=i?n.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c);if(l>0){const e=n.substring(0,l),t=n.substring(l+1);this.eventName=e,this.keyFilter=qt(t)}else this.eventName=n,Vt(n)}commit(e){if(e===vt)return;e===rt&&(e=null);const t=!!e&&"object"==typeof e&&"function"==typeof e.handleEvent;if(null!=e&&!1!==e&&"function"!=typeof e&&!t)throw new TypeError(`snice: @${this.eventName} expects a function, EventListenerObject, or null.`);if(t&&this.modifiers.has("prevent")&&e.passive)throw new Error(`snice: @${this.eventName} cannot combine a passive listener object with prevent.`);if(e!==this.value||null==e){if(this.listener&&(this.element.removeEventListener(this.eventName,this.listener,this.listenerOptions),this.listener=null,this.listenerOptions=void 0),null==e||!1===e)return this.value=e,void(this.onceConsumed=!1);this.onceConsumed=!1;try{this.attachListener(e,t),this.value=e}catch(e){throw this.value=void 0,e}}}attachListener(e,t){const n=this.keyFilter,o=r=>{this.modifiers.has("self")&&r.target!==this.element||n&&!Ft(r,n)||(this.once&&(this.onceConsumed=!0,this.element.removeEventListener(this.eventName,o,s),this.listener=null,this.listenerOptions=void 0),this.modifiers.has("prevent")&&r.preventDefault(),this.modifiers.has("immediate")?r.stopImmediatePropagation():this.modifiers.has("stop")&&r.stopPropagation(),t?e.handleEvent(r):(this.host||(this.host=ut(this.element)),e.call(this.host||this.element,r)))},r=t?e:{};this.once=this.modifiers.has("once")||!!r.once;const s={capture:this.modifiers.has("capture")||r.capture,passive:this.modifiers.has("passive")||r.passive,signal:r.signal};this.element.addEventListener(this.eventName,o,s),this.listener=o,this.listenerOptions=s}clear(){this.detachListener(),this.value=void 0,this.host=null,this.onceConsumed=!1}detachListener(){this.listener&&(this.element.removeEventListener(this.eventName,this.listener,this.listenerOptions),this.listener=null,this.listenerOptions=void 0)}disconnected(e=!1){e||this.detachListener(),this.host=null}reconnected(){this.listener||this.onceConsumed||null==this.value||!1===this.value||this.attachListener(this.value,"object"==typeof this.value)}}const Dt=new Set(["once","prevent","preventdefault","stop","stoppropagation","capture","passive"]);function Vt(e){const t=e.lastIndexOf(".");if(t<0)return;const n=e.slice(t+1).toLowerCase();Dt.has(n)&&console.warn(`snice: "@${e}" is not a valid modifier — once/preventDefault/stopPropagation/capture are @on() options, not template modifiers. This registers a listener for event "${e}", which never fires.`)}function qt(e){const t=e.startsWith("~");t&&(e=e.substring(1));const n=e.split("+"),o={key:"",anyModifiers:t};for(const e of n){const t=e.toLowerCase();"ctrl"===t||"control"===t?o.ctrl=!0:"alt"===t?o.alt=!0:"shift"===t?o.shift=!0:"meta"===t||"cmd"===t||"command"===t?o.meta=!0:o.key=Bt(e)}return o}function Bt(e){return{esc:"Escape",escape:"Escape",enter:"Enter",return:"Enter",space:" ",spacebar:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",arrowup:"ArrowUp",arrowdown:"ArrowDown",arrowleft:"ArrowLeft",arrowright:"ArrowRight",delete:"Delete",del:"Delete",backspace:"Backspace",tab:"Tab",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown"}[e.toLowerCase()]||e}function Ft(e,t){return e.key===t.key&&(!!t.anyModifiers||(t.ctrl?e.ctrlKey:!e.ctrlKey)&&(t.alt?e.altKey:!e.altKey)&&(t.shift?e.shiftKey:!e.shiftKey)&&(t.meta?e.metaKey:!e.metaKey))}const Wt=Symbol("not-set");class zt extends Ct{constructor(e){super(),this.type="node",this.conditions=[Wt],this.branches=[],this.defaultBranch=-1,this.currentBranch=-1;const t=e.parentNode;this.startNode=document.createComment("if"),this.endNode=document.createComment("/if"),t.insertBefore(this.startNode,e),t.insertBefore(this.endNode,e.nextSibling);const n=document.createDocumentFragment();this.branches.push(n);let o=!1,r=n;for(const t of Array.from(e.childNodes)){const e=t.nodeType===Node.ELEMENT_NODE?t.tagName.toLowerCase():"";if("else-if"===e||"else"===e){o=!0;const n=t,s=document.createDocumentFragment();for(;n.firstChild;)s.appendChild(n.firstChild);const i=this.branches.push(s)-1;if(r=s,"else-if"===e){if(-1!==this.defaultBranch)throw new Error("snice: <else> must be the final branch inside <if>.");this.conditions[i]=Wt,Ut.set(n,{coordinator:this,index:i})}else{if(-1!==this.defaultBranch)throw new Error("snice: <if> may contain only one <else> branch.");this.defaultBranch=i}n.remove();continue}o?t.nodeType!==Node.TEXT_NODE||t.textContent?.trim()?r.appendChild(t):t.remove():n.appendChild(t)}t.removeChild(e)}commit(e){e!==vt&&(this.conditions[0]=e)}setAlternative(e,t){t!==vt&&(this.conditions[e]=t)}flush(){let e=-1;for(let t=0;t<this.conditions.length;t++)if(this.conditions[t]!==Wt&&this.conditions[t]!==rt&&Boolean(this.conditions[t])){e=t;break}-1===e&&(e=this.defaultBranch),e!==this.currentBranch&&(this.collectCurrent(),this.currentBranch=e,-1!==e&&this.branches[e].hasChildNodes()&&this.startNode.parentNode?.insertBefore(this.branches[e],this.endNode))}collectCurrent(){if(-1===this.currentBranch)return;const e=this.branches[this.currentBranch];let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const n=t.nextSibling;e.appendChild(t),t=n}}clear(){this.collectCurrent(),this.currentBranch=-1}get isConnected(){return this.startNode.isConnected}}const Ut=new WeakMap;class Ht extends Ct{constructor(e){super(),this.type="node";const t=Ut.get(e);if(!t)throw new Error("snice: <else-if> must be a direct child of <if>.");this.coordinator=t.coordinator,this.index=t.index}commit(e){this.coordinator.setAlternative(this.index,e)}clear(){}get isConnected(){return this.coordinator.isConnected}}class Kt extends Ct{constructor(e,t){super(),this.type="node",this.value=Wt,this.branches=[],this.defaultBranch=-1,this.currentBranch=-1;const n=e.parentNode;this.startNode=document.createComment("case"),this.endNode=document.createComment("/case"),n.insertBefore(this.startNode,e),n.insertBefore(this.endNode,e.nextSibling);for(const n of Array.from(e.children)){const e=n.tagName.toLowerCase();if("when"===e){const e=document.createDocumentFragment();for(;n.firstChild;)e.appendChild(n.firstChild);const o=t.has(n),r=this.branches.push({fragment:e,dynamic:o,expected:o?Wt:n.getAttribute("value")??""})-1;o&&Gt.set(n,{coordinator:this,index:r})}else if("default"===e){if(-1!==this.defaultBranch)throw new Error("snice: <case> may contain only one <default> branch.");const e=document.createDocumentFragment();for(;n.firstChild;)e.appendChild(n.firstChild);this.defaultBranch=this.branches.push({fragment:e,dynamic:!1,expected:Wt})-1}}n.removeChild(e)}commit(e){e!==vt&&(this.value=e)}setExpected(e,t){t!==vt&&(this.branches[e].expected=t)}flush(){let e=this.branches.findIndex((e,t)=>t!==this.defaultBranch&&(e.dynamic?Object.is(this.value,e.expected):String(this.value)===e.expected));-1===e&&(e=this.defaultBranch),e!==this.currentBranch&&(this.collectCurrent(),this.currentBranch=e,-1!==e&&this.branches[e].fragment.hasChildNodes()&&this.startNode.parentNode?.insertBefore(this.branches[e].fragment,this.endNode))}collectCurrent(){if(-1===this.currentBranch)return;const e=this.branches[this.currentBranch].fragment;let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const n=t.nextSibling;e.appendChild(t),t=n}}clear(){this.collectCurrent(),this.currentBranch=-1}get isConnected(){return this.startNode.isConnected}}const Gt=new WeakMap;class Qt extends Ct{constructor(e){super(),this.type="node";const t=Gt.get(e);if(!t)throw new Error("snice: dynamic <when> must be a direct child of <case>.");this.coordinator=t.coordinator,this.index=t.index}commit(e){this.coordinator.setExpected(this.index,e)}clear(){}get isConnected(){return this.coordinator.isConnected}}const Jt=n("on-handlers");function Xt(e,t){let n=0;return function(...o){const r=Date.now();r-n>=t&&(n=r,e.apply(this,o))}}const Yt=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function Zt(e,t){const n=e.constructor[Jt];if(n&&Array.isArray(n)&&0!==n.length){e[A]?e[A].events?e[A].events.length>0&&en(e):e[A].events=[]:e[A]={events:[],channels:[],observers:[]};for(const o of n){const n=e[o.methodName];let r=n?n.bind(e):o.method.bind(e);const s=o.options||{},i=["keydown","keyup","keypress"].includes(o.eventName.split(".")[0].split(":")[0]),a=i?o.eventName.indexOf("."):-1,c=i?o.eventName.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c),h=l>0?o.eventName.substring(0,l):o.eventName,u=l>0?o.eventName.substring(l+1):null;l<=0&&Vt(o.eventName),s.debounce&&s.debounce>0?r=Ve(r,s.debounce):s.throttle&&s.throttle>0&&(r=Xt(r,s.throttle));let d=null;u&&["keydown","keyup","keypress"].includes(h)&&(d=qt(u));const f=(e=>d?t=>{Ft(t,d)&&e(t)}:e)(r),m=void 0!==s.scope;let p=null;if(!m||(p=Be(t,s.scope),p))if(o.selector){const n=m?p:t.shadowRoot||t,r=e=>{const t=e.target;if(t.matches&&t.matches(o.selector)&&t||t.closest&&t.closest(o.selector)){s.preventDefault&&e.preventDefault(),s.stopPropagation&&(e.stopPropagation(),e.stopImmediatePropagation());try{f(e)}catch(e){console.error(`Error in event handler ${o.methodName}:`,e)}}},i=Yt.has(h),a={capture:void 0!==s.capture?s.capture:i,once:s.once||!1,passive:s.passive||!1};n.addEventListener(h,r,a),e[A].events.push({target:n,eventName:h,handler:r,options:a})}else{const n=m?null:t.shadowRoot,r=Symbol(),i=e=>{if(!e[r]){e[r]=!0,s.preventDefault&&e.preventDefault(),s.stopPropagation&&e.stopPropagation();try{f(e)}catch(e){console.error(`Error in event handler ${o.methodName}:`,e)}}},a={capture:s.capture||!1,once:s.once||!1,passive:s.passive||!1};if(m){p.addEventListener(h,i,a),e[A].events.push({target:p,eventName:h,handler:i,options:a});continue}n&&(n.addEventListener(h,i,a),e[A].events.push({target:n,eventName:h,handler:i,options:a})),t.addEventListener(h,i,a),e[A].events.push({target:t,eventName:h,handler:i,options:a})}else console.warn(`[snice/@on] scope did not resolve for "${o.eventName}" on ${o.methodName} — listener skipped.`)}}}function en(e){if(e[A]?.events){for(const{target:t,eventName:n,handler:o,options:r}of e[A].events)t.removeEventListener(n,o,r);e[A].events=[]}}class tn{constructor(){this.cleanupFns=new Map,this.pendingOperations=new Set}register(e,t){this.cleanupFns.set(e,t)}unregister(e){this.cleanupFns.delete(e)}async cleanup(){await Promise.all(this.pendingOperations);for(const e of this.cleanupFns.values())try{await e()}catch(e){console.error("Error during cleanup:",e)}this.cleanupFns.clear()}async runOperation(e){const t=e(),n=t.then(()=>{},()=>{});this.pendingOperations.add(n);try{const e=await t;return this.pendingOperations.delete(n),e}catch(e){throw this.pendingOperations.delete(n),e}}}function nn(e,n){if(t.controllerRegistry.has(n))return void queueMicrotask(()=>{const t=e[E];(void 0===t?e[p]:t)===n&&rn(e,n).catch(e=>{"ControllerAttachAborted"!==e?.name&&console.error(`Failed to attach controller "${n}":`,e)})});let o=t.pendingControllerAttachments.get(n);o||(o=new Set,t.pendingControllerAttachments.set(n,o)),o.add(e),queueMicrotask(()=>{t.pendingControllerAttachments.get(n)?.has(e)&&console.error(`Failed to attach controller "${n}":`,new Error(`Controller "${n}" not found in registry`))})}function on(e){return"string"==typeof e?e:e?.name||"(anonymous controller class)"}async function rn(e,n){if("string"!=typeof n){if("function"!=typeof n)throw new Error(`attachController: expected a controller name or a controller class, got ${typeof n}. Controller instances are not supported — pass the class itself.`);if("function"!=typeof(s=n)||!0!==s.prototype?.[o])throw new Error(`Controller class "${on(n)}" must be decorated with @controller('name') before it can be attached.`)}var s;const i=on(n),a=e[g],c=e[E];if("string"==typeof n&&void 0!==c&&c!==n)return;if(e[b]===n&&a)return;let l;if(a&&await sn(e),"string"==typeof n){const e=globalThis.snice?.controllerRegistry;if(!e)throw new Error("Snice global registry not initialized");if(l=e.get(n),!l)throw new Error(`Controller "${n}" not found in registry`)}else l=n,e[N]=!0,delete e[E];const h=new l;t.controllerIdCounter+=1;const u=t.controllerIdCounter,d=new tn;h[r]=!0,h[v]=u,h.element=e;const f=e[M];void 0!==f&&(h[M]=f),e[g]=h,e[b]=n,e[w]=d;const m=new AbortController;e[Ne]=m;try{await Promise.race([e.ready,new Promise((e,t)=>{const n=()=>{const e=new Error(`attachController("${i}"): aborted before element was ready (likely detached or never connected)`);e.name="ControllerAttachAborted",t(e)};if(m.signal.aborted)return n();m.signal.addEventListener("abort",n,{once:!0});const o=setTimeout(()=>t(new Error(`attachController("${i}"): element did not become ready within 30000ms (did you forget to appendChild it?)`)),3e4);m.signal.addEventListener("abort",()=>clearTimeout(o),{once:!0})})])}catch(t){throw e[g]===h&&(delete e[g],delete e[b],delete e[w],"string"!=typeof n&&delete e[N]),t}finally{e[Ne]===m&&delete e[Ne]}h[Se]=!0,await d.runOperation(async()=>{await h.attach(e)}),Ue(h,e),Xe(h,e),Zt(h,e),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:i,controller:h}}))}async function sn(e){const t=e[Ne];t&&t.abort();const n=e[g],o=e[b],r=e[w];n&&(delete e[g],delete e[b],delete e[w],"function"==typeof o&&delete e[N],n[Se]&&(r?await r.runOperation(async()=>{await n.detach(e)}):await n.detach(e),n.element=null,Je(n),Ye(n),en(n),r&&await r.cleanup(),delete n[M],e.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:void 0===o?void 0:on(o),controller:n}}))))}function an(){if(globalThis.sniceNativeControllersInitialized)return;function e(e){if(!(e instanceof HTMLElement))return;if(!e.tagName||e.tagName.includes("-"))return;if(e[s])return;if(e[N])return;const t=e.getAttribute("controller"),n=e[E];if(t!==n&&(t||void 0!==n)){if(!t)return delete e[E],delete e[b],void sn(e).catch(e=>{console.error("Failed to detach controller from native element:",e)});e[E]=t,e.ready||(e.ready=Promise.resolve()),n&&sn(e).catch(e=>{console.error("Failed to detach old controller from native element:",e)}),rn(e,t).catch(n=>{"ControllerAttachAborted"!==n?.name?n?.message!==`Controller "${t}" not found in registry`?console.error(`Failed to attach controller "${t}" to native element:`,n):nn(e,t):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}}globalThis.sniceNativeControllersInitialized=!0;const t=new MutationObserver(t=>{for(const n of t)"attributes"===n.type&&"controller"===n.attributeName?e(n.target):"childList"===n.type&&n.addedNodes.forEach(t=>{t instanceof HTMLElement&&(e(t),t.querySelectorAll("[controller]").forEach(e))})});function n(){document.querySelectorAll("[controller]").forEach(e),t.observe(document.body,{attributes:!0,attributeFilter:["controller"],childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n(),globalThis.sniceNativeControllerObserver=t}const cn=n("context-handlers");function ln(e){const t=e.constructor[cn];if(!t||!Array.isArray(t)||0===t.length)return;const n=e[ne];if(n){e[oe]=n;for(const o of t){const{methodName:t,method:r,options:s}=o,i=`__wrapped_${t}`;e[i]=function(n){const o=e[he]||(e[he]=new Set);if(s.once&&o.has(t))return;const a=()=>{if(r.call(e,n),s.once){o.add(t);const n=e[oe];n&&"function"==typeof n[ae]&&n[ae](e,i)}},c=e[le]||(e[le]={}),l=t;if(s.debounce)return clearTimeout(c[l]?.timeout),void(c[l]={timeout:setTimeout(a,s.debounce)});if(s.throttle){const e=Date.now();return void(e-(c[l]?.lastCall||0)>=s.throttle&&(c[l]={lastCall:e},a()))}a()},"function"==typeof n[ie]&&n[ie](e,i)}}}let hn=!1;function un(e){e[h]||(e[l]=new Promise(t=>{e[h]=t}))}function dn(e){const t=e[h];t&&(e[h]=null,t())}const fn=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(e,t){t.sync?gn(e,t):(this.pending.add(e),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>this.flush())))}flush(){const e=Array.from(this.pending);this.pending.clear(),this.scheduled=!1;for(const t of e)t.isConnected?gn(t,t[G]||{}):t[u]=!0}remove(e){this.pending.delete(e)}};function mn(e){return Object.prototype.hasOwnProperty.call(e,Q)}function pn(e){const t=e[X];if(!t||0===t.length)return;const n=[...t];e[X]=[],n.forEach(e=>e())}const yn=50;function gn(e,t,n){const o=arguments.length>=3,r=e[K];if(!r)return void dn(e);if(t.once&&mn(e))return void dn(e);const s=e[d]??0;if(s>=yn){const t=e.tagName?e.tagName.toLowerCase():"element";return console.error(`snice: maximum render depth (${yn}) exceeded for <${t}>. render() is mutating an observed property, causing an infinite render loop.`),void dn(e)}e[d]=s+1;try{const s=o?n:r.call(e),i=ht(e);if(!1===t.differential){if("string"!=typeof s)return void console.warn("Render method with differential: false must return a string");const t=document.createElement("template");t.innerHTML=s;const n=e[Q];n?.clear();const o=Array.from(i.childNodes).filter(e=>!(e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")));for(const e of o)e.remove();return i.appendChild(t.content),e[Q]=null,void pn(e)}if(!nt(s))return void console.warn("Render method must return html`` template result");let a=e[Q];if(a&&a.isSameTemplate(s.strings))return a.update(s.values),void pn(e);const c=new _t(s),l=c.renderFragment();try{c.update(s.values)}catch(e){throw c.clear(),e}const h=document.createDocumentFragment();for(const e of Array.from(i.childNodes))e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")||h.appendChild(e);i.appendChild(l);try{e.isConnected&&c.reconnected()}catch(e){try{c.clear()}catch(e){console.error("snice: failed to clean up a rejected render tree:",e)}for(const e of Array.from(i.childNodes))e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")||e.remove();throw i.appendChild(h),e}let u;e[Q]=c;try{a?.clear()}catch(e){u=e}if(pn(e),u)throw u}catch(e){if(hn)throw e;console.error("Error rendering element:",e)}finally{e[d]=s,dn(e)}}function bn(e,t=!1){const n=e[G]||{};if(n.once&&mn(e))e.isConnected&&vn(e);else if(un(e),t)gn(e,n);else{if(void 0!==n.debounce&&n.debounce>0)return e[J]||(e[J]={}),clearTimeout(e[J].debounce),void(e[J].debounce=setTimeout(()=>{e[J].debounce=null,fn.schedule(e,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){e[J]||(e[J]={lastThrottle:0});const t=e[J],o=Date.now();return 0===t.lastThrottle||o-t.lastThrottle>=n.throttle?(t.lastThrottle=o,void fn.schedule(e,n)):void(t.throttleTimer||(t.throttleTimer=setTimeout(()=>{t.throttleTimer=null,t.lastThrottle=Date.now(),fn.schedule(e,n)},n.throttle-(o-t.lastThrottle))))}fn.schedule(e,n)}}function vn(e){const t=e[Q];t?.reconnected()}const wn=n("debounce-timers"),En=n("throttle-timers"),Nn=n("once-called"),Sn=n("memoize-cache");function An(e){if(e[wn]){for(const t in e[wn])e[wn][t]?.timeout&&clearTimeout(e[wn][t].timeout);e[wn]={}}}function Tn(e){if(e[En]){for(const t in e[En])e[En][t]?.timeout&&clearTimeout(e[En][t].timeout);e[En]={}}}function _n(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.configurable?{locked:!1,value:void 0}:"value"in n&&!1===n.writable?{locked:!0,value:n.value}:"value"in n||void 0!==n.get?{locked:!1,value:void 0}:{locked:!0,value:void 0}}function Cn(e){e.prototype[s]=!0;const t=e.prototype.connectedCallback,n=e.prototype.disconnectedCallback,o=e.prototype.attributeChangedCallback,r=e.observedAttributes||[];r.includes("controller")||r.push("controller");const i=e[T];if(i)for(const[e,t]of i){if(!1===t.attribute)continue;const n=je(t,e);r.includes(n)||r.push(n)}Object.defineProperty(e,"observedAttributes",{get:()=>r,configurable:!0}),Object.defineProperty(e.prototype,"ready",{get(){return this[a]||(this[a]=new Promise(e=>{this[c]=e})),this[a]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rendered",{get(){return this[h]?this[l]:Promise.resolve()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controller",{get(){return this[p]},set(e){const t=this[p];if(this[p]=e,e!==t){if(e){const t="string"==typeof e?e:e.name||"(anonymous controller class)";return void rn(this,e).catch(n=>{"ControllerAttachAborted"!==n?.name?"string"!=typeof e||n?.message!==`Controller "${e}" not found in registry`?console.error(`Failed to attach controller "${t}":`,n):nn(this,e):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}t&&sn(this).catch(e=>{console.error("Failed to detach controller:",e)})}},enumerable:!0,configurable:!0}),e.prototype.connectedCallback=async function(){if(this[a]||(this[a]=new Promise(e=>{this[c]=e})),this[y]){try{vn(this)}catch(e){console.error(`Error reconnecting the render tree for ${this.tagName}:`,e)}Zt(this,this),Xe(this,this),ln(this);try{Ue(this,this)}catch(e){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,e)}t&&t.call(this);const n=e[V];if(n)for(const e of n)try{const t=e.method.call(this);t&&"function"==typeof t.then&&t.catch(t=>{console.error(`Error in @reconnect handler ${e.methodName}:`,t)})}catch(t){console.error(`Error in @reconnect handler ${e.methodName}:`,t)}return void(this[K]&&this[u]&&(this[u]=!1,bn(this)))}this[L]=!0;const n=e[T];if(n)for(const[e,t]of n){if(!1===t.attribute)continue;const n=je(t,e);if(!this.hasAttribute(n))continue;const o=this.getAttribute(n);Re(this,P).add(e),t.type===Boolean&&""===o&&this.setAttribute(n,"true"),this[e]=Pe(o,t)}if(this[x]){for(const[e,t]of Array.from(this[x].entries())){const o=n?.get(e),r=je(o||{},e);this[x].delete(e),this.hasAttribute(r)||(this[e]=t)}delete this[x]}if(void 0!==this[S]){const e=this[S];if(delete this[S],!this[p]){this[p]=e;const t=e?.name||"(anonymous controller class)";rn(this,e).catch(e=>{"ControllerAttachAborted"!==e?.name?console.error(`Failed to attach controller "${t}":`,e):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}}if(this.hasAttribute("controller")&&!this[p]){const e=this.getAttribute("controller");e&&(this.controller=e)}!function(e){const t=e[Y],n=[],o=[];let r=e.constructor;for(;r&&r!==HTMLElement&&r!==Function.prototype;)o.unshift(r),r=Object.getPrototypeOf(r);for(const e of o){if(!Object.prototype.hasOwnProperty.call(e,"styles"))continue;const t=e.styles,o=Array.isArray(t)?t:[t];for(const e of o)ot(e)?n.push(e):console.warn("Static styles must be a css`` result or an array of css`` results")}if((t||0!==n.length)&&!e[Z]){e[Z]=!0;try{const o=[...n],r=e[ee];if(r)for(const t of r){const n=t.call(e);ot(n)&&o.push(n)}if(t){const n=t.call(e);if(!ot(n))return void console.warn("Styles method must return css`` template result");o.push(n)}const s=ht(e),i=Array.from(s.childNodes).filter(e=>e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style"));if(i.length===o.length&&i.every((e,t)=>e.textContent===o[t].cssText))return;for(const e of i)e.remove();if(s instanceof ShadowRoot&&o.every(e=>!!e.styleSheet)&&"adoptedStyleSheets"in s)try{return void(s.adoptedStyleSheets=o.map(e=>e.styleSheet))}catch{}for(const e of o){const t=document.createElement("style");t.setAttribute("data-snice-style",""),t.textContent=e.cssText,s.appendChild(t)}}catch(e){console.error("Error applying styles:",e)}}}(this),Zt(this,this),Xe(this,this),ln(this),this[y]=!0,function(e,t){if(We.has(t))return;We.add(t);const n=t[$];if(!n||0===n.size)return;const o=t[T],r=new Set(["*"]);if(o)for(const[e,t]of o)r.add(e),"string"==typeof t?.attribute&&r.add(t.attribute);for(const t of n.keys()){if(r.has(t))continue;const n=e.tagName?e.tagName.toLowerCase():"element",s=o?[...o.keys()].join(", "):"(none)";console.warn(`@watch('${t}') on <${n}> matches no @property — it will never fire. Known properties: ${s}.`)}}(this,e),function(e,t){const n=t[$],o=t[T];if(n&&o)for(const[t,r]of o){const o=[t],s=r&&"string"==typeof r.attribute?r.attribute:null;s&&s!==t&&o.push(s),o.push("*");for(const r of o)if(n.has(r))for(const o of n.get(r))if(o.immediate)try{o.method.call(e,void 0,e[t],t)}catch(e){console.error(`Error in @watch('${r}') method ${o.methodName}:`,e)}}}(this,e),t&&t.call(this);const o=e[I];if(await new Promise(e=>queueMicrotask(e)),this.isConnected){this[K]&&bn(this,!0);try{Ue(this,this)}catch(e){console.error(`Error setting up observers for ${this.tagName}:`,e)}if(await new Promise(e=>queueMicrotask(e)),this.isConnected){if(o)for(const e of o)try{await e.method.call(this)}catch(t){console.error(`Error in @ready handler ${e.methodName}:`,t)}this[c]&&(this[c](),this[c]=null)}else this[c]&&(this[c](),this[c]=null)}else this[c]&&(this[c](),this[c]=null)},e.prototype.disconnectedCallback=async function(){try{!function(e){const t=e[Q];t?.disconnected(!0)}(this)}catch(e){console.error(`Error disconnecting the render tree for ${this.tagName}:`,e)}const t=e[D];if(t)for(const e of t)try{await e.method.call(this)}catch(t){console.error(`Error in @dispose handler ${e.methodName}:`,t)}n&&n.call(this),this[p]&&sn(this).catch(e=>{console.error("Failed to detach controller:",e)}),en(this),Ye(this),function(e){const t=e.constructor[cn];if(!t||!Array.isArray(t)||0===t.length)return;const n=e[le];if(n&&"object"==typeof n){for(const e of Object.keys(n))n[e]?.timeout&&clearTimeout(n[e].timeout);delete e[le]}for(const n of t)delete e[`__wrapped_${n.methodName}`];const o=e[oe];o&&"function"==typeof o[ae]&&o[ae](e),delete e[oe],delete e[he]}(this),Je(this),An(this),Tn(this),function(e){const t=e[J];if(!t)return!1;let n=!1;return t.debounce&&(clearTimeout(t.debounce),t.debounce=null,n=!0),t.throttleTimer&&(clearTimeout(t.throttleTimer),t.throttleTimer=null,n=!0),n}(this)&&(this[u]=!0),function(e){const t=e[H];if(t)for(const e of t.values())e.debounceTimeout&&clearTimeout(e.debounceTimeout),e.throttleTimeout&&clearTimeout(e.throttleTimeout),e.debounceTimeout=null,e.throttleTimeout=null,e.throttleLastCall=0,e.latestDetail=void 0}(this),Mn(this,z),Mn(this,U)},e.prototype.attributeChangedCallback=function(t,n,r){if(o?.call(this,t,n,r),"controller"===t)return void(this.controller=r);const s=e[T];if(s)for(const[n,o]of s){if(je(o,n).toLowerCase()!==t.toLowerCase())continue;if(this[W]?.has(t.toLowerCase()))break;const s=this[_]?.[n],i=this[C]?.[n];let a=null===r?o.type!==Boolean&&i:Pe(r,o,s,i);const c=this[O]?.[n];if(c&&(a=c(a)),!(o?.hasChanged?o.hasChanged(a,s):Me(a,s)))break;Re(this,P).add(n),Ie(this,_)[n]=a,this[y]&&De(this,e,n,s,a),this[K]&&this[y]&&bn(this);break}},e.prototype.connectedMoveCallback=async function(){const t=e[q];if(t)for(const e of t)try{await this[e.methodName]()}catch(t){console.error(`Error in @moved handler ${e.methodName}:`,t)}},e.prototype.adoptedCallback=async function(){const t=e[B];if(t)for(const e of t)try{await this[e.methodName]()}catch(t){console.error(`Error in @adopted handler ${e.methodName}:`,t)}}}function On(e,t,n,o){if(function(e){let t=Object.getPrototypeOf(e);const n=[];for(;t&&t!==HTMLElement&&t!==Function.prototype;)n.push(t),t=Object.getPrototypeOf(t);n.reverse();for(const t of n){if(t[T]){e[T]||(e[T]=new Map);for(const[n,o]of t[T])e[T].has(n)||e[T].set(n,o)}t.formAssociated&&!e.formAssociated&&(e.formAssociated=!0)}}(t),n.metadata&&n.metadata[T]){t[T]||(t[T]=new Map);for(const[e,o]of n.metadata[T])t[T].set(e,o)}else if(xn.length>0){t[T]||(t[T]=new Map);const e=xn.pop();for(const[n,o]of e)t[T].set(n,o)}o?.formAssociated&&(t.formAssociated=!0);const r={...Object.getPrototypeOf(t)?.[m]||{}},s=o||{};if("light"===s.renderRoot&&"string"==typeof s.shadow||"shadow"===s.renderRoot&&!1===s.shadow)throw new TypeError("snice: @element renderRoot and shadow options select conflicting render roots.");const i={...r,...s};return Object.prototype.hasOwnProperty.call(s,"shadow")?i.renderRoot=!1===s.shadow?"light":"shadow":Object.prototype.hasOwnProperty.call(s,"renderRoot")&&("light"===s.renderRoot?i.shadow=!1:!1===i.shadow&&(i.shadow="open")),t[m]=i,!0===t.prototype[te]&&Object.prototype.hasOwnProperty.call(t.prototype,"render")&&!Object.prototype.hasOwnProperty.call(t.prototype,K)&&"function"==typeof t.prototype.render&&(t.prototype[K]=t.prototype.render,t.prototype[G]=t.renderOptions||{}),Cn(t),customElements.get(e)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${e}" is already registered. Skipping.`),t):(customElements.define(e,t),t)}const xn=[],kn=new WeakMap;function Ln(e){return function(t,n){const o=n.name;return n.metadata?(n.metadata[T]||(n.metadata[T]=new Map),n.metadata[T].set(o,e||{})):(0===xn.length&&xn.push(new Map),xn[xn.length-1].set(o,e||{})),function(t){const n=this[k],r=!0===n?.delete(o);0===n?.size&&delete this[k];const s=Object.prototype.hasOwnProperty.call(this,o),i=s&&(r||!function(e,t,n){const o=e?.ownerDocument;if(!o?.createElement)return!1;let r=kn.get(o);if(!r){const e=o.createElement("div");r=new Map;for(const t of Reflect.ownKeys(e))r.set(t,e[t]);kn.set(o,r)}return r.has(t)&&Object.is(r.get(t),n)}(this,o,this[o])),a=i?this[o]:t;s&&delete this[o];const c=this.constructor;c[T]||(c[T]=new Map);const l={...e};l.type||void 0===t||(l.type=$e(t)),l.attributeNaming||"kebab"!==c.propertyAttributeNaming||(l.attributeNaming="kebab"),c[T].set(o,l),Ie(this,C)[o]=t;const h=()=>{if(!this[L])return;const e=this[_]?.[o];if(!1!==l.attribute&&!1!==l.reflect){const n=je(l,o),r=Fe(e,l,t),s=n.toLowerCase();Re(this,W).add(s);try{null===r?this.removeAttribute?.(n):this.setAttribute?.(n,r)}finally{this[W].delete(s)}}this[y]&&(De(this,this.constructor,o,e,e),this[K]&&bn(this))},u=e=>{if(!l.deep)return e;let t;return t=function(e,t){if(!e||"object"!=typeof e)return e;const n=new WeakMap,o=new WeakMap,r=e=>e&&"object"==typeof e&&o.get(e)||e,s=e=>{if(!e||"object"!=typeof e)return e;if(n.has(e))return n.get(e);if(e instanceof Map){let i;const a=new Map;return i=new Proxy(e,{get(e,n){const o=_n(e,n);if(o.locked)return o.value;if(a.has(n))return a.get(n);let c;if("set"===n)c=(n,o)=>{n=r(n),o=r(o);const s=e.has(n),a=e.get(n);return e.set(n,o),s&&Object.is(a,o)||t(),i};else if("delete"===n)c=n=>{n=r(n);const o=e.delete(n);return o&&t(),o};else if("clear"===n)c=()=>{0!==e.size&&(e.clear(),t())};else if("get"===n)c=t=>s(e.get(r(t)));else if("has"===n)c=t=>e.has(r(t));else if("forEach"===n)c=(t,n)=>e.forEach((e,o)=>t.call(n,s(e),s(o),i));else if("values"===n)c=function*(){for(const t of e.values())yield s(t)};else if("keys"===n)c=function*(){for(const t of e.keys())yield s(t)};else if("entries"===n||n===Symbol.iterator)c=function*(){for(const[t,n]of e.entries())yield[s(t),s(n)]};else{const t=Reflect.get(e,n,e);if("function"!=typeof t)return t;if("constructor"===n)return t;c=t.bind(e)}return a.set(n,c),c}}),n.set(e,i),o.set(i,e),i}if(e instanceof Set){let i;const a=new Map;return i=new Proxy(e,{get(e,n){const o=_n(e,n);if(o.locked)return o.value;if(a.has(n))return a.get(n);let c;if("add"===n)c=n=>{n=r(n);const o=e.has(n);return e.add(n),o||t(),i};else if("delete"===n)c=n=>{n=r(n);const o=e.delete(n);return o&&t(),o};else if("clear"===n)c=()=>{0!==e.size&&(e.clear(),t())};else if("has"===n)c=t=>e.has(r(t));else if("forEach"===n)c=(t,n)=>e.forEach(e=>{const o=s(e);t.call(n,o,o,i)});else if("values"===n||"keys"===n||n===Symbol.iterator)c=function*(){for(const t of e.values())yield s(t)};else if("entries"===n)c=function*(){for(const t of e.values()){const e=s(t);yield[e,e]}};else{const t=Reflect.get(e,n,e);if("function"!=typeof t)return t;if("constructor"===n)return t;c=t.bind(e)}return a.set(n,c),c}}),n.set(e,i),o.set(i,e),i}if(!Array.isArray(e)&&!function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const i=new Proxy(e,{get(e,t,n){const o=_n(e,t);return o.locked?o.value:s(Reflect.get(e,t,n))},set(e,n,o,s){const i=Reflect.get(e,n,s);o=r(o);const a=Reflect.set(e,n,o);return a&&!Object.is(i,o)&&t(),a},deleteProperty(e,n){const o=Object.prototype.hasOwnProperty.call(e,n),r=Reflect.deleteProperty(e,n);return r&&o&&t(),r},defineProperty(e,n,o){const s=Reflect.getOwnPropertyDescriptor(e,n),i="value"in o?{...o,value:r(o.value)}:o,a=Reflect.defineProperty(e,n,i),c=a?Reflect.getOwnPropertyDescriptor(e,n):s;return a&&!function(e,t){if(!e||!t)return e===t;const n="value"in e||"writable"in e;return n===("value"in t||"writable"in t)&&e.configurable===t.configurable&&e.enumerable===t.enumerable&&(!n||e.writable===t.writable&&Object.is(e.value,t.value))&&(n||e.get===t.get&&e.set===t.set)}(s,c)&&t(),a}});return n.set(e,i),o.set(i,e),i};return s(e)}(e,()=>{this[_]?.[o]===t&&h()}),t};Ie(this,O)[o]=u;const d=this.constructor.prototype;let f=d[Ae];f&&Object.prototype.hasOwnProperty.call(d,Ae)||(f=new Map(f),d[Ae]=f);const m=f.get(o);m&&m===e||(f.set(o,e),Object.defineProperty(this.constructor.prototype,o,{get(){return this[x]?.has(o)?this[x].get(o):this[_]&&o in this[_]?this[_][o]:t},set(e){const t=this[o];if(!(l.hasChanged?l.hasChanged(e,t):Me(e,t)))return;const n=(this[O]?.[o]||(e=>e))(e);if(!this[L])return this[x]||(this[x]=new Map),void this[x].set(o,n);if(Ie(this,_)[o]=n,!1!==l.attribute&&!1!==l.reflect){const e=je(l,o),t=Fe(n,l,this[C]?.[o]);Re(this,P).add(o);const r=e.toLowerCase();Re(this,W).add(r);try{null===t?this.removeAttribute?.(e):this.setAttribute?.(e,t)}finally{this[W].delete(r)}}this[y]&&(De(this,this.constructor,o,t,n),this[K]&&bn(this))},configurable:!0,enumerable:!0}));const p=u(t);return Ie(this,_)[o]=p,Ie(this,C)[o]=p,i?a:p}}}function $n(e){return!0===e[r]&&e.element?e.element:e}function Pn(e,t,n,o,r){const s=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,t)||(o[t]=new Set),!o[t].has(n)){if(o[t].add(n),!Object.prototype.hasOwnProperty.call(o,e)){const t=o[e];o[e]=t?[...t]:[]}o[e].push({methodName:s,method:n,...r})}})}function Mn(e,t){const n=e[t];if(n)for(const e of n.values())e.debounceTimer&&clearTimeout(e.debounceTimer),e.throttleTimer&&clearTimeout(e.throttleTimer),e.debounceTimer=null,e.throttleTimer=null,e.lastThrottleCall=0}function jn(e,t,n){return function(o={}){return function(r,s){Pn(e,n,r,s,{options:o});const i=s.name;return function(...e){this[t]||(this[t]=new Map),this[t].has(i)||this[t].set(i,{throttleTimer:null,debounceTimer:null,lastThrottleCall:0});const n=this[t].get(i),s=(...e)=>r.apply(this,e),a=(...e)=>{try{const t=r.apply(this,e);t&&"function"==typeof t.then&&t.catch(e=>console.error(`Error in deferred lifecycle handler ${i}:`,e))}catch(e){console.error(`Error in deferred lifecycle handler ${i}:`,e)}};if(o.debounce>0)return clearTimeout(n.debounceTimer),void(n.debounceTimer=setTimeout(()=>a(...e),o.debounce));if(o.throttle>0){const t=Date.now();return 0===n.lastThrottleCall||t-n.lastThrottleCall>=o.throttle?(n.lastThrottleCall=t,s(...e)):void(n.throttleTimer||(n.throttleTimer=setTimeout(()=>{n.throttleTimer=null,n.lastThrottleCall=Date.now(),a(...e)},o.throttle-(t-n.lastThrottleCall))))}return s(...e)}}}}const Rn=jn(q,z,we),In=jn(B,U,Ee);class Dn extends HTMLElement{static{this.propertyAttributeNaming="kebab"}createRenderRoot(){const e=this.constructor[m];return this.attachShadow({mode:"string"==typeof e?.shadow?e.shadow:"open",delegatesFocus:e?.delegatesFocus})}invalidate(){return bn(this),this.rendered}renderNow(){return un(this),gn(this,{...this[G]||{},once:!1}),this.rendered}}Object.defineProperty(Dn.prototype,te,{value:!0});class Vn{constructor(e){this.parsed=this.parsePattern(e)}get spec(){return this.parsed.template}parsePattern(e){let t=e,n="",o=!1;const r=e.indexOf("?");return-1!==r&&(t=e.slice(0,r),n=e.slice(r+1),t.endsWith("(")&&n.endsWith(")")&&(o=!0,t=t.slice(0,-1),n=n.slice(0,-1))),{pathSegments:this.parseSegments(t),querySegments:n?this.parseQuerySegments(n):[],queryOptional:o,template:e}}parseSegments(e){const t=[];let n=0;for(;n<e.length;)switch(e[n]){case"(":const{segments:o,endIndex:r}=this.parseOptionalGroup(e,n);t.push({type:"optional",segments:o}),n=r+1;break;case":":const{name:s,endIndex:i}=this.parseIdentifier(e,n+1);t.push({type:"param",name:s}),n=i;break;case"*":const{name:a,endIndex:c}=this.parseIdentifier(e,n+1);t.push({type:"splat",name:a}),n=c;break;default:const{value:l,endIndex:h}=this.parseLiteral(e,n);l&&t.push({type:"literal",value:l}),n=h}return t}parseOptionalGroup(e,t){let n=1,o=t+1;for(;o<e.length&&n>0;)"("===e[o]&&n++,")"===e[o]&&n--,o++;const r=e.slice(t+1,o-1);return{segments:this.parseSegments(r),endIndex:o-1}}parseIdentifier(e,t){let n=t;for(;n<e.length&&/[\w-]/.test(e[n]);)n++;return{name:e.slice(t,n),endIndex:n}}parseLiteral(e,t){let n=t;for(;n<e.length&&!"(:*(".includes(e[n]);)n++;return{value:e.slice(t,n),endIndex:n}}parseQuerySegments(e){let t=e;t.startsWith("(")&&t.endsWith(")")&&(t=t.slice(1,-1));const n=[];let o=0;for(;o<t.length;)if(":"===t[o]){const{name:e,endIndex:r}=this.parseIdentifier(t,o+1);n.push({type:"param",name:e}),o=r}else{const{value:e,endIndex:r}=this.parseQueryLiteral(t,o);e&&n.push({type:"literal",value:e}),o=r}return n}parseQueryLiteral(e,t){let n=t;for(;n<e.length&&":"!==e[n];)n++;return{value:e.slice(t,n),endIndex:n}}getAllParamNames(){const e=new Set,t=n=>{for(const o of n)switch(o.type){case"param":case"splat":e.add(o.name);break;case"optional":t(o.segments)}};return t(this.parsed.pathSegments),t(this.parsed.querySegments),Array.from(e)}canMatchRemainingSegments(e,t,n){let o=t;for(const t of n)if("literal"===t.type){const n=e.indexOf(t.value,o);if(-1===n)return!1;o=n+t.value.length}return!0}match(e){const[t,n]=e.split("?"),o=this.matchPath(t,this.parsed.pathSegments);if(!1===o)return!1;const r=this.matchQuery(n||"",this.parsed.querySegments);if(!1===r)return!1;const s=this.getAllParamNames(),i={};for(const e of s)i[e]=void 0;return Object.assign(i,o,r),i}matchPath(e,t){const n={};let o=0;for(let r=0;r<t.length;r++){const s=t[r],i=t.slice(r+1),a=this.matchSegment(e,o,s,i);if(!1===a)return!1;Object.assign(n,a.params),o=a.nextIndex}return!(o<e.length)&&n}matchSegment(e,t,n,o=[]){switch(n.type){case"literal":return e.slice(t,t+n.value.length)===n.value&&{params:{},nextIndex:t+n.value.length};case"param":{let r=t;const s=o[0];let i,a=["/","?"];if(s&&"literal"===s.type){const n=e.indexOf(s.value,t);if(-1===n)return!1;r=n}else for(;r<e.length&&!a.includes(e[r]);)r++;if(r===t)return!1;try{i=decodeURIComponent(e.slice(t,r))}catch(n){i=e.slice(t,r)}return!(r<e.length&&"?"===e[r]&&o.length>0)&&{params:{[n.name]:i},nextIndex:r}}case"splat":{let r=e.length;const s=o[0];if(s)switch(s.type){case"literal":if("."===s.value){const n=e.indexOf(".",t);-1!==n&&(r=n)}else{const n=e.lastIndexOf(s.value);-1!==n&&n>=t&&(r=n)}break;case"param":let n=-1;for(let o=e.length-1;o>=t;o--)if("/"===e[o]){n=o;break}-1!==n&&(r=n);break;case"splat":let o=-1;for(let n=e.length-1;n>t;n--)if("/"===e[n]){o=n+1;break}if(-1!==o)r=o;else{const n=e.slice(t).split("/").filter(e=>e);r=n.length>1?t+n.slice(0,-1).join("/").length+1:t}break;case"optional":const i=e=>{for(const t of e){if("literal"===t.type)return t.value;if("optional"===t.type){const e=i(t.segments);if(e)return e}}return null},a=i(s.segments);if(a){const n=e.lastIndexOf(a);-1!==n&&n>=t&&(r=n)}}const i=e.indexOf("?",t);let a;-1!==i&&i<r&&(r=i);try{a=decodeURIComponent(e.slice(t,r))}catch(n){a=e.slice(t,r)}return{params:{[n.name]:a},nextIndex:r}}case"optional":{let r=t,s={},i=!0;for(let t=0;t<n.segments.length;t++){const o=n.segments[t],a=n.segments.slice(t+1),c=this.matchSegment(e,r,o,a);if(!1===c){i=!1;break}Object.assign(s,c.params),r=c.nextIndex}return i&&this.canMatchRemainingSegments(e,r,o)?{params:s,nextIndex:r}:{params:{},nextIndex:t}}default:return!1}}findNextLiteral(e){for(const t of e){if("literal"===t.type)return t;if("optional"===t.type){const e=this.findNextLiteral(t.segments);if(e)return e}}return null}matchQuery(e,t){if(0===t.length)return{};const n={};let o=0;for(const r of t)switch(r.type){case"literal":if(e.slice(o,o+r.value.length)!==r.value)return!1;o+=r.value.length;break;case"param":{let t,s=o;for(;s<e.length&&"&"!==e[s];)s++;if(s===o)return!1;try{t=decodeURIComponent(e.slice(o,s))}catch(n){t=e.slice(o,s)}n[r.name]=t,o=s;break}}return n}reverse(e={}){const t=this.reverseSegments(this.parsed.pathSegments,e);if(!1===t)return!1;let n=t;if(this.parsed.querySegments.length>0){const t=this.reverseSegments(this.parsed.querySegments,e);if(!this.parsed.queryOptional&&!1===t)return!1;t&&""!==t&&(n+="?"+t)}return n}reverseSegments(e,t,n=!1){let o="";for(let r=0;r<e.length;r++){const s=e[r],i=e.slice(r+1);switch(s.type){case"literal":o+=s.value;break;case"param":case"splat":if(!(s.name in t))return!1;o+=String(t[s.name]);break;case"optional":if(this.hasAllParams(s.segments,t,n)||this.hasLaterOptionalGroupNeedingParams(i,t,s.segments)){const e=this.reverseSegments(s.segments,t,!0);if(!1===e)return!1;o+=e}}}return o}hasLaterOptionalGroupNeedingParams(e,t,n){for(const o of e)if("optional"===o.type&&this.hasAnyParamInSegments(o.segments,t))return this.hasOnlyLiteralsAndOptionals(n);return!1}hasOnlyLiteralsAndOptionals(e){for(const t of e)if("param"===t.type||"splat"===t.type)return!1;return!0}hasAllParams(e,t,n=!1){let o=!1,r=!1,s=!1,i=!0;for(const n of e)switch(n.type){case"param":case"splat":i=!1,n.name in t&&void 0!==t[n.name]?o=!0:s=!0}const a=n||o&&!s;for(const n of e)"optional"===n.type&&this.hasAllParams(n.segments,t,a)&&(r=!0);return!(!o||s)||!(!r||s)||!(!i||!n)}hasOnlyOptionalMissingParams(e,t){for(const n of e)switch(n.type){case"param":case"splat":if(!(n.name in t))return!1}return!0}hasAnyParamInSegments(e,t){for(const n of e)switch(n.type){case"param":case"splat":if(n.name in t)return!0;break;case"optional":if(this.hasAnyParamInSegments(n.segments,t))return!0}return!1}}function qn(e){const t=e.split("/").filter(Boolean);let n=t.length;for(const e of t)e.startsWith("*")?n+=-2:e.startsWith(":")?n+=3:n+=10;return n}function Bn(e){const t={};return e.split(";").forEach(e=>{const n=e.indexOf(":");if(-1===n)return;const o=e.slice(0,n).trim(),r=e.slice(n+1).trim();o&&r&&(t[o]=r)}),t}function Fn(e,t,n,o){if(e.style.position="absolute",e.style.width="100%",t)return e.style.height="100%",void(e.style.transition=`opacity ${n}ms ease-in-out`);e.style.top="0",e.style.left="0",e.style.transition=`${o} ${n}ms ease-in-out`}var Wn;!function(e){e.SUCCESS="success",e.GUARDS_FAILED="guards-failed",e.NOT_FOUND="not-found"}(Wn||(Wn={}));let zn=!1;async function Un(e,t=500){if(customElements.get(e))return;let n=null;zn||(n=setTimeout(()=>{console.warn(`Custom element <${e}> is taking longer than ${t}ms to register. This may indicate a missing import or circular dependency. Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`)},t));try{await customElements.whenDefined(e)}finally{n&&clearTimeout(n)}}async function Hn(e,t=500){const n=e.tagName.toLowerCase();await Un(n,t),"ready"in e&&"function"==typeof e.ready?.then&&await e.ready}let Kn=0,Gn=null;const Qn=Symbol.for("snice:body-scroll-lock");var Jn;return globalThis[Qn]={clear(){Kn=0,Gn=null}},"undefined"!=typeof document&&an(),globalThis.snice||(globalThis.snice={controllerRegistry:new Map,pendingControllerAttachments:new Map,controllerIdCounter:0}),globalThis.snice.pendingControllerAttachments??=new Map,function(e){e.SEQUENTIAL="sequential",e.SIMULTANEOUS="simultaneous"}(Jn||(Jn={})),e.Context=Le,e.ContextAwareFetcher=class{constructor(){this.requestMiddlewares=[],this.responseMiddlewares=[]}use(e,t){"request"!==e?this.responseMiddlewares.push(t):this.requestMiddlewares.push(t)}create(e){const t=this.requestMiddlewares,n=this.responseMiddlewares;return async function(e,o){const r=new Request(e,o);let s=0;const i=async()=>{if(s<t.length)return t[s++].call(this,r,i);const e=await fetch(r);let o=0;const a=async()=>o<n.length?n[o++].call(this,e,a):e;return a()};return i()}.bind(e)}},e.IS_CONTROLLER_INSTANCE=r,e.Router=function(t){const n=t.window??window,o=t.document??document,r=[];let s,i,a,c=!1,l=[],h=null,u=null;const d=t.context||{},f=new Le(d,[],"",{},t.fetcher);function m(e){if(!h||!u)return null;const t=e.querySelectorAll(h);for(const e of t)if(e[R]===u)return e;return null}function p(e,t,n,o,l,h){switch(r.push({route:new Vn(e),tag:t,transition:n,guards:o,layout:l,placard:h}),c=!1,e){case"/404":s=t;break;case"/403":i=t;break;case"/":a=t}}function y(){const e=new Set;l=r.filter(e=>e.placard).map(e=>{const t=e.placard;return"function"==typeof t?t(d):t}).filter(t=>!e.has(t.name)&&(e.add(t.name),!0))}function g(e,t,n){f[ue](d,l,t,n)}function b(){switch(t.type){case"hash":return n.location.hash.slice(1);case"pushstate":return n.location.pathname}}function v(e){let t;if(i)t=o.createElement(i),t[M]=d;else{const e=o.createElement("div");e.className="default-403",e.innerHTML="<h1>403</h1><p>Unauthorized</p>",t=e}e.innerHTML="",e.appendChild(t),h=null,u=null}async function w(e,t,n,r){if(!e)return!0;const s=Array.isArray(e)?e:[e];let i=null,a=null;a=setTimeout(()=>{r&&r()||(i=function(){const e=o.createElement("div");return e.setAttribute("data-snice-loading",""),e.innerHTML='\n <style>@keyframes snice-spin{to{transform:rotate(360deg)}}</style>\n <div style="display:flex;align-items:center;justify-content:center;height:100%;min-height:200px">\n <div style="width:32px;height:32px;border:3px solid rgba(128,128,128,0.3);border-top-color:rgba(128,128,128,0.8);border-radius:50%;animation:snice-spin 0.6s linear infinite"></div>\n </div>',e}(),n.appendChild(i))},50);try{for(const e of s)if(!await e(d,t))return r&&r()||v(n),!1;return!0}finally{a&&clearTimeout(a),i&&i.remove()}}async function E(e,n,r,s,i,a,c){const f=!1===(p=s)?null:p||(t.layout?t.layout:null);var p;const{element:y,needsNewLayout:b}=function(e){if(e===h)return{element:null,needsNewLayout:!1};if(h=e,e){const t=Date.now();u=t;const n=o.createElement(e);return n[M]=d,n[R]=t,{element:n,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(f),v=r||t.transition;if(null!==y||null!==m(e)){if(await async function(e,t,n,o,r,s,i,a){const c=o||m(e);if(!c)return;!function(e,t,n){"function"==typeof e.update&&e.update(d,l,t,n)}(c,s,i);const h=c.querySelector('[slot="page"]');if(n&&h){if(t.setAttribute("slot","page"),await A(c,h,t,n),a&&a())return;r&&(e.innerHTML="",e.appendChild(c))}else a&&a()||(c.querySelectorAll('[slot="page"]').forEach(e=>e.remove()),t.setAttribute("slot","page"),c.appendChild(t),r&&(e.innerHTML="",e.appendChild(c)))}(e,n,v,y,b,i,a,c),c&&c())return;g(0,i,a)}else await async function(e,t,n,o){const r=e.children[0];n&&r?await A(e,r,t,n):o&&o()||(e.innerHTML="",e.appendChild(t))}(e,n,v,c),c&&c()||g(0,i,a)}let N=0;async function S(e){const i=o.querySelector(t.target);if(!i)throw new Error(`Target element not found: ${t.target}`);const c=++N,l=()=>c!==N;if(y(),n.scrollTo(0,0),(""===e?.trim()||"/"===e)&&a){const t=r.find(e=>e.route.match("/"));if(!await w(t?.guards,{},i,l))return;if(l())return;const{element:s,transition:c,layout:h}=function(){const e=o.createElement(a);e[M]=d;const t=n.customElements.get(a),s=t?.[j],i=r.find(e=>e.route.match("/"));return{element:e,transition:s,layout:i?.layout}}();return void await E(i,s,c,h,e,{},l)}if(!e)return;const h=await async function(e,t,n){for(const s of r){const r=s.route.match(e);if(!1===r)continue;if(!await w(s.guards,r,t,n))return{result:Wn.GUARDS_FAILED};const i=o.createElement(s.tag);i[M]=d,i[ne]=f;const a=r;return Object.keys(a).forEach(e=>i.setAttribute(e,a[e])),{result:Wn.SUCCESS,element:i,transition:s.transition,layout:s.layout,routeParams:a}}return{result:Wn.NOT_FOUND}}(e,i,l);if(l())return;if(h.result===Wn.GUARDS_FAILED)return;if(h.result===Wn.SUCCESS){const{element:t,transition:n,layout:o,routeParams:r={}}=h;return void await E(i,t,n,o,e,r,l)}const{element:u,transition:m,layout:p}=function(){if(s){const e=o.createElement(s);e[M]=d;const t=n.customElements.get(s),r=t?.[j];return{element:e,transition:r,layout:void 0}}const e=o.createElement("div");return e.className="default-404",e.innerHTML="<h1>404</h1><p>Page not found</p>",{element:e,transition:void 0,layout:void 0}}();await E(i,u,m,p,e,{},l)}async function A(t,n,o,r,s=N){return async function(t,n,o,r={},s=()=>!1){const i=r.outDuration??300,a=r.inDuration??300,c=r.mode||"sequential",l=r.out?Bn(r.out):{opacity:"0"},h={opacity:"0"},u=r.in?Bn(r.in):{opacity:"1"},d=t.style,f=t.tagName.includes("-")&&t.shadowRoot,m=Symbol.for("snice:transition-original-position"),p=Symbol.for("snice:transition-count"),y=t;f||(m in y||(y[m]=d.position,y[p]=0),y[p]++,d.position="relative");const g=()=>{f||(y[p]--,y[p]<=0&&(d.position=y[m],delete y[m],delete y[p]))},b=n.hasAttribute("slot")||o.hasAttribute("slot");switch(Fn(n,b,i,"all"),Fn(o,b,a,"all"),Object.assign(o.style,h),t.appendChild(o),c){case e.TransitionMode.SIMULTANEOUS:Object.assign(n.style,l),Object.assign(o.style,u),await new Promise(e=>setTimeout(e,Math.max(i,a)));break;case e.TransitionMode.SEQUENTIAL:if(Object.assign(n.style,l),await new Promise(e=>setTimeout(e,i)),s())return o.parentNode===t&&o.remove(),void g();Object.assign(o.style,u),await new Promise(e=>setTimeout(e,a))}if(s())return o.parentNode===t&&o.remove(),void g();n.remove(),function(e,t){e.style.position="",e.style.width="",e.style.transition="",t?e.style.height="":(e.style.top="",e.style.left="")}(o,b),Object.keys({...h,...u}).forEach(e=>{o.style[e]=""}),g()}(t,n,o,r,()=>s!==N)}return{page:function(e){return function(t,o){if(o?.metadata&&o.metadata[T]){t[T]||(t[T]=new Map);for(const[e,n]of o.metadata[T])t[T].set(e,n)}Cn(t),t[j]=e.transition;const r=t.prototype.connectedCallback;t.prototype.connectedCallback=function(){this[ne]=f,r?.call(this)};const s=t.prototype.disconnectedCallback;return t.prototype.disconnectedCallback=function(){s?.call(this),delete this[M],delete this[ne]},n.customElements.get(e.tag)||n.customElements.define(e.tag,t),e.routes.forEach(t=>p(t,e.tag,e.transition,e.guards,e.layout,e.placard)),t}},initialize:function(){if(!o.querySelector(t.target))throw new Error(`Target element not found: ${t.target}`);!c&&(r.sort((e,t)=>qn(t.route.spec)-qn(e.route.spec)),c=!0),y(),function(){const e=()=>{o.querySelector(t.target)&&S(b())};switch(t.type){case"hash":n.addEventListener("hashchange",e);break;case"pushstate":n.addEventListener("popstate",e)}}(),S(b())},navigate:S,register:p}},e.SimpleArray=Te,e.SniceElement=Dn,e.adopted=In,e.applyElementFunctionality=Cn,e.attachController=rn,e.classMap=function(e){let t="";for(const n of Object.keys(e))e[n]&&(t+=(t?" ":"")+n);return t},e.clearDebounceTimers=An,e.clearMemoizeCache=function(e,t){e[Sn]&&(t?delete e[Sn][t]:e[Sn]={})},e.clearThrottleTimers=Tn,e.context=function(e={}){return function(t,n){const o=n.name;return n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,de)||(n[de]=new Set),!n[de].has(t)){if(n[de].add(t),!Object.prototype.hasOwnProperty.call(n,cn)){const e=n[cn];n[cn]=e?[...e]:[]}n[cn].push({methodName:o,method:t,options:e})}}),t}},e.contextProperty=function(){return function(e,t){const n=t.name;return function(e){return Object.hasOwn(this.constructor.prototype,n)||Object.defineProperty(this.constructor.prototype,n,{get(){if(void 0!==this[M])return this[M];let e=!0===this[r]&&this.element?this.element:this;if(!e||!e.dispatchEvent)return;e.getRootNode&&e.getRootNode()instanceof ShadowRoot&&(e=e.getRootNode().host);const t={target:this};return e.dispatchEvent(new CustomEvent("@context/request",{bubbles:!0,cancelable:!0,detail:t})),void 0!==t.context?(this[M]=t.context,t.context):void 0},set(){},configurable:!0,enumerable:!0}),e}}},e.controller=function(e){return function(n,r){const s=globalThis.snice?.controllerRegistry;if(!s)throw new Error("Snice global registry not initialized");s.set(e,n),n.prototype[o]=!0;const i=t.pendingControllerAttachments.get(e);return i&&(t.pendingControllerAttachments.delete(e),queueMicrotask(()=>{for(const t of i){const n=t[E];(void 0===n?t[p]:n)===e&&rn(t,e).catch(t=>{"ControllerAttachAborted"!==t?.name&&console.error(`Failed to attach controller "${e}":`,t)})}})),n}},e.createRequestHandler=function(e,t,n){const o=[];for(const[r,s]of Object.entries(t)){const t=`@request/${r}`,i=e=>{const t=e,{discovery:o,data:i,payload:a}=t.detail;n?.passive||(t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation()),o.resolve(),Promise.resolve().then(()=>s(a)).then(e=>i.resolve(e)).catch(e=>{i.reject(e),console.error(`createRequestHandler: error in "${r}" handler:`,e)})};e.addEventListener(t,i),o.push(()=>e.removeEventListener(t,i))}return()=>{for(const e of o)e();o.length=0}},e.css=function(e,...t){const n=0===t.length?tt.get(e):void 0;if(n)return n;let o=e[0];for(let n=0;n<t.length;n++){const r=t[n];o+=(ot(r)?r.cssText:String(r))+e[n+1]}const r={_$litType$:et,cssText:o};if("undefined"!=typeof CSSStyleSheet&&"undefined"!=typeof Document&&"adoptedStyleSheets"in Document.prototype)try{const e=new CSSStyleSheet;e.replaceSync(o),r.styleSheet=e}catch(e){}return 0===t.length&&tt.set(e,r),r},e.debounce=function(e=300,t={}){const{leading:n=!1,trailing:o=!0,maxWait:r}=t;return function(t,s){const i=s.name;return function(...s){this[wn]||(this[wn]={});const a=this[wn],c=i;a[c]&&clearTimeout(a[c].timeout);const l=Date.now(),h=!a[c],u=h?l:a[c].startTime,d=void 0!==r&&l-u>=r;if(n&&h){const e=t.apply(this,s);return a[c]={timeout:null,startTime:u,lastArgs:s},e}const f=setTimeout(()=>{(o||d)&&t.apply(this,a[c].lastArgs),delete a[c]},d?0:e);a[c]={timeout:f,startTime:u,lastArgs:s}}}},e.detachController=sn,e.dispatch=function(e,t){return function(n,o){return function(...r){this[H]||(this[H]=new Map);const s=`${e}_${o.name}`;this[H].has(s)||this[H].set(s,{debounceTimeout:null,throttleLastCall:0,throttleTimeout:null});const i=this[H].get(s),a=n.apply(this,r),c=n=>{if(void 0===n&&!1===t?.dispatchOnUndefined)return;const o=new CustomEvent(e,{bubbles:!0,composed:!0,...t,detail:n});if(void 0!==t?.scope){const n=Be(this,t.scope);return n?void n.dispatchEvent(o):void console.warn(`[snice/@dispatch] scope did not resolve for "${e}" — event not dispatched.`)}this.dispatchEvent(o)},l=e=>{if(t?.debounce)return clearTimeout(i.debounceTimeout),void(i.debounceTimeout=setTimeout(()=>c(e),t.debounce));if(!t?.throttle)return void c(e);const n=Date.now(),o=t.throttle-(n-i.throttleLastCall);if(o<=0)return clearTimeout(i.throttleTimeout),i.throttleLastCall=n,void c(e);i.latestDetail=e,i.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null;const e=i.latestDetail;i.latestDetail=void 0,c(e)},o))};return a instanceof Promise?a.then(e=>(l(e),e)):(l(a),a)}}},e.dispose=function(){return function(e,t){Pn(D,be,e,t)}},e.element=function(e,t){if(void 0!==t?.renderRoot&&"shadow"!==t.renderRoot&&"light"!==t.renderRoot)throw new TypeError('snice: @element renderRoot must be "shadow" or "light".');if(void 0!==t?.shadow&&!1!==t.shadow&&"open"!==t.shadow&&"closed"!==t.shadow)throw new TypeError('snice: @element shadow must be "open", "closed", or false.');return function(n,o){return On(e,n,o,t)}},e.escapeAttr=function(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},e.escapeHtml=function(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},e.getBodyScrollLockCount=function(){return Kn},e.getController=function(e){return e[g]},e.getSymbol=n,e.html=function(e,...t){return{_$litType$:Ze,strings:e,values:t}},e.isSafeUrl=function(e,t={}){let n;try{n=String(e??"")}catch{return!1}if(!n||/[\u0000-\u001f\u007f]/.test(n))return!1;const o=n.trim();if(!o)return!1;const r=t.allowed??["http:","https:","mailto:","tel:"];try{const e=new URL(o,"http://__snice-relative.invalid/"),t=/^[a-z][a-z\d+.-]*:/i.test(o),n=/^[\\/]{2}/.test(o);return!t&&!n||r.some(t=>"string"==typeof t&&t.toLowerCase()===e.protocol)}catch{return!1}},e.layout=function(e){return function(t,n){return On(e,t,n)}},e.live=function(e){return{_$liveMarker$:wt,value:e}},e.lockBodyScroll=function(){0===Kn&&(Gn=document.body.style.overflow,document.body.style.overflow="hidden"),Kn++},e.memoize=function(e={}){const{keyGenerator:t=(...e)=>JSON.stringify(e),maxSize:n=100,ttl:o}=e;return function(e,r){const s=r.name;return function(...r){this[Sn]||(this[Sn]={}),this[Sn][s]||(this[Sn][s]=new Map);const i=this[Sn][s],a=t(...r);if(i.has(a)){const e=i.get(a);if(!(void 0!==o&&Date.now()-e.timestamp>o))return e.value;i.delete(a)}const c=e.apply(this,r);if(i.set(a,{value:c,timestamp:Date.now()}),i.size>n){const e=i.keys().next().value;i.delete(e)}return c}}},e.moved=Rn,e.noChange=vt,e.nothing=rt,e.observe=function(e,t,n){let o,r;return"string"==typeof t?(o=t,r=n):(o=void 0,r=t),function(t,n){const s=n.name;n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,me)||(n[me]=new Set),n[me].has(t))return;if(n[me].add(t),!Object.prototype.hasOwnProperty.call(n,F)){const e=n[F];n[F]=e?[...e]:[]}const i=Array.isArray(e)?e:[e];for(const e of i){const[i,...a]=e.split(":"),c=a.join(":");n[F].push({type:i,target:c,selector:o,methodName:s,method:t,options:r})}})}},e.on=function(e,t,n){let o=null,r={};return"string"==typeof t?(o=t,r=n||{}):t&&"object"==typeof t?r=t:null===t&&n&&(r=n),function(t,n){const s=n.name;return n.addInitializer(function(){const n=this.constructor,i=Array.isArray(e)?e:[e],a=`${s}::${i.join(",")}::${o??""}`;if(Object.prototype.hasOwnProperty.call(n,pe)||(n[pe]=new Set),!n[pe].has(a)){if(n[pe].add(a),!Object.prototype.hasOwnProperty.call(n,Jt)){const e=n[Jt];n[Jt]=e?[...e]:[]}for(const e of i)n[Jt].push({eventName:e,selector:o,methodName:s,method:t,options:r})}}),t}},e.once=function(e=!0){let t,n=!1;return function(o,r){const s=r.name;return function(...r){return e?(this[Nn]||(this[Nn]={}),this[Nn][s]||(this[Nn][s]={called:!0,result:o.apply(this,r)}),this[Nn][s].result):(n||(n=!0,t=o.apply(this,r)),t)}}},e.parseDuration=function(e){const t=String(e).trim(),n=parseFloat(t);let o;return o=isNaN(n)?0:/ms$/i.test(t)?n:/s$/i.test(t)?1e3*n:/m$/i.test(t)?6e4*n:/h$/i.test(t)?36e5*n:n,{milliseconds:()=>o,seconds:()=>o/1e3,minutes:()=>o/6e4}},e.property=Ln,e.query=function(e,t={}){return function(n,o){const{light:r=!1,shadow:s=!0}=t,i=o.name;return function(t){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const t=$n(this);let n=null;const o=t instanceof HTMLElement?lt(t):null;return s&&o?n=o.querySelector(e):s&&t.shadowRoot&&(n=t.shadowRoot.querySelector(e)),!n&&r&&(n=t.querySelector(e)),n||null},set(){},configurable:!0,enumerable:!0}),t}}},e.queryAll=function(e,t={}){return function(n,o){const{light:r=!1,shadow:s=!0}=t,i=o.name;return function(t){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const t=$n(this),n=new Set,o=t instanceof HTMLElement?lt(t):null;if(s&&o)for(const t of o.querySelectorAll(e))n.add(t);else if(s&&t.shadowRoot)for(const o of t.shadowRoot.querySelectorAll(e))n.add(o);if(r)for(const o of t.querySelectorAll(e))n.add(o);return[...n]},set(){},configurable:!0,enumerable:!0}),t}}},e.ready=function(){return function(e,t){Pn(I,ge,e,t)}},e.reconnect=function(){return function(e,t){Pn(V,ve,e,t)}},e.render=function(e={}){return function(t,n){return n.addInitializer(function(){this[K]=t,this[G]=e}),function(...n){const o=t.apply(this,n);return gn(this,{...this[G]||e,once:!1},o),o}}},e.repeat=function(e,t){if(!t||"function"!=typeof t.key||"function"!=typeof t.render)throw new TypeError("snice: repeat() requires { key, render }.");const n=null==e?[]:Array.from(e),o=n.map(t.key),r=new Set;for(const e of o){if(r.has(e))throw new Error(`snice: repeat() received duplicate key ${String(e)}.`);r.add(e)}return{_$repeat$:at,items:n,keys:o,values:n.map(t.render),empty:0===n.length?"function"==typeof t.empty?t.empty():t.empty:void 0}},e.request=function(e,t){return function(n,o){let s,i,a=0;const c=[];return async function(...o){const l=async()=>{const s=t?.timeout??12e4,i=t?.discoveryTimeout??50,a=n.apply(this,o),{value:c,done:l}=await a.next();if(l)return c;let h,u;const d=new Promise((e,t)=>{h=e,u=t});let f,m,p,y=!1;const g=new Promise((t,n)=>{f=t,m=n,p=setTimeout(()=>{n(new Error(`Request "${e}" found no @respond('${e}') handler within ${i}ms — attach a responding controller/element, or pass { optional: true } to resolve undefined when unhandled.`))},i)}),b=new CustomEvent(`@request/${e}`,{bubbles:void 0===t?.bubbles||t.bubbles,cancelable:t?.cancelable||!1,composed:!0,detail:{payload:c,discovery:{resolve:()=>{y=!0,clearTimeout(p),f()},reject:m},data:{resolve:h,reject:u}}});(!0===this[r]&&this.element?this.element:this).dispatchEvent(b);try{await g;const t=setTimeout(()=>{u(new Error(`Request "${e}" timed out after ${s}ms`))},s),n=await d;clearTimeout(t);const{value:o}=await a.next(n);return o}catch(e){if(t?.optional&&!y){const{value:e}=await a.next(void 0);return e}const{value:n}=await a.throw(e);return n}};if(t?.debounce)return new Promise((e,n)=>{clearTimeout(s),s=setTimeout(async()=>{try{e(await l())}catch(e){n(e)}},t.debounce)});if(!t?.throttle)return l();const h=Date.now(),u=t.throttle-(h-a);if(u<=0){clearTimeout(i),i=null,a=h;const e=c.splice(0),t=l();return e.length&&t.then(t=>{for(const n of e)n.resolve(t)},t=>{for(const n of e)n.reject(t)}),t}return new Promise(i?(e,t)=>{c.push({resolve:e,reject:t})}:(e,t)=>{c.push({resolve:e,reject:t}),i=setTimeout(async()=>{a=Date.now(),i=null;const e=c.splice(0);try{const t=await l();for(const n of e)n.resolve(t)}catch(t){for(const n of e)n.reject(t)}},u)})}}},e.resetOnce=function(e,t){e[Nn]&&(t?delete e[Nn][t]:e[Nn]={})},e.respond=function(e,t){return function(n,o){const r=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,ye)||(o[ye]=new Set),!o[ye].has(n)){if(o[ye].add(n),!Object.prototype.hasOwnProperty.call(o,i)){const e=o[i];o[i]=e?[...e]:[]}o[i].push({channelName:e,methodName:r,method:n,options:t})}})}},e.setDisableElementReadyWarnings=function(e){zn=e},e.setStrictRenderErrors=function(e){hn=e},e.state=function(e={}){return Ln({...e,attribute:!1,reflect:!1})},e.styleMap=function(e){const t=[];for(const n of Object.keys(e)){const o=e[n];if(null==o||!1===o)continue;const r=n.startsWith("--")?n:n.replace(/[A-Z]/g,e=>"-"+e.toLowerCase());t.push(`${r}: ${o}`)}return t.join("; ")},e.styles=function(){return function(e,t){return t.addInitializer(function(){this[Y]&&!this[ee]?this[ee]=[this[Y]]:this[Y]&&this[ee]&&this[ee].push(this[Y]),this[Y]=e}),e}},e.svg=function(e,...t){return{_$litType$:Ze,strings:e,values:t,svg:!0}},e.throttle=function(e=300,t={}){const{leading:n=!0,trailing:o=!0}=t;return function(t,r){const s=r.name;return function(...r){this[En]||(this[En]={});const i=this[En],a=s,c=Date.now();if(!i[a])return n&&t.apply(this,r),i[a]={lastInvoke:c,timeout:null,lastArgs:r},void(o&&!n&&(i[a].timeout=setTimeout(()=>{t.apply(this,i[a].lastArgs),delete i[a]},e)));const l=c-i[a].lastInvoke;if(i[a].lastArgs=r,i[a].timeout&&clearTimeout(i[a].timeout),l>=e)return t.apply(this,r),void(i[a].lastInvoke=c);o&&(i[a].timeout=setTimeout(()=>{t.apply(this,i[a].lastArgs),i[a].lastInvoke=Date.now(),i[a].timeout=null},e-l))}}},e.trackRenders=async function*(e){for(;;)await new Promise(t=>{e[X]||(e[X]=[]),e[X].push(t)}),yield},e.unlockBodyScroll=function(){0!==Kn&&(Kn--,0===Kn&&(document.body.style.overflow=Gn??"",Gn=null))},e.unsafeHTML=function(e){return{_$litType$:st,html:e}},e.useNativeElementControllers=an,e.waitForAllCustomElements=async function(e,t=500){const n=[];e instanceof Element&&(e.tagName.includes("-")&&n.push(e),e.shadowRoot)&&e.shadowRoot.querySelectorAll("*").forEach(e=>{e.tagName.includes("-")&&n.push(e)}),e instanceof DocumentFragment&&e.querySelectorAll("*").forEach(e=>{e.tagName.includes("-")&&n.push(e)}),await Promise.all(n.map(e=>Hn(e,t)))},e.waitForElementDefined=Un,e.waitForElementReady=Hn,e.watch=function(...e){const t=e.filter(e=>"string"==typeof e),n=e.find(e=>"object"==typeof e&&null!==e),o=!1!==n?.immediate;return function(e,n){const r=n.name;n.addInitializer(function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,fe)||(n[fe]=new Map);let s=n[fe].get(e);if(s||(s=new Set,n[fe].set(e,s)),!Object.prototype.hasOwnProperty.call(n,$)){const e=n[$],t=new Map;if(e)for(const[n,o]of e)t.set(n,[...o]);n[$]=t}for(const i of t)s.has(i)||(s.add(i),n[$].has(i)||n[$].set(i,[]),n[$].get(i).push({methodName:r,method:e,immediate:o}))})}},e}({});
1
+ var Snice=function(e){"use strict";globalThis.snice||(globalThis.snice={controllerRegistry:new Map,pendingControllerAttachments:new Map,controllerIdCounter:0}),globalThis.snice.pendingControllerAttachments??=new Map;const t=globalThis.snice;function n(e){return Symbol.for(`snice:${e}`)}const o=n("is-controller-class"),r=n("is-controller-instance"),s=n("is-daemon-class"),i=n("is-daemon-instance"),a=n("is-element-class"),c=n("channel-handlers"),l=n("daemon-state"),h=n("ready-promise"),u=n("ready-resolve"),d=n("rendered-promise"),f=n("rendered-resolve"),m=n("pending-reconnect-render"),p=n("render-depth"),y=n("render-root"),g=n("element-options"),v=n("controller"),b=n("initialized"),w=n("controller-key"),E=n("controller-name"),N=n("controller-id"),S=n("controller-operations"),T=n("native-controller"),A=n("direct-controller"),_=n("pending-controller-binding"),C=n("cleanup"),x=n("properties"),O=n("property-values"),k=n("property-defaults"),$=n("property-wrappers"),L=n("pre-init-property-values"),P=n("pre-upgrade-property-bindings"),j=n("properties-initialized"),M=n("property-watchers"),R=n("explicitly-set-properties"),I=n("router-context"),D=n("page-transition"),V=n("created-at"),q=n("ready-handlers"),B=n("dispose-handlers"),F=n("reconnect-handlers"),W=n("moved-handlers"),z=n("adopted-handlers"),U=n("observers"),H=n("setting-from-property"),K=n("moved-timers"),G=n("adopted-timers"),Q=n("dispatch-timers"),J=n("render-method"),X=n("render-options"),Y=n("render-instance"),Z=n("render-timers"),ee=n("render-callbacks"),te=n("styles-method"),ne=n("styles-applied"),oe=n("parent-styles-methods"),re=n("snice-element-base"),se=n("context-handler"),ie=n("navigation-context-instance"),ae=n("registered-elements"),ce=n("is-updating"),le=n("context-register"),he=n("context-unregister"),ue=n("context-notify-element"),de=n("context-timer"),fe=n("context-called"),me=n("context-update"),pe=n("context-methods"),ye=n("watch-methods"),ge=n("observe-methods"),ve=n("on-methods"),be=n("respond-methods"),we=n("ready-methods"),Ee=n("dispose-methods"),Ne=n("reconnect-methods"),Se=n("moved-methods"),Te=n("adopted-methods"),Ae=n("controller-abort"),_e=n("controller-attached"),Ce=n("property-definers");class xe{static{this.SEPARATOR=","}static serialize(e){return Array.isArray(e)?e.map(e=>{if("string"==typeof e){if(e.includes(xe.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${xe.SEPARATOR}" (U+FF0C)`);return e}if("number"==typeof e||"boolean"==typeof e)return String(e);throw new Error("SimpleArray only supports string, number, and boolean types. Got: "+typeof e)}).join(xe.SEPARATOR):""}static parse(e){return null==e||""===e?[]:e.split(xe.SEPARATOR).map(e=>{if(/^-?\d+\.?\d*$/.test(e)){const t=Number(e);if(!isNaN(t))return t}return"true"===e||"false"!==e&&e})}}var Oe,ke,$e;e.TransitionMode=void 0,function(e){e.SEQUENTIAL="sequential",e.SIMULTANEOUS="simultaneous"}(e.TransitionMode||(e.TransitionMode={}));const Le=Symbol.for("snice:registered-elements-set");let Pe=0;class je{constructor(e={},t=[],n="",o={},r){if(this[Oe]=new WeakMap,this[ke]=new Set,this[$e]=!1,this.id=Pe++,this.application=e,this.navigation={placards:t,route:n,params:o},r&&"function"==typeof r.create)this.fetch=r.create(this);else{if("function"!=typeof fetch)throw new Error("No fetch implementation available");this.fetch=fetch.bind(this)}}[(Oe=ae,ke=Le,$e=ce,le)](e,t){const n=this[ae];let o=n.get(e);o||(o=new Set,n.set(e,o)),o.add(t),this[Le].add(e)}[he](e,t){const n=this[ae];if(void 0!==t){const o=n.get(e);if(!o)return;if(o.delete(t),o.size>0)return}n.delete(e),this[Le].delete(e)}[me](e,t,n,o){this.application=e,this.navigation.placards=t,this.navigation.route=n,this.navigation.params=o,this.notify()}update(){this.notify()}notify(){if(this[ce])return;this[ce]=!0;const e=this[Le],t=this[ae];for(const n of e){const e=t.get(n);if(e)for(const t of e)if("function"==typeof n[t])try{n[t](this)}catch(e){console.error(`Error calling @context method ${t}:`,e)}}this[ce]=!1}[ue](e){const t=this[ae].get(e);if(t)for(const n of t)"function"==typeof e[n]&&e[n](this)}}function Me(e){if(null!=e)return"string"==typeof e?String:"number"==typeof e?Number:"boolean"==typeof e?Boolean:e instanceof Date?Date:"bigint"==typeof e?BigInt:Array.isArray(e)?Array:void 0}function Re(e,t,n,o){const r=t.type||Me(o);if(t.converter?.fromAttribute)return t.converter.fromAttribute(e,r);switch(r){case Boolean:return null!==e&&"false"!==e;case Number:return null!==e?Number(e):null;case String:return e;case Date:return e?new Date(e):null;case BigInt:return e&&e.endsWith("n")?BigInt(e.slice(0,-1)):e?BigInt(e):null;case xe:return xe.parse(e);case Array:try{return e?JSON.parse(e):[]}catch{return[]}case Object:try{return e?JSON.parse(e):{}}catch{return{}}default:return"number"==typeof n&&null!==e?Number(e):e}}function Ie(e,t){return e!==t&&(e==e||t==t)}function De(e,t){return"string"==typeof e.attribute?e.attribute.toLowerCase():!0===e.attribute||"kebab"===e.attributeNaming?t.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase():t.toLowerCase()}function Ve(e,t){return e[t]||(e[t]=new Set),e[t]}function qe(e,t){return e[t]||(e[t]={}),e[t]}function Be(e,t,n,o,r){const s=t[M];if(!s)return;const i=[n],a=t[x]?.get(n),c=a&&"string"==typeof a.attribute?a.attribute:null;c&&c!==n&&i.push(c);for(const t of i)if(s.has(t))for(const i of s.get(t))try{i.method.call(e,o,r,n)}catch(e){console.error(`Error in @watch('${t}') method ${i.methodName}:`,e)}if(s.has("*"))for(const t of s.get("*"))try{t.method.call(e,o,r,n)}catch(e){console.error(`Error in @watch('*') method ${t.methodName}:`,e)}}function Fe(e,t){let n=null;return function(...o){null!==n&&clearTimeout(n),n=setTimeout(()=>{e.apply(this,o),n=null},t)}}function We(e,t){let n=0,o=null;return function(...r){const s=Date.now(),i=t-(s-n);if(i<=0)return o&&(clearTimeout(o),o=null),n=s,e.apply(this,r);o||(o=setTimeout(()=>{n=Date.now(),o=null,e.apply(this,r)},i))}}function ze(e,t){if(null==t)return e;if("global"===t)return"undefined"!=typeof document?document:null;if("function"==typeof t)try{return t.call(e)||null}catch{return null}return"string"==typeof t?e.closest?.(t)||null:t&&"function"==typeof t.addEventListener?t:null}function Ue(e,t,n){if(null==e||!1===e||t?.type===xe&&Array.isArray(e)&&0===e.length)return null;if(t.converter?.toAttribute)return t.converter.toAttribute(e,t.type);switch(t.type||Me(n)){case Boolean:return"true";case Date:return e instanceof Date?e.toISOString():String(e);case BigInt:return"bigint"==typeof e?e.toString()+"n":String(e);case xe:return Array.isArray(e)?xe.serialize(e):String(e);case Array:return Array.isArray(e)?JSON.stringify(e):String(e);case Object:return"object"==typeof e&&null!==e?JSON.stringify(e):String(e);default:return String(e)}}const He=new WeakSet,Ke=new Map;function Ge(e,t){const n=e.constructor[U];if(n&&Array.isArray(n)&&0!==n.length){e[C]?e[C].observers||(e[C].observers=[]):e[C]={events:[],channels:[],observers:[]};for(const o of n){const n=o.method.bind(e),r=o.options?.throttle?We(n,o.options.throttle):n;switch(o.type){case"intersection":Qe(e,t,o,r);break;case"resize":Je(e,t,o,r);break;case"media":Xe(e,0,o,r);break;case"mutation":Ye(e,t,o,r);break;default:console.warn(`Unknown observer type: ${o.type}`)}}}}function Qe(e,t,n,o){const r={threshold:n.options?.threshold??0,rootMargin:n.options?.rootMargin??"0px",root:n.options?.root??null};if("undefined"==typeof IntersectionObserver)return void console.warn("IntersectionObserver is not available in this environment");const s=new IntersectionObserver(e=>{for(const t of e)try{!1===o(t)&&s&&s.unobserve(t.target)}catch(e){console.error(`Error in intersection observer ${n.methodName}:`,e)}},r),i=n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):[t];i.forEach(e=>s.observe(e)),e[C].observers.push(()=>{i.forEach(e=>s.unobserve(e)),0===s.takeRecords().length&&s.disconnect()})}function Je(e,t,n,o){const r=n.options?.box||"content-box";if("undefined"==typeof ResizeObserver)return void console.warn("ResizeObserver is not available in this environment");const s=new ResizeObserver(e=>{for(const t of e)try{o(t)}catch(e){console.error(`Error in resize observer ${n.methodName}:`,e)}});(n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):[t]).forEach(e=>{s.observe(e,{box:r})}),e[C].observers.push(()=>{s.disconnect()})}function Xe(e,t,n,o){const r=n.target;if(!r)return void console.warn("Media query observer requires a query string");let s=Ke.get(r);if(!s)try{s=window.matchMedia(r),Ke.set(r,s)}catch(e){return void console.error(`Invalid media query: ${r}`,e)}const i=e=>{try{o(e.matches)}catch(e){console.error(`Error in media query observer ${n.methodName}:`,e)}};i(s);const a=e=>i(e);s.addEventListener?(s.addEventListener("change",a),e[C].observers.push(()=>{s.removeEventListener("change",a)})):(s.addListener(a),e[C].observers.push(()=>{s.removeListener(a)}))}function Ye(e,t,n,o){const s=n.target.split(":"),i=s[0]||"childList",a=s[1],c={};switch(i){case"childList":c.childList=!0;break;case"attributes":c.attributes=!0,a&&(c.attributeFilter=[a]);break;default:return void(/^[.#[]/.test(i)?console.warn(`@observe: "mutation:${i}" — "${i}" looks like a selector. Selectors are the second argument — did you mean @observe('mutation:childList', '${i}')?`):console.warn(`Unknown mutation type: ${i} (expected childList or attributes)`))}n.options?.subtree&&(c.subtree=!0,n.options.maxDepth&&console.warn("maxDepth is set but requires custom implementation"));const l=!(!n.options?.maxDepth||!n.options.subtree),h=new MutationObserver(e=>{try{if(!l)return void o(e);const r=n.options.maxDepth,s=t.shadowRoot||t,i=e.filter(e=>{let t=0,n=e.target;for(;n&&n!==s&&t<r;)n=n.parentNode,t++;return t<r});i.length>0&&o(i)}catch(e){console.error(`Error in mutation observer ${n.methodName}:`,e)}}),u=!0===e[r];(n.selector?Array.from(t.shadowRoot?.querySelectorAll(n.selector)||[]):u&&t.shadowRoot?[t.shadowRoot]:[t]).forEach(e=>{h.observe(e,c)}),e[C].observers.push(()=>{h.disconnect()})}function Ze(e){if(e[C]?.observers){for(const t of e[C].observers)t();e[C].observers=[]}}const et="@context/request",tt=new WeakMap;function nt(e){if(!e||"object"!=typeof e&&"function"!=typeof e)return;const t=function(e){return!e||"object"!=typeof e&&"function"!=typeof e?null:!0===e[r]?e.element&&"function"==typeof e.element.dispatchEvent?e.element:null:"function"==typeof e.dispatchEvent?e:null}(e);if(t){const e={};if(t.dispatchEvent(new CustomEvent(et,{bubbles:!0,composed:!0,cancelable:!0,detail:e})),void 0!==e.context)return e.context}const n=e;return void 0!==n[I]?n[I]:!0===n[r]&&void 0!==n.element?.[I]?n.element[I]:void 0}function ot(e){return!!e&&("object"==typeof e||"function"==typeof e)&&!0===e[s]}function rt(e){if(!ot(e))throw new TypeError("Application contexts may provide only instances of @daemon classes.");let t=e[l];if(!t){t={target:new EventTarget,bindings:0,active:!1};try{Object.defineProperty(e,l,{value:t,configurable:!0}),Object.defineProperty(e,i,{value:!0,configurable:!0})}catch{throw new TypeError("@daemon instances must remain extensible until they are provided to an app context.")}}return t}function st(e,t){if("string"!=typeof t||!t.trim())throw new TypeError("Daemon addresses must be non-empty strings.");const n=nt(e);if(!n)throw new Error(`[snice] ${function(e){const t=e;return!0===t?.[r]?"controller":ot(t)?"@daemon instance":"element"}(e)} cannot resolve daemon "${t}" because no app context is provided.`);const o=n.daemons?.[t];if(!o)throw new Error(`[snice] app context does not provide daemon "${t}".`);if(!ot(o))throw new TypeError(`[snice] app context entry "${t}" is not an instance of an @daemon class.`);const s=rt(o);if(!s.active)throw new Error(`[snice] daemon "${t}" is not active because its app context has not been provided.`);return s.target}function it(e){return ot(e)?function(e){return rt(e).target}(e):!0===e?.[r]?e.element&&"function"==typeof e.element.dispatchEvent?e.element:null:e&&"function"==typeof e.dispatchEvent?e:null}function at(e,t){const n=e.constructor[c];if(n){e[C]||(e[C]={events:[],channels:[]});for(const o of n){const n=o.method.bind(e),r=`@request/${o.channelName}`;let s,i,a=0;const c=[];let l=null;const h=(e=>o.options?.debounce?(...t)=>new Promise((n,r)=>{clearTimeout(s),s=setTimeout(async()=>{try{n(await e(...t))}catch(e){r(e)}},o.options.debounce)}):o.options?.throttle?(...t)=>{const n=Date.now(),r=o.options.throttle-(n-a);if(r<=0){clearTimeout(i),i=null,a=n;const o=c.splice(0);l=null;const r=e(...t);return o.length&&Promise.resolve(r).then(e=>{for(const t of o)t.resolve(e)},e=>{for(const t of o)t.reject(e)}),r}return l=t,new Promise((n,o)=>{c.push({resolve:n,reject:o}),i||(i=setTimeout(async()=>{a=Date.now(),i=null;const n=c.splice(0),o=l??t;l=null;try{const t=await e(...o);for(const e of n)e.resolve(t)}catch(e){for(const t of n)t.reject(e)}},r))})}:e)(n),u=e=>{const{data:t,discovery:n,payload:r}=e.detail;e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation(),n.resolve(),Promise.resolve(h(r)).then(e=>{t.resolve(e)}).catch(e=>{t.reject(e),console.error(`Error in response handler ${o.methodName}:`,e)})};let d=t;if(void 0!==o.options?.daemon)try{d=st(e,o.options.daemon)}catch(e){console.warn(`[snice/@respond] ${e.message} Responder "${o.channelName}" skipped.`);continue}d.addEventListener(r,u),e[C].channels.push(()=>{d.removeEventListener(r,u)})}}}function ct(e){if(e[C]?.channels){for(const t of e[C].channels)t();e[C].channels=[]}}const lt=new Set(["once","prevent","preventdefault","stop","stoppropagation","capture","passive"]);function ht(e){const t=e.lastIndexOf(".");if(t<0)return;const n=e.slice(t+1).toLowerCase();lt.has(n)&&console.warn(`snice: "@${e}" is not a valid modifier — once/preventDefault/stopPropagation/capture are @on() options, not template modifiers. This registers a listener for event "${e}", which never fires.`)}function ut(e){const t=e.startsWith("~");t&&(e=e.substring(1));const n=e.split("+"),o={key:"",anyModifiers:t};for(const e of n){const t=e.toLowerCase();"ctrl"===t||"control"===t?o.ctrl=!0:"alt"===t?o.alt=!0:"shift"===t?o.shift=!0:"meta"===t||"cmd"===t||"command"===t?o.meta=!0:o.key=dt(e)}return o}function dt(e){return{esc:"Escape",escape:"Escape",enter:"Enter",return:"Enter",space:" ",spacebar:" ",up:"ArrowUp",down:"ArrowDown",left:"ArrowLeft",right:"ArrowRight",arrowup:"ArrowUp",arrowdown:"ArrowDown",arrowleft:"ArrowLeft",arrowright:"ArrowRight",delete:"Delete",del:"Delete",backspace:"Backspace",tab:"Tab",home:"Home",end:"End",pageup:"PageUp",pagedown:"PageDown"}[e.toLowerCase()]||e}function ft(e,t){return e.key===t.key&&(!!t.anyModifiers||(t.ctrl?e.ctrlKey:!e.ctrlKey)&&(t.alt?e.altKey:!e.altKey)&&(t.shift?e.shiftKey:!e.shiftKey)&&(t.meta?e.metaKey:!e.metaKey))}const mt=n("on-handlers");function pt(e,t){let n=0;return function(...o){const r=Date.now();r-n>=t&&(n=r,e.apply(this,o))}}const yt=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function gt(e,t){const n=e.constructor[mt];if(n&&Array.isArray(n)&&0!==n.length){e[C]?e[C].events?e[C].events.length>0&&vt(e):e[C].events=[]:e[C]={events:[],channels:[],observers:[]};for(const o of n){const n=e[o.methodName];let r=n?n.bind(e):o.method.bind(e);const s=o.options||{},i=["keydown","keyup","keypress"].includes(o.eventName.split(".")[0].split(":")[0]),a=i?o.eventName.indexOf("."):-1,c=i?o.eventName.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c),h=l>0?o.eventName.substring(0,l):o.eventName,u=l>0?o.eventName.substring(l+1):null;l<=0&&ht(o.eventName),s.debounce&&s.debounce>0?r=Fe(r,s.debounce):s.throttle&&s.throttle>0&&(r=pt(r,s.throttle));let d=null;u&&["keydown","keyup","keypress"].includes(h)&&(d=ut(u));const f=(e=>d?t=>{ft(t,d)&&e(t)}:e)(r),m=void 0!==s.scope,p=void 0!==s.daemon;if(m&&p){console.warn(`[snice/@on] "${o.eventName}" cannot use both scope and daemon — listener skipped.`);continue}if((p||ot(e))&&o.selector){console.warn(`[snice/@on] "${o.eventName}" cannot delegate "${o.selector}" on a daemon target — listener skipped.`);continue}const y=m||p;let g=null;if(p)try{g=st(e,s.daemon)}catch(e){console.warn(`[snice/@on] ${e.message} Listener "${o.eventName}" skipped.`);continue}else if(m&&(g=ze(t,s.scope),!g)){console.warn(`[snice/@on] scope did not resolve for "${o.eventName}" on ${o.methodName} — listener skipped.`);continue}if(o.selector){const n=y?g:t.shadowRoot||t,r=e=>{const t=e.target;if(t.matches&&t.matches(o.selector)&&t||t.closest&&t.closest(o.selector)){s.preventDefault&&e.preventDefault(),s.stopPropagation&&(e.stopPropagation(),e.stopImmediatePropagation());try{f(e)}catch(e){console.error(`Error in event handler ${o.methodName}:`,e)}}},i=yt.has(h),a={capture:void 0!==s.capture?s.capture:i,once:s.once||!1,passive:s.passive||!1};n.addEventListener(h,r,a),e[C].events.push({target:n,eventName:h,handler:r,options:a})}else{const n=y?null:t.shadowRoot,r=Symbol(),i=e=>{if(!e[r]){e[r]=!0,s.preventDefault&&e.preventDefault(),s.stopPropagation&&e.stopPropagation();try{f(e)}catch(e){console.error(`Error in event handler ${o.methodName}:`,e)}}},a={capture:s.capture||!1,once:s.once||!1,passive:s.passive||!1};if(y){g.addEventListener(h,i,a),e[C].events.push({target:g,eventName:h,handler:i,options:a});continue}n&&(n.addEventListener(h,i,a),e[C].events.push({target:n,eventName:h,handler:i,options:a})),t.addEventListener(h,i,a),e[C].events.push({target:t,eventName:h,handler:i,options:a})}}}}function vt(e){if(e[C]?.events){for(const{target:t,eventName:n,handler:o,options:r}of e[C].events)t.removeEventListener(n,o,r);e[C].events=[]}}class bt{constructor(){this.cleanupFns=new Map,this.pendingOperations=new Set}register(e,t){this.cleanupFns.set(e,t)}unregister(e){this.cleanupFns.delete(e)}async cleanup(){await Promise.all(this.pendingOperations);for(const e of this.cleanupFns.values())try{await e()}catch(e){console.error("Error during cleanup:",e)}this.cleanupFns.clear()}async runOperation(e){const t=e(),n=t.then(()=>{},()=>{});this.pendingOperations.add(n);try{const e=await t;return this.pendingOperations.delete(n),e}catch(e){throw this.pendingOperations.delete(n),e}}}function wt(e,n){if(t.controllerRegistry.has(n))return void queueMicrotask(()=>{const t=e[T];(void 0===t?e[v]:t)===n&&Nt(e,n).catch(e=>{"ControllerAttachAborted"!==e?.name&&console.error(`Failed to attach controller "${n}":`,e)})});let o=t.pendingControllerAttachments.get(n);o||(o=new Set,t.pendingControllerAttachments.set(n,o)),o.add(e),queueMicrotask(()=>{t.pendingControllerAttachments.get(n)?.has(e)&&console.error(`Failed to attach controller "${n}":`,new Error(`Controller "${n}" not found in registry`))})}function Et(e){return"string"==typeof e?e:e?.name||"(anonymous controller class)"}async function Nt(e,n){if("string"!=typeof n){if("function"!=typeof n)throw new Error(`attachController: expected a controller name or a controller class, got ${typeof n}. Controller instances are not supported — pass the class itself.`);if("function"!=typeof(s=n)||!0!==s.prototype?.[o])throw new Error(`Controller class "${Et(n)}" must be decorated with @controller('name') before it can be attached.`)}var s;const i=Et(n),a=e[w],c=e[T];if("string"==typeof n&&void 0!==c&&c!==n)return;if(e[E]===n&&a)return;let l;if(a&&await St(e),"string"==typeof n){const e=globalThis.snice?.controllerRegistry;if(!e)throw new Error("Snice global registry not initialized");if(l=e.get(n),!l)throw new Error(`Controller "${n}" not found in registry`)}else l=n,e[A]=!0,delete e[T];const h=new l;t.controllerIdCounter+=1;const u=t.controllerIdCounter,d=new bt;h[r]=!0,h[N]=u,h.element=e;const f=e[I];void 0!==f&&(h[I]=f),e[w]=h,e[E]=n,e[S]=d;const m=new AbortController;e[Ae]=m;try{await Promise.race([e.ready,new Promise((e,t)=>{const n=()=>{const e=new Error(`attachController("${i}"): aborted before element was ready (likely detached or never connected)`);e.name="ControllerAttachAborted",t(e)};if(m.signal.aborted)return n();m.signal.addEventListener("abort",n,{once:!0});const o=setTimeout(()=>t(new Error(`attachController("${i}"): element did not become ready within 30000ms (did you forget to appendChild it?)`)),3e4);m.signal.addEventListener("abort",()=>clearTimeout(o),{once:!0})})])}catch(t){throw e[w]===h&&(delete e[w],delete e[E],delete e[S],"string"!=typeof n&&delete e[A]),t}finally{e[Ae]===m&&delete e[Ae]}h[_e]=!0,await d.runOperation(async()=>{await h.attach(e)}),Ge(h,e),at(h,e),gt(h,e),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:i,controller:h}}))}async function St(e){const t=e[Ae];t&&t.abort();const n=e[w],o=e[E],r=e[S];n&&(delete e[w],delete e[E],delete e[S],"function"==typeof o&&delete e[A],n[_e]&&(r?await r.runOperation(async()=>{await n.detach(e)}):await n.detach(e),n.element=null,Ze(n),ct(n),vt(n),r&&await r.cleanup(),delete n[I],e.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:void 0===o?void 0:Et(o),controller:n}}))))}function Tt(){if(globalThis.sniceNativeControllersInitialized)return;function e(e){if(!(e instanceof HTMLElement))return;if(!e.tagName||e.tagName.includes("-"))return;if(e[a])return;if(e[A])return;const t=e.getAttribute("controller"),n=e[T];if(t!==n&&(t||void 0!==n)){if(!t)return delete e[T],delete e[E],void St(e).catch(e=>{console.error("Failed to detach controller from native element:",e)});e[T]=t,e.ready||(e.ready=Promise.resolve()),n&&St(e).catch(e=>{console.error("Failed to detach old controller from native element:",e)}),Nt(e,t).catch(n=>{"ControllerAttachAborted"!==n?.name?n?.message!==`Controller "${t}" not found in registry`?console.error(`Failed to attach controller "${t}" to native element:`,n):wt(e,t):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}}globalThis.sniceNativeControllersInitialized=!0;const t=new MutationObserver(t=>{for(const n of t)"attributes"===n.type&&"controller"===n.attributeName?e(n.target):"childList"===n.type&&n.addedNodes.forEach(t=>{t instanceof HTMLElement&&(e(t),t.querySelectorAll("[controller]").forEach(e))})});function n(){document.querySelectorAll("[controller]").forEach(e),t.observe(document.body,{attributes:!0,attributeFilter:["controller"],childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n(),globalThis.sniceNativeControllerObserver=t}const At=n("context-handlers");function _t(e){const t=e.constructor[At];if(!t||!Array.isArray(t)||0===t.length)return;const n=e[se];if(n){e[ie]=n;for(const o of t){const{methodName:t,method:r,options:s}=o,i=`__wrapped_${t}`;e[i]=function(n){const o=e[fe]||(e[fe]=new Set);if(s.once&&o.has(t))return;const a=()=>{if(r.call(e,n),s.once){o.add(t);const n=e[ie];n&&"function"==typeof n[he]&&n[he](e,i)}},c=e[de]||(e[de]={}),l=t;if(s.debounce)return clearTimeout(c[l]?.timeout),void(c[l]={timeout:setTimeout(a,s.debounce)});if(s.throttle){const e=Date.now();return void(e-(c[l]?.lastCall||0)>=s.throttle&&(c[l]={lastCall:e},a()))}a()},"function"==typeof n[le]&&n[le](e,i)}}}const Ct=Symbol.for("snice:html-result"),xt=Symbol.for("snice:css-result"),Ot=new WeakMap;function kt(e){return e&&e._$litType$===Ct}function $t(e){return e&&e._$litType$===xt}const Lt=Symbol.for("snice:nothing"),Pt=Symbol.for("snice:unsafe-html");function jt(e){return e&&e._$litType$===Pt}const Mt=Symbol.for("snice:repeat-result"),Rt=new WeakSet;function It(e){return e[y]||e.shadowRoot||null}function Dt(e){const t=It(e);if(t)return t;const n=e.constructor[g];let o;if(o="light"===n?.renderRoot||!1===n?.shadow?e:"function"==typeof e.createRenderRoot?e.createRenderRoot():e.attachShadow({mode:"string"==typeof n?.shadow?n.shadow:"open",delegatesFocus:n?.delegatesFocus}),o!==e&&!(o instanceof ShadowRoot))throw new TypeError("snice: createRenderRoot() must return the host element or a ShadowRoot.");return e[y]=o,Rt.add(e),o}function Vt(e){const t=e.getRootNode();if(t instanceof ShadowRoot)return t.host;let n=e;for(;n;){if(n instanceof HTMLElement&&Rt.has(n))return n;n=n.parentNode}return null}const qt=`snice$${Math.random().toFixed(9).slice(2)}$`,Bt="?"+qt,Ft=`\x3c!--${Bt}--\x3e`,Wt=new RegExp(qt.replace(/\$/g,"\\$"),"g"),zt=new WeakMap,Ut=Symbol("not-committed");function Ht(e,t){const n=e.localName;if(!n?.includes("-"))return;const o=e.ownerDocument?.defaultView?.customElements??globalThis.customElements;if(o?.get(n))return;const r=e;r[P]||(r[P]=new Set),r[P].add(t)}const Kt=Symbol.for("snice:no-change"),Gt=Symbol.for("snice:live"),Qt=e=>null===e||"object"!=typeof e&&"function"!=typeof e,Jt=e=>!!e&&"function"==typeof e[Symbol.asyncIterator];class Xt{constructor(e,t,n){this.parts=[],this.keyIndex=-1,this.element=t;const o=document.createTreeWalker(t.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_TEXT);let r=0;const s=[];let i;for(;null!==(i=o.nextNode());)if(i.nodeType===Node.ELEMENT_NODE){const e=i,t=e.tagName.toLowerCase(),o=e.parentElement?.tagName.toLowerCase();if(("else"===t||"else-if"===t)&&"if"!==o)throw new Error(`snice: <${t}> must be a direct child of <if>.`);if(("when"===t||"default"===t)&&"case"!==o)throw new Error(`snice: <${t}> must be a direct child of <case>.`);if("if"===t){const t=e.getAttribute("value");if(!t||!t.includes(qt))throw new Error("snice: <if> requires a condition expression.");e.removeAttribute("value"),this.parts.push({type:"conditional-if",index:r++,element:e});continue}if("case"===t){const t=e.getAttribute("value");if(!t||!t.includes(qt))throw new Error("snice: <case> requires a value expression.");for(const t of Array.from(e.childNodes))if(t.nodeType===Node.ELEMENT_NODE){const e=t.tagName.toLowerCase();if("when"!==e&&"default"!==e)throw new Error("snice: <case> may contain only direct <when> and <default> branches.")}else if(t.nodeType===Node.TEXT_NODE&&t.textContent?.trim()||t.nodeType===Node.COMMENT_NODE&&t.data.includes(qt))throw new Error("snice: content inside <case> must be nested in a <when> or <default> branch.");e.removeAttribute("value"),this.parts.push({type:"conditional-case",index:r++,element:e});continue}if("else-if"===t){const t=e.getAttribute("value");if(!t||!t.includes(qt))throw new Error("snice: <else-if> requires a condition expression.");e.removeAttribute("value"),this.parts.push({type:"conditional-else-if",index:r++,element:e});continue}if("when"===t){const t=e.getAttribute("value");t&&t.includes(qt)&&(e.removeAttribute("value"),this.parts.push({type:"conditional-when",index:r++,element:e}));continue}if(e.hasAttributes()){const t=e.attributes,o=[];for(let s=0;s<t.length;s++){const i=t[s],a=i.value;if(a.includes(qt)){o.push(i);const t=n[r]||i.name,s=a.split(qt),c=s.length-1;if(/^@@?|^[.?]/.test(t)||t.startsWith("...")||t.startsWith("class:")||t.startsWith("style:")){const e=s.some(e=>""!==e);(c>1||e)&&console.warn(`snice: binding "${t}" takes a single expression; static text and extra interpolations are ignored. Use a plain attribute for string interpolation.`)}if(t.startsWith("...")){const n=t.slice(3).toLowerCase();if(!["props","properties","attrs","attributes","events"].includes(n))throw new Error(`snice: unknown spread binding "${t}". Use ...props, ...attrs, or ...events.`);this.parts.push({type:"spread",index:r,name:n,element:e}),r+=c}else if(t.startsWith("class:")){if(!t.slice(6))throw new Error("snice: class: binding requires a class name.");this.parts.push({type:"class",index:r,name:t.slice(6),element:e}),r+=c}else if(t.startsWith("style:")){if(!t.slice(6))throw new Error("snice: style: binding requires a CSS property name.");this.parts.push({type:"style",index:r,name:t.slice(6),element:e}),r+=c}else if(t.startsWith("@@")){if(!t.slice(2).split("|")[0])throw new Error("snice: event binding requires an event name.");this.parts.push({type:"event",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith("@")){if(!t.slice(1).split("|")[0])throw new Error("snice: event binding requires an event name.");this.parts.push({type:"event",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith(".")){if(!t.slice(1))throw new Error("snice: property binding requires a property name.");this.parts.push({type:"property",index:r,name:t.slice(1),element:e}),r+=c}else if(t.startsWith("?")){if(!t.slice(1))throw new Error("snice: boolean binding requires an attribute name.");this.parts.push({type:"boolean-attribute",index:r,name:t.slice(1),element:e}),r+=c}else"controller"===i.name&&2===s.length&&""===s[0]&&""===s[1]?(this.parts.push({type:"controller",index:r,element:e}),r+=c):(this.parts.push({type:"attribute",index:r,name:i.name,element:e,attrStrings:s}),r+=c)}}for(const t of o)e.removeAttribute(t.name)}}else if(i.nodeType===Node.COMMENT_NODE){const e=i;if(e.data===Bt){const t=e.parentNode,n=document.createComment("");t.insertBefore(n,e.nextSibling),this.parts.push({type:"node",index:r++,startNode:e,endNode:n})}else if(e.data.includes(qt)){const t=e.data.split(Wt);this.parts.push({type:"comment",index:r,startNode:e,attrStrings:t}),r+=t.length-1}}else if(i.nodeType===Node.TEXT_NODE){const e=i,t=e.data;if(t.includes(qt)){const n=e.parentNode,o=t.split(Wt),i=o.length-1;for(let t=0;t<i;t++){n.insertBefore(document.createTextNode(o[t]),e);const s=document.createComment(""),i=document.createComment("");n.insertBefore(s,e),n.insertBefore(i,e),this.parts.push({type:"node",index:r++,startNode:s,endNode:i})}""!==o[i]?e.data=o[i]:s.push(e)}}for(const e of s)e.parentNode?.removeChild(e);for(const e of this.parts)if("attribute"===e.type&&"key"===e.name){this.keyIndex=e.index;break}}}function Yt(e){const{strings:t}=e,n=zt.get(t);if(n)return n;const o=[],r=[];let s=!1,i=!1,a=!1,c="",l="";for(let e=0;e<t.length;e++){const n=t[e];if(o.push(n),e<t.length-1){for(let e=0;e<n.length;e++){const t=n[e];if(a)"-"===t&&n.startsWith("--\x3e",e)&&(a=!1,e+=2);else if(s){if(i)t===c&&(i=!1,c="");else if(">"===t)s=!1;else if('"'===t||"'"===t)i=!0,c=t;else if("="===t){let t=e-1;for(;t>=0&&/[\w\-\.@\?/:\+~|]/.test(n[t]);)t--;l=n.substring(t+1,e).trim()}}else"<"===t&&(n.startsWith("\x3c!--",e)?(a=!0,e+=3):/[A-Za-z!/?]/.test(n[e+1]||"")&&(s=!0))}if(a)r.push(""),o.push(qt);else if(i)r.push(l),o.push(qt);else if(s){const e=n.trimEnd();if(e.endsWith("=")){let t=e.length-2;for(;t>=0&&/[\w\-\.@\?\/:\+~|]/.test(e[t]);)t--;l=e.substring(t+1,e.length-1).trim(),r.push(l),o.push(qt)}else{if(!n.match(/<(if|else-if|case|when)\s*$/))throw new Error("snice: expressions directly in opening tags are not supported; use an explicit attribute, property, event, class, style, or named spread binding.");l="value",r.push("value"),o.push(`value="${qt}"`)}}else r.push(""),o.push(Ft)}}const h=o.join(""),u=document.createElement("template");if(e.svg){u.innerHTML=`<svg>${h}</svg>`;const e=u.content.firstElementChild;for(;e.firstChild;)u.content.insertBefore(e.firstChild,e);u.content.removeChild(e)}else u.innerHTML=h;const d=new Xt(e,u,r);return zt.set(t,d),d}function Zt(e){if(!kt(e))return;const t=Yt(e);return-1===t.keyIndex?void 0:e.values[t.keyIndex]}class en{constructor(e){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=Yt(e),this.strings=e.strings}isSameTemplate(e){return this.strings===e}renderFragment(){if(!this.fragment){this.fragment=this.template.element.content.cloneNode(!0);const e=document.createTreeWalker(this.template.element.content,NodeFilter.SHOW_ALL),t=document.createTreeWalker(this.fragment,NodeFilter.SHOW_ALL),n=new Map;let o=e.currentNode,r=t.currentNode;for(;o&&r;)n.set(o,r),o=e.nextNode(),r=t.nextNode();const s=new Set;for(const e of this.template.parts)"conditional-when"===e.type&&s.add(n.get(e.element));for(let e=0;e<this.template.parts.length;e++){const t=this.template.parts[e];let o;switch(t.type){case"node":const e=n.get(t.startNode),r=n.get(t.endNode);o=new nn(e,r);break;case"attribute":const i=n.get(t.element);o=new on(i,t.name,t.attrStrings);break;case"property":const a=n.get(t.element);o=new ln(a,t.name);break;case"boolean-attribute":const c=n.get(t.element);o=new un(c,t.name);break;case"event":const l=n.get(t.element);o=new dn(l,t.name);break;case"class":const h=n.get(t.element);o=new sn(h,t.name);break;case"style":const u=n.get(t.element);o=new an(u,t.name);break;case"spread":const d=n.get(t.element);o=new cn(d,t.name);break;case"controller":const f=n.get(t.element);o=new hn(f);break;case"conditional-if":const m=n.get(t.element);o=new mn(m);break;case"conditional-else-if":const p=n.get(t.element);o=new yn(p);break;case"conditional-case":const y=n.get(t.element);o=new gn(y,s);break;case"conditional-when":const g=n.get(t.element);o=new bn(g);break;case"comment":const v=n.get(t.startNode);o=new rn(v,t.attrStrings);break;default:throw new Error(`Unknown part type: ${t.type}`)}this.parts.push(o),o instanceof mn||o instanceof yn||o instanceof gn||o instanceof bn?this.conditionalParts.push({part:o,index:t.index}):this.regularParts.push({part:o,index:t.index})}}return this.fragment}render(e){const t=this.renderFragment();return this.update(e),t}update(e){for(const{part:t,index:n}of this.conditionalParts)t.commit(e[n]);const t=new Set;for(const{part:e}of this.conditionalParts){const n=e instanceof yn||e instanceof bn?e.coordinator:e;t.has(n)||(t.add(n),(n instanceof mn||n instanceof gn)&&n.flush())}for(const{part:t,index:n}of this.regularParts)t instanceof on&&void 0!==t.strings||t instanceof rn?t.commit(e,n):t.commit(e[n]);let n;for(const e of this.parts)try{e.isConnected?e.reconnected():e.disconnected()}catch(e){n??=e}if(n)throw n}clear(){let e;for(const t of this.parts)try{t.destroy()}catch(t){e??=t}if(e)throw e}disconnected(e=!1){let t;for(const n of this.parts)try{n.disconnected(e)}catch(e){t??=e}if(t)throw t}reconnected(){let e;for(const t of this.parts)try{t.reconnected()}catch(t){e??=t}if(e)throw e}}class tn{get isConnected(){return this.element?.isConnected??!1}disconnected(e=!1){}reconnected(){}destroy(){let e;try{this.clear()}catch(t){e=t}if(e)throw e}}class nn extends tn{constructor(e,t){super(),this.type="node",this._committedValue=Ut,this._itemKeys=null,this._asyncSource=null,this._asyncVersion=0,this._asyncIterator=null,this._asyncRunning=!1,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1,this._committingAsyncValue=!1,this.startNode=e,this.endNode=t}commit(e){if(e!==Kt)if((e=>!!e&&"function"==typeof e.then)(e)||Jt(e))this._commitAsync(e);else if(!this._committingAsyncValue&&this._asyncSource&&this._cancelAsync(!0),e!==Lt&&null!=e&&""!==e)Qt(e)?e!==this._committedValue&&this._commitText(e):kt(e)?this._commitTemplateResult(e):function(e){return!!e&&e._$repeat$===Mt}(e)?0===e.values.length?this.commit(e.empty??Lt):this._commitIterable(e.values,e.keys):jt(e)?this._commitUnsafeHTML(e):void 0===e.nodeType?(e=>Array.isArray(e)||"function"==typeof e?.[Symbol.iterator])(e)?this._commitIterable(e):this._commitText(e):this._commitNode(e);else{if(this._committedValue!==Lt){const e=this._clear();if(this._committedValue=Lt,e)throw e}this._committedValue=Lt}}_commitText(e){if(this._committedValue!==Ut&&this._committedValue!==Lt&&Qt(this._committedValue)&&!Array.isArray(this._committedValue)){const t=this.startNode.nextSibling;if(t&&t.nodeType===Node.TEXT_NODE)return t.data=String(e),void(this._committedValue=e)}const t=this._clear();if(this._insertBefore(document.createTextNode(String(e))),this._committedValue=e,t)throw t}_commitTemplateResult(e){const t=this._committedValue;if(t instanceof en){const n=zt.get(e.strings);if(n&&t.template===n)return void t.update(e.values)}const n=new en(e),o=n.renderFragment();try{n.update(e.values)}catch(e){throw n.clear(),e}const r=this._committedValue,s=this._itemKeys,i=this.endNode.ownerDocument.createDocumentFragment();let a=this.startNode.nextSibling;for(;a&&a!==this.endNode;){const e=a.nextSibling;i.appendChild(a),a=e}this._insertBefore(o),this._committedValue=n,this._itemKeys=null;try{this.isConnected&&n.reconnected()}catch(e){try{n.clear()}catch(e){console.error("snice: failed to clean up a rejected nested template:",e)}let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;t.remove(),t=e}throw this._insertBefore(i),this._committedValue=r,this._itemKeys=s,e}this._disposeCommitted(r)}_commitIterable(e,t){const n=Array.isArray(e)?e:Array.from(e),o=t?Array.from(t):n.map(Zt);if(o.length!==n.length)throw new Error("snice: keyed iterable produced a different number of keys and values.");const r=o.filter(e=>void 0!==e);if(r.length>0&&r.length!==o.length&&console.warn("snice: a list mixes keyed and unkeyed items. Identity falls back to position; use repeat(items, { key, render }) for deterministic updates."),r.length>0&&new Set(r).size!==r.length)throw new Error("snice: a keyed list contains duplicate keys.");let s;Array.isArray(this._committedValue)&&this._committedValue[0]instanceof nn||(s=this._clear(),this._committedValue=[],this._itemKeys=null);const i=n.length>0&&o.every(e=>void 0!==e),a=this._itemKeys;if(i&&a&&this._committedValue.length>0&&(a.length!==o.length||!o.every((e,t)=>e===a[t]))){if(s??=this._reconcileKeyed(n,o,this._committedValue,a),this._itemKeys=o,s)throw s;return}const c=this._committedValue;let l=0;for(const e of n){let t;if(l>=c.length){const e=document.createComment(""),n=document.createComment("");this._insertBefore(e),this._insertBefore(n),t=new nn(e,n),c.push(t)}else t=c[l];t.commit(e),l++}if(l<c.length){for(let e=l;e<c.length;e++){const t=c[e];try{t.destroy()}catch(e){s??=e}t.startNode.remove(),t.endNode.remove()}c.length=l}if(this._itemKeys=i?o:null,s)throw s}_reconcileKeyed(e,t,n,o){const r=this.endNode.parentNode;let s;const i=new Map;for(let e=0;e<n.length;e++)i.has(o[e])||i.set(o[e],n[e]);const a=new Set,c=new Array(e.length).fill(null);for(let n=0;n<e.length;n++){const e=i.get(t[n]);e&&!a.has(e)&&(a.add(e),c[n]=e)}for(const e of n)if(!a.has(e)){try{e.destroy()}catch(e){s??=e}e.startNode.remove(),e.endNode.remove()}let l=this.startNode.nextSibling;for(let t=0;t<c.length;t++){let n=c[t];if(n)if(n.startNode===l)l=n.endNode.nextSibling;else{const e=document.createDocumentFragment();let t=n.startNode;const o=n.endNode.nextSibling;for(;t&&t!==o;){const n=t.nextSibling;e.appendChild(t),t=n}r.insertBefore(e,l)}else{const e=document.createComment(""),o=document.createComment("");r.insertBefore(e,l),r.insertBefore(o,l),n=new nn(e,o),c[t]=n}n.commit(e[t])}return this._committedValue=c,s}_commitNode(e){if(this._committedValue!==e){const t=this._clear();if(this._insertBefore(e),this._committedValue=e,t)throw t}}_commitUnsafeHTML(e){const t=this._committedValue;if(jt(t)&&t.html===e.html)return;const n=this._clear(),o=document.createElement("template");if(o.innerHTML=e.html,this._insertBefore(o.content),this._committedValue=e,n)throw n}_commitAsync(e){if(e===this._asyncSource)return;this._cancelAsync(!1),this._asyncSource=e,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1;const t=this._clear();if(this._committedValue=Lt,this._startAsyncSource(),t)throw t}_startAsyncSource(e=!1){const t=this._asyncSource;if(!t||this._asyncRunning||this._asyncCompleted||!e&&!this.isConnected)return;this._asyncRunning=!0,this._asyncStarted=!0,this._asyncPaused=!1;const n=++this._asyncVersion;if(Jt(t)){try{this._asyncIterator=t[Symbol.asyncIterator]()}catch(e){return this._asyncRunning=!1,this._asyncCompleted=!0,void console.error("snice: async iterable template value failed:",e)}(async()=>{try{for(;this._asyncIterator;){const e=await this._asyncIterator.next();if(e.done||n!==this._asyncVersion)break;this._commitAsyncValue(e.value)}}catch(e){n===this._asyncVersion&&console.error("snice: async iterable template value failed:",e)}finally{n===this._asyncVersion&&(this._asyncIterator=null,this._asyncRunning=!1,this._asyncCompleted=!0)}})()}else Promise.resolve(t).then(e=>{if(n===this._asyncVersion){this._asyncRunning=!1,this._asyncCompleted=!0;try{this._commitAsyncValue(e)}catch(e){console.error("snice: promise template value failed:",e)}}},e=>{n===this._asyncVersion&&(this._asyncRunning=!1,this._asyncCompleted=!0,console.error("snice: promise template value failed:",e))})}_commitAsyncValue(e){this._committingAsyncValue=!0;try{this.commit(e)}finally{this._committingAsyncValue=!1}}_cancelAsync(e){this._asyncVersion++;const t=this._asyncIterator;if(this._asyncIterator=null,this._asyncRunning=!1,e&&(this._asyncSource=null,this._asyncStarted=!1,this._asyncCompleted=!1,this._asyncPaused=!1),t?.return)try{Promise.resolve(t.return()).catch(()=>{})}catch{}}_insertBefore(e){this.endNode.parentNode?.insertBefore(e,this.endNode)}_clear(){const e=this.startNode.parentNode,t=this._committedValue;let n;try{this._disposeCommitted(t)}catch(e){n=e}if(!e)return this._committedValue=Lt,n;let o=this.startNode.nextSibling;for(;o&&o!==this.endNode;){const t=o.nextSibling;e.removeChild(o),o=t}return this._committedValue=Lt,n}_disposeCommitted(e){let t;if(e instanceof en)try{e.clear()}catch(e){t=e}else if(Array.isArray(e))for(const n of e)if(n instanceof nn)try{n.destroy()}catch(e){t??=e}if(t)throw t}clear(){this._cancelAsync(!0);const e=this._clear();if(e)throw e}get isConnected(){return this.startNode.isConnected}disconnected(e=!1){let t;if(this._committedValue instanceof en)try{this._committedValue.disconnected(e)}catch(e){t??=e}else if(Array.isArray(this._committedValue))for(const n of this._committedValue)if(n instanceof nn)try{n.disconnected(e)}catch(e){t??=e}if(this._asyncSource&&this._asyncRunning&&(this._cancelAsync(!1),this._asyncPaused=!0),t)throw t}reconnected(){let e;if(this._committedValue instanceof en)try{this._committedValue.reconnected()}catch(t){e??=t}else if(Array.isArray(this._committedValue))for(const t of this._committedValue)if(t instanceof nn)try{t.reconnected()}catch(t){e??=t}if(!this._asyncSource||this._asyncStarted&&!this._asyncPaused||this._startAsyncSource(!0),e)throw e}}class on extends tn{constructor(e,t,n){super(),this.type="attribute",this._committedValue=Ut,this.lastValues=null,this.lastValueIndex=0,this.element=e,this.name=t,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(Ut),this.strings=n):this._committedValue=Ut}commit(e,t=0){let n,o=!1;if(void 0===this.strings){if(e===Kt)return;if(o=!Qt(e)||e!==this._committedValue&&e!==Kt,!o)return;this._committedValue=e,n=e}else{const r=e;this.lastValues=[...r],this.lastValueIndex=t;const s=this._committedValue;n=this.strings[0];for(let e=0;e<this.strings.length-1;e++){let i=r[t+e];i===Kt&&(i=s[e],i===Ut&&(i="")),o=o||!Qt(i)||i!==s[e],i===Lt?n=Lt:n!==Lt&&(n=n+(i??"")+this.strings[e+1]),s[e]=i}if(!o)return}this._commitValue(n)}_commitValue(e){e===Lt?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(e??""))}clear(){this.element.removeAttribute(this.name)}}class rn extends tn{constructor(e,t){super(),this.type="node",this.lastValues=null,this.lastValueIndex=0,this.node=e,this.strings=t,this._committedValues=new Array(t.length-1).fill(Ut)}commit(e,t=0){const n=e;this.lastValues=[...n],this.lastValueIndex=t;let o=!1,r=this.strings[0];for(let e=0;e<this.strings.length-1;e++){let s=n[t+e];s===Kt&&(s=this._committedValues[e],s===Ut&&(s="")),o=o||!Qt(s)||s!==this._committedValues[e],this._committedValues[e]=s,r+=String(s===Lt?"":s??"")+this.strings[e+1]}if(o){if(r.includes("--")||r.endsWith("-"))throw new Error('snice: comment expressions cannot produce "--" or end with "-".');this.node.data=r}}clear(){}}class sn extends tn{constructor(e,t){super(),this.type="class",this.committed=Ut,this.element=e,this.name=t}commit(e){if(e===Kt)return;const t=e!==Lt&&Boolean(e);t!==this.committed&&(this.committed=t,this.element.classList.toggle(this.name,t))}clear(){this.element.classList.remove(this.name),this.committed=Ut}}class an extends tn{constructor(e,t){super(),this.type="style",this.committed=Ut,this.element=e,this.name=t}commit(e){if(e===Kt||Object.is(e,this.committed))return;this.committed=e;const t=this.element.style;e===Lt||null==e||!1===e?t.removeProperty(this.name):t.setProperty(this.name,String(e))}clear(){this.element.style.removeProperty(this.name),this.committed=Ut}}class cn extends tn{constructor(e,t){super(),this.type="spread",this.committed={},this.listeners=new Map,this.consumedOnce=new Map,this.element=e,this.name=t}commit(e){if(e===Kt)return;if(e!==Lt&&null!=e||(e={}),"object"!=typeof e||Array.isArray(e))throw new TypeError(`snice: ...${this.name} expects an object.`);const t=e;"events"===this.name?this.commitEvents(t):"props"===this.name||"properties"===this.name?this.commitProperties(t):this.commitAttributes(t),this.committed={...t}}commitProperties(e){for(const t of Object.keys(this.committed))Object.prototype.hasOwnProperty.call(e,t)||(Ht(this.element,t),this.element[t]=void 0);for(const[t,n]of Object.entries(e))Object.is(this.committed[t],n)||(Ht(this.element,t),this.element[t]=n===Lt?void 0:n)}commitAttributes(e){for(const t of Object.keys(this.committed))Object.prototype.hasOwnProperty.call(e,t)||this.element.removeAttribute(t);for(const[t,n]of Object.entries(e))Object.is(this.committed[t],n)||(n===Lt||null==n||!1===n?this.element.removeAttribute(t):this.element.setAttribute(t,!0===n?"":String(n)))}commitEvents(e){!function(e,t){const n=new Set;for(const[o,r]of Object.entries(e)){const e=o.startsWith("@")?o.slice(1):o;if(!e)throw new TypeError(`snice: ${t} contains an empty event name.`);if(n.has(e))throw new TypeError(`snice: ${t} contains duplicate event name "${e}".`);if(n.add(e),r!==Lt&&null!=r&&!1!==r&&"function"!=typeof r&&(!r||"object"!=typeof r||"function"!=typeof r.handleEvent))throw new TypeError(`snice: ${t} event "${e}" expects a function, EventListenerObject, or null.`)}}(e,`...${this.name}`);for(const[t,n]of this.consumedOnce){const o=Object.keys(e).find(e=>this.eventName(e)===t);o&&Object.is(e[o],n)||this.consumedOnce.delete(t)}for(const[t,n]of this.listeners){const o=Object.keys(e).find(e=>this.eventName(e)===t);o&&Object.is(e[o],n.value)||(this.element.removeEventListener(t,n.listener,n.options),this.listeners.delete(t))}for(const[t,n]of Object.entries(e)){const e=this.eventName(t);if(this.listeners.has(e))continue;const o=!!n&&"object"==typeof n&&"function"==typeof n.handleEvent;if(n===Lt||null==n||!1===n)continue;if(this.consumedOnce.has(e)&&Object.is(this.consumedOnce.get(e),n))continue;this.consumedOnce.delete(e);const r=o?n:void 0,s=t=>{r?.once&&this.consumedOnce.set(e,n),o?n.handleEvent(t):n.call(this.resolveHost(),t)};this.element.addEventListener(e,s,r),this.listeners.set(e,{value:n,listener:s,options:r})}}eventName(e){return e.startsWith("@")?e.slice(1):e}resolveHost(){return Vt(this.element)||this.element}clear(){if("events"===this.name){for(const[e,t]of this.listeners)this.element.removeEventListener(e,t.listener,t.options);this.listeners.clear(),this.consumedOnce.clear()}else if("props"!==this.name&&"properties"!==this.name)for(const e of Object.keys(this.committed))this.element.removeAttribute(e);this.committed={}}disconnected(e=!1){"events"!==this.name||e||this.detachListeners()}reconnected(){"events"===this.name&&0===this.listeners.size&&this.commitEvents(this.committed)}detachListeners(){for(const[e,t]of this.listeners)this.element.removeEventListener(e,t.listener,t.options);this.listeners.clear()}}class ln extends tn{constructor(e,t){super(),this.type="property",this._committedValue=Ut,this.element=e,this.name=t}commit(e){if(e!==Kt){if(function(e){return e&&e._$liveMarker$===Gt}(e)){if((e=e.value)===Kt)return;if(e===this.element[this.name])return void(this._committedValue=e)}else if(e===this._committedValue)return;this._committedValue=e,Ht(this.element,this.name),this.element[this.name]=e===Lt?void 0:e}}clear(){this._committedValue=Ut}}class hn extends tn{constructor(e){super(),this.type="controller",this._committedValue=Ut,this.element=e}commit(e){if(e===Kt)return;const t=null==e||!1===e||""===e||e===Lt?null:e,n=this._committedValue===Ut,o=n?null:this._committedValue;if(!n&&t===o)return;this._committedValue=t;const r=this.element;"function"==typeof o&&"function"!=typeof t&&(void 0!==r[_]?delete r[_]:r[a]?r.controller=null:this._detach()),"function"==typeof t?(this.element.hasAttribute("controller")&&this.element.removeAttribute("controller"),this.isConnected?this._apply(t):this.element.localName.includes("-")&&!r[a]&&(r[_]=t)):"string"==typeof t?this.element.setAttribute("controller",t):"string"==typeof o&&this.element.removeAttribute("controller")}_apply(e){const t=this.element;t[a]?t.controller!==e?t.controller=e:this._attach(e):this.element.localName.includes("-")?t[_]=e:(t.ready||(t.ready=Promise.resolve()),this._attach(e))}_attach(e){Nt(this.element,e).catch(t=>{"ControllerAttachAborted"!==t?.name&&console.error(`Failed to attach controller "${e?.name||e}":`,t)})}_detach(){St(this.element).catch(e=>{console.error("Failed to detach controller:",e)})}disconnected(e=!1){if("function"!=typeof this._committedValue)return;const t=this.element;void 0===t[_]&&(t[a]||this._detach())}reconnected(){const e=this._committedValue;"function"==typeof e&&this._apply(e)}clear(){const e=this.element;void 0!==e[_]&&delete e[_];const t=this._committedValue;this._committedValue=Ut,"function"==typeof t&&(e[a]||this._detach())}}class un extends tn{constructor(e,t){super(),this.type="boolean-attribute",this._committedValue=Ut,this.element=e,this.name=t}commit(e){if(e===Kt)return;const t=!!e&&e!==Lt;t!==this._committedValue&&(this._committedValue=t,t?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name))}clear(){this.element.removeAttribute(this.name),this._committedValue=Ut}}class dn extends tn{constructor(e,t){super(),this.type="event",this.listener=null,this.listenerOptions=void 0,this.value=void 0,this.keyFilter=null,this.host=null,this.modifiers=new Set,this.once=!1,this.onceConsumed=!1,this.element=e;const[n,...o]=t.split("|"),r={preventdefault:"prevent",stoppropagation:"stop",stopimmediatepropagation:"immediate"},s=new Set(["prevent","stop","immediate","once","capture","passive","self"]);for(const e of o){const n=r[e.toLowerCase()]||e.toLowerCase();if(!s.has(n))throw new Error(`snice: unknown event modifier "${e}" in @${t}. Supported modifiers: prevent, stop, immediate, once, capture, passive, self.`);this.modifiers.add(n)}if(this.modifiers.has("passive")&&this.modifiers.has("prevent"))throw new Error(`snice: @${t} cannot combine passive and prevent.`);const i=["keydown","keyup","keypress"].includes(n.split(".")[0].split(":")[0]),a=i?n.indexOf("."):-1,c=i?n.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c);if(l>0){const e=n.substring(0,l),t=n.substring(l+1);this.eventName=e,this.keyFilter=ut(t)}else this.eventName=n,ht(n)}commit(e){if(e===Kt)return;e===Lt&&(e=null);const t=!!e&&"object"==typeof e&&"function"==typeof e.handleEvent;if(null!=e&&!1!==e&&"function"!=typeof e&&!t)throw new TypeError(`snice: @${this.eventName} expects a function, EventListenerObject, or null.`);if(t&&this.modifiers.has("prevent")&&e.passive)throw new Error(`snice: @${this.eventName} cannot combine a passive listener object with prevent.`);if(e!==this.value||null==e){if(this.listener&&(this.element.removeEventListener(this.eventName,this.listener,this.listenerOptions),this.listener=null,this.listenerOptions=void 0),null==e||!1===e)return this.value=e,void(this.onceConsumed=!1);this.onceConsumed=!1;try{this.attachListener(e,t),this.value=e}catch(e){throw this.value=void 0,e}}}attachListener(e,t){const n=this.keyFilter,o=r=>{this.modifiers.has("self")&&r.target!==this.element||n&&!ft(r,n)||(this.once&&(this.onceConsumed=!0,this.element.removeEventListener(this.eventName,o,s),this.listener=null,this.listenerOptions=void 0),this.modifiers.has("prevent")&&r.preventDefault(),this.modifiers.has("immediate")?r.stopImmediatePropagation():this.modifiers.has("stop")&&r.stopPropagation(),t?e.handleEvent(r):(this.host||(this.host=Vt(this.element)),e.call(this.host||this.element,r)))},r=t?e:{};this.once=this.modifiers.has("once")||!!r.once;const s={capture:this.modifiers.has("capture")||r.capture,passive:this.modifiers.has("passive")||r.passive,signal:r.signal};this.element.addEventListener(this.eventName,o,s),this.listener=o,this.listenerOptions=s}clear(){this.detachListener(),this.value=void 0,this.host=null,this.onceConsumed=!1}detachListener(){this.listener&&(this.element.removeEventListener(this.eventName,this.listener,this.listenerOptions),this.listener=null,this.listenerOptions=void 0)}disconnected(e=!1){e||this.detachListener(),this.host=null}reconnected(){this.listener||this.onceConsumed||null==this.value||!1===this.value||this.attachListener(this.value,"object"==typeof this.value)}}const fn=Symbol("not-set");class mn extends tn{constructor(e){super(),this.type="node",this.conditions=[fn],this.branches=[],this.defaultBranch=-1,this.currentBranch=-1;const t=e.parentNode;this.startNode=document.createComment("if"),this.endNode=document.createComment("/if"),t.insertBefore(this.startNode,e),t.insertBefore(this.endNode,e.nextSibling);const n=document.createDocumentFragment();this.branches.push(n);let o=!1,r=n;for(const t of Array.from(e.childNodes)){const e=t.nodeType===Node.ELEMENT_NODE?t.tagName.toLowerCase():"";if("else-if"===e||"else"===e){o=!0;const n=t,s=document.createDocumentFragment();for(;n.firstChild;)s.appendChild(n.firstChild);const i=this.branches.push(s)-1;if(r=s,"else-if"===e){if(-1!==this.defaultBranch)throw new Error("snice: <else> must be the final branch inside <if>.");this.conditions[i]=fn,pn.set(n,{coordinator:this,index:i})}else{if(-1!==this.defaultBranch)throw new Error("snice: <if> may contain only one <else> branch.");this.defaultBranch=i}n.remove();continue}o?t.nodeType!==Node.TEXT_NODE||t.textContent?.trim()?r.appendChild(t):t.remove():n.appendChild(t)}t.removeChild(e)}commit(e){e!==Kt&&(this.conditions[0]=e)}setAlternative(e,t){t!==Kt&&(this.conditions[e]=t)}flush(){let e=-1;for(let t=0;t<this.conditions.length;t++)if(this.conditions[t]!==fn&&this.conditions[t]!==Lt&&Boolean(this.conditions[t])){e=t;break}-1===e&&(e=this.defaultBranch),e!==this.currentBranch&&(this.collectCurrent(),this.currentBranch=e,-1!==e&&this.branches[e].hasChildNodes()&&this.startNode.parentNode?.insertBefore(this.branches[e],this.endNode))}collectCurrent(){if(-1===this.currentBranch)return;const e=this.branches[this.currentBranch];let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const n=t.nextSibling;e.appendChild(t),t=n}}clear(){this.collectCurrent(),this.currentBranch=-1}get isConnected(){return this.startNode.isConnected}}const pn=new WeakMap;class yn extends tn{constructor(e){super(),this.type="node";const t=pn.get(e);if(!t)throw new Error("snice: <else-if> must be a direct child of <if>.");this.coordinator=t.coordinator,this.index=t.index}commit(e){this.coordinator.setAlternative(this.index,e)}clear(){}get isConnected(){return this.coordinator.isConnected}}class gn extends tn{constructor(e,t){super(),this.type="node",this.value=fn,this.branches=[],this.defaultBranch=-1,this.currentBranch=-1;const n=e.parentNode;this.startNode=document.createComment("case"),this.endNode=document.createComment("/case"),n.insertBefore(this.startNode,e),n.insertBefore(this.endNode,e.nextSibling);for(const n of Array.from(e.children)){const e=n.tagName.toLowerCase();if("when"===e){const e=document.createDocumentFragment();for(;n.firstChild;)e.appendChild(n.firstChild);const o=t.has(n),r=this.branches.push({fragment:e,dynamic:o,expected:o?fn:n.getAttribute("value")??""})-1;o&&vn.set(n,{coordinator:this,index:r})}else if("default"===e){if(-1!==this.defaultBranch)throw new Error("snice: <case> may contain only one <default> branch.");const e=document.createDocumentFragment();for(;n.firstChild;)e.appendChild(n.firstChild);this.defaultBranch=this.branches.push({fragment:e,dynamic:!1,expected:fn})-1}}n.removeChild(e)}commit(e){e!==Kt&&(this.value=e)}setExpected(e,t){t!==Kt&&(this.branches[e].expected=t)}flush(){let e=this.branches.findIndex((e,t)=>t!==this.defaultBranch&&(e.dynamic?Object.is(this.value,e.expected):String(this.value)===e.expected));-1===e&&(e=this.defaultBranch),e!==this.currentBranch&&(this.collectCurrent(),this.currentBranch=e,-1!==e&&this.branches[e].fragment.hasChildNodes()&&this.startNode.parentNode?.insertBefore(this.branches[e].fragment,this.endNode))}collectCurrent(){if(-1===this.currentBranch)return;const e=this.branches[this.currentBranch].fragment;let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const n=t.nextSibling;e.appendChild(t),t=n}}clear(){this.collectCurrent(),this.currentBranch=-1}get isConnected(){return this.startNode.isConnected}}const vn=new WeakMap;class bn extends tn{constructor(e){super(),this.type="node";const t=vn.get(e);if(!t)throw new Error("snice: dynamic <when> must be a direct child of <case>.");this.coordinator=t.coordinator,this.index=t.index}commit(e){this.coordinator.setExpected(this.index,e)}clear(){}get isConnected(){return this.coordinator.isConnected}}let wn=!1;function En(e){e[f]||(e[d]=new Promise(t=>{e[f]=t}))}function Nn(e){const t=e[f];t&&(e[f]=null,t())}const Sn=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(e,t){t.sync?Cn(e,t):(this.pending.add(e),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>this.flush())))}flush(){const e=Array.from(this.pending);this.pending.clear(),this.scheduled=!1;for(const t of e)t.isConnected?Cn(t,t[X]||{}):t[m]=!0}remove(e){this.pending.delete(e)}};function Tn(e){return Object.prototype.hasOwnProperty.call(e,Y)}function An(e){const t=e[ee];if(!t||0===t.length)return;const n=[...t];e[ee]=[],n.forEach(e=>e())}const _n=50;function Cn(e,t,n){const o=arguments.length>=3,r=e[J];if(!r)return void Nn(e);if(t.once&&Tn(e))return void Nn(e);const s=e[p]??0;if(s>=_n){const t=e.tagName?e.tagName.toLowerCase():"element";return console.error(`snice: maximum render depth (${_n}) exceeded for <${t}>. render() is mutating an observed property, causing an infinite render loop.`),void Nn(e)}e[p]=s+1;try{const s=o?n:r.call(e),i=Dt(e);if(!1===t.differential){if("string"!=typeof s)return void console.warn("Render method with differential: false must return a string");const t=document.createElement("template");t.innerHTML=s;const n=e[Y];n?.clear();const o=Array.from(i.childNodes).filter(e=>!(e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")));for(const e of o)e.remove();return i.appendChild(t.content),e[Y]=null,void An(e)}if(!kt(s))return void console.warn("Render method must return html`` template result");let a=e[Y];if(a&&a.isSameTemplate(s.strings))return a.update(s.values),void An(e);const c=new en(s),l=c.renderFragment();try{c.update(s.values)}catch(e){throw c.clear(),e}const h=document.createDocumentFragment();for(const e of Array.from(i.childNodes))e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")||h.appendChild(e);i.appendChild(l);try{e.isConnected&&c.reconnected()}catch(e){try{c.clear()}catch(e){console.error("snice: failed to clean up a rejected render tree:",e)}for(const e of Array.from(i.childNodes))e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style")||e.remove();throw i.appendChild(h),e}let u;e[Y]=c;try{a?.clear()}catch(e){u=e}if(An(e),u)throw u}catch(e){if(wn)throw e;console.error("Error rendering element:",e)}finally{e[p]=s,Nn(e)}}function xn(e,t=!1){const n=e[X]||{};if(n.once&&Tn(e))e.isConnected&&On(e);else if(En(e),t)Cn(e,n);else{if(void 0!==n.debounce&&n.debounce>0)return e[Z]||(e[Z]={}),clearTimeout(e[Z].debounce),void(e[Z].debounce=setTimeout(()=>{e[Z].debounce=null,Sn.schedule(e,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){e[Z]||(e[Z]={lastThrottle:0});const t=e[Z],o=Date.now();return 0===t.lastThrottle||o-t.lastThrottle>=n.throttle?(t.lastThrottle=o,void Sn.schedule(e,n)):void(t.throttleTimer||(t.throttleTimer=setTimeout(()=>{t.throttleTimer=null,t.lastThrottle=Date.now(),Sn.schedule(e,n)},n.throttle-(o-t.lastThrottle))))}Sn.schedule(e,n)}}function On(e){const t=e[Y];t?.reconnected()}function kn(e){const t=e[Q];if(t)for(const e of t.values())e.debounceTimeout&&clearTimeout(e.debounceTimeout),e.throttleTimeout&&clearTimeout(e.throttleTimeout),e.debounceTimeout=null,e.throttleTimeout=null,e.throttleLastCall=0,e.latestDetail=void 0}const $n=n("debounce-timers"),Ln=n("throttle-timers"),Pn=n("once-called"),jn=n("memoize-cache");function Mn(e){if(e[$n]){for(const t in e[$n])e[$n][t]?.timeout&&clearTimeout(e[$n][t].timeout);e[$n]={}}}function Rn(e){if(e[Ln]){for(const t in e[Ln])e[Ln][t]?.timeout&&clearTimeout(e[Ln][t].timeout);e[Ln]={}}}function In(e,t){const n=Reflect.getOwnPropertyDescriptor(e,t);return!n||n.configurable?{locked:!1,value:void 0}:"value"in n&&!1===n.writable?{locked:!0,value:n.value}:"value"in n||void 0!==n.get?{locked:!1,value:void 0}:{locked:!0,value:void 0}}function Dn(e){e.prototype[a]=!0;const t=e.prototype.connectedCallback,n=e.prototype.disconnectedCallback,o=e.prototype.attributeChangedCallback,r=e.observedAttributes||[];r.includes("controller")||r.push("controller");const s=e[x];if(s)for(const[e,t]of s){if(!1===t.attribute)continue;const n=De(t,e);r.includes(n)||r.push(n)}Object.defineProperty(e,"observedAttributes",{get:()=>r,configurable:!0}),Object.defineProperty(e.prototype,"ready",{get(){return this[h]||(this[h]=new Promise(e=>{this[u]=e})),this[h]},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rendered",{get(){return this[f]?this[d]:Promise.resolve()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controller",{get(){return this[v]},set(e){const t=this[v];if(this[v]=e,e!==t){if(e){const t="string"==typeof e?e:e.name||"(anonymous controller class)";return void Nt(this,e).catch(n=>{"ControllerAttachAborted"!==n?.name?"string"!=typeof e||n?.message!==`Controller "${e}" not found in registry`?console.error(`Failed to attach controller "${t}":`,n):wt(this,e):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}t&&St(this).catch(e=>{console.error("Failed to detach controller:",e)})}},enumerable:!0,configurable:!0}),e.prototype.connectedCallback=async function(){if(this[h]||(this[h]=new Promise(e=>{this[u]=e})),this[b]){try{On(this)}catch(e){console.error(`Error reconnecting the render tree for ${this.tagName}:`,e)}gt(this,this),at(this,this),_t(this);try{Ge(this,this)}catch(e){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,e)}t&&t.call(this);const n=e[F];if(n)for(const e of n)try{const t=e.method.call(this);t&&"function"==typeof t.then&&t.catch(t=>{console.error(`Error in @reconnect handler ${e.methodName}:`,t)})}catch(t){console.error(`Error in @reconnect handler ${e.methodName}:`,t)}return void(this[J]&&this[m]&&(this[m]=!1,xn(this)))}this[j]=!0;const n=e[x];if(n)for(const[e,t]of n){if(!1===t.attribute)continue;const n=De(t,e);if(!this.hasAttribute(n))continue;const o=this.getAttribute(n);Ve(this,R).add(e),t.type===Boolean&&""===o&&this.setAttribute(n,"true"),this[e]=Re(o,t)}if(this[L]){for(const[e,t]of Array.from(this[L].entries())){const o=n?.get(e),r=De(o||{},e);this[L].delete(e),this.hasAttribute(r)||(this[e]=t)}delete this[L]}if(void 0!==this[_]){const e=this[_];if(delete this[_],!this[v]){this[v]=e;const t=e?.name||"(anonymous controller class)";Nt(this,e).catch(e=>{"ControllerAttachAborted"!==e?.name?console.error(`Failed to attach controller "${t}":`,e):console.debug(`Controller "${t}" attach aborted (element detached before ready)`)})}}if(this.hasAttribute("controller")&&!this[v]){const e=this.getAttribute("controller");e&&(this.controller=e)}!function(e){const t=e[te],n=[],o=[];let r=e.constructor;for(;r&&r!==HTMLElement&&r!==Function.prototype;)o.unshift(r),r=Object.getPrototypeOf(r);for(const e of o){if(!Object.prototype.hasOwnProperty.call(e,"styles"))continue;const t=e.styles,o=Array.isArray(t)?t:[t];for(const e of o)$t(e)?n.push(e):console.warn("Static styles must be a css`` result or an array of css`` results")}if((t||0!==n.length)&&!e[ne]){e[ne]=!0;try{const o=[...n],r=e[oe];if(r)for(const t of r){const n=t.call(e);$t(n)&&o.push(n)}if(t){const n=t.call(e);if(!$t(n))return void console.warn("Styles method must return css`` template result");o.push(n)}const s=Dt(e),i=Array.from(s.childNodes).filter(e=>e.nodeType===Node.ELEMENT_NODE&&"STYLE"===e.tagName&&e.hasAttribute("data-snice-style"));if(i.length===o.length&&i.every((e,t)=>e.textContent===o[t].cssText))return;for(const e of i)e.remove();if(s instanceof ShadowRoot&&o.every(e=>!!e.styleSheet)&&"adoptedStyleSheets"in s)try{return void(s.adoptedStyleSheets=o.map(e=>e.styleSheet))}catch{}for(const e of o){const t=document.createElement("style");t.setAttribute("data-snice-style",""),t.textContent=e.cssText,s.appendChild(t)}}catch(e){console.error("Error applying styles:",e)}}}(this),gt(this,this),at(this,this),_t(this),this[b]=!0,function(e,t){if(He.has(t))return;He.add(t);const n=t[M];if(!n||0===n.size)return;const o=t[x],r=new Set(["*"]);if(o)for(const[e,t]of o)r.add(e),"string"==typeof t?.attribute&&r.add(t.attribute);for(const t of n.keys()){if(r.has(t))continue;const n=e.tagName?e.tagName.toLowerCase():"element",s=o?[...o.keys()].join(", "):"(none)";console.warn(`@watch('${t}') on <${n}> matches no @property — it will never fire. Known properties: ${s}.`)}}(this,e),function(e,t){const n=t[M],o=t[x];if(n&&o)for(const[t,r]of o){const o=[t],s=r&&"string"==typeof r.attribute?r.attribute:null;s&&s!==t&&o.push(s),o.push("*");for(const r of o)if(n.has(r))for(const o of n.get(r))if(o.immediate)try{o.method.call(e,void 0,e[t],t)}catch(e){console.error(`Error in @watch('${r}') method ${o.methodName}:`,e)}}}(this,e),t&&t.call(this);const o=e[q];if(await new Promise(e=>queueMicrotask(e)),this.isConnected){this[J]&&xn(this,!0);try{Ge(this,this)}catch(e){console.error(`Error setting up observers for ${this.tagName}:`,e)}if(await new Promise(e=>queueMicrotask(e)),this.isConnected){if(o)for(const e of o)try{await e.method.call(this)}catch(t){console.error(`Error in @ready handler ${e.methodName}:`,t)}this[u]&&(this[u](),this[u]=null)}else this[u]&&(this[u](),this[u]=null)}else this[u]&&(this[u](),this[u]=null)},e.prototype.disconnectedCallback=async function(){try{!function(e){const t=e[Y];t?.disconnected(!0)}(this)}catch(e){console.error(`Error disconnecting the render tree for ${this.tagName}:`,e)}const t=e[B];if(t)for(const e of t)try{await e.method.call(this)}catch(t){console.error(`Error in @dispose handler ${e.methodName}:`,t)}n&&n.call(this),this[v]&&St(this).catch(e=>{console.error("Failed to detach controller:",e)}),vt(this),ct(this),function(e){const t=e.constructor[At];if(!t||!Array.isArray(t)||0===t.length)return;const n=e[de];if(n&&"object"==typeof n){for(const e of Object.keys(n))n[e]?.timeout&&clearTimeout(n[e].timeout);delete e[de]}for(const n of t)delete e[`__wrapped_${n.methodName}`];const o=e[ie];o&&"function"==typeof o[he]&&o[he](e),delete e[ie],delete e[fe]}(this),Ze(this),Mn(this),Rn(this),function(e){const t=e[Z];if(!t)return!1;let n=!1;return t.debounce&&(clearTimeout(t.debounce),t.debounce=null,n=!0),t.throttleTimer&&(clearTimeout(t.throttleTimer),t.throttleTimer=null,n=!0),n}(this)&&(this[m]=!0),kn(this),Un(this,K),Un(this,G)},e.prototype.attributeChangedCallback=function(t,n,r){if(o?.call(this,t,n,r),"controller"===t)return void(this.controller=r);const s=e[x];if(s)for(const[n,o]of s){if(De(o,n).toLowerCase()!==t.toLowerCase())continue;if(this[H]?.has(t.toLowerCase()))break;const s=this[O]?.[n],i=this[k]?.[n];let a=null===r?o.type!==Boolean&&i:Re(r,o,s,i);const c=this[$]?.[n];if(c&&(a=c(a)),!(o?.hasChanged?o.hasChanged(a,s):Ie(a,s)))break;Ve(this,R).add(n),qe(this,O)[n]=a,this[b]&&Be(this,e,n,s,a),this[J]&&this[b]&&xn(this);break}},e.prototype.connectedMoveCallback=async function(){const t=e[W];if(t)for(const e of t)try{await this[e.methodName]()}catch(t){console.error(`Error in @moved handler ${e.methodName}:`,t)}},e.prototype.adoptedCallback=async function(){const t=e[z];if(t)for(const e of t)try{await this[e.methodName]()}catch(t){console.error(`Error in @adopted handler ${e.methodName}:`,t)}}}function Vn(e,t,n,o){if(function(e){let t=Object.getPrototypeOf(e);const n=[];for(;t&&t!==HTMLElement&&t!==Function.prototype;)n.push(t),t=Object.getPrototypeOf(t);n.reverse();for(const t of n){if(t[x]){e[x]||(e[x]=new Map);for(const[n,o]of t[x])e[x].has(n)||e[x].set(n,o)}t.formAssociated&&!e.formAssociated&&(e.formAssociated=!0)}}(t),n.metadata&&n.metadata[x]){t[x]||(t[x]=new Map);for(const[e,o]of n.metadata[x])t[x].set(e,o)}else if(qn.length>0){t[x]||(t[x]=new Map);const e=qn.pop();for(const[n,o]of e)t[x].set(n,o)}o?.formAssociated&&(t.formAssociated=!0);const r={...Object.getPrototypeOf(t)?.[g]||{}},s=o||{};if("light"===s.renderRoot&&"string"==typeof s.shadow||"shadow"===s.renderRoot&&!1===s.shadow)throw new TypeError("snice: @element renderRoot and shadow options select conflicting render roots.");const i={...r,...s};return Object.prototype.hasOwnProperty.call(s,"shadow")?i.renderRoot=!1===s.shadow?"light":"shadow":Object.prototype.hasOwnProperty.call(s,"renderRoot")&&("light"===s.renderRoot?i.shadow=!1:!1===i.shadow&&(i.shadow="open")),t[g]=i,!0===t.prototype[re]&&Object.prototype.hasOwnProperty.call(t.prototype,"render")&&!Object.prototype.hasOwnProperty.call(t.prototype,J)&&"function"==typeof t.prototype.render&&(t.prototype[J]=t.prototype.render,t.prototype[X]=t.renderOptions||{}),Dn(t),customElements.get(e)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${e}" is already registered. Skipping.`),t):(customElements.define(e,t),t)}const qn=[],Bn=new WeakMap;function Fn(e){return function(t,n){const o=n.name;return n.metadata?(n.metadata[x]||(n.metadata[x]=new Map),n.metadata[x].set(o,e||{})):(0===qn.length&&qn.push(new Map),qn[qn.length-1].set(o,e||{})),function(t){const n=this[P],r=!0===n?.delete(o);0===n?.size&&delete this[P];const s=Object.prototype.hasOwnProperty.call(this,o),i=s&&(r||!function(e,t,n){const o=e?.ownerDocument;if(!o?.createElement)return!1;let r=Bn.get(o);if(!r){const e=o.createElement("div");r=new Map;for(const t of Reflect.ownKeys(e))r.set(t,e[t]);Bn.set(o,r)}return r.has(t)&&Object.is(r.get(t),n)}(this,o,this[o])),a=i?this[o]:t;s&&delete this[o];const c=this.constructor;c[x]||(c[x]=new Map);const l={...e};l.type||void 0===t||(l.type=Me(t)),l.attributeNaming||"kebab"!==c.propertyAttributeNaming||(l.attributeNaming="kebab"),c[x].set(o,l),qe(this,k)[o]=t;const h=()=>{if(!this[j])return;const e=this[O]?.[o];if(!1!==l.attribute&&!1!==l.reflect){const n=De(l,o),r=Ue(e,l,t),s=n.toLowerCase();Ve(this,H).add(s);try{null===r?this.removeAttribute?.(n):this.setAttribute?.(n,r)}finally{this[H].delete(s)}}this[b]&&(Be(this,this.constructor,o,e,e),this[J]&&xn(this))},u=e=>{if(!l.deep)return e;let t;return t=function(e,t){if(!e||"object"!=typeof e)return e;const n=new WeakMap,o=new WeakMap,r=e=>e&&"object"==typeof e&&o.get(e)||e,s=e=>{if(!e||"object"!=typeof e)return e;if(n.has(e))return n.get(e);if(e instanceof Map){let i;const a=new Map;return i=new Proxy(e,{get(e,n){const o=In(e,n);if(o.locked)return o.value;if(a.has(n))return a.get(n);let c;if("set"===n)c=(n,o)=>{n=r(n),o=r(o);const s=e.has(n),a=e.get(n);return e.set(n,o),s&&Object.is(a,o)||t(),i};else if("delete"===n)c=n=>{n=r(n);const o=e.delete(n);return o&&t(),o};else if("clear"===n)c=()=>{0!==e.size&&(e.clear(),t())};else if("get"===n)c=t=>s(e.get(r(t)));else if("has"===n)c=t=>e.has(r(t));else if("forEach"===n)c=(t,n)=>e.forEach((e,o)=>t.call(n,s(e),s(o),i));else if("values"===n)c=function*(){for(const t of e.values())yield s(t)};else if("keys"===n)c=function*(){for(const t of e.keys())yield s(t)};else if("entries"===n||n===Symbol.iterator)c=function*(){for(const[t,n]of e.entries())yield[s(t),s(n)]};else{const t=Reflect.get(e,n,e);if("function"!=typeof t)return t;if("constructor"===n)return t;c=t.bind(e)}return a.set(n,c),c}}),n.set(e,i),o.set(i,e),i}if(e instanceof Set){let i;const a=new Map;return i=new Proxy(e,{get(e,n){const o=In(e,n);if(o.locked)return o.value;if(a.has(n))return a.get(n);let c;if("add"===n)c=n=>{n=r(n);const o=e.has(n);return e.add(n),o||t(),i};else if("delete"===n)c=n=>{n=r(n);const o=e.delete(n);return o&&t(),o};else if("clear"===n)c=()=>{0!==e.size&&(e.clear(),t())};else if("has"===n)c=t=>e.has(r(t));else if("forEach"===n)c=(t,n)=>e.forEach(e=>{const o=s(e);t.call(n,o,o,i)});else if("values"===n||"keys"===n||n===Symbol.iterator)c=function*(){for(const t of e.values())yield s(t)};else if("entries"===n)c=function*(){for(const t of e.values()){const e=s(t);yield[e,e]}};else{const t=Reflect.get(e,n,e);if("function"!=typeof t)return t;if("constructor"===n)return t;c=t.bind(e)}return a.set(n,c),c}}),n.set(e,i),o.set(i,e),i}if(!Array.isArray(e)&&!function(e){const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(e))return e;const i=new Proxy(e,{get(e,t,n){const o=In(e,t);return o.locked?o.value:s(Reflect.get(e,t,n))},set(e,n,o,s){const i=Reflect.get(e,n,s);o=r(o);const a=Reflect.set(e,n,o);return a&&!Object.is(i,o)&&t(),a},deleteProperty(e,n){const o=Object.prototype.hasOwnProperty.call(e,n),r=Reflect.deleteProperty(e,n);return r&&o&&t(),r},defineProperty(e,n,o){const s=Reflect.getOwnPropertyDescriptor(e,n),i="value"in o?{...o,value:r(o.value)}:o,a=Reflect.defineProperty(e,n,i),c=a?Reflect.getOwnPropertyDescriptor(e,n):s;return a&&!function(e,t){if(!e||!t)return e===t;const n="value"in e||"writable"in e;return n===("value"in t||"writable"in t)&&e.configurable===t.configurable&&e.enumerable===t.enumerable&&(!n||e.writable===t.writable&&Object.is(e.value,t.value))&&(n||e.get===t.get&&e.set===t.set)}(s,c)&&t(),a}});return n.set(e,i),o.set(i,e),i};return s(e)}(e,()=>{this[O]?.[o]===t&&h()}),t};qe(this,$)[o]=u;const d=this.constructor.prototype;let f=d[Ce];f&&Object.prototype.hasOwnProperty.call(d,Ce)||(f=new Map(f),d[Ce]=f);const m=f.get(o);m&&m===e||(f.set(o,e),Object.defineProperty(this.constructor.prototype,o,{get(){return this[L]?.has(o)?this[L].get(o):this[O]&&o in this[O]?this[O][o]:t},set(e){const t=this[o];if(!(l.hasChanged?l.hasChanged(e,t):Ie(e,t)))return;const n=(this[$]?.[o]||(e=>e))(e);if(!this[j])return this[L]||(this[L]=new Map),void this[L].set(o,n);if(qe(this,O)[o]=n,!1!==l.attribute&&!1!==l.reflect){const e=De(l,o),t=Ue(n,l,this[k]?.[o]);Ve(this,R).add(o);const r=e.toLowerCase();Ve(this,H).add(r);try{null===t?this.removeAttribute?.(e):this.setAttribute?.(e,t)}finally{this[H].delete(r)}}this[b]&&(Be(this,this.constructor,o,t,n),this[J]&&xn(this))},configurable:!0,enumerable:!0}));const p=u(t);return qe(this,O)[o]=p,qe(this,k)[o]=p,i?a:p}}}function Wn(e){return!0===e[r]&&e.element?e.element:e}function zn(e,t,n,o,r){const s=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,t)||(o[t]=new Set),!o[t].has(n)){if(o[t].add(n),!Object.prototype.hasOwnProperty.call(o,e)){const t=o[e];o[e]=t?[...t]:[]}o[e].push({methodName:s,method:n,...r})}})}function Un(e,t){const n=e[t];if(n)for(const e of n.values())e.debounceTimer&&clearTimeout(e.debounceTimer),e.throttleTimer&&clearTimeout(e.throttleTimer),e.debounceTimer=null,e.throttleTimer=null,e.lastThrottleCall=0}function Hn(e,t,n){return function(o={}){return function(r,s){zn(e,n,r,s,{options:o});const i=s.name;return function(...e){this[t]||(this[t]=new Map),this[t].has(i)||this[t].set(i,{throttleTimer:null,debounceTimer:null,lastThrottleCall:0});const n=this[t].get(i),s=(...e)=>r.apply(this,e),a=(...e)=>{try{const t=r.apply(this,e);t&&"function"==typeof t.then&&t.catch(e=>console.error(`Error in deferred lifecycle handler ${i}:`,e))}catch(e){console.error(`Error in deferred lifecycle handler ${i}:`,e)}};if(o.debounce>0)return clearTimeout(n.debounceTimer),void(n.debounceTimer=setTimeout(()=>a(...e),o.debounce));if(o.throttle>0){const t=Date.now();return 0===n.lastThrottleCall||t-n.lastThrottleCall>=o.throttle?(n.lastThrottleCall=t,s(...e)):void(n.throttleTimer||(n.throttleTimer=setTimeout(()=>{n.throttleTimer=null,n.lastThrottleCall=Date.now(),a(...e)},o.throttle-(t-n.lastThrottleCall))))}return s(...e)}}}}const Kn=Hn(W,K,Se),Gn=Hn(z,G,Te);class Qn extends HTMLElement{static{this.propertyAttributeNaming="kebab"}createRenderRoot(){const e=this.constructor[g];return this.attachShadow({mode:"string"==typeof e?.shadow?e.shadow:"open",delegatesFocus:e?.delegatesFocus})}invalidate(){return xn(this),this.rendered}renderNow(){return En(this),Cn(this,{...this[X]||{},once:!1}),this.rendered}}Object.defineProperty(Qn.prototype,re,{value:!0});class Jn{constructor(e){this.parsed=this.parsePattern(e)}get spec(){return this.parsed.template}parsePattern(e){let t=e,n="",o=!1;const r=e.indexOf("?");return-1!==r&&(t=e.slice(0,r),n=e.slice(r+1),t.endsWith("(")&&n.endsWith(")")&&(o=!0,t=t.slice(0,-1),n=n.slice(0,-1))),{pathSegments:this.parseSegments(t),querySegments:n?this.parseQuerySegments(n):[],queryOptional:o,template:e}}parseSegments(e){const t=[];let n=0;for(;n<e.length;)switch(e[n]){case"(":const{segments:o,endIndex:r}=this.parseOptionalGroup(e,n);t.push({type:"optional",segments:o}),n=r+1;break;case":":const{name:s,endIndex:i}=this.parseIdentifier(e,n+1);t.push({type:"param",name:s}),n=i;break;case"*":const{name:a,endIndex:c}=this.parseIdentifier(e,n+1);t.push({type:"splat",name:a}),n=c;break;default:const{value:l,endIndex:h}=this.parseLiteral(e,n);l&&t.push({type:"literal",value:l}),n=h}return t}parseOptionalGroup(e,t){let n=1,o=t+1;for(;o<e.length&&n>0;)"("===e[o]&&n++,")"===e[o]&&n--,o++;const r=e.slice(t+1,o-1);return{segments:this.parseSegments(r),endIndex:o-1}}parseIdentifier(e,t){let n=t;for(;n<e.length&&/[\w-]/.test(e[n]);)n++;return{name:e.slice(t,n),endIndex:n}}parseLiteral(e,t){let n=t;for(;n<e.length&&!"(:*(".includes(e[n]);)n++;return{value:e.slice(t,n),endIndex:n}}parseQuerySegments(e){let t=e;t.startsWith("(")&&t.endsWith(")")&&(t=t.slice(1,-1));const n=[];let o=0;for(;o<t.length;)if(":"===t[o]){const{name:e,endIndex:r}=this.parseIdentifier(t,o+1);n.push({type:"param",name:e}),o=r}else{const{value:e,endIndex:r}=this.parseQueryLiteral(t,o);e&&n.push({type:"literal",value:e}),o=r}return n}parseQueryLiteral(e,t){let n=t;for(;n<e.length&&":"!==e[n];)n++;return{value:e.slice(t,n),endIndex:n}}getAllParamNames(){const e=new Set,t=n=>{for(const o of n)switch(o.type){case"param":case"splat":e.add(o.name);break;case"optional":t(o.segments)}};return t(this.parsed.pathSegments),t(this.parsed.querySegments),Array.from(e)}canMatchRemainingSegments(e,t,n){let o=t;for(const t of n)if("literal"===t.type){const n=e.indexOf(t.value,o);if(-1===n)return!1;o=n+t.value.length}return!0}match(e){const[t,n]=e.split("?"),o=this.matchPath(t,this.parsed.pathSegments);if(!1===o)return!1;const r=this.matchQuery(n||"",this.parsed.querySegments);if(!1===r)return!1;const s=this.getAllParamNames(),i={};for(const e of s)i[e]=void 0;return Object.assign(i,o,r),i}matchPath(e,t){const n={};let o=0;for(let r=0;r<t.length;r++){const s=t[r],i=t.slice(r+1),a=this.matchSegment(e,o,s,i);if(!1===a)return!1;Object.assign(n,a.params),o=a.nextIndex}return!(o<e.length)&&n}matchSegment(e,t,n,o=[]){switch(n.type){case"literal":return e.slice(t,t+n.value.length)===n.value&&{params:{},nextIndex:t+n.value.length};case"param":{let r=t;const s=o[0];let i,a=["/","?"];if(s&&"literal"===s.type){const n=e.indexOf(s.value,t);if(-1===n)return!1;r=n}else for(;r<e.length&&!a.includes(e[r]);)r++;if(r===t)return!1;try{i=decodeURIComponent(e.slice(t,r))}catch(n){i=e.slice(t,r)}return!(r<e.length&&"?"===e[r]&&o.length>0)&&{params:{[n.name]:i},nextIndex:r}}case"splat":{let r=e.length;const s=o[0];if(s)switch(s.type){case"literal":if("."===s.value){const n=e.indexOf(".",t);-1!==n&&(r=n)}else{const n=e.lastIndexOf(s.value);-1!==n&&n>=t&&(r=n)}break;case"param":let n=-1;for(let o=e.length-1;o>=t;o--)if("/"===e[o]){n=o;break}-1!==n&&(r=n);break;case"splat":let o=-1;for(let n=e.length-1;n>t;n--)if("/"===e[n]){o=n+1;break}if(-1!==o)r=o;else{const n=e.slice(t).split("/").filter(e=>e);r=n.length>1?t+n.slice(0,-1).join("/").length+1:t}break;case"optional":const i=e=>{for(const t of e){if("literal"===t.type)return t.value;if("optional"===t.type){const e=i(t.segments);if(e)return e}}return null},a=i(s.segments);if(a){const n=e.lastIndexOf(a);-1!==n&&n>=t&&(r=n)}}const i=e.indexOf("?",t);let a;-1!==i&&i<r&&(r=i);try{a=decodeURIComponent(e.slice(t,r))}catch(n){a=e.slice(t,r)}return{params:{[n.name]:a},nextIndex:r}}case"optional":{let r=t,s={},i=!0;for(let t=0;t<n.segments.length;t++){const o=n.segments[t],a=n.segments.slice(t+1),c=this.matchSegment(e,r,o,a);if(!1===c){i=!1;break}Object.assign(s,c.params),r=c.nextIndex}return i&&this.canMatchRemainingSegments(e,r,o)?{params:s,nextIndex:r}:{params:{},nextIndex:t}}default:return!1}}findNextLiteral(e){for(const t of e){if("literal"===t.type)return t;if("optional"===t.type){const e=this.findNextLiteral(t.segments);if(e)return e}}return null}matchQuery(e,t){if(0===t.length)return{};const n={};let o=0;for(const r of t)switch(r.type){case"literal":if(e.slice(o,o+r.value.length)!==r.value)return!1;o+=r.value.length;break;case"param":{let t,s=o;for(;s<e.length&&"&"!==e[s];)s++;if(s===o)return!1;try{t=decodeURIComponent(e.slice(o,s))}catch(n){t=e.slice(o,s)}n[r.name]=t,o=s;break}}return n}reverse(e={}){const t=this.reverseSegments(this.parsed.pathSegments,e);if(!1===t)return!1;let n=t;if(this.parsed.querySegments.length>0){const t=this.reverseSegments(this.parsed.querySegments,e);if(!this.parsed.queryOptional&&!1===t)return!1;t&&""!==t&&(n+="?"+t)}return n}reverseSegments(e,t,n=!1){let o="";for(let r=0;r<e.length;r++){const s=e[r],i=e.slice(r+1);switch(s.type){case"literal":o+=s.value;break;case"param":case"splat":if(!(s.name in t))return!1;o+=String(t[s.name]);break;case"optional":if(this.hasAllParams(s.segments,t,n)||this.hasLaterOptionalGroupNeedingParams(i,t,s.segments)){const e=this.reverseSegments(s.segments,t,!0);if(!1===e)return!1;o+=e}}}return o}hasLaterOptionalGroupNeedingParams(e,t,n){for(const o of e)if("optional"===o.type&&this.hasAnyParamInSegments(o.segments,t))return this.hasOnlyLiteralsAndOptionals(n);return!1}hasOnlyLiteralsAndOptionals(e){for(const t of e)if("param"===t.type||"splat"===t.type)return!1;return!0}hasAllParams(e,t,n=!1){let o=!1,r=!1,s=!1,i=!0;for(const n of e)switch(n.type){case"param":case"splat":i=!1,n.name in t&&void 0!==t[n.name]?o=!0:s=!0}const a=n||o&&!s;for(const n of e)"optional"===n.type&&this.hasAllParams(n.segments,t,a)&&(r=!0);return!(!o||s)||!(!r||s)||!(!i||!n)}hasOnlyOptionalMissingParams(e,t){for(const n of e)switch(n.type){case"param":case"splat":if(!(n.name in t))return!1}return!0}hasAnyParamInSegments(e,t){for(const n of e)switch(n.type){case"param":case"splat":if(n.name in t)return!0;break;case"optional":if(this.hasAnyParamInSegments(n.segments,t))return!0}return!1}}function Xn(e){const t=e.split("/").filter(Boolean);let n=t.length;for(const e of t)e.startsWith("*")?n+=-2:e.startsWith(":")?n+=3:n+=10;return n}function Yn(e){const t={};return e.split(";").forEach(e=>{const n=e.indexOf(":");if(-1===n)return;const o=e.slice(0,n).trim(),r=e.slice(n+1).trim();o&&r&&(t[o]=r)}),t}function Zn(e,t,n,o){if(e.style.position="absolute",e.style.width="100%",t)return e.style.height="100%",void(e.style.transition=`opacity ${n}ms ease-in-out`);e.style.top="0",e.style.left="0",e.style.transition=`${o} ${n}ms ease-in-out`}function eo(e){if(!ot(e))throw new TypeError("Application contexts may provide only instances of @daemon classes.");const t=rt(e);if(0===t.bindings){t.active=!0;try{gt(e,t.target),at(e,t.target)}catch(n){throw ct(e),vt(e),t.active=!1,n}}t.bindings+=1;let n=!1;return()=>{n||(n=!0,t.bindings=Math.max(0,t.bindings-1),0===t.bindings&&(ct(e),vt(e),kn(e),t.active=!1,t.target=new EventTarget))}}function to(e,t){const n=function(e,t){if(!e||"function"!=typeof e.addEventListener||"function"!=typeof e.removeEventListener)throw new TypeError("provideContext() requires an EventTarget root.");if(!t||"object"!=typeof t)throw new TypeError("provideContext() requires an application context object.");if(tt.has(e))throw new Error("This root already provides an application context. Release it before providing another.");const n=e=>{const n=e;n.detail&&void 0===n.detail.context&&(n.detail.context=t,n.preventDefault(),n.stopPropagation())};e.addEventListener(et,n),tt.set(e,{listener:n});let o=!1;return()=>{if(o)return;o=!0;const t=tt.get(e);t?.listener===n&&(e.removeEventListener(et,n),tt.delete(e))}}(e,t);let o;try{o=function(e){const t=e.daemons;if(void 0===t)return()=>{};if(!t||"object"!=typeof t||Array.isArray(t))throw new TypeError("AppContext.daemons must be a readonly record of named @daemon instances.");const n=[],o=new Set;try{for(const[e,r]of Object.entries(t)){if(!e.trim())throw new TypeError("AppContext.daemons keys must be non-empty strings.");if(!r||"object"!=typeof r)throw new TypeError(`AppContext.daemons["${e}"] must be an instance of an @daemon class.`);o.has(r)||(o.add(r),n.push(eo(r)))}}catch(e){for(const e of n.reverse())e();throw e}return()=>{for(const e of n.reverse())e()}}(t)}catch(e){throw n(),e}let r=!1;return()=>{r||(r=!0,n(),o?.())}}const no=new WeakMap;var oo;!function(e){e.SUCCESS="success",e.GUARDS_FAILED="guards-failed",e.NOT_FOUND="not-found"}(oo||(oo={}));let ro=!1;async function so(e,t=500){if(customElements.get(e))return;let n=null;ro||(n=setTimeout(()=>{console.warn(`Custom element <${e}> is taking longer than ${t}ms to register. This may indicate a missing import or circular dependency. Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`)},t));try{await customElements.whenDefined(e)}finally{n&&clearTimeout(n)}}async function io(e,t=500){const n=e.tagName.toLowerCase();await so(n,t),"ready"in e&&"function"==typeof e.ready?.then&&await e.ready}let ao=0,co=null;const lo=Symbol.for("snice:body-scroll-lock");var ho;return globalThis[lo]={clear(){ao=0,co=null}},"undefined"!=typeof document&&Tt(),globalThis.snice||(globalThis.snice={controllerRegistry:new Map,pendingControllerAttachments:new Map,controllerIdCounter:0}),globalThis.snice.pendingControllerAttachments??=new Map,function(e){e.SEQUENTIAL="sequential",e.SIMULTANEOUS="simultaneous"}(ho||(ho={})),e.Context=je,e.ContextAwareFetcher=class{constructor(){this.requestMiddlewares=[],this.responseMiddlewares=[]}use(e,t){"request"!==e?this.responseMiddlewares.push(t):this.requestMiddlewares.push(t)}create(e){const t=this.requestMiddlewares,n=this.responseMiddlewares;return async function(e,o){const r=new Request(e,o);let s=0;const i=async()=>{if(s<t.length)return t[s++].call(this,r,i);const e=await fetch(r);let o=0;const a=async()=>o<n.length?n[o++].call(this,e,a):e;return a()};return i()}.bind(e)}},e.IS_CONTROLLER_INSTANCE=r,e.Router=function(t){const n=t.window??window,o=t.document??document,r=[];let s,i,a,c=!1,l=[],h=null,u=null;const d=t.context||{};let f=null,m=null;const p=new je(d,[],"",{},t.fetcher);function y(e){if(f===e&&m&&no.get(e)===m)return;m?.(),no.get(e)?.();const t=to(e,d);let n=!1;const o=()=>{n||(n=!0,t(),no.get(e)===o&&no.delete(e))};m=o,f=e,no.set(e,o)}function g(e){if(!h||!u)return null;const t=e.querySelectorAll(h);for(const e of t)if(e[V]===u)return e;return null}function v(e,t,n,o,l,h){switch(r.push({route:new Jn(e),tag:t,transition:n,guards:o,layout:l,placard:h}),c=!1,e){case"/404":s=t;break;case"/403":i=t;break;case"/":a=t}}function b(){const e=new Set;l=r.filter(e=>e.placard).map(e=>{const t=e.placard;return"function"==typeof t?t(d):t}).filter(t=>!e.has(t.name)&&(e.add(t.name),!0))}function w(e,t,n){p[me](d,l,t,n)}function E(){switch(t.type){case"hash":return n.location.hash.slice(1);case"pushstate":return`${n.location.pathname}${n.location.search}`}}function N(e){let t;if(i)t=o.createElement(i),t[I]=d;else{const e=o.createElement("div");e.className="default-403",e.innerHTML="<h1>403</h1><p>Unauthorized</p>",t=e}e.innerHTML="",e.appendChild(t),h=null,u=null}async function S(e,t,n,r){if(!e)return!0;const s=Array.isArray(e)?e:[e];let i=null,a=null;a=setTimeout(()=>{r&&r()||(i=function(){const e=o.createElement("div");return e.setAttribute("data-snice-loading",""),e.innerHTML='\n <style>@keyframes snice-spin{to{transform:rotate(360deg)}}</style>\n <div style="display:flex;align-items:center;justify-content:center;height:100%;min-height:200px">\n <div style="width:32px;height:32px;border:3px solid rgba(128,128,128,0.3);border-top-color:rgba(128,128,128,0.8);border-radius:50%;animation:snice-spin 0.6s linear infinite"></div>\n </div>',e}(),n.appendChild(i))},50);try{for(const e of s)if(!await e(d,t))return r&&r()||N(n),!1;return!0}finally{a&&clearTimeout(a),i&&i.remove()}}async function T(e,n,r,s,i,a,c){const f=!1===(m=s)?null:m||(t.layout?t.layout:null);var m;const{element:p,needsNewLayout:y}=function(e){if(e===h)return{element:null,needsNewLayout:!1};if(h=e,e){const t=Date.now();u=t;const n=o.createElement(e);return n[I]=d,n[V]=t,{element:n,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(f),v=r||t.transition;if(null!==p||null!==g(e)){if(await async function(e,t,n,o,r,s,i,a){const c=o||g(e);if(!c)return;!function(e,t,n){"function"==typeof e.update&&e.update(d,l,t,n)}(c,s,i);const h=c.querySelector('[slot="page"]');if(n&&h){if(t.setAttribute("slot","page"),await C(c,h,t,n),a&&a())return;r&&(e.innerHTML="",e.appendChild(c))}else a&&a()||(c.querySelectorAll('[slot="page"]').forEach(e=>e.remove()),t.setAttribute("slot","page"),c.appendChild(t),r&&(e.innerHTML="",e.appendChild(c)))}(e,n,v,p,y,i,a,c),c&&c())return;w(0,i,a)}else await async function(e,t,n,o){const r=e.children[0];n&&r?await C(e,r,t,n):o&&o()||(e.innerHTML="",e.appendChild(t))}(e,n,v,c),c&&c()||w(0,i,a)}let A=0;async function _(e){const i=o.querySelector(t.target);if(!i)throw new Error(`Target element not found: ${t.target}`);y(i);const c=++A,l=()=>c!==A;if(b(),n.scrollTo(0,0),(""===e?.trim()||"/"===e)&&a){const t=r.find(e=>e.route.match("/"));if(!await S(t?.guards,{},i,l))return;if(l())return;const{element:s,transition:c,layout:h}=function(){const e=o.createElement(a);e[I]=d;const t=n.customElements.get(a),s=t?.[D],i=r.find(e=>e.route.match("/"));return{element:e,transition:s,layout:i?.layout}}();return void await T(i,s,c,h,e,{},l)}if(!e)return;const h=await async function(e,t,n){for(const s of r){const r=s.route.match(e);if(!1===r)continue;if(!await S(s.guards,r,t,n))return{result:oo.GUARDS_FAILED};const i=o.createElement(s.tag);i[I]=d,i[se]=p;const a=r;return Object.keys(a).forEach(e=>i.setAttribute(e,a[e])),{result:oo.SUCCESS,element:i,transition:s.transition,layout:s.layout,routeParams:a}}return{result:oo.NOT_FOUND}}(e,i,l);if(l())return;if(h.result===oo.GUARDS_FAILED)return;if(h.result===oo.SUCCESS){const{element:t,transition:n,layout:o,routeParams:r={}}=h;return void await T(i,t,n,o,e,r,l)}const{element:u,transition:f,layout:m}=function(){if(s){const e=o.createElement(s);e[I]=d;const t=n.customElements.get(s),r=t?.[D];return{element:e,transition:r,layout:void 0}}const e=o.createElement("div");return e.className="default-404",e.innerHTML="<h1>404</h1><p>Page not found</p>",{element:e,transition:void 0,layout:void 0}}();await T(i,u,f,m,e,{},l)}async function C(t,n,o,r,s=A){return async function(t,n,o,r={},s=()=>!1){const i=r.outDuration??300,a=r.inDuration??300,c=r.mode||"sequential",l=r.out?Yn(r.out):{opacity:"0"},h={opacity:"0"},u=r.in?Yn(r.in):{opacity:"1"},d=t.style,f=t.tagName.includes("-")&&t.shadowRoot,m=Symbol.for("snice:transition-original-position"),p=Symbol.for("snice:transition-count"),y=t;f||(m in y||(y[m]=d.position,y[p]=0),y[p]++,d.position="relative");const g=()=>{f||(y[p]--,y[p]<=0&&(d.position=y[m],delete y[m],delete y[p]))},v=n.hasAttribute("slot")||o.hasAttribute("slot");switch(Zn(n,v,i,"all"),Zn(o,v,a,"all"),Object.assign(o.style,h),t.appendChild(o),c){case e.TransitionMode.SIMULTANEOUS:Object.assign(n.style,l),Object.assign(o.style,u),await new Promise(e=>setTimeout(e,Math.max(i,a)));break;case e.TransitionMode.SEQUENTIAL:if(Object.assign(n.style,l),await new Promise(e=>setTimeout(e,i)),s())return o.parentNode===t&&o.remove(),void g();Object.assign(o.style,u),await new Promise(e=>setTimeout(e,a))}if(s())return o.parentNode===t&&o.remove(),void g();n.remove(),function(e,t){e.style.position="",e.style.width="",e.style.transition="",t?e.style.height="":(e.style.top="",e.style.left="")}(o,v),Object.keys({...h,...u}).forEach(e=>{o.style[e]=""}),g()}(t,n,o,r,()=>s!==A)}return{page:function(e){return function(t,o){if(o?.metadata&&o.metadata[x]){t[x]||(t[x]=new Map);for(const[e,n]of o.metadata[x])t[x].set(e,n)}Dn(t),t[D]=e.transition;const r=t.prototype.connectedCallback;t.prototype.connectedCallback=function(){this[se]=p,r?.call(this)};const s=t.prototype.disconnectedCallback;return t.prototype.disconnectedCallback=function(){s?.call(this),delete this[I],delete this[se]},n.customElements.get(e.tag)||n.customElements.define(e.tag,t),e.routes.forEach(t=>v(t,e.tag,e.transition,e.guards,e.layout,e.placard)),t}},initialize:function(){const e=o.querySelector(t.target);if(!e)throw new Error(`Target element not found: ${t.target}`);y(e),!c&&(r.sort((e,t)=>Xn(t.route.spec)-Xn(e.route.spec)),c=!0),b(),function(){const e=()=>{const e=o.querySelector(t.target);if(e&&(f!==e||!m||no.get(e)===m))return f!==e&&tt.has(e)?(m?.(),m=null,void(f=null)):void _(E())};switch(t.type){case"hash":n.addEventListener("hashchange",e);break;case"pushstate":n.addEventListener("popstate",e)}}(),_(E())},navigate:async function(e){const o=function(e){const t=e.trim().replace(/^#/,"");return t?t.startsWith("/")?t:`/${t}`:"/"}(e);!function(e){switch(t.type){case"hash":{const t=`#${e}`;n.location.hash!==t&&n.history.pushState(null,"",t);break}case"pushstate":`${n.location.pathname}${n.location.search}`!==e&&n.history.pushState(null,"",e)}}(o),await _(o)},register:v}},e.SimpleArray=xe,e.SniceElement=Qn,e.adopted=Gn,e.applyElementFunctionality=Dn,e.attachController=Nt,e.classMap=function(e){let t="";for(const n of Object.keys(e))e[n]&&(t+=(t?" ":"")+n);return t},e.clearDebounceTimers=Mn,e.clearMemoizeCache=function(e,t){e[jn]&&(t?delete e[jn][t]:e[jn]={})},e.clearThrottleTimers=Rn,e.context=function(e={}){return function(t,n){const o=n.name;return n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,pe)||(n[pe]=new Set),!n[pe].has(t)){if(n[pe].add(t),!Object.prototype.hasOwnProperty.call(n,At)){const e=n[At];n[At]=e?[...e]:[]}n[At].push({methodName:o,method:t,options:e})}}),t}},e.contextProperty=function(){return function(e,t){const n=t.name;return function(e){return Object.hasOwn(this.constructor.prototype,n)||Object.defineProperty(this.constructor.prototype,n,{get(){if(void 0!==this[I])return this[I];const e=nt(this);return void 0!==e?e:void 0},set(){},configurable:!0,enumerable:!0}),e}}},e.controller=function(e){return function(n,r){const s=globalThis.snice?.controllerRegistry;if(!s)throw new Error("Snice global registry not initialized");s.set(e,n),n.prototype[o]=!0;const i=t.pendingControllerAttachments.get(e);return i&&(t.pendingControllerAttachments.delete(e),queueMicrotask(()=>{for(const t of i){const n=t[T];(void 0===n?t[v]:n)===e&&Nt(t,e).catch(t=>{"ControllerAttachAborted"!==t?.name&&console.error(`Failed to attach controller "${e}":`,t)})}})),n}},e.createRequestHandler=function(e,t,n){const o=[];for(const[r,s]of Object.entries(t)){const t=`@request/${r}`,i=e=>{const t=e,{discovery:o,data:i,payload:a}=t.detail;n?.passive||(t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation()),o.resolve(),Promise.resolve().then(()=>s(a)).then(e=>i.resolve(e)).catch(e=>{i.reject(e),console.error(`createRequestHandler: error in "${r}" handler:`,e)})};e.addEventListener(t,i),o.push(()=>e.removeEventListener(t,i))}return()=>{for(const e of o)e();o.length=0}},e.css=function(e,...t){const n=0===t.length?Ot.get(e):void 0;if(n)return n;let o=e[0];for(let n=0;n<t.length;n++){const r=t[n];o+=($t(r)?r.cssText:String(r))+e[n+1]}const r={_$litType$:xt,cssText:o};if("undefined"!=typeof CSSStyleSheet&&"undefined"!=typeof Document&&"adoptedStyleSheets"in Document.prototype)try{const e=new CSSStyleSheet;e.replaceSync(o),r.styleSheet=e}catch(e){}return 0===t.length&&Ot.set(e,r),r},e.daemon=function(e,t){Object.defineProperty(e.prototype,s,{value:!0,configurable:!0})},e.debounce=function(e=300,t={}){const{leading:n=!1,trailing:o=!0,maxWait:r}=t;return function(t,s){const i=s.name;return function(...s){this[$n]||(this[$n]={});const a=this[$n],c=i;a[c]&&clearTimeout(a[c].timeout);const l=Date.now(),h=!a[c],u=h?l:a[c].startTime,d=void 0!==r&&l-u>=r;if(n&&h){const e=t.apply(this,s);return a[c]={timeout:null,startTime:u,lastArgs:s},e}const f=setTimeout(()=>{(o||d)&&t.apply(this,a[c].lastArgs),delete a[c]},d?0:e);a[c]={timeout:f,startTime:u,lastArgs:s}}}},e.detachController=St,e.dispatch=function(e,t){return function(n,o){return function(...r){this[Q]||(this[Q]=new Map);const s=`${e}_${o.name}`;this[Q].has(s)||this[Q].set(s,{debounceTimeout:null,throttleLastCall:0,throttleTimeout:null});const i=this[Q].get(s),a=n.apply(this,r),c=n=>{if(void 0===n&&!1===t?.dispatchOnUndefined)return;const o=new CustomEvent(e,{bubbles:t?.bubbles??!0,cancelable:t?.cancelable??!1,composed:t?.composed??!0,detail:n});if(void 0!==t?.scope&&void 0!==t?.daemon)throw new TypeError(`@dispatch('${e}') cannot use both scope and daemon.`);if(void 0!==t?.daemon)return void st(this,t.daemon).dispatchEvent(o);if(void 0!==t?.scope){const n=ze(this,t.scope);return n?void n.dispatchEvent(o):void console.warn(`[snice/@dispatch] scope did not resolve for "${e}" — event not dispatched.`)}const r=it(this);if(!r)throw new TypeError(`@dispatch('${e}') requires an element, attached controller, or provided @daemon instance.`);r.dispatchEvent(o)},l=e=>{if(t?.debounce)return clearTimeout(i.debounceTimeout),void(i.debounceTimeout=setTimeout(()=>c(e),t.debounce));if(!t?.throttle)return void c(e);const n=Date.now(),o=t.throttle-(n-i.throttleLastCall);if(o<=0)return clearTimeout(i.throttleTimeout),i.throttleLastCall=n,void c(e);i.latestDetail=e,i.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null;const e=i.latestDetail;i.latestDetail=void 0,c(e)},o))};return a instanceof Promise?a.then(e=>(l(e),e)):(l(a),a)}}},e.dispose=function(){return function(e,t){zn(B,Ee,e,t)}},e.element=function(e,t){if(void 0!==t?.renderRoot&&"shadow"!==t.renderRoot&&"light"!==t.renderRoot)throw new TypeError('snice: @element renderRoot must be "shadow" or "light".');if(void 0!==t?.shadow&&!1!==t.shadow&&"open"!==t.shadow&&"closed"!==t.shadow)throw new TypeError('snice: @element shadow must be "open", "closed", or false.');return function(n,o){return Vn(e,n,o,t)}},e.escapeAttr=function(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")},e.escapeHtml=function(e){return String(e??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},e.getBodyScrollLockCount=function(){return ao},e.getContext=nt,e.getController=function(e){return e[w]},e.getSymbol=n,e.html=function(e,...t){return{_$litType$:Ct,strings:e,values:t}},e.isSafeUrl=function(e,t={}){let n;try{n=String(e??"")}catch{return!1}if(!n||/[\u0000-\u001f\u007f]/.test(n))return!1;const o=n.trim();if(!o)return!1;const r=t.allowed??["http:","https:","mailto:","tel:"];try{const e=new URL(o,"http://__snice-relative.invalid/"),t=/^[a-z][a-z\d+.-]*:/i.test(o),n=/^[\\/]{2}/.test(o);return!t&&!n||r.some(t=>"string"==typeof t&&t.toLowerCase()===e.protocol)}catch{return!1}},e.layout=function(e){return function(t,n){return Vn(e,t,n)}},e.live=function(e){return{_$liveMarker$:Gt,value:e}},e.lockBodyScroll=function(){0===ao&&(co=document.body.style.overflow,document.body.style.overflow="hidden"),ao++},e.memoize=function(e={}){const{keyGenerator:t=(...e)=>JSON.stringify(e),maxSize:n=100,ttl:o}=e;return function(e,r){const s=r.name;return function(...r){this[jn]||(this[jn]={}),this[jn][s]||(this[jn][s]=new Map);const i=this[jn][s],a=t(...r);if(i.has(a)){const e=i.get(a);if(!(void 0!==o&&Date.now()-e.timestamp>o))return e.value;i.delete(a)}const c=e.apply(this,r);if(i.set(a,{value:c,timestamp:Date.now()}),i.size>n){const e=i.keys().next().value;i.delete(e)}return c}}},e.moved=Kn,e.noChange=Kt,e.nothing=Lt,e.observe=function(e,t,n){let o,r;return"string"==typeof t?(o=t,r=n):(o=void 0,r=t),function(t,n){const s=n.name;n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,ge)||(n[ge]=new Set),n[ge].has(t))return;if(n[ge].add(t),!Object.prototype.hasOwnProperty.call(n,U)){const e=n[U];n[U]=e?[...e]:[]}const i=Array.isArray(e)?e:[e];for(const e of i){const[i,...a]=e.split(":"),c=a.join(":");n[U].push({type:i,target:c,selector:o,methodName:s,method:t,options:r})}})}},e.on=function(e,t,n){let o=null,r={};return"string"==typeof t?(o=t,r=n||{}):t&&"object"==typeof t?r=t:null===t&&n&&(r=n),function(t,n){const s=n.name;return n.addInitializer(function(){const n=this.constructor,i=Array.isArray(e)?e:[e],a=`${s}::${i.join(",")}::${o??""}::daemon:${r.daemon??""}`;if(Object.prototype.hasOwnProperty.call(n,ve)||(n[ve]=new Set),!n[ve].has(a)){if(n[ve].add(a),!Object.prototype.hasOwnProperty.call(n,mt)){const e=n[mt];n[mt]=e?[...e]:[]}for(const e of i)n[mt].push({eventName:e,selector:o,methodName:s,method:t,options:r})}}),t}},e.once=function(e=!0){let t,n=!1;return function(o,r){const s=r.name;return function(...r){return e?(this[Pn]||(this[Pn]={}),this[Pn][s]||(this[Pn][s]={called:!0,result:o.apply(this,r)}),this[Pn][s].result):(n||(n=!0,t=o.apply(this,r)),t)}}},e.parseDuration=function(e){const t=String(e).trim(),n=parseFloat(t);let o;return o=isNaN(n)?0:/ms$/i.test(t)?n:/s$/i.test(t)?1e3*n:/m$/i.test(t)?6e4*n:/h$/i.test(t)?36e5*n:n,{milliseconds:()=>o,seconds:()=>o/1e3,minutes:()=>o/6e4}},e.property=Fn,e.provideContext=to,e.query=function(e,t={}){return function(n,o){const{light:r=!1,shadow:s=!0}=t,i=o.name;return function(t){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const t=Wn(this);let n=null;const o=t instanceof HTMLElement?It(t):null;return s&&o?n=o.querySelector(e):s&&t.shadowRoot&&(n=t.shadowRoot.querySelector(e)),!n&&r&&(n=t.querySelector(e)),n||null},set(){},configurable:!0,enumerable:!0}),t}}},e.queryAll=function(e,t={}){return function(n,o){const{light:r=!1,shadow:s=!0}=t,i=o.name;return function(t){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const t=Wn(this),n=new Set,o=t instanceof HTMLElement?It(t):null;if(s&&o)for(const t of o.querySelectorAll(e))n.add(t);else if(s&&t.shadowRoot)for(const o of t.shadowRoot.querySelectorAll(e))n.add(o);if(r)for(const o of t.querySelectorAll(e))n.add(o);return[...n]},set(){},configurable:!0,enumerable:!0}),t}}},e.ready=function(){return function(e,t){zn(q,we,e,t)}},e.reconnect=function(){return function(e,t){zn(F,Ne,e,t)}},e.render=function(e={}){return function(t,n){return n.addInitializer(function(){this[J]=t,this[X]=e}),function(...n){const o=t.apply(this,n);return Cn(this,{...this[X]||e,once:!1},o),o}}},e.repeat=function(e,t){if(!t||"function"!=typeof t.key||"function"!=typeof t.render)throw new TypeError("snice: repeat() requires { key, render }.");const n=null==e?[]:Array.from(e),o=n.map(t.key),r=new Set;for(const e of o){if(r.has(e))throw new Error(`snice: repeat() received duplicate key ${String(e)}.`);r.add(e)}return{_$repeat$:Mt,items:n,keys:o,values:n.map(t.render),empty:0===n.length?"function"==typeof t.empty?t.empty():t.empty:void 0}},e.request=function(e,t){return function(n,o){let r,s,i=0;const a=[];return async function(...o){const c=async()=>{const r=t?.timeout??12e4,s=t?.discoveryTimeout??50,i=void 0!==t?.daemon?st(this,t.daemon):it(this);if(!i)throw new TypeError(`@request('${e}') requires an element, attached controller, or provided @daemon instance.`);const a=n.apply(this,o),{value:c,done:l}=await a.next();if(l)return c;let h,u;const d=new Promise((e,t)=>{h=e,u=t});let f,m,p,y=!1;const g=new Promise((t,n)=>{f=t,m=n,p=setTimeout(()=>{n(new Error(`Request "${e}" found no @respond('${e}') handler within ${s}ms — attach a responding controller/element, or pass { optional: true } to resolve undefined when unhandled.`))},s)}),v=new CustomEvent(`@request/${e}`,{bubbles:void 0===t?.bubbles||t.bubbles,cancelable:t?.cancelable||!1,composed:!0,detail:{payload:c,discovery:{resolve:()=>{y=!0,clearTimeout(p),f()},reject:m},data:{resolve:h,reject:u}}});i.dispatchEvent(v);try{await g;const t=setTimeout(()=>{u(new Error(`Request "${e}" timed out after ${r}ms`))},r),n=await d;clearTimeout(t);const{value:o}=await a.next(n);return o}catch(e){if(t?.optional&&!y){const{value:e}=await a.next(void 0);return e}const{value:n}=await a.throw(e);return n}};if(t?.debounce)return new Promise((e,n)=>{clearTimeout(r),r=setTimeout(async()=>{try{e(await c())}catch(e){n(e)}},t.debounce)});if(!t?.throttle)return c();const l=Date.now(),h=t.throttle-(l-i);if(h<=0){clearTimeout(s),s=null,i=l;const e=a.splice(0),t=c();return e.length&&t.then(t=>{for(const n of e)n.resolve(t)},t=>{for(const n of e)n.reject(t)}),t}return new Promise(s?(e,t)=>{a.push({resolve:e,reject:t})}:(e,t)=>{a.push({resolve:e,reject:t}),s=setTimeout(async()=>{i=Date.now(),s=null;const e=a.splice(0);try{const t=await c();for(const n of e)n.resolve(t)}catch(t){for(const n of e)n.reject(t)}},h)})}}},e.resetOnce=function(e,t){e[Pn]&&(t?delete e[Pn][t]:e[Pn]={})},e.respond=function(e,t){return function(n,o){const r=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,be)||(o[be]=new Set),!o[be].has(n)){if(o[be].add(n),!Object.prototype.hasOwnProperty.call(o,c)){const e=o[c];o[c]=e?[...e]:[]}o[c].push({channelName:e,methodName:r,method:n,options:t})}})}},e.setDisableElementReadyWarnings=function(e){ro=e},e.setStrictRenderErrors=function(e){wn=e},e.state=function(e={}){return Fn({...e,attribute:!1,reflect:!1})},e.styleMap=function(e){const t=[];for(const n of Object.keys(e)){const o=e[n];if(null==o||!1===o)continue;const r=n.startsWith("--")?n:n.replace(/[A-Z]/g,e=>"-"+e.toLowerCase());t.push(`${r}: ${o}`)}return t.join("; ")},e.styles=function(){return function(e,t){return t.addInitializer(function(){this[te]&&!this[oe]?this[oe]=[this[te]]:this[te]&&this[oe]&&this[oe].push(this[te]),this[te]=e}),e}},e.svg=function(e,...t){return{_$litType$:Ct,strings:e,values:t,svg:!0}},e.throttle=function(e=300,t={}){const{leading:n=!0,trailing:o=!0}=t;return function(t,r){const s=r.name;return function(...r){this[Ln]||(this[Ln]={});const i=this[Ln],a=s,c=Date.now();if(!i[a])return n&&t.apply(this,r),i[a]={lastInvoke:c,timeout:null,lastArgs:r},void(o&&!n&&(i[a].timeout=setTimeout(()=>{t.apply(this,i[a].lastArgs),delete i[a]},e)));const l=c-i[a].lastInvoke;if(i[a].lastArgs=r,i[a].timeout&&clearTimeout(i[a].timeout),l>=e)return t.apply(this,r),void(i[a].lastInvoke=c);o&&(i[a].timeout=setTimeout(()=>{t.apply(this,i[a].lastArgs),i[a].lastInvoke=Date.now(),i[a].timeout=null},e-l))}}},e.trackRenders=async function*(e){for(;;)await new Promise(t=>{e[ee]||(e[ee]=[]),e[ee].push(t)}),yield},e.unlockBodyScroll=function(){0!==ao&&(ao--,0===ao&&(document.body.style.overflow=co??"",co=null))},e.unsafeHTML=function(e){return{_$litType$:Pt,html:e}},e.useNativeElementControllers=Tt,e.waitForAllCustomElements=async function(e,t=500){const n=[];e instanceof Element&&(e.tagName.includes("-")&&n.push(e),e.shadowRoot)&&e.shadowRoot.querySelectorAll("*").forEach(e=>{e.tagName.includes("-")&&n.push(e)}),e instanceof DocumentFragment&&e.querySelectorAll("*").forEach(e=>{e.tagName.includes("-")&&n.push(e)}),await Promise.all(n.map(e=>io(e,t)))},e.waitForElementDefined=so,e.waitForElementReady=io,e.watch=function(...e){const t=e.filter(e=>"string"==typeof e),n=e.find(e=>"object"==typeof e&&null!==e),o=!1!==n?.immediate;return function(e,n){const r=n.name;n.addInitializer(function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,ye)||(n[ye]=new Map);let s=n[ye].get(e);if(s||(s=new Set,n[ye].set(e,s)),!Object.prototype.hasOwnProperty.call(n,M)){const e=n[M],t=new Map;if(e)for(const[n,o]of e)t.set(n,[...o]);n[M]=t}for(const i of t)s.has(i)||(s.add(i),n[M].has(i)||n[M].set(i,[]),n[M].get(i).push({methodName:r,method:e,immediate:o}))})}},e}({});
2
2
  //# sourceMappingURL=snice-runtime.min.js.map