snice 5.1.0 → 5.2.1

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 (323) hide show
  1. package/adapters/react/SniceProvider.js +1 -1
  2. package/adapters/react/SniceRouter.js +1 -1
  3. package/adapters/react/matchRoute.js +1 -1
  4. package/adapters/react/useRequestHandler.js +1 -1
  5. package/dist/cdn/accordion/snice-accordion.js +1 -1
  6. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  7. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  8. package/dist/cdn/action-bar/snice-action-bar.min.js +1 -1
  9. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  10. package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
  11. package/dist/cdn/alert/snice-alert.js +1 -1
  12. package/dist/cdn/alert/snice-alert.min.js +1 -1
  13. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  14. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  15. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  16. package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
  17. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  18. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  19. package/dist/cdn/availability/snice-availability.js +1 -1
  20. package/dist/cdn/availability/snice-availability.min.js +1 -1
  21. package/dist/cdn/avatar/snice-avatar.js +1 -1
  22. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  23. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  24. package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
  25. package/dist/cdn/badge/snice-badge.js +1 -1
  26. package/dist/cdn/badge/snice-badge.min.js +1 -1
  27. package/dist/cdn/banner/snice-banner.js +1 -1
  28. package/dist/cdn/banner/snice-banner.min.js +1 -1
  29. package/dist/cdn/binpack/snice-binpack.js +1 -1
  30. package/dist/cdn/binpack/snice-binpack.min.js +1 -1
  31. package/dist/cdn/book/snice-book.js +1 -1
  32. package/dist/cdn/book/snice-book.min.js +1 -1
  33. package/dist/cdn/booking/snice-booking.js +1 -1
  34. package/dist/cdn/booking/snice-booking.min.js +1 -1
  35. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  36. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  37. package/dist/cdn/button/snice-button.js +1 -1
  38. package/dist/cdn/button/snice-button.min.js +1 -1
  39. package/dist/cdn/calendar/snice-calendar.js +1 -1
  40. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  41. package/dist/cdn/camera/snice-camera.js +1 -1
  42. package/dist/cdn/camera/snice-camera.min.js +1 -1
  43. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  44. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  45. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  46. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  47. package/dist/cdn/card/snice-card.js +1 -1
  48. package/dist/cdn/card/snice-card.min.js +1 -1
  49. package/dist/cdn/carousel/snice-carousel.js +1 -1
  50. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  51. package/dist/cdn/cart/snice-cart.js +1 -1
  52. package/dist/cdn/cart/snice-cart.min.js +1 -1
  53. package/dist/cdn/chart/snice-chart.js +1 -1
  54. package/dist/cdn/chart/snice-chart.min.js +1 -1
  55. package/dist/cdn/chat/README.md +1 -1
  56. package/dist/cdn/chat/snice-chat.js +3 -3
  57. package/dist/cdn/chat/snice-chat.js.map +1 -1
  58. package/dist/cdn/chat/snice-chat.min.js +3 -3
  59. package/dist/cdn/chat/snice-chat.min.js.map +1 -1
  60. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  61. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  62. package/dist/cdn/chip/snice-chip.js +1 -1
  63. package/dist/cdn/chip/snice-chip.min.js +1 -1
  64. package/dist/cdn/code-block/snice-code-block.js +1 -1
  65. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  66. package/dist/cdn/color-display/snice-color-display.js +1 -1
  67. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  68. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  69. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  70. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  71. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  72. package/dist/cdn/comments/snice-comments.js +1 -1
  73. package/dist/cdn/comments/snice-comments.min.js +1 -1
  74. package/dist/cdn/countdown/snice-countdown.js +1 -1
  75. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  76. package/dist/cdn/cropper/snice-cropper.js +1 -1
  77. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  78. package/dist/cdn/data-card/snice-data-card.js +1 -1
  79. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  80. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  81. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  82. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  83. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
  84. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  85. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
  86. package/dist/cdn/diff/snice-diff.js +1 -1
  87. package/dist/cdn/diff/snice-diff.min.js +1 -1
  88. package/dist/cdn/divider/snice-divider.js +1 -1
  89. package/dist/cdn/divider/snice-divider.min.js +1 -1
  90. package/dist/cdn/doc/snice-doc.js +1 -1
  91. package/dist/cdn/doc/snice-doc.min.js +1 -1
  92. package/dist/cdn/draw/snice-draw.js +1 -1
  93. package/dist/cdn/draw/snice-draw.min.js +1 -1
  94. package/dist/cdn/drawer/snice-drawer.js +1 -1
  95. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  96. package/dist/cdn/empty-state/README.md +1 -1
  97. package/dist/cdn/empty-state/snice-empty-state.js +3 -3
  98. package/dist/cdn/empty-state/snice-empty-state.js.map +1 -1
  99. package/dist/cdn/empty-state/snice-empty-state.min.js +4 -4
  100. package/dist/cdn/empty-state/snice-empty-state.min.js.map +1 -1
  101. package/dist/cdn/estimate/snice-estimate.js +1 -1
  102. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  103. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  104. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  105. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  106. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  107. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  108. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  109. package/dist/cdn/flow/snice-flow.js +1 -1
  110. package/dist/cdn/flow/snice-flow.min.js +1 -1
  111. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  112. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  113. package/dist/cdn/funnel/snice-funnel.js +1 -1
  114. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  115. package/dist/cdn/gantt/snice-gantt.js +1 -1
  116. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  117. package/dist/cdn/gauge/snice-gauge.js +1 -1
  118. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  119. package/dist/cdn/grid/snice-grid.js +1 -1
  120. package/dist/cdn/grid/snice-grid.min.js +1 -1
  121. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  122. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  123. package/dist/cdn/image/snice-image.js +1 -1
  124. package/dist/cdn/image/snice-image.min.js +1 -1
  125. package/dist/cdn/input/snice-input.js +1 -1
  126. package/dist/cdn/input/snice-input.min.js +1 -1
  127. package/dist/cdn/invoice/snice-invoice.js +1 -1
  128. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  129. package/dist/cdn/kanban/snice-kanban.js +1 -1
  130. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  131. package/dist/cdn/key-value/snice-key-value.js +1 -1
  132. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  133. package/dist/cdn/kpi/snice-kpi.js +1 -1
  134. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  135. package/dist/cdn/layout/snice-layout.js +1 -1
  136. package/dist/cdn/layout/snice-layout.min.js +1 -1
  137. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  138. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  139. package/dist/cdn/link/snice-link.js +1 -1
  140. package/dist/cdn/link/snice-link.min.js +1 -1
  141. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  142. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  143. package/dist/cdn/list/README.md +1 -1
  144. package/dist/cdn/list/snice-list.js +3 -3
  145. package/dist/cdn/list/snice-list.js.map +1 -1
  146. package/dist/cdn/list/snice-list.min.js +7 -7
  147. package/dist/cdn/list/snice-list.min.js.map +1 -1
  148. package/dist/cdn/location/snice-location.js +1 -1
  149. package/dist/cdn/location/snice-location.min.js +1 -1
  150. package/dist/cdn/login/snice-login.js +1 -1
  151. package/dist/cdn/login/snice-login.min.js +1 -1
  152. package/dist/cdn/map/snice-map.js +1 -1
  153. package/dist/cdn/map/snice-map.min.js +1 -1
  154. package/dist/cdn/markdown/snice-markdown.js +1 -1
  155. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  156. package/dist/cdn/masonry/snice-masonry.js +1 -1
  157. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  158. package/dist/cdn/menu/snice-menu.js +1 -1
  159. package/dist/cdn/menu/snice-menu.min.js +1 -1
  160. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  161. package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
  162. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  163. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  164. package/dist/cdn/modal/snice-modal.js +1 -1
  165. package/dist/cdn/modal/snice-modal.min.js +1 -1
  166. package/dist/cdn/music-player/snice-music-player.js +1 -1
  167. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  168. package/dist/cdn/nav/snice-nav.js +1 -1
  169. package/dist/cdn/nav/snice-nav.min.js +1 -1
  170. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  171. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  172. package/dist/cdn/notification-center/README.md +1 -1
  173. package/dist/cdn/notification-center/snice-notification-center.js +3 -3
  174. package/dist/cdn/notification-center/snice-notification-center.js.map +1 -1
  175. package/dist/cdn/notification-center/snice-notification-center.min.js +3 -3
  176. package/dist/cdn/notification-center/snice-notification-center.min.js.map +1 -1
  177. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  178. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  179. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  180. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  181. package/dist/cdn/pagination/snice-pagination.js +1 -1
  182. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  183. package/dist/cdn/paint/snice-paint.js +1 -1
  184. package/dist/cdn/paint/snice-paint.min.js +1 -1
  185. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  186. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  187. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  188. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  189. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  190. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  191. package/dist/cdn/popover/snice-popover.js +1 -1
  192. package/dist/cdn/popover/snice-popover.min.js +1 -1
  193. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  194. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  195. package/dist/cdn/product-card/snice-product-card.js +1 -1
  196. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  197. package/dist/cdn/progress/snice-progress.js +1 -1
  198. package/dist/cdn/progress/snice-progress.min.js +1 -1
  199. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  200. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  201. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  202. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  203. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  204. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  205. package/dist/cdn/radio/snice-radio.js +1 -1
  206. package/dist/cdn/radio/snice-radio.min.js +1 -1
  207. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  208. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  209. package/dist/cdn/rating/snice-rating.js +1 -1
  210. package/dist/cdn/rating/snice-rating.min.js +1 -1
  211. package/dist/cdn/receipt/snice-receipt.js +1 -1
  212. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  213. package/dist/cdn/recipe/snice-recipe.js +1 -1
  214. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  215. package/dist/cdn/runtime/snice-runtime.esm.js +220 -205
  216. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  217. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  218. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  219. package/dist/cdn/runtime/snice-runtime.js +220 -205
  220. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  221. package/dist/cdn/runtime/snice-runtime.min.js +8 -8
  222. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  223. package/dist/cdn/sankey/snice-sankey.js +1 -1
  224. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  225. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  226. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  227. package/dist/cdn/select/snice-select.js +1 -1
  228. package/dist/cdn/select/snice-select.min.js +1 -1
  229. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  230. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  231. package/dist/cdn/slider/snice-slider.js +1 -1
  232. package/dist/cdn/slider/snice-slider.min.js +1 -1
  233. package/dist/cdn/sortable/snice-sortable.js +1 -1
  234. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  235. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  236. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  237. package/dist/cdn/spinner/snice-spinner.js +1 -1
  238. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  239. package/dist/cdn/split-button/snice-split-button.js +1 -1
  240. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  241. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  242. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  243. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  244. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  245. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  246. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  247. package/dist/cdn/step-input/snice-step-input.js +1 -1
  248. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  249. package/dist/cdn/stepper/snice-stepper.js +1 -1
  250. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  251. package/dist/cdn/switch/snice-switch.js +1 -1
  252. package/dist/cdn/switch/snice-switch.min.js +1 -1
  253. package/dist/cdn/table/README.md +1 -1
  254. package/dist/cdn/table/snice-table.js +3 -3
  255. package/dist/cdn/table/snice-table.js.map +1 -1
  256. package/dist/cdn/table/snice-table.min.js +24 -24
  257. package/dist/cdn/table/snice-table.min.js.map +1 -1
  258. package/dist/cdn/tabs/snice-tabs.js +1 -1
  259. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  260. package/dist/cdn/tag/snice-tag.js +1 -1
  261. package/dist/cdn/tag/snice-tag.min.js +1 -1
  262. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  263. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  264. package/dist/cdn/terminal/snice-terminal.js +1 -1
  265. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  266. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  267. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  268. package/dist/cdn/textarea/snice-textarea.js +1 -1
  269. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  270. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  271. package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
  272. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  273. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  274. package/dist/cdn/timeline/snice-timeline.js +1 -1
  275. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  276. package/dist/cdn/timer/snice-timer.js +1 -1
  277. package/dist/cdn/timer/snice-timer.min.js +1 -1
  278. package/dist/cdn/toast/snice-toast.js +1 -1
  279. package/dist/cdn/toast/snice-toast.min.js +1 -1
  280. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  281. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  282. package/dist/cdn/tree/snice-tree.js +1 -1
  283. package/dist/cdn/tree/snice-tree.min.js +1 -1
  284. package/dist/cdn/treemap/snice-treemap.js +1 -1
  285. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  286. package/dist/cdn/user-card/snice-user-card.js +1 -1
  287. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  288. package/dist/cdn/video-player/snice-video-player.js +1 -1
  289. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  290. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  291. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  292. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  293. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  294. package/dist/cdn/weather/snice-weather.js +1 -1
  295. package/dist/cdn/weather/snice-weather.min.js +1 -1
  296. package/dist/cdn/work-order/snice-work-order.js +1 -1
  297. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  298. package/dist/components/empty-state/snice-empty-state.js +2 -2
  299. package/dist/components/empty-state/snice-empty-state.js.map +1 -1
  300. package/dist/context.d.ts +2 -2
  301. package/dist/index.cjs +217 -202
  302. package/dist/index.cjs.map +1 -1
  303. package/dist/index.esm.js +217 -202
  304. package/dist/index.esm.js.map +1 -1
  305. package/dist/index.iife.js +217 -202
  306. package/dist/index.iife.js.map +1 -1
  307. package/dist/react/SniceProvider.js +1 -1
  308. package/dist/react/SniceRouter.js +1 -1
  309. package/dist/react/index.js +1 -1
  310. package/dist/react/matchRoute.js +1 -1
  311. package/dist/react/useRequestHandler.js +1 -1
  312. package/dist/symbols.cjs +1 -1
  313. package/dist/symbols.esm.js +1 -1
  314. package/dist/transitions.cjs +1 -1
  315. package/dist/transitions.esm.js +1 -1
  316. package/docs/STORYBOOK.md +1 -1
  317. package/docs/ai/api.md +4 -5
  318. package/docs/ai/decorators.md +2 -2
  319. package/docs/components/drawer.md +1 -1
  320. package/docs/controllers.md +41 -0
  321. package/docs/elements.md +1 -1
  322. package/docs/routing.md +1 -1
  323. package/package.json +2 -2
@@ -1,41 +1,41 @@
1
1
  /*!
2
- * snice v5.1.0
2
+ * snice v5.2.1
3
3
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
4
4
  * (c) 2024
5
5
  * Released under the MIT License.
6
6
  */
7
7
  /*!
8
- * snice v5.0.0
8
+ * snice v5.2.0
9
9
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
10
10
  * (c) 2024
11
11
  * Released under the MIT License.
12
12
  *
13
13
  * GENERATED FILE — DO NOT EDIT. Source: src/. Rebuild: npm run build:core
14
14
  */
15
- globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0});const t=globalThis.snice;function e(t){return Symbol.for(`snice:${t}`)}const n=e("is-controller-class"),o=e("is-controller-instance"),r=e("is-element-class"),s=e("channel-handlers"),i=e("ready-promise"),a=e("ready-resolve"),c=e("controller"),l=e("initialized"),u=e("controller-key"),h=e("controller-name"),d=e("controller-id"),f=e("controller-operations"),m=e("native-controller"),p=e("cleanup"),y=e("properties"),g=e("property-values"),b=e("pre-init-property-values"),v=e("properties-initialized"),w=e("property-watchers"),N=e("explicitly-set-properties"),S=e("router-context"),T=e("page-transition"),E=e("created-at"),A=e("ready-handlers"),O=e("dispose-handlers"),x=e("reconnect-handlers"),C=e("moved-handlers"),_=e("adopted-handlers"),k=e("observers"),L=e("setting-from-property"),P=e("moved-timers"),M=e("adopted-timers"),I=e("dispatch-timers"),$=e("render-method"),D=e("render-options"),R=e("render-instance"),j=e("render-timers"),q=e("render-callbacks"),F=e("styles-method"),B=e("styles-applied"),V=e("parent-styles-methods"),U=e("context-handler"),z=e("navigation-context-instance"),H=e("registered-elements"),W=e("is-updating"),K=e("context-register"),G=e("context-unregister"),Q=e("context-notify-element"),J=e("context-timer"),X=e("context-called"),Y=e("context-update"),Z=e("wrapped-context-handlers"),tt=e("context-methods"),et=e("watch-methods"),nt=e("observe-methods"),ot=e("on-methods"),rt=e("respond-methods"),st=e("ready-methods"),it=e("dispose-methods"),at=e("reconnect-methods"),ct=e("moved-methods"),lt=e("adopted-methods"),ut=e("controller-abort"),ht=e("property-definers");class dt{static{this.SEPARATOR=","}static serialize(t){return Array.isArray(t)?t.map(t=>{if("string"==typeof t){if(t.includes(dt.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${dt.SEPARATOR}" (U+FF0C)`);return t}if("number"==typeof t||"boolean"==typeof t)return String(t);throw new Error("SimpleArray only supports string, number, and boolean types. Got: "+typeof t)}).join(dt.SEPARATOR):""}static parse(t){return null==t||""===t?[]:t.split(dt.SEPARATOR).map(t=>{if(/^-?\d+\.?\d*$/.test(t)){const e=Number(t);if(!isNaN(e))return e}return"true"===t||"false"!==t&&t})}}var ft,mt,pt,yt;!function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(ft||(ft={}));const gt=Symbol.for("snice:registered-elements-set");let bt=0;class vt{constructor(t={},e=[],n="",o={},r){if(this[mt]=new WeakMap,this[pt]=new Set,this[yt]=!1,this.id=bt++,this.application=t,this.navigation={placards:e,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)}}[(mt=H,pt=gt,yt=W,K)](t,e){const n=this[H];let o=n.get(t);o||(o=new Set,n.set(t,o)),o.add(e),this[gt].add(t)}[G](t){this[H].delete(t),this[gt].delete(t)}[Y](t,e,n,o){this.application=t,this.navigation.placards=e,this.navigation.route=n,this.navigation.params=o,this.notify()}update(){this.notify()}notify(){if(this[W])return;this[W]=!0;const t=this[gt],e=this[H];for(const n of t){const t=e.get(n);if(!t)continue;const o=n[Z];if(o)for(const e of t){const t=o.get(e);if("function"==typeof t)try{t(this)}catch(t){console.error(`Error calling @context handler ${e}:`,t)}}}this[W]=!1}[Q](t){const e=this[H].get(t);if(!e)return;const n=t[Z];if(n)for(const t of e){const e=n.get(t);"function"==typeof e&&e(this)}}}function wt(t){if(null!=t)return"string"==typeof t?String:"number"==typeof t?Number:"boolean"==typeof t?Boolean:t instanceof Date?Date:"bigint"==typeof t?BigInt:Array.isArray(t)?Array:void 0}function Nt(t,e,n,o){switch(e.type||wt(o)){case Boolean:return null!==t&&"false"!==t;case Number:return null!==t?Number(t):null;case String:return t;case Date:return t?new Date(t):null;case BigInt:return t&&t.endsWith("n")?BigInt(t.slice(0,-1)):t?BigInt(t):null;case dt:return dt.parse(t);case Array:try{return t?JSON.parse(t):[]}catch{return[]}case Object:try{return t?JSON.parse(t):{}}catch{return{}}default:return"number"==typeof n&&null!==t?Number(t):t}}function St(t,e){return"string"==typeof t.attribute?t.attribute:e.toLowerCase()}function Tt(t){return String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Et(t){return String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function At(t,e={}){const n=String(t??"").trim();if(!n)return!1;const o=e.allowed??["http:","https:","mailto:","tel:"];if(/^[#?/]/.test(n))return!0;try{const t=new URL(n,"http://__snice-base/");return"http://__snice-base"===t.origin||o.includes(t.protocol)}catch{return/^[\w\-./]+$/.test(n)}}function Ot(t){const e=String(t).trim(),n=parseFloat(e);let o;return o=isNaN(n)?0:/ms$/i.test(e)?n:/s$/i.test(e)?1e3*n:/m$/i.test(e)?6e4*n:/h$/i.test(e)?36e5*n:n,{milliseconds:()=>o,seconds:()=>o/1e3,minutes:()=>o/6e4}}function xt(t,e){return t[e]||(t[e]=new Set),t[e]}function Ct(t,e){return t[e]||(t[e]={}),t[e]}function _t(t,e,n,o,r){const s=e[w];if(!s)return;const i=[n],a=e[y]?.get(n),c=a&&"string"==typeof a.attribute?a.attribute:null;c&&c!==n&&i.push(c);for(const e of i)if(s.has(e))for(const i of s.get(e))try{i.method.call(t,o,r,n)}catch(t){console.error(`Error in @watch('${e}') method ${i.methodName}:`,t)}if(s.has("*"))for(const e of s.get("*"))try{e.method.call(t,o,r,n)}catch(t){console.error(`Error in @watch('*') method ${e.methodName}:`,t)}}function kt(t,e){let n=null;return function(...o){null!==n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,o),n=null},e)}}function Lt(t,e){let n=0,o=null;return function(...r){const s=Date.now(),i=e-(s-n);if(i<=0)return o&&(clearTimeout(o),o=null),n=s,t.apply(this,r);o||(o=setTimeout(()=>{n=Date.now(),o=null,t.apply(this,r)},i))}}const Pt=new Map;function Mt(t,e,n){let o,r;return"string"==typeof e?(o=e,r=n):(o=void 0,r=e),function(e,n){const s=n.name;n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,nt)||(n[nt]=new Set),n[nt].has(e))return;if(n[nt].add(e),!Object.prototype.hasOwnProperty.call(n,k)){const t=n[k];n[k]=t?[...t]:[]}const i=Array.isArray(t)?t:[t];for(const t of i){const[i,...a]=t.split(":"),c=a.join(":");n[k].push({type:i,target:c,selector:o,methodName:s,method:e,options:r})}})}}function It(t,e){const n=t.constructor[k];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].observers||(t[p].observers=[]):t[p]={events:[],channels:[],observers:[]};for(const o of n){const n=o.method.bind(t),r=o.options?.throttle?Lt(n,o.options.throttle):n;switch(o.type){case"intersection":$t(t,e,o,r);break;case"resize":Dt(t,e,o,r);break;case"media":Rt(t,e,o,r);break;case"mutation":jt(t,e,o,r);break;default:console.warn(`Unknown observer type: ${o.type}`)}}}}function $t(t,e,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(t=>{for(const e of t)try{!1===o(e)&&s&&s.unobserve(e.target)}catch(t){console.error(`Error in intersection observer ${n.methodName}:`,t)}},r),i=n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):[e];i.forEach(t=>s.observe(t)),t[p].observers.push(()=>{i.forEach(t=>s.unobserve(t)),0===s.takeRecords().length&&s.disconnect()})}function Dt(t,e,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(t=>{for(const e of t)try{o(e)}catch(t){console.error(`Error in resize observer ${n.methodName}:`,t)}});(n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):[e]).forEach(t=>{s.observe(t,{box:r})}),t[p].observers.push(()=>{s.disconnect()})}function Rt(t,e,n,o){const r=n.target;if(!r)return void console.warn("Media query observer requires a query string");let s=Pt.get(r);if(!s)try{s=window.matchMedia(r),Pt.set(r,s)}catch(t){return void console.error(`Invalid media query: ${r}`,t)}const i=t=>{try{o(t.matches)}catch(t){console.error(`Error in media query observer ${n.methodName}:`,t)}};i(s);const a=t=>i(t);s.addEventListener?(s.addEventListener("change",a),t[p].observers.push(()=>{s.removeEventListener("change",a)})):(s.addListener(a),t[p].observers.push(()=>{s.removeListener(a)}))}function jt(t,e,n,r){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 console.warn(`Unknown mutation type: ${i}`)}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),u=new MutationObserver(t=>{try{if(!l)return void r(t);const o=n.options.maxDepth,s=e.shadowRoot||e,i=t.filter(t=>{let e=0,n=t.target;for(;n&&n!==s&&e<o;)n=n.parentNode,e++;return e<o});i.length>0&&r(i)}catch(t){console.error(`Error in mutation observer ${n.methodName}:`,t)}}),h=!0===t[o];(n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):h&&e.shadowRoot?[e.shadowRoot]:[e]).forEach(t=>{u.observe(t,c)}),t[p].observers.push(()=>{u.disconnect()})}function qt(t){if(t[p]?.observers){for(const e of t[p].observers)e();t[p].observers=[]}}function Ft(t,e){return function(n,r){let s,i,a=0;const c=[];return async function(...r){const l=async()=>{const s=e?.timeout??12e4,i=e?.discoveryTimeout??50,a=n.apply(this,r),{value:c,done:l}=await a.next();if(l)return c;let u,h;const d=new Promise((t,e)=>{u=t,h=e});let f,m,p;const y=new Promise((e,n)=>{f=e,m=n,p=setTimeout(()=>{n(new Error(`Request "${t}" timed out after ${i}ms - no handler found`))},i)}),g=new CustomEvent(`@request/${t}`,{bubbles:void 0===e?.bubbles||e.bubbles,cancelable:e?.cancelable||!1,composed:!0,detail:{payload:c,discovery:{resolve:()=>{clearTimeout(p),f()},reject:m},data:{resolve:u,reject:h}}});(!0===this[o]&&this.element?this.element:this).dispatchEvent(g);try{await y;const e=setTimeout(()=>{h(new Error(`Request "${t}" timed out after ${s}ms`))},s),n=await d;clearTimeout(e);const{value:o}=await a.next(n);return o}catch(t){try{await a.throw(t)}catch(t){throw t}}};if(e?.debounce)return new Promise((t,n)=>{clearTimeout(s),s=setTimeout(async()=>{try{t(await l())}catch(t){n(t)}},e.debounce)});if(!e?.throttle)return l();const u=Date.now(),h=e.throttle-(u-a);return h<=0?(clearTimeout(i),a=u,l()):new Promise(i?(t,e)=>{c.push({resolve:t,reject:e})}:(t,e)=>{c.push({resolve:t,reject:e}),i=setTimeout(async()=>{a=Date.now(),i=null;const t=c.splice(0);try{const e=await l();for(const n of t)n.resolve(e)}catch(e){for(const n of t)n.reject(e)}},h)})}}}function Bt(t,e){return function(n,o){const r=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,rt)||(o[rt]=new Set),!o[rt].has(n)){if(o[rt].add(n),!Object.prototype.hasOwnProperty.call(o,s)){const t=o[s];o[s]=t?[...t]:[]}o[s].push({channelName:t,methodName:r,method:n,options:e})}})}}function Vt(t,e){const n=t.constructor[s];if(n){t[p]||(t[p]={events:[],channels:[]});for(const o of n){const n=o.method.bind(t),r=`@request/${o.channelName}`;let s,i,a=0;const c=[];let l=null;const u=(t=>o.options?.debounce?(...e)=>new Promise((n,r)=>{clearTimeout(s),s=setTimeout(async()=>{try{n(await t(...e))}catch(t){r(t)}},o.options.debounce)}):o.options?.throttle?(...e)=>{const n=Date.now(),r=o.options.throttle-(n-a);return r<=0?(clearTimeout(i),i=null,a=n,t(...e)):(l=e,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??e;l=null;try{const e=await t(...o);for(const t of n)t.resolve(e)}catch(t){for(const e of n)e.reject(t)}},r))}))}:t)(n),h=t=>{const{data:e,discovery:n,payload:r}=t.detail;t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation(),n.resolve(),Promise.resolve(u(r)).then(t=>{e.resolve(t)}).catch(t=>{e.reject(t),console.error(`Error in response handler ${o.methodName}:`,t)})};e.addEventListener(r,h),t[p].channels.push(()=>{e.removeEventListener(r,h)})}}}function Ut(t){if(t[p]?.channels){for(const e of t[p].channels)e();t[p].channels=[]}}const zt=Symbol.for("snice:html-result"),Ht=Symbol.for("snice:css-result");function Wt(t,...e){return{_$litType$:zt,strings:t,values:e}}function Kt(t,...e){let n=t[0];for(let o=0;o<e.length;o++)n+=String(e[o])+t[o+1];const o={_$litType$:Ht,cssText:n};if("undefined"!=typeof CSSStyleSheet&&"undefined"!=typeof Document&&"adoptedStyleSheets"in Document.prototype)try{const t=new CSSStyleSheet;t.replaceSync(n),o.styleSheet=t}catch(t){}return o}function Gt(t){return t&&t._$litType$===zt}function Qt(t){return t&&t._$litType$===Ht}const Jt=Symbol.for("snice:nothing"),Xt=Symbol.for("snice:unsafe-html");function Yt(t){return{_$litType$:Xt,html:t}}const Zt=`snice$${Math.random().toFixed(9).slice(2)}$`,te="?"+Zt,ee=`<${te}>`,ne=new RegExp(Zt,"g"),oe=new WeakMap,re=Symbol("not-committed"),se=Symbol.for("snice:no-change"),ie=t=>null===t||"object"!=typeof t&&"function"!=typeof t;class ae{constructor(t,e,n){this.parts=[],this.element=e;const o=document.createTreeWalker(e.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 t=i,e=t.tagName.toLowerCase();if("if"===e){const e=t.getAttribute("value");e&&e.includes(Zt)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-if",index:r++,element:t}));continue}if("case"===e){const e=t.getAttribute("value");e&&e.includes(Zt)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-case",index:r++,element:t}));continue}if(t.hasAttributes()){const e=t.attributes,o=[];for(let s=0;s<e.length;s++){const i=e[s],a=i.value;if(a.includes(Zt)){o.push(i);const e=n[r]||i.name,s=a.split(Zt),c=s.length-1;e.startsWith("@@")||e.startsWith("@")?(this.parts.push({type:"event",index:r,name:e.slice(1),element:t}),r+=1):e.startsWith(".")?(this.parts.push({type:"property",index:r,name:e.slice(1),element:t}),r+=1):e.startsWith("?")?(this.parts.push({type:"boolean-attribute",index:r,name:e.slice(1),element:t}),r+=1):(this.parts.push({type:"attribute",index:r,name:i.name,element:t,attrStrings:s}),r+=c)}}for(const e of o)t.removeAttribute(e.name)}}else if(i.nodeType===Node.COMMENT_NODE){const t=i;if(t.data===te){const e=t.parentNode,n=document.createComment("");e.insertBefore(n,t.nextSibling),this.parts.push({type:"node",index:r++,startNode:t,endNode:n})}}else if(i.nodeType===Node.TEXT_NODE){const t=i,e=t.data;if(e.includes(Zt)){const n=t.parentNode,o=e.split(ne),i=o.length-1;for(let e=0;e<i;e++){n.insertBefore(document.createTextNode(o[e]),t);const s=document.createComment(""),i=document.createComment("");n.insertBefore(s,t),n.insertBefore(i,t),this.parts.push({type:"node",index:r++,startNode:s,endNode:i})}""!==o[i]?t.data=o[i]:s.push(t)}}for(const t of s)t.parentNode?.removeChild(t)}}class ce{constructor(t){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=function(t){const{strings:e}=t,n=oe.get(e);if(n)return n;const o=[],r=[];let s=!1,i=!1,a="",c="";for(let t=0;t<e.length;t++){const n=e[t];if(o.push(n),t<e.length-1){for(let t=0;t<n.length;t++){const e=n[t];if(s){if(i)e===a&&(i=!1,a="");else if(">"===e)s=!1;else if('"'===e||"'"===e)i=!0,a=e;else if("="===e){let e=t-1;for(;e>=0&&/[\w\-\.@\?:\+~]/.test(n[e]);)e--;c=n.substring(e+1,t).trim()}}else"<"===e&&(s=!0)}if(i)r.push(c),o.push(Zt);else if(s){const t=n.trimEnd();if(t.endsWith("=")){let e=t.length-2;for(;e>=0&&/[\w\-\.@\?\/:\+~]/.test(t[e]);)e--;c=t.substring(e+1,t.length-1).trim(),r.push(c),o.push(Zt)}else n.match(/<(if|case)\s*$/)?(c="value",r.push("value"),o.push(`value="${Zt}"`)):(r.push(""),o.push(Zt))}else r.push(""),o.push(ee)}}const l=o.join(""),u=document.createElement("template");u.innerHTML=l;const h=new ae(t,u,r);return oe.set(e,h),h}(t),this.strings=t.strings}isSameTemplate(t){return this.strings===t}renderFragment(){if(!this.fragment){this.fragment=this.template.element.content.cloneNode(!0);const t=document.createTreeWalker(this.template.element.content,NodeFilter.SHOW_ALL),e=document.createTreeWalker(this.fragment,NodeFilter.SHOW_ALL),n=new Map;let o=t.currentNode,r=e.currentNode;for(;o&&r;)n.set(o,r),o=t.nextNode(),r=e.nextNode();for(let t=0;t<this.template.parts.length;t++){const e=this.template.parts[t];let o;switch(e.type){case"node":const t=n.get(e.startNode),r=n.get(e.endNode);o=new ue(t,r);break;case"attribute":const s=n.get(e.element);o=new he(s,e.name,e.attrStrings);break;case"property":const i=n.get(e.element);o=new de(i,e.name);break;case"boolean-attribute":const a=n.get(e.element);o=new fe(a,e.name);break;case"event":const c=n.get(e.element);o=new me(c,e.name);break;case"conditional-if":const l=n.get(e.element);o=new ve(l);break;case"conditional-case":const u=n.get(e.element);o=new we(u);break;default:throw new Error(`Unknown part type: ${e.type}`)}this.parts.push(o),o instanceof ve||o instanceof we?this.conditionalParts.push({part:o,index:e.index}):this.regularParts.push({part:o,index:e.index})}}return this.fragment}render(t){const e=this.renderFragment();return this.update(t),e}update(t){for(const{part:e,index:n}of this.conditionalParts)e.commit(t[n]);for(const{part:e,index:n}of this.regularParts)e instanceof he&&void 0!==e.strings?e.commit(t,n):e.commit(t[n])}clear(){for(const t of this.parts)t.clear()}}class le{}class ue extends le{constructor(t,e){super(),this._committedValue=re,this.startNode=t,this.endNode=e}commit(t){if(t!==se)return t===Jt||null==t||""===t?(this._committedValue!==Jt&&this._clear(),void(this._committedValue=Jt)):void(ie(t)?t!==this._committedValue&&this._commitText(t):Gt(t)?this._commitTemplateResult(t):!function(t){return t&&t._$litType$===Xt}(t)?void 0===t.nodeType?(t=>Array.isArray(t)||"function"==typeof t?.[Symbol.iterator])(t)?this._commitIterable(t):this._commitText(t):this._commitNode(t):this._commitUnsafeHTML(t))}_commitText(t){if(this._committedValue!==re&&this._committedValue!==Jt&&ie(this._committedValue)&&!Array.isArray(this._committedValue)){const e=this.startNode.nextSibling;if(e&&e.nodeType===Node.TEXT_NODE)return e.data=String(t),void(this._committedValue=t)}this._clear(),this._insertBefore(document.createTextNode(String(t))),this._committedValue=t}_commitTemplateResult(t){const e=this._committedValue;if(e instanceof ce){const n=oe.get(t.strings);if(n&&e.template===n)return void e.update(t.values)}this._clear();const n=new ce(t),o=n.renderFragment();this._insertBefore(o),n.update(t.values),this._committedValue=n}_commitIterable(t){Array.isArray(this._committedValue)&&this._committedValue[0]instanceof ue||(this._clear(),this._committedValue=[]);const e=this._committedValue;let n=0;for(const o of t){let t;if(n>=e.length){const n=document.createComment(""),o=document.createComment("");this._insertBefore(n),this._insertBefore(o),t=new ue(n,o),e.push(t)}else t=e[n];t.commit(o),n++}if(n<e.length){for(let t=n;t<e.length;t++){const n=e[t];n._clear(),n.startNode.remove(),n.endNode.remove()}e.length=n}}_commitNode(t){this._committedValue!==t&&(this._clear(),this._insertBefore(t),this._committedValue=t)}_commitUnsafeHTML(t){this._clear();const e=document.createElement("template");e.innerHTML=t.html,this._insertBefore(e.content),this._committedValue=t}_insertBefore(t){this.endNode.parentNode?.insertBefore(t,this.endNode)}_clear(){const t=this.startNode.parentNode;if(!t)return;let e=this.startNode.nextSibling;for(;e&&e!==this.endNode;){const n=e.nextSibling;t.removeChild(e),e=n}this._committedValue=Jt}clear(){this._clear()}}class he extends le{constructor(t,e,n){super(),this._committedValue=re,this.element=t,this.name=e,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(re),this.strings=n):this._committedValue=re}commit(t,e=0){let n,o=!1;if(void 0===this.strings){if(t===se)return;if(o=!ie(t)||t!==this._committedValue&&t!==se,!o)return;this._committedValue=t,n=t}else{const r=t,s=this._committedValue;n=this.strings[0];for(let t=0;t<this.strings.length-1;t++){let i=r[e+t];i===se&&(i=s[t]),o=o||!ie(i)||i!==s[t],i===Jt?n=Jt:n!==Jt&&(n=n+(i??"")+this.strings[t+1]),s[t]=i}if(!o)return}this._commitValue(n)}_commitValue(t){t===Jt||null==t?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(t))}clear(){this.element.removeAttribute(this.name)}}class de extends le{constructor(t,e){super(),this._committedValue=re,this.element=t,this.name=e}commit(t){t!==se&&t!==this._committedValue&&(this._committedValue=t,this.element[this.name]=t===Jt?void 0:t)}clear(){this.element[this.name]=void 0,this._committedValue=re}}class fe extends le{constructor(t,e){super(),this._committedValue=re,this.element=t,this.name=e}commit(t){if(t===se)return;const e=!!t&&t!==Jt;e!==this._committedValue&&(this._committedValue=e,e?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name))}clear(){this.element.removeAttribute(this.name),this._committedValue=re}}class me extends le{constructor(t,e){super(),this.listener=null,this.value=void 0,this.keyFilter=null,this.host=null,this.element=t;const n=["keydown","keyup","keypress"].includes(e.split(".")[0].split(":")[0]),o=e.indexOf("."),r=n?e.indexOf(":"):-1,s=o>0&&r>0?Math.min(o,r):Math.max(o,r);if(s>0){const t=e.substring(0,s),n=e.substring(s+1);this.eventName=t,this.keyFilter=pe(n)}else this.eventName=e}commit(t){if(t===se)return;if(t===Jt&&(t=null),t===this.value&&null!=t)return;if(this.listener&&(this.element.removeEventListener(this.eventName,this.listener),this.listener=null),this.value=t,null==t)return;if("function"!=typeof t)return;if(!this.host){const t=this.element.getRootNode();this.host=t.host||null}const e=this.host||null,n=this.keyFilter;this.listener=o=>{n&&!ge(o,n)||t.call(e,o)},this.element.addEventListener(this.eventName,this.listener)}clear(){this.listener&&(this.element.removeEventListener(this.eventName,this.listener),this.listener=null)}}function pe(t){const e=t.startsWith("~");e&&(t=t.substring(1));const n=t.split("+"),o={key:"",anyModifiers:e};for(const t of n){const e=t.toLowerCase();"ctrl"===e||"control"===e?o.ctrl=!0:"alt"===e?o.alt=!0:"shift"===e?o.shift=!0:"meta"===e||"cmd"===e||"command"===e?o.meta=!0:o.key=ye(t)}return o}function ye(t){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"}[t.toLowerCase()]||t}function ge(t,e){if(t.key!==e.key)return!1;if(e.anyModifiers)return!0;const n=e.ctrl?t.ctrlKey:!t.ctrlKey,o=e.alt?t.altKey:!t.altKey,r=e.shift?t.shiftKey:!t.shiftKey,s=e.meta?t.metaKey:!t.metaKey;return n&&o&&r&&s}const be=Symbol("not-set");class ve extends le{constructor(t){super(),this.value=be,this.childFragment=null;const e=t.parentNode;for(this.startNode=document.createComment("if"),this.endNode=document.createComment("/if"),e.insertBefore(this.startNode,t),e.insertBefore(this.endNode,t.nextSibling);t.firstChild;)e.insertBefore(t.firstChild,this.endNode);e.removeChild(t)}commit(t){const e=Boolean(t);if(this.value!==t)if(this.value=t,e)this.childFragment&&this.childFragment.hasChildNodes()&&this.startNode.parentNode.insertBefore(this.childFragment,this.endNode);else{this.childFragment||(this.childFragment=document.createDocumentFragment());let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;this.childFragment.appendChild(t),t=e}}}clear(){this.childFragment||(this.childFragment=document.createDocumentFragment());let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;this.childFragment.appendChild(t),t=e}}}class we extends le{constructor(t){super(),this.value=be,this.branches=new Map,this.defaultBranch=null,this.currentKey=null;const e=t.parentNode;this.startNode=document.createComment("case"),this.endNode=document.createComment("/case"),e.insertBefore(this.startNode,t),e.insertBefore(this.endNode,t.nextSibling);for(const e of Array.from(t.children)){const t=e.tagName.toLowerCase();if("when"===t){const t=e.getAttribute("value")||"",n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.firstChild);this.branches.set(t,n)}else if("default"===t)for(this.defaultBranch=document.createDocumentFragment();e.firstChild;)this.defaultBranch.appendChild(e.firstChild)}e.removeChild(t)}commit(t){if(this.value===t)return;this.value=t;const e=String(t);this._collectCurrent();const n=this.branches.has(e),o=n?this.branches.get(e):this.defaultBranch;this.currentKey=n?e:this.defaultBranch?"__default__":null,o&&o.hasChildNodes()&&this.startNode.parentNode.insertBefore(o,this.endNode)}_collectCurrent(){if(null===this.currentKey)return;const t="__default__"===this.currentKey?this.defaultBranch:this.branches.get(this.currentKey);if(!t)return;let e=this.startNode.nextSibling;for(;e&&e!==this.endNode;){const n=e.nextSibling;t.appendChild(e),e=n}}clear(){this._collectCurrent(),this.currentKey=null}}const Ne=e("on-handlers");function Se(t,e,n){let o=null,r={};return"string"==typeof e?(o=e,r=n||{}):e&&"object"==typeof e?r=e:null===e&&n&&(r=n),function(e,n){const s=n.name;return n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,ot)||(n[ot]=new Set),n[ot].has(e))return;if(n[ot].add(e),!Object.prototype.hasOwnProperty.call(n,Ne)){const t=n[Ne];n[Ne]=t?[...t]:[]}const i=Array.isArray(t)?t:[t];for(const t of i)n[Ne].push({eventName:t,selector:o,methodName:s,method:e,options:r})}),e}}function Te(t,e){let n=0;return function(...o){const r=Date.now();r-n>=e&&(n=r,t.apply(this,o))}}const Ee=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function Ae(t,e){const n=t.constructor[Ne];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].events?t[p].events.length>0&&Oe(t):t[p].events=[]:t[p]={events:[],channels:[],observers:[]};for(const o of n){const n=t[o.methodName];let r=n?n.bind(t):o.method.bind(t);const s=o.options||{},i=["keydown","keyup","keypress"].includes(o.eventName.split(".")[0].split(":")[0]),a=o.eventName.indexOf("."),c=i?o.eventName.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c),u=l>0?o.eventName.substring(0,l):o.eventName,h=l>0?o.eventName.substring(l+1):null;s.debounce&&s.debounce>0?r=kt(r,s.debounce):s.throttle&&s.throttle>0&&(r=Te(r,s.throttle));let d=null;h&&["keydown","keyup","keypress"].includes(u)&&(d=pe(h));const f=(t=>d?e=>{ge(e,d)&&t(e)}:t)(r);if(o.selector){const n=e.shadowRoot||e,r=t=>{const e=t.target;if(e.matches&&e.matches(o.selector)&&e||e.closest&&e.closest(o.selector)||null){s.preventDefault&&t.preventDefault(),s.stopPropagation&&(t.stopPropagation(),t.stopImmediatePropagation());try{f(t)}catch(t){console.error(`Error in event handler ${o.methodName}:`,t)}}},i=Ee.has(u),a={capture:void 0!==s.capture?s.capture:i,once:s.once||!1,passive:s.passive||!1};n.addEventListener(u,r,a),t[p].events.push({target:n,eventName:u,handler:r,options:a})}else{const n=e.shadowRoot,r=Symbol(),i=t=>{if(!t[r]){t[r]=!0,s.preventDefault&&t.preventDefault(),s.stopPropagation&&t.stopPropagation();try{f(t)}catch(t){console.error(`Error in event handler ${o.methodName}:`,t)}}},a={capture:s.capture||!1,once:s.once||!1,passive:s.passive||!1};n&&(n.addEventListener(u,i,a),t[p].events.push({target:n,eventName:u,handler:i,options:a})),e.addEventListener(u,i,a),t[p].events.push({target:e,eventName:u,handler:i,options:a})}}}}function Oe(t){if(t[p]?.events){for(const{target:e,eventName:n,handler:o,options:r}of t[p].events)e.removeEventListener(n,o,r);t[p].events=[]}}class xe{constructor(){this.cleanupFns=new Map,this.pendingOperations=new Set}register(t,e){this.cleanupFns.set(t,e)}unregister(t){this.cleanupFns.delete(t)}async cleanup(){await Promise.all(this.pendingOperations);for(const t of this.cleanupFns.values())try{await t()}catch(t){console.error("Error during cleanup:",t)}this.cleanupFns.clear()}async runOperation(t){const e=t(),n=e.then(()=>{},()=>{});this.pendingOperations.add(n);try{const t=await e;return this.pendingOperations.delete(n),t}catch(t){throw this.pendingOperations.delete(n),t}}}function Ce(t){return function(e,o){const r=globalThis.snice?.controllerRegistry;if(!r)throw new Error("Snice global registry not initialized");return r.set(t,e),e.prototype[n]=!0,e}}async function _e(e,n){const r=e[u],s=e[h],i=e[m];if(void 0!==i&&i!==n)return;if(s===n&&r)return;r&&await ke(e);const a=globalThis.snice?.controllerRegistry;if(!a)throw new Error("Snice global registry not initialized");const c=a.get(n);if(!c)throw console.error(`Controller "${n}" not found. Available:`,Array.from(a.keys())),new Error(`Controller "${n}" not found in registry`);const l=new c;t.controllerIdCounter+=1;const p=t.controllerIdCounter,y=new xe;l[o]=!0,l[d]=p,l.element=e;const g=e[S];void 0!==g&&(l[S]=g),e[u]=l,e[h]=n,e[f]=y;const b=new AbortController;e[ut]=b;try{await Promise.race([e.ready,new Promise((t,e)=>{const o=()=>e(new Error(`attachController("${n}"): aborted before element was ready (likely detached or never connected)`));if(b.signal.aborted)return o();b.signal.addEventListener("abort",o,{once:!0});const r=setTimeout(()=>e(new Error(`attachController("${n}"): element did not become ready within 30000ms (did you forget to appendChild it?)`)),3e4);b.signal.addEventListener("abort",()=>clearTimeout(r),{once:!0})})])}finally{e[ut]===b&&delete e[ut]}await y.runOperation(async()=>{await l.attach(e)}),It(l,e),Vt(l,e),Ae(l,e),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:n,controller:l}}))}async function ke(t){const e=t[ut];e&&e.abort();const n=t[u],o=t[h],r=t[f];n&&(r?await r.runOperation(async()=>{await n.detach(t)}):await n.detach(t),n.element=null,qt(n),Ut(n),Oe(n),r&&await r.cleanup(),delete n[S],delete t[u],delete t[h],delete t[f],t.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:o,controller:n}})))}function Le(){if(globalThis.sniceNativeControllersInitialized)return;function t(t){if(!(t instanceof HTMLElement))return;if(!t.tagName||t.tagName.includes("-"))return;if(t[r])return;const e=t.getAttribute("controller"),n=t[m];if(e!==n){if(!e)return delete t[m],delete t[h],void ke(t).catch(t=>{console.error("Failed to detach controller from native element:",t)});t[m]=e,t.ready||(t.ready=Promise.resolve()),n&&ke(t).catch(t=>{console.error("Failed to detach old controller from native element:",t)}),_e(t,e).catch(t=>{console.error(`Failed to attach controller "${e}" to native element:`,t)})}}globalThis.sniceNativeControllersInitialized=!0;const e=new MutationObserver(e=>{for(const n of e)"attributes"===n.type&&"controller"===n.attributeName?t(n.target):"childList"===n.type&&n.addedNodes.forEach(e=>{e instanceof HTMLElement&&(t(e),e.querySelectorAll("[controller]").forEach(t))})});function n(){document.querySelectorAll("[controller]").forEach(t),e.observe(document.body,{attributes:!0,attributeFilter:["controller"],childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n(),globalThis.sniceNativeControllerObserver=e}const Pe=e("context-handlers");function Me(t={}){return function(e,n){const o=n.name,r=n.kind,s=function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,tt)||(n[tt]=new Set);const s="method"===r?e:`field:${o}`;if(!n[tt].has(s)){if(n[tt].add(s),!Object.prototype.hasOwnProperty.call(n,Pe)){const t=n[Pe];n[Pe]=t?[...t]:[]}"method"===r?n[Pe].push({kind:"method",methodName:o,method:e,options:t}):"field"!==r&&"accessor"!==r||n[Pe].push({kind:"field",fieldName:o,options:t})}};return"method"===r?(n.addInitializer(s),e):function(t){return s.call(this),t}}}function Ie(t){const e=t.constructor[Pe];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[U];if(!n)return;t[z]=n;let o=t[Z];o||(o=new Map,t[Z]=o);for(const r of e){const{kind:e,options:s}=r,i="field"===e?r.fieldName:r.methodName,a=function(n){if(s.once&&t[X])return;const o=()=>{if("field"===e?t[r.fieldName]=n:r.method.call(t,n),s.once){t[X]=!0;const e=t[z];e&&"function"==typeof e[G]&&e[G](t)}},a=t[J]||(t[J]={}),c=i;if(s.debounce)return clearTimeout(a[c]?.timeout),void(a[c]={timeout:setTimeout(o,s.debounce)});if(s.throttle){const t=Date.now();return void(t-(a[c]?.lastCall||0)>=s.throttle&&(a[c]={lastCall:t},o()))}o()};o.set(i,a),"function"==typeof n[K]&&n[K](t,i);try{a(n)}catch(t){console.error("Error invoking @context handler at registration:",t)}}}const $e=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(t,e){e.sync?Re(t,e):(this.pending.add(t),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>this.flush())))}flush(){const t=Array.from(this.pending);this.pending.clear(),this.scheduled=!1;for(const e of t){if(!e.isConnected)continue;Re(e,e[D]||{})}}remove(t){this.pending.delete(t)}};function De(t){const e=t[q];if(!e||0===e.length)return;const n=[...e];t[q]=[],n.forEach(t=>t())}function Re(t,e,n){const o=t[$];if(o&&(!e.once||!t[R]))try{const r=void 0!==n?n:o.call(t);if(t.shadowRoot||t.attachShadow({mode:"open"}),!1===e.differential)return"string"!=typeof r?void console.warn("Render method with differential: false must return a string"):(t.shadowRoot.innerHTML=r,void De(t));if(!Gt(r))return void console.warn("Render method must return html`` template result");let s=t[R];if(s&&s.isSameTemplate(r.strings))return s.update(r.values),void De(t);if(s){const e=t.shadowRoot,n=[];for(const t of Array.from(e.childNodes))1===t.nodeType&&"STYLE"===t.tagName||n.push(t);for(const t of n)t.remove()}s=new ce(r),t[R]=s,t.shadowRoot.appendChild(s.renderFragment()),s.update(r.values),De(t)}catch(t){console.error("Error rendering element:",t)}}function je(t,e=!1){const n=t[D]||{};if(!n.once||!t[R])if(e)Re(t,n);else{if(void 0!==n.debounce&&n.debounce>0)return t[j]||(t[j]={}),clearTimeout(t[j].debounce),void(t[j].debounce=setTimeout(()=>{$e.schedule(t,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){t[j]||(t[j]={lastThrottle:0});const e=t[j],o=Date.now();if(0===e.lastThrottle||o-e.lastThrottle>=n.throttle)return e.lastThrottle=o,void $e.schedule(t,n);if(!e.throttleTimer){const r=n.throttle-(o-e.lastThrottle);e.throttleTimer=setTimeout(()=>{e.throttleTimer=null,e.lastThrottle=Date.now(),$e.schedule(t,n)},r)}return}$e.schedule(t,n)}}function qe(t={}){return function(e,n){return n.name,n.addInitializer(function(){this[$]=e,this[D]=t}),function(...t){const n=e.apply(this,t);return Re(this,{},n),n}}}function Fe(){return function(t,e){return e.addInitializer(function(){this[F]&&!this[V]?this[V]=[this[F]]:this[F]&&this[V]&&this[V].push(this[F]),this[F]=t}),t}}const Be=e("debounce-timers"),Ve=e("throttle-timers"),Ue=e("once-called"),ze=e("memoize-cache");function He(t=300,e={}){const{leading:n=!1,trailing:o=!0,maxWait:r}=e;return function(e,s){const i=s.name;return function(...s){this[Be]||(this[Be]={});const a=this[Be],c=i;a[c]&&clearTimeout(a[c].timeout);const l=Date.now(),u=!a[c],h=u?l:a[c].startTime,d=void 0!==r&&l-h>=r;if(n&&u){const t=e.apply(this,s);return a[c]={timeout:null,startTime:h,lastArgs:s},t}const f=setTimeout(()=>{(o||d)&&e.apply(this,a[c].lastArgs),delete a[c]},d?0:t);a[c]={timeout:f,startTime:h,lastArgs:s}}}}function We(t=300,e={}){const{leading:n=!0,trailing:o=!0}=e;return function(e,r){const s=r.name;return function(...r){this[Ve]||(this[Ve]={});const i=this[Ve],a=s,c=Date.now();if(!i[a])return n&&e.apply(this,r),i[a]={lastInvoke:c,timeout:null,lastArgs:r},void(o&&!n&&(i[a].timeout=setTimeout(()=>{e.apply(this,i[a].lastArgs),delete i[a]},t)));const l=c-i[a].lastInvoke;if(i[a].lastArgs=r,i[a].timeout&&clearTimeout(i[a].timeout),l>=t)return e.apply(this,r),void(i[a].lastInvoke=c);if(o){const n=t-l;i[a].timeout=setTimeout(()=>{e.apply(this,i[a].lastArgs),i[a].lastInvoke=Date.now(),i[a].timeout=null},n)}}}}function Ke(t=!0){let e,n=!1;return function(o,r){const s=r.name;return function(...r){return t?(this[Ue]||(this[Ue]={}),this[Ue][s]||(this[Ue][s]={called:!0,result:o.apply(this,r)}),this[Ue][s].result):(n||(n=!0,e=o.apply(this,r)),e)}}}function Ge(t={}){const{keyGenerator:e=(...t)=>JSON.stringify(t),maxSize:n=100,ttl:o}=t;return function(t,r){const s=r.name;return function(...r){this[ze]||(this[ze]={}),this[ze][s]||(this[ze][s]=new Map);const i=this[ze][s],a=e(...r);if(i.has(a)){const t=i.get(a);if(!(void 0!==o&&Date.now()-t.timestamp>o))return t.value;i.delete(a)}const c=t.apply(this,r);if(i.set(a,{value:c,timestamp:Date.now()}),i.size>n){const t=i.keys().next().value;i.delete(t)}return c}}}function Qe(t){if(t[Be]){for(const e in t[Be])t[Be][e]?.timeout&&clearTimeout(t[Be][e].timeout);t[Be]={}}}function Je(t){if(t[Ve]){for(const e in t[Ve])t[Ve][e]?.timeout&&clearTimeout(t[Ve][e].timeout);t[Ve]={}}}function Xe(t,e){t[ze]&&(e?delete t[ze][e]:t[ze]={})}function Ye(t,e){t[Ue]&&(e?delete t[Ue][e]:t[Ue]={})}function Ze(t){t.prototype[r]=!0;const e=t.prototype.connectedCallback,n=t.prototype.disconnectedCallback,o=t.prototype.attributeChangedCallback,s=t.observedAttributes||[];s.includes("controller")||s.push("controller");const u=t[y];if(u)for(const[t,e]of u){if(!1===e.attribute)continue;const n=St(e,t);s.includes(n)||s.push(n)}Object.defineProperty(t,"observedAttributes",{get:()=>s,configurable:!0}),Object.defineProperty(t.prototype,"ready",{get(){return this[i]||(this[i]=new Promise(t=>{this[a]=t})),this[i]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controller",{get(){return this[c]},set(t){const e=this[c];this[c]=t,t!==e&&(t?_e(this,t).catch(e=>{console.error(`Failed to attach controller "${t}":`,e)}):e&&ke(this).catch(t=>{console.error("Failed to detach controller:",t)}))},enumerable:!0,configurable:!0}),t.prototype.connectedCallback=async function(){if(this[i]||(this[i]=new Promise(t=>{this[a]=t})),this[l]){Ae(this,this),Vt(this,this),Ie(this);try{It(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,t)}e&&e.call(this);const n=t[x];if(n)for(const t of n)try{const e=t.method.call(this);e&&"function"==typeof e.then&&e.catch(e=>{console.error(`Error in @reconnect handler ${t.methodName}:`,e)})}catch(e){console.error(`Error in @reconnect handler ${t.methodName}:`,e)}return}this[v]=!0;const n=t[y];if(n)for(const[t,e]of n){if(!1===e.attribute)continue;const n=St(e,t);if(!this.hasAttribute(n))continue;const o=this.getAttribute(n);xt(this,N).add(t),e.type===Boolean&&""===o&&this.setAttribute(n,"true"),this[t]=Nt(o,e)}if(this[b]){for(const[t,e]of Array.from(this[b].entries())){const o=n?.get(t),r=St(o||{},t);this[b].delete(t),this.hasAttribute(r)||(this[t]=e)}delete this[b]}if(this.hasAttribute("controller")&&!this[c]){const t=this.getAttribute("controller");t&&(this.controller=t)}!function(t){const e=t[F];if(e&&!t[B]){t[B]=!0;try{const n=[],o=t[V];if(o)for(const e of o){const o=e.call(t);Qt(o)&&n.push(o)}const r=e.call(t);if(!Qt(r))return void console.warn("Styles method must return css`` template result");if(n.push(r),t.shadowRoot||t.attachShadow({mode:"open"}),!t.shadowRoot)return;if(n.every(t=>!!t.styleSheet)&&"adoptedStyleSheets"in t.shadowRoot)return void(t.shadowRoot.adoptedStyleSheets=n.map(t=>t.styleSheet));for(const e of n){const n=document.createElement("style");n.textContent=e.cssText,t.shadowRoot.appendChild(n)}}catch(t){console.error("Error applying styles:",t)}}}(this),Ae(this,this),Vt(this,this),Ie(this),this[l]=!0,e&&e.call(this);const o=t[A];if(await new Promise(t=>queueMicrotask(t)),this.isConnected){this[$]&&je(this,!0);try{It(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName}:`,t)}if(await new Promise(t=>queueMicrotask(t)),this.isConnected){if(o)for(const t of o)try{await t.method.call(this)}catch(e){console.error(`Error in @ready handler ${t.methodName}:`,e)}this[a]&&(this[a](),this[a]=null)}else this[a]&&(this[a](),this[a]=null)}else this[a]&&(this[a](),this[a]=null)},t.prototype.disconnectedCallback=async function(){const e=t[O];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @dispose handler ${t.methodName}:`,e)}n&&n.call(this),this[c]&&ke(this).catch(t=>{console.error("Failed to detach controller:",t)}),Oe(this),Ut(this),function(t){const e=t.constructor[Pe];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[J];if(n&&"object"==typeof n){for(const t of Object.keys(n))n[t]?.timeout&&clearTimeout(n[t].timeout);delete t[J]}delete t[Z];const o=t[z];o&&"function"==typeof o[G]&&o[G](t),delete t[z],delete t[X]}(this),qt(this),Qe(this),Je(this)},t.prototype.attributeChangedCallback=function(e,n,r){if(o?.call(this,e,n,r),"controller"===e)return void(this.controller=r);const s=t[y];if(s)for(const[n,o]of s){if(St(o,n).toLowerCase()!==e.toLowerCase())continue;const s=this[g]?.[n],i=Nt(r,o,s,void 0);if(s===i)break;xt(this,N).add(n),Ct(this,g)[n]=i,this[L]?.has(e.toLowerCase())||(_t(this,t,n,s,i),this[$]&&this[l]&&je(this));break}},t.prototype.connectedMoveCallback=async function(){const e=t[C];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @moved handler ${t.methodName}:`,e)}},t.prototype.adoptedCallback=async function(){const e=t[_];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @adopted handler ${t.methodName}:`,e)}}}function tn(t,e,n,o){if(function(t){let e=Object.getPrototypeOf(t);const n=[];for(;e&&e!==HTMLElement&&e!==Function.prototype;)n.push(e),e=Object.getPrototypeOf(e);n.reverse();for(const e of n){if(e[y]){t[y]||(t[y]=new Map);for(const[n,o]of e[y])t[y].has(n)||t[y].set(n,o)}e.formAssociated&&!t.formAssociated&&(t.formAssociated=!0)}}(e),n.metadata&&n.metadata[y]){e[y]||(e[y]=new Map);for(const[t,o]of n.metadata[y])e[y].set(t,o)}else if(on.length>0){e[y]||(e[y]=new Map);const t=on.pop();for(const[n,o]of t)e[y].set(n,o)}return o?.formAssociated&&(e.formAssociated=!0),Ze(e),customElements.get(t)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${t}" is already registered. Skipping.`),e):(customElements.define(t,e),e)}function en(t,e){return function(n,o){return tn(t,n,o,e)}}function nn(t){return function(e,n){return tn(t,e,n)}}const on=[];function rn(t){return function(e,n){const o=n.name;return n.metadata?(n.metadata[y]||(n.metadata[y]=new Map),n.metadata[y].set(o,t||{})):(0===on.length&&on.push(new Map),on[on.length-1].set(o,t||{})),function(e){const n=this.constructor;n[y]||(n[y]=new Map);const r={...t};r.type||void 0===e||(r.type=wt(e)),n[y].set(o,r);const s=this.constructor.prototype;let i=s[ht];i&&Object.prototype.hasOwnProperty.call(s,ht)||(i=new Map(i),s[ht]=i);const a=i.get(o);if(!a||a!==t){i.set(o,t);const n={get(){if(!1===r?.attribute)return this[g]&&o in this[g]?this[g][o]:this[b]?.has(o)?this[b].get(o):e;const t=St(r||{},o),n=this.getAttribute?.(t);if(null!==n)return Nt(n,r||{},void 0,e);return((r?.type||wt(e))!==Boolean||!this[N]?.has(o))&&(this[b]?.has(o)?this[b].get(o):e)},set(t){const n=this[o];if(n!==t){if(!this[v])return this[b]||(this[b]=new Map),void this[b].set(o,t);if(!1===r?.attribute)Ct(this,g)[o]=t;else{const n=St(r,o),s=function(t,e,n){if(null==t||!1===t||e?.type===dt&&Array.isArray(t)&&0===t.length)return null;if(e.converter?.toAttribute)return e.converter.toAttribute(t,e.type);switch(e.type||wt(n)){case Boolean:return"true";case Date:return t instanceof Date?t.toISOString():String(t);case BigInt:return"bigint"==typeof t?t.toString()+"n":String(t);case dt:return Array.isArray(t)?dt.serialize(t):String(t);case Array:return Array.isArray(t)?JSON.stringify(t):String(t);case Object:return"object"==typeof t&&null!==t?JSON.stringify(t):String(t);default:return String(t)}}(t,r,e);xt(this,N).add(o),xt(this,L).add(n.toLowerCase()),null===s?this.removeAttribute?.(n):this.setAttribute?.(n,s),queueMicrotask(()=>{this[L]?.delete(n.toLowerCase())})}_t(this,this.constructor,o,n,t),this[$]&&this[l]&&je(this)}},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,o,n)}return Ct(this,g)[o]=e,e}}}function sn(t){return!0===t[o]&&t.element?t.element:t}function an(t,e={}){return function(n,o){const{light:r=!1,shadow:s=!0}=e,i=o.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=sn(this);let n=null;return s&&e.shadowRoot&&(n=e.shadowRoot.querySelector(t)),!n&&r&&(n=e.querySelector(t)),n||null},set(){},configurable:!0,enumerable:!0}),e}}}function cn(t,e={}){return function(n,o){const{light:r=!1,shadow:s=!0}=e,i=o.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=sn(this),n=[];return s&&e.shadowRoot&&n.push(...e.shadowRoot.querySelectorAll(t)),r&&n.push(...e.querySelectorAll(t)),n},set(){},configurable:!0,enumerable:!0}),e}}}function ln(...t){return function(e,n){const o=n.name;n.addInitializer(function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,et)||(n[et]=new Map);let r=n[et].get(e);if(r||(r=new Set,n[et].set(e,r)),!Object.prototype.hasOwnProperty.call(n,w)){const t=n[w],e=new Map;if(t)for(const[n,o]of t)e.set(n,[...o]);n[w]=e}for(const s of t)r.has(s)||(r.add(s),n[w].has(s)||n[w].set(s,[]),n[w].get(s).push({methodName:o,method:e}))})}}function un(){return function(t,e){const n=e.name;return function(t){if(!Object.hasOwn(this.constructor.prototype,n)){const t={get(){if(void 0!==this[S])return this[S];let t=!0===this[o]&&this.element?this.element:this;if(!t||!t.dispatchEvent)return;t.getRootNode&&t.getRootNode()instanceof ShadowRoot&&(t=t.getRootNode().host);const e={target:this};return t.dispatchEvent(new CustomEvent("@context/request",{bubbles:!0,cancelable:!0,detail:e})),void 0!==e.context?(this[S]=e.context,e.context):void 0},set(){},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,n,t)}return t}}}function hn(t,e,n,o,r){const s=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,e)||(o[e]=new Set),!o[e].has(n)){if(o[e].add(n),!Object.prototype.hasOwnProperty.call(o,t)){const e=o[t];o[t]=e?[...e]:[]}o[t].push({methodName:s,method:n,...r})}})}function dn(){return function(t,e){hn(A,st,t,e)}}function fn(){return function(t,e){hn(O,it,t,e)}}function mn(){return function(t,e){hn(x,at,t,e)}}function pn(t,e,n){return function(o={}){return function(r,s){hn(t,n,r,s,{options:o});const i=s.name;return function(...t){this[e]||(this[e]=new Map),this[e].has(i)||this[e].set(i,{throttleTimer:null,debounceTimer:null,lastThrottleCall:0});const n=this[e].get(i),s=(...t)=>r.apply(this,t);if(o.debounce>0)return clearTimeout(n.debounceTimer),void(n.debounceTimer=setTimeout(()=>s(...t),o.debounce));if(o.throttle>0){const e=Date.now();if(0===n.lastThrottleCall||e-n.lastThrottleCall>=o.throttle)return n.lastThrottleCall=e,s(...t);if(!n.throttleTimer){const r=o.throttle-(e-n.lastThrottleCall);n.throttleTimer=setTimeout(()=>{n.throttleTimer=null,n.lastThrottleCall=Date.now(),s(...t)},r)}return}return s(...t)}}}}const yn=pn(C,P,ct),gn=pn(_,M,lt);
15
+ globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0});const t=globalThis.snice;function e(t){return Symbol.for(`snice:${t}`)}const n=e("is-controller-class"),o=e("is-controller-instance"),r=e("is-element-class"),s=e("channel-handlers"),i=e("ready-promise"),a=e("ready-resolve"),c=e("controller"),l=e("initialized"),u=e("controller-key"),h=e("controller-name"),d=e("controller-id"),f=e("controller-operations"),m=e("native-controller"),p=e("cleanup"),y=e("properties"),g=e("property-values"),b=e("pre-init-property-values"),v=e("properties-initialized"),w=e("property-watchers"),N=e("explicitly-set-properties"),S=e("router-context"),T=e("page-transition"),E=e("created-at"),A=e("ready-handlers"),O=e("dispose-handlers"),x=e("reconnect-handlers"),C=e("moved-handlers"),_=e("adopted-handlers"),k=e("observers"),L=e("setting-from-property"),P=e("moved-timers"),M=e("adopted-timers"),I=e("dispatch-timers"),$=e("render-method"),D=e("render-options"),R=e("render-instance"),j=e("render-timers"),q=e("render-callbacks"),F=e("styles-method"),B=e("styles-applied"),V=e("parent-styles-methods"),U=e("context-handler"),z=e("navigation-context-instance"),H=e("registered-elements"),W=e("is-updating"),K=e("context-register"),G=e("context-unregister"),Q=e("context-notify-element"),J=e("context-timer"),X=e("context-called"),Y=e("context-update"),Z=e("wrapped-context-handlers"),tt=e("context-methods"),et=e("watch-methods"),nt=e("observe-methods"),ot=e("on-methods"),rt=e("respond-methods"),st=e("ready-methods"),it=e("dispose-methods"),at=e("reconnect-methods"),ct=e("moved-methods"),lt=e("adopted-methods"),ut=e("controller-abort"),ht=e("property-definers");class dt{static{this.SEPARATOR=","}static serialize(t){return Array.isArray(t)?t.map(t=>{if("string"==typeof t){if(t.includes(dt.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${dt.SEPARATOR}" (U+FF0C)`);return t}if("number"==typeof t||"boolean"==typeof t)return String(t);throw new Error("SimpleArray only supports string, number, and boolean types. Got: "+typeof t)}).join(dt.SEPARATOR):""}static parse(t){return null==t||""===t?[]:t.split(dt.SEPARATOR).map(t=>{if(/^-?\d+\.?\d*$/.test(t)){const e=Number(t);if(!isNaN(e))return e}return"true"===t||"false"!==t&&t})}}var ft,mt,pt,yt;!function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(ft||(ft={}));const gt=Symbol.for("snice:registered-elements-set");let bt=0;class vt{constructor(t={},e=[],n="",o={},r){if(this[mt]=new WeakMap,this[pt]=new Set,this[yt]=!1,this.id=bt++,this.application=t,this.navigation={placards:e,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)}}[(mt=H,pt=gt,yt=W,K)](t,e){const n=this[H];let o=n.get(t);o||(o=new Set,n.set(t,o)),o.add(e),this[gt].add(t)}[G](t){this[H].delete(t),this[gt].delete(t)}[Y](t,e,n,o){this.application=t,this.navigation.placards=e,this.navigation.route=n,this.navigation.params=o,this.notify()}update(){this.notify()}notify(){if(this[W])return;this[W]=!0;const t=this[gt],e=this[H];for(const n of t){const t=e.get(n);if(!t)continue;const o=n[Z];if(o)for(const e of t){const t=o.get(e);if("function"==typeof t)try{t(this)}catch(t){console.error(`Error calling @context handler ${e}:`,t)}}}this[W]=!1}[Q](t){const e=this[H].get(t);if(!e)return;const n=t[Z];if(n)for(const t of e){const e=n.get(t);"function"==typeof e&&e(this)}}}function wt(t){if(null!=t)return"string"==typeof t?String:"number"==typeof t?Number:"boolean"==typeof t?Boolean:t instanceof Date?Date:"bigint"==typeof t?BigInt:Array.isArray(t)?Array:void 0}function Nt(t,e,n,o){switch(e.type||wt(o)){case Boolean:return null!==t&&"false"!==t;case Number:return null!==t?Number(t):null;case String:return t;case Date:return t?new Date(t):null;case BigInt:return t&&t.endsWith("n")?BigInt(t.slice(0,-1)):t?BigInt(t):null;case dt:return dt.parse(t);case Array:try{return t?JSON.parse(t):[]}catch{return[]}case Object:try{return t?JSON.parse(t):{}}catch{return{}}default:return"number"==typeof n&&null!==t?Number(t):t}}function St(t,e){return"string"==typeof t.attribute?t.attribute:e.toLowerCase()}function Tt(t){return String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Et(t){return String(t??"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function At(t,e={}){const n=String(t??"").trim();if(!n)return!1;const o=e.allowed??["http:","https:","mailto:","tel:"];if(/^[#?/]/.test(n))return!0;try{const t=new URL(n,"http://__snice-base/");return"http://__snice-base"===t.origin||o.includes(t.protocol)}catch{return/^[\w\-./]+$/.test(n)}}function Ot(t){const e=String(t).trim(),n=parseFloat(e);let o;return o=isNaN(n)?0:/ms$/i.test(e)?n:/s$/i.test(e)?1e3*n:/m$/i.test(e)?6e4*n:/h$/i.test(e)?36e5*n:n,{milliseconds:()=>o,seconds:()=>o/1e3,minutes:()=>o/6e4}}function xt(t,e){return t[e]||(t[e]=new Set),t[e]}function Ct(t,e){return t[e]||(t[e]={}),t[e]}function _t(t,e,n,o,r){const s=e[w];if(!s)return;const i=[n],a=e[y]?.get(n),c=a&&"string"==typeof a.attribute?a.attribute:null;c&&c!==n&&i.push(c);for(const e of i)if(s.has(e))for(const i of s.get(e))try{i.method.call(t,o,r,n)}catch(t){console.error(`Error in @watch('${e}') method ${i.methodName}:`,t)}if(s.has("*"))for(const e of s.get("*"))try{e.method.call(t,o,r,n)}catch(t){console.error(`Error in @watch('*') method ${e.methodName}:`,t)}}function kt(t,e){let n=null;return function(...o){null!==n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,o),n=null},e)}}function Lt(t,e){let n=0,o=null;return function(...r){const s=Date.now(),i=e-(s-n);if(i<=0)return o&&(clearTimeout(o),o=null),n=s,t.apply(this,r);o||(o=setTimeout(()=>{n=Date.now(),o=null,t.apply(this,r)},i))}}const Pt=new Map;function Mt(t,e,n){let o,r;return"string"==typeof e?(o=e,r=n):(o=void 0,r=e),function(e,n){const s=n.name;n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,nt)||(n[nt]=new Set),n[nt].has(e))return;if(n[nt].add(e),!Object.prototype.hasOwnProperty.call(n,k)){const t=n[k];n[k]=t?[...t]:[]}const i=Array.isArray(t)?t:[t];for(const t of i){const[i,...a]=t.split(":"),c=a.join(":");n[k].push({type:i,target:c,selector:o,methodName:s,method:e,options:r})}})}}function It(t,e){const n=t.constructor[k];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].observers||(t[p].observers=[]):t[p]={events:[],channels:[],observers:[]};for(const o of n){const n=o.method.bind(t),r=o.options?.throttle?Lt(n,o.options.throttle):n;switch(o.type){case"intersection":$t(t,e,o,r);break;case"resize":Dt(t,e,o,r);break;case"media":Rt(t,e,o,r);break;case"mutation":jt(t,e,o,r);break;default:console.warn(`Unknown observer type: ${o.type}`)}}}}function $t(t,e,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(t=>{for(const e of t)try{!1===o(e)&&s&&s.unobserve(e.target)}catch(t){console.error(`Error in intersection observer ${n.methodName}:`,t)}},r),i=n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):[e];i.forEach(t=>s.observe(t)),t[p].observers.push(()=>{i.forEach(t=>s.unobserve(t)),0===s.takeRecords().length&&s.disconnect()})}function Dt(t,e,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(t=>{for(const e of t)try{o(e)}catch(t){console.error(`Error in resize observer ${n.methodName}:`,t)}});(n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):[e]).forEach(t=>{s.observe(t,{box:r})}),t[p].observers.push(()=>{s.disconnect()})}function Rt(t,e,n,o){const r=n.target;if(!r)return void console.warn("Media query observer requires a query string");let s=Pt.get(r);if(!s)try{s=window.matchMedia(r),Pt.set(r,s)}catch(t){return void console.error(`Invalid media query: ${r}`,t)}const i=t=>{try{o(t.matches)}catch(t){console.error(`Error in media query observer ${n.methodName}:`,t)}};i(s);const a=t=>i(t);s.addEventListener?(s.addEventListener("change",a),t[p].observers.push(()=>{s.removeEventListener("change",a)})):(s.addListener(a),t[p].observers.push(()=>{s.removeListener(a)}))}function jt(t,e,n,r){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 console.warn(`Unknown mutation type: ${i}`)}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),u=new MutationObserver(t=>{try{if(!l)return void r(t);const o=n.options.maxDepth,s=e.shadowRoot||e,i=t.filter(t=>{let e=0,n=t.target;for(;n&&n!==s&&e<o;)n=n.parentNode,e++;return e<o});i.length>0&&r(i)}catch(t){console.error(`Error in mutation observer ${n.methodName}:`,t)}}),h=!0===t[o];(n.selector?Array.from(e.shadowRoot?.querySelectorAll(n.selector)||[]):h&&e.shadowRoot?[e.shadowRoot]:[e]).forEach(t=>{u.observe(t,c)}),t[p].observers.push(()=>{u.disconnect()})}function qt(t){if(t[p]?.observers){for(const e of t[p].observers)e();t[p].observers=[]}}function Ft(t,e){return function(n,r){let s,i,a=0;const c=[];return async function(...r){const l=async()=>{const s=e?.timeout??12e4,i=e?.discoveryTimeout??50,a=n.apply(this,r),{value:c,done:l}=await a.next();if(l)return c;let u,h;const d=new Promise((t,e)=>{u=t,h=e});let f,m,p;const y=new Promise((e,n)=>{f=e,m=n,p=setTimeout(()=>{n(new Error(`Request "${t}" timed out after ${i}ms - no handler found`))},i)}),g=new CustomEvent(`@request/${t}`,{bubbles:void 0===e?.bubbles||e.bubbles,cancelable:e?.cancelable||!1,composed:!0,detail:{payload:c,discovery:{resolve:()=>{clearTimeout(p),f()},reject:m},data:{resolve:u,reject:h}}});(!0===this[o]&&this.element?this.element:this).dispatchEvent(g);try{await y;const e=setTimeout(()=>{h(new Error(`Request "${t}" timed out after ${s}ms`))},s),n=await d;clearTimeout(e);const{value:o}=await a.next(n);return o}catch(t){try{await a.throw(t)}catch(t){throw t}}};if(e?.debounce)return new Promise((t,n)=>{clearTimeout(s),s=setTimeout(async()=>{try{t(await l())}catch(t){n(t)}},e.debounce)});if(!e?.throttle)return l();const u=Date.now(),h=e.throttle-(u-a);return h<=0?(clearTimeout(i),a=u,l()):new Promise(i?(t,e)=>{c.push({resolve:t,reject:e})}:(t,e)=>{c.push({resolve:t,reject:e}),i=setTimeout(async()=>{a=Date.now(),i=null;const t=c.splice(0);try{const e=await l();for(const n of t)n.resolve(e)}catch(e){for(const n of t)n.reject(e)}},h)})}}}function Bt(t,e){return function(n,o){const r=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,rt)||(o[rt]=new Set),!o[rt].has(n)){if(o[rt].add(n),!Object.prototype.hasOwnProperty.call(o,s)){const t=o[s];o[s]=t?[...t]:[]}o[s].push({channelName:t,methodName:r,method:n,options:e})}})}}function Vt(t,e){const n=t.constructor[s];if(n){t[p]||(t[p]={events:[],channels:[]});for(const o of n){const n=o.method.bind(t),r=`@request/${o.channelName}`;let s,i,a=0;const c=[];let l=null;const u=(t=>o.options?.debounce?(...e)=>new Promise((n,r)=>{clearTimeout(s),s=setTimeout(async()=>{try{n(await t(...e))}catch(t){r(t)}},o.options.debounce)}):o.options?.throttle?(...e)=>{const n=Date.now(),r=o.options.throttle-(n-a);return r<=0?(clearTimeout(i),i=null,a=n,t(...e)):(l=e,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??e;l=null;try{const e=await t(...o);for(const t of n)t.resolve(e)}catch(t){for(const e of n)e.reject(t)}},r))}))}:t)(n),h=t=>{const{data:e,discovery:n,payload:r}=t.detail;t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation(),n.resolve(),Promise.resolve(u(r)).then(t=>{e.resolve(t)}).catch(t=>{e.reject(t),console.error(`Error in response handler ${o.methodName}:`,t)})};e.addEventListener(r,h),t[p].channels.push(()=>{e.removeEventListener(r,h)})}}}function Ut(t){if(t[p]?.channels){for(const e of t[p].channels)e();t[p].channels=[]}}const zt=Symbol.for("snice:html-result"),Ht=Symbol.for("snice:css-result");function Wt(t,...e){return{_$litType$:zt,strings:t,values:e}}function Kt(t,...e){let n=t[0];for(let o=0;o<e.length;o++)n+=String(e[o])+t[o+1];const o={_$litType$:Ht,cssText:n};if("undefined"!=typeof CSSStyleSheet&&"undefined"!=typeof Document&&"adoptedStyleSheets"in Document.prototype)try{const t=new CSSStyleSheet;t.replaceSync(n),o.styleSheet=t}catch(t){}return o}function Gt(t){return t&&t._$litType$===zt}function Qt(t){return t&&t._$litType$===Ht}const Jt=Symbol.for("snice:nothing"),Xt=Symbol.for("snice:unsafe-html");function Yt(t){return{_$litType$:Xt,html:t}}const Zt=`snice$${Math.random().toFixed(9).slice(2)}$`,te="?"+Zt,ee=`<${te}>`,ne=new RegExp(Zt,"g"),oe=new WeakMap,re=Symbol("not-committed"),se=Symbol.for("snice:no-change"),ie=t=>null===t||"object"!=typeof t&&"function"!=typeof t;class ae{constructor(t,e,n){this.parts=[],this.element=e;const o=document.createTreeWalker(e.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 t=i,e=t.tagName.toLowerCase();if("if"===e){const e=t.getAttribute("value");e&&e.includes(Zt)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-if",index:r++,element:t}));continue}if("case"===e){const e=t.getAttribute("value");e&&e.includes(Zt)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-case",index:r++,element:t}));continue}if(t.hasAttributes()){const e=t.attributes,o=[];for(let s=0;s<e.length;s++){const i=e[s],a=i.value;if(a.includes(Zt)){o.push(i);const e=n[r]||i.name,s=a.split(Zt),c=s.length-1;e.startsWith("@@")||e.startsWith("@")?(this.parts.push({type:"event",index:r,name:e.slice(1),element:t}),r+=1):e.startsWith(".")?(this.parts.push({type:"property",index:r,name:e.slice(1),element:t}),r+=1):e.startsWith("?")?(this.parts.push({type:"boolean-attribute",index:r,name:e.slice(1),element:t}),r+=1):(this.parts.push({type:"attribute",index:r,name:i.name,element:t,attrStrings:s}),r+=c)}}for(const e of o)t.removeAttribute(e.name)}}else if(i.nodeType===Node.COMMENT_NODE){const t=i;if(t.data===te){const e=t.parentNode,n=document.createComment("");e.insertBefore(n,t.nextSibling),this.parts.push({type:"node",index:r++,startNode:t,endNode:n})}}else if(i.nodeType===Node.TEXT_NODE){const t=i,e=t.data;if(e.includes(Zt)){const n=t.parentNode,o=e.split(ne),i=o.length-1;for(let e=0;e<i;e++){n.insertBefore(document.createTextNode(o[e]),t);const s=document.createComment(""),i=document.createComment("");n.insertBefore(s,t),n.insertBefore(i,t),this.parts.push({type:"node",index:r++,startNode:s,endNode:i})}""!==o[i]?t.data=o[i]:s.push(t)}}for(const t of s)t.parentNode?.removeChild(t)}}class ce{constructor(t){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=function(t){const{strings:e}=t,n=oe.get(e);if(n)return n;const o=[],r=[];let s=!1,i=!1,a="",c="";for(let t=0;t<e.length;t++){const n=e[t];if(o.push(n),t<e.length-1){for(let t=0;t<n.length;t++){const e=n[t];if(s){if(i)e===a&&(i=!1,a="");else if(">"===e)s=!1;else if('"'===e||"'"===e)i=!0,a=e;else if("="===e){let e=t-1;for(;e>=0&&/[\w\-\.@\?:\+~]/.test(n[e]);)e--;c=n.substring(e+1,t).trim()}}else"<"===e&&(s=!0)}if(i)r.push(c),o.push(Zt);else if(s){const t=n.trimEnd();if(t.endsWith("=")){let e=t.length-2;for(;e>=0&&/[\w\-\.@\?\/:\+~]/.test(t[e]);)e--;c=t.substring(e+1,t.length-1).trim(),r.push(c),o.push(Zt)}else n.match(/<(if|case)\s*$/)?(c="value",r.push("value"),o.push(`value="${Zt}"`)):(r.push(""),o.push(Zt))}else r.push(""),o.push(ee)}}const l=o.join(""),u=document.createElement("template");u.innerHTML=l;const h=new ae(t,u,r);return oe.set(e,h),h}(t),this.strings=t.strings}isSameTemplate(t){return this.strings===t}renderFragment(){if(!this.fragment){this.fragment=this.template.element.content.cloneNode(!0);const t=document.createTreeWalker(this.template.element.content,NodeFilter.SHOW_ALL),e=document.createTreeWalker(this.fragment,NodeFilter.SHOW_ALL),n=new Map;let o=t.currentNode,r=e.currentNode;for(;o&&r;)n.set(o,r),o=t.nextNode(),r=e.nextNode();for(let t=0;t<this.template.parts.length;t++){const e=this.template.parts[t];let o;switch(e.type){case"node":const t=n.get(e.startNode),r=n.get(e.endNode);o=new ue(t,r);break;case"attribute":const s=n.get(e.element);o=new he(s,e.name,e.attrStrings);break;case"property":const i=n.get(e.element);o=new de(i,e.name);break;case"boolean-attribute":const a=n.get(e.element);o=new fe(a,e.name);break;case"event":const c=n.get(e.element);o=new me(c,e.name);break;case"conditional-if":const l=n.get(e.element);o=new ve(l);break;case"conditional-case":const u=n.get(e.element);o=new we(u);break;default:throw new Error(`Unknown part type: ${e.type}`)}this.parts.push(o),o instanceof ve||o instanceof we?this.conditionalParts.push({part:o,index:e.index}):this.regularParts.push({part:o,index:e.index})}}return this.fragment}render(t){const e=this.renderFragment();return this.update(t),e}update(t){for(const{part:e,index:n}of this.conditionalParts)e.commit(t[n]);for(const{part:e,index:n}of this.regularParts)e instanceof he&&void 0!==e.strings?e.commit(t,n):e.commit(t[n])}clear(){for(const t of this.parts)t.clear()}}class le{}class ue extends le{constructor(t,e){super(),this._committedValue=re,this.startNode=t,this.endNode=e}commit(t){if(t!==se)return t===Jt||null==t||""===t?(this._committedValue!==Jt&&this._clear(),void(this._committedValue=Jt)):void(ie(t)?t!==this._committedValue&&this._commitText(t):Gt(t)?this._commitTemplateResult(t):!function(t){return t&&t._$litType$===Xt}(t)?void 0===t.nodeType?(t=>Array.isArray(t)||"function"==typeof t?.[Symbol.iterator])(t)?this._commitIterable(t):this._commitText(t):this._commitNode(t):this._commitUnsafeHTML(t))}_commitText(t){if(this._committedValue!==re&&this._committedValue!==Jt&&ie(this._committedValue)&&!Array.isArray(this._committedValue)){const e=this.startNode.nextSibling;if(e&&e.nodeType===Node.TEXT_NODE)return e.data=String(t),void(this._committedValue=t)}this._clear(),this._insertBefore(document.createTextNode(String(t))),this._committedValue=t}_commitTemplateResult(t){const e=this._committedValue;if(e instanceof ce){const n=oe.get(t.strings);if(n&&e.template===n)return void e.update(t.values)}this._clear();const n=new ce(t),o=n.renderFragment();this._insertBefore(o),n.update(t.values),this._committedValue=n}_commitIterable(t){Array.isArray(this._committedValue)&&this._committedValue[0]instanceof ue||(this._clear(),this._committedValue=[]);const e=this._committedValue;let n=0;for(const o of t){let t;if(n>=e.length){const n=document.createComment(""),o=document.createComment("");this._insertBefore(n),this._insertBefore(o),t=new ue(n,o),e.push(t)}else t=e[n];t.commit(o),n++}if(n<e.length){for(let t=n;t<e.length;t++){const n=e[t];n._clear(),n.startNode.remove(),n.endNode.remove()}e.length=n}}_commitNode(t){this._committedValue!==t&&(this._clear(),this._insertBefore(t),this._committedValue=t)}_commitUnsafeHTML(t){this._clear();const e=document.createElement("template");e.innerHTML=t.html,this._insertBefore(e.content),this._committedValue=t}_insertBefore(t){this.endNode.parentNode?.insertBefore(t,this.endNode)}_clear(){const t=this.startNode.parentNode;if(!t)return;let e=this.startNode.nextSibling;for(;e&&e!==this.endNode;){const n=e.nextSibling;t.removeChild(e),e=n}this._committedValue=Jt}clear(){this._clear()}}class he extends le{constructor(t,e,n){super(),this._committedValue=re,this.element=t,this.name=e,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(re),this.strings=n):this._committedValue=re}commit(t,e=0){let n,o=!1;if(void 0===this.strings){if(t===se)return;if(o=!ie(t)||t!==this._committedValue&&t!==se,!o)return;this._committedValue=t,n=t}else{const r=t,s=this._committedValue;n=this.strings[0];for(let t=0;t<this.strings.length-1;t++){let i=r[e+t];i===se&&(i=s[t]),o=o||!ie(i)||i!==s[t],i===Jt?n=Jt:n!==Jt&&(n=n+(i??"")+this.strings[t+1]),s[t]=i}if(!o)return}this._commitValue(n)}_commitValue(t){t===Jt||null==t?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(t))}clear(){this.element.removeAttribute(this.name)}}class de extends le{constructor(t,e){super(),this._committedValue=re,this.element=t,this.name=e}commit(t){t!==se&&t!==this._committedValue&&(this._committedValue=t,this.element[this.name]=t===Jt?void 0:t)}clear(){this.element[this.name]=void 0,this._committedValue=re}}class fe extends le{constructor(t,e){super(),this._committedValue=re,this.element=t,this.name=e}commit(t){if(t===se)return;const e=!!t&&t!==Jt;e!==this._committedValue&&(this._committedValue=e,e?this.element.setAttribute(this.name,""):this.element.removeAttribute(this.name))}clear(){this.element.removeAttribute(this.name),this._committedValue=re}}class me extends le{constructor(t,e){super(),this.listener=null,this.value=void 0,this.keyFilter=null,this.host=null,this.element=t;const n=["keydown","keyup","keypress"].includes(e.split(".")[0].split(":")[0]),o=e.indexOf("."),r=n?e.indexOf(":"):-1,s=o>0&&r>0?Math.min(o,r):Math.max(o,r);if(s>0){const t=e.substring(0,s),n=e.substring(s+1);this.eventName=t,this.keyFilter=pe(n)}else this.eventName=e}commit(t){if(t===se)return;if(t===Jt&&(t=null),t===this.value&&null!=t)return;if(this.listener&&(this.element.removeEventListener(this.eventName,this.listener),this.listener=null),this.value=t,null==t)return;if("function"!=typeof t)return;if(!this.host){const t=this.element.getRootNode();this.host=t.host||null}const e=this.host||null,n=this.keyFilter;this.listener=o=>{n&&!ge(o,n)||t.call(e,o)},this.element.addEventListener(this.eventName,this.listener)}clear(){this.listener&&(this.element.removeEventListener(this.eventName,this.listener),this.listener=null)}}function pe(t){const e=t.startsWith("~");e&&(t=t.substring(1));const n=t.split("+"),o={key:"",anyModifiers:e};for(const t of n){const e=t.toLowerCase();"ctrl"===e||"control"===e?o.ctrl=!0:"alt"===e?o.alt=!0:"shift"===e?o.shift=!0:"meta"===e||"cmd"===e||"command"===e?o.meta=!0:o.key=ye(t)}return o}function ye(t){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"}[t.toLowerCase()]||t}function ge(t,e){if(t.key!==e.key)return!1;if(e.anyModifiers)return!0;const n=e.ctrl?t.ctrlKey:!t.ctrlKey,o=e.alt?t.altKey:!t.altKey,r=e.shift?t.shiftKey:!t.shiftKey,s=e.meta?t.metaKey:!t.metaKey;return n&&o&&r&&s}const be=Symbol("not-set");class ve extends le{constructor(t){super(),this.value=be,this.childFragment=null;const e=t.parentNode;for(this.startNode=document.createComment("if"),this.endNode=document.createComment("/if"),e.insertBefore(this.startNode,t),e.insertBefore(this.endNode,t.nextSibling);t.firstChild;)e.insertBefore(t.firstChild,this.endNode);e.removeChild(t)}commit(t){const e=Boolean(t);if(this.value!==t)if(this.value=t,e)this.childFragment&&this.childFragment.hasChildNodes()&&this.startNode.parentNode.insertBefore(this.childFragment,this.endNode);else{this.childFragment||(this.childFragment=document.createDocumentFragment());let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;this.childFragment.appendChild(t),t=e}}}clear(){this.childFragment||(this.childFragment=document.createDocumentFragment());let t=this.startNode.nextSibling;for(;t&&t!==this.endNode;){const e=t.nextSibling;this.childFragment.appendChild(t),t=e}}}class we extends le{constructor(t){super(),this.value=be,this.branches=new Map,this.defaultBranch=null,this.currentKey=null;const e=t.parentNode;this.startNode=document.createComment("case"),this.endNode=document.createComment("/case"),e.insertBefore(this.startNode,t),e.insertBefore(this.endNode,t.nextSibling);for(const e of Array.from(t.children)){const t=e.tagName.toLowerCase();if("when"===t){const t=e.getAttribute("value")||"",n=document.createDocumentFragment();for(;e.firstChild;)n.appendChild(e.firstChild);this.branches.set(t,n)}else if("default"===t)for(this.defaultBranch=document.createDocumentFragment();e.firstChild;)this.defaultBranch.appendChild(e.firstChild)}e.removeChild(t)}commit(t){if(this.value===t)return;this.value=t;const e=String(t);this._collectCurrent();const n=this.branches.has(e),o=n?this.branches.get(e):this.defaultBranch;this.currentKey=n?e:this.defaultBranch?"__default__":null,o&&o.hasChildNodes()&&this.startNode.parentNode.insertBefore(o,this.endNode)}_collectCurrent(){if(null===this.currentKey)return;const t="__default__"===this.currentKey?this.defaultBranch:this.branches.get(this.currentKey);if(!t)return;let e=this.startNode.nextSibling;for(;e&&e!==this.endNode;){const n=e.nextSibling;t.appendChild(e),e=n}}clear(){this._collectCurrent(),this.currentKey=null}}const Ne=e("on-handlers");function Se(t,e,n){let o=null,r={};return"string"==typeof e?(o=e,r=n||{}):e&&"object"==typeof e?r=e:null===e&&n&&(r=n),function(e,n){const s=n.name;return n.addInitializer(function(){const n=this.constructor;if(Object.prototype.hasOwnProperty.call(n,ot)||(n[ot]=new Set),n[ot].has(e))return;if(n[ot].add(e),!Object.prototype.hasOwnProperty.call(n,Ne)){const t=n[Ne];n[Ne]=t?[...t]:[]}const i=Array.isArray(t)?t:[t];for(const t of i)n[Ne].push({eventName:t,selector:o,methodName:s,method:e,options:r})}),e}}function Te(t,e){let n=0;return function(...o){const r=Date.now();r-n>=e&&(n=r,t.apply(this,o))}}const Ee=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function Ae(t,e){const n=t.constructor[Ne];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].events?t[p].events.length>0&&Oe(t):t[p].events=[]:t[p]={events:[],channels:[],observers:[]};for(const o of n){const n=t[o.methodName];let r=n?n.bind(t):o.method.bind(t);const s=o.options||{},i=["keydown","keyup","keypress"].includes(o.eventName.split(".")[0].split(":")[0]),a=o.eventName.indexOf("."),c=i?o.eventName.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c),u=l>0?o.eventName.substring(0,l):o.eventName,h=l>0?o.eventName.substring(l+1):null;s.debounce&&s.debounce>0?r=kt(r,s.debounce):s.throttle&&s.throttle>0&&(r=Te(r,s.throttle));let d=null;h&&["keydown","keyup","keypress"].includes(u)&&(d=pe(h));const f=(t=>d?e=>{ge(e,d)&&t(e)}:t)(r);if(o.selector){const n=e.shadowRoot||e,r=t=>{const e=t.target;if(e.matches&&e.matches(o.selector)&&e||e.closest&&e.closest(o.selector)||null){s.preventDefault&&t.preventDefault(),s.stopPropagation&&(t.stopPropagation(),t.stopImmediatePropagation());try{f(t)}catch(t){console.error(`Error in event handler ${o.methodName}:`,t)}}},i=Ee.has(u),a={capture:void 0!==s.capture?s.capture:i,once:s.once||!1,passive:s.passive||!1};n.addEventListener(u,r,a),t[p].events.push({target:n,eventName:u,handler:r,options:a})}else{const n=e.shadowRoot,r=Symbol(),i=t=>{if(!t[r]){t[r]=!0,s.preventDefault&&t.preventDefault(),s.stopPropagation&&t.stopPropagation();try{f(t)}catch(t){console.error(`Error in event handler ${o.methodName}:`,t)}}},a={capture:s.capture||!1,once:s.once||!1,passive:s.passive||!1};n&&(n.addEventListener(u,i,a),t[p].events.push({target:n,eventName:u,handler:i,options:a})),e.addEventListener(u,i,a),t[p].events.push({target:e,eventName:u,handler:i,options:a})}}}}function Oe(t){if(t[p]?.events){for(const{target:e,eventName:n,handler:o,options:r}of t[p].events)e.removeEventListener(n,o,r);t[p].events=[]}}const xe=e("context-handlers");function Ce(t={}){return function(e,n){const o=n.name,r=n.kind,s=function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,tt)||(n[tt]=new Set);const s="method"===r?e:`field:${o}`;if(!n[tt].has(s)){if(n[tt].add(s),!Object.prototype.hasOwnProperty.call(n,xe)){const t=n[xe];n[xe]=t?[...t]:[]}"method"===r?n[xe].push({kind:"method",methodName:o,method:e,options:t}):"field"!==r&&"accessor"!==r||n[xe].push({kind:"field",fieldName:o,options:t})}};return"method"===r?(n.addInitializer(s),e):function(t){return s.call(this),t}}}function _e(t){const e=t.constructor[xe];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[U];if(!n)return;t[z]=n;let o=t[Z];o||(o=new Map,t[Z]=o);for(const r of e){const{kind:e,options:s}=r,i="field"===e?r.fieldName:r.methodName,a=function(n){if(s.once&&t[X])return;const o=()=>{if("field"===e?t[r.fieldName]=n:r.method.call(t,n),s.once){t[X]=!0;const e=t[z];e&&"function"==typeof e[G]&&e[G](t)}},a=t[J]||(t[J]={}),c=i;if(s.debounce)return clearTimeout(a[c]?.timeout),void(a[c]={timeout:setTimeout(o,s.debounce)});if(s.throttle){const t=Date.now();return void(t-(a[c]?.lastCall||0)>=s.throttle&&(a[c]={lastCall:t},o()))}o()};o.set(i,a),"function"==typeof n[K]&&n[K](t,i);try{a(n)}catch(t){console.error("Error invoking @context handler at registration:",t)}}}function ke(t){const e=t.constructor[xe];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[J];if(n&&"object"==typeof n){for(const t of Object.keys(n))n[t]?.timeout&&clearTimeout(n[t].timeout);delete t[J]}delete t[Z];const o=t[z];o&&"function"==typeof o[G]&&o[G](t),delete t[z],delete t[X]}class Le{constructor(){this.cleanupFns=new Map,this.pendingOperations=new Set}register(t,e){this.cleanupFns.set(t,e)}unregister(t){this.cleanupFns.delete(t)}async cleanup(){await Promise.all(this.pendingOperations);for(const t of this.cleanupFns.values())try{await t()}catch(t){console.error("Error during cleanup:",t)}this.cleanupFns.clear()}async runOperation(t){const e=t(),n=e.then(()=>{},()=>{});this.pendingOperations.add(n);try{const t=await e;return this.pendingOperations.delete(n),t}catch(t){throw this.pendingOperations.delete(n),t}}}function Pe(t){return function(e,o){const r=globalThis.snice?.controllerRegistry;if(!r)throw new Error("Snice global registry not initialized");return r.set(t,e),e.prototype[n]=!0,e}}async function Me(e,n){const r=e[u],s=e[h],i=e[m];if(void 0!==i&&i!==n)return;if(s===n&&r)return;r&&await Ie(e);const a=globalThis.snice?.controllerRegistry;if(!a)throw new Error("Snice global registry not initialized");const c=a.get(n);if(!c)throw console.error(`Controller "${n}" not found. Available:`,Array.from(a.keys())),new Error(`Controller "${n}" not found in registry`);const l=new c;t.controllerIdCounter+=1;const p=t.controllerIdCounter,y=new Le;l[o]=!0,l[d]=p,l.element=e;const g=e[S];void 0!==g&&(l[S]=g);const b=e[U];void 0!==b&&(l[U]=b),e[u]=l,e[h]=n,e[f]=y;const v=new AbortController;e[ut]=v;try{await Promise.race([e.ready,new Promise((t,e)=>{const o=()=>e(new Error(`attachController("${n}"): aborted before element was ready (likely detached or never connected)`));if(v.signal.aborted)return o();v.signal.addEventListener("abort",o,{once:!0});const r=setTimeout(()=>e(new Error(`attachController("${n}"): element did not become ready within 30000ms (did you forget to appendChild it?)`)),3e4);v.signal.addEventListener("abort",()=>clearTimeout(r),{once:!0})})])}finally{e[ut]===v&&delete e[ut]}await y.runOperation(async()=>{await l.attach(e)}),It(l,e),Vt(l,e),Ae(l,e),_e(l),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:n,controller:l}}))}async function Ie(t){const e=t[ut];e&&e.abort();const n=t[u],o=t[h],r=t[f];n&&(r?await r.runOperation(async()=>{await n.detach(t)}):await n.detach(t),n.element=null,qt(n),Ut(n),Oe(n),ke(n),r&&await r.cleanup(),delete n[S],delete n[U],delete t[u],delete t[h],delete t[f],t.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:o,controller:n}})))}function $e(){if(globalThis.sniceNativeControllersInitialized)return;function t(t){if(!(t instanceof HTMLElement))return;if(!t.tagName||t.tagName.includes("-"))return;if(t[r])return;const e=t.getAttribute("controller"),n=t[m];if(e!==n){if(!e)return delete t[m],delete t[h],void Ie(t).catch(t=>{console.error("Failed to detach controller from native element:",t)});t[m]=e,t.ready||(t.ready=Promise.resolve()),n&&Ie(t).catch(t=>{console.error("Failed to detach old controller from native element:",t)}),Me(t,e).catch(t=>{console.error(`Failed to attach controller "${e}" to native element:`,t)})}}globalThis.sniceNativeControllersInitialized=!0;const e=new MutationObserver(e=>{for(const n of e)"attributes"===n.type&&"controller"===n.attributeName?t(n.target):"childList"===n.type&&n.addedNodes.forEach(e=>{e instanceof HTMLElement&&(t(e),e.querySelectorAll("[controller]").forEach(t))})});function n(){document.querySelectorAll("[controller]").forEach(t),e.observe(document.body,{attributes:!0,attributeFilter:["controller"],childList:!0,subtree:!0})}"loading"===document.readyState?document.addEventListener("DOMContentLoaded",n):n(),globalThis.sniceNativeControllerObserver=e}const De=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(t,e){e.sync?je(t,e):(this.pending.add(t),this.scheduled||(this.scheduled=!0,queueMicrotask(()=>this.flush())))}flush(){const t=Array.from(this.pending);this.pending.clear(),this.scheduled=!1;for(const e of t){if(!e.isConnected)continue;je(e,e[D]||{})}}remove(t){this.pending.delete(t)}};function Re(t){const e=t[q];if(!e||0===e.length)return;const n=[...e];t[q]=[],n.forEach(t=>t())}function je(t,e,n){const o=t[$];if(o&&(!e.once||!t[R]))try{const r=void 0!==n?n:o.call(t);if(t.shadowRoot||t.attachShadow({mode:"open"}),!1===e.differential)return"string"!=typeof r?void console.warn("Render method with differential: false must return a string"):(t.shadowRoot.innerHTML=r,void Re(t));if(!Gt(r))return void console.warn("Render method must return html`` template result");let s=t[R];if(s&&s.isSameTemplate(r.strings))return s.update(r.values),void Re(t);if(s){const e=t.shadowRoot,n=[];for(const t of Array.from(e.childNodes))1===t.nodeType&&"STYLE"===t.tagName||n.push(t);for(const t of n)t.remove()}s=new ce(r),t[R]=s,t.shadowRoot.appendChild(s.renderFragment()),s.update(r.values),Re(t)}catch(t){console.error("Error rendering element:",t)}}function qe(t,e=!1){const n=t[D]||{};if(!n.once||!t[R])if(e)je(t,n);else{if(void 0!==n.debounce&&n.debounce>0)return t[j]||(t[j]={}),clearTimeout(t[j].debounce),void(t[j].debounce=setTimeout(()=>{De.schedule(t,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){t[j]||(t[j]={lastThrottle:0});const e=t[j],o=Date.now();if(0===e.lastThrottle||o-e.lastThrottle>=n.throttle)return e.lastThrottle=o,void De.schedule(t,n);if(!e.throttleTimer){const r=n.throttle-(o-e.lastThrottle);e.throttleTimer=setTimeout(()=>{e.throttleTimer=null,e.lastThrottle=Date.now(),De.schedule(t,n)},r)}return}De.schedule(t,n)}}function Fe(t={}){return function(e,n){return n.name,n.addInitializer(function(){this[$]=e,this[D]=t}),function(...t){const n=e.apply(this,t);return je(this,{},n),n}}}function Be(){return function(t,e){return e.addInitializer(function(){this[F]&&!this[V]?this[V]=[this[F]]:this[F]&&this[V]&&this[V].push(this[F]),this[F]=t}),t}}const Ve=e("debounce-timers"),Ue=e("throttle-timers"),ze=e("once-called"),He=e("memoize-cache");function We(t=300,e={}){const{leading:n=!1,trailing:o=!0,maxWait:r}=e;return function(e,s){const i=s.name;return function(...s){this[Ve]||(this[Ve]={});const a=this[Ve],c=i;a[c]&&clearTimeout(a[c].timeout);const l=Date.now(),u=!a[c],h=u?l:a[c].startTime,d=void 0!==r&&l-h>=r;if(n&&u){const t=e.apply(this,s);return a[c]={timeout:null,startTime:h,lastArgs:s},t}const f=setTimeout(()=>{(o||d)&&e.apply(this,a[c].lastArgs),delete a[c]},d?0:t);a[c]={timeout:f,startTime:h,lastArgs:s}}}}function Ke(t=300,e={}){const{leading:n=!0,trailing:o=!0}=e;return function(e,r){const s=r.name;return function(...r){this[Ue]||(this[Ue]={});const i=this[Ue],a=s,c=Date.now();if(!i[a])return n&&e.apply(this,r),i[a]={lastInvoke:c,timeout:null,lastArgs:r},void(o&&!n&&(i[a].timeout=setTimeout(()=>{e.apply(this,i[a].lastArgs),delete i[a]},t)));const l=c-i[a].lastInvoke;if(i[a].lastArgs=r,i[a].timeout&&clearTimeout(i[a].timeout),l>=t)return e.apply(this,r),void(i[a].lastInvoke=c);if(o){const n=t-l;i[a].timeout=setTimeout(()=>{e.apply(this,i[a].lastArgs),i[a].lastInvoke=Date.now(),i[a].timeout=null},n)}}}}function Ge(t=!0){let e,n=!1;return function(o,r){const s=r.name;return function(...r){return t?(this[ze]||(this[ze]={}),this[ze][s]||(this[ze][s]={called:!0,result:o.apply(this,r)}),this[ze][s].result):(n||(n=!0,e=o.apply(this,r)),e)}}}function Qe(t={}){const{keyGenerator:e=(...t)=>JSON.stringify(t),maxSize:n=100,ttl:o}=t;return function(t,r){const s=r.name;return function(...r){this[He]||(this[He]={}),this[He][s]||(this[He][s]=new Map);const i=this[He][s],a=e(...r);if(i.has(a)){const t=i.get(a);if(!(void 0!==o&&Date.now()-t.timestamp>o))return t.value;i.delete(a)}const c=t.apply(this,r);if(i.set(a,{value:c,timestamp:Date.now()}),i.size>n){const t=i.keys().next().value;i.delete(t)}return c}}}function Je(t){if(t[Ve]){for(const e in t[Ve])t[Ve][e]?.timeout&&clearTimeout(t[Ve][e].timeout);t[Ve]={}}}function Xe(t){if(t[Ue]){for(const e in t[Ue])t[Ue][e]?.timeout&&clearTimeout(t[Ue][e].timeout);t[Ue]={}}}function Ye(t,e){t[He]&&(e?delete t[He][e]:t[He]={})}function Ze(t,e){t[ze]&&(e?delete t[ze][e]:t[ze]={})}function tn(t){t.prototype[r]=!0;const e=t.prototype.connectedCallback,n=t.prototype.disconnectedCallback,o=t.prototype.attributeChangedCallback,s=t.observedAttributes||[];s.includes("controller")||s.push("controller");const u=t[y];if(u)for(const[t,e]of u){if(!1===e.attribute)continue;const n=St(e,t);s.includes(n)||s.push(n)}Object.defineProperty(t,"observedAttributes",{get:()=>s,configurable:!0}),Object.defineProperty(t.prototype,"ready",{get(){return this[i]||(this[i]=new Promise(t=>{this[a]=t})),this[i]},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"controller",{get(){return this[c]},set(t){const e=this[c];this[c]=t,t!==e&&(t?Me(this,t).catch(e=>{console.error(`Failed to attach controller "${t}":`,e)}):e&&Ie(this).catch(t=>{console.error("Failed to detach controller:",t)}))},enumerable:!0,configurable:!0}),t.prototype.connectedCallback=async function(){if(this[i]||(this[i]=new Promise(t=>{this[a]=t})),this[l]){Ae(this,this),Vt(this,this),_e(this);try{It(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,t)}e&&e.call(this);const n=t[x];if(n)for(const t of n)try{const e=t.method.call(this);e&&"function"==typeof e.then&&e.catch(e=>{console.error(`Error in @reconnect handler ${t.methodName}:`,e)})}catch(e){console.error(`Error in @reconnect handler ${t.methodName}:`,e)}return}this[v]=!0;const n=t[y];if(n)for(const[t,e]of n){if(!1===e.attribute)continue;const n=St(e,t);if(!this.hasAttribute(n))continue;const o=this.getAttribute(n);xt(this,N).add(t),e.type===Boolean&&""===o&&this.setAttribute(n,"true"),this[t]=Nt(o,e)}if(this[b]){for(const[t,e]of Array.from(this[b].entries())){const o=n?.get(t),r=St(o||{},t);this[b].delete(t),this.hasAttribute(r)||(this[t]=e)}delete this[b]}if(this.hasAttribute("controller")&&!this[c]){const t=this.getAttribute("controller");t&&(this.controller=t)}!function(t){const e=t[F];if(e&&!t[B]){t[B]=!0;try{const n=[],o=t[V];if(o)for(const e of o){const o=e.call(t);Qt(o)&&n.push(o)}const r=e.call(t);if(!Qt(r))return void console.warn("Styles method must return css`` template result");if(n.push(r),t.shadowRoot||t.attachShadow({mode:"open"}),!t.shadowRoot)return;if(n.every(t=>!!t.styleSheet)&&"adoptedStyleSheets"in t.shadowRoot)return void(t.shadowRoot.adoptedStyleSheets=n.map(t=>t.styleSheet));for(const e of n){const n=document.createElement("style");n.textContent=e.cssText,t.shadowRoot.appendChild(n)}}catch(t){console.error("Error applying styles:",t)}}}(this),Ae(this,this),Vt(this,this),_e(this),this[l]=!0,e&&e.call(this);const o=t[A];if(await new Promise(t=>queueMicrotask(t)),this.isConnected){this[$]&&qe(this,!0);try{It(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName}:`,t)}if(await new Promise(t=>queueMicrotask(t)),this.isConnected){if(o)for(const t of o)try{await t.method.call(this)}catch(e){console.error(`Error in @ready handler ${t.methodName}:`,e)}this[a]&&(this[a](),this[a]=null)}else this[a]&&(this[a](),this[a]=null)}else this[a]&&(this[a](),this[a]=null)},t.prototype.disconnectedCallback=async function(){const e=t[O];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @dispose handler ${t.methodName}:`,e)}n&&n.call(this),this[c]&&Ie(this).catch(t=>{console.error("Failed to detach controller:",t)}),Oe(this),Ut(this),ke(this),qt(this),Je(this),Xe(this)},t.prototype.attributeChangedCallback=function(e,n,r){if(o?.call(this,e,n,r),"controller"===e)return void(this.controller=r);const s=t[y];if(s)for(const[n,o]of s){if(St(o,n).toLowerCase()!==e.toLowerCase())continue;const s=this[g]?.[n],i=Nt(r,o,s,void 0);if(s===i)break;xt(this,N).add(n),Ct(this,g)[n]=i,this[L]?.has(e.toLowerCase())||(_t(this,t,n,s,i),this[$]&&this[l]&&qe(this));break}},t.prototype.connectedMoveCallback=async function(){const e=t[C];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @moved handler ${t.methodName}:`,e)}},t.prototype.adoptedCallback=async function(){const e=t[_];if(e)for(const t of e)try{await t.method.call(this)}catch(e){console.error(`Error in @adopted handler ${t.methodName}:`,e)}}}function en(t,e,n,o){if(function(t){let e=Object.getPrototypeOf(t);const n=[];for(;e&&e!==HTMLElement&&e!==Function.prototype;)n.push(e),e=Object.getPrototypeOf(e);n.reverse();for(const e of n){if(e[y]){t[y]||(t[y]=new Map);for(const[n,o]of e[y])t[y].has(n)||t[y].set(n,o)}e.formAssociated&&!t.formAssociated&&(t.formAssociated=!0)}}(e),n.metadata&&n.metadata[y]){e[y]||(e[y]=new Map);for(const[t,o]of n.metadata[y])e[y].set(t,o)}else if(rn.length>0){e[y]||(e[y]=new Map);const t=rn.pop();for(const[n,o]of t)e[y].set(n,o)}return o?.formAssociated&&(e.formAssociated=!0),tn(e),customElements.get(t)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${t}" is already registered. Skipping.`),e):(customElements.define(t,e),e)}function nn(t,e){return function(n,o){return en(t,n,o,e)}}function on(t){return function(e,n){return en(t,e,n)}}const rn=[];function sn(t){return function(e,n){const o=n.name;return n.metadata?(n.metadata[y]||(n.metadata[y]=new Map),n.metadata[y].set(o,t||{})):(0===rn.length&&rn.push(new Map),rn[rn.length-1].set(o,t||{})),function(e){const n=this.constructor;n[y]||(n[y]=new Map);const r={...t};r.type||void 0===e||(r.type=wt(e)),n[y].set(o,r);const s=this.constructor.prototype;let i=s[ht];i&&Object.prototype.hasOwnProperty.call(s,ht)||(i=new Map(i),s[ht]=i);const a=i.get(o);if(!a||a!==t){i.set(o,t);const n={get(){if(!1===r?.attribute)return this[g]&&o in this[g]?this[g][o]:this[b]?.has(o)?this[b].get(o):e;const t=St(r||{},o),n=this.getAttribute?.(t);if(null!==n)return Nt(n,r||{},void 0,e);return((r?.type||wt(e))!==Boolean||!this[N]?.has(o))&&(this[b]?.has(o)?this[b].get(o):e)},set(t){const n=this[o];if(n!==t){if(!this[v])return this[b]||(this[b]=new Map),void this[b].set(o,t);if(!1===r?.attribute)Ct(this,g)[o]=t;else{const n=St(r,o),s=function(t,e,n){if(null==t||!1===t||e?.type===dt&&Array.isArray(t)&&0===t.length)return null;if(e.converter?.toAttribute)return e.converter.toAttribute(t,e.type);switch(e.type||wt(n)){case Boolean:return"true";case Date:return t instanceof Date?t.toISOString():String(t);case BigInt:return"bigint"==typeof t?t.toString()+"n":String(t);case dt:return Array.isArray(t)?dt.serialize(t):String(t);case Array:return Array.isArray(t)?JSON.stringify(t):String(t);case Object:return"object"==typeof t&&null!==t?JSON.stringify(t):String(t);default:return String(t)}}(t,r,e);xt(this,N).add(o),xt(this,L).add(n.toLowerCase()),null===s?this.removeAttribute?.(n):this.setAttribute?.(n,s),queueMicrotask(()=>{this[L]?.delete(n.toLowerCase())})}_t(this,this.constructor,o,n,t),this[$]&&this[l]&&qe(this)}},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,o,n)}return Ct(this,g)[o]=e,e}}}function an(t){return!0===t[o]&&t.element?t.element:t}function cn(t,e={}){return function(n,o){const{light:r=!1,shadow:s=!0}=e,i=o.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=an(this);let n=null;return s&&e.shadowRoot&&(n=e.shadowRoot.querySelector(t)),!n&&r&&(n=e.querySelector(t)),n||null},set(){},configurable:!0,enumerable:!0}),e}}}function ln(t,e={}){return function(n,o){const{light:r=!1,shadow:s=!0}=e,i=o.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=an(this),n=[];return s&&e.shadowRoot&&n.push(...e.shadowRoot.querySelectorAll(t)),r&&n.push(...e.querySelectorAll(t)),n},set(){},configurable:!0,enumerable:!0}),e}}}function un(...t){return function(e,n){const o=n.name;n.addInitializer(function(){const n=this.constructor;Object.prototype.hasOwnProperty.call(n,et)||(n[et]=new Map);let r=n[et].get(e);if(r||(r=new Set,n[et].set(e,r)),!Object.prototype.hasOwnProperty.call(n,w)){const t=n[w],e=new Map;if(t)for(const[n,o]of t)e.set(n,[...o]);n[w]=e}for(const s of t)r.has(s)||(r.add(s),n[w].has(s)||n[w].set(s,[]),n[w].get(s).push({methodName:o,method:e}))})}}function hn(){return function(t,e){const n=e.name;return function(t){if(!Object.hasOwn(this.constructor.prototype,n)){const t={get(){if(void 0!==this[S])return this[S];let t=!0===this[o]&&this.element?this.element:this;if(!t||!t.dispatchEvent)return;t.getRootNode&&t.getRootNode()instanceof ShadowRoot&&(t=t.getRootNode().host);const e={target:this};return t.dispatchEvent(new CustomEvent("@context/request",{bubbles:!0,cancelable:!0,detail:e})),void 0!==e.context?(this[S]=e.context,e.context):void 0},set(){},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,n,t)}return t}}}function dn(t,e,n,o,r){const s=o.name;o.addInitializer(function(){const o=this.constructor;if(Object.prototype.hasOwnProperty.call(o,e)||(o[e]=new Set),!o[e].has(n)){if(o[e].add(n),!Object.prototype.hasOwnProperty.call(o,t)){const e=o[t];o[t]=e?[...e]:[]}o[t].push({methodName:s,method:n,...r})}})}function fn(){return function(t,e){dn(A,st,t,e)}}function mn(){return function(t,e){dn(O,it,t,e)}}function pn(){return function(t,e){dn(x,at,t,e)}}function yn(t,e,n){return function(o={}){return function(r,s){dn(t,n,r,s,{options:o});const i=s.name;return function(...t){this[e]||(this[e]=new Map),this[e].has(i)||this[e].set(i,{throttleTimer:null,debounceTimer:null,lastThrottleCall:0});const n=this[e].get(i),s=(...t)=>r.apply(this,t);if(o.debounce>0)return clearTimeout(n.debounceTimer),void(n.debounceTimer=setTimeout(()=>s(...t),o.debounce));if(o.throttle>0){const e=Date.now();if(0===n.lastThrottleCall||e-n.lastThrottleCall>=o.throttle)return n.lastThrottleCall=e,s(...t);if(!n.throttleTimer){const r=o.throttle-(e-n.lastThrottleCall);n.throttleTimer=setTimeout(()=>{n.throttleTimer=null,n.lastThrottleCall=Date.now(),s(...t)},r)}return}return s(...t)}}}}const gn=yn(C,P,ct),bn=yn(_,M,lt);
16
16
  /*!
17
17
  * pica-route v1.1.2
18
18
  * A pure URL pattern matching library compatible with route-parser API
19
19
  * (c) 2024
20
20
  * Released under the MIT License.
21
21
  */
22
- class bn{constructor(t){this.parsed=this.parsePattern(t)}get spec(){return this.parsed.template}parsePattern(t){let e=t,n="",o=!1;const r=t.indexOf("?");return-1!==r&&(e=t.slice(0,r),n=t.slice(r+1),e.endsWith("(")&&n.endsWith(")")&&(o=!0,e=e.slice(0,-1),n=n.slice(0,-1))),{pathSegments:this.parseSegments(e),querySegments:n?this.parseQuerySegments(n):[],queryOptional:o,template:t}}parseSegments(t){const e=[];let n=0;for(;n<t.length;){switch(t[n]){case"(":const{segments:o,endIndex:r}=this.parseOptionalGroup(t,n);e.push({type:"optional",segments:o}),n=r+1;break;case":":const{name:s,endIndex:i}=this.parseIdentifier(t,n+1);e.push({type:"param",name:s}),n=i;break;case"*":const{name:a,endIndex:c}=this.parseIdentifier(t,n+1);e.push({type:"splat",name:a}),n=c;break;default:const{value:l,endIndex:u}=this.parseLiteral(t,n);l&&e.push({type:"literal",value:l}),n=u}}return e}parseOptionalGroup(t,e){let n=1,o=e+1;for(;o<t.length&&n>0;)"("===t[o]&&n++,")"===t[o]&&n--,o++;const r=t.slice(e+1,o-1);return{segments:this.parseSegments(r),endIndex:o-1}}parseIdentifier(t,e){let n=e;for(;n<t.length&&/[\w-]/.test(t[n]);)n++;return{name:t.slice(e,n),endIndex:n}}parseLiteral(t,e){let n=e;for(;n<t.length&&!"(:*(".includes(t[n]);)n++;return{value:t.slice(e,n),endIndex:n}}parseQuerySegments(t){let e=t;e.startsWith("(")&&e.endsWith(")")&&(e=e.slice(1,-1));const n=[];let o=0;for(;o<e.length;)if(":"===e[o]){const{name:t,endIndex:r}=this.parseIdentifier(e,o+1);n.push({type:"param",name:t}),o=r}else{const{value:t,endIndex:r}=this.parseQueryLiteral(e,o);t&&n.push({type:"literal",value:t}),o=r}return n}parseQueryLiteral(t,e){let n=e;for(;n<t.length&&":"!==t[n];)n++;return{value:t.slice(e,n),endIndex:n}}getAllParamNames(){const t=new Set,e=n=>{for(const o of n)switch(o.type){case"param":case"splat":t.add(o.name);break;case"optional":e(o.segments)}};return e(this.parsed.pathSegments),e(this.parsed.querySegments),Array.from(t)}canMatchRemainingSegments(t,e,n){let o=e;for(const e of n)if("literal"===e.type){const n=t.indexOf(e.value,o);if(-1===n)return!1;o=n+e.value.length}return!0}match(t){const[e,n]=t.split("?"),o=this.matchPath(e,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 t of s)i[t]=void 0;return Object.assign(i,o,r),i}matchPath(t,e){const n={};let o=0;for(let r=0;r<e.length;r++){const s=e[r],i=e.slice(r+1),a=this.matchSegment(t,o,s,i);if(!1===a)return!1;Object.assign(n,a.params),o=a.nextIndex}return!(o<t.length)&&n}matchSegment(t,e,n,o=[]){switch(n.type){case"literal":return t.slice(e,e+n.value.length)===n.value&&{params:{},nextIndex:e+n.value.length};case"param":{let r=e;const s=o[0];let i,a=["/","?"];if(s&&"literal"===s.type){const n=s.value,o=t.indexOf(n,e);if(-1===o)return!1;r=o}else for(;r<t.length&&!a.includes(t[r]);)r++;if(r===e)return!1;try{i=decodeURIComponent(t.slice(e,r))}catch(n){i=t.slice(e,r)}return!(r<t.length&&"?"===t[r]&&o.length>0)&&{params:{[n.name]:i},nextIndex:r}}case"splat":{let r=t.length;const s=o[0];if(s)switch(s.type){case"literal":if("."===s.value){const n=t.indexOf(".",e);-1!==n&&(r=n)}else{const n=t.lastIndexOf(s.value);-1!==n&&n>=e&&(r=n)}break;case"param":let n=-1;for(let o=t.length-1;o>=e;o--)if("/"===t[o]){n=o;break}-1!==n&&(r=n);break;case"splat":let o=-1;for(let n=t.length-1;n>e;n--)if("/"===t[n]){o=n+1;break}if(-1!==o)r=o;else{const n=t.slice(e).split("/").filter(t=>t);r=n.length>1?e+n.slice(0,-1).join("/").length+1:e}break;case"optional":const i=t=>{for(const e of t){if("literal"===e.type)return e.value;if("optional"===e.type){const t=i(e.segments);if(t)return t}}return null},a=i(s.segments);if(a){const n=t.lastIndexOf(a);-1!==n&&n>=e&&(r=n)}}const i=t.indexOf("?",e);let a;-1!==i&&i<r&&(r=i);try{a=decodeURIComponent(t.slice(e,r))}catch(n){a=t.slice(e,r)}return{params:{[n.name]:a},nextIndex:r}}case"optional":{let r=e,s={},i=!0;for(let e=0;e<n.segments.length;e++){const o=n.segments[e],a=n.segments.slice(e+1),c=this.matchSegment(t,r,o,a);if(!1===c){i=!1;break}Object.assign(s,c.params),r=c.nextIndex}if(i){if(this.canMatchRemainingSegments(t,r,o))return{params:s,nextIndex:r}}return{params:{},nextIndex:e}}default:return!1}}findNextLiteral(t){for(const e of t){if("literal"===e.type)return e;if("optional"===e.type){const t=this.findNextLiteral(e.segments);if(t)return t}}return null}matchQuery(t,e){if(0===e.length)return{};const n={};let o=0;for(const r of e)switch(r.type){case"literal":if(t.slice(o,o+r.value.length)!==r.value)return!1;o+=r.value.length;break;case"param":{let e,s=o;for(;s<t.length&&"&"!==t[s];)s++;if(s===o)return!1;try{e=decodeURIComponent(t.slice(o,s))}catch(n){e=t.slice(o,s)}n[r.name]=e,o=s;break}}return n}reverse(t={}){const e=this.reverseSegments(this.parsed.pathSegments,t);if(!1===e)return!1;let n=e;if(this.parsed.querySegments.length>0){const e=this.reverseSegments(this.parsed.querySegments,t);if(!this.parsed.queryOptional&&!1===e)return!1;e&&""!==e&&(n+="?"+e)}return n}reverseSegments(t,e,n=!1){let o="";for(let r=0;r<t.length;r++){const s=t[r],i=t.slice(r+1);switch(s.type){case"literal":o+=s.value;break;case"param":case"splat":if(!(s.name in e))return!1;o+=String(e[s.name]);break;case"optional":if(this.hasAllParams(s.segments,e,n)||this.hasLaterOptionalGroupNeedingParams(i,e,s.segments)){const t=this.reverseSegments(s.segments,e,!0);if(!1===t)return!1;o+=t}}}return o}hasLaterOptionalGroupNeedingParams(t,e,n){for(const o of t)if("optional"===o.type&&this.hasAnyParamInSegments(o.segments,e))return this.hasOnlyLiteralsAndOptionals(n);return!1}hasOnlyLiteralsAndOptionals(t){for(const e of t)if("param"===e.type||"splat"===e.type)return!1;return!0}hasAllParams(t,e,n=!1){let o=!1,r=!1,s=!1,i=!0;for(const n of t)switch(n.type){case"param":case"splat":i=!1,n.name in e&&void 0!==e[n.name]?o=!0:s=!0}const a=n||o&&!s;for(const n of t)if("optional"===n.type){this.hasAllParams(n.segments,e,a)&&(r=!0)}return!(!o||s)||(!(!r||s)||!(!i||!n))}hasOnlyOptionalMissingParams(t,e){for(const n of t)switch(n.type){case"param":case"splat":if(!(n.name in e))return!1}return!0}hasAnyParamInSegments(t,e){for(const n of t)switch(n.type){case"param":case"splat":if(n.name in e)return!0;break;case"optional":if(this.hasAnyParamInSegments(n.segments,e))return!0}return!1}}function vn(t){const e={};return t.split(";").forEach(t=>{const n=t.indexOf(":");if(-1===n)return;const o=t.slice(0,n).trim(),r=t.slice(n+1).trim();o&&r&&(e[o]=r)}),e}function wn(t,e,n,o){if(t.style.position="absolute",t.style.width="100%",e)return t.style.height="100%",void(t.style.transition=`opacity ${n}ms ease-in-out`);t.style.top="0",t.style.left="0",t.style.transition=`${o} ${n}ms ease-in-out`}var Nn;function Sn(t){const e=t.window??window,n=t.document??document,o=[];let r,s,i,a=!1,c=[],l=null,u=null;const h=t.context||{},d=new vt(h,[],"",{},t.fetcher);function f(t){if(!l||!u)return null;const e=t.querySelectorAll(l);for(const t of e){if(t[E]===u)return t}return null}function m(t,e,n,c,l,u){switch(o.push({route:new bn(t),tag:e,transition:n,guards:c,layout:l,placard:u}),a=!1,t){case"/404":r=e;break;case"/403":s=e;break;case"/":i=e}}function p(){const t=new Set;c=o.filter(t=>t.placard).map(t=>{const e=t.placard;return"function"==typeof e?e(h):e}).filter(e=>!t.has(e.name)&&(t.add(e.name),!0))}function g(t,e,n){d[Y](h,c,e,n)}function b(){switch(t.type){case"hash":return e.location.hash.slice(1);case"pushstate":return e.location.pathname}}function v(t){let e;if(s)e=n.createElement(s),e[S]=h;else{const t=n.createElement("div");t.className="default-403",t.innerHTML="<h1>403</h1><p>Unauthorized</p>",e=t}t.innerHTML="",t.appendChild(e),l=null,u=null}async function w(t,e,o){if(!!!t)return!0;const r=Array.isArray(t)?t:[t];let s=null,i=null;i=setTimeout(()=>{s=function(){const t=n.createElement("div");return t.setAttribute("data-snice-loading",""),t.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>',t}(),o.appendChild(s)},50);try{for(const t of r){if(!await t(h,e))return v(o),!1}return!0}finally{i&&clearTimeout(i),s&&s.remove()}}async function N(t,e,n,o,r,s,i,a){const l=o||f(t);if(!l)return;!function(t,e,n){"function"==typeof t.update&&t.update(h,c,e,n)}(l,s,i);const u=l.querySelector('[slot="page"]');if(!(!n||!u)){if(e.setAttribute("slot","page"),await C(l,u,e,n),a&&a())return;return void(r&&(t.innerHTML="",t.appendChild(l)))}if(a&&a())return;l.querySelectorAll('[slot="page"]').forEach(t=>t.remove()),e.setAttribute("slot","page"),l.appendChild(e),r&&(t.innerHTML="",t.appendChild(l))}async function A(e,o,r,s,i,a,c){const d=!1===(m=s)?null:m||(t.layout?t.layout:null);var m;const{element:p,needsNewLayout:y}=function(t){if(t===l)return{element:null,needsNewLayout:!1};if(l=t,!!t){const e=Date.now();u=e;const o=n.createElement(t);return o[S]=h,o[E]=e,{element:o,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(d),b=r||t.transition;if(null!==p||null!==f(e)){if(await N(e,o,b,p,y,i,a,c),c&&c())return;g(0,i,a)}else await async function(t,e,n,o){const r=t.children[0];n&&r?await C(t,r,e,n):o&&o()||(t.innerHTML="",t.appendChild(e))}(e,o,b,c),c&&c()||g(0,i,a)}let O=0;async function x(s){const a=n.querySelector(t.target);if(!a)throw new Error(`Target element not found: ${t.target}`);const c=++O,l=()=>c!==O;p(),e.scrollTo(0,0);if((""===s?.trim()||"/"===s)&&!!i){const t=o.find(t=>t.route.match("/"));if(!await w(t?.guards,{},a))return;if(l())return;const{element:r,transition:c,layout:u}=function(){const t=n.createElement(i);t[S]=h;const r=e.customElements.get(i),s=r?.[T],a=o.find(t=>t.route.match("/"));return{element:t,transition:s,layout:a?.layout}}();return void await A(a,r,c,u,s,{},l)}if(!s)return;const u=await async function(t,e){for(const r of o){const o=r.route.match(t);if(!1===o)continue;if(!await w(r.guards,o,e))return{result:Nn.GUARDS_FAILED};const s=n.createElement(r.tag);s[S]=h,s[U]=d;const i=o;return Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),{result:Nn.SUCCESS,element:s,transition:r.transition,layout:r.layout,routeParams:i}}return{result:Nn.NOT_FOUND}}(s,a);if(l())return;if(u.result===Nn.GUARDS_FAILED)return;if(u.result===Nn.SUCCESS){const{element:t,transition:e,layout:n,routeParams:o={}}=u;return void await A(a,t,e,n,s,o,l)}const{element:f,transition:m,layout:y}=function(){if(r){const t=n.createElement(r);t[S]=h;const o=e.customElements.get(r),s=o?.[T];return{element:t,transition:s,layout:void 0}}const t=n.createElement("div");return t.className="default-404",t.innerHTML="<h1>404</h1><p>Page not found</p>",{element:t,transition:void 0,layout:void 0}}();await A(a,f,m,y,s,{})}async function C(t,e,n,o,r=O){return async function(t,e,n,o={},r=()=>!1){const s=o.outDuration||300,i=o.inDuration||300,a=o.mode||"sequential",c=o.out?vn(o.out):{opacity:"0"},l={opacity:"0"},u=o.in?vn(o.in):{opacity:"1"},h=t.style,d=t.tagName.includes("-")&&t.shadowRoot,f=Symbol.for("snice:transition-original-position"),m=Symbol.for("snice:transition-count"),p=t;d||(f in p||(p[f]=h.position,p[m]=0),p[m]++,h.position="relative");const y=()=>{d||(p[m]--,p[m]<=0&&(h.position=p[f],delete p[f],delete p[m]))},g=e.hasAttribute("slot")||n.hasAttribute("slot");switch(wn(e,g,s,"all"),wn(n,g,i,"all"),Object.assign(n.style,l),t.appendChild(n),n.offsetHeight,a){case ft.SIMULTANEOUS:Object.assign(e.style,c),Object.assign(n.style,u),await new Promise(t=>setTimeout(t,Math.max(s,i)));break;case ft.SEQUENTIAL:if(Object.assign(e.style,c),await new Promise(t=>setTimeout(t,s)),r())return n.parentNode===t&&n.remove(),void y();Object.assign(n.style,u),await new Promise(t=>setTimeout(t,i))}if(r())return n.parentNode===t&&n.remove(),void y();e.remove(),function(t,e){t.style.position="",t.style.width="",t.style.transition="",e?t.style.height="":(t.style.top="",t.style.left="")}(n,g),Object.keys({...l,...u}).forEach(t=>{n.style[t]=""}),y()}(t,e,n,o,()=>r!==O)}return{page:function(t){return function(n,o){if(o?.metadata&&o.metadata[y]){n[y]||(n[y]=new Map);for(const[t,e]of o.metadata[y])n[y].set(t,e)}Ze(n),n[T]=t.transition;const r=n.prototype.connectedCallback;n.prototype.connectedCallback=function(){this[U]=d,r?.call(this)};const s=n.prototype.disconnectedCallback;return n.prototype.disconnectedCallback=function(){s?.call(this),delete this[S],delete this[U]},e.customElements.get(t.tag)||e.customElements.define(t.tag,n),t.routes.forEach(e=>m(e,t.tag,t.transition,t.guards,t.layout,t.placard)),n}},initialize:function(){if(!n.querySelector(t.target))throw new Error(`Target element not found: ${t.target}`);!a&&(o.sort((t,e)=>e.route.spec.length-t.route.spec.length),a=!0),p(),function(){const o=()=>{n.querySelector(t.target)&&x(b())};switch(t.type){case"hash":e.addEventListener("hashchange",o);break;case"pushstate":e.addEventListener("popstate",o)}}(),x(b())},navigate:x,register:m}}function Tn(t,e){return function(n,o){return function(...r){this[I]||(this[I]=new Map);const s=`${t}_${o.name}`;this[I].has(s)||this[I].set(s,{debounceTimeout:null,throttleLastCall:0,throttleTimeout:null});const i=this[I].get(s),a=n.apply(this,r),c=n=>{if(void 0===n&&!1===e?.dispatchOnUndefined)return;const o=new CustomEvent(t,{bubbles:!0,composed:!0,...e,detail:n});this.dispatchEvent(o)},l=t=>{if(e?.debounce)return clearTimeout(i.debounceTimeout),void(i.debounceTimeout=setTimeout(()=>c(t),e.debounce));if(!e?.throttle)return void c(t);const n=Date.now(),o=e.throttle-(n-i.throttleLastCall);if(o<=0)return clearTimeout(i.throttleTimeout),i.throttleLastCall=n,void c(t);i.latestDetail=t,i.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null;const t=i.latestDetail;i.latestDetail=void 0,c(t)},o))};return a instanceof Promise?a.then(t=>(l(t),t)):(l(a),a)}}}function En(t,e,n){const o=[];for(const[r,s]of Object.entries(e)){const e=`@request/${r}`,i=t=>{const e=t,{discovery:o,data:i,payload:a}=e.detail;n?.passive||(e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()),o.resolve(),Promise.resolve().then(()=>s(a)).then(t=>i.resolve(t)).catch(t=>{i.reject(t),console.error(`createRequestHandler: error in "${r}" handler:`,t)})};t.addEventListener(e,i),o.push(()=>t.removeEventListener(e,i))}return()=>{for(const t of o)t();o.length=0}}!function(t){t.SUCCESS="success",t.GUARDS_FAILED="guards-failed",t.NOT_FOUND="not-found"}(Nn||(Nn={}));let An=!1;function On(t){An=t}async function xn(t,e=500){if(customElements.get(t))return;let n=null;An||(n=setTimeout(()=>{console.warn(`Custom element <${t}> is taking longer than ${e}ms to register. This may indicate a missing import or circular dependency. Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`)},e));try{await customElements.whenDefined(t)}finally{n&&clearTimeout(n)}}async function Cn(t,e=500){const n=t.tagName.toLowerCase();await xn(n,e),"ready"in t&&"function"==typeof t.ready?.then&&await t.ready}async function _n(t,e=500){const n=[];if(t instanceof Element&&(t.tagName.includes("-")&&n.push(t),t.shadowRoot)){t.shadowRoot.querySelectorAll("*").forEach(t=>{t.tagName.includes("-")&&n.push(t)})}if(t instanceof DocumentFragment){t.querySelectorAll("*").forEach(t=>{t.tagName.includes("-")&&n.push(t)})}await Promise.all(n.map(t=>Cn(t,e)))}async function*kn(t){for(;;)await new Promise(e=>{t[q]||(t[q]=[]),t[q].push(e)}),yield}let Ln=0,Pn=null;const Mn=Symbol.for("snice:body-scroll-lock");function In(){0===Ln&&(Pn=document.body.style.overflow,document.body.style.overflow="hidden"),Ln++}function $n(){0!==Ln&&(Ln--,0===Ln&&(document.body.style.overflow=Pn??"",Pn=null))}function Dn(){return Ln}globalThis[Mn]={clear(){Ln=0,Pn=null}};class Rn{constructor(){this.requestMiddlewares=[],this.responseMiddlewares=[]}use(t,e){"request"!==t?this.responseMiddlewares.push(e):this.requestMiddlewares.push(e)}create(t){const e=this.requestMiddlewares,n=this.responseMiddlewares;return async function(t,o){const r=new Request(t,o);let s=0;const i=async()=>{if(s<e.length){return e[s++].call(this,r,i)}const t=await fetch(r);let o=0;const a=async()=>{if(o<n.length){return n[o++].call(this,t,a)}return t};return a()};return i()}.bind(t)}}
22
+ class vn{constructor(t){this.parsed=this.parsePattern(t)}get spec(){return this.parsed.template}parsePattern(t){let e=t,n="",o=!1;const r=t.indexOf("?");return-1!==r&&(e=t.slice(0,r),n=t.slice(r+1),e.endsWith("(")&&n.endsWith(")")&&(o=!0,e=e.slice(0,-1),n=n.slice(0,-1))),{pathSegments:this.parseSegments(e),querySegments:n?this.parseQuerySegments(n):[],queryOptional:o,template:t}}parseSegments(t){const e=[];let n=0;for(;n<t.length;){switch(t[n]){case"(":const{segments:o,endIndex:r}=this.parseOptionalGroup(t,n);e.push({type:"optional",segments:o}),n=r+1;break;case":":const{name:s,endIndex:i}=this.parseIdentifier(t,n+1);e.push({type:"param",name:s}),n=i;break;case"*":const{name:a,endIndex:c}=this.parseIdentifier(t,n+1);e.push({type:"splat",name:a}),n=c;break;default:const{value:l,endIndex:u}=this.parseLiteral(t,n);l&&e.push({type:"literal",value:l}),n=u}}return e}parseOptionalGroup(t,e){let n=1,o=e+1;for(;o<t.length&&n>0;)"("===t[o]&&n++,")"===t[o]&&n--,o++;const r=t.slice(e+1,o-1);return{segments:this.parseSegments(r),endIndex:o-1}}parseIdentifier(t,e){let n=e;for(;n<t.length&&/[\w-]/.test(t[n]);)n++;return{name:t.slice(e,n),endIndex:n}}parseLiteral(t,e){let n=e;for(;n<t.length&&!"(:*(".includes(t[n]);)n++;return{value:t.slice(e,n),endIndex:n}}parseQuerySegments(t){let e=t;e.startsWith("(")&&e.endsWith(")")&&(e=e.slice(1,-1));const n=[];let o=0;for(;o<e.length;)if(":"===e[o]){const{name:t,endIndex:r}=this.parseIdentifier(e,o+1);n.push({type:"param",name:t}),o=r}else{const{value:t,endIndex:r}=this.parseQueryLiteral(e,o);t&&n.push({type:"literal",value:t}),o=r}return n}parseQueryLiteral(t,e){let n=e;for(;n<t.length&&":"!==t[n];)n++;return{value:t.slice(e,n),endIndex:n}}getAllParamNames(){const t=new Set,e=n=>{for(const o of n)switch(o.type){case"param":case"splat":t.add(o.name);break;case"optional":e(o.segments)}};return e(this.parsed.pathSegments),e(this.parsed.querySegments),Array.from(t)}canMatchRemainingSegments(t,e,n){let o=e;for(const e of n)if("literal"===e.type){const n=t.indexOf(e.value,o);if(-1===n)return!1;o=n+e.value.length}return!0}match(t){const[e,n]=t.split("?"),o=this.matchPath(e,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 t of s)i[t]=void 0;return Object.assign(i,o,r),i}matchPath(t,e){const n={};let o=0;for(let r=0;r<e.length;r++){const s=e[r],i=e.slice(r+1),a=this.matchSegment(t,o,s,i);if(!1===a)return!1;Object.assign(n,a.params),o=a.nextIndex}return!(o<t.length)&&n}matchSegment(t,e,n,o=[]){switch(n.type){case"literal":return t.slice(e,e+n.value.length)===n.value&&{params:{},nextIndex:e+n.value.length};case"param":{let r=e;const s=o[0];let i,a=["/","?"];if(s&&"literal"===s.type){const n=s.value,o=t.indexOf(n,e);if(-1===o)return!1;r=o}else for(;r<t.length&&!a.includes(t[r]);)r++;if(r===e)return!1;try{i=decodeURIComponent(t.slice(e,r))}catch(n){i=t.slice(e,r)}return!(r<t.length&&"?"===t[r]&&o.length>0)&&{params:{[n.name]:i},nextIndex:r}}case"splat":{let r=t.length;const s=o[0];if(s)switch(s.type){case"literal":if("."===s.value){const n=t.indexOf(".",e);-1!==n&&(r=n)}else{const n=t.lastIndexOf(s.value);-1!==n&&n>=e&&(r=n)}break;case"param":let n=-1;for(let o=t.length-1;o>=e;o--)if("/"===t[o]){n=o;break}-1!==n&&(r=n);break;case"splat":let o=-1;for(let n=t.length-1;n>e;n--)if("/"===t[n]){o=n+1;break}if(-1!==o)r=o;else{const n=t.slice(e).split("/").filter(t=>t);r=n.length>1?e+n.slice(0,-1).join("/").length+1:e}break;case"optional":const i=t=>{for(const e of t){if("literal"===e.type)return e.value;if("optional"===e.type){const t=i(e.segments);if(t)return t}}return null},a=i(s.segments);if(a){const n=t.lastIndexOf(a);-1!==n&&n>=e&&(r=n)}}const i=t.indexOf("?",e);let a;-1!==i&&i<r&&(r=i);try{a=decodeURIComponent(t.slice(e,r))}catch(n){a=t.slice(e,r)}return{params:{[n.name]:a},nextIndex:r}}case"optional":{let r=e,s={},i=!0;for(let e=0;e<n.segments.length;e++){const o=n.segments[e],a=n.segments.slice(e+1),c=this.matchSegment(t,r,o,a);if(!1===c){i=!1;break}Object.assign(s,c.params),r=c.nextIndex}if(i){if(this.canMatchRemainingSegments(t,r,o))return{params:s,nextIndex:r}}return{params:{},nextIndex:e}}default:return!1}}findNextLiteral(t){for(const e of t){if("literal"===e.type)return e;if("optional"===e.type){const t=this.findNextLiteral(e.segments);if(t)return t}}return null}matchQuery(t,e){if(0===e.length)return{};const n={};let o=0;for(const r of e)switch(r.type){case"literal":if(t.slice(o,o+r.value.length)!==r.value)return!1;o+=r.value.length;break;case"param":{let e,s=o;for(;s<t.length&&"&"!==t[s];)s++;if(s===o)return!1;try{e=decodeURIComponent(t.slice(o,s))}catch(n){e=t.slice(o,s)}n[r.name]=e,o=s;break}}return n}reverse(t={}){const e=this.reverseSegments(this.parsed.pathSegments,t);if(!1===e)return!1;let n=e;if(this.parsed.querySegments.length>0){const e=this.reverseSegments(this.parsed.querySegments,t);if(!this.parsed.queryOptional&&!1===e)return!1;e&&""!==e&&(n+="?"+e)}return n}reverseSegments(t,e,n=!1){let o="";for(let r=0;r<t.length;r++){const s=t[r],i=t.slice(r+1);switch(s.type){case"literal":o+=s.value;break;case"param":case"splat":if(!(s.name in e))return!1;o+=String(e[s.name]);break;case"optional":if(this.hasAllParams(s.segments,e,n)||this.hasLaterOptionalGroupNeedingParams(i,e,s.segments)){const t=this.reverseSegments(s.segments,e,!0);if(!1===t)return!1;o+=t}}}return o}hasLaterOptionalGroupNeedingParams(t,e,n){for(const o of t)if("optional"===o.type&&this.hasAnyParamInSegments(o.segments,e))return this.hasOnlyLiteralsAndOptionals(n);return!1}hasOnlyLiteralsAndOptionals(t){for(const e of t)if("param"===e.type||"splat"===e.type)return!1;return!0}hasAllParams(t,e,n=!1){let o=!1,r=!1,s=!1,i=!0;for(const n of t)switch(n.type){case"param":case"splat":i=!1,n.name in e&&void 0!==e[n.name]?o=!0:s=!0}const a=n||o&&!s;for(const n of t)if("optional"===n.type){this.hasAllParams(n.segments,e,a)&&(r=!0)}return!(!o||s)||(!(!r||s)||!(!i||!n))}hasOnlyOptionalMissingParams(t,e){for(const n of t)switch(n.type){case"param":case"splat":if(!(n.name in e))return!1}return!0}hasAnyParamInSegments(t,e){for(const n of t)switch(n.type){case"param":case"splat":if(n.name in e)return!0;break;case"optional":if(this.hasAnyParamInSegments(n.segments,e))return!0}return!1}}function wn(t){const e={};return t.split(";").forEach(t=>{const n=t.indexOf(":");if(-1===n)return;const o=t.slice(0,n).trim(),r=t.slice(n+1).trim();o&&r&&(e[o]=r)}),e}function Nn(t,e,n,o){if(t.style.position="absolute",t.style.width="100%",e)return t.style.height="100%",void(t.style.transition=`opacity ${n}ms ease-in-out`);t.style.top="0",t.style.left="0",t.style.transition=`${o} ${n}ms ease-in-out`}var Sn;function Tn(t){const e=t.window??window,n=t.document??document,o=[];let r,s,i,a=!1,c=[],l=null,u=null;const h=t.context||{},d=new vt(h,[],"",{},t.fetcher);function f(t){if(!l||!u)return null;const e=t.querySelectorAll(l);for(const t of e){if(t[E]===u)return t}return null}function m(t,e,n,c,l,u){switch(o.push({route:new vn(t),tag:e,transition:n,guards:c,layout:l,placard:u}),a=!1,t){case"/404":r=e;break;case"/403":s=e;break;case"/":i=e}}function p(){const t=new Set;c=o.filter(t=>t.placard).map(t=>{const e=t.placard;return"function"==typeof e?e(h):e}).filter(e=>!t.has(e.name)&&(t.add(e.name),!0))}function g(t,e,n){d[Y](h,c,e,n)}function b(){switch(t.type){case"hash":return e.location.hash.slice(1);case"pushstate":return e.location.pathname}}function v(t){let e;if(s)e=n.createElement(s),e[S]=h;else{const t=n.createElement("div");t.className="default-403",t.innerHTML="<h1>403</h1><p>Unauthorized</p>",e=t}t.innerHTML="",t.appendChild(e),l=null,u=null}async function w(t,e,o){if(!!!t)return!0;const r=Array.isArray(t)?t:[t];let s=null,i=null;i=setTimeout(()=>{s=function(){const t=n.createElement("div");return t.setAttribute("data-snice-loading",""),t.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>',t}(),o.appendChild(s)},50);try{for(const t of r){if(!await t(h,e))return v(o),!1}return!0}finally{i&&clearTimeout(i),s&&s.remove()}}async function N(t,e,n,o,r,s,i,a){const l=o||f(t);if(!l)return;!function(t,e,n){"function"==typeof t.update&&t.update(h,c,e,n)}(l,s,i);const u=l.querySelector('[slot="page"]');if(!(!n||!u)){if(e.setAttribute("slot","page"),await C(l,u,e,n),a&&a())return;return void(r&&(t.innerHTML="",t.appendChild(l)))}if(a&&a())return;l.querySelectorAll('[slot="page"]').forEach(t=>t.remove()),e.setAttribute("slot","page"),l.appendChild(e),r&&(t.innerHTML="",t.appendChild(l))}async function A(e,o,r,s,i,a,c){const d=!1===(m=s)?null:m||(t.layout?t.layout:null);var m;const{element:p,needsNewLayout:y}=function(t){if(t===l)return{element:null,needsNewLayout:!1};if(l=t,!!t){const e=Date.now();u=e;const o=n.createElement(t);return o[S]=h,o[E]=e,{element:o,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(d),b=r||t.transition;if(null!==p||null!==f(e)){if(await N(e,o,b,p,y,i,a,c),c&&c())return;g(0,i,a)}else await async function(t,e,n,o){const r=t.children[0];n&&r?await C(t,r,e,n):o&&o()||(t.innerHTML="",t.appendChild(e))}(e,o,b,c),c&&c()||g(0,i,a)}let O=0;async function x(s){const a=n.querySelector(t.target);if(!a)throw new Error(`Target element not found: ${t.target}`);const c=++O,l=()=>c!==O;p(),e.scrollTo(0,0);if((""===s?.trim()||"/"===s)&&!!i){const t=o.find(t=>t.route.match("/"));if(!await w(t?.guards,{},a))return;if(l())return;const{element:r,transition:c,layout:u}=function(){const t=n.createElement(i);t[S]=h;const r=e.customElements.get(i),s=r?.[T],a=o.find(t=>t.route.match("/"));return{element:t,transition:s,layout:a?.layout}}();return void await A(a,r,c,u,s,{},l)}if(!s)return;const u=await async function(t,e){for(const r of o){const o=r.route.match(t);if(!1===o)continue;if(!await w(r.guards,o,e))return{result:Sn.GUARDS_FAILED};const s=n.createElement(r.tag);s[S]=h,s[U]=d;const i=o;return Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),{result:Sn.SUCCESS,element:s,transition:r.transition,layout:r.layout,routeParams:i}}return{result:Sn.NOT_FOUND}}(s,a);if(l())return;if(u.result===Sn.GUARDS_FAILED)return;if(u.result===Sn.SUCCESS){const{element:t,transition:e,layout:n,routeParams:o={}}=u;return void await A(a,t,e,n,s,o,l)}const{element:f,transition:m,layout:y}=function(){if(r){const t=n.createElement(r);t[S]=h;const o=e.customElements.get(r),s=o?.[T];return{element:t,transition:s,layout:void 0}}const t=n.createElement("div");return t.className="default-404",t.innerHTML="<h1>404</h1><p>Page not found</p>",{element:t,transition:void 0,layout:void 0}}();await A(a,f,m,y,s,{})}async function C(t,e,n,o,r=O){return async function(t,e,n,o={},r=()=>!1){const s=o.outDuration||300,i=o.inDuration||300,a=o.mode||"sequential",c=o.out?wn(o.out):{opacity:"0"},l={opacity:"0"},u=o.in?wn(o.in):{opacity:"1"},h=t.style,d=t.tagName.includes("-")&&t.shadowRoot,f=Symbol.for("snice:transition-original-position"),m=Symbol.for("snice:transition-count"),p=t;d||(f in p||(p[f]=h.position,p[m]=0),p[m]++,h.position="relative");const y=()=>{d||(p[m]--,p[m]<=0&&(h.position=p[f],delete p[f],delete p[m]))},g=e.hasAttribute("slot")||n.hasAttribute("slot");switch(Nn(e,g,s,"all"),Nn(n,g,i,"all"),Object.assign(n.style,l),t.appendChild(n),n.offsetHeight,a){case ft.SIMULTANEOUS:Object.assign(e.style,c),Object.assign(n.style,u),await new Promise(t=>setTimeout(t,Math.max(s,i)));break;case ft.SEQUENTIAL:if(Object.assign(e.style,c),await new Promise(t=>setTimeout(t,s)),r())return n.parentNode===t&&n.remove(),void y();Object.assign(n.style,u),await new Promise(t=>setTimeout(t,i))}if(r())return n.parentNode===t&&n.remove(),void y();e.remove(),function(t,e){t.style.position="",t.style.width="",t.style.transition="",e?t.style.height="":(t.style.top="",t.style.left="")}(n,g),Object.keys({...l,...u}).forEach(t=>{n.style[t]=""}),y()}(t,e,n,o,()=>r!==O)}return{page:function(t){return function(n,o){if(o?.metadata&&o.metadata[y]){n[y]||(n[y]=new Map);for(const[t,e]of o.metadata[y])n[y].set(t,e)}tn(n),n[T]=t.transition;const r=n.prototype.connectedCallback;n.prototype.connectedCallback=function(){this[U]=d,r?.call(this)};const s=n.prototype.disconnectedCallback;return n.prototype.disconnectedCallback=function(){s?.call(this),delete this[S],delete this[U]},e.customElements.get(t.tag)||e.customElements.define(t.tag,n),t.routes.forEach(e=>m(e,t.tag,t.transition,t.guards,t.layout,t.placard)),n}},initialize:function(){if(!n.querySelector(t.target))throw new Error(`Target element not found: ${t.target}`);!a&&(o.sort((t,e)=>e.route.spec.length-t.route.spec.length),a=!0),p(),function(){const o=()=>{n.querySelector(t.target)&&x(b())};switch(t.type){case"hash":e.addEventListener("hashchange",o);break;case"pushstate":e.addEventListener("popstate",o)}}(),x(b())},navigate:x,register:m}}function En(t,e){return function(n,o){return function(...r){this[I]||(this[I]=new Map);const s=`${t}_${o.name}`;this[I].has(s)||this[I].set(s,{debounceTimeout:null,throttleLastCall:0,throttleTimeout:null});const i=this[I].get(s),a=n.apply(this,r),c=n=>{if(void 0===n&&!1===e?.dispatchOnUndefined)return;const o=new CustomEvent(t,{bubbles:!0,composed:!0,...e,detail:n});this.dispatchEvent(o)},l=t=>{if(e?.debounce)return clearTimeout(i.debounceTimeout),void(i.debounceTimeout=setTimeout(()=>c(t),e.debounce));if(!e?.throttle)return void c(t);const n=Date.now(),o=e.throttle-(n-i.throttleLastCall);if(o<=0)return clearTimeout(i.throttleTimeout),i.throttleLastCall=n,void c(t);i.latestDetail=t,i.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null;const t=i.latestDetail;i.latestDetail=void 0,c(t)},o))};return a instanceof Promise?a.then(t=>(l(t),t)):(l(a),a)}}}function An(t,e,n){const o=[];for(const[r,s]of Object.entries(e)){const e=`@request/${r}`,i=t=>{const e=t,{discovery:o,data:i,payload:a}=e.detail;n?.passive||(e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()),o.resolve(),Promise.resolve().then(()=>s(a)).then(t=>i.resolve(t)).catch(t=>{i.reject(t),console.error(`createRequestHandler: error in "${r}" handler:`,t)})};t.addEventListener(e,i),o.push(()=>t.removeEventListener(e,i))}return()=>{for(const t of o)t();o.length=0}}!function(t){t.SUCCESS="success",t.GUARDS_FAILED="guards-failed",t.NOT_FOUND="not-found"}(Sn||(Sn={}));let On=!1;function xn(t){On=t}async function Cn(t,e=500){if(customElements.get(t))return;let n=null;On||(n=setTimeout(()=>{console.warn(`Custom element <${t}> is taking longer than ${e}ms to register. This may indicate a missing import or circular dependency. Set DISABLE_ELEMENT_READY_WARNINGS=true to disable this warning.`)},e));try{await customElements.whenDefined(t)}finally{n&&clearTimeout(n)}}async function _n(t,e=500){const n=t.tagName.toLowerCase();await Cn(n,e),"ready"in t&&"function"==typeof t.ready?.then&&await t.ready}async function kn(t,e=500){const n=[];if(t instanceof Element&&(t.tagName.includes("-")&&n.push(t),t.shadowRoot)){t.shadowRoot.querySelectorAll("*").forEach(t=>{t.tagName.includes("-")&&n.push(t)})}if(t instanceof DocumentFragment){t.querySelectorAll("*").forEach(t=>{t.tagName.includes("-")&&n.push(t)})}await Promise.all(n.map(t=>_n(t,e)))}async function*Ln(t){for(;;)await new Promise(e=>{t[q]||(t[q]=[]),t[q].push(e)}),yield}let Pn=0,Mn=null;const In=Symbol.for("snice:body-scroll-lock");function $n(){0===Pn&&(Mn=document.body.style.overflow,document.body.style.overflow="hidden"),Pn++}function Dn(){0!==Pn&&(Pn--,0===Pn&&(document.body.style.overflow=Mn??"",Mn=null))}function Rn(){return Pn}globalThis[In]={clear(){Pn=0,Mn=null}};class jn{constructor(){this.requestMiddlewares=[],this.responseMiddlewares=[]}use(t,e){"request"!==t?this.responseMiddlewares.push(e):this.requestMiddlewares.push(e)}create(t){const e=this.requestMiddlewares,n=this.responseMiddlewares;return async function(t,o){const r=new Request(t,o);let s=0;const i=async()=>{if(s<e.length){return e[s++].call(this,r,i)}const t=await fetch(r);let o=0;const a=async()=>{if(o<n.length){return n[o++].call(this,t,a)}return t};return a()};return i()}.bind(t)}}
23
23
  /*!
24
- * snice v5.0.0
24
+ * snice v5.2.0
25
25
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
26
26
  * (c) 2024
27
27
  * Released under the MIT License.
28
28
  *
29
29
  * GENERATED FILE — DO NOT EDIT. Source: src/. Rebuild: npm run build:core
30
30
  */
31
- var jn;"undefined"!=typeof document&&Le(),
31
+ var qn;"undefined"!=typeof document&&$e(),
32
32
  /*!
33
- * snice v5.0.0
33
+ * snice v5.2.0
34
34
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
35
35
  * (c) 2024
36
36
  * Released under the MIT License.
37
37
  *
38
38
  * GENERATED FILE — DO NOT EDIT. Source: src/. Rebuild: npm run build:core
39
39
  */
40
- globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0}),function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(jn||(jn={}));export{vt as Context,Rn as ContextAwareFetcher,o as IS_CONTROLLER_INSTANCE,Sn as Router,dt as SimpleArray,ft as TransitionMode,gn as adopted,Ze as applyElementFunctionality,Qe as clearDebounceTimers,Xe as clearMemoizeCache,Je as clearThrottleTimers,Me as context,un as contextProperty,Ce as controller,En as createRequestHandler,Kt as css,He as debounce,Tn as dispatch,fn as dispose,en as element,Et as escapeAttr,Tt as escapeHtml,Dn as getBodyScrollLockCount,e as getSymbol,Wt as html,At as isSafeUrl,nn as layout,In as lockBodyScroll,Ge as memoize,yn as moved,se as noChange,Jt as nothing,Mt as observe,Se as on,Ke as once,Ot as parseDuration,rn as property,an as query,cn as queryAll,dn as ready,mn as reconnect,qe as render,Ft as request,Ye as resetOnce,Bt as respond,On as setDisableElementReadyWarnings,Fe as styles,We as throttle,kn as trackRenders,$n as unlockBodyScroll,Yt as unsafeHTML,Le as useNativeElementControllers,_n as waitForAllCustomElements,xn as waitForElementDefined,Cn as waitForElementReady,ln as watch};
40
+ globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0}),function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(qn||(qn={}));export{vt as Context,jn as ContextAwareFetcher,o as IS_CONTROLLER_INSTANCE,Tn as Router,dt as SimpleArray,ft as TransitionMode,bn as adopted,tn as applyElementFunctionality,Je as clearDebounceTimers,Ye as clearMemoizeCache,Xe as clearThrottleTimers,Ce as context,hn as contextProperty,Pe as controller,An as createRequestHandler,Kt as css,We as debounce,En as dispatch,mn as dispose,nn as element,Et as escapeAttr,Tt as escapeHtml,Rn as getBodyScrollLockCount,e as getSymbol,Wt as html,At as isSafeUrl,on as layout,$n as lockBodyScroll,Qe as memoize,gn as moved,se as noChange,Jt as nothing,Mt as observe,Se as on,Ge as once,Ot as parseDuration,sn as property,cn as query,ln as queryAll,fn as ready,pn as reconnect,Fe as render,Ft as request,Ze as resetOnce,Bt as respond,xn as setDisableElementReadyWarnings,Be as styles,Ke as throttle,Ln as trackRenders,Dn as unlockBodyScroll,Yt as unsafeHTML,$e as useNativeElementControllers,kn as waitForAllCustomElements,Cn as waitForElementDefined,_n as waitForElementReady,un as watch};
41
41
  //# sourceMappingURL=snice-runtime.esm.min.js.map