snice 4.35.1 → 4.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (305) 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/README.md +1 -1
  8. package/dist/cdn/action-bar/snice-action-bar.js +1 -1
  9. package/dist/cdn/action-bar/snice-action-bar.min.js +1 -1
  10. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  11. package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
  12. package/dist/cdn/alert/snice-alert.js +1 -1
  13. package/dist/cdn/alert/snice-alert.min.js +1 -1
  14. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  15. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  16. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  17. package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
  18. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  19. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  20. package/dist/cdn/availability/snice-availability.js +1 -1
  21. package/dist/cdn/availability/snice-availability.min.js +1 -1
  22. package/dist/cdn/avatar/snice-avatar.js +1 -1
  23. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  24. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  25. package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
  26. package/dist/cdn/badge/snice-badge.js +1 -1
  27. package/dist/cdn/badge/snice-badge.min.js +1 -1
  28. package/dist/cdn/banner/snice-banner.js +1 -1
  29. package/dist/cdn/banner/snice-banner.min.js +1 -1
  30. package/dist/cdn/binpack/snice-binpack.js +1 -1
  31. package/dist/cdn/binpack/snice-binpack.min.js +1 -1
  32. package/dist/cdn/book/snice-book.js +1 -1
  33. package/dist/cdn/book/snice-book.min.js +1 -1
  34. package/dist/cdn/booking/snice-booking.js +1 -1
  35. package/dist/cdn/booking/snice-booking.min.js +1 -1
  36. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  37. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  38. package/dist/cdn/button/snice-button.js +1 -1
  39. package/dist/cdn/button/snice-button.min.js +1 -1
  40. package/dist/cdn/calendar/snice-calendar.js +1 -1
  41. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  42. package/dist/cdn/camera/snice-camera.js +1 -1
  43. package/dist/cdn/camera/snice-camera.min.js +1 -1
  44. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  45. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  46. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  47. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  48. package/dist/cdn/card/snice-card.js +1 -1
  49. package/dist/cdn/card/snice-card.min.js +1 -1
  50. package/dist/cdn/carousel/snice-carousel.js +1 -1
  51. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  52. package/dist/cdn/cart/snice-cart.js +1 -1
  53. package/dist/cdn/cart/snice-cart.min.js +1 -1
  54. package/dist/cdn/chart/snice-chart.js +1 -1
  55. package/dist/cdn/chart/snice-chart.min.js +1 -1
  56. package/dist/cdn/chat/snice-chat.js +1 -1
  57. package/dist/cdn/chat/snice-chat.min.js +1 -1
  58. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  59. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  60. package/dist/cdn/chip/snice-chip.js +1 -1
  61. package/dist/cdn/chip/snice-chip.min.js +1 -1
  62. package/dist/cdn/code-block/snice-code-block.js +1 -1
  63. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  64. package/dist/cdn/color-display/snice-color-display.js +1 -1
  65. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  66. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  67. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  68. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  69. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  70. package/dist/cdn/comments/snice-comments.js +1 -1
  71. package/dist/cdn/comments/snice-comments.min.js +1 -1
  72. package/dist/cdn/countdown/snice-countdown.js +1 -1
  73. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  74. package/dist/cdn/cropper/snice-cropper.js +1 -1
  75. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  76. package/dist/cdn/data-card/snice-data-card.js +1 -1
  77. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  78. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  79. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  80. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  81. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
  82. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  83. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
  84. package/dist/cdn/diff/snice-diff.js +1 -1
  85. package/dist/cdn/diff/snice-diff.min.js +1 -1
  86. package/dist/cdn/divider/snice-divider.js +1 -1
  87. package/dist/cdn/divider/snice-divider.min.js +1 -1
  88. package/dist/cdn/doc/snice-doc.js +1 -1
  89. package/dist/cdn/doc/snice-doc.min.js +1 -1
  90. package/dist/cdn/draw/snice-draw.js +1 -1
  91. package/dist/cdn/draw/snice-draw.min.js +1 -1
  92. package/dist/cdn/drawer/snice-drawer.js +1 -1
  93. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  94. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  95. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  96. package/dist/cdn/estimate/snice-estimate.js +1 -1
  97. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  98. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  99. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  100. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  101. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  102. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  103. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  104. package/dist/cdn/flow/snice-flow.js +1 -1
  105. package/dist/cdn/flow/snice-flow.min.js +1 -1
  106. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  107. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  108. package/dist/cdn/funnel/snice-funnel.js +1 -1
  109. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  110. package/dist/cdn/gantt/snice-gantt.js +1 -1
  111. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  112. package/dist/cdn/gauge/snice-gauge.js +1 -1
  113. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  114. package/dist/cdn/grid/snice-grid.js +1 -1
  115. package/dist/cdn/grid/snice-grid.min.js +1 -1
  116. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  117. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  118. package/dist/cdn/image/snice-image.js +1 -1
  119. package/dist/cdn/image/snice-image.min.js +1 -1
  120. package/dist/cdn/input/snice-input.js +1 -1
  121. package/dist/cdn/input/snice-input.min.js +1 -1
  122. package/dist/cdn/invoice/snice-invoice.js +1 -1
  123. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  124. package/dist/cdn/kanban/snice-kanban.js +1 -1
  125. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  126. package/dist/cdn/key-value/snice-key-value.js +1 -1
  127. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  128. package/dist/cdn/kpi/snice-kpi.js +1 -1
  129. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  130. package/dist/cdn/layout/snice-layout.js +1 -1
  131. package/dist/cdn/layout/snice-layout.min.js +1 -1
  132. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  133. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  134. package/dist/cdn/link/snice-link.js +1 -1
  135. package/dist/cdn/link/snice-link.min.js +1 -1
  136. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  137. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  138. package/dist/cdn/list/snice-list.js +1 -1
  139. package/dist/cdn/list/snice-list.min.js +1 -1
  140. package/dist/cdn/location/snice-location.js +1 -1
  141. package/dist/cdn/location/snice-location.min.js +1 -1
  142. package/dist/cdn/login/snice-login.js +1 -1
  143. package/dist/cdn/login/snice-login.min.js +1 -1
  144. package/dist/cdn/map/snice-map.js +1 -1
  145. package/dist/cdn/map/snice-map.min.js +1 -1
  146. package/dist/cdn/markdown/snice-markdown.js +1 -1
  147. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  148. package/dist/cdn/masonry/snice-masonry.js +1 -1
  149. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  150. package/dist/cdn/menu/snice-menu.js +1 -1
  151. package/dist/cdn/menu/snice-menu.min.js +1 -1
  152. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  153. package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
  154. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  155. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  156. package/dist/cdn/modal/snice-modal.js +1 -1
  157. package/dist/cdn/modal/snice-modal.min.js +1 -1
  158. package/dist/cdn/music-player/snice-music-player.js +1 -1
  159. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  160. package/dist/cdn/nav/snice-nav.js +1 -1
  161. package/dist/cdn/nav/snice-nav.min.js +1 -1
  162. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  163. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  164. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  165. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  166. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  167. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  168. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  169. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  170. package/dist/cdn/pagination/snice-pagination.js +1 -1
  171. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  172. package/dist/cdn/paint/snice-paint.js +1 -1
  173. package/dist/cdn/paint/snice-paint.min.js +1 -1
  174. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  175. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  176. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  177. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  178. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  179. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  180. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  181. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  182. package/dist/cdn/product-card/snice-product-card.js +1 -1
  183. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  184. package/dist/cdn/progress/snice-progress.js +1 -1
  185. package/dist/cdn/progress/snice-progress.min.js +1 -1
  186. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  187. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  188. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  189. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  190. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  191. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  192. package/dist/cdn/radio/snice-radio.js +1 -1
  193. package/dist/cdn/radio/snice-radio.min.js +1 -1
  194. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  195. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  196. package/dist/cdn/rating/snice-rating.js +1 -1
  197. package/dist/cdn/rating/snice-rating.min.js +1 -1
  198. package/dist/cdn/receipt/snice-receipt.js +1 -1
  199. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  200. package/dist/cdn/recipe/snice-recipe.js +1 -1
  201. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  202. package/dist/cdn/runtime/README.md +2 -2
  203. package/dist/cdn/runtime/snice-runtime.esm.js +99 -31
  204. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  205. package/dist/cdn/runtime/snice-runtime.esm.min.js +8 -8
  206. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  207. package/dist/cdn/runtime/snice-runtime.js +99 -31
  208. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  209. package/dist/cdn/runtime/snice-runtime.min.js +8 -8
  210. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  211. package/dist/cdn/sankey/snice-sankey.js +1 -1
  212. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  213. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  214. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  215. package/dist/cdn/select/snice-select.js +1 -1
  216. package/dist/cdn/select/snice-select.min.js +1 -1
  217. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  218. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  219. package/dist/cdn/slider/snice-slider.js +1 -1
  220. package/dist/cdn/slider/snice-slider.min.js +1 -1
  221. package/dist/cdn/sortable/snice-sortable.js +1 -1
  222. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  223. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  224. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  225. package/dist/cdn/spinner/snice-spinner.js +1 -1
  226. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  227. package/dist/cdn/split-button/snice-split-button.js +1 -1
  228. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  229. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  230. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  231. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  232. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  233. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  234. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  235. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  236. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  237. package/dist/cdn/step-input/snice-step-input.js +1 -1
  238. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  239. package/dist/cdn/stepper/snice-stepper.js +1 -1
  240. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  241. package/dist/cdn/switch/snice-switch.js +1 -1
  242. package/dist/cdn/switch/snice-switch.min.js +1 -1
  243. package/dist/cdn/table/snice-table.js +1 -1
  244. package/dist/cdn/table/snice-table.min.js +1 -1
  245. package/dist/cdn/tabs/snice-tabs.js +1 -1
  246. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  247. package/dist/cdn/tag/snice-tag.js +1 -1
  248. package/dist/cdn/tag/snice-tag.min.js +1 -1
  249. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  250. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  251. package/dist/cdn/terminal/snice-terminal.js +1 -1
  252. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  253. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  254. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  255. package/dist/cdn/textarea/snice-textarea.js +1 -1
  256. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  257. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  258. package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
  259. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  260. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  261. package/dist/cdn/timeline/snice-timeline.js +1 -1
  262. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  263. package/dist/cdn/timer/snice-timer.js +1 -1
  264. package/dist/cdn/timer/snice-timer.min.js +1 -1
  265. package/dist/cdn/toast/snice-toast.js +1 -1
  266. package/dist/cdn/toast/snice-toast.min.js +1 -1
  267. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  268. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  269. package/dist/cdn/tree/snice-tree.js +1 -1
  270. package/dist/cdn/tree/snice-tree.min.js +1 -1
  271. package/dist/cdn/treemap/snice-treemap.js +1 -1
  272. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  273. package/dist/cdn/user-card/snice-user-card.js +1 -1
  274. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  275. package/dist/cdn/video-player/snice-video-player.js +1 -1
  276. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  277. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  278. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  279. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  280. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  281. package/dist/cdn/weather/snice-weather.js +1 -1
  282. package/dist/cdn/weather/snice-weather.min.js +1 -1
  283. package/dist/cdn/work-order/snice-work-order.js +1 -1
  284. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  285. package/dist/index.cjs +96 -28
  286. package/dist/index.cjs.map +1 -1
  287. package/dist/index.esm.js +96 -28
  288. package/dist/index.esm.js.map +1 -1
  289. package/dist/index.iife.js +96 -28
  290. package/dist/index.iife.js.map +1 -1
  291. package/dist/react/SniceProvider.js +1 -1
  292. package/dist/react/SniceRouter.js +1 -1
  293. package/dist/react/index.js +1 -1
  294. package/dist/react/matchRoute.js +1 -1
  295. package/dist/react/useRequestHandler.js +1 -1
  296. package/dist/symbols.cjs +3 -1
  297. package/dist/symbols.cjs.map +1 -1
  298. package/dist/symbols.d.ts +1 -0
  299. package/dist/symbols.esm.js +3 -2
  300. package/dist/symbols.esm.js.map +1 -1
  301. package/dist/transitions.cjs +1 -1
  302. package/dist/transitions.esm.js +1 -1
  303. package/docs/ai/patterns.md +28 -0
  304. package/docs/elements.md +79 -0
  305. package/package.json +1 -1
@@ -1,35 +1,35 @@
1
1
  /*!
2
- * snice v4.35.1
2
+ * snice v4.36.0
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 v4.35.0
8
+ * snice v4.35.1
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
- 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"),r=e("is-controller-instance"),o=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"),m=e("controller-operations"),f=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"),_=e("dispose-handlers"),x=e("moved-handlers"),C=e("adopted-handlers"),O=e("observers"),k=e("setting-from-property"),L=e("moved-timers"),$=e("adopted-timers"),I=e("dispatch-timers"),M=e("render-method"),P=e("render-options"),R=e("render-instance"),D=e("render-timers"),F=e("render-callbacks"),q=e("styles-method"),B=e("styles-applied"),j=e("context-handler"),V=e("navigation-context-instance"),U=e("registered-elements"),z=e("is-updating"),H=e("context-register"),W=e("context-unregister"),K=e("context-notify-element"),G=e("context-timer"),Q=e("context-called"),J=e("context-update");class X{static{this.SEPARATOR=","}static serialize(t){return Array.isArray(t)?t.map(t=>{if("string"==typeof t){if(t.includes(X.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${X.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(X.SEPARATOR):""}static parse(t){return null==t||""===t?[]:t.split(X.SEPARATOR).map(t=>{if(/^-?\d+\.?\d*$/.test(t)){const e=Number(t);if(!isNaN(e))return e}return"true"===t||"false"!==t&&t})}}var Y,Z,tt;const et=Symbol.for("snice:registered-elements-set");let nt=0;class rt{constructor(t={},e=[],n="",r={},o){if(this[Y]=new WeakMap,this[Z]=new Set,this[tt]=!1,this.id=nt++,this.application=t,this.navigation={placards:e,route:n,params:r},o&&"function"==typeof o.create)this.fetch=o.create(this);else{if("function"!=typeof fetch)throw new Error("No fetch implementation available");this.fetch=fetch.bind(this)}}[(Y=U,Z=et,tt=z,H)](t,e){this[U].set(t,e),this[et].add(t)}[W](t){this[U].delete(t),this[et].delete(t)}[J](t,e,n,r){this.application=t,this.navigation.placards=e,this.navigation.route=n,this.navigation.params=r,this.notify()}update(){this.notify()}notify(){if(this[z])return;this[z]=!0;const t=this[et],e=this[U];for(const n of t){const t=e.get(n);if(t&&"function"==typeof n[t])try{n[t](this)}catch(e){console.error(`Error calling @context method ${t}:`,e)}}this[z]=!1}[K](t){const e=this[U].get(t);e&&"function"==typeof t[e]&&t[e](this)}}function ot(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 st(t,e,n,r){switch(e.type||ot(r)){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 X:return X.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 it(t,e){return"string"==typeof t.attribute?t.attribute:e.toLowerCase()}function at(t,e){return t[e]||(t[e]=new Set),t[e]}function ct(t,e){return t[e]||(t[e]={}),t[e]}function lt(t,e,n,r,o){const s=e[w];if(s){if(s.has(n))for(const e of s.get(n))try{e.method.call(t,r,o,n)}catch(t){console.error(`Error in @watch('${n}') method ${e.methodName}:`,t)}if(s.has("*"))for(const e of s.get("*"))try{e.method.call(t,r,o,n)}catch(t){console.error(`Error in @watch('*') method ${e.methodName}:`,t)}}}function ut(t,e){let n=null;return function(...r){null!==n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,r),n=null},e)}}function ht(t,e){let n=0,r=null;return function(...o){const s=Date.now(),i=e-(s-n);if(i<=0)return r&&(clearTimeout(r),r=null),n=s,t.apply(this,o);r||(r=setTimeout(()=>{n=Date.now(),r=null,t.apply(this,o)},i))}}const dt=new Map;function mt(t,e,n){let r,o;return"string"==typeof e?(r=e,o=n):(r=void 0,o=e),function(e,n){const s=n.name,i=`__observe_init_${s}`;n.addInitializer(function(){const n=this.constructor;if(n[i])return;n[i]=!0,n[O]||(n[O]=[]);const a=Array.isArray(t)?t:[t];for(const t of a){const[i,...a]=t.split(":"),c=a.join(":");n[O].push({type:i,target:c,selector:r,methodName:s,method:e,options:o})}})}}function ft(t,e){const n=t.constructor[O];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].observers||(t[p].observers=[]):t[p]={events:[],channels:[],observers:[]};for(const r of n){const n=r.method.bind(t),o=r.options?.throttle?ht(n,r.options.throttle):n;switch(r.type){case"intersection":pt(t,e,r,o);break;case"resize":yt(t,e,r,o);break;case"media":gt(t,e,r,o);break;case"mutation":bt(t,e,r,o);break;default:console.warn(`Unknown observer type: ${r.type}`)}}}}function pt(t,e,n,r){const o={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===r(e)&&s&&s.unobserve(e.target)}catch(t){console.error(`Error in intersection observer ${n.methodName}:`,t)}},o),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 yt(t,e,n,r){const o=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{r(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:o})}),t[p].observers.push(()=>{s.disconnect()})}function gt(t,e,n,r){const o=n.target;if(!o)return void console.warn("Media query observer requires a query string");let s=dt.get(o);if(!s)try{s=window.matchMedia(o),dt.set(o,s)}catch(t){return void console.error(`Invalid media query: ${o}`,t)}const i=t=>{try{r(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 bt(t,e,n,o){const s=n.target.split(":"),i=s[0]||"childList",a=s[1],c={};switch(i){case"childList":c.childList=!0;break;case"attributes":c.attributes=!0,a&&(c.attributeFilter=[a]);break;default:return void 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 o(t);const r=n.options.maxDepth,s=e.shadowRoot||e,i=t.filter(t=>{let e=0,n=t.target;for(;n&&n!==s&&e<r;)n=n.parentNode,e++;return e<r});i.length>0&&o(i)}catch(t){console.error(`Error in mutation observer ${n.methodName}:`,t)}}),h=!0===t[r];(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 vt(t){if(t[p]?.observers){for(const e of t[p].observers)e();t[p].observers=[]}}function wt(t,e){return function(n,o){let s,i,a=0;return async function(...o){const c=async()=>{const s=e?.timeout??12e4,i=e?.discoveryTimeout??50,a=n.apply(this,o),{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 m,f,p;const y=new Promise((e,n)=>{m=e,f=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),m()},reject:f},data:{resolve:u,reject:h}}});(!0===this[r]&&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:r}=await a.next(n);return r}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 c())}catch(t){n(t)}},e.debounce)});if(!e?.throttle)return c();const l=Date.now(),u=e.throttle-(l-a);return u<=0?(clearTimeout(i),a=l,c()):i?Promise.resolve():new Promise((t,e)=>{i=setTimeout(async()=>{a=Date.now(),i=null;try{t(await c())}catch(t){e(t)}},u)})}}}function Nt(t,e){return function(n,r){const o=r.name,i=`__respond_init_${t}_${o}`;r.addInitializer(function(){const r=this.constructor;r[i]||(r[i]=!0,r[s]||(r[s]=[]),r[s].push({channelName:t,methodName:o,method:n,options:e}))})}}function St(t,e){const n=t.constructor[s];if(n){t[p]||(t[p]={events:[],channels:[]});for(const r of n){const n=r.method.bind(t),o=`@request/${r.channelName}`;let s,i,a=0;const c=(t=>r.options?.debounce?(...e)=>new Promise((n,o)=>{clearTimeout(s),s=setTimeout(async()=>{try{n(await t(...e))}catch(t){o(t)}},r.options.debounce)}):r.options?.throttle?(...e)=>{const n=Date.now(),o=r.options.throttle-(n-a);return o<=0?(clearTimeout(i),a=n,t(...e)):i?Promise.resolve(void 0):new Promise((n,r)=>{i=setTimeout(async()=>{a=Date.now(),i=null;try{n(await t(...e))}catch(t){r(t)}},o)})}:t)(n),l=t=>{const{data:e,discovery:n,payload:o}=t.detail;t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation(),n.resolve(),Promise.resolve(c(o)).then(t=>{e.resolve(t)}).catch(t=>{e.reject(t),console.error(`Error in response handler ${r.methodName}:`,t)})};e.addEventListener(o,l),t[p].channels.push(()=>{e.removeEventListener(o,l)})}}}function Tt(t){if(t[p]?.channels){for(const e of t[p].channels)e();t[p].channels=[]}}const Et=Symbol.for("snice:html-result"),At=Symbol.for("snice:css-result");function _t(t,...e){return{_$litType$:Et,strings:t,values:e}}function xt(t,...e){let n=t[0];for(let r=0;r<e.length;r++)n+=String(e[r])+t[r+1];const r={_$litType$:At,cssText:n};if("undefined"!=typeof CSSStyleSheet&&"adoptedStyleSheets"in Document.prototype)try{const t=new CSSStyleSheet;t.replaceSync(n),r.styleSheet=t}catch(t){}return r}function Ct(t){return t&&t._$litType$===Et}const Ot=Symbol.for("snice:nothing"),kt=Symbol.for("snice:unsafe-html");function Lt(t){return{_$litType$:kt,html:t}}const $t=`snice$${Math.random().toFixed(9).slice(2)}$`,It="?"+$t,Mt=`<${It}>`,Pt=new RegExp($t,"g"),Rt=new WeakMap,Dt=Symbol("not-committed"),Ft=Symbol.for("snice:no-change"),qt=t=>null===t||"object"!=typeof t&&"function"!=typeof t;class Bt{constructor(t,e,n){this.parts=[],this.element=e;const r=document.createTreeWalker(e.content,NodeFilter.SHOW_ELEMENT|NodeFilter.SHOW_COMMENT|NodeFilter.SHOW_TEXT);let o=0;const s=[];let i;for(;null!==(i=r.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($t)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-if",index:o++,element:t}));continue}if("case"===e){const e=t.getAttribute("value");e&&e.includes($t)&&(t.removeAttribute("value"),this.parts.push({type:"conditional-case",index:o++,element:t}));continue}if(t.hasAttributes()){const e=t.attributes,r=[];for(let s=0;s<e.length;s++){const i=e[s],a=i.value;if(a.includes($t)){r.push(i);const e=n[o]||i.name,s=a.split($t),c=s.length-1;e.startsWith("@@")||e.startsWith("@")?(this.parts.push({type:"event",index:o,name:e.slice(1),element:t}),o+=1):e.startsWith(".")?(this.parts.push({type:"property",index:o,name:e.slice(1),element:t}),o+=1):e.startsWith("?")?(this.parts.push({type:"boolean-attribute",index:o,name:e.slice(1),element:t}),o+=1):(this.parts.push({type:"attribute",index:o,name:i.name,element:t,attrStrings:s}),o+=c)}}for(const e of r)t.removeAttribute(e.name)}}else if(i.nodeType===Node.COMMENT_NODE){const t=i;if(t.data===It){const e=t.parentNode,n=document.createComment("");e.insertBefore(n,t.nextSibling),this.parts.push({type:"node",index:o++,startNode:t,endNode:n})}}else if(i.nodeType===Node.TEXT_NODE){const t=i,e=t.data;if(e.includes($t)){const n=t.parentNode,r=e.split(Pt),i=r.length-1;for(let e=0;e<i;e++){n.insertBefore(document.createTextNode(r[e]),t);const s=document.createComment(""),i=document.createComment("");n.insertBefore(s,t),n.insertBefore(i,t),this.parts.push({type:"node",index:o++,startNode:s,endNode:i})}""!==r[i]?t.data=r[i]:s.push(t)}}for(const t of s)t.parentNode?.removeChild(t)}}class jt{constructor(t){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=function(t){const{strings:e}=t,n=Rt.get(e);if(n)return n;const r=[],o=[];let s=!1,i=!1,a="",c="";for(let t=0;t<e.length;t++){const n=e[t];if(r.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)o.push(c),r.push($t);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(),o.push(c),r.push($t)}else n.match(/<(if|case)\s*$/)?(c="value",o.push("value"),r.push(`value="${$t}"`)):(o.push(""),r.push($t))}else o.push(""),r.push(Mt)}}const l=r.join(""),u=document.createElement("template");u.innerHTML=l;const h=new Bt(t,u,o);return Rt.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 r=t.currentNode,o=e.currentNode;for(;r&&o;)n.set(r,o),r=t.nextNode(),o=e.nextNode();for(let t=0;t<this.template.parts.length;t++){const e=this.template.parts[t];let r;switch(e.type){case"node":const t=n.get(e.startNode),o=n.get(e.endNode);r=new Ut(t,o);break;case"attribute":const s=n.get(e.element);r=new zt(s,e.name,e.attrStrings);break;case"property":const i=n.get(e.element);r=new Ht(i,e.name);break;case"boolean-attribute":const a=n.get(e.element);r=new Wt(a,e.name);break;case"event":const c=n.get(e.element);r=new Kt(c,e.name);break;case"conditional-if":const l=n.get(e.element);r=new Yt(l);break;case"conditional-case":const u=n.get(e.element);r=new Zt(u);break;default:throw new Error(`Unknown part type: ${e.type}`)}this.parts.push(r),r instanceof Yt||r instanceof Zt?this.conditionalParts.push({part:r,index:e.index}):this.regularParts.push({part:r,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 zt&&void 0!==e.strings?e.commit(t,n):e.commit(t[n])}clear(){for(const t of this.parts)t.clear()}}class Vt{}class Ut extends Vt{constructor(t,e){super(),this._committedValue=Dt,this.startNode=t,this.endNode=e}commit(t){if(t!==Ft)return t===Ot||null==t||""===t?(this._committedValue!==Ot&&this._clear(),void(this._committedValue=Ot)):void(qt(t)?t!==this._committedValue&&this._commitText(t):Ct(t)?this._commitTemplateResult(t):!function(t){return t&&t._$litType$===kt}(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!==Dt&&this._committedValue!==Ot&&qt(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 jt){const n=Rt.get(t.strings);if(n&&e.template===n)return void e.update(t.values)}this._clear();const n=new jt(t),r=n.renderFragment();this._insertBefore(r),n.update(t.values),this._committedValue=n}_commitIterable(t){Array.isArray(this._committedValue)&&this._committedValue[0]instanceof Ut||(this._clear(),this._committedValue=[]);const e=this._committedValue;let n=0;for(const r of t){let t;if(n>=e.length){const n=document.createComment(""),r=document.createComment("");this._insertBefore(n),this._insertBefore(r),t=new Ut(n,r),e.push(t)}else t=e[n];t.commit(r),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=Ot}clear(){this._clear()}}class zt extends Vt{constructor(t,e,n){super(),this._committedValue=Dt,this.element=t,this.name=e,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(Dt),this.strings=n):this._committedValue=Dt}commit(t,e=0){let n,r=!1;if(void 0===this.strings){if(t===Ft)return;if(r=!qt(t)||t!==this._committedValue&&t!==Ft,!r)return;this._committedValue=t,n=t}else{const o=t,s=this._committedValue;n=this.strings[0];for(let t=0;t<this.strings.length-1;t++){let i=o[e+t];i===Ft&&(i=s[t]),r=r||!qt(i)||i!==s[t],i===Ot?n=Ot:n!==Ot&&(n=n+(i??"")+this.strings[t+1]),s[t]=i}if(!r)return}this._commitValue(n)}_commitValue(t){t===Ot||null==t?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(t))}clear(){this.element.removeAttribute(this.name)}}class Ht extends Vt{constructor(t,e){super(),this._committedValue=Dt,this.element=t,this.name=e}commit(t){t!==Ft&&t!==this._committedValue&&(this._committedValue=t,this.element[this.name]=t===Ot?void 0:t)}clear(){this.element[this.name]=void 0,this._committedValue=Dt}}class Wt extends Vt{constructor(t,e){super(),this._committedValue=Dt,this.element=t,this.name=e}commit(t){if(t===Ft)return;const e=!!t&&t!==Ot;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=Dt}}class Kt extends Vt{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]),r=e.indexOf("."),o=n?e.indexOf(":"):-1,s=r>0&&o>0?Math.min(r,o):Math.max(r,o);if(s>0){const t=e.substring(0,s),n=e.substring(s+1);this.eventName=t,this.keyFilter=Gt(n)}else this.eventName=e}commit(t){if(t===Ft)return;if(t===Ot&&(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=r=>{n&&!Jt(r,n)||t.call(e,r)},this.element.addEventListener(this.eventName,this.listener)}clear(){this.listener&&(this.element.removeEventListener(this.eventName,this.listener),this.listener=null)}}function Gt(t){const e=t.startsWith("~");e&&(t=t.substring(1));const n=t.split("+"),r={key:"",anyModifiers:e};for(const t of n){const e=t.toLowerCase();"ctrl"===e||"control"===e?r.ctrl=!0:"alt"===e?r.alt=!0:"shift"===e?r.shift=!0:"meta"===e||"cmd"===e||"command"===e?r.meta=!0:r.key=Qt(t)}return r}function Qt(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 Jt(t,e){if(t.key!==e.key)return!1;if(e.anyModifiers)return!0;const n=e.ctrl?t.ctrlKey:!t.ctrlKey,r=e.alt?t.altKey:!t.altKey,o=e.shift?t.shiftKey:!t.shiftKey,s=e.meta?t.metaKey:!t.metaKey;return n&&r&&o&&s}const Xt=Symbol("not-set");class Yt extends Vt{constructor(t){super(),this.value=Xt,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 Zt extends Vt{constructor(t){super(),this.value=Xt,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),r=n?this.branches.get(e):this.defaultBranch;this.currentKey=n?e:this.defaultBranch?"__default__":null,r&&r.hasChildNodes()&&this.startNode.parentNode.insertBefore(r,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 te=e("on-handlers");function ee(t,e,n){let r=null,o={};return"string"==typeof e?(r=e,o=n||{}):e&&"object"==typeof e?o=e:null===e&&n&&(o=n),function(e,n){const s=n.name,i=`__on_init_${s}_${r||""}_${JSON.stringify(t)}`;return n.addInitializer(function(){const n=this.constructor;if(n[i])return;n[i]=!0,n[te]||(n[te]=[]);const a=Array.isArray(t)?t:[t];for(const t of a)n[te].push({eventName:t,selector:r,methodName:s,method:e,options:o})}),e}}function ne(t,e){let n=0;return function(...r){const o=Date.now();o-n>=e&&(n=o,t.apply(this,r))}}const re=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function oe(t,e){const n=t.constructor[te];if(n&&Array.isArray(n)&&0!==n.length){t[p]?t[p].events?t[p].events.length>0&&se(t):t[p].events=[]:t[p]={events:[],channels:[],observers:[]};for(const r of n){const n=t[r.methodName];let o=n?n.bind(t):r.method.bind(t);const s=r.options||{},i=["keydown","keyup","keypress"].includes(r.eventName.split(".")[0].split(":")[0]),a=r.eventName.indexOf("."),c=i?r.eventName.indexOf(":"):-1,l=a>0&&c>0?Math.min(a,c):Math.max(a,c),u=l>0?r.eventName.substring(0,l):r.eventName,h=l>0?r.eventName.substring(l+1):null;s.debounce&&s.debounce>0?o=ut(o,s.debounce):s.throttle&&s.throttle>0&&(o=ne(o,s.throttle));let d=null;h&&["keydown","keyup","keypress"].includes(u)&&(d=Gt(h));const m=(t=>d?e=>{Jt(e,d)&&t(e)}:t)(o);if(r.selector){const n=e.shadowRoot||e,o=t=>{const e=t.target;if(e.matches&&e.matches(r.selector)&&e||e.closest&&e.closest(r.selector)||null){s.preventDefault&&t.preventDefault(),s.stopPropagation&&(t.stopPropagation(),t.stopImmediatePropagation());try{m(t)}catch(t){console.error(`Error in event handler ${r.methodName}:`,t)}}},i=re.has(u),a={capture:void 0!==s.capture?s.capture:i,once:s.once||!1,passive:s.passive||!1};n.addEventListener(u,o,a),t[p].events.push({target:n,eventName:u,handler:o,options:a})}else{const n=e.shadowRoot,o=Symbol.for(`snice:event-handled:${r.methodName}`),i=t=>{if(!t[o]){t[o]=!0,s.preventDefault&&t.preventDefault(),s.stopPropagation&&t.stopPropagation();try{m(t)}catch(t){console.error(`Error in event handler ${r.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 se(t){if(t[p]?.events){for(const{target:e,eventName:n,handler:r,options:o}of t[p].events)e.removeEventListener(n,r,o);t[p].events=[]}}class ie{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 ae(t){return function(e,r){const o=globalThis.snice?.controllerRegistry;if(!o)throw new Error("Snice global registry not initialized");return o.set(t,e),e.prototype[n]=!0,e}}async function ce(e,n){const o=e[u],s=e[h],i=e[f];if(void 0!==i&&i!==n)return;if(s===n&&o)return;o&&await le(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 ie;l[r]=!0,l[d]=p,l.element=e;const g=e[S];void 0!==g&&(l[S]=g),e[u]=l,e[h]=n,e[m]=y,await e.ready,await y.runOperation(async()=>{await l.attach(e)}),ft(l,e),St(l,e),oe(l,e),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:n,controller:l}}))}async function le(t){const e=t[u],n=t[h],r=t[m];e&&(r?await r.runOperation(async()=>{await e.detach(t)}):await e.detach(t),e.element=null,vt(e),Tt(e),se(e),r&&await r.cleanup(),delete e[S],delete t[u],delete t[h],delete t[m],t.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:n,controller:e}})))}function ue(){if(globalThis.sniceNativeControllersInitialized)return;function t(t){if(!(t instanceof HTMLElement))return;if(t.tagName.includes("-"))return;if(t[o])return;const e=t.getAttribute("controller"),n=t[f];if(e!==n){if(!e)return delete t[f],delete t[h],void le(t).catch(t=>{console.error("Failed to detach controller from native element:",t)});t[f]=e,t.ready||(t.ready=Promise.resolve()),n&&le(t).catch(t=>{console.error("Failed to detach old controller from native element:",t)}),ce(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]:not([class*="-"])').forEach(t))})});function n(){document.querySelectorAll('[controller]:not([class*="-"])').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 he=e("context-handlers");function de(t={}){return function(e,n){const r=n.name,o=`__context_init_${r}`;return n.addInitializer(function(){const n=this.constructor;n[o]||(n[o]=!0,n[he]||(n[he]=[]),n[he].push({methodName:r,method:e,options:t}))}),e}}function me(t){const e=t.constructor[he];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[j];if(n){t[V]=n;for(const r of e){const{methodName:e,method:o,options:s}=r,i=`__wrapped_${e}`;t[i]=function(e){if(s.once&&t[Q])return;const n=()=>{if(o.call(t,e),s.once){t[Q]=!0;const e=t[V];e&&"function"==typeof e[W]&&e[W](t)}};if(s.debounce)return clearTimeout(t[G]),void(t[G]=setTimeout(n,s.debounce));if(s.throttle){const e=Date.now();return void(e-(t[G]||0)>=s.throttle&&(t[G]=e,n()))}n()},"function"==typeof n[H]&&n[H](t,i)}}}const fe=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(t,e){e.sync?ye(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){ye(e,e[P]||{})}}};function pe(t){const e=t[F];if(!e||0===e.length)return;const n=[...e];t[F]=[],n.forEach(t=>t())}function ye(t,e,n){const r=t[M];if(r&&(!e.once||!t[R]))try{const o=void 0!==n?n:r.call(t);if(t.shadowRoot||t.attachShadow({mode:"open"}),!1===e.differential)return"string"!=typeof o?void console.warn("Render method with differential: false must return a string"):(t.shadowRoot.innerHTML=o,void pe(t));if(!Ct(o))return void console.warn("Render method must return html`` template result");let s=t[R];if(s&&s.isSameTemplate(o.strings))return s.update(o.values),void pe(t);s&&(t.shadowRoot.innerHTML=""),s=new jt(o),t[R]=s,t.shadowRoot.appendChild(s.renderFragment()),s.update(o.values),pe(t)}catch(t){console.error("Error rendering element:",t)}}function ge(t,e=!1){const n=t[P]||{};if(!n.once||!t[R])if(e)ye(t,n);else{if(void 0!==n.debounce&&n.debounce>0)return t[D]||(t[D]={}),clearTimeout(t[D].debounce),void(t[D].debounce=setTimeout(()=>{fe.schedule(t,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){t[D]||(t[D]={lastThrottle:0});const e=t[D],r=Date.now();if(0===e.lastThrottle||r-e.lastThrottle>=n.throttle)return e.lastThrottle=r,void fe.schedule(t,n);if(!e.throttleTimer){const o=n.throttle-(r-e.lastThrottle);e.throttleTimer=setTimeout(()=>{e.throttleTimer=null,e.lastThrottle=Date.now(),fe.schedule(t,n)},o)}return}fe.schedule(t,n)}}function be(t={}){return function(e,n){return n.name,n.addInitializer(function(){this[M]=e,this[P]=t}),function(...t){const n=e.apply(this,t);return ye(this,{},n),n}}}function ve(){return function(t,e){return e.addInitializer(function(){this[q]=t}),t}}function we(t){const e=t[q];if(e&&!t[B]){t[B]=!0;try{const r=e.call(t);if(!(n=r)||n._$litType$!==At)return void console.warn("Styles method must return css`` template result");if(t.shadowRoot||t.attachShadow({mode:"open"}),!t.shadowRoot)return;if(r.styleSheet&&"adoptedStyleSheets"in t.shadowRoot)return void(t.shadowRoot.adoptedStyleSheets=[r.styleSheet]);const o=document.createElement("style");o.textContent=r.cssText,t.shadowRoot.appendChild(o)}catch(t){console.error("Error applying styles:",t)}var n}}function Ne(t){t.prototype[o]=!0;const e=t.prototype.connectedCallback,n=t.prototype.disconnectedCallback,r=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=it(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?ce(this,t).catch(e=>{console.error(`Failed to attach controller "${t}":`,e)}):e&&le(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]){oe(this,this),St(this,this),me(this);try{ft(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,t)}return void(e&&e.call(this))}this[v]=!0;const n=t[y];if(n)for(const[t,e]of n){if(!1===e.attribute)continue;const n=it(e,t);if(!this.hasAttribute(n))continue;const r=this.getAttribute(n);at(this,N).add(t),e.type===Boolean&&""===r&&this.setAttribute(n,"true"),this[t]=st(r,e)}if(this[b]){for(const[t,e]of Array.from(this[b].entries())){const r=n?.get(t),o=it(r||{},t);this[b].delete(t),this.hasAttribute(o)||(this[t]=e)}delete this[b]}we(this),oe(this,this),St(this,this),me(this),this[l]=!0,e&&e.call(this);const r=t[A];await new Promise(t=>queueMicrotask(t)),this[M]&&ge(this,!0);try{ft(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName}:`,t)}if(r)for(const t of r)try{await t.method.call(this)}catch(e){console.error(`Error in @ready handler ${t.methodName}:`,e)}this[a]&&(this[a](),this[a]=null)},t.prototype.disconnectedCallback=async function(){const e=t[_];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]&&le(this).catch(t=>{console.error("Failed to detach controller:",t)}),se(this),Tt(this),function(t){const e=t.constructor[he];if(!e||!Array.isArray(e)||0===e.length)return;for(const n of e)n.options.debounce&&t[G]&&(clearTimeout(t[G]),delete t[G]),delete t[`__wrapped_${n.methodName}`];const n=t[V];n&&"function"==typeof n[W]&&n[W](t),delete t[V],delete t[Q]}(this),vt(this)},t.prototype.attributeChangedCallback=function(e,n,o){if(r?.call(this,e,n,o),"controller"===e)return void(this.controller=o);const s=t[y];if(s)for(const[n,r]of s){if(it(r,n).toLowerCase()!==e.toLowerCase())continue;const s=this[g]?.[n],i=st(o,r,s,void 0);if(s===i)break;at(this,N).add(n),ct(this,g)[n]=i,this[k]?.has(e.toLowerCase())||(lt(this,t,n,s,i),this[M]&&this[l]&&ge(this));break}},t.prototype.connectedMoveCallback=async function(){const e=t[x];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[C];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 Se(t,e,n,r){if(n.metadata&&n.metadata[y]){e[y]||(e[y]=new Map);for(const[t,r]of n.metadata[y])e[y].set(t,r)}return r?.formAssociated&&(e.formAssociated=!0),Ne(e),customElements.get(t)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${t}" is already registered. Skipping.`),e):(customElements.define(t,e),e)}function Te(t,e){return function(n,r){return Se(t,n,r,e)}}function Ee(t){return function(e,n){return Se(t,e,n)}}function Ae(t){return function(e,n){const r=n.name;return n.metadata||(n.metadata={}),n.metadata[y]||(n.metadata[y]=new Map),n.metadata[y].set(r,t||{}),function(e){const n=this.constructor;n[y]||(n[y]=new Map);const o={...t};if(o.type||void 0===e||(o.type=ot(e)),n[y].set(r,o),!Object.hasOwn(this.constructor.prototype,r)){const t={get(){if(!1===o?.attribute)return this[g]&&r in this[g]?this[g][r]:this[b]?.has(r)?this[b].get(r):e;const t=it(o||{},r),n=this.getAttribute?.(t);if(null!==n)return st(n,o||{},void 0,e);return((o?.type||ot(e))!==Boolean||!this[N]?.has(r))&&(this[b]?.has(r)?this[b].get(r):e)},set(t){const n=this[r];if(n!==t){if(!this[v])return this[b]||(this[b]=new Map),void this[b].set(r,t);if(!1===o?.attribute)ct(this,g)[r]=t;else{const n=it(o,r),s=function(t,e,n){if(null==t||!1===t||e?.type===X&&Array.isArray(t)&&0===t.length)return null;if(e.converter?.toAttribute)return e.converter.toAttribute(t,e.type);switch(e.type||ot(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 X:return Array.isArray(t)?X.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,o,e);at(this,N).add(r),at(this,k).add(n.toLowerCase()),null===s?this.removeAttribute?.(n):this.setAttribute?.(n,s),setTimeout(()=>{this[k]?.delete(n.toLowerCase())},0)}lt(this,this.constructor,r,n,t),this[M]&&this[l]&&ge(this)}},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,r,t)}return ct(this,g)[r]=e,e}}}function _e(t){return!0===t[r]&&t.element?t.element:t}function xe(t,e={}){return function(n,r){const{light:o=!1,shadow:s=!0}=e,i=r.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=_e(this);let n=null;return s&&e.shadowRoot&&(n=e.shadowRoot.querySelector(t)),!n&&o&&(n=e.querySelector(t)),n||null},set(){},configurable:!0,enumerable:!0}),e}}}function Ce(t,e={}){return function(n,r){const{light:o=!1,shadow:s=!0}=e,i=r.name;return function(e){return Object.hasOwn(this.constructor.prototype,i)||Object.defineProperty(this.constructor.prototype,i,{get(){const e=_e(this),n=[];return s&&e.shadowRoot&&n.push(...e.shadowRoot.querySelectorAll(t)),o&&n.push(...e.querySelectorAll(t)),n},set(){},configurable:!0,enumerable:!0}),e}}}function Oe(...t){return function(e,n){const r=n.name,o=`__watch_init_${r}`;n.addInitializer(function(){const n=this.constructor;if(!n[o]){n[o]=!0,n[w]||(n[w]=new Map);for(const o of t)n[w].has(o)||n[w].set(o,[]),n[w].get(o).push({methodName:r,method:e})}})}}function ke(){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[r]&&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 Le(t,e,n,r,o){const s=r.name,i=`__${e}_init_${s}`;r.addInitializer(function(){const e=this.constructor;e[i]||(e[i]=!0,e[t]||(e[t]=[]),e[t].push({methodName:s,method:n,...o}))})}function $e(){return function(t,e){Le(A,"ready",t,e)}}function Ie(){return function(t,e){Le(_,"dispose",t,e)}}function Me(t,e,n){return function(r={}){return function(o,s){Le(t,n,o,s,{options:r});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)=>o.apply(this,t);if(r.debounce>0)return clearTimeout(n.debounceTimer),void(n.debounceTimer=setTimeout(()=>s(...t),r.debounce));if(r.throttle>0){const e=Date.now();if(0===n.lastThrottleCall||e-n.lastThrottleCall>=r.throttle)return n.lastThrottleCall=e,s(...t);if(!n.throttleTimer){const o=r.throttle-(e-n.lastThrottleCall);n.throttleTimer=setTimeout(()=>{n.throttleTimer=null,n.lastThrottleCall=Date.now(),s(...t)},o)}return}return s(...t)}}}}const Pe=Me(x,L,"moved"),Re=Me(C,$,"adopted");
13
+ 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"),m=e("controller-operations"),f=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("created-at"),E=e("ready-handlers"),A=e("dispose-handlers"),x=e("moved-handlers"),C=e("adopted-handlers"),O=e("observers"),M=e("setting-from-property"),k=e("moved-timers"),L=e("adopted-timers"),I=e("dispatch-timers"),P=e("render-method"),$=e("render-options"),R=e("render-instance"),D=e("render-timers"),F=e("render-callbacks"),q=e("styles-method"),B=e("styles-applied"),j=e("parent-styles-methods"),V=e("context-handler"),U=e("navigation-context-instance"),z=e("registered-elements"),H=e("is-updating"),W=e("context-register"),K=e("context-unregister"),G=e("context-notify-element"),Q=e("context-timer"),J=e("context-called"),X=e("context-update");class Y{static{this.SEPARATOR=","}static serialize(t){return Array.isArray(t)?t.map(t=>{if("string"==typeof t){if(t.includes(Y.SEPARATOR))throw new Error(`SimpleArray strings cannot contain the character "${Y.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(Y.SEPARATOR):""}static parse(t){return null==t||""===t?[]:t.split(Y.SEPARATOR).map(t=>{if(/^-?\d+\.?\d*$/.test(t)){const e=Number(t);if(!isNaN(e))return e}return"true"===t||"false"!==t&&t})}}var Z,tt,et;const nt=Symbol.for("snice:registered-elements-set");let ot=0;class rt{constructor(t={},e=[],n="",o={},r){if(this[Z]=new WeakMap,this[tt]=new Set,this[et]=!1,this.id=ot++,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)}}[(Z=z,tt=nt,et=H,W)](t,e){this[z].set(t,e),this[nt].add(t)}[K](t){this[z].delete(t),this[nt].delete(t)}[X](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[H])return;this[H]=!0;const t=this[nt],e=this[z];for(const n of t){const t=e.get(n);if(t&&"function"==typeof n[t])try{n[t](this)}catch(e){console.error(`Error calling @context method ${t}:`,e)}}this[H]=!1}[G](t){const e=this[z].get(t);e&&"function"==typeof t[e]&&t[e](this)}}function st(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 it(t,e,n,o){switch(e.type||st(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 Y:return Y.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 at(t,e){return"string"==typeof t.attribute?t.attribute:e.toLowerCase()}function ct(t,e){return t[e]||(t[e]=new Set),t[e]}function lt(t,e){return t[e]||(t[e]={}),t[e]}function ut(t,e,n,o,r){const s=e[w];if(s){if(s.has(n))for(const e of s.get(n))try{e.method.call(t,o,r,n)}catch(t){console.error(`Error in @watch('${n}') method ${e.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 ht(t,e){let n=null;return function(...o){null!==n&&clearTimeout(n),n=setTimeout(()=>{t.apply(this,o),n=null},e)}}function dt(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 mt=new Map;function ft(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(n.__observeMethods||(n.__observeMethods=new Set),n.__observeMethods.has(e))return;n.__observeMethods.add(e),n[O]||(n[O]=[]);const i=Array.isArray(t)?t:[t];for(const t of i){const[i,...a]=t.split(":"),c=a.join(":");n[O].push({type:i,target:c,selector:o,methodName:s,method:e,options:r})}})}}function pt(t,e){const n=t.constructor[O];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?dt(n,o.options.throttle):n;switch(o.type){case"intersection":yt(t,e,o,r);break;case"resize":gt(t,e,o,r);break;case"media":bt(t,e,o,r);break;case"mutation":vt(t,e,o,r);break;default:console.warn(`Unknown observer type: ${o.type}`)}}}}function yt(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 gt(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 bt(t,e,n,o){const r=n.target;if(!r)return void console.warn("Media query observer requires a query string");let s=mt.get(r);if(!s)try{s=window.matchMedia(r),mt.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 vt(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 wt(t){if(t[p]?.observers){for(const e of t[p].observers)e();t[p].observers=[]}}function Nt(t,e){return function(n,r){let s,i,a=0;return async function(...r){const c=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 m,f,p;const y=new Promise((e,n)=>{m=e,f=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),m()},reject:f},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 c())}catch(t){n(t)}},e.debounce)});if(!e?.throttle)return c();const l=Date.now(),u=e.throttle-(l-a);return u<=0?(clearTimeout(i),a=l,c()):i?Promise.resolve():new Promise((t,e)=>{i=setTimeout(async()=>{a=Date.now(),i=null;try{t(await c())}catch(t){e(t)}},u)})}}}function St(t,e){return function(n,o){const r=o.name;o.addInitializer(function(){const o=this.constructor;o.__respondMethods||(o.__respondMethods=new Set),o.__respondMethods.has(n)||(o.__respondMethods.add(n),o[s]||(o[s]=[]),o[s].push({channelName:t,methodName:r,method:n,options:e}))})}}function Tt(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=(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),a=n,t(...e)):i?Promise.resolve(void 0):new Promise((n,o)=>{i=setTimeout(async()=>{a=Date.now(),i=null;try{n(await t(...e))}catch(t){o(t)}},r)})}:t)(n),l=t=>{const{data:e,discovery:n,payload:r}=t.detail;t.preventDefault(),t.stopImmediatePropagation(),t.stopPropagation(),n.resolve(),Promise.resolve(c(r)).then(t=>{e.resolve(t)}).catch(t=>{e.reject(t),console.error(`Error in response handler ${o.methodName}:`,t)})};e.addEventListener(r,l),t[p].channels.push(()=>{e.removeEventListener(r,l)})}}}function _t(t){if(t[p]?.channels){for(const e of t[p].channels)e();t[p].channels=[]}}const Et=Symbol.for("snice:html-result"),At=Symbol.for("snice:css-result");function xt(t,...e){return{_$litType$:Et,strings:t,values:e}}function Ct(t,...e){let n=t[0];for(let o=0;o<e.length;o++)n+=String(e[o])+t[o+1];const o={_$litType$:At,cssText:n};if("undefined"!=typeof CSSStyleSheet&&"adoptedStyleSheets"in Document.prototype)try{const t=new CSSStyleSheet;t.replaceSync(n),o.styleSheet=t}catch(t){}return o}function Ot(t){return t&&t._$litType$===Et}function Mt(t){return t&&t._$litType$===At}const kt=Symbol.for("snice:nothing"),Lt=Symbol.for("snice:unsafe-html");function It(t){return{_$litType$:Lt,html:t}}const Pt=`snice$${Math.random().toFixed(9).slice(2)}$`,$t="?"+Pt,Rt=`<${$t}>`,Dt=new RegExp(Pt,"g"),Ft=new WeakMap,qt=Symbol("not-committed"),Bt=Symbol.for("snice:no-change"),jt=t=>null===t||"object"!=typeof t&&"function"!=typeof t;class Vt{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(Pt)&&(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(Pt)&&(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(Pt)){o.push(i);const e=n[r]||i.name,s=a.split(Pt),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===$t){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(Pt)){const n=t.parentNode,o=e.split(Dt),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 Ut{constructor(t){this.parts=[],this.fragment=null,this.conditionalParts=[],this.regularParts=[],this.template=function(t){const{strings:e}=t,n=Ft.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(Pt);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(Pt)}else n.match(/<(if|case)\s*$/)?(c="value",r.push("value"),o.push(`value="${Pt}"`)):(r.push(""),o.push(Pt))}else r.push(""),o.push(Rt)}}const l=o.join(""),u=document.createElement("template");u.innerHTML=l;const h=new Vt(t,u,r);return Ft.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 Ht(t,r);break;case"attribute":const s=n.get(e.element);o=new Wt(s,e.name,e.attrStrings);break;case"property":const i=n.get(e.element);o=new Kt(i,e.name);break;case"boolean-attribute":const a=n.get(e.element);o=new Gt(a,e.name);break;case"event":const c=n.get(e.element);o=new Qt(c,e.name);break;case"conditional-if":const l=n.get(e.element);o=new te(l);break;case"conditional-case":const u=n.get(e.element);o=new ee(u);break;default:throw new Error(`Unknown part type: ${e.type}`)}this.parts.push(o),o instanceof te||o instanceof ee?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 Wt&&void 0!==e.strings?e.commit(t,n):e.commit(t[n])}clear(){for(const t of this.parts)t.clear()}}class zt{}class Ht extends zt{constructor(t,e){super(),this._committedValue=qt,this.startNode=t,this.endNode=e}commit(t){if(t!==Bt)return t===kt||null==t||""===t?(this._committedValue!==kt&&this._clear(),void(this._committedValue=kt)):void(jt(t)?t!==this._committedValue&&this._commitText(t):Ot(t)?this._commitTemplateResult(t):!function(t){return t&&t._$litType$===Lt}(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!==qt&&this._committedValue!==kt&&jt(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 Ut){const n=Ft.get(t.strings);if(n&&e.template===n)return void e.update(t.values)}this._clear();const n=new Ut(t),o=n.renderFragment();this._insertBefore(o),n.update(t.values),this._committedValue=n}_commitIterable(t){Array.isArray(this._committedValue)&&this._committedValue[0]instanceof Ht||(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 Ht(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=kt}clear(){this._clear()}}class Wt extends zt{constructor(t,e,n){super(),this._committedValue=qt,this.element=t,this.name=e,n&&(n.length>2||""!==n[0]||""!==n[1])?(this._committedValue=new Array(n.length-1).fill(qt),this.strings=n):this._committedValue=qt}commit(t,e=0){let n,o=!1;if(void 0===this.strings){if(t===Bt)return;if(o=!jt(t)||t!==this._committedValue&&t!==Bt,!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===Bt&&(i=s[t]),o=o||!jt(i)||i!==s[t],i===kt?n=kt:n!==kt&&(n=n+(i??"")+this.strings[t+1]),s[t]=i}if(!o)return}this._commitValue(n)}_commitValue(t){t===kt||null==t?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,String(t))}clear(){this.element.removeAttribute(this.name)}}class Kt extends zt{constructor(t,e){super(),this._committedValue=qt,this.element=t,this.name=e}commit(t){t!==Bt&&t!==this._committedValue&&(this._committedValue=t,this.element[this.name]=t===kt?void 0:t)}clear(){this.element[this.name]=void 0,this._committedValue=qt}}class Gt extends zt{constructor(t,e){super(),this._committedValue=qt,this.element=t,this.name=e}commit(t){if(t===Bt)return;const e=!!t&&t!==kt;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=qt}}class Qt extends zt{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=Jt(n)}else this.eventName=e}commit(t){if(t===Bt)return;if(t===kt&&(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&&!Yt(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 Jt(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=Xt(t)}return o}function Xt(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 Yt(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 Zt=Symbol("not-set");class te extends zt{constructor(t){super(),this.value=Zt,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 ee extends zt{constructor(t){super(),this.value=Zt,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 oe(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(n.__onMethods||(n.__onMethods=new Set),n.__onMethods.has(e))return;n.__onMethods.add(e),n[ne]||(n[ne]=[]);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 re(t,e){let n=0;return function(...o){const r=Date.now();r-n>=e&&(n=r,t.apply(this,o))}}const se=new Set(["scroll","focus","blur","load","unload","error","resize","abort","mouseenter","mouseleave","pointerenter","pointerleave"]);function ie(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&&ae(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=ht(r,s.debounce):s.throttle&&s.throttle>0&&(r=re(r,s.throttle));let d=null;h&&["keydown","keyup","keypress"].includes(u)&&(d=Jt(h));const m=(t=>d?e=>{Yt(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{m(t)}catch(t){console.error(`Error in event handler ${o.methodName}:`,t)}}},i=se.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.for(`snice:event-handled:${o.methodName}`),i=t=>{if(!t[r]){t[r]=!0,s.preventDefault&&t.preventDefault(),s.stopPropagation&&t.stopPropagation();try{m(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 ae(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 ce{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 le(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 ue(e,n){const r=e[u],s=e[h],i=e[f];if(void 0!==i&&i!==n)return;if(s===n&&r)return;r&&await he(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 ce;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[m]=y,await e.ready,await y.runOperation(async()=>{await l.attach(e)}),pt(l,e),Tt(l,e),ie(l,e),e.dispatchEvent(new CustomEvent("controller-attached",{detail:{name:n,controller:l}}))}async function he(t){const e=t[u],n=t[h],o=t[m];e&&(o?await o.runOperation(async()=>{await e.detach(t)}):await e.detach(t),e.element=null,wt(e),_t(e),ae(e),o&&await o.cleanup(),delete e[S],delete t[u],delete t[h],delete t[m],t.dispatchEvent(new CustomEvent("controller-detached",{detail:{name:n,controller:e}})))}function de(){if(globalThis.sniceNativeControllersInitialized)return;function t(t){if(!(t instanceof HTMLElement))return;if(t.tagName.includes("-"))return;if(t[r])return;const e=t.getAttribute("controller"),n=t[f];if(e!==n){if(!e)return delete t[f],delete t[h],void he(t).catch(t=>{console.error("Failed to detach controller from native element:",t)});t[f]=e,t.ready||(t.ready=Promise.resolve()),n&&he(t).catch(t=>{console.error("Failed to detach old controller from native element:",t)}),ue(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]:not([class*="-"])').forEach(t))})});function n(){document.querySelectorAll('[controller]:not([class*="-"])').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 me=e("context-handlers");function fe(t={}){return function(e,n){const o=n.name;return n.addInitializer(function(){const n=this.constructor;n.__contextMethods||(n.__contextMethods=new Set),n.__contextMethods.has(e)||(n.__contextMethods.add(e),n[me]||(n[me]=[]),n[me].push({methodName:o,method:e,options:t}))}),e}}function pe(t){const e=t.constructor[me];if(!e||!Array.isArray(e)||0===e.length)return;const n=t[V];if(n){t[U]=n;for(const o of e){const{methodName:e,method:r,options:s}=o,i=`__wrapped_${e}`;t[i]=function(e){if(s.once&&t[J])return;const n=()=>{if(r.call(t,e),s.once){t[J]=!0;const e=t[U];e&&"function"==typeof e[K]&&e[K](t)}};if(s.debounce)return clearTimeout(t[Q]),void(t[Q]=setTimeout(n,s.debounce));if(s.throttle){const e=Date.now();return void(e-(t[Q]||0)>=s.throttle&&(t[Q]=e,n()))}n()},"function"==typeof n[W]&&n[W](t,i)}}}const ye=new class{constructor(){this.pending=new Set,this.scheduled=!1}schedule(t,e){e.sync?be(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){be(e,e[$]||{})}}};function ge(t){const e=t[F];if(!e||0===e.length)return;const n=[...e];t[F]=[],n.forEach(t=>t())}function be(t,e,n){const o=t[P];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 ge(t));if(!Ot(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 ge(t);s&&(t.shadowRoot.innerHTML=""),s=new Ut(r),t[R]=s,t.shadowRoot.appendChild(s.renderFragment()),s.update(r.values),ge(t)}catch(t){console.error("Error rendering element:",t)}}function ve(t,e=!1){const n=t[$]||{};if(!n.once||!t[R])if(e)be(t,n);else{if(void 0!==n.debounce&&n.debounce>0)return t[D]||(t[D]={}),clearTimeout(t[D].debounce),void(t[D].debounce=setTimeout(()=>{ye.schedule(t,n)},n.debounce));if(void 0!==n.throttle&&n.throttle>0){t[D]||(t[D]={lastThrottle:0});const e=t[D],o=Date.now();if(0===e.lastThrottle||o-e.lastThrottle>=n.throttle)return e.lastThrottle=o,void ye.schedule(t,n);if(!e.throttleTimer){const r=n.throttle-(o-e.lastThrottle);e.throttleTimer=setTimeout(()=>{e.throttleTimer=null,e.lastThrottle=Date.now(),ye.schedule(t,n)},r)}return}ye.schedule(t,n)}}function we(t={}){return function(e,n){return n.name,n.addInitializer(function(){this[P]=e,this[$]=t}),function(...t){const n=e.apply(this,t);return be(this,{},n),n}}}function Ne(){return function(t,e){return e.addInitializer(function(){this[q]&&!this[j]?this[j]=[this[q]]:this[q]&&this[j]&&this[j].push(this[q]),this[q]=t}),t}}function Se(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=at(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?ue(this,t).catch(e=>{console.error(`Failed to attach controller "${t}":`,e)}):e&&he(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]){ie(this,this),Tt(this,this),pe(this);try{pt(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName} on reconnection:`,t)}return void(e&&e.call(this))}this[v]=!0;const n=t[y];if(n)for(const[t,e]of n){if(!1===e.attribute)continue;const n=at(e,t);if(!this.hasAttribute(n))continue;const o=this.getAttribute(n);ct(this,N).add(t),e.type===Boolean&&""===o&&this.setAttribute(n,"true"),this[t]=it(o,e)}if(this[b]){for(const[t,e]of Array.from(this[b].entries())){const o=n?.get(t),r=at(o||{},t);this[b].delete(t),this.hasAttribute(r)||(this[t]=e)}delete this[b]}!function(t){const e=t[q];if(e&&!t[B]){t[B]=!0;try{const n=[],o=t[j];if(o)for(const e of o){const o=e.call(t);Mt(o)&&n.push(o)}const r=e.call(t);if(!Mt(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));const s=document.createElement("style");s.textContent=n.map(t=>t.cssText).join("\n"),t.shadowRoot.appendChild(s)}catch(t){console.error("Error applying styles:",t)}}}(this),ie(this,this),Tt(this,this),pe(this),this[l]=!0,e&&e.call(this);const o=t[E];await new Promise(t=>queueMicrotask(t)),this[P]&&ve(this,!0);try{pt(this,this)}catch(t){console.error(`Error setting up observers for ${this.tagName}:`,t)}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)},t.prototype.disconnectedCallback=async function(){const e=t[A];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]&&he(this).catch(t=>{console.error("Failed to detach controller:",t)}),ae(this),_t(this),function(t){const e=t.constructor[me];if(!e||!Array.isArray(e)||0===e.length)return;for(const n of e)n.options.debounce&&t[Q]&&(clearTimeout(t[Q]),delete t[Q]),delete t[`__wrapped_${n.methodName}`];const n=t[U];n&&"function"==typeof n[K]&&n[K](t),delete t[U],delete t[J]}(this),wt(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(at(o,n).toLowerCase()!==e.toLowerCase())continue;const s=this[g]?.[n],i=it(r,o,s,void 0);if(s===i)break;ct(this,N).add(n),lt(this,g)[n]=i,this[M]?.has(e.toLowerCase())||(ut(this,t,n,s,i),this[P]&&this[l]&&ve(this));break}},t.prototype.connectedMoveCallback=async function(){const e=t[x];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[C];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 Te(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)}return o?.formAssociated&&(e.formAssociated=!0),Se(e),customElements.get(t)?(globalThis.SNICE_DEBUG&&console.warn(`[snice] "${t}" is already registered. Skipping.`),e):(customElements.define(t,e),e)}function _e(t,e){return function(n,o){return Te(t,n,o,e)}}function Ee(t){return function(e,n){return Te(t,e,n)}}function Ae(t){return function(e,n){const o=n.name;return n.metadata||(n.metadata={}),n.metadata[y]||(n.metadata[y]=new Map),n.metadata[y].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=st(e)),n[y].set(o,r);const s=`__propDef_${o}`,i=this.constructor.prototype[s];if(!i||i!==t){this.constructor.prototype[s]=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=at(r||{},o),n=this.getAttribute?.(t);if(null!==n)return it(n,r||{},void 0,e);return((r?.type||st(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)lt(this,g)[o]=t;else{const n=at(r,o),s=function(t,e,n){if(null==t||!1===t||e?.type===Y&&Array.isArray(t)&&0===t.length)return null;if(e.converter?.toAttribute)return e.converter.toAttribute(t,e.type);switch(e.type||st(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 Y:return Array.isArray(t)?Y.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);ct(this,N).add(o),ct(this,M).add(n.toLowerCase()),null===s?this.removeAttribute?.(n):this.setAttribute?.(n,s),setTimeout(()=>{this[M]?.delete(n.toLowerCase())},0)}ut(this,this.constructor,o,n,t),this[P]&&this[l]&&ve(this)}},configurable:!0,enumerable:!0};Object.defineProperty(this.constructor.prototype,o,n)}return lt(this,g)[o]=e,e}}}function xe(t){return!0===t[o]&&t.element?t.element:t}function Ce(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=xe(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 Oe(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=xe(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 Me(...t){return function(e,n){const o=n.name;n.addInitializer(function(){const n=this.constructor;if(n.__watchMethods||(n.__watchMethods=new Set),!n.__watchMethods.has(e)){n.__watchMethods.add(e),n[w]||(n[w]=new Map);for(const r of t)n[w].has(r)||n[w].set(r,[]),n[w].get(r).push({methodName:o,method:e})}})}}function ke(){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 Le(t,e,n,o,r){const s=o.name;o.addInitializer(function(){const o=this.constructor,i=`__${e}Methods`;o[i]||(o[i]=new Set),o[i].has(n)||(o[i].add(n),o[t]||(o[t]=[]),o[t].push({methodName:s,method:n,...r}))})}function Ie(){return function(t,e){Le(E,"ready",t,e)}}function Pe(){return function(t,e){Le(A,"dispose",t,e)}}function $e(t,e,n){return function(o={}){return function(r,s){Le(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 Re=$e(x,k,"moved"),De=$e(C,L,"adopted");
14
14
  /*!
15
15
  * pica-route v1.1.2
16
16
  * A pure URL pattern matching library compatible with route-parser API
17
17
  * (c) 2024
18
18
  * Released under the MIT License.
19
19
  */
20
- class De{constructor(t){this.parsed=this.parsePattern(t)}get spec(){return this.parsed.template}parsePattern(t){let e=t,n="",r=!1;const o=t.indexOf("?");return-1!==o&&(e=t.slice(0,o),n=t.slice(o+1),e.endsWith("(")&&n.endsWith(")")&&(r=!0,e=e.slice(0,-1),n=n.slice(0,-1))),{pathSegments:this.parseSegments(e),querySegments:n?this.parseQuerySegments(n):[],queryOptional:r,template:t}}parseSegments(t){const e=[];let n=0;for(;n<t.length;){switch(t[n]){case"(":const{segments:r,endIndex:o}=this.parseOptionalGroup(t,n);e.push({type:"optional",segments:r}),n=o+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,r=e+1;for(;r<t.length&&n>0;)"("===t[r]&&n++,")"===t[r]&&n--,r++;const o=t.slice(e+1,r-1);return{segments:this.parseSegments(o),endIndex:r-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 r=0;for(;r<e.length;)if(":"===e[r]){const{name:t,endIndex:o}=this.parseIdentifier(e,r+1);n.push({type:"param",name:t}),r=o}else{const{value:t,endIndex:o}=this.parseQueryLiteral(e,r);t&&n.push({type:"literal",value:t}),r=o}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 r of n)switch(r.type){case"param":case"splat":t.add(r.name);break;case"optional":e(r.segments)}};return e(this.parsed.pathSegments),e(this.parsed.querySegments),Array.from(t)}canMatchRemainingSegments(t,e,n){let r=e;for(const e of n)if("literal"===e.type){const n=t.indexOf(e.value,r);if(-1===n)return!1;r=n+e.value.length}return!0}match(t){const[e,n]=t.split("?"),r=this.matchPath(e,this.parsed.pathSegments);if(!1===r)return!1;const o=this.matchQuery(n||"",this.parsed.querySegments);if(!1===o)return!1;const s=this.getAllParamNames(),i={};for(const t of s)i[t]=void 0;return Object.assign(i,r,o),i}matchPath(t,e){const n={};let r=0;for(let o=0;o<e.length;o++){const s=e[o],i=e.slice(o+1),a=this.matchSegment(t,r,s,i);if(!1===a)return!1;Object.assign(n,a.params),r=a.nextIndex}return!(r<t.length)&&n}matchSegment(t,e,n,r=[]){switch(n.type){case"literal":return t.slice(e,e+n.value.length)===n.value&&{params:{},nextIndex:e+n.value.length};case"param":{let o=e;const s=r[0];let i,a=["/","?"];if(s&&"literal"===s.type){const n=s.value,r=t.indexOf(n,e);if(-1===r)return!1;o=r}else for(;o<t.length&&!a.includes(t[o]);)o++;if(o===e)return!1;try{i=decodeURIComponent(t.slice(e,o))}catch(n){i=t.slice(e,o)}return!(o<t.length&&"?"===t[o]&&r.length>0)&&{params:{[n.name]:i},nextIndex:o}}case"splat":{let o=t.length;const s=r[0];if(s)switch(s.type){case"literal":if("."===s.value){const n=t.indexOf(".",e);-1!==n&&(o=n)}else{const n=t.lastIndexOf(s.value);-1!==n&&n>=e&&(o=n)}break;case"param":let n=-1;for(let r=t.length-1;r>=e;r--)if("/"===t[r]){n=r;break}-1!==n&&(o=n);break;case"splat":let r=-1;for(let n=t.length-1;n>e;n--)if("/"===t[n]){r=n+1;break}if(-1!==r)o=r;else{const n=t.slice(e).split("/").filter(t=>t);o=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&&(o=n)}}const i=t.indexOf("?",e);let a;-1!==i&&i<o&&(o=i);try{a=decodeURIComponent(t.slice(e,o))}catch(n){a=t.slice(e,o)}return{params:{[n.name]:a},nextIndex:o}}case"optional":{let o=e,s={},i=!0;for(let e=0;e<n.segments.length;e++){const r=n.segments[e],a=n.segments.slice(e+1),c=this.matchSegment(t,o,r,a);if(!1===c){i=!1;break}Object.assign(s,c.params),o=c.nextIndex}if(i){if(this.canMatchRemainingSegments(t,o,r))return{params:s,nextIndex:o}}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 r=0;for(const o of e)switch(o.type){case"literal":if(t.slice(r,r+o.value.length)!==o.value)return!1;r+=o.value.length;break;case"param":{let e,s=r;for(;s<t.length&&"&"!==t[s];)s++;if(s===r)return!1;try{e=decodeURIComponent(t.slice(r,s))}catch(n){e=t.slice(r,s)}n[o.name]=e,r=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 r="";for(let o=0;o<t.length;o++){const s=t[o],i=t.slice(o+1);switch(s.type){case"literal":r+=s.value;break;case"param":case"splat":if(!(s.name in e))return!1;r+=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;r+=t}}}return r}hasLaterOptionalGroupNeedingParams(t,e,n){for(const r of t)if("optional"===r.type&&this.hasAnyParamInSegments(r.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 r=!1,o=!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]?r=!0:s=!0}const a=n||r&&!s;for(const n of t)if("optional"===n.type){this.hasAllParams(n.segments,e,a)&&(o=!0)}return!(!r||s)||(!(!o||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 Fe(t){const e={};return t.split(";").forEach(t=>{const[n,r]=t.split(":").map(t=>t.trim());n&&r&&(e[n]=r)}),e}var qe,Be;function je(t,e,n,r){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=`${r} ${n}ms ease-in-out`}function Ve(t){const e=t.window??window,n=t.document??document,r=[];let o,s,i,a=!1,c=[],l=null,u=null;const h=t.context||{},d=new rt(h,[],"",{},t.fetcher);function m(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 f(t,e,n,c,l,u){switch(r.push({route:new De(t),tag:e,transition:n,guards:c,layout:l,placard:u}),a=!1,t){case"/404":o=e;break;case"/403":s=e;break;case"/":i=e}}function p(){const t=new Set;c=r.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[J](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,r){if(!!!t)return!0;const o=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}(),r.appendChild(s)},50);try{for(const t of o){if(!await t(h,e))return v(r),!1}return!0}finally{i&&clearTimeout(i),s&&s.remove()}}async function N(t,e,n,r,o,s,i){const a=r||m(t);if(!a)return;!function(t,e,n){"function"==typeof t.update&&t.update(h,c,e,n)}(a,s,i);const l=a.querySelector('[slot="page"]');if(!(!n||!l))return e.setAttribute("slot","page"),await x(a,l,e,n),void(o&&(t.innerHTML="",t.appendChild(a)));a.querySelectorAll('[slot="page"]').forEach(t=>t.remove()),e.setAttribute("slot","page"),a.appendChild(e),o&&(t.innerHTML="",t.appendChild(a))}async function A(e,r,o,s,i,a){const c=!1===(d=s)?null:d||(t.layout?t.layout:null);var d;const{element:f,needsNewLayout:p}=function(t){if(t===l)return{element:null,needsNewLayout:!1};if(l=t,!!t){const e=Date.now();u=e;const r=n.createElement(t);return r[S]=h,r[E]=e,{element:r,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(c),y=o||t.transition;if(null!==f||null!==m(e))return await N(e,r,y,f,p,i,a),void g(0,i,a);await async function(t,e,n){const r=t.children[0];n&&r?await x(t,r,e,n):(t.innerHTML="",t.appendChild(e))}(e,r,y),g(0,i,a)}async function _(s){const a=n.querySelector(t.target);if(!a)throw new Error(`Target element not found: ${t.target}`);p(),e.scrollTo(0,0);if((""===s?.trim()||"/"===s)&&!!i){const t=r.find(t=>t.route.match("/"));if(!await w(t?.guards,{},a))return;const{element:o,transition:c,layout:l}=function(){const t=n.createElement(i);t[S]=h;const o=e.customElements.get(i),s=o?.[T],a=r.find(t=>t.route.match("/"));return{element:t,transition:s,layout:a?.layout}}();return void await A(a,o,c,l,s,{})}if(!s)return;const c=await async function(t,e){for(const o of r){const r=o.route.match(t);if(!1===r)continue;if(!await w(o.guards,r,e))return{result:Be.GUARDS_FAILED};const s=n.createElement(o.tag);s[S]=h,s[j]=d;const i=r;return Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),{result:Be.SUCCESS,element:s,transition:o.transition,layout:o.layout,routeParams:i}}return{result:Be.NOT_FOUND}}(s,a);if(c.result===Be.GUARDS_FAILED)return;if(c.result===Be.SUCCESS){const{element:t,transition:e,layout:n,routeParams:r={}}=c;return void await A(a,t,e,n,s,r)}const{element:l,transition:u,layout:m}=function(){if(o){const t=n.createElement(o);t[S]=h;const r=e.customElements.get(o),s=r?.[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,l,u,m,s,{})}async function x(t,e,n,r){return async function(t,e,n,r={}){const o=r.outDuration||300,s=r.inDuration||300,i=r.mode||"sequential",a=r.out?Fe(r.out):{opacity:"0"},c={opacity:"0"},l=r.in?Fe(r.in):{opacity:"1"},u=t.style,h=u.position,d=t.tagName.includes("-")&&t.shadowRoot;d||(u.position="relative");const m=e.hasAttribute("slot")||n.hasAttribute("slot");switch(je(e,m,o,"all"),je(n,m,s,"all"),Object.assign(n.style,c),t.appendChild(n),n.offsetHeight,i){case qe.SIMULTANEOUS:Object.assign(e.style,a),Object.assign(n.style,l),await new Promise(t=>setTimeout(t,Math.max(o,s)));break;case qe.SEQUENTIAL:Object.assign(e.style,a),await new Promise(t=>setTimeout(t,o)),Object.assign(n.style,l),await new Promise(t=>setTimeout(t,s))}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,m),Object.keys({...c,...l}).forEach(t=>{n.style[t]=""}),d||(u.position=h)}(t,e,n,r)}return{page:function(t){return function(n,r){if(r?.metadata&&r.metadata[y]){n[y]||(n[y]=new Map);for(const[t,e]of r.metadata[y])n[y].set(t,e)}Ne(n),n[T]=t.transition;const o=n.prototype.connectedCallback;n.prototype.connectedCallback=function(){this[j]=d,o?.call(this)};const s=n.prototype.disconnectedCallback;return n.prototype.disconnectedCallback=function(){s?.call(this),delete this[S],delete this[j]},e.customElements.get(t.tag)||e.customElements.define(t.tag,n),t.routes.forEach(e=>f(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&&(r.sort((t,e)=>e.route.spec.length-t.route.spec.length),a=!0),p(),function(){const r=()=>{n.querySelector(t.target)&&_(b())};switch(t.type){case"hash":e.addEventListener("hashchange",r);break;case"pushstate":e.addEventListener("popstate",r)}}(),_(b())},navigate:_,register:f}}function Ue(t,e){return function(n,r){return function(...o){this[I]||(this[I]=new Map);const s=`${t}_${r.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,o),c=n=>{if(void 0===n&&!1===e?.dispatchOnUndefined)return;const r=new CustomEvent(t,{bubbles:!0,composed:!0,...e,detail:n});this.dispatchEvent(r)},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(),r=e.throttle-(n-i.throttleLastCall);if(r<=0)return clearTimeout(i.throttleTimeout),i.throttleLastCall=n,void c(t);i.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null,c(t)},r))};return a instanceof Promise?a.then(t=>(l(t),t)):(l(a),a)}}}function ze(t,e,n){const r=[];for(const[o,s]of Object.entries(e)){const e=`@request/${o}`,i=t=>{const e=t,{discovery:r,data:i,payload:a}=e.detail;n?.passive||(e.preventDefault(),e.stopImmediatePropagation(),e.stopPropagation()),r.resolve(),Promise.resolve().then(()=>s(a)).then(t=>i.resolve(t)).catch(t=>{i.reject(t),console.error(`createRequestHandler: error in "${o}" handler:`,t)})};t.addEventListener(e,i),r.push(()=>t.removeEventListener(e,i))}return()=>{for(const t of r)t();r.length=0}}!function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(qe||(qe={})),function(t){t.SUCCESS="success",t.GUARDS_FAILED="guards-failed",t.NOT_FOUND="not-found"}(Be||(Be={}));let He=!1;function We(t){He=t}async function Ke(t,e=500){if(customElements.get(t))return;let n=null;He||(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 Ge(t,e=500){const n=t.tagName.toLowerCase();await Ke(n,e),"ready"in t&&"function"==typeof t.ready?.then&&await t.ready}async function Qe(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=>Ge(t,e)))}async function*Je(t){for(;;)await new Promise(e=>{t[F]||(t[F]=[]),t[F].push(e)}),yield}const Xe=e("debounce-timers"),Ye=e("throttle-timers"),Ze=e("once-called"),tn=e("memoize-cache");function en(t=300,e={}){const{leading:n=!1,trailing:r=!0,maxWait:o}=e;return function(e,s){const i=s.name;return function(...s){this[Xe]||(this[Xe]={});const a=this[Xe],c=i;a[c]&&clearTimeout(a[c].timeout);const l=Date.now(),u=!a[c],h=u?l:a[c].startTime,d=void 0!==o&&l-h>=o;if(n&&u){const t=e.apply(this,s);return a[c]={timeout:null,startTime:h,lastArgs:s},t}const m=setTimeout(()=>{(r||d)&&e.apply(this,a[c].lastArgs),delete a[c]},d?0:t);a[c]={timeout:m,startTime:h,lastArgs:s}}}}function nn(t=300,e={}){const{leading:n=!0,trailing:r=!0}=e;return function(e,o){const s=o.name;return function(...o){this[Ye]||(this[Ye]={});const i=this[Ye],a=s,c=Date.now();if(!i[a])return n&&e.apply(this,o),i[a]={lastInvoke:c,timeout:null,lastArgs:o},void(r&&!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=o,i[a].timeout&&clearTimeout(i[a].timeout),l>=t)return e.apply(this,o),void(i[a].lastInvoke=c);if(r){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 rn(t=!0){let e,n=!1;return function(r,o){const s=o.name;return function(...o){return t?(this[Ze]||(this[Ze]={}),this[Ze][s]||(this[Ze][s]={called:!0,result:r.apply(this,o)}),this[Ze][s].result):(n||(n=!0,e=r.apply(this,o)),e)}}}function on(t={}){const{keyGenerator:e=(...t)=>JSON.stringify(t),maxSize:n=100,ttl:r}=t;return function(t,o){const s=o.name;return function(...o){this[tn]||(this[tn]={}),this[tn][s]||(this[tn][s]=new Map);const i=this[tn][s],a=e(...o);if(i.has(a)){const t=i.get(a);if(!(void 0!==r&&Date.now()-t.timestamp>r))return t.value;i.delete(a)}const c=t.apply(this,o);if(i.set(a,{value:c,timestamp:Date.now()}),i.size>n){const t=i.keys().next().value;i.delete(t)}return c}}}function sn(t){if(t[Xe]){for(const e in t[Xe])t[Xe][e]?.timeout&&clearTimeout(t[Xe][e].timeout);t[Xe]={}}}function an(t){if(t[Ye]){for(const e in t[Ye])t[Ye][e]?.timeout&&clearTimeout(t[Ye][e].timeout);t[Ye]={}}}function cn(t,e){t[tn]&&(e?delete t[tn][e]:t[tn]={})}function ln(t,e){t[Ze]&&(e?delete t[Ze][e]:t[Ze]={})}class un{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,r){const o=new Request(t,r);let s=0;const i=async()=>{if(s<e.length){return e[s++].call(this,o,i)}const t=await fetch(o);let r=0;const a=async()=>{if(r<n.length){return n[r++].call(this,t,a)}return t};return a()};return i()}.bind(t)}}
20
+ class Fe{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 qe(t){const e={};return t.split(";").forEach(t=>{const[n,o]=t.split(":").map(t=>t.trim());n&&o&&(e[n]=o)}),e}var Be,je;function Ve(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`}function Ue(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 rt(h,[],"",{},t.fetcher);function m(t){if(!l||!u)return null;const e=t.querySelectorAll(l);for(const t of e){if(t[_]===u)return t}return null}function f(t,e,n,c,l,u){switch(o.push({route:new Fe(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[X](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){const a=o||m(t);if(!a)return;!function(t,e,n){"function"==typeof t.update&&t.update(h,c,e,n)}(a,s,i);const l=a.querySelector('[slot="page"]');if(!(!n||!l))return e.setAttribute("slot","page"),await x(a,l,e,n),void(r&&(t.innerHTML="",t.appendChild(a)));a.querySelectorAll('[slot="page"]').forEach(t=>t.remove()),e.setAttribute("slot","page"),a.appendChild(e),r&&(t.innerHTML="",t.appendChild(a))}async function E(e,o,r,s,i,a){const c=!1===(d=s)?null:d||(t.layout?t.layout:null);var d;const{element:f,needsNewLayout:p}=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,{element:o,needsNewLayout:!0}}return u=null,{element:null,needsNewLayout:!0}}(c),y=r||t.transition;if(null!==f||null!==m(e))return await N(e,o,y,f,p,i,a),void g(0,i,a);await async function(t,e,n){const o=t.children[0];n&&o?await x(t,o,e,n):(t.innerHTML="",t.appendChild(e))}(e,o,y),g(0,i,a)}async function A(s){const a=n.querySelector(t.target);if(!a)throw new Error(`Target element not found: ${t.target}`);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;const{element:r,transition:c,layout:l}=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 E(a,r,c,l,s,{})}if(!s)return;const c=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:je.GUARDS_FAILED};const s=n.createElement(r.tag);s[S]=h,s[V]=d;const i=o;return Object.keys(i).forEach(t=>s.setAttribute(t,i[t])),{result:je.SUCCESS,element:s,transition:r.transition,layout:r.layout,routeParams:i}}return{result:je.NOT_FOUND}}(s,a);if(c.result===je.GUARDS_FAILED)return;if(c.result===je.SUCCESS){const{element:t,transition:e,layout:n,routeParams:o={}}=c;return void await E(a,t,e,n,s,o)}const{element:l,transition:u,layout:m}=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 E(a,l,u,m,s,{})}async function x(t,e,n,o){return async function(t,e,n,o={}){const r=o.outDuration||300,s=o.inDuration||300,i=o.mode||"sequential",a=o.out?qe(o.out):{opacity:"0"},c={opacity:"0"},l=o.in?qe(o.in):{opacity:"1"},u=t.style,h=u.position,d=t.tagName.includes("-")&&t.shadowRoot;d||(u.position="relative");const m=e.hasAttribute("slot")||n.hasAttribute("slot");switch(Ve(e,m,r,"all"),Ve(n,m,s,"all"),Object.assign(n.style,c),t.appendChild(n),n.offsetHeight,i){case Be.SIMULTANEOUS:Object.assign(e.style,a),Object.assign(n.style,l),await new Promise(t=>setTimeout(t,Math.max(r,s)));break;case Be.SEQUENTIAL:Object.assign(e.style,a),await new Promise(t=>setTimeout(t,r)),Object.assign(n.style,l),await new Promise(t=>setTimeout(t,s))}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,m),Object.keys({...c,...l}).forEach(t=>{n.style[t]=""}),d||(u.position=h)}(t,e,n,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)}Se(n),n[T]=t.transition;const r=n.prototype.connectedCallback;n.prototype.connectedCallback=function(){this[V]=d,r?.call(this)};const s=n.prototype.disconnectedCallback;return n.prototype.disconnectedCallback=function(){s?.call(this),delete this[S],delete this[V]},e.customElements.get(t.tag)||e.customElements.define(t.tag,n),t.routes.forEach(e=>f(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)&&A(b())};switch(t.type){case"hash":e.addEventListener("hashchange",o);break;case"pushstate":e.addEventListener("popstate",o)}}(),A(b())},navigate:A,register:f}}function ze(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.throttleTimeout||(i.throttleTimeout=setTimeout(()=>{i.throttleLastCall=Date.now(),i.throttleTimeout=null,c(t)},o))};return a instanceof Promise?a.then(t=>(l(t),t)):(l(a),a)}}}function He(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.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(Be||(Be={})),function(t){t.SUCCESS="success",t.GUARDS_FAILED="guards-failed",t.NOT_FOUND="not-found"}(je||(je={}));let We=!1;function Ke(t){We=t}async function Ge(t,e=500){if(customElements.get(t))return;let n=null;We||(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 Qe(t,e=500){const n=t.tagName.toLowerCase();await Ge(n,e),"ready"in t&&"function"==typeof t.ready?.then&&await t.ready}async function Je(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=>Qe(t,e)))}async function*Xe(t){for(;;)await new Promise(e=>{t[F]||(t[F]=[]),t[F].push(e)}),yield}const Ye=e("debounce-timers"),Ze=e("throttle-timers"),tn=e("once-called"),en=e("memoize-cache");function nn(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[Ye]||(this[Ye]={});const a=this[Ye],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 m=setTimeout(()=>{(o||d)&&e.apply(this,a[c].lastArgs),delete a[c]},d?0:t);a[c]={timeout:m,startTime:h,lastArgs:s}}}}function on(t=300,e={}){const{leading:n=!0,trailing:o=!0}=e;return function(e,r){const s=r.name;return function(...r){this[Ze]||(this[Ze]={});const i=this[Ze],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 rn(t=!0){let e,n=!1;return function(o,r){const s=r.name;return function(...r){return t?(this[tn]||(this[tn]={}),this[tn][s]||(this[tn][s]={called:!0,result:o.apply(this,r)}),this[tn][s].result):(n||(n=!0,e=o.apply(this,r)),e)}}}function sn(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[en]||(this[en]={}),this[en][s]||(this[en][s]=new Map);const i=this[en][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 an(t){if(t[Ye]){for(const e in t[Ye])t[Ye][e]?.timeout&&clearTimeout(t[Ye][e].timeout);t[Ye]={}}}function cn(t){if(t[Ze]){for(const e in t[Ze])t[Ze][e]?.timeout&&clearTimeout(t[Ze][e].timeout);t[Ze]={}}}function ln(t,e){t[en]&&(e?delete t[en][e]:t[en]={})}function un(t,e){t[tn]&&(e?delete t[tn][e]:t[tn]={})}class hn{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)}}
21
21
  /*!
22
- * snice v4.35.0
22
+ * snice v4.35.1
23
23
  * 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.
24
24
  * (c) 2024
25
25
  * Released under the MIT License.
26
26
  */
27
- var hn;"undefined"!=typeof document&&ue(),
27
+ var dn;"undefined"!=typeof document&&de(),
28
28
  /*!
29
- * snice v4.35.0
29
+ * snice v4.35.1
30
30
  * 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.
31
31
  * (c) 2024
32
32
  * Released under the MIT License.
33
33
  */
34
- globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0}),function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(hn||(hn={}));export{rt as Context,un as ContextAwareFetcher,r as IS_CONTROLLER_INSTANCE,Ve as Router,X as SimpleArray,Re as adopted,Ne as applyElementFunctionality,sn as clearDebounceTimers,cn as clearMemoizeCache,an as clearThrottleTimers,de as context,ke as contextProperty,ae as controller,ze as createRequestHandler,xt as css,en as debounce,Ue as dispatch,Ie as dispose,Te as element,e as getSymbol,_t as html,Ee as layout,on as memoize,Pe as moved,Ft as noChange,Ot as nothing,mt as observe,ee as on,rn as once,Ae as property,xe as query,Ce as queryAll,$e as ready,be as render,wt as request,ln as resetOnce,Nt as respond,We as setDisableElementReadyWarnings,ve as styles,nn as throttle,Je as trackRenders,Lt as unsafeHTML,ue as useNativeElementControllers,Qe as waitForAllCustomElements,Ke as waitForElementDefined,Ge as waitForElementReady,Oe as watch};
34
+ globalThis.snice||(globalThis.snice={controllerRegistry:new Map,controllerIdCounter:0}),function(t){t.SEQUENTIAL="sequential",t.SIMULTANEOUS="simultaneous"}(dn||(dn={}));export{rt as Context,hn as ContextAwareFetcher,o as IS_CONTROLLER_INSTANCE,Ue as Router,Y as SimpleArray,De as adopted,Se as applyElementFunctionality,an as clearDebounceTimers,ln as clearMemoizeCache,cn as clearThrottleTimers,fe as context,ke as contextProperty,le as controller,He as createRequestHandler,Ct as css,nn as debounce,ze as dispatch,Pe as dispose,_e as element,e as getSymbol,xt as html,Ee as layout,sn as memoize,Re as moved,Bt as noChange,kt as nothing,ft as observe,oe as on,rn as once,Ae as property,Ce as query,Oe as queryAll,Ie as ready,we as render,Nt as request,un as resetOnce,St as respond,Ke as setDisableElementReadyWarnings,Ne as styles,on as throttle,Xe as trackRenders,It as unsafeHTML,de as useNativeElementControllers,Je as waitForAllCustomElements,Ge as waitForElementDefined,Qe as waitForElementReady,Me as watch};
35
35
  //# sourceMappingURL=snice-runtime.esm.min.js.map