snice 4.27.0 → 4.28.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 (298) hide show
  1. package/dist/cdn/accordion/snice-accordion.js +1 -1
  2. package/dist/cdn/accordion/snice-accordion.min.js +1 -1
  3. package/dist/cdn/activity-feed/snice-activity-feed.js +1 -1
  4. package/dist/cdn/activity-feed/snice-activity-feed.min.js +1 -1
  5. package/dist/cdn/alert/snice-alert.js +1 -1
  6. package/dist/cdn/alert/snice-alert.min.js +1 -1
  7. package/dist/cdn/app-tiles/snice-app-tiles.js +1 -1
  8. package/dist/cdn/app-tiles/snice-app-tiles.min.js +1 -1
  9. package/dist/cdn/approval-flow/snice-approval-flow.js +1 -1
  10. package/dist/cdn/approval-flow/snice-approval-flow.min.js +1 -1
  11. package/dist/cdn/audio-recorder/snice-audio-recorder.js +1 -1
  12. package/dist/cdn/audio-recorder/snice-audio-recorder.min.js +1 -1
  13. package/dist/cdn/availability/snice-availability.js +1 -1
  14. package/dist/cdn/availability/snice-availability.min.js +1 -1
  15. package/dist/cdn/avatar/snice-avatar.js +1 -1
  16. package/dist/cdn/avatar/snice-avatar.min.js +1 -1
  17. package/dist/cdn/avatar-group/snice-avatar-group.js +1 -1
  18. package/dist/cdn/avatar-group/snice-avatar-group.min.js +1 -1
  19. package/dist/cdn/badge/snice-badge.js +2 -2
  20. package/dist/cdn/badge/snice-badge.js.map +1 -1
  21. package/dist/cdn/badge/snice-badge.min.js +2 -2
  22. package/dist/cdn/badge/snice-badge.min.js.map +1 -1
  23. package/dist/cdn/banner/snice-banner.js +1 -1
  24. package/dist/cdn/banner/snice-banner.min.js +1 -1
  25. package/dist/cdn/book/snice-book.js +1 -1
  26. package/dist/cdn/book/snice-book.min.js +1 -1
  27. package/dist/cdn/booking/snice-booking.js +1 -1
  28. package/dist/cdn/booking/snice-booking.min.js +1 -1
  29. package/dist/cdn/breadcrumbs/snice-breadcrumbs.js +1 -1
  30. package/dist/cdn/breadcrumbs/snice-breadcrumbs.min.js +1 -1
  31. package/dist/cdn/button/snice-button.js +11 -10
  32. package/dist/cdn/button/snice-button.js.map +1 -1
  33. package/dist/cdn/button/snice-button.min.js +3 -3
  34. package/dist/cdn/button/snice-button.min.js.map +1 -1
  35. package/dist/cdn/calendar/snice-calendar.js +1 -1
  36. package/dist/cdn/calendar/snice-calendar.min.js +1 -1
  37. package/dist/cdn/camera/snice-camera.js +1 -1
  38. package/dist/cdn/camera/snice-camera.min.js +1 -1
  39. package/dist/cdn/camera-annotate/snice-camera-annotate.js +1 -1
  40. package/dist/cdn/camera-annotate/snice-camera-annotate.min.js +1 -1
  41. package/dist/cdn/candlestick/snice-candlestick.js +1 -1
  42. package/dist/cdn/candlestick/snice-candlestick.min.js +1 -1
  43. package/dist/cdn/card/snice-card.js +1 -1
  44. package/dist/cdn/card/snice-card.min.js +1 -1
  45. package/dist/cdn/carousel/snice-carousel.js +1 -1
  46. package/dist/cdn/carousel/snice-carousel.min.js +1 -1
  47. package/dist/cdn/cart/snice-cart.js +1 -1
  48. package/dist/cdn/cart/snice-cart.min.js +1 -1
  49. package/dist/cdn/chart/snice-chart.js +1 -1
  50. package/dist/cdn/chart/snice-chart.min.js +1 -1
  51. package/dist/cdn/chat/snice-chat.js +1 -1
  52. package/dist/cdn/chat/snice-chat.min.js +1 -1
  53. package/dist/cdn/checkbox/snice-checkbox.js +1 -1
  54. package/dist/cdn/checkbox/snice-checkbox.min.js +1 -1
  55. package/dist/cdn/chip/snice-chip.js +1 -1
  56. package/dist/cdn/chip/snice-chip.min.js +1 -1
  57. package/dist/cdn/code-block/snice-code-block.js +1 -1
  58. package/dist/cdn/code-block/snice-code-block.min.js +1 -1
  59. package/dist/cdn/color-display/snice-color-display.js +1 -1
  60. package/dist/cdn/color-display/snice-color-display.min.js +1 -1
  61. package/dist/cdn/color-picker/snice-color-picker.js +1 -1
  62. package/dist/cdn/color-picker/snice-color-picker.min.js +1 -1
  63. package/dist/cdn/command-palette/snice-command-palette.js +1 -1
  64. package/dist/cdn/command-palette/snice-command-palette.min.js +1 -1
  65. package/dist/cdn/comments/snice-comments.js +1 -1
  66. package/dist/cdn/comments/snice-comments.min.js +1 -1
  67. package/dist/cdn/countdown/snice-countdown.js +1 -1
  68. package/dist/cdn/countdown/snice-countdown.min.js +1 -1
  69. package/dist/cdn/cropper/snice-cropper.js +1 -1
  70. package/dist/cdn/cropper/snice-cropper.min.js +1 -1
  71. package/dist/cdn/data-card/snice-data-card.js +1 -1
  72. package/dist/cdn/data-card/snice-data-card.min.js +1 -1
  73. package/dist/cdn/date-picker/snice-date-picker.js +1 -1
  74. package/dist/cdn/date-picker/snice-date-picker.min.js +1 -1
  75. package/dist/cdn/date-range-picker/snice-date-range-picker.js +1 -1
  76. package/dist/cdn/date-range-picker/snice-date-range-picker.min.js +1 -1
  77. package/dist/cdn/date-time-picker/snice-date-time-picker.js +1 -1
  78. package/dist/cdn/date-time-picker/snice-date-time-picker.min.js +1 -1
  79. package/dist/cdn/diff/snice-diff.js +1 -1
  80. package/dist/cdn/diff/snice-diff.min.js +1 -1
  81. package/dist/cdn/divider/snice-divider.js +1 -1
  82. package/dist/cdn/divider/snice-divider.min.js +1 -1
  83. package/dist/cdn/doc/snice-doc.js +1 -1
  84. package/dist/cdn/doc/snice-doc.min.js +1 -1
  85. package/dist/cdn/draw/snice-draw.js +1 -1
  86. package/dist/cdn/draw/snice-draw.min.js +1 -1
  87. package/dist/cdn/drawer/snice-drawer.js +1 -1
  88. package/dist/cdn/drawer/snice-drawer.min.js +1 -1
  89. package/dist/cdn/empty-state/snice-empty-state.js +1 -1
  90. package/dist/cdn/empty-state/snice-empty-state.min.js +1 -1
  91. package/dist/cdn/estimate/snice-estimate.js +1 -1
  92. package/dist/cdn/estimate/snice-estimate.min.js +1 -1
  93. package/dist/cdn/file-gallery/snice-file-gallery.js +1 -1
  94. package/dist/cdn/file-gallery/snice-file-gallery.min.js +1 -1
  95. package/dist/cdn/file-upload/snice-file-upload.js +1 -1
  96. package/dist/cdn/file-upload/snice-file-upload.min.js +1 -1
  97. package/dist/cdn/flip-card/snice-flip-card.js +1 -1
  98. package/dist/cdn/flip-card/snice-flip-card.min.js +1 -1
  99. package/dist/cdn/flow/snice-flow.js +1 -1
  100. package/dist/cdn/flow/snice-flow.min.js +1 -1
  101. package/dist/cdn/form-layout/snice-form-layout.js +1 -1
  102. package/dist/cdn/form-layout/snice-form-layout.min.js +1 -1
  103. package/dist/cdn/funnel/snice-funnel.js +1 -1
  104. package/dist/cdn/funnel/snice-funnel.min.js +1 -1
  105. package/dist/cdn/gantt/snice-gantt.js +1 -1
  106. package/dist/cdn/gantt/snice-gantt.min.js +1 -1
  107. package/dist/cdn/gauge/snice-gauge.js +1 -1
  108. package/dist/cdn/gauge/snice-gauge.min.js +1 -1
  109. package/dist/cdn/heatmap/snice-heatmap.js +1 -1
  110. package/dist/cdn/heatmap/snice-heatmap.min.js +1 -1
  111. package/dist/cdn/image/snice-image.js +1 -1
  112. package/dist/cdn/image/snice-image.min.js +1 -1
  113. package/dist/cdn/input/snice-input.js +1 -1
  114. package/dist/cdn/input/snice-input.min.js +1 -1
  115. package/dist/cdn/invoice/snice-invoice.js +1 -1
  116. package/dist/cdn/invoice/snice-invoice.min.js +1 -1
  117. package/dist/cdn/kanban/snice-kanban.js +1 -1
  118. package/dist/cdn/kanban/snice-kanban.min.js +1 -1
  119. package/dist/cdn/key-value/snice-key-value.js +1 -1
  120. package/dist/cdn/key-value/snice-key-value.min.js +1 -1
  121. package/dist/cdn/kpi/snice-kpi.js +1 -1
  122. package/dist/cdn/kpi/snice-kpi.min.js +1 -1
  123. package/dist/cdn/layout/snice-layout.js +1 -1
  124. package/dist/cdn/layout/snice-layout.min.js +1 -1
  125. package/dist/cdn/leaderboard/snice-leaderboard.js +1 -1
  126. package/dist/cdn/leaderboard/snice-leaderboard.min.js +1 -1
  127. package/dist/cdn/link/snice-link.js +1 -1
  128. package/dist/cdn/link/snice-link.min.js +1 -1
  129. package/dist/cdn/link-preview/snice-link-preview.js +1 -1
  130. package/dist/cdn/link-preview/snice-link-preview.min.js +1 -1
  131. package/dist/cdn/list/snice-list.js +1 -1
  132. package/dist/cdn/list/snice-list.min.js +1 -1
  133. package/dist/cdn/location/snice-location.js +1 -1
  134. package/dist/cdn/location/snice-location.min.js +1 -1
  135. package/dist/cdn/login/snice-login.js +11 -10
  136. package/dist/cdn/login/snice-login.js.map +1 -1
  137. package/dist/cdn/login/snice-login.min.js +5 -5
  138. package/dist/cdn/login/snice-login.min.js.map +1 -1
  139. package/dist/cdn/map/snice-map.js +1 -1
  140. package/dist/cdn/map/snice-map.min.js +1 -1
  141. package/dist/cdn/markdown/snice-markdown.js +1 -1
  142. package/dist/cdn/markdown/snice-markdown.min.js +1 -1
  143. package/dist/cdn/masonry/snice-masonry.js +1 -1
  144. package/dist/cdn/masonry/snice-masonry.min.js +1 -1
  145. package/dist/cdn/menu/snice-menu.js +1 -1
  146. package/dist/cdn/menu/snice-menu.min.js +1 -1
  147. package/dist/cdn/message-strip/snice-message-strip.js +1 -1
  148. package/dist/cdn/message-strip/snice-message-strip.min.js +1 -1
  149. package/dist/cdn/metric-table/snice-metric-table.js +1 -1
  150. package/dist/cdn/metric-table/snice-metric-table.min.js +1 -1
  151. package/dist/cdn/modal/snice-modal.js +1 -1
  152. package/dist/cdn/modal/snice-modal.min.js +1 -1
  153. package/dist/cdn/music-player/snice-music-player.js +1 -1
  154. package/dist/cdn/music-player/snice-music-player.min.js +1 -1
  155. package/dist/cdn/nav/snice-nav.js +1 -1
  156. package/dist/cdn/nav/snice-nav.min.js +1 -1
  157. package/dist/cdn/network-graph/snice-network-graph.js +1 -1
  158. package/dist/cdn/network-graph/snice-network-graph.min.js +1 -1
  159. package/dist/cdn/notification-center/snice-notification-center.js +1 -1
  160. package/dist/cdn/notification-center/snice-notification-center.min.js +1 -1
  161. package/dist/cdn/order-tracker/snice-order-tracker.js +1 -1
  162. package/dist/cdn/order-tracker/snice-order-tracker.min.js +1 -1
  163. package/dist/cdn/org-chart/snice-org-chart.js +1 -1
  164. package/dist/cdn/org-chart/snice-org-chart.min.js +1 -1
  165. package/dist/cdn/pagination/snice-pagination.js +1 -1
  166. package/dist/cdn/pagination/snice-pagination.min.js +1 -1
  167. package/dist/cdn/paint/snice-paint.js +1 -1
  168. package/dist/cdn/paint/snice-paint.min.js +1 -1
  169. package/dist/cdn/pdf-viewer/snice-pdf-viewer.js +1 -1
  170. package/dist/cdn/pdf-viewer/snice-pdf-viewer.min.js +1 -1
  171. package/dist/cdn/permission-matrix/snice-permission-matrix.js +1 -1
  172. package/dist/cdn/permission-matrix/snice-permission-matrix.min.js +1 -1
  173. package/dist/cdn/podcast-player/snice-podcast-player.js +1 -1
  174. package/dist/cdn/podcast-player/snice-podcast-player.min.js +1 -1
  175. package/dist/cdn/pricing-table/snice-pricing-table.js +1 -1
  176. package/dist/cdn/pricing-table/snice-pricing-table.min.js +1 -1
  177. package/dist/cdn/product-card/snice-product-card.js +1 -1
  178. package/dist/cdn/product-card/snice-product-card.min.js +1 -1
  179. package/dist/cdn/progress/snice-progress.js +1 -1
  180. package/dist/cdn/progress/snice-progress.min.js +1 -1
  181. package/dist/cdn/progress-ring/snice-progress-ring.js +1 -1
  182. package/dist/cdn/progress-ring/snice-progress-ring.min.js +1 -1
  183. package/dist/cdn/qr-code/snice-qr-code.js +1 -1
  184. package/dist/cdn/qr-code/snice-qr-code.min.js +1 -1
  185. package/dist/cdn/qr-reader/snice-qr-reader.js +1 -1
  186. package/dist/cdn/qr-reader/snice-qr-reader.min.js +1 -1
  187. package/dist/cdn/radio/snice-radio.js +1 -1
  188. package/dist/cdn/radio/snice-radio.min.js +1 -1
  189. package/dist/cdn/range-slider/snice-range-slider.js +1 -1
  190. package/dist/cdn/range-slider/snice-range-slider.min.js +1 -1
  191. package/dist/cdn/rating/snice-rating.js +1 -1
  192. package/dist/cdn/rating/snice-rating.min.js +1 -1
  193. package/dist/cdn/receipt/snice-receipt.js +1 -1
  194. package/dist/cdn/receipt/snice-receipt.min.js +1 -1
  195. package/dist/cdn/recipe/snice-recipe.js +1 -1
  196. package/dist/cdn/recipe/snice-recipe.min.js +1 -1
  197. package/dist/cdn/runtime/README.md +2 -2
  198. package/dist/cdn/runtime/snice-runtime.esm.js +83 -61
  199. package/dist/cdn/runtime/snice-runtime.esm.js.map +1 -1
  200. package/dist/cdn/runtime/snice-runtime.esm.min.js +7 -7
  201. package/dist/cdn/runtime/snice-runtime.esm.min.js.map +1 -1
  202. package/dist/cdn/runtime/snice-runtime.js +83 -61
  203. package/dist/cdn/runtime/snice-runtime.js.map +1 -1
  204. package/dist/cdn/runtime/snice-runtime.min.js +7 -7
  205. package/dist/cdn/runtime/snice-runtime.min.js.map +1 -1
  206. package/dist/cdn/sankey/snice-sankey.js +1 -1
  207. package/dist/cdn/sankey/snice-sankey.min.js +1 -1
  208. package/dist/cdn/segmented-control/snice-segmented-control.js +1 -1
  209. package/dist/cdn/segmented-control/snice-segmented-control.min.js +1 -1
  210. package/dist/cdn/select/snice-select.js +1 -1
  211. package/dist/cdn/select/snice-select.min.js +1 -1
  212. package/dist/cdn/skeleton/snice-skeleton.js +1 -1
  213. package/dist/cdn/skeleton/snice-skeleton.min.js +1 -1
  214. package/dist/cdn/slider/snice-slider.js +1 -1
  215. package/dist/cdn/slider/snice-slider.min.js +1 -1
  216. package/dist/cdn/sortable/snice-sortable.js +1 -1
  217. package/dist/cdn/sortable/snice-sortable.min.js +1 -1
  218. package/dist/cdn/sparkline/snice-sparkline.js +1 -1
  219. package/dist/cdn/sparkline/snice-sparkline.min.js +1 -1
  220. package/dist/cdn/spinner/snice-spinner.js +1 -1
  221. package/dist/cdn/spinner/snice-spinner.min.js +1 -1
  222. package/dist/cdn/split-button/snice-split-button.js +1 -1
  223. package/dist/cdn/split-button/snice-split-button.min.js +1 -1
  224. package/dist/cdn/split-pane/snice-split-pane.js +1 -1
  225. package/dist/cdn/split-pane/snice-split-pane.min.js +1 -1
  226. package/dist/cdn/spotlight/snice-spotlight.js +1 -1
  227. package/dist/cdn/spotlight/snice-spotlight.min.js +1 -1
  228. package/dist/cdn/spreadsheet/snice-spreadsheet.js +1 -1
  229. package/dist/cdn/spreadsheet/snice-spreadsheet.min.js +1 -1
  230. package/dist/cdn/stat-group/snice-stat-group.js +1 -1
  231. package/dist/cdn/stat-group/snice-stat-group.min.js +1 -1
  232. package/dist/cdn/step-input/snice-step-input.js +1 -1
  233. package/dist/cdn/step-input/snice-step-input.min.js +1 -1
  234. package/dist/cdn/stepper/snice-stepper.js +1 -1
  235. package/dist/cdn/stepper/snice-stepper.min.js +1 -1
  236. package/dist/cdn/switch/snice-switch.js +1 -1
  237. package/dist/cdn/switch/snice-switch.min.js +1 -1
  238. package/dist/cdn/table/snice-table.js +11 -10
  239. package/dist/cdn/table/snice-table.js.map +1 -1
  240. package/dist/cdn/table/snice-table.min.js +73 -73
  241. package/dist/cdn/table/snice-table.min.js.map +1 -1
  242. package/dist/cdn/tabs/snice-tabs.js +1 -1
  243. package/dist/cdn/tabs/snice-tabs.min.js +1 -1
  244. package/dist/cdn/tag/snice-tag.js +1 -1
  245. package/dist/cdn/tag/snice-tag.min.js +1 -1
  246. package/dist/cdn/tag-input/snice-tag-input.js +1 -1
  247. package/dist/cdn/tag-input/snice-tag-input.min.js +1 -1
  248. package/dist/cdn/terminal/snice-terminal.js +1 -1
  249. package/dist/cdn/terminal/snice-terminal.min.js +1 -1
  250. package/dist/cdn/testimonial/snice-testimonial.js +1 -1
  251. package/dist/cdn/testimonial/snice-testimonial.min.js +1 -1
  252. package/dist/cdn/textarea/snice-textarea.js +1 -1
  253. package/dist/cdn/textarea/snice-textarea.min.js +1 -1
  254. package/dist/cdn/time-picker/snice-time-picker.js +1 -1
  255. package/dist/cdn/time-picker/snice-time-picker.min.js +1 -1
  256. package/dist/cdn/time-range-picker/snice-time-range-picker.js +1 -1
  257. package/dist/cdn/time-range-picker/snice-time-range-picker.min.js +1 -1
  258. package/dist/cdn/timeline/snice-timeline.js +1 -1
  259. package/dist/cdn/timeline/snice-timeline.min.js +1 -1
  260. package/dist/cdn/timer/snice-timer.js +1 -1
  261. package/dist/cdn/timer/snice-timer.min.js +1 -1
  262. package/dist/cdn/toast/snice-toast.js +1 -1
  263. package/dist/cdn/toast/snice-toast.min.js +1 -1
  264. package/dist/cdn/tooltip/snice-tooltip.js +1 -1
  265. package/dist/cdn/tooltip/snice-tooltip.min.js +1 -1
  266. package/dist/cdn/tree/snice-tree.js +1 -1
  267. package/dist/cdn/tree/snice-tree.min.js +1 -1
  268. package/dist/cdn/treemap/snice-treemap.js +1 -1
  269. package/dist/cdn/treemap/snice-treemap.min.js +1 -1
  270. package/dist/cdn/user-card/snice-user-card.js +1 -1
  271. package/dist/cdn/user-card/snice-user-card.min.js +1 -1
  272. package/dist/cdn/video-player/snice-video-player.js +1 -1
  273. package/dist/cdn/video-player/snice-video-player.min.js +1 -1
  274. package/dist/cdn/virtual-scroller/snice-virtual-scroller.js +1 -1
  275. package/dist/cdn/virtual-scroller/snice-virtual-scroller.min.js +1 -1
  276. package/dist/cdn/waterfall/snice-waterfall.js +1 -1
  277. package/dist/cdn/waterfall/snice-waterfall.min.js +1 -1
  278. package/dist/cdn/weather/snice-weather.js +1 -1
  279. package/dist/cdn/weather/snice-weather.min.js +1 -1
  280. package/dist/cdn/work-order/snice-work-order.js +1 -1
  281. package/dist/cdn/work-order/snice-work-order.min.js +1 -1
  282. package/dist/components/badge/snice-badge.js +1 -1
  283. package/dist/components/badge/snice-badge.js.map +1 -1
  284. package/dist/components/button/snice-button.d.ts +2 -2
  285. package/dist/components/button/snice-button.js +11 -10
  286. package/dist/components/button/snice-button.js.map +1 -1
  287. package/dist/index.cjs +80 -58
  288. package/dist/index.cjs.map +1 -1
  289. package/dist/index.esm.js +80 -58
  290. package/dist/index.esm.js.map +1 -1
  291. package/dist/index.iife.js +80 -58
  292. package/dist/index.iife.js.map +1 -1
  293. package/dist/parts.d.ts +9 -7
  294. package/dist/symbols.cjs +1 -1
  295. package/dist/symbols.esm.js +1 -1
  296. package/dist/transitions.cjs +1 -1
  297. package/dist/transitions.esm.js +1 -1
  298. package/package.json +20 -10
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * snice v4.27.0
2
+ * snice v4.28.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.26.2
8
+ * snice v4.27.0
9
9
  * A decorator-driven web component library with differential rendering, routing, controllers, and 130+ ready-made UI components. Use as much or as little as you want. Zero dependencies, works anywhere.
10
10
  * (c) 2024
11
11
  * Released under the MIT License.
@@ -2065,9 +2065,20 @@ class ConditionalIfPart extends Part {
2065
2065
  constructor(ifElement) {
2066
2066
  super();
2067
2067
  this.value = NOT_SET;
2068
- this.fragment = null;
2069
- this.ifElement = ifElement;
2070
- this.ifElement.style.display = 'contents';
2068
+ this.childFragment = null;
2069
+ const parent = ifElement.parentNode;
2070
+ // Create comment boundary markers
2071
+ this.startNode = document.createComment('if');
2072
+ this.endNode = document.createComment('/if');
2073
+ // Insert markers where <if> is
2074
+ parent.insertBefore(this.startNode, ifElement);
2075
+ parent.insertBefore(this.endNode, ifElement.nextSibling);
2076
+ // Move <if>'s children between the markers
2077
+ while (ifElement.firstChild) {
2078
+ parent.insertBefore(ifElement.firstChild, this.endNode);
2079
+ }
2080
+ // Remove the <if> element from DOM
2081
+ parent.removeChild(ifElement);
2071
2082
  }
2072
2083
  commit(value) {
2073
2084
  const condition = Boolean(value);
@@ -2076,26 +2087,32 @@ class ConditionalIfPart extends Part {
2076
2087
  this.value = value;
2077
2088
  if (condition) {
2078
2089
  // Show: restore children from fragment
2079
- if (this.fragment && this.fragment.hasChildNodes()) {
2080
- this.ifElement.appendChild(this.fragment);
2090
+ if (this.childFragment && this.childFragment.hasChildNodes()) {
2091
+ this.startNode.parentNode.insertBefore(this.childFragment, this.endNode);
2081
2092
  }
2082
2093
  }
2083
2094
  else {
2084
2095
  // Hide: move children to fragment
2085
- if (!this.fragment) {
2086
- this.fragment = document.createDocumentFragment();
2096
+ if (!this.childFragment) {
2097
+ this.childFragment = document.createDocumentFragment();
2087
2098
  }
2088
- while (this.ifElement.firstChild) {
2089
- this.fragment.appendChild(this.ifElement.firstChild);
2099
+ let node = this.startNode.nextSibling;
2100
+ while (node && node !== this.endNode) {
2101
+ const next = node.nextSibling;
2102
+ this.childFragment.appendChild(node);
2103
+ node = next;
2090
2104
  }
2091
2105
  }
2092
2106
  }
2093
2107
  clear() {
2094
- if (!this.fragment) {
2095
- this.fragment = document.createDocumentFragment();
2108
+ if (!this.childFragment) {
2109
+ this.childFragment = document.createDocumentFragment();
2096
2110
  }
2097
- while (this.ifElement.firstChild) {
2098
- this.fragment.appendChild(this.ifElement.firstChild);
2111
+ let node = this.startNode.nextSibling;
2112
+ while (node && node !== this.endNode) {
2113
+ const next = node.nextSibling;
2114
+ this.childFragment.appendChild(node);
2115
+ node = next;
2099
2116
  }
2100
2117
  }
2101
2118
  }
@@ -2107,62 +2124,70 @@ class ConditionalCasePart extends Part {
2107
2124
  constructor(caseElement) {
2108
2125
  super();
2109
2126
  this.value = NOT_SET;
2110
- this.childrenMap = new Map();
2111
- this.fragments = new Map();
2112
- this.defaultChild = null;
2113
- this.currentChild = null;
2114
- this.caseElement = caseElement;
2115
- this.caseElement.style.display = 'contents';
2116
- // Build map and store children in fragments initially
2117
- for (const child of Array.from(this.caseElement.children)) {
2127
+ this.branches = new Map();
2128
+ this.defaultBranch = null;
2129
+ this.currentKey = null;
2130
+ const parent = caseElement.parentNode;
2131
+ // Create comment boundary markers
2132
+ this.startNode = document.createComment('case');
2133
+ this.endNode = document.createComment('/case');
2134
+ // Insert markers where <case> is
2135
+ parent.insertBefore(this.startNode, caseElement);
2136
+ parent.insertBefore(this.endNode, caseElement.nextSibling);
2137
+ // Extract branches from <when> and <default> children
2138
+ for (const child of Array.from(caseElement.children)) {
2118
2139
  const childTag = child.tagName.toLowerCase();
2119
2140
  if (childTag === 'when') {
2120
- child.style.display = 'contents';
2121
2141
  const whenValue = child.getAttribute('value') || '';
2122
- this.childrenMap.set(whenValue, child);
2123
2142
  const fragment = document.createDocumentFragment();
2124
- fragment.appendChild(child);
2125
- this.fragments.set(child, fragment);
2143
+ while (child.firstChild) {
2144
+ fragment.appendChild(child.firstChild);
2145
+ }
2146
+ this.branches.set(whenValue, fragment);
2126
2147
  }
2127
2148
  else if (childTag === 'default') {
2128
- child.style.display = 'contents';
2129
- this.defaultChild = child;
2130
- const fragment = document.createDocumentFragment();
2131
- fragment.appendChild(child);
2132
- this.fragments.set(child, fragment);
2149
+ this.defaultBranch = document.createDocumentFragment();
2150
+ while (child.firstChild) {
2151
+ this.defaultBranch.appendChild(child.firstChild);
2152
+ }
2133
2153
  }
2134
2154
  }
2155
+ // Remove the <case> element from DOM
2156
+ parent.removeChild(caseElement);
2135
2157
  }
2136
2158
  commit(value) {
2137
2159
  if (this.value === value)
2138
2160
  return;
2139
2161
  this.value = value;
2140
2162
  const valueStr = String(value);
2141
- // Remove current child
2142
- if (this.currentChild) {
2143
- const fragment = this.fragments.get(this.currentChild);
2144
- if (fragment && !fragment.hasChildNodes()) {
2145
- fragment.appendChild(this.currentChild);
2146
- }
2147
- }
2148
- // Insert matching child
2149
- const matchingChild = this.childrenMap.get(valueStr) || this.defaultChild;
2150
- if (matchingChild) {
2151
- const fragment = this.fragments.get(matchingChild);
2152
- if (fragment && fragment.hasChildNodes()) {
2153
- this.caseElement.appendChild(fragment);
2154
- }
2155
- this.currentChild = matchingChild;
2163
+ // Move current content back to its fragment
2164
+ this._collectCurrent();
2165
+ // Insert matching branch
2166
+ const hasBranch = this.branches.has(valueStr);
2167
+ const matchingFragment = hasBranch ? this.branches.get(valueStr) : this.defaultBranch;
2168
+ this.currentKey = hasBranch ? valueStr : (this.defaultBranch ? '__default__' : null);
2169
+ if (matchingFragment && matchingFragment.hasChildNodes()) {
2170
+ this.startNode.parentNode.insertBefore(matchingFragment, this.endNode);
2171
+ }
2172
+ }
2173
+ _collectCurrent() {
2174
+ if (this.currentKey === null)
2175
+ return;
2176
+ const fragment = this.currentKey === '__default__'
2177
+ ? this.defaultBranch
2178
+ : this.branches.get(this.currentKey);
2179
+ if (!fragment)
2180
+ return;
2181
+ let node = this.startNode.nextSibling;
2182
+ while (node && node !== this.endNode) {
2183
+ const next = node.nextSibling;
2184
+ fragment.appendChild(node);
2185
+ node = next;
2156
2186
  }
2157
2187
  }
2158
2188
  clear() {
2159
- if (this.currentChild) {
2160
- const fragment = this.fragments.get(this.currentChild);
2161
- if (fragment && !fragment.hasChildNodes()) {
2162
- fragment.appendChild(this.currentChild);
2163
- }
2164
- this.currentChild = null;
2165
- }
2189
+ this._collectCurrent();
2190
+ this.currentKey = null;
2166
2191
  }
2167
2192
  }
2168
2193
 
@@ -3087,19 +3112,16 @@ function applyStyles(element) {
3087
3112
  if (!element.shadowRoot) {
3088
3113
  element.attachShadow({ mode: 'open' });
3089
3114
  }
3090
- // Create base styles for meta elements (if, case)
3091
- const baseStyleSheet = new CSSStyleSheet();
3092
- baseStyleSheet.replaceSync('if, case { display: contents; }');
3093
3115
  if (!element.shadowRoot)
3094
3116
  return;
3095
3117
  // Prefer constructable stylesheets
3096
3118
  if (result.styleSheet && 'adoptedStyleSheets' in element.shadowRoot) {
3097
- element.shadowRoot.adoptedStyleSheets = [baseStyleSheet, result.styleSheet];
3119
+ element.shadowRoot.adoptedStyleSheets = [result.styleSheet];
3098
3120
  return;
3099
3121
  }
3100
3122
  // Fallback to <style> tag
3101
3123
  const style = document.createElement('style');
3102
- style.textContent = 'if, case { display: contents; }\n' + result.cssText;
3124
+ style.textContent = result.cssText;
3103
3125
  element.shadowRoot.appendChild(style);
3104
3126
  }
3105
3127
  catch (error) {
@@ -5419,7 +5441,7 @@ if (typeof document !== 'undefined') {
5419
5441
  }
5420
5442
 
5421
5443
  /*!
5422
- * snice v4.26.2
5444
+ * snice v4.27.0
5423
5445
  * 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.
5424
5446
  * (c) 2024
5425
5447
  * Released under the MIT License.
@@ -5436,7 +5458,7 @@ if (!globalThis.snice) {
5436
5458
  }
5437
5459
 
5438
5460
  /*!
5439
- * snice v4.26.2
5461
+ * snice v4.27.0
5440
5462
  * 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.
5441
5463
  * (c) 2024
5442
5464
  * Released under the MIT License.