smoothly 1.0.0-alpha.99 → 1.0.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 (456) hide show
  1. package/dist/cjs/Data-50d47740.js +589 -0
  2. package/dist/cjs/Data-50d47740.js.map +1 -0
  3. package/dist/cjs/Observers-6450f075.js +25 -0
  4. package/dist/cjs/Observers-6450f075.js.map +1 -0
  5. package/dist/cjs/TimeZone-016ac7b0.js +6181 -0
  6. package/dist/cjs/TimeZone-016ac7b0.js.map +1 -0
  7. package/dist/cjs/{getLanguage-7e53766b.js → getLanguage-49a534df.js} +1 -5993
  8. package/dist/cjs/getLanguage-49a534df.js.map +1 -0
  9. package/dist/cjs/{index-6ae370b4.js → index-43af753b.js} +1 -4
  10. package/dist/cjs/index-43af753b.js.map +1 -0
  11. package/dist/cjs/index.cjs.js +3 -14
  12. package/dist/cjs/index.cjs.js.map +1 -1
  13. package/dist/cjs/loader.cjs.js +4 -3
  14. package/dist/cjs/loader.cjs.js.map +1 -1
  15. package/dist/cjs/smoothly-accordion-item.cjs.entry.js +61 -0
  16. package/dist/cjs/smoothly-accordion-item.cjs.entry.js.map +1 -0
  17. package/dist/cjs/smoothly-accordion.cjs.entry.js +58 -0
  18. package/dist/cjs/smoothly-accordion.cjs.entry.js.map +1 -0
  19. package/dist/cjs/smoothly-address-display.cjs.entry.js +1 -1
  20. package/dist/cjs/smoothly-address.cjs.entry.js +1 -1
  21. package/dist/cjs/smoothly-addresses.cjs.entry.js +1 -1
  22. package/dist/cjs/smoothly-app_80.cjs.entry.js +11148 -0
  23. package/dist/cjs/smoothly-app_80.cjs.entry.js.map +1 -0
  24. package/dist/cjs/smoothly-checkbox.cjs.entry.js +102 -0
  25. package/dist/cjs/smoothly-checkbox.cjs.entry.js.map +1 -0
  26. package/dist/cjs/smoothly-color.cjs.entry.js +1 -1
  27. package/dist/cjs/smoothly-country.cjs.entry.js +56 -55
  28. package/dist/cjs/smoothly-country.cjs.entry.js.map +1 -1
  29. package/dist/cjs/smoothly-display-date-time.cjs.entry.js +1 -1
  30. package/dist/cjs/smoothly-google-font.cjs.entry.js +1 -1
  31. package/dist/cjs/smoothly-reorder.cjs.entry.js +4 -4
  32. package/dist/cjs/smoothly-reorder.cjs.entry.js.map +1 -1
  33. package/dist/cjs/smoothly-trigger-sink.cjs.entry.js +2 -2
  34. package/dist/cjs/smoothly-trigger-source.cjs.entry.js +2 -2
  35. package/dist/cjs/smoothly.cjs.js +4 -3
  36. package/dist/cjs/smoothly.cjs.js.map +1 -1
  37. package/dist/collection/collection-manifest.json +24 -7
  38. package/dist/collection/components/Button.js +16 -2
  39. package/dist/collection/components/Button.js.map +1 -1
  40. package/dist/collection/components/app/index.js +53 -1
  41. package/dist/collection/components/app/index.js.map +1 -1
  42. package/dist/collection/components/app/room/index.js +45 -2
  43. package/dist/collection/components/app/room/index.js.map +1 -1
  44. package/dist/collection/components/app/room/style.css +23 -9
  45. package/dist/collection/components/app/style.css +57 -32
  46. package/dist/collection/components/app-demo/index.js +1 -2
  47. package/dist/collection/components/app-demo/index.js.map +1 -1
  48. package/dist/collection/components/burger/index.js +9 -9
  49. package/dist/collection/components/burger/index.js.map +1 -1
  50. package/dist/collection/components/button/index.js +9 -22
  51. package/dist/collection/components/button/index.js.map +1 -1
  52. package/dist/collection/components/button/style.css +23 -20
  53. package/dist/collection/components/button-demo/index.js +3 -1
  54. package/dist/collection/components/button-demo/index.js.map +1 -1
  55. package/dist/collection/components/button-demo/style.css +1 -0
  56. package/dist/collection/components/calendar/generate.js +1 -1
  57. package/dist/collection/components/calendar/generate.js.map +1 -1
  58. package/dist/collection/components/calendar/index.js +16 -16
  59. package/dist/collection/components/calendar/index.js.map +1 -1
  60. package/dist/collection/components/checkbox/index.js +60 -29
  61. package/dist/collection/components/checkbox/index.js.map +1 -1
  62. package/dist/collection/components/checkbox/style.css +39 -42
  63. package/dist/collection/components/confirm/index.js +261 -0
  64. package/dist/collection/components/confirm/index.js.map +1 -0
  65. package/dist/collection/components/confirm/style.css +15 -0
  66. package/dist/collection/components/display/index.js +4 -1
  67. package/dist/collection/components/display/index.js.map +1 -1
  68. package/dist/collection/components/display-demo/index.js +16 -1
  69. package/dist/collection/components/display-demo/index.js.map +1 -1
  70. package/dist/collection/components/filter/Filter.js +17 -0
  71. package/dist/collection/components/filter/Filter.js.map +1 -0
  72. package/dist/collection/components/filter/field/index.js +105 -0
  73. package/dist/collection/components/filter/field/index.js.map +1 -0
  74. package/dist/collection/components/filter/field/style.css +4 -0
  75. package/dist/collection/components/filter/index.js +55 -132
  76. package/dist/collection/components/filter/index.js.map +1 -1
  77. package/dist/collection/components/filter/input/index.js +84 -301
  78. package/dist/collection/components/filter/input/index.js.map +1 -1
  79. package/dist/collection/components/filter/picker/index.js +229 -0
  80. package/dist/collection/components/filter/picker/index.js.map +1 -0
  81. package/dist/collection/components/filter/picker/style.css +8 -0
  82. package/dist/collection/components/filter/style.css +56 -71
  83. package/dist/collection/components/filter/toggle/index.js +248 -0
  84. package/dist/collection/components/filter/toggle/index.js.map +1 -0
  85. package/dist/collection/components/filter/toggle/style.css +8 -0
  86. package/dist/collection/components/form/index.js +234 -66
  87. package/dist/collection/components/form/index.js.map +1 -1
  88. package/dist/collection/components/form/style.css +3 -1
  89. package/dist/collection/components/icon/index.js +60 -32
  90. package/dist/collection/components/icon/index.js.map +1 -1
  91. package/dist/collection/components/icon/style.css +15 -0
  92. package/dist/collection/components/icon-demo/index.js +3 -1
  93. package/dist/collection/components/icon-demo/index.js.map +1 -1
  94. package/dist/collection/components/icon-demo/style.css +5 -6
  95. package/dist/collection/components/input/Editable.js +19 -0
  96. package/dist/collection/components/input/Editable.js.map +1 -0
  97. package/dist/collection/components/input/Input.js +22 -1
  98. package/dist/collection/components/input/Input.js.map +1 -1
  99. package/dist/collection/components/input/Looks.js +7 -1
  100. package/dist/collection/components/input/Looks.js.map +1 -1
  101. package/dist/collection/components/input/Submittable.js.map +1 -1
  102. package/dist/collection/components/input/checkbox/index.js +382 -0
  103. package/dist/collection/components/input/checkbox/index.js.map +1 -0
  104. package/dist/collection/components/input/checkbox/style.css +75 -0
  105. package/dist/collection/components/input/clear/index.js +12 -7
  106. package/dist/collection/components/input/clear/index.js.map +1 -1
  107. package/dist/collection/components/input/clear/style.css +23 -20
  108. package/dist/collection/components/input/color/index.js +226 -0
  109. package/dist/collection/components/input/color/index.js.map +1 -0
  110. package/dist/collection/components/input/color/style.css +15 -0
  111. package/dist/collection/components/input/date/index.js +8 -8
  112. package/dist/collection/components/input/date/index.js.map +1 -1
  113. package/dist/collection/components/input/date/range/index.js +13 -17
  114. package/dist/collection/components/input/date/range/index.js.map +1 -1
  115. package/dist/collection/components/input/date/range/style.css +25 -0
  116. package/dist/collection/components/input/date/style.css +25 -0
  117. package/dist/collection/components/input/demo/index.js +28 -72
  118. package/dist/collection/components/input/demo/index.js.map +1 -1
  119. package/dist/collection/components/input/demo/style.css +15 -0
  120. package/dist/collection/components/input/edit/index.js +249 -0
  121. package/dist/collection/components/input/edit/index.js.map +1 -0
  122. package/dist/collection/components/input/edit/style.css +238 -0
  123. package/dist/collection/components/input/file/index.js +3 -3
  124. package/dist/collection/components/input/file/index.js.map +1 -1
  125. package/dist/collection/components/input/file/style.css +22 -0
  126. package/dist/collection/components/input/index.js +245 -110
  127. package/dist/collection/components/input/index.js.map +1 -1
  128. package/dist/collection/components/input/month/index.js +5 -5
  129. package/dist/collection/components/input/month/index.js.map +1 -1
  130. package/dist/collection/components/input/radio/Selected.js +11 -0
  131. package/dist/collection/components/input/radio/Selected.js.map +1 -0
  132. package/dist/collection/components/input/radio/index.js +426 -0
  133. package/dist/collection/components/input/radio/index.js.map +1 -0
  134. package/dist/collection/components/{radio-button → input/radio/item}/index.js +60 -72
  135. package/dist/collection/components/input/radio/item/index.js.map +1 -0
  136. package/dist/collection/components/input/radio/item/style.css +28 -0
  137. package/dist/collection/components/input/radio/style.css +66 -0
  138. package/dist/collection/components/input/range/index.js +440 -0
  139. package/dist/collection/components/input/range/index.js.map +1 -0
  140. package/dist/collection/components/input/range/style.css +154 -0
  141. package/dist/collection/components/input/reset/index.js +260 -0
  142. package/dist/collection/components/input/reset/index.js.map +1 -0
  143. package/dist/collection/components/input/reset/style.css +255 -0
  144. package/dist/collection/components/input/select/index.js +443 -95
  145. package/dist/collection/components/input/select/index.js.map +1 -1
  146. package/dist/collection/components/input/select/style.css +111 -23
  147. package/dist/collection/components/input/style.css +24 -2
  148. package/dist/collection/components/input/submit/index.js +269 -0
  149. package/dist/collection/components/input/submit/index.js.map +1 -0
  150. package/dist/collection/components/input/submit/style.css +11 -0
  151. package/dist/collection/components/item/Item.js +11 -0
  152. package/dist/collection/components/item/Item.js.map +1 -0
  153. package/dist/collection/components/item/index.js +69 -29
  154. package/dist/collection/components/item/index.js.map +1 -1
  155. package/dist/collection/components/item/style.css +1 -3
  156. package/dist/collection/components/label/index.js +81 -0
  157. package/dist/collection/components/label/index.js.map +1 -0
  158. package/dist/collection/components/label/style.css +15 -0
  159. package/dist/collection/components/lazy/index.js +73 -0
  160. package/dist/collection/components/lazy/index.js.map +1 -0
  161. package/dist/collection/components/{radio → load-more}/index.js +35 -46
  162. package/dist/collection/components/load-more/index.js.map +1 -0
  163. package/dist/collection/components/load-more/style.css +5 -0
  164. package/dist/collection/components/notification/index.js.map +1 -1
  165. package/dist/collection/components/picker/demo/index.js +17 -15
  166. package/dist/collection/components/picker/demo/index.js.map +1 -1
  167. package/dist/collection/components/picker/demo/style.css +24 -1
  168. package/dist/collection/components/picker/index.js +172 -7
  169. package/dist/collection/components/picker/index.js.map +1 -1
  170. package/dist/collection/components/picker/menu/index.js +74 -3
  171. package/dist/collection/components/picker/menu/index.js.map +1 -1
  172. package/dist/collection/components/picker/menu/style.css +16 -6
  173. package/dist/collection/components/picker/option/index.js +51 -3
  174. package/dist/collection/components/picker/option/index.js.map +1 -1
  175. package/dist/collection/components/picker/option/style.css +9 -4
  176. package/dist/collection/components/picker/style.css +28 -3
  177. package/dist/collection/components/popup/index.js +5 -5
  178. package/dist/collection/components/popup/index.js.map +1 -1
  179. package/dist/collection/components/popup/style.css +4 -4
  180. package/dist/collection/components/submit/index.js +0 -15
  181. package/dist/collection/components/submit/index.js.map +1 -1
  182. package/dist/collection/components/submit/style.css +23 -20
  183. package/dist/collection/components/summary/index.js +2 -3
  184. package/dist/collection/components/summary/index.js.map +1 -1
  185. package/dist/collection/components/summary/style.css +25 -16
  186. package/dist/collection/components/table/cell/style.css +3 -3
  187. package/dist/collection/components/table/demo/filtered/Root.js.map +1 -1
  188. package/dist/collection/components/table/demo/filtered/index.js +30 -15
  189. package/dist/collection/components/table/demo/filtered/index.js.map +1 -1
  190. package/dist/collection/components/table/demo/filtered/style.css +9 -0
  191. package/dist/collection/components/table/demo/index.js +2 -14
  192. package/dist/collection/components/table/demo/index.js.map +1 -1
  193. package/dist/collection/components/table/demo/style.css +5 -0
  194. package/dist/collection/components/table/demo/testing/data.js.map +1 -0
  195. package/dist/collection/components/table/demo/testing/index.js +28 -0
  196. package/dist/collection/components/table/demo/testing/index.js.map +1 -0
  197. package/dist/collection/components/table/demo/testing/style.css +32 -0
  198. package/dist/collection/components/table/expandable/cell/index.js +1 -20
  199. package/dist/collection/components/table/expandable/cell/index.js.map +1 -1
  200. package/dist/collection/components/table/expandable/cell/style.css +13 -13
  201. package/dist/collection/components/table/expandable/row/index.js +1 -20
  202. package/dist/collection/components/table/expandable/row/index.js.map +1 -1
  203. package/dist/collection/components/table/expandable/row/style.css +11 -11
  204. package/dist/collection/components/table/footer/index.js +19 -0
  205. package/dist/collection/components/table/footer/index.js.map +1 -0
  206. package/dist/collection/components/table/footer/style.css +10 -0
  207. package/dist/collection/components/table/header/style.css +2 -3
  208. package/dist/collection/components/table/index.js +24 -1
  209. package/dist/collection/components/table/index.js.map +1 -1
  210. package/dist/collection/components/theme/color/index.js +48 -0
  211. package/dist/collection/components/theme/color/index.js.map +1 -0
  212. package/dist/collection/components/theme/color/style.css +8 -0
  213. package/dist/collection/components/theme/color/variant/index.js +66 -0
  214. package/dist/collection/components/theme/color/variant/index.js.map +1 -0
  215. package/dist/collection/components/theme/color/variant/style.css +18 -0
  216. package/dist/collection/components/theme/colors/index.js +30 -0
  217. package/dist/collection/components/theme/colors/index.js.map +1 -0
  218. package/dist/collection/components/theme/colors/style.css +7 -0
  219. package/dist/collection/components/theme/picker/index.js +48 -0
  220. package/dist/collection/components/theme/picker/index.js.map +1 -0
  221. package/dist/collection/components/theme/picker/style.css +0 -0
  222. package/dist/collection/components/toggle-switch/index.js +69 -17
  223. package/dist/collection/components/toggle-switch/index.js.map +1 -1
  224. package/dist/collection/components/toggle-switch/style.css +19 -12
  225. package/dist/collection/global/Observers.js +22 -0
  226. package/dist/collection/global/Observers.js.map +1 -0
  227. package/dist/collection/global/index.js +5 -0
  228. package/dist/collection/global/index.js.map +1 -0
  229. package/dist/collection/model/Color.js +18 -1
  230. package/dist/collection/model/Color.js.map +1 -1
  231. package/dist/collection/model/Data.js +8 -1
  232. package/dist/collection/model/Data.js.map +1 -1
  233. package/dist/collection/model/Icon.js +23 -0
  234. package/dist/collection/model/Icon.js.map +1 -0
  235. package/dist/collection/model/Listenable.js +16 -3
  236. package/dist/collection/model/Listenable.js.map +1 -1
  237. package/dist/collection/model/Option.js.map +1 -1
  238. package/dist/collection/model/index.js +2 -1
  239. package/dist/collection/model/index.js.map +1 -1
  240. package/dist/collection/smoothly.js +1 -1
  241. package/dist/collection/smoothly.js.map +1 -1
  242. package/dist/custom-elements/index.d.ts +120 -24
  243. package/dist/custom-elements/index.js +15445 -33845
  244. package/dist/custom-elements/index.js.map +1 -1
  245. package/dist/esm/Data-c8093b5a.js +579 -0
  246. package/dist/esm/Data-c8093b5a.js.map +1 -0
  247. package/dist/esm/Observers-5f08e828.js +25 -0
  248. package/dist/esm/Observers-5f08e828.js.map +1 -0
  249. package/dist/esm/TimeZone-c8df4905.js +6181 -0
  250. package/dist/esm/TimeZone-c8df4905.js.map +1 -0
  251. package/dist/esm/{getLanguage-9c833eef.js → getLanguage-1e9ec036.js} +2 -5994
  252. package/dist/esm/getLanguage-1e9ec036.js.map +1 -0
  253. package/dist/esm/{index-c196715a.js → index-258984d3.js} +2 -4
  254. package/dist/esm/index-258984d3.js.map +1 -0
  255. package/dist/esm/index.js +3 -14
  256. package/dist/esm/index.js.map +1 -1
  257. package/dist/esm/loader.js +5 -4
  258. package/dist/esm/loader.js.map +1 -1
  259. package/dist/esm/smoothly-accordion-item.entry.js +57 -0
  260. package/dist/esm/smoothly-accordion-item.entry.js.map +1 -0
  261. package/dist/esm/smoothly-accordion.entry.js +54 -0
  262. package/dist/esm/smoothly-accordion.entry.js.map +1 -0
  263. package/dist/esm/smoothly-address-display.entry.js +1 -1
  264. package/dist/esm/smoothly-address.entry.js +1 -1
  265. package/dist/esm/smoothly-addresses.entry.js +1 -1
  266. package/dist/esm/smoothly-app_80.entry.js +11065 -0
  267. package/dist/esm/smoothly-app_80.entry.js.map +1 -0
  268. package/dist/esm/smoothly-checkbox.entry.js +98 -0
  269. package/dist/esm/smoothly-checkbox.entry.js.map +1 -0
  270. package/dist/esm/smoothly-color.entry.js +1 -1
  271. package/dist/esm/smoothly-country.entry.js +10 -9
  272. package/dist/esm/smoothly-country.entry.js.map +1 -1
  273. package/dist/esm/smoothly-display-date-time.entry.js +1 -1
  274. package/dist/esm/smoothly-google-font.entry.js +1 -1
  275. package/dist/esm/smoothly-reorder.entry.js +2 -2
  276. package/dist/esm/smoothly-reorder.entry.js.map +1 -1
  277. package/dist/esm/smoothly-trigger-sink.entry.js +2 -2
  278. package/dist/esm/smoothly-trigger-source.entry.js +2 -2
  279. package/dist/esm/smoothly.js +5 -4
  280. package/dist/esm/smoothly.js.map +1 -1
  281. package/dist/smoothly/index.esm.js +1 -1
  282. package/dist/smoothly/index.esm.js.map +1 -1
  283. package/dist/smoothly/{p-663ccbd0.entry.js → p-12182a73.entry.js} +2 -2
  284. package/dist/smoothly/p-21905b32.entry.js +2 -0
  285. package/dist/smoothly/p-21905b32.entry.js.map +1 -0
  286. package/dist/smoothly/p-2e986022.js +2 -0
  287. package/dist/smoothly/p-2e986022.js.map +1 -0
  288. package/dist/smoothly/p-303520d1.entry.js +2 -0
  289. package/dist/smoothly/p-303520d1.entry.js.map +1 -0
  290. package/dist/smoothly/p-312ef066.js +2 -0
  291. package/dist/smoothly/p-312ef066.js.map +1 -0
  292. package/dist/smoothly/{p-9992c8c4.entry.js → p-47151a53.entry.js} +2 -2
  293. package/dist/smoothly/{p-d0b8061e.js → p-5e387578.js} +3 -3
  294. package/dist/smoothly/p-5e387578.js.map +1 -0
  295. package/dist/smoothly/{p-b82ef190.entry.js → p-635c813e.entry.js} +2 -2
  296. package/dist/smoothly/{p-dbd1afa9.entry.js → p-6aebb818.entry.js} +2 -2
  297. package/dist/smoothly/p-6e9aca2e.entry.js +2 -0
  298. package/dist/smoothly/p-6e9aca2e.entry.js.map +1 -0
  299. package/dist/smoothly/{p-c4ffc15d.entry.js → p-7a69b43f.entry.js} +2 -2
  300. package/dist/smoothly/{p-4d743f07.entry.js → p-7bf147bf.entry.js} +2 -2
  301. package/dist/smoothly/p-823e02b0.entry.js +2 -0
  302. package/dist/smoothly/p-823e02b0.entry.js.map +1 -0
  303. package/dist/smoothly/p-b3eac6af.entry.js +2 -0
  304. package/dist/smoothly/{p-4ff439dd.entry.js.map → p-b3eac6af.entry.js.map} +1 -1
  305. package/dist/smoothly/{p-f96e41aa.entry.js → p-cb493516.entry.js} +2 -2
  306. package/dist/smoothly/p-ede93d69.js +2 -0
  307. package/dist/smoothly/p-ede93d69.js.map +1 -0
  308. package/dist/smoothly/{p-ce4e6f44.entry.js → p-eef1c80b.entry.js} +2 -2
  309. package/dist/smoothly/p-f125610c.entry.js +2 -0
  310. package/dist/smoothly/p-f125610c.entry.js.map +1 -0
  311. package/dist/smoothly/p-fa664317.js +2 -0
  312. package/dist/smoothly/p-fa664317.js.map +1 -0
  313. package/dist/smoothly/smoothly.esm.js +1 -1
  314. package/dist/smoothly/smoothly.esm.js.map +1 -1
  315. package/dist/types/components/Button.d.ts +1 -2
  316. package/dist/types/components/app/index.d.ts +3 -0
  317. package/dist/types/components/app/room/index.d.ts +4 -2
  318. package/dist/types/components/app-demo/index.d.ts +1 -0
  319. package/dist/types/components/burger/index.d.ts +2 -2
  320. package/dist/types/components/button/index.d.ts +2 -2
  321. package/dist/types/components/calendar/index.d.ts +5 -5
  322. package/dist/types/components/checkbox/index.d.ts +4 -2
  323. package/dist/types/components/confirm/index.d.ts +19 -0
  324. package/dist/types/components/filter/Filter.d.ts +21 -0
  325. package/dist/types/components/filter/field/index.d.ts +10 -0
  326. package/dist/types/components/filter/index.d.ts +13 -12
  327. package/dist/types/components/filter/input/index.d.ts +17 -23
  328. package/dist/types/components/filter/picker/index.d.ts +25 -0
  329. package/dist/types/components/filter/toggle/index.d.ts +22 -0
  330. package/dist/types/components/form/index.d.ts +22 -15
  331. package/dist/types/components/icon/index.d.ts +4 -6
  332. package/dist/types/components/input/Editable.d.ts +21 -0
  333. package/dist/types/components/input/Input.d.ts +19 -7
  334. package/dist/types/components/input/Looks.d.ts +7 -1
  335. package/dist/types/components/input/Submittable.d.ts +1 -1
  336. package/dist/types/components/input/checkbox/index.d.ts +30 -0
  337. package/dist/types/components/input/color/index.d.ts +24 -0
  338. package/dist/types/components/input/date/index.d.ts +1 -1
  339. package/dist/types/components/input/date/range/index.d.ts +2 -2
  340. package/dist/types/components/input/demo/index.d.ts +3 -6
  341. package/dist/types/components/input/edit/index.d.ts +18 -0
  342. package/dist/types/components/input/index.d.ts +30 -21
  343. package/dist/types/components/input/month/index.d.ts +1 -1
  344. package/dist/types/components/input/radio/Selected.d.ts +10 -0
  345. package/dist/types/components/input/radio/index.d.ts +36 -0
  346. package/dist/types/components/input/radio/item/index.d.ts +15 -0
  347. package/dist/types/components/input/range/index.d.ts +33 -0
  348. package/dist/types/components/input/reset/index.d.ts +19 -0
  349. package/dist/types/components/input/select/index.d.ts +41 -18
  350. package/dist/types/components/input/submit/index.d.ts +19 -0
  351. package/dist/types/components/item/Item.d.ts +10 -0
  352. package/dist/types/components/item/index.d.ts +8 -5
  353. package/dist/types/components/label/index.d.ts +6 -0
  354. package/dist/types/components/lazy/index.d.ts +7 -0
  355. package/dist/types/components/load-more/index.d.ts +11 -0
  356. package/dist/types/components/picker/demo/index.d.ts +7 -2
  357. package/dist/types/components/picker/index.d.ts +20 -6
  358. package/dist/types/components/picker/menu/index.d.ts +8 -0
  359. package/dist/types/components/picker/option/index.d.ts +2 -0
  360. package/dist/types/components/popup/index.d.ts +1 -1
  361. package/dist/types/components/submit/index.d.ts +0 -1
  362. package/dist/types/components/table/demo/filtered/Root.d.ts +2 -0
  363. package/dist/types/components/table/demo/filtered/index.d.ts +6 -6
  364. package/dist/types/components/table/demo/index.d.ts +1 -1
  365. package/dist/types/components/table/expandable/cell/index.d.ts +0 -1
  366. package/dist/types/components/table/expandable/row/index.d.ts +0 -1
  367. package/dist/types/components/table/footer/index.d.ts +3 -0
  368. package/dist/types/components/table/index.d.ts +2 -0
  369. package/dist/types/components/theme/color/index.d.ts +5 -0
  370. package/dist/types/components/theme/color/variant/index.d.ts +6 -0
  371. package/dist/types/components/theme/colors/index.d.ts +3 -0
  372. package/dist/types/components/theme/picker/index.d.ts +4 -0
  373. package/dist/types/components/toggle-switch/index.d.ts +7 -2
  374. package/dist/types/components.d.ts +658 -182
  375. package/dist/types/global/Observers.d.ts +8 -0
  376. package/dist/types/global/index.d.ts +4 -0
  377. package/dist/types/model/Color.d.ts +7 -1
  378. package/dist/types/model/Data.d.ts +4 -0
  379. package/dist/types/model/Icon.d.ts +8 -0
  380. package/dist/types/model/Listenable.d.ts +10 -1
  381. package/dist/types/model/Option.d.ts +2 -0
  382. package/dist/types/model/index.d.ts +1 -1
  383. package/dist/types/smoothly.d.ts +1 -1
  384. package/package.json +7 -11
  385. package/dist/cjs/Data-afbe461d.js +0 -807
  386. package/dist/cjs/Data-afbe461d.js.map +0 -1
  387. package/dist/cjs/getLanguage-7e53766b.js.map +0 -1
  388. package/dist/cjs/index-6ae370b4.js.map +0 -1
  389. package/dist/cjs/smoothly-accordion_66.cjs.entry.js +0 -29732
  390. package/dist/cjs/smoothly-accordion_66.cjs.entry.js.map +0 -1
  391. package/dist/cjs/smoothly-radio-group.cjs.entry.js +0 -22
  392. package/dist/cjs/smoothly-radio-group.cjs.entry.js.map +0 -1
  393. package/dist/collection/components/filter/Clearable.js +0 -8
  394. package/dist/collection/components/filter/Clearable.js.map +0 -1
  395. package/dist/collection/components/icon/Icon.js +0 -2
  396. package/dist/collection/components/icon/Icon.js.map +0 -1
  397. package/dist/collection/components/input/Changeable.js +0 -8
  398. package/dist/collection/components/input/Changeable.js.map +0 -1
  399. package/dist/collection/components/radio/index.js.map +0 -1
  400. package/dist/collection/components/radio/style.css +0 -31
  401. package/dist/collection/components/radio-button/Selected.js +0 -2
  402. package/dist/collection/components/radio-button/Selected.js.map +0 -1
  403. package/dist/collection/components/radio-button/index.js.map +0 -1
  404. package/dist/collection/components/radio-button/item/index.js +0 -117
  405. package/dist/collection/components/radio-button/item/index.js.map +0 -1
  406. package/dist/collection/components/radio-button/item/style.css +0 -85
  407. package/dist/collection/components/radio-group/index.js +0 -43
  408. package/dist/collection/components/radio-group/index.js.map +0 -1
  409. package/dist/collection/components/radio-group/style.css +0 -36
  410. package/dist/collection/components/table/testing/data.js.map +0 -1
  411. package/dist/collection/components/table/testing/index.js +0 -28
  412. package/dist/collection/components/table/testing/index.js.map +0 -1
  413. package/dist/collection/components/table/testing/style.css +0 -8
  414. package/dist/collection/model/ClientIdentifier.js +0 -13
  415. package/dist/collection/model/ClientIdentifier.js.map +0 -1
  416. package/dist/esm/Data-77d2bdbe.js +0 -803
  417. package/dist/esm/Data-77d2bdbe.js.map +0 -1
  418. package/dist/esm/getLanguage-9c833eef.js.map +0 -1
  419. package/dist/esm/index-c196715a.js.map +0 -1
  420. package/dist/esm/smoothly-accordion_66.entry.js +0 -29663
  421. package/dist/esm/smoothly-accordion_66.entry.js.map +0 -1
  422. package/dist/esm/smoothly-radio-group.entry.js +0 -18
  423. package/dist/esm/smoothly-radio-group.entry.js.map +0 -1
  424. package/dist/smoothly/p-1b714a63.js +0 -2
  425. package/dist/smoothly/p-1b714a63.js.map +0 -1
  426. package/dist/smoothly/p-1efa3261.entry.js +0 -2
  427. package/dist/smoothly/p-1efa3261.entry.js.map +0 -1
  428. package/dist/smoothly/p-4ff439dd.entry.js +0 -2
  429. package/dist/smoothly/p-74a3586c.js +0 -2
  430. package/dist/smoothly/p-74a3586c.js.map +0 -1
  431. package/dist/smoothly/p-8a45ae84.entry.js +0 -2
  432. package/dist/smoothly/p-8a45ae84.entry.js.map +0 -1
  433. package/dist/smoothly/p-90b340b4.entry.js +0 -2
  434. package/dist/smoothly/p-90b340b4.entry.js.map +0 -1
  435. package/dist/smoothly/p-d0b8061e.js.map +0 -1
  436. package/dist/types/components/filter/Clearable.d.ts +0 -6
  437. package/dist/types/components/icon/Icon.d.ts +0 -4
  438. package/dist/types/components/input/Changeable.d.ts +0 -7
  439. package/dist/types/components/radio/index.d.ts +0 -13
  440. package/dist/types/components/radio-button/Selected.d.ts +0 -5
  441. package/dist/types/components/radio-button/index.d.ts +0 -13
  442. package/dist/types/components/radio-button/item/index.d.ts +0 -12
  443. package/dist/types/components/radio-group/index.d.ts +0 -4
  444. package/dist/types/model/ClientIdentifier.d.ts +0 -5
  445. /package/dist/collection/components/{radio-button → lazy}/style.css +0 -0
  446. /package/dist/collection/components/table/{testing → demo/testing}/data.js +0 -0
  447. /package/dist/smoothly/{p-663ccbd0.entry.js.map → p-12182a73.entry.js.map} +0 -0
  448. /package/dist/smoothly/{p-9992c8c4.entry.js.map → p-47151a53.entry.js.map} +0 -0
  449. /package/dist/smoothly/{p-b82ef190.entry.js.map → p-635c813e.entry.js.map} +0 -0
  450. /package/dist/smoothly/{p-dbd1afa9.entry.js.map → p-6aebb818.entry.js.map} +0 -0
  451. /package/dist/smoothly/{p-c4ffc15d.entry.js.map → p-7a69b43f.entry.js.map} +0 -0
  452. /package/dist/smoothly/{p-4d743f07.entry.js.map → p-7bf147bf.entry.js.map} +0 -0
  453. /package/dist/smoothly/{p-f96e41aa.entry.js.map → p-cb493516.entry.js.map} +0 -0
  454. /package/dist/smoothly/{p-ce4e6f44.entry.js.map → p-eef1c80b.entry.js.map} +0 -0
  455. /package/dist/types/components/table/{testing → demo/testing}/data.d.ts +0 -0
  456. /package/dist/types/components/table/{testing → demo/testing}/index.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Observers","IslyAny","Type","constructor","super","arguments","this","is","value","undefined","any","name","IslyFunction","islyFunction","styleCss","SmoothlyApp","rooms","async","selected","window","location","search","_a","home","Object","values","find","room","element","disabled","setSelected","path","forEach","content","getContent","mainElement","innerHTML","appendChild","burgerVisibilityHandler","event","burgerVisibility","detail","burgerStatusHandler","stopPropagation","menuOpen","state","smoothlyPath","history","roomSelectedHandler","target","toString","URL","pathname","href","origin","pushState","roomLoadedHandler","replaceState","clickHandler","composedPath","some","e","burgerElement","navElement","render","h","color","label","ref","class","open","onSmoothlyNavStatus","onSmoothlyVisibleStatus","SmoothlyAppDemo","app","slot","type","toolTip","size","link","style","padding","maxWidth","fill","onClick","alert","icon","to","regexIdentifierStart","regexIdentifierPart","isASCII","str","extended","test","lexer","lenient","tokens","i","length","char","ErrorOrInvalid","msg","TypeError","push","index","j","code","substr","count","pattern","error","parse","options","prefixes","defaultPattern","escapeString","delimiter","result","key","nameSet","Set","tryConsume","tryConsumeModifier","r","mustConsume","nextType","consumeText","result2","DefaultEncodePart","encodePart","prefix","indexOf","finalName","has","add","suffix","modifier","name2","pattern2","replace","flags","ignoreCase","regexpToRegexp","keys","groupsRegex","execResult","exec","source","arrayToRegexp","paths","parts","map","pathToRegexp","RegExp","join","stringToRegexp","tokensToRegexp","strict","start","end","encode","x","endsWith","route","token","mod","endToken","isEndDelimited","Array","isArray","DEFAULT_OPTIONS","sensitive","HOSTNAME_OPTIONS","PATHNAME_OPTIONS","isAbsolutePathname","isPattern","maybeStripPrefix","startsWith","substring","maybeStripSuffix","treatAsIPv6Hostname","SPECIAL_SCHEMES","isSpecialScheme","protocol_regexp","scheme","canonicalizeHash","hash","url","canonicalizeSearch","canonicalizeHostname","hostname","ipv6HostnameEncodeCallback","hostnameEncodeCallback","canonicalizePassword","password","canonicalizeUsername","username","canonicalizePathname","protocol","includes","leadingSlash","canonicalizePort","port","defaultPortForProtocol","portEncodeCallback","canonicalizeProtocol","protocolEncodeCallback","input","toLowerCase","usernameEncodeCallback","passwordEncodeCallback","parseInt","standardURLPathnameEncodeCallback","pathURLPathnameEncodeCallback","searchEncodeCallback","hashEncodeCallback","Parser","tokenList","internalResult","tokenIndex","tokenIncrement","componentStart","groupDepth","hostnameIPv6BracketDepth","shouldTreatAsStandardURL","rewind","isHashPrefix","changeState","isSearchPrefix","rewindAndSetState","isGroupClose","isGroupOpen","isProtocolSuffix","computeShouldTreatAsStandardURL","nextState","skip","nextIsAuthoritySlashes","isIdentityTerminator","isPathnameStart","isPasswordPrefix","isIPv6Open","isIPv6Close","isPortPrefix","newState","makeComponentString","changeStateWithoutSettingComponent","safeToken","isNonSpecialPatternChar","previousToken","componentCharStart","assign","regexp","COMPONENTS","DEFAULT_PATTERN","extractValues","baseURL","o","processBaseURLString","escapePatternString","applyInit","init","slashIndex","lastIndexOf","escapeRegexpString","tokensToPattern","wildcardPattern","segmentWildcardPattern","regexIdentifierPart2","lastToken","nextToken","customName","optionsPrefixes","needsGrouping","URLPattern","baseURLOrOptions","component_pattern","parser","ignoreCaseOptions","defaults","component","options2","err","message","inputs","match","groups","entries","globalThis","SmoothlyAppRoom","componentWillLoad","smoothlyRoomLoaded","emit","contentElement","smoothlyRoomSelected","metaKey","ctrlKey","which","button","preventDefault","Host","SmoothlyBackToTop","addEventListener","visible","document","body","scrollTop","documentElement","cssVariables","opacity","bottom","right","scrollTo","top","left","behavior","SmoothlyBurger","matchMedia","mediaQuery","matches","smoothlyNavStatus","smoothlyVisibleStatus","openChanged","resizeHandler","Button","children","local","redirect","convert","download","SmoothlyButton","SmoothlyButtonConfirm","clickTimeStamp","timeStamp","doubleClickTime","timer","clearTimeout","smoothlyConfirm","setTimeout","warning","expand","shape","SmoothlyButtonDemo","checkmark","onSmoothlyToggleSwitchChange","console","log","month","date","d","Date","setDate","day","getDay","row","column","setUTCDate","isoly.Date","create","firstOfMonth","weekdays","getDate","toLocaleString","weekday","months","current","setMonth","years","getFullYear","setFullYear","year","Calendar","clickCounter","now","onStart","next","smoothlyStartChange","onEnd","smoothlyEndChange","smoothlyValueChange","doubleInput","frozenDate","smoothlyDateSet","smoothlyDateRangeSet","onHover","onSmoothlyValueChange","generate.weekdays","generate.month","_b","week","tabindex","onMouseOver","min","max","concat","_c","SmoothlyDialog","TriggerListener","Trigger","hostData","display","__stencil_render","closable","header","SmoothlyDialogDemo","height","getForwardWordBreakIndex","wordRegex","lastIndex","getBackwardWordBreakIndex","execArray","getAdjecentWordBreakIndex","direction","Selection","getCursor","selection","getStalker","State","copy","StateEditor","get","character","c","isDigit","matcher","s","slice","Math","insert","append","prepend","delete","truncate","pad","padEnd","padStart","toLower","symbol","toUpper","toUpperCase","mapping","replacement","static","Action","apply","formatter","action","unformat","autocomplete","select","ctrlArrow","ctrlBackspaceDelete","arrowHomeEnd","erase","allowed","format","paste","pasted","cursorPosition","stalkPosition","shiftKey","adjecentIndex","from","insertString","handlers","argument","data","handler","modify","fromString","Handler","unformatted","formatted","Number","issuer","getIssuer","verification","classes","defaultIssuer","issuers","prototype","hasOwnProperty","call","identification","amex","dankort","diners","discover","electron","interpayment","jcb","unionpay","maestro","mastercard","visa","DateFormat","fromLocale","locale","toLocale","Base","separator","validMonth","register","parameters","daysInMonth","lastOfMonth","fillerDate","isoly.DateTime","formatDate","validDate","daysPerMonth","split","patterns","extract","zeros","isoly.TimeSpan","span","normalize","minutes","hours","toHours","toFixed","abs","negative","parsed","multiplicand","isFinite","parseFloat","offset","nextValue","settings","mode","firstAllowedSymbol","previousAllowedSymbol","newSymbol","isNaN","isSymbolAllowed","isSymbolLetter","alignedString","previousSpace","country","parsedFloat","phonePrefix","countryCode","areaCodes","first","digitIndex","digitCount","spaces","ceil","position","currency","decimals","isoly.Currency","decimalDigits","adjust","repeat","charAt","SmoothlyDisplay","getLocale","DateTime","localize","navigator","language","Locale","Language","SmoothlyDisplayAmount","amount","digitsPerGroup","defaultDecimals","maxDecimals","Currency","beforeSeparator","toInteger","SmoothlyDisplayDemo","noticeWarning","notice","hour","minute","second","timeZone","period","distance","width","align","justifyContent","whiteSpace","Notice","warn","succeeded","failed","execute","Promise","resolve","delay","active","gap","labels","l","hue","description","Rule","filter","stringify","precedence","creators","criteria","always","setFallback","fallback","Always","MAX_SAFE_INTEGER","Any","getOwnPropertyNames","property","And","rules","reduce","every","generalize","and","criterias","Criteria","isCriteria","recursive","defineProperty","exports","Level","Message","level","Level_1","Recoverable","region","ConsoleHandler","raise","Message_1","Position","line","Location","Position_1","resource","Region","merge","other","ConsoleHandler_1","Location_1","Region_1","User","isEmpty","splitted","Endpoint","host","Authority","user","User_1","endpoint","Endpoint_1","pop","Locator","authority","Authority_1","query","fragment","isRelative","isFolder","folder","extension","createArray","reverse","item","absolute","appendPath","hasAuthority","shift","unshift","empty","Locator_1","Device","InDevice","Device_1","Reader","InDevice_1","priority","openers","sort","locator","Reader_2","Reader_1","BufferedReader","backend","buffer","lastContent","lastMark","locationValue","tabSize","readable","opened","Uri","Error","close","peek","read","splice","peekIs","v","readIf","readAll","mark","__awaiter","thisArg","_arguments","P","generator","adopt","reject","fulfilled","step","rejected","done","then","fd","fsync","write","encoding","bytesWritten","lstatSync","isDirectory","readdirSync","readFileSync","sep","StringReader","lastPosition","FileReader","StringReader_1","fs","addOpener","p","FolderReader","files","tabSizeValue","lastLocation","FileReader_1","filetype","ignoreFiles","file","filename","getFiles","f","generate","isIterator","Function","Enumerator","iterator","last","fetch","toArray","isIterable","Symbol","Enumerable","getEnumerator","Enumerator_1","ArrayEnumerator","BufferedEnumerator","String","paddingCharacter","padLeft","Enumerable_1","ArrayEnumerator_1","BufferedEnumerator_1","String_1","OutDevice","Writer","OutDevice_1","newLineSymbol","Utilities_1","writeImplementation","writeLine","Indenter","Writer_1","autoFlush","indentionSymbol","indentionCount","indentNext","writable","flush","increase","decrease","getIndention","all","previous","PrefixReader","BufferedReader_1","FileWriter","descriptor","Buffer","TillReader","endMark","UntilReader","peeked","FolderReader_1","Indenter_1","PrefixReader_1","FileWriter_1","TillReader_1","UntilReader_1","IO","Utilities","Source","reader","errorHandler","Critical","requirePrefix","till","until","peekIsSymbol","symbols","peekIsWhitespace","tokenize","peekSymbolLength","t","array","complete","baseObject","completor","flatMap","cursor","isType","global","Cursor","Completion","completions","completion","suggestion","Boolean","SType","literals","Completor","functions","string","expressions","operators","completorArgument","TObject","properties","filtered","filterByType","matched","found","addDot","wildcard","w","partial","Union","template","full","addon","TArray","TString","TNumber","TBoolean","TCompletion","TUnion","TCompletor","EndsWith","needle","Every","arrayArgumentor","FunctionCall","identifier","definition","Expression","Value","evaluate","variable","GreaterThan","object","GreaterThanOrEqual","Has","Includes","Some","Is","LesserThan","LesserThanOrEqual","Not","not","Or","addArgument","clone","nestingCount","needles","fetchIf","_","n","operator","comparator","binaryOperator","lexer.tokenize","parseNext","precedenceTest","parsers","parseExpression","algebra","parseNextExpression","NaN","expressionParser","expressionParsers","addExpression","getAdder","fetched","Within","within","Contains","contains","Property","reduceRight","StartsWith","InfixOperator","getPrecedence","getSymbol","nextPrecedence","fetchedArray","fetchedValue","expression","parameter","Tuple","EventEmitter","isly.object","isly.function","Filter","Element","isly.string","optional","isly.record","extend","smoothlyFilterUpdate","smoothlyFilterManipulate","SmoothlyFilter","updating","filters","selectively.and","updateHandler","manipulateHandler","smoothlyFilter","update","filterFieldHandler","clear","field","expanded","SmoothlyFilterField","filterFieldEmit","smoothlyFilterField","selectively.parse","onKeyDown","onSmoothlyInputLooks","onSmoothlyBlur","onSmoothlyFormDisable","onSmoothlyInputLoad","onSmoothlyChange","onSmoothlyInput","SmoothlyFilterInput","componentDidLoad","bind","selectively.And","rule","rest","selectively.Property","selectively.Includes","inputHandler","manipulate","newCriteria","getCriteria","findIndex","findInstanceOf","selectively.property","selectively.includes","placeholder","SmoothlyFilterPicker","Map","optionChangeHandler","set","option","multiple","selectively.Within","selectively.Contains","selectively.Is","pickerHandler","selectively.Rule","selectively.contains","selectively.within","selectively.is","looks","onSmoothlyPickerLoaded","SmoothlyFilterToggle","activeHandler","selectively.Not","activate","selectively.not","createCriteria","check","Method","contentType","request","headers","text","serializers","serializer","serialize","fields","Header","isString","isStringArray","fromEntries","camelCase","CamelCase.from","isHeaders","trim","CamelCase.to","Request","k","method","remote","RequestHeader","Serializer.serialize","searchParams","Parser.parse","cloudflare","cf","PlatformResponse","Response","__classPrivateFieldGet","receiver","kind","__classPrivateFieldSet","_Socket_instances","_Socket_receiveQueue","_Socket_sendQueue","_Socket_closed","_Socket_backend","_Socket_onMessage","_Socket_onClose","_Socket_handleOpen","_Socket_onOpen","Socket","onMessage","onClose","onOpen","isOpen","processReceived","send","processSend","WeakMap","WeakSet","ArrayBuffer","arrayBuffer","TextEncoder","Json","JSON","TextDecoder","decode","_Factory_json","_Factory_string","_Factory_arrayBuffer","Factory","json","SocketJson","SocketString","SocketArrayBuffer","createResponse","status","socket","reason","SocketFactory","getEntries","Like","ResponseHeader","WebSocket","Platform.Response","Headers","webSocket","response","ResponseLike","isView","FormData","isPdf","bytes","Uint8Array","Blob","toHelperObject","form","toHelperArray","head","tail","sources","isObject","encodeURIComponent","convertArrays","entry","decodeURIComponent","Parser.add","formData","Search.parse","Serializer.add","Search.stringify","Clearable","Editable","edit","readonly","isly.boolean","listen","reset","setInitialValue","changed","isly.any","Looks","types","Input","isly.union","Data","valueType","Color","smoothlyInput","smoothlyInputForm","SmoothlyForm","readonlyAtLoad","listeners","listener","watchValue","watchReadonly","smoothlyInputLooksHandler","smoothlyFormInput","remove","smoothlyFormSubmit","processing","http\n .fetch","http.Request","http.Search.stringify","catch","editable","onSubmit","prevent","SmoothlyFrame","contentWindow","iframe","firstElementChild","defaultOrigin","destination","trigger","message2","SmoothlyIcon","Icon","load","rotate","SmoothlyIconDemo","hostRef","page","flip","SmoothlyInput","keepFocusOnReRender","uneditable","typeChange","tidily.get","tidily.StateEditor","valueWatcher","before","initialValue","lastValue","smoothlyInputEmit","abortInputEvent","timeout","watchingReadonly","onCurrency","smoothlyInputLooks","smoothlyInputLoad","smoothlyFormDisable","componentDidRender","inputElement","focus","forms","namedItem","elements","hasNameAndValue","smoothlyInputs","getElementsByTagName","keepFocus","after","updateBackend","onBlur","smoothlyBlur","smoothlyChange","onFocus","selectionStart","selectionEnd","selectionDirection","processKey","onPaste","clipboardData","getData","expiresAutocompleteFix","processPaste","onInput","inputType","letter","attributes","getNamedItem","tidily.Action","setSelection","onclick","required","_d","readOnly","_e","_f","_g","el","htmlFor","isoly.Locale","isoly.Language","SmoothlyInputCheckbox","checked","elementCheck","SmoothlyInputClear","parent","val","SmoothlyInputColor","smoothlyInputHandler","smoothlyInputLoadHandler","valueChanged","InputDate","dateSetHandler","showLabel","InputDateRange","onValue","onStartChanged","onEndChanged","onDateRangeSet","isoly.DateRange","labelStart","labelEnd","SmoothlyInputDemo","clearable","showSelected","menuHeight","outputSide","duration","onSmoothlyFormSubmit","nextMonth","camera","SmoothlyInputEdit","title","SmoothlyInputFile","transfer","DataTransfer","dragging","click","onDragOver","onDragEnter","onDrop","dataTransfer","onDragLeave","capture","accept","items","onChange","MonthSelector","onValueChanged","adjustMonth","delta","getMonth","onSmoothlySelect","generate.years","generate.months","SmoothlyInputRadio","valueReceivedOnLoad","handleRegister","SmoothlyInputLoadHandler","smoothlyRadioInputHandler","SmoothlyInputRadioItem","smoothlyRadioButtonRegister","smoothlySelect","SmoothlyInputRange","HTMLInputElement","valueAsNumber","round","part","SmoothlyInputReset","tooltip","Item","SmoothlyInputSelect","initialValueHandled","itemHeight","clientHeight","setProperty","hidden","displaySelected","handleShowOptions","displaySelectedElement","onSelectedChange","areValuesEqual","onWindowClick","onItemSelect","onClosed","marked","displayString","visibleItems","getAttribute","move","smoothlyItemSelect","markedIndex","tabIndex","selectable","Submittable","submit","SmoothlyInputSubmit","SmoothlyItem","innerText","SmoothlyLabel","SmoothlyLazy","loadMoreHandler","show","onSmoothlyLoadMore","LoadMore","observer","IntersectionObserver","observationHandler","observe","intersectionRatio","smoothlyLoadMore","unobserve","disconnect","Notification","tick","onTrigger","onUpdatedNotice","newValue","oldValue","unlisten","Notifier","onNotice","notices","onRemove","SmoothlyPicker","valueRecivedOnLoad","selectedChanged","at","createElement","slotted","node","cloneNode","controls","smoothlyPickerLoaded","menuLoadedHandler","optionLoadedHandler","focusHandler","initialValueArray","selectedArray","nodes","mutable","validator","validateEmail","email","SmoothlyPickerDemo","users","emails","change","submitHandler","remember","restore","loadedHandler","counter","onSmoothlyFormInput","flat","chain","iterables","iterable","restoreListener","SmoothlyPickerMenu","threshold","flipChecked","smoothlyPickerMenuLoaded","memory","created","disconnectedCallback","parentElement","openChange","readonlyChanged","scrollHandler","optionLoadHandler","listElement","valid","toLocaleLowerCase","searches","addHandler","validation","searchElement","keyDownHandler","emptyDisplayHandler","onSmoothlySlottedChange","a","b","SmoothlyPickerOption","emitChange","smoothlyPickerOptionChange","smoothlyPickerOptionLoad","__rest","smoothlyPickerOptionLoaded","slottedChangeHandler","SmoothlyPopup","popupElement","getBoundingClientRect","innerWidth","removeProperty","popup","SmoothlyQuiet","SmoothlySelectDemo","SmoothlySkeleton","widths","floor","random","SmoothlySlotElements","smoothlySlotEmpty","SmoothlySottedElement","childNodes","child","HTMLSlotElement","assigned","assignedNodes","smoothlySlottedChange","SmoothlySpinner","strokeWidth","viewBox","xmlns","cx","cy","SmoothlySubmit","SmoothlySummary","toggleHandler","HTMLDetailsElement","smoothlySummaryOpen","onToggle","SmoothlySvg","defaultSizes","large","medium","small","tiny","SmoothlyTab","expansionElement","expansionOpen","SmoothlyTabSwitch","selectedElement","old","Table","expandable","smoothlyNestedTable","root","smoothlyTableLoad","owner","handleExpandableLoaded","handleExpandableState","smoothlySpotlightChange","allowSpotlight","handleSpotlightState","handleNestedTable","handleEvents","TableCell","TableDemo","src","alt","Selector","_Selector_selected","handle","intermediate","TableDemoFiltered","onFilterUpdate","selector","http.fetch","cats","cat","price","breed","charCodeAt","nested","names","selectively.filter","coat","colSpan","Australia","Greece","TableExpandableCell","beginOpen","smoothlyExpandableChange","handleSpotlight","spotlight","smoothlyExpansionLoad","smoothlyExpandableLoad","smoothlyExpansionOpen","handleTableLoaded","TableExpandableRow","hide","TableFooter","TableHeader","TableRow","expansions","onExpansionLoad","onExpansionChange","expansion","onExpansionOpen","cell","age","SmoothlyTableTesting","animal","SmoothlyThemeColor","variant","SmoothlyThemeColorVariant","SmoothlyThemeColors","SmoothlyThemePicker","querySelector","HTMLLinkElement","theme","SmoothlyToggle","SmoothlyToggleSwitch","handleClick","smoothlyToggleSwitchChange","SmoothlyTrigger","SmoothlyTuple","tuple","Urlencoded"],"sources":["./src/global/index.ts","./node_modules/isly/dist/mjs/any.js","./node_modules/isly/dist/mjs/function.js","./src/components/app/style.css?tag=smoothly-app","./src/components/app/index.tsx","./src/components/app-demo/index.tsx","./node_modules/urlpattern-polyfill/dist/urlpattern.js","./node_modules/urlpattern-polyfill/index.js","./src/components/app/room/style.css?tag=smoothly-app-room&encapsulation=scoped","./src/components/app/room/index.tsx","./src/components/backtotop/style.scss?tag=smoothly-back-to-top&encapsulation=scoped","./src/components/backtotop/index.tsx","./src/components/burger/style.css?tag=smoothly-burger&encapsulation=scoped","./src/components/burger/index.tsx","./src/components/Button.tsx","./src/components/button/style.css?tag=smoothly-button&encapsulation=scoped","./src/components/button/index.tsx","./src/components/confirm/style.css?tag=smoothly-button-confirm&encapsulation=scoped","./src/components/confirm/index.tsx","./src/components/button-demo/style.css?tag=smoothly-button-demo","./src/components/button-demo/index.tsx","./src/components/calendar/generate.ts","./src/components/calendar/style.css?tag=smoothly-calendar&encapsulation=scoped","./src/components/calendar/index.tsx","./src/components/dialog/style.css?tag=smoothly-dialog&encapsulation=scoped","./src/components/dialog/index.tsx","./src/components/dialog-demo/index.tsx","./node_modules/tidily/dist/mjs/getAdjecentWordBreakIndex.js","./node_modules/tidily/dist/mjs/Selection.js","./node_modules/tidily/dist/mjs/State.js","./node_modules/tidily/dist/mjs/StateEditor.js","./node_modules/tidily/dist/mjs/Action.js","./node_modules/tidily/dist/mjs/Handler/base.js","./node_modules/tidily/dist/mjs/Handler/card-csc.js","./node_modules/tidily/dist/mjs/Handler/card-expires.js","./node_modules/tidily/dist/mjs/Handler/card-number.js","./node_modules/tidily/dist/mjs/DateFormat.js","./node_modules/tidily/dist/mjs/Handler/date/Base.js","./node_modules/tidily/dist/mjs/Handler/date/dmy.js","./node_modules/tidily/dist/mjs/Handler/date/mdy.js","./node_modules/tidily/dist/mjs/Handler/date/ymd.js","./node_modules/tidily/dist/mjs/Handler/date-time.js","./node_modules/tidily/dist/mjs/Handler/divisor.js","./node_modules/tidily/dist/mjs/Handler/duration.js","./node_modules/tidily/dist/mjs/Handler/identifier.js","./node_modules/tidily/dist/mjs/Handler/identity-number.js","./node_modules/tidily/dist/mjs/Handler/integer.js","./node_modules/tidily/dist/mjs/Handler/password.js","./node_modules/tidily/dist/mjs/Handler/percent.js","./node_modules/tidily/dist/mjs/Handler/phonePrefix.js","./node_modules/tidily/dist/mjs/Handler/phone.js","./node_modules/tidily/dist/mjs/Handler/postal-code.js","./node_modules/tidily/dist/mjs/Handler/price.js","./node_modules/tidily/dist/mjs/Handler/text.js","./src/components/display/style.css?tag=smoothly-display&encapsulation=scoped","./src/components/display/index.tsx","./src/components/display-amount/style.css?tag=smoothly-display-amount&encapsulation=scoped","./src/components/display-amount/index.tsx","./src/components/display-demo/index.tsx","./node_modules/selectively/dist/mjs/Rule.js","./node_modules/selectively/dist/mjs/Always.js","./node_modules/selectively/dist/mjs/Any.js","./node_modules/selectively/dist/mjs/And.js","./node_modules/selectively/dist/mjs/Criteria.js","./node_modules/@cogneco/mend/build/Error/Level.js","./node_modules/@cogneco/mend/build/Error/Message.js","./node_modules/@cogneco/mend/build/Error/ConsoleHandler.js","./node_modules/@cogneco/mend/build/Error/Position.js","./node_modules/@cogneco/mend/build/Error/Location.js","./node_modules/@cogneco/mend/build/Error/Region.js","./node_modules/@cogneco/mend/build/Error/index.js","./node_modules/@cogneco/mend/build/Uri/User.js","./node_modules/@cogneco/mend/build/Uri/Endpoint.js","./node_modules/@cogneco/mend/build/Uri/Authority.js","./node_modules/@cogneco/mend/build/Uri/Locator.js","./node_modules/@cogneco/mend/build/Uri/index.js","./node_modules/@cogneco/mend/build/IO/Device.js","./node_modules/@cogneco/mend/build/IO/InDevice.js","./node_modules/@cogneco/mend/build/IO/Reader.js","./node_modules/@cogneco/mend/build/IO/BufferedReader.js","./node_modules/@cogneco/mend/build/IO/fs.browser.js","./node_modules/@cogneco/mend/build/IO/path.browser.js","./node_modules/@cogneco/mend/build/IO/StringReader.js","./node_modules/@cogneco/mend/build/IO/FileReader.js","./node_modules/@cogneco/mend/build/IO/FolderReader.js","./node_modules/@cogneco/mend/build/Utilities/Enumerator.js","./node_modules/@cogneco/mend/build/Utilities/Enumerable.js","./node_modules/@cogneco/mend/build/Utilities/ArrayEnumerator.js","./node_modules/@cogneco/mend/build/Utilities/BufferedEnumerator.js","./node_modules/@cogneco/mend/build/Utilities/String.js","./node_modules/@cogneco/mend/build/Utilities/index.js","./node_modules/@cogneco/mend/build/IO/OutDevice.js","./node_modules/@cogneco/mend/build/IO/Writer.js","./node_modules/@cogneco/mend/build/IO/Indenter.js","./node_modules/@cogneco/mend/build/IO/PrefixReader.js","./node_modules/@cogneco/mend/build/IO/FileWriter.js","./node_modules/@cogneco/mend/build/IO/TillReader.js","./node_modules/@cogneco/mend/build/IO/UntilReader.js","./node_modules/@cogneco/mend/build/IO/index.js","./node_modules/@cogneco/mend/build/index.js","./node_modules/selectively/dist/mjs/lexer/Source.js","./node_modules/selectively/dist/mjs/lexer/index.js","./node_modules/selectively/dist/mjs/Type/Base.js","./node_modules/selectively/dist/mjs/Type/Array.js","./node_modules/selectively/dist/mjs/Type/Cursor.js","./node_modules/selectively/dist/mjs/Type/Completion.js","./node_modules/selectively/dist/mjs/Type/Boolean.js","./node_modules/selectively/dist/mjs/Type/Completor.js","./node_modules/selectively/dist/mjs/Type/Number.js","./node_modules/selectively/dist/mjs/Type/Object.js","./node_modules/selectively/dist/mjs/Type/String.js","./node_modules/selectively/dist/mjs/Type/Union.js","./node_modules/selectively/dist/mjs/Type/index.js","./node_modules/selectively/dist/mjs/EndsWith.js","./node_modules/selectively/dist/mjs/Every.js","./node_modules/selectively/dist/mjs/FunctionCall.js","./node_modules/selectively/dist/mjs/Expression.js","./node_modules/selectively/dist/mjs/Value.js","./node_modules/selectively/dist/mjs/GreaterThan.js","./node_modules/selectively/dist/mjs/GreaterThanOrEqual.js","./node_modules/selectively/dist/mjs/Has.js","./node_modules/selectively/dist/mjs/Includes.js","./node_modules/selectively/dist/mjs/Some.js","./node_modules/selectively/dist/mjs/Is.js","./node_modules/selectively/dist/mjs/LesserThan.js","./node_modules/selectively/dist/mjs/LesserThanOrEqual.js","./node_modules/selectively/dist/mjs/Match.js","./node_modules/selectively/dist/mjs/Not.js","./node_modules/selectively/dist/mjs/Or.js","./node_modules/selectively/dist/mjs/parse/Source.js","./node_modules/selectively/dist/mjs/parse/parse.js","./node_modules/selectively/dist/mjs/parse/Expression.js","./node_modules/selectively/dist/mjs/parse/Every.js","./node_modules/selectively/dist/mjs/parse/Some.js","./node_modules/selectively/dist/mjs/parse/group.js","./node_modules/selectively/dist/mjs/parse/GreaterThan.js","./node_modules/selectively/dist/mjs/parse/GreaterThanOrEqual.js","./node_modules/selectively/dist/mjs/parse/LesserThan.js","./node_modules/selectively/dist/mjs/parse/LesserThanOrEqual.js","./node_modules/selectively/dist/mjs/parse/Not.js","./node_modules/selectively/dist/mjs/parse/Has.js","./node_modules/selectively/dist/mjs/Within.js","./node_modules/selectively/dist/mjs/parse/Within.js","./node_modules/selectively/dist/mjs/Contains.js","./node_modules/selectively/dist/mjs/parse/Contains.js","./node_modules/selectively/dist/mjs/parse/FunctionCall.js","./node_modules/selectively/dist/mjs/Property.js","./node_modules/selectively/dist/mjs/parse/Property.js","./node_modules/selectively/dist/mjs/parse/Includes.js","./node_modules/selectively/dist/mjs/StartsWith.js","./node_modules/selectively/dist/mjs/parse/StartsWith.js","./node_modules/selectively/dist/mjs/parse/EndsWith.js","./node_modules/selectively/dist/mjs/InfixOperator.js","./node_modules/selectively/dist/mjs/parse/InfixOperator.js","./node_modules/selectively/dist/mjs/parse/Value.js","./node_modules/selectively/dist/mjs/parse/Is.js","./node_modules/selectively/dist/mjs/parse/ignore.js","./node_modules/selectively/dist/mjs/resolve/replace.js","./node_modules/selectively/dist/mjs/Tuple.js","./node_modules/selectively/dist/mjs/selectively.js","./src/components/filter/Filter.ts","./src/components/filter/style.css?tag=smoothly-filter&encapsulation=scoped","./src/components/filter/index.tsx","./src/components/filter/field/style.css?tag=smoothly-filter-field&encapsulation=scoped","./src/components/filter/field/index.tsx","./src/components/filter/input/style.css?tag=smoothly-filter-input&encapsulation=scoped","./src/components/filter/input/index.tsx","./src/components/filter/picker/style.css?tag=smoothly-filter-picker&encapsulation=scoped","./src/components/filter/picker/index.tsx","./src/components/filter/toggle/style.css?tag=smoothly-filter-toggle&encapsulation=scoped","./src/components/filter/toggle/index.tsx","./node_modules/cloudly-http/dist/Method.js","./node_modules/cloudly-http/dist/Parser.js","./node_modules/cloudly-http/dist/Serializer.js","./node_modules/cloudly-http/dist/CamelCase.js","./node_modules/cloudly-http/dist/Request/Header.js","./node_modules/cloudly-http/dist/Request/index.js","./node_modules/cloudly-http/dist/Platform.js","./node_modules/cloudly-http/dist/Socket/Socket.js","./node_modules/cloudly-http/dist/Socket/ArrayBuffer.js","./node_modules/cloudly-http/dist/Socket/Json.js","./node_modules/cloudly-http/dist/Socket/String.js","./node_modules/cloudly-http/dist/Socket/Factory.js","./node_modules/cloudly-http/dist/Socket/index.js","./node_modules/cloudly-http/dist/Response/Header.js","./node_modules/cloudly-http/dist/Response/Like.js","./node_modules/cloudly-http/dist/Response/index.js","./node_modules/cloudly-http/dist/fetch.js","./node_modules/cloudly-http/dist/FormData.js","./node_modules/cloudly-http/dist/Search.js","./node_modules/cloudly-http/dist/index.js","./src/components/input/Clearable.ts","./src/components/input/Editable.ts","./src/components/input/Looks.ts","./src/components/input/Input.ts","./src/components/form/style.css?tag=smoothly-form","./src/components/form/index.tsx","./src/components/frame/style.css?tag=smoothly-frame&encapsulation=scoped","./src/components/frame/index.tsx","./src/components/icon/style.css?tag=smoothly-icon&encapsulation=scoped","./src/components/icon/index.tsx","./src/components/icon-demo/style.css?tag=smoothly-icon-demo&encapsulation=scoped","./src/components/icon-demo/index.tsx","./src/components/input/style.css?tag=smoothly-input&encapsulation=scoped","./src/components/input/index.tsx","./src/components/input/checkbox/style.css?tag=smoothly-input-checkbox&encapsulation=scoped","./src/components/input/checkbox/index.tsx","./src/components/input/clear/style.css?tag=smoothly-input-clear&encapsulation=scoped","./src/components/input/clear/index.tsx","./src/components/input/color/style.css?tag=smoothly-input-color&encapsulation=scoped","./src/components/input/color/index.tsx","./src/components/input/date/style.css?tag=smoothly-input-date&encapsulation=scoped","./src/components/input/date/index.tsx","./src/components/input/date/range/style.scss?tag=smoothly-input-date-range&encapsulation=scoped","./src/components/input/date/range/index.tsx","./src/components/input/demo/style.css?tag=smoothly-input-demo","./src/components/input/demo/index.tsx","./src/components/input/edit/style.css?tag=smoothly-input-edit&encapsulation=scoped","./src/components/input/edit/index.tsx","./src/components/input/file/style.css?tag=smoothly-input-file&encapsulation=scoped","./src/components/input/file/index.tsx","./src/components/input/month/style.css?tag=smoothly-input-month&encapsulation=scoped","./src/components/input/month/index.tsx","./src/components/input/radio/style.css?tag=smoothly-input-radio&encapsulation=scoped","./src/components/input/radio/index.tsx","./src/components/input/radio/item/style.css?tag=smoothly-input-radio-item&encapsulation=scoped","./src/components/input/radio/item/index.tsx","./src/components/input/range/style.css?tag=smoothly-input-range&encapsulation=scoped","./src/components/input/range/index.tsx","./src/components/input/reset/style.css?tag=smoothly-input-reset&encapsulation=scoped","./src/components/input/reset/index.tsx","./src/components/item/Item.ts","./src/components/input/select/style.css?tag=smoothly-input-select&encapsulation=scoped","./src/components/input/select/index.tsx","./src/components/input/Submittable.ts","./src/components/input/submit/style.css?tag=smoothly-input-submit&encapsulation=scoped","./src/components/input/submit/index.tsx","./src/components/item/style.css?tag=smoothly-item&encapsulation=scoped","./src/components/item/index.tsx","./src/components/label/style.css?tag=smoothly-label&encapsulation=scoped","./src/components/label/index.tsx","./src/components/lazy/style.css?tag=smoothly-lazy&encapsulation=scoped","./src/components/lazy/index.tsx","./src/components/load-more/style.css?tag=smoothly-load-more&encapsulation=scoped","./src/components/load-more/index.tsx","./src/components/notification/style.css?tag=smoothly-notification&encapsulation=scoped","./src/components/notification/index.tsx","./src/components/notifier/style.css?tag=smoothly-notifier&encapsulation=scoped","./src/components/notifier/index.tsx","./src/components/picker/style.css?tag=smoothly-picker&encapsulation=scoped","./src/components/picker/index.tsx","./src/components/picker/demo/style.css?tag=smoothly-picker-demo&encapsulation=scoped","./src/components/picker/demo/index.tsx","./src/components/picker/menu/style.css?tag=smoothly-picker-menu&encapsulation=scoped","./src/components/picker/menu/index.tsx","./src/components/picker/option/style.css?tag=smoothly-picker-option&encapsulation=shadow","./src/components/picker/option/index.tsx","./src/components/popup/style.css?tag=smoothly-popup&encapsulation=scoped","./src/components/popup/index.tsx","./src/components/quiet/style.css?tag=smoothly-quiet&encapsulation=scoped","./src/components/quiet/index.tsx","./src/components/select-demo/style.css?tag=smoothly-select-demo&encapsulation=scoped","./src/components/select-demo/index.tsx","./src/components/skeleton/style.css?tag=smoothly-skeleton&encapsulation=scoped","./src/components/skeleton/index.tsx","./src/components/picker/slot-elements/style.css?tag=smoothly-slot-elements&encapsulation=scoped","./src/components/picker/slot-elements/index.tsx","./src/components/picker/slotted-elements/style.css?tag=smoothly-slotted-elements&encapsulation=scoped","./src/components/picker/slotted-elements/index.tsx","./src/components/spinner/style.scss?tag=smoothly-spinner&encapsulation=scoped","./src/components/spinner/index.tsx","./src/components/submit/style.css?tag=smoothly-submit&encapsulation=scoped","./src/components/submit/index.tsx","./src/components/summary/style.css?tag=smoothly-summary&encapsulation=scoped","./src/components/summary/index.tsx","./src/components/svg/style.css?tag=smoothly-svg&encapsulation=scoped","./src/components/svg/index.tsx","./src/components/tab/style.css?tag=smoothly-tab&encapsulation=scoped","./src/components/tab/index.tsx","./src/components/tab-switch/style.css?tag=smoothly-tab-switch&encapsulation=scoped","./src/components/tab-switch/index.tsx","./src/components/table/style.css?tag=smoothly-table&encapsulation=scoped","./src/components/table/index.tsx","./src/components/table/cell/style.css?tag=smoothly-table-cell&encapsulation=scoped","./src/components/table/cell/index.tsx","./src/components/table/demo/style.css?tag=smoothly-table-demo&encapsulation=scoped","./src/components/table/demo/index.tsx","./src/components/table/Selector.tsx","./src/components/table/demo/filtered/style.css?tag=smoothly-table-demo-filtered&encapsulation=scoped","./src/components/table/demo/filtered/index.tsx","./src/components/table/expandable/cell/style.css?tag=smoothly-table-expandable-cell&encapsulation=scoped","./src/components/table/expandable/cell/index.tsx","./src/components/table/expandable/row/style.css?tag=smoothly-table-expandable-row&encapsulation=scoped","./src/components/table/expandable/row/index.tsx","./src/components/table/footer/style.css?tag=smoothly-table-footer&encapsulation=scoped","./src/components/table/footer/index.tsx","./src/components/table/header/style.css?tag=smoothly-table-header&encapsulation=scoped","./src/components/table/header/index.tsx","./src/components/table/row/style.css?tag=smoothly-table-row&encapsulation=scoped","./src/components/table/row/index.tsx","./src/components/table/demo/testing/data.ts","./src/components/table/demo/testing/style.css?tag=smoothly-table-testing&encapsulation=scoped","./src/components/table/demo/testing/index.tsx","./src/components/theme/color/style.css?tag=smoothly-theme-color&encapsulation=scoped","./src/components/theme/color/index.tsx","./src/components/theme/color/variant/style.css?tag=smoothly-theme-color-variant&encapsulation=scoped","./src/components/theme/color/variant/index.tsx","./src/components/theme/colors/style.css?tag=smoothly-theme-colors&encapsulation=scoped","./src/components/theme/colors/index.tsx","./src/components/theme/picker/style.css?tag=smoothly-theme-picker&encapsulation=scoped","./src/components/theme/picker/index.tsx","./src/components/toggle/style.css?tag=smoothly-toggle&encapsulation=scoped","./src/components/toggle/toggle.tsx","./src/components/toggle-switch/style.css?tag=smoothly-toggle-switch&encapsulation=shadow","./src/components/toggle-switch/index.tsx","./src/components/trigger/style.css?tag=smoothly-trigger&encapsulation=scoped","./src/components/trigger/index.tsx","./src/components/tuple/index.tsx","./src/components/urlencoded/index.tsx"],"sourcesContent":["import { Observers } from \"./Observers\"\nexport default function () {\n\treturn { Observers }\n}\n","import { Type } from \"./Type\";\nclass IslyAny extends Type {\n constructor() {\n super(...arguments);\n this.is = (value => value != undefined);\n }\n}\nexport function any(name) {\n return new IslyAny(name ?? \"any\");\n}\n//# sourceMappingURL=any.js.map","import { Type } from \"./Type\";\n// eslint-disable-next-line @typescript-eslint/ban-types\nclass IslyFunction extends Type {\n constructor() {\n super(\"function\");\n this.is = (value => !!(value && typeof value == \"function\"));\n }\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function islyFunction() {\n return new IslyFunction();\n}\n//# sourceMappingURL=function.js.map","smoothly-app {\n\t--header-height: 5rem;\n\tdisplay: block;\n}\n\nsmoothly-app main {\n\theight: calc(100dvh - var(--header-height));\n\n}\n\nsmoothly-app[hidden] {\n\tdisplay: none;\n}\n\nsmoothly-app>smoothly-notifier {\n\theight: 100%;\n\tbackground: none;\n}\n\nsmoothly-app>smoothly-notifier>header {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 5;\n\twidth: 100%;\n\theight: var(--header-height);\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tbox-sizing: border-box;\n\talign-items: center;\n\tbox-shadow: 0 2px 5px 0 rgba(var(--smoothly-dark-shadow));\n\tborder-bottom: 1px solid rgba(var(--smoothly-dark-color));\n\tbackground: rgba(var(--smoothly-color));\n\tcolor: rgba(var(--smoothly-color-contrast));\n}\n\nsmoothly-app>smoothly-notifier>header>nav {\n\twidth: 100%;\n\tflex-shrink: 2;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav,\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\tdisplay: flex;\n\tmargin: 0;\n}\n\nsmoothly-app>smoothly-notifier>header>h1 {\n\tmargin-left: 1rem;\n\tmargin-bottom: 0.8em;\n\tdisplay: flex;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>h1>a {\n\tdisplay: inline-block;\n\talign-self: center;\n\tsize: 100%;\n\tbackground-position-y: center;\n\ttext-decoration: none;\n\twhite-space: nowrap;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tline-height: 1.6cm;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tline-height: 1.6cm;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul {\n\twidth: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container {\n\tdisplay: flex;\n\talign-items: center;\n\theight: 100%;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\tdisplay: flex;\n\tgap: 1rem;\n\talign-items: center;\n\theight: 100%;\n\tmargin-left: auto;\n\tmargin-right: 1rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-end\"] {\n\twidth: fit-content;\n\tgap: 0.5em;\n\talign-self: center;\n\theight: fit-content;\n\tmargin-left: 10rem;\n}\n\nsmoothly-app>smoothly-notifier>header>nav>ul li a {\n\tdisplay: flex;\n\theight: 2.3rem;\n\ttext-decoration: none;\n\talign-items: center;\n\talign-self: center;\n}\n\n@media screen and (max-width: 900px) {\n\tsmoothly-app>smoothly-notifier>header>nav {\n\t\twidth: 50dvw;\n\t\tmax-width: 15rem;\n\t\ttop: 100%;\n\t\tposition: absolute;\n\t\tmax-height: calc(100dvh - var(--header-height));\n\t\toverflow-y: scroll;\n\t\tright: 0;\n\t\theight: auto;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav,\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tflex-direction: column;\n\t\tbackground-color: rgba(var(--smoothly-color));\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul {\n\t\tpadding: 1.5rem;\n\t\tbox-sizing: border-box;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul li {\n\t\tmargin-right: 0;\n\t\tmargin-bottom: 1em;\n\t\twidth: 100%;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>smoothly-burger {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>[slot=\"nav-start\"] {\n\t\tdisplay: none;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container,\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\t\tflex-direction: column;\n\t\tmargin: 0;\n\t\talign-items: start;\n\t\tjustify-content: center;\n\t\tgap: 1em;\n\t}\n\n\tsmoothly-app>smoothly-notifier>header>nav>ul>div.nav-start-container>*:last-child {\n\t\tmargin-bottom: 1em;\n\t}\n}\n\nsmoothly-app>smoothly-notifier>header>nav:not(.menu-open) {\n\tdisplay: none;\n}\n","import { Component, h, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { SmoothlyAppRoomCustomEvent } from \"../../components\"\nimport { Color } from \"../../model\"\n\ntype Room = {\n\telement: HTMLSmoothlyAppRoomElement\n}\n@Component({\n\ttag: \"smoothly-app\",\n\tstyleUrl: \"style.css\",\n\tscoped: false,\n})\nexport class SmoothlyApp {\n\t@Prop() label = \"App\"\n\t@Prop() color: Color\n\t@Prop() home?: string\n\t@Prop({ mutable: true, reflect: true }) menuOpen = false\n\t@State() selected?: Room\n\tprivate burgerVisibility: boolean\n\tprivate burgerElement?: HTMLElement\n\tprivate navElement?: HTMLElement\n\tmainElement?: HTMLElement\n\trooms: Record<string, Room | undefined> = {}\n\tasync componentDidRender() {\n\t\tif (!this.selected && !window.location.search)\n\t\t\t(this.home && this.rooms[this.home]\n\t\t\t\t? this.rooms[this.home]\n\t\t\t\t: Object.values(this.rooms).find(room => !room?.element.disabled)\n\t\t\t)?.element.setSelected(true)\n\t}\n\t@Method()\n\tasync selectRoom(path: string) {\n\t\tthis.rooms[path]?.element.setSelected(true)\n\t}\n\t@Watch(\"selected\")\n\tasync selectedChanged() {\n\t\tObject.values(this.rooms).forEach(\n\t\t\troom => room?.element.path != this.selected?.element.path && room?.element.setSelected(false)\n\t\t)\n\t\tconst content = await this.selected?.element.getContent()\n\t\tif (this.mainElement && content) {\n\t\t\tthis.mainElement.innerHTML = \"\"\n\t\t\tthis.mainElement.appendChild(content)\n\t\t}\n\t}\n\tburgerVisibilityHandler(event: CustomEvent<boolean>) {\n\t\tthis.burgerVisibility = event.detail\n\t}\n\tburgerStatusHandler(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tthis.menuOpen = event.detail\n\t}\n\t@Listen(\"popstate\", { target: \"window\" })\n\tasync locationChangeHandler(event: PopStateEvent) {\n\t\tthis.rooms[event.state.smoothlyPath]?.element.setSelected(true, { history: true })\n\t}\n\t@Listen(\"smoothlyRoomSelected\")\n\troomSelectedHandler(event: SmoothlyAppRoomCustomEvent<{ history: boolean }>) {\n\t\tthis.selected = { element: event.target }\n\t\tif (this.burgerVisibility)\n\t\t\tthis.menuOpen = false\n\t\tif (!event.detail.history) {\n\t\t\tconst path = this.selected.element.path.toString()\n\t\t\tconst location = new URL(window.location.pathname == path ? window.location.href : window.location.origin)\n\t\t\tlocation.pathname = path\n\t\t\twindow.history.pushState({ smoothlyPath: path }, \"\", location.href)\n\t\t}\n\t}\n\t@Listen(\"smoothlyRoomLoaded\")\n\troomLoadedHandler(event: SmoothlyAppRoomCustomEvent<{ selected: boolean }>) {\n\t\tconst room = (this.rooms[event.target.path.toString()] = { element: event.target })\n\t\tif (room.element.selected) {\n\t\t\tthis.selected = room\n\t\t\twindow.history.replaceState({ smoothlyPath: room.element.path }, \"\", window.location.href)\n\t\t}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.burgerVisibility)\n\t\t\tif (event.composedPath().some(e => e == this.burgerElement || e == this.navElement))\n\t\t\t\t!this.menuOpen\n\t\t\telse\n\t\t\t\tthis.menuOpen = false\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-notifier>\n\t\t\t\t<header color={this.color}>\n\t\t\t\t\t<h1>\n\t\t\t\t\t\t<a href={\"\"}>{this.label}</a>\n\t\t\t\t\t</h1>\n\t\t\t\t\t<slot name=\"header\"></slot>\n\t\t\t\t\t<nav ref={e => (this.navElement = e)} class={{ \"menu-open\": this.menuOpen }}>\n\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t<div class={\"nav-start-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-start\"></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<slot> </slot>\n\t\t\t\t\t\t\t<div class={\"nav-end-container\"}>\n\t\t\t\t\t\t\t\t<slot name=\"nav-end\"></slot>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</ul>\n\t\t\t\t\t</nav>\n\t\t\t\t\t<smoothly-burger\n\t\t\t\t\t\tref={e => (this.burgerElement = e)}\n\t\t\t\t\t\topen={this.menuOpen}\n\t\t\t\t\t\tonSmoothlyNavStatus={e => this.burgerStatusHandler(e)}\n\t\t\t\t\t\tonSmoothlyVisibleStatus={e => this.burgerVisibilityHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</header>\n\t\t\t\t<main ref={e => (this.mainElement = e)}></main>\n\t\t\t</smoothly-notifier>\n\t\t)\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-app-demo\",\n})\nexport class SmoothlyAppDemo {\n\t@Prop() baseUrl: string\n\tapp?: HTMLSmoothlyAppElement\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-app color=\"dark\" label=\"Smoothly Demo\" home=\"/root\" ref={e => (this.app = e)}>\n\t\t\t\t<smoothly-trigger slot=\"nav-start\" type=\"link\" name=\"logout\">\n\t\t\t\t\t<smoothly-icon toolTip={\"Log out\"} name=\"log-out\" size=\"medium\"></smoothly-icon>\n\t\t\t\t</smoothly-trigger>\n\t\t\t\t<smoothly-app-room path=\"/root\" label=\"root\">\n\t\t\t\t\t<h2>Theme</h2>\n\t\t\t\t\t<smoothly-theme-picker>\n\t\t\t\t\t\t<smoothly-item value=\"assets/style/smoothly.css\">Smoothly</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.issuefab.com/assets/style/index.css\">Issuefab</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.proquse.com/assets/style/index.css\">Proquse</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://app.weekmeter.com/assets/style/index.css\">Weekmeter</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://dash.pax2pay.app/p2pdash.css\">Pax2Pay Dashboard</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://ui.pax2pay.app/assets/style/pax2pay.css\">Pax2Pay Portal</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/intergiro/index.css\">Intergiro Monitor</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/light/index.css\">Payfunc Light</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"https://theme.payfunc.com/dark/index.css\">Payfunc Dark</smoothly-item>\n\t\t\t\t\t</smoothly-theme-picker>\n\t\t\t\t\t<smoothly-theme-colors></smoothly-theme-colors>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo /redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/redirect\", window.location.origin).href}>\n\t\t\t\t\t\tTo new URL(\"redirect\")\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"redirect/nested\">\n\t\t\t\t\t\tTo redirect nested\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/links\" label=\"Links\">\n\t\t\t\t\t<smoothly-input type=\"text\">Default</smoothly-input>\n\t\t\t\t\t<div style={{ padding: \"1em\", maxWidth: \"12em\" }}>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" link=\"https://google.com\">\n\t\t\t\t\t\t\topen\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\tfill=\"solid\"\n\t\t\t\t\t\t\tcolor=\"danger\"\n\t\t\t\t\t\t\tlink=\"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf\"\n\t\t\t\t\t\t\ttype=\"download\">\n\t\t\t\t\t\t\tdownload\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button type=\"link\" fill=\"clear\" color=\"danger\" onClick={() => alert(\"clicked\")}>\n\t\t\t\t\t\t\taction link\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/input\" label=\"Input\">\n\t\t\t\t\t<smoothly-input-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/button\" label=\"Button\">\n\t\t\t\t\t<smoothly-button-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/dialog\" label=\"Dialog\">\n\t\t\t\t\t<smoothly-dialog-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/display\" label=\"Display\" icon=\"eye-outline\">\n\t\t\t\t\t<smoothly-display-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/table\" label=\"Table\">\n\t\t\t\t\t<smoothly-table-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/select\" label=\"Select\">\n\t\t\t\t\t<smoothly-select-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/icon\" label=\"Icon\" content={<smoothly-icon-demo />}></smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/old\" label=\"Old\" to=\"select\"></smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect\" label=\"Redirect\">\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/input\">\n\t\t\t\t\t\tTo input\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"../button\">\n\t\t\t\t\t\tTo button\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/hidden\", window.location.origin).href}>\n\t\t\t\t\t\tTo hidden\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\t\tTo redirect\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"nested\">\n\t\t\t\t\t\tTo redirect nested, relative path\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/hidden\">\n\t\t\t\t\t<p>hello world!</p>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/redirect/nested\">this is a nested room</smoothly-app-room>\n\t\t\t</smoothly-app>\n\t\t)\n\t}\n}\n","// src/path-to-regex-modified.ts\nvar regexIdentifierStart = /[$_\\p{ID_Start}]/u;\nvar regexIdentifierPart = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\nfunction isASCII(str, extended) {\n return (extended ? /^[\\x00-\\xFF]*$/ : /^[\\x00-\\x7F]*$/).test(str);\n}\nfunction lexer(str, lenient = false) {\n const tokens = [];\n let i = 0;\n while (i < str.length) {\n const char = str[i];\n const ErrorOrInvalid = function(msg) {\n if (!lenient)\n throw new TypeError(msg);\n tokens.push({ type: \"INVALID_CHAR\", index: i, value: str[i++] });\n };\n if (char === \"*\") {\n tokens.push({ type: \"ASTERISK\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n let name = \"\";\n let j = i + 1;\n while (j < str.length) {\n const code = str.substr(j, 1);\n if (j === i + 1 && regexIdentifierStart.test(code) || j !== i + 1 && regexIdentifierPart.test(code)) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name) {\n ErrorOrInvalid(`Missing parameter name at ${i}`);\n continue;\n }\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n let count = 1;\n let pattern = \"\";\n let j = i + 1;\n let error = false;\n if (str[j] === \"?\") {\n ErrorOrInvalid(`Pattern cannot start with \"?\" at ${j}`);\n continue;\n }\n while (j < str.length) {\n if (!isASCII(str[j], false)) {\n ErrorOrInvalid(`Invalid character '${str[j]}' at ${j}.`);\n error = true;\n break;\n }\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n ErrorOrInvalid(`Capturing groups are not allowed at ${j}`);\n error = true;\n break;\n }\n }\n pattern += str[j++];\n }\n if (error) {\n continue;\n }\n if (count) {\n ErrorOrInvalid(`Unbalanced pattern at ${i}`);\n continue;\n }\n if (!pattern) {\n ErrorOrInvalid(`Missing pattern at ${i}`);\n continue;\n }\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\nfunction parse(str, options = {}) {\n const tokens = lexer(str);\n const { prefixes = \"./\" } = options;\n const defaultPattern = `[^${escapeString(options.delimiter === void 0 ? \"/#?\" : options.delimiter)}]+?`;\n const result = [];\n let key = 0;\n let i = 0;\n let path = \"\";\n let nameSet = /* @__PURE__ */ new Set();\n const tryConsume = (type) => {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n const tryConsumeModifier = () => {\n const r = tryConsume(\"MODIFIER\");\n if (r) {\n return r;\n }\n return tryConsume(\"ASTERISK\");\n };\n const mustConsume = (type) => {\n const value = tryConsume(type);\n if (value !== void 0)\n return value;\n const { type: nextType, index } = tokens[i];\n throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n };\n const consumeText = () => {\n let result2 = \"\";\n let value;\n while (value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\")) {\n result2 += value;\n }\n return result2;\n };\n const DefaultEncodePart = (value) => {\n return value;\n };\n const encodePart = options.encodePart || DefaultEncodePart;\n while (i < tokens.length) {\n const char = tryConsume(\"CHAR\");\n const name = tryConsume(\"NAME\");\n let pattern = tryConsume(\"PATTERN\");\n if (!name && !pattern && tryConsume(\"ASTERISK\")) {\n pattern = \".*\";\n }\n if (name || pattern) {\n let prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(encodePart(path));\n path = \"\";\n }\n const finalName = name || key++;\n if (nameSet.has(finalName)) {\n throw new TypeError(`Duplicate name '${finalName}'.`);\n }\n nameSet.add(finalName);\n result.push({\n name: finalName,\n prefix: encodePart(prefix),\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsumeModifier() || \"\"\n });\n continue;\n }\n const value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n const open = tryConsume(\"OPEN\");\n if (open) {\n const prefix = consumeText();\n const name2 = tryConsume(\"NAME\") || \"\";\n let pattern2 = tryConsume(\"PATTERN\") || \"\";\n if (!name2 && !pattern2 && tryConsume(\"ASTERISK\")) {\n pattern2 = \".*\";\n }\n const suffix = consumeText();\n mustConsume(\"CLOSE\");\n const modifier = tryConsumeModifier() || \"\";\n if (!name2 && !pattern2 && !modifier) {\n path += prefix;\n continue;\n }\n if (!name2 && !pattern2 && !prefix) {\n continue;\n }\n if (path) {\n result.push(encodePart(path));\n path = \"\";\n }\n result.push({\n name: name2 || (pattern2 ? key++ : \"\"),\n pattern: name2 && !pattern2 ? defaultPattern : pattern2,\n prefix: encodePart(prefix),\n suffix: encodePart(suffix),\n modifier\n });\n continue;\n }\n if (path) {\n result.push(encodePart(path));\n path = \"\";\n }\n mustConsume(\"END\");\n }\n return result;\n}\nfunction escapeString(str) {\n return str.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction flags(options) {\n return options && options.ignoreCase ? \"ui\" : \"u\";\n}\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n const groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n let index = 0;\n let execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\nfunction arrayToRegexp(paths, keys, options) {\n const parts = paths.map((path) => pathToRegexp(path, keys, options).source);\n return new RegExp(`(?:${parts.join(\"|\")})`, flags(options));\n}\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\nfunction tokensToRegexp(tokens, keys, options = {}) {\n const {\n strict = false,\n start = true,\n end = true,\n encode = (x) => x\n } = options;\n const endsWith = `[${escapeString(options.endsWith === void 0 ? \"\" : options.endsWith)}]|$`;\n const delimiter = `[${escapeString(options.delimiter === void 0 ? \"/#?\" : options.delimiter)}]`;\n let route = start ? \"^\" : \"\";\n for (const token of tokens) {\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n } else {\n const prefix = escapeString(encode(token.prefix));\n const suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n const mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += `(?:${prefix}((?:${token.pattern})(?:${suffix}${prefix}(?:${token.pattern}))*)${suffix})${mod}`;\n } else {\n route += `(?:${prefix}(${token.pattern})${suffix})${token.modifier}`;\n }\n } else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n route += `((?:${token.pattern})${token.modifier})`;\n } else {\n route += `(${token.pattern})${token.modifier}`;\n }\n }\n } else {\n route += `(?:${prefix}${suffix})${token.modifier}`;\n }\n }\n }\n if (end) {\n if (!strict)\n route += `${delimiter}?`;\n route += !options.endsWith ? \"$\" : `(?=${endsWith})`;\n } else {\n const endToken = tokens[tokens.length - 1];\n const isEndDelimited = typeof endToken === \"string\" ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 : endToken === void 0;\n if (!strict) {\n route += `(?:${delimiter}(?=${endsWith}))?`;\n }\n if (!isEndDelimited) {\n route += `(?=${delimiter}|${endsWith})`;\n }\n }\n return new RegExp(route, flags(options));\n}\nfunction pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n\n// src/url-utils.ts\nvar DEFAULT_OPTIONS = {\n delimiter: \"\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar HOSTNAME_OPTIONS = {\n delimiter: \".\",\n prefixes: \"\",\n sensitive: true,\n strict: true\n};\nvar PATHNAME_OPTIONS = {\n delimiter: \"/\",\n prefixes: \"/\",\n sensitive: true,\n strict: true\n};\nfunction isAbsolutePathname(pathname, isPattern) {\n if (!pathname.length) {\n return false;\n }\n if (pathname[0] === \"/\") {\n return true;\n }\n if (!isPattern) {\n return false;\n }\n if (pathname.length < 2) {\n return false;\n }\n if ((pathname[0] == \"\\\\\" || pathname[0] == \"{\") && pathname[1] == \"/\") {\n return true;\n }\n return false;\n}\nfunction maybeStripPrefix(value, prefix) {\n if (value.startsWith(prefix)) {\n return value.substring(prefix.length, value.length);\n }\n return value;\n}\nfunction maybeStripSuffix(value, suffix) {\n if (value.endsWith(suffix)) {\n return value.substr(0, value.length - suffix.length);\n }\n return value;\n}\nfunction treatAsIPv6Hostname(value) {\n if (!value || value.length < 2) {\n return false;\n }\n if (value[0] === \"[\") {\n return true;\n }\n if ((value[0] === \"\\\\\" || value[0] === \"{\") && value[1] === \"[\") {\n return true;\n }\n return false;\n}\nvar SPECIAL_SCHEMES = [\n \"ftp\",\n \"file\",\n \"http\",\n \"https\",\n \"ws\",\n \"wss\"\n];\nfunction isSpecialScheme(protocol_regexp) {\n if (!protocol_regexp) {\n return true;\n }\n for (const scheme of SPECIAL_SCHEMES) {\n if (protocol_regexp.test(scheme)) {\n return true;\n }\n }\n return false;\n}\nfunction canonicalizeHash(hash, isPattern) {\n hash = maybeStripPrefix(hash, \"#\");\n if (isPattern || hash === \"\") {\n return hash;\n }\n const url = new URL(\"https://example.com\");\n url.hash = hash;\n return url.hash ? url.hash.substring(1, url.hash.length) : \"\";\n}\nfunction canonicalizeSearch(search, isPattern) {\n search = maybeStripPrefix(search, \"?\");\n if (isPattern || search === \"\") {\n return search;\n }\n const url = new URL(\"https://example.com\");\n url.search = search;\n return url.search ? url.search.substring(1, url.search.length) : \"\";\n}\nfunction canonicalizeHostname(hostname, isPattern) {\n if (isPattern || hostname === \"\") {\n return hostname;\n }\n if (treatAsIPv6Hostname(hostname)) {\n return ipv6HostnameEncodeCallback(hostname);\n } else {\n return hostnameEncodeCallback(hostname);\n }\n}\nfunction canonicalizePassword(password, isPattern) {\n if (isPattern || password === \"\") {\n return password;\n }\n const url = new URL(\"https://example.com\");\n url.password = password;\n return url.password;\n}\nfunction canonicalizeUsername(username, isPattern) {\n if (isPattern || username === \"\") {\n return username;\n }\n const url = new URL(\"https://example.com\");\n url.username = username;\n return url.username;\n}\nfunction canonicalizePathname(pathname, protocol, isPattern) {\n if (isPattern || pathname === \"\") {\n return pathname;\n }\n if (protocol && !SPECIAL_SCHEMES.includes(protocol)) {\n const url = new URL(`${protocol}:${pathname}`);\n return url.pathname;\n }\n const leadingSlash = pathname[0] == \"/\";\n pathname = new URL(\n !leadingSlash ? \"/-\" + pathname : pathname,\n \"https://example.com\"\n ).pathname;\n if (!leadingSlash) {\n pathname = pathname.substring(2, pathname.length);\n }\n return pathname;\n}\nfunction canonicalizePort(port, protocol, isPattern) {\n if (defaultPortForProtocol(protocol) === port) {\n port = \"\";\n }\n if (isPattern || port === \"\") {\n return port;\n }\n return portEncodeCallback(port);\n}\nfunction canonicalizeProtocol(protocol, isPattern) {\n protocol = maybeStripSuffix(protocol, \":\");\n if (isPattern || protocol === \"\") {\n return protocol;\n }\n return protocolEncodeCallback(protocol);\n}\nfunction defaultPortForProtocol(protocol) {\n switch (protocol) {\n case \"ws\":\n case \"http\":\n return \"80\";\n case \"wws\":\n case \"https\":\n return \"443\";\n case \"ftp\":\n return \"21\";\n default:\n return \"\";\n }\n}\nfunction protocolEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[-+.A-Za-z0-9]*$/.test(input))\n return input.toLowerCase();\n throw new TypeError(`Invalid protocol '${input}'.`);\n}\nfunction usernameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.username = input;\n return url.username;\n}\nfunction passwordEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.password = input;\n return url.password;\n}\nfunction hostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[\\t\\n\\r #%/:<>?@[\\]^\\\\|]/g.test(input)) {\n throw new TypeError(`Invalid hostname '${input}'`);\n }\n const url = new URL(\"https://example.com\");\n url.hostname = input;\n return url.hostname;\n}\nfunction ipv6HostnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/[^0-9a-fA-F[\\]:]/g.test(input)) {\n throw new TypeError(`Invalid IPv6 hostname '${input}'`);\n }\n return input.toLowerCase();\n}\nfunction portEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n if (/^[0-9]*$/.test(input) && parseInt(input) <= 65535) {\n return input;\n }\n throw new TypeError(`Invalid port '${input}'.`);\n}\nfunction standardURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.pathname = input[0] !== \"/\" ? \"/-\" + input : input;\n if (input[0] !== \"/\") {\n return url.pathname.substring(2, url.pathname.length);\n }\n return url.pathname;\n}\nfunction pathURLPathnameEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(`data:${input}`);\n return url.pathname;\n}\nfunction searchEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.search = input;\n return url.search.substring(1, url.search.length);\n}\nfunction hashEncodeCallback(input) {\n if (input === \"\") {\n return input;\n }\n const url = new URL(\"https://example.com\");\n url.hash = input;\n return url.hash.substring(1, url.hash.length);\n}\n\n// src/url-pattern-parser.ts\nvar Parser = class {\n constructor(input) {\n this.tokenList = [];\n this.internalResult = {};\n this.tokenIndex = 0;\n this.tokenIncrement = 1;\n this.componentStart = 0;\n this.state = 0 /* INIT */;\n this.groupDepth = 0;\n this.hostnameIPv6BracketDepth = 0;\n this.shouldTreatAsStandardURL = false;\n this.input = input;\n }\n get result() {\n return this.internalResult;\n }\n parse() {\n this.tokenList = lexer(this.input, true);\n for (; this.tokenIndex < this.tokenList.length; this.tokenIndex += this.tokenIncrement) {\n this.tokenIncrement = 1;\n if (this.tokenList[this.tokenIndex].type === \"END\") {\n if (this.state === 0 /* INIT */) {\n this.rewind();\n if (this.isHashPrefix()) {\n this.changeState(9 /* HASH */, 1);\n } else if (this.isSearchPrefix()) {\n this.changeState(8 /* SEARCH */, 1);\n this.internalResult.hash = \"\";\n } else {\n this.changeState(7 /* PATHNAME */, 0);\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n }\n continue;\n } else if (this.state === 2 /* AUTHORITY */) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n continue;\n }\n this.changeState(10 /* DONE */, 0);\n break;\n }\n if (this.groupDepth > 0) {\n if (this.isGroupClose()) {\n this.groupDepth -= 1;\n } else {\n continue;\n }\n }\n if (this.isGroupOpen()) {\n this.groupDepth += 1;\n continue;\n }\n switch (this.state) {\n case 0 /* INIT */:\n if (this.isProtocolSuffix()) {\n this.internalResult.username = \"\";\n this.internalResult.password = \"\";\n this.internalResult.hostname = \"\";\n this.internalResult.port = \"\";\n this.internalResult.pathname = \"\";\n this.internalResult.search = \"\";\n this.internalResult.hash = \"\";\n this.rewindAndSetState(1 /* PROTOCOL */);\n }\n break;\n case 1 /* PROTOCOL */:\n if (this.isProtocolSuffix()) {\n this.computeShouldTreatAsStandardURL();\n let nextState = 7 /* PATHNAME */;\n let skip = 1;\n if (this.shouldTreatAsStandardURL) {\n this.internalResult.pathname = \"/\";\n }\n if (this.nextIsAuthoritySlashes()) {\n nextState = 2 /* AUTHORITY */;\n skip = 3;\n } else if (this.shouldTreatAsStandardURL) {\n nextState = 2 /* AUTHORITY */;\n }\n this.changeState(nextState, skip);\n }\n break;\n case 2 /* AUTHORITY */:\n if (this.isIdentityTerminator()) {\n this.rewindAndSetState(3 /* USERNAME */);\n } else if (this.isPathnameStart() || this.isSearchPrefix() || this.isHashPrefix()) {\n this.rewindAndSetState(5 /* HOSTNAME */);\n }\n break;\n case 3 /* USERNAME */:\n if (this.isPasswordPrefix()) {\n this.changeState(4 /* PASSWORD */, 1);\n } else if (this.isIdentityTerminator()) {\n this.changeState(5 /* HOSTNAME */, 1);\n }\n break;\n case 4 /* PASSWORD */:\n if (this.isIdentityTerminator()) {\n this.changeState(5 /* HOSTNAME */, 1);\n }\n break;\n case 5 /* HOSTNAME */:\n if (this.isIPv6Open()) {\n this.hostnameIPv6BracketDepth += 1;\n } else if (this.isIPv6Close()) {\n this.hostnameIPv6BracketDepth -= 1;\n }\n if (this.isPortPrefix() && !this.hostnameIPv6BracketDepth) {\n this.changeState(6 /* PORT */, 1);\n } else if (this.isPathnameStart()) {\n this.changeState(7 /* PATHNAME */, 0);\n } else if (this.isSearchPrefix()) {\n this.changeState(8 /* SEARCH */, 1);\n } else if (this.isHashPrefix()) {\n this.changeState(9 /* HASH */, 1);\n }\n break;\n case 6 /* PORT */:\n if (this.isPathnameStart()) {\n this.changeState(7 /* PATHNAME */, 0);\n } else if (this.isSearchPrefix()) {\n this.changeState(8 /* SEARCH */, 1);\n } else if (this.isHashPrefix()) {\n this.changeState(9 /* HASH */, 1);\n }\n break;\n case 7 /* PATHNAME */:\n if (this.isSearchPrefix()) {\n this.changeState(8 /* SEARCH */, 1);\n } else if (this.isHashPrefix()) {\n this.changeState(9 /* HASH */, 1);\n }\n break;\n case 8 /* SEARCH */:\n if (this.isHashPrefix()) {\n this.changeState(9 /* HASH */, 1);\n }\n break;\n case 9 /* HASH */:\n break;\n case 10 /* DONE */:\n break;\n }\n }\n }\n changeState(newState, skip) {\n switch (this.state) {\n case 0 /* INIT */:\n break;\n case 1 /* PROTOCOL */:\n this.internalResult.protocol = this.makeComponentString();\n break;\n case 2 /* AUTHORITY */:\n break;\n case 3 /* USERNAME */:\n this.internalResult.username = this.makeComponentString();\n break;\n case 4 /* PASSWORD */:\n this.internalResult.password = this.makeComponentString();\n break;\n case 5 /* HOSTNAME */:\n this.internalResult.hostname = this.makeComponentString();\n break;\n case 6 /* PORT */:\n this.internalResult.port = this.makeComponentString();\n break;\n case 7 /* PATHNAME */:\n this.internalResult.pathname = this.makeComponentString();\n break;\n case 8 /* SEARCH */:\n this.internalResult.search = this.makeComponentString();\n break;\n case 9 /* HASH */:\n this.internalResult.hash = this.makeComponentString();\n break;\n case 10 /* DONE */:\n break;\n }\n this.changeStateWithoutSettingComponent(newState, skip);\n }\n changeStateWithoutSettingComponent(newState, skip) {\n this.state = newState;\n this.componentStart = this.tokenIndex + skip;\n this.tokenIndex += skip;\n this.tokenIncrement = 0;\n }\n rewind() {\n this.tokenIndex = this.componentStart;\n this.tokenIncrement = 0;\n }\n rewindAndSetState(newState) {\n this.rewind();\n this.state = newState;\n }\n safeToken(index) {\n if (index < 0) {\n index = this.tokenList.length - index;\n }\n if (index < this.tokenList.length) {\n return this.tokenList[index];\n }\n return this.tokenList[this.tokenList.length - 1];\n }\n isNonSpecialPatternChar(index, value) {\n const token = this.safeToken(index);\n return token.value === value && (token.type === \"CHAR\" || token.type === \"ESCAPED_CHAR\" || token.type === \"INVALID_CHAR\");\n }\n isProtocolSuffix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n nextIsAuthoritySlashes() {\n return this.isNonSpecialPatternChar(this.tokenIndex + 1, \"/\") && this.isNonSpecialPatternChar(this.tokenIndex + 2, \"/\");\n }\n isIdentityTerminator() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"@\");\n }\n isPasswordPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPortPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \":\");\n }\n isPathnameStart() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"/\");\n }\n isSearchPrefix() {\n if (this.isNonSpecialPatternChar(this.tokenIndex, \"?\")) {\n return true;\n }\n if (this.tokenList[this.tokenIndex].value !== \"?\") {\n return false;\n }\n const previousToken = this.safeToken(this.tokenIndex - 1);\n return previousToken.type !== \"NAME\" && previousToken.type !== \"PATTERN\" && previousToken.type !== \"CLOSE\" && previousToken.type !== \"ASTERISK\";\n }\n isHashPrefix() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"#\");\n }\n isGroupOpen() {\n return this.tokenList[this.tokenIndex].type == \"OPEN\";\n }\n isGroupClose() {\n return this.tokenList[this.tokenIndex].type == \"CLOSE\";\n }\n isIPv6Open() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"[\");\n }\n isIPv6Close() {\n return this.isNonSpecialPatternChar(this.tokenIndex, \"]\");\n }\n makeComponentString() {\n const token = this.tokenList[this.tokenIndex];\n const componentCharStart = this.safeToken(this.componentStart).index;\n return this.input.substring(componentCharStart, token.index);\n }\n computeShouldTreatAsStandardURL() {\n const options = {};\n Object.assign(options, DEFAULT_OPTIONS);\n options.encodePart = protocolEncodeCallback;\n const regexp = pathToRegexp(this.makeComponentString(), void 0, options);\n this.shouldTreatAsStandardURL = isSpecialScheme(regexp);\n }\n};\n\n// src/url-pattern.ts\nvar COMPONENTS = [\n \"protocol\",\n \"username\",\n \"password\",\n \"hostname\",\n \"port\",\n \"pathname\",\n \"search\",\n \"hash\"\n];\nvar DEFAULT_PATTERN = \"*\";\nfunction extractValues(url, baseURL) {\n if (typeof url !== \"string\") {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n const o = new URL(url, baseURL);\n return {\n protocol: o.protocol.substring(0, o.protocol.length - 1),\n username: o.username,\n password: o.password,\n hostname: o.hostname,\n port: o.port,\n pathname: o.pathname,\n search: o.search != \"\" ? o.search.substring(1, o.search.length) : void 0,\n hash: o.hash != \"\" ? o.hash.substring(1, o.hash.length) : void 0\n };\n}\nfunction processBaseURLString(input, isPattern) {\n if (!isPattern) {\n return input;\n }\n return escapePatternString(input);\n}\nfunction applyInit(o, init, isPattern) {\n let baseURL;\n if (typeof init.baseURL === \"string\") {\n try {\n baseURL = new URL(init.baseURL);\n o.protocol = processBaseURLString(baseURL.protocol.substring(0, baseURL.protocol.length - 1), isPattern);\n o.username = processBaseURLString(baseURL.username, isPattern);\n o.password = processBaseURLString(baseURL.password, isPattern);\n o.hostname = processBaseURLString(baseURL.hostname, isPattern);\n o.port = processBaseURLString(baseURL.port, isPattern);\n o.pathname = processBaseURLString(baseURL.pathname, isPattern);\n o.search = processBaseURLString(baseURL.search.substring(1, baseURL.search.length), isPattern);\n o.hash = processBaseURLString(baseURL.hash.substring(1, baseURL.hash.length), isPattern);\n } catch {\n throw new TypeError(`invalid baseURL '${init.baseURL}'.`);\n }\n }\n if (typeof init.protocol === \"string\") {\n o.protocol = canonicalizeProtocol(init.protocol, isPattern);\n }\n if (typeof init.username === \"string\") {\n o.username = canonicalizeUsername(init.username, isPattern);\n }\n if (typeof init.password === \"string\") {\n o.password = canonicalizePassword(init.password, isPattern);\n }\n if (typeof init.hostname === \"string\") {\n o.hostname = canonicalizeHostname(init.hostname, isPattern);\n }\n if (typeof init.port === \"string\") {\n o.port = canonicalizePort(init.port, o.protocol, isPattern);\n }\n if (typeof init.pathname === \"string\") {\n o.pathname = init.pathname;\n if (baseURL && !isAbsolutePathname(o.pathname, isPattern)) {\n const slashIndex = baseURL.pathname.lastIndexOf(\"/\");\n if (slashIndex >= 0) {\n o.pathname = processBaseURLString(baseURL.pathname.substring(0, slashIndex + 1), isPattern) + o.pathname;\n }\n }\n o.pathname = canonicalizePathname(o.pathname, o.protocol, isPattern);\n }\n if (typeof init.search === \"string\") {\n o.search = canonicalizeSearch(init.search, isPattern);\n }\n if (typeof init.hash === \"string\") {\n o.hash = canonicalizeHash(init.hash, isPattern);\n }\n return o;\n}\nfunction escapePatternString(value) {\n return value.replace(/([+*?:{}()\\\\])/g, \"\\\\$1\");\n}\nfunction escapeRegexpString(value) {\n return value.replace(/([.+*?^${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\nfunction tokensToPattern(tokens, options) {\n const wildcardPattern = \".*\";\n const segmentWildcardPattern = `[^${escapeRegexpString(options.delimiter === void 0 ? \"/#?\" : options.delimiter)}]+?`;\n const regexIdentifierPart2 = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\n let result = \"\";\n for (let i = 0; i < tokens.length; ++i) {\n const token = tokens[i];\n const lastToken = i > 0 ? tokens[i - 1] : null;\n const nextToken = i < tokens.length - 1 ? tokens[i + 1] : null;\n if (typeof token === \"string\") {\n result += escapePatternString(token);\n continue;\n }\n if (token.pattern === \"\") {\n if (token.modifier === \"\") {\n result += escapePatternString(token.prefix);\n continue;\n }\n result += `{${escapePatternString(token.prefix)}}${token.modifier}`;\n continue;\n }\n const customName = typeof token.name !== \"number\";\n const optionsPrefixes = options.prefixes !== void 0 ? options.prefixes : \"./\";\n let needsGrouping = token.suffix !== \"\" || token.prefix !== \"\" && (token.prefix.length !== 1 || !optionsPrefixes.includes(token.prefix));\n if (!needsGrouping && customName && token.pattern === segmentWildcardPattern && token.modifier === \"\" && nextToken && !nextToken.prefix && !nextToken.suffix) {\n if (typeof nextToken === \"string\") {\n const code = nextToken.length > 0 ? nextToken[0] : \"\";\n needsGrouping = regexIdentifierPart2.test(code);\n } else {\n needsGrouping = typeof nextToken.name === \"number\";\n }\n }\n if (!needsGrouping && token.prefix === \"\" && lastToken && typeof lastToken === \"string\" && lastToken.length > 0) {\n const code = lastToken[lastToken.length - 1];\n needsGrouping = optionsPrefixes.includes(code);\n }\n if (needsGrouping) {\n result += \"{\";\n }\n result += escapePatternString(token.prefix);\n if (customName) {\n result += `:${token.name}`;\n }\n if (token.pattern === wildcardPattern) {\n if (!customName && (!lastToken || typeof lastToken === \"string\" || lastToken.modifier || needsGrouping || token.prefix !== \"\")) {\n result += \"*\";\n } else {\n result += `(${wildcardPattern})`;\n }\n } else if (token.pattern === segmentWildcardPattern) {\n if (!customName) {\n result += `(${segmentWildcardPattern})`;\n }\n } else {\n result += `(${token.pattern})`;\n }\n if (token.pattern === segmentWildcardPattern && customName && token.suffix !== \"\") {\n if (regexIdentifierPart2.test(token.suffix[0])) {\n result += \"\\\\\";\n }\n }\n result += escapePatternString(token.suffix);\n if (needsGrouping) {\n result += \"}\";\n }\n result += token.modifier;\n }\n return result;\n}\nvar URLPattern = class {\n constructor(init = {}, baseURLOrOptions, options) {\n this.regexp = {};\n this.keys = {};\n this.component_pattern = {};\n try {\n let baseURL = void 0;\n if (typeof baseURLOrOptions === \"string\") {\n baseURL = baseURLOrOptions;\n } else {\n options = baseURLOrOptions;\n }\n if (typeof init === \"string\") {\n const parser = new Parser(init);\n parser.parse();\n init = parser.result;\n if (baseURL === void 0 && typeof init.protocol !== \"string\") {\n throw new TypeError(`A base URL must be provided for a relative constructor string.`);\n }\n init.baseURL = baseURL;\n } else {\n if (!init || typeof init !== \"object\") {\n throw new TypeError(`parameter 1 is not of type 'string' and cannot convert to dictionary.`);\n }\n if (baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n }\n if (typeof options === \"undefined\") {\n options = { ignoreCase: false };\n }\n const ignoreCaseOptions = { ignoreCase: options.ignoreCase === true };\n const defaults = {\n pathname: DEFAULT_PATTERN,\n protocol: DEFAULT_PATTERN,\n username: DEFAULT_PATTERN,\n password: DEFAULT_PATTERN,\n hostname: DEFAULT_PATTERN,\n port: DEFAULT_PATTERN,\n search: DEFAULT_PATTERN,\n hash: DEFAULT_PATTERN\n };\n this.pattern = applyInit(defaults, init, true);\n if (defaultPortForProtocol(this.pattern.protocol) === this.pattern.port) {\n this.pattern.port = \"\";\n }\n let component;\n for (component of COMPONENTS) {\n if (!(component in this.pattern))\n continue;\n const options2 = {};\n const pattern = this.pattern[component];\n this.keys[component] = [];\n switch (component) {\n case \"protocol\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = protocolEncodeCallback;\n break;\n case \"username\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = usernameEncodeCallback;\n break;\n case \"password\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = passwordEncodeCallback;\n break;\n case \"hostname\":\n Object.assign(options2, HOSTNAME_OPTIONS);\n if (treatAsIPv6Hostname(pattern)) {\n options2.encodePart = ipv6HostnameEncodeCallback;\n } else {\n options2.encodePart = hostnameEncodeCallback;\n }\n break;\n case \"port\":\n Object.assign(options2, DEFAULT_OPTIONS);\n options2.encodePart = portEncodeCallback;\n break;\n case \"pathname\":\n if (isSpecialScheme(this.regexp.protocol)) {\n Object.assign(options2, PATHNAME_OPTIONS, ignoreCaseOptions);\n options2.encodePart = standardURLPathnameEncodeCallback;\n } else {\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = pathURLPathnameEncodeCallback;\n }\n break;\n case \"search\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = searchEncodeCallback;\n break;\n case \"hash\":\n Object.assign(options2, DEFAULT_OPTIONS, ignoreCaseOptions);\n options2.encodePart = hashEncodeCallback;\n break;\n }\n try {\n const tokens = parse(pattern, options2);\n this.regexp[component] = tokensToRegexp(tokens, this.keys[component], options2);\n this.component_pattern[component] = tokensToPattern(tokens, options2);\n } catch {\n throw new TypeError(`invalid ${component} pattern '${this.pattern[component]}'.`);\n }\n }\n } catch (err) {\n throw new TypeError(`Failed to construct 'URLPattern': ${err.message}`);\n }\n }\n test(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return false;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return false;\n }\n let component;\n for (component of COMPONENTS) {\n if (!this.regexp[component].exec(values[component])) {\n return false;\n }\n }\n return true;\n }\n exec(input = {}, baseURL) {\n let values = {\n pathname: \"\",\n protocol: \"\",\n username: \"\",\n password: \"\",\n hostname: \"\",\n port: \"\",\n search: \"\",\n hash: \"\"\n };\n if (typeof input !== \"string\" && baseURL) {\n throw new TypeError(`parameter 1 is not of type 'string'.`);\n }\n if (typeof input === \"undefined\") {\n return;\n }\n try {\n if (typeof input === \"object\") {\n values = applyInit(values, input, false);\n } else {\n values = applyInit(values, extractValues(input, baseURL), false);\n }\n } catch (err) {\n return null;\n }\n let result = {};\n if (baseURL) {\n result.inputs = [input, baseURL];\n } else {\n result.inputs = [input];\n }\n let component;\n for (component of COMPONENTS) {\n let match = this.regexp[component].exec(values[component]);\n if (!match) {\n return null;\n }\n let groups = {};\n for (let [i, key] of this.keys[component].entries()) {\n if (typeof key.name === \"string\" || typeof key.name === \"number\") {\n let value = match[i + 1];\n groups[key.name] = value;\n }\n }\n result[component] = {\n input: values[component] || \"\",\n groups\n };\n }\n return result;\n }\n get protocol() {\n return this.component_pattern.protocol;\n }\n get username() {\n return this.component_pattern.username;\n }\n get password() {\n return this.component_pattern.password;\n }\n get hostname() {\n return this.component_pattern.hostname;\n }\n get port() {\n return this.component_pattern.port;\n }\n get pathname() {\n return this.component_pattern.pathname;\n }\n get search() {\n return this.component_pattern.search;\n }\n get hash() {\n return this.component_pattern.hash;\n }\n};\nexport {\n URLPattern\n};\n","import { URLPattern } from \"./dist/urlpattern.js\";\n\nexport { URLPattern };\n\nif (!globalThis.URLPattern) {\n globalThis.URLPattern = URLPattern;\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\ttext-align: center;\n\tcursor: pointer;\n}\n\nmain {\n\toverflow-y: auto;\n}\n\n:not(:host[label], :host[icon]),\n:host[disabled] {\n\tdisplay: none;\n}\n\n:host>main {\n\tdisplay: none;\n}\n\n:host>li {\n\theight: 100%;\n\tlist-style: none;\n}\n\n:host>li>a {\n\tpadding: 0 1.5em;\n\theight: 100%;\n}\n\n:host[selected]>li>a {\n\tdisplay: flex;\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n\n:host:hover>li>a {\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\ttransition: 0.2s;\n}\n\n:host>li>a>smoothly-icon {\n\talign-self: inherit;\n\tmargin-bottom: 1em;\n}\n\n@media screen and (max-width: 900px) {\n\t:host>li>a {\n\t\tpadding: 0;\n\t}\n\n\t:host>li>a {\n\t\tmargin-left: -1.5rem;\n\t\tmargin-right: -1.5rem;\n\t\tpadding-left: 1.5rem;\n\t\tpadding-right: 1.5rem;\n\t}\n}\n","import { Component, Event, EventEmitter, FunctionalComponent, h, Host, JSX, Method, Prop } from \"@stencil/core\"\nimport \"urlpattern-polyfill\"\nimport { Icon } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-app-room\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyAppRoom {\n\t@Prop({ reflect: true }) label?: string\n\t@Prop({ reflect: true }) icon?: Icon\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Prop() path: string | URLPattern = \"\"\n\t@Prop() to?: string\n\t@Prop({ reflect: true, mutable: true }) selected?: boolean\n\t@Prop() content?: JSX.Element | FunctionalComponent\n\t@Event() smoothlyRoomSelected: EventEmitter<{ history: boolean }>\n\t@Event() smoothlyRoomLoaded: EventEmitter<{ selected: boolean }>\n\tprivate contentElement?: HTMLElement\n\n\tcomponentWillLoad() {\n\t\tthis.selected = (typeof this.path == \"string\" ? new URLPattern({ pathname: this.path }) : this.path).test(\n\t\t\twindow.location\n\t\t)\n\t\tthis.smoothlyRoomLoaded.emit({ selected: this.selected })\n\t}\n\n\t@Method()\n\tasync getContent(): Promise<HTMLElement | undefined> {\n\t\treturn this.contentElement\n\t}\n\t@Method()\n\tasync setSelected(selected: boolean, options?: { history?: boolean }): Promise<void> {\n\t\tthis.selected = selected\n\t\tif (selected)\n\t\t\tthis.smoothlyRoomSelected.emit({ history: !!options?.history })\n\t}\n\n\tclickHandler(event: MouseEvent) {\n\t\tif (!event.metaKey && !event.ctrlKey && event.which != 2 && event.button != 1) {\n\t\t\tevent.preventDefault()\n\t\t\tthis.setSelected(true)\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<li>\n\t\t\t\t\t<a href={typeof this.path == \"string\" ? this.path : this.path.pathname} onClick={e => this.clickHandler(e)}>\n\t\t\t\t\t\t{this.icon ? <smoothly-icon name={this.icon} toolTip={this.label}></smoothly-icon> : this.label}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<main ref={e => (this.contentElement = e)}>\n\t\t\t\t\t{this.content && <smoothly-lazy content={this.content} />}\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</main>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tbackground-color: rgba(var(--smoothly-default-color), 1);\n\topacity: var(--opacity);\n\tpointer-events: var(--pointer-events);\n\ttransition: opacity 400ms;\n\tz-index: 3;\n\tborder-radius: 50%;\n\tbox-shadow: var(--smoothly-shadow);\n\theight: 3rem;\n\twidth: 3rem;\n\tposition: fixed;\n\tbottom: var(--bottom);\n\tright: var(--right);\n\toutline: none;\n\tcursor: pointer;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n","import { Component, h, Host, Prop, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-back-to-top\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyBackToTop {\n\t@Prop() opacity = \"0.5\"\n\t@Prop() bottom = \"1rem\"\n\t@Prop() right = \"1rem\"\n\t@State() visible: boolean\n\tcomponentWillLoad() {\n\t\twindow.addEventListener(\"scroll\", () => {\n\t\t\tthis.visible = document.body.scrollTop > 20 || document.documentElement.scrollTop > 20\n\t\t})\n\t}\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--opacity\": this.visible ? this.opacity : \"0\",\n\t\t\t\"--pointer-events\": this.visible ? \"auto\" : \"none\",\n\t\t\t\"--bottom\": this.bottom,\n\t\t\t\"--right\": this.right,\n\t\t}\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={cssVariables}\n\t\t\t\tonClick={() =>\n\t\t\t\t\twindow.scrollTo({\n\t\t\t\t\t\ttop: 0,\n\t\t\t\t\t\tleft: 0,\n\t\t\t\t\t\tbehavior: \"smooth\",\n\t\t\t\t\t})\n\t\t\t\t}>\n\t\t\t\t<smoothly-icon name=\"caret-up-outline\"></smoothly-icon>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([visible]){\ndisplay: flex;\njustify-content: center;\nalign-items: center;\nheight: 100%;\n}\n:host([visible]) .burger smoothly-icon{\n\tfont-size: 1.7em;\n\tcursor: pointer;\n\tmargin-right: 1em;\n}\n:host:not([visible]){\n\tdisplay: none;\n}\n:host:not([open]) smoothly-icon{\n\ttransform: rotate(0deg);\n\ttransition: transform 100ms ease-in-out;\n}\n:host([open]) smoothly-icon{\n\ttransform: rotate(-90deg);\n\ttransition: transform 100ms ease-in-out;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-burger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyBurger {\n\t@Element() element: HTMLSmoothlyBurgerElement\n\t@Prop({ mutable: true, reflect: true }) visible: boolean\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop({ reflect: true }) mediaQuery = \"(max-width: 900px)\"\n\t@State() history: boolean\n\t@Event() smoothlyNavStatus: EventEmitter<boolean>\n\t@Event() smoothlyVisibleStatus: EventEmitter<boolean>\n\n\tcomponentWillLoad() {\n\t\tthis.history = window.matchMedia(this.mediaQuery).matches\n\t\tif (!window.matchMedia(this.mediaQuery).matches)\n\t\t\tthis.visible = false\n\t\telse\n\t\t\tthis.visible = true\n\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t}\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyNavStatus.emit(this.open)\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.visible)\n\t\t\tthis.open = !this.open\n\t}\n\n\t@Listen(\"resize\", { target: \"window\" })\n\tresizeHandler() {\n\t\tconst result = window.matchMedia(this.mediaQuery).matches\n\t\tif (result != this.history) {\n\t\t\tif (result) {\n\t\t\t\tthis.visible = true\n\t\t\t\tthis.open = false\n\t\t\t} else {\n\t\t\t\tthis.visible = false\n\t\t\t\tthis.open = false\n\t\t\t}\n\t\t\tthis.smoothlyVisibleStatus.emit(this.visible)\n\t\t\tthis.smoothlyNavStatus.emit(!this.visible)\n\t\t}\n\t\tthis.history = result\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<span class=\"burger\">\n\t\t\t\t\t<smoothly-icon name=\"menu\" />\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { FunctionalComponent, h } from \"@stencil/core\"\nimport { redirect } from \"../model\"\n\nexport const Button: FunctionalComponent<Button.Properties> = ({ disabled, type, link }, children) => {\n\treturn disabled && (link || type == \"link\") ? (\n\t\t<slot></slot>\n\t) : type == \"link\" ? (\n\t\t<a href={link} onClick={!link || !local(link) ? undefined : e => (e.preventDefault(), redirect(convert(link)))}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : type == \"download\" ? (\n\t\t<a href={link} target=\"_blank\" download>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</a>\n\t) : (\n\t\t<button disabled={disabled}>\n\t\t\t<slot name=\"start\"></slot>\n\t\t\t<slot></slot>\n\t\t\t{children}\n\t\t\t<slot name=\"end\"></slot>\n\t\t</button>\n\t)\n}\nfunction convert(path: string): string {\n\tlet result: ReturnType<typeof convert>\n\tif (path.startsWith(window.location.origin))\n\t\tresult = new URL(path).pathname\n\telse if (path.match(/^\\//))\n\t\tresult = new URL(path, window.location.origin).pathname\n\telse\n\t\tresult = new URL(`${window.location.pathname.replace(/\\/+$/, \"\")}/${path}`, window.location.origin).pathname\n\n\treturn result\n}\n\nfunction local(path: string): boolean {\n\treturn new URL(path, window.location.origin).origin == window.location.origin\n}\nexport namespace Button {\n\texport interface Properties {\n\t\tdisabled: boolean\n\t\ttype: \"link\" | \"button\" | \"download\"\n\t\tlink?: string\n\t}\n}\n","@import \"../color/style.css\";\n\n:host{\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\tborder-radius: 0.5rem;\n\tborder: solid 1px;\n\ttransition: background 150ms ease-in-out;\n\tcursor: pointer;\n}\n:host([type=link]) {\n\tdisplay: inline;\n\tborder: none;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\na,\nbutton {\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tborder: none;\n\tbackground-color: transparent;\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tgap: 0.5rem;\n}\nbutton {\n\tjustify-content: center;\n\theight: 100%;\n\twidth: 100%;\n\tborder-radius: 0.5rem;\n\talign-items: center;\n}\n:host(:not([size=icon]):not([size=flexible])) > button {\n\tpadding: 0.8em;\n\tmin-width: 8em;\n}\n:host(:not([size=icon]):not([size=flexible])):has(smoothly-icon) > button {\n\tpadding: 0.6em;\n}\n:host([size=icon]) > button {\n\tpadding: 0.5em;\n}\n:host([shape=rounded]) > button,\n:host([shape=rounded]) {\n\tborder-radius: 2rem;\n}\n:host([type=button]) > a {\n\ttext-align: center;\n\ttext-decoration: inherit;\n\twidth: calc(100% - 0.6em);\n}\n:host([size=small]) > button {\n\tfont-size: 100%;\n}\n:host([size=large]) > button {\n\tfont-size: 130%;\n}\n:host(:not([size=icon])) {\n\tmin-width: 8em;\n}\n:host([size=flexible]) {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tborder: none;\n}\n:host([size=flexible]) > button {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0 !important;\n}\n:host([expand]) {\n\twidth: 100%;\n}\n:host([expand=full]) {\n\tborder-left: none;\n\tborder-right: none;\n\tborder-radius: 0;\n}\n:host([shape=rounded]) > button,\n:host([shape=rounded]) {\n\tborder-radius: 2rem;\n}\n:host(:not([fill=clear]):hover),\n:host(:not([fill=clear]):focus),\t\n:host(:not([fill=clear]):active) {\n\tborder-color: rgb(var(--smoothly-color-tint)) !important;\n\tbackground: rgb(var(--smoothly-color-tint)) !important;\n}\n:host(:not([fill=clear]):hover) > button,\n:host(:not([fill=clear]):focus) > button,\n:host(:not([fill=clear]):active) > button,\n:host(:not([fill=clear]):hover) ::slotted(smoothly-icon),\n:host(:not([fill=clear]):focus) ::slotted(smoothly-icon),\n:host(:not([fill=clear]):active) ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-color-contrast)) !important;\n\tstroke: rgb(var(--smoothly-color-contrast)) !important;\n\tfill: rgb(var(--smoothly-color-contrast)) !important;\n}\n:host([fill=clear]:hover) > button,\n:host([fill=clear]:focus) > button,\n:host([fill=clear]:active) > button {\n\tcolor: rgb(var(--smoothly-color-tint)) !important;\n\tstroke: rgb(var(--smoothly-color-tint)) !important;\n\tfill: rgb(var(--smoothly-color-tint)) !important;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n:host(:not([fill])),\n:host([fill=default]) {\n\tbackground: rgb(var(--smoothly-color));\n\tborder-color: transparent;\n}\n:host([fill=solid]) {\n\tbackground: rgb(var(--smoothly-color));\n\tborder-color: rgb(var(--smoothly-color));\n}\n:host([fill=solid]) > button,\n:host([fill=default]) > button {\n\tstroke: rgb(var(--smoothly-color-contrast));\n\tfill: rgb(var(--smoothly-color-contrast));\n\tcolor: rgb(var(--smoothly-color-contrast));\n}\n:host([fill=outline]) > button,\n:host([fill=clear]) > button {\n\tstroke: rgb(var(--smoothly-color));\n\tfill: rgb(var(--smoothly-color));\n\tcolor: rgb(var(--smoothly-color));\n}\n:host([fill=outline]) {\n\tbackground: transparent;\n\tborder-color: rgb(var(--smoothly-color));\n}\n:host([fill=clear]) {\n\tbackground: transparent;\n\tborder-color: transparent;\n}\n::slotted(smoothly-icon[slot=start]),\n::slotted(smoothly-icon[slot=end]) {\n\tfont-size: 0.65em;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"../Button\"\n\n@Component({\n\ttag: \"smoothly-button\",\n\tstyleUrl: \"../button/style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButton {\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: Button.Properties[\"type\"] = \"button\"\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() link?: string\n\n\trender() {\n\t\treturn <Button disabled={this.disabled} type={this.type} link={this.link} />\n\t}\n}\n",":host {\n\tdisplay: inline-block;\n}\n:host([disabled]){\n\topacity: 0.5;\n}\n:host:not([warning]) smoothly-button:first-child{\n\tdisplay: none;\n}\n:host[warning] smoothly-button:nth-child(2){\n\tdisplay: none;\n}\n:host([expand]) {\n\twidth: 100%;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Color, Data, Fill } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-button-confirm\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButtonConfirm {\n\ttimer?: number\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) name: string\n\t@Prop() doubleClickTime = 0.2\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop() fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() shape?: \"rounded\"\n\t@Prop() type: \"link\" | \"button\" = \"button\"\n\t@Prop() size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@State() clickTimeStamp: number | undefined\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyConfirm: EventEmitter<Data>\n\n\tclickHandler(event: MouseEvent): void {\n\t\tif (this.clickTimeStamp && event.timeStamp - this.clickTimeStamp > this.doubleClickTime * 1000) {\n\t\t\tthis.timer && window.clearTimeout(this.timer)\n\t\t\tthis.clickTimeStamp = undefined\n\t\t\tthis.smoothlyConfirm.emit({ [this.name]: true })\n\t\t} else {\n\t\t\tthis.clickTimeStamp = event.timeStamp\n\t\t\tthis.timer = window.setTimeout(() => {\n\t\t\t\tthis.clickTimeStamp = undefined\n\t\t\t}, 2000)\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host warning={this.clickTimeStamp}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={\"warning\"}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={this.type}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<smoothly-icon name={\"alert-outline\"} fill=\"solid\" color=\"warning\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tfill={this.fill}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype={this.type}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","smoothly-button-demo {\n\tdisplay: block;\n\tmargin: 1rem;\n}\n\nsmoothly-button-demo > section > div {\n\tdisplay: flex;\n\talign-items: center;\n}\n","import { Component, h } from \"@stencil/core\"\n@Component({\n\ttag: \"smoothly-button-demo\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyButtonDemo {\n\trender() {\n\t\treturn [\n\t\t\t<h2>Buttons</h2>,\n\t\t\t<section>\n\t\t\t\t<h4>Confirm button (two clicks)</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm\" type=\"button\" shape=\"rounded\" color=\"danger\" size=\"large\">\n\t\t\t\t\t\tDelete\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" type=\"button\" shape=\"rounded\" color=\"success\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" size=\"small\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t</div>\n\t\t\t\t<h4>Toggle button</h4>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"card\" fill=\"solid\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"briefcase\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<smoothly-toggle>\n\t\t\t\t\t<smoothly-icon name=\"airplane\" slot=\"icon-slot\"></smoothly-icon>\n\t\t\t\t</smoothly-toggle>\n\t\t\t\t<h4>Toggle switches</h4>\n\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\tcheckmark={false}\n\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\tdisabled={false}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonSmoothlyToggleSwitchChange={e => {\n\t\t\t\t\t\tconsole.log(\"toggleSwitch \", e.detail)\n\t\t\t\t\t}}></smoothly-toggle-switch>\n\t\t\t\t<smoothly-toggle-switch disabled={false}></smoothly-toggle-switch>\n\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"large\"></smoothly-toggle-switch>\n\t\t\t\t<h4>Links with icons</h4>\n\t\t\t\t<smoothly-button type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\ttype link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"button\" color=\"warning\" fill=\"default\">\n\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\tlink + type link\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Size and Color test</h4>\n\t\t\t\t<smoothly-button color=\"primary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Primary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" shape=\"rounded\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" size=\"large\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"danger\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Danger + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"success\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Success + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"tertiary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Tertiary + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"dark\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Dark + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"medium\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Medium + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"light\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\tColor Light + Small\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Expand examples</h4>\n\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" expand=\"full\">\n\t\t\t\t\tColor Secondary + Default\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" expand=\"block\">\n\t\t\t\t\tColor Warning + Large\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Fill examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"primary\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFill Solid\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"secondary\" fill=\"outline\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" fill=\"clear\"></smoothly-icon>\n\t\t\t\t\t\tFill Outline\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"tertiary\" fill=\"clear\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" fill=\"clear\"></smoothly-icon>\n\t\t\t\t\t\tFill Clear\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\" fill=\"solid\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"start\"</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"warning\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"basketball\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"flexible\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"airplane\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Buttons with Icon in \"end\"</h4>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\">\n\t\t\t\t\tGo Forward\n\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\"></smoothly-icon>\n\t\t\t\t</smoothly-button>\n\t\t\t\t<h4>Test for icon button</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"warning\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"search-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"secondary\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Link examples</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button type=\"link\">type link</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"button\" fill=\"clear\">\n\t\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t\tlink + type link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<h4>Disabled buttons</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\tDisabled\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"link\" link=\"https://google.com\" disabled>\n\t\t\t\t\t\tDisabled link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t</section>,\n\t\t\t<smoothly-back-to-top />,\n\t\t]\n\t}\n}\n","import * as isoly from \"isoly\"\n\nexport function month(date: isoly.Date): isoly.Date[][] {\n\tconst d = new Date(date)\n\td.setDate(1)\n\tlet day = -((d.getDay() + 6) % 7) + 1\n\tconst result: string[][] = []\n\tfor (let row = 0; row < 6; row++) {\n\t\tconst r = []\n\t\tfor (let column = 0; column < 7; column++) {\n\t\t\tconst d = new Date(date)\n\t\t\td.setUTCDate(day++)\n\t\t\tr.push(isoly.Date.create(d))\n\t\t}\n\t\tif (row < 5 || isoly.Date.firstOfMonth(r[0]) == isoly.Date.firstOfMonth(date))\n\t\t\tresult.push(r)\n\t}\n\treturn result\n}\n\nexport function weekdays(): string[] {\n\tconst day = new globalThis.Date()\n\tday.setDate(day.getDate() - day.getDay() + 1)\n\tconst result: string[] = []\n\tfor (let i = 0; i < 7; i++) {\n\t\tresult.push(day.toLocaleString(undefined, { weekday: \"short\" }))\n\t\tday.setDate(day.getDate() + 1)\n\t}\n\treturn result\n}\n\nexport function months(current: isoly.Date): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = 0; i < 12; i++) {\n\t\tday.setMonth(i, 28)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { month: \"long\" }),\n\t\t\tselected: date.substr(0, 7) == current.substr(0, 7),\n\t\t})\n\t}\n\treturn result\n}\nexport function years(current: isoly.Date): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst start = new Date().getFullYear() - 10\n\tconst end = new Date().getFullYear() + 10\n\tconst result: { date: isoly.Date; name: string; selected?: boolean }[] = []\n\tfor (let i = start; i <= end; i++) {\n\t\tday.setFullYear(i)\n\t\tconst date = isoly.Date.create(day)\n\t\tresult.push({\n\t\t\tdate,\n\t\t\tname: day.toLocaleString(undefined, { year: \"numeric\" }),\n\t\t\tselected: date == current,\n\t\t})\n\t}\n\treturn result\n}\n",":host {\n\tdisplay: block;\n\t--other-month-opacity: 0.5;\n\tmargin-bottom: 1rem;\n}\n:host > smoothly-input-month {\n\twidth: calc(100% - 1em);\n\tpadding: 0.5em 0.5em 0 0.5em;\n}\n:host > table {\n\ttable-layout: fixed;\n\twidth: 100%;\n}\nth,\ntd {\n\ttext-align: center;\n\tpadding: 0.5em;\n\tmin-width: 2em;\n\tbackground-color: rgb(var(--smoothly-default-shade));\n\tcursor: pointer;\n\tuser-select: none;\n}\ntd.currentMonth {\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\ntd:not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-default-contrast), var(--other-month-opacity));\n}\ntd:nth-child(6):not(.currentMonth).selected,\ntd:nth-child(6):not(.currentMonth).dateRange,\ntd:nth-child(7):not(.currentMonth).selected,\ntd:nth-child(7):not(.currentMonth).dateRange {\n\tcolor: rgba(var(--smoothly-default-contrast));\n}\ntd:nth-child(6),\ntd:nth-child(7) {\n\tcolor: rgb(var(--smoothly-danger-tint));\n}\ntd:nth-child(6):not(.currentMonth),\ntd:nth-child(7):not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-danger-tint), var(--other-month-opacity));\n}\ntd:not(.selected, .disable):hover {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\ntd.selected {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n}\ntd:not(.selected, .dateRange):not(:hover).today {\n\tbackground: rgb(var(--smoothly-dark-tint));\n\tcolor: rgb(var(--smoothly-dark-contrast));\n}\ntd.dateRange {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\ntd.disable {\n\tcursor: not-allowed;\n\tbackground-color: rgb(var(--smoothly-default-tint), 0.5);\n\tcolor: rgb(var(--smoothly-default-contrast), 0.5);\n}\n","import { Component, Element, Event, EventEmitter, h, Prop, State, Watch } from \"@stencil/core\"\nimport { Date, DateRange } from \"isoly\"\nimport * as generate from \"./generate\"\n\n@Component({\n\ttag: \"smoothly-calendar\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Calendar {\n\t@Element() element: HTMLTableRowElement\n\t@Prop({ mutable: true }) month?: Date\n\t@Prop({ mutable: true }) value: Date = Date.now()\n\t@Prop({ mutable: true }) start?: Date\n\t@Prop({ mutable: true }) end?: Date\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) doubleInput: boolean\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyStartChange: EventEmitter<Date>\n\t@Event() smoothlyEndChange: EventEmitter<Date>\n\t@Event() smoothlyDateSet: EventEmitter<Date>\n\t@Event() smoothlyDateRangeSet: EventEmitter<DateRange>\n\tprivate frozenDate: Date\n\t@State() firstSelected: boolean\n\t@Watch(\"start\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyStartChange.emit(next)\n\t}\n\t@Watch(\"end\")\n\tonEnd(next: Date) {\n\t\tthis.smoothlyEndChange.emit(next)\n\t}\n\tprivate clickCounter = 0\n\tprivate onClick(date: Date) {\n\t\tthis.smoothlyValueChange.emit((this.value = date))\n\t\tthis.clickCounter += 1\n\t\tif (this.doubleInput) {\n\t\t\tif (this.clickCounter % 2 == 1)\n\t\t\t\tthis.start = this.end = this.frozenDate = date\n\t\t\telse {\n\t\t\t\tif (this.start && date > this.start)\n\t\t\t\t\tthis.end = date\n\t\t\t\telse\n\t\t\t\t\tthis.start = date\n\t\t\t}\n\t\t}\n\t\t!this.doubleInput && this.smoothlyDateSet.emit(this.value)\n\t\tthis.doubleInput &&\n\t\t\tthis.clickCounter % 2 == 0 &&\n\t\t\tthis.start &&\n\t\t\tthis.end &&\n\t\t\tthis.smoothlyDateRangeSet.emit({ start: this.start, end: this.end })\n\t}\n\tprivate onHover(date: Date) {\n\t\tif (this.doubleInput && this.clickCounter % 2 == 1) {\n\t\t\tif (date < this.frozenDate) {\n\t\t\t\tthis.start = date\n\t\t\t\tthis.end = this.frozenDate\n\t\t\t} else {\n\t\t\t\tthis.start = this.frozenDate\n\t\t\t\tthis.end = date\n\t\t\t}\n\t\t}\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-input-month\n\t\t\t\tvalue={this.month ?? this.value}\n\t\t\t\tonSmoothlyValueChange={event => {\n\t\t\t\t\tthis.month = event.detail\n\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t}}></smoothly-input-month>,\n\t\t\t<table>\n\t\t\t\t<thead>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{generate.weekdays().map(day => (\n\t\t\t\t\t\t\t<th>{day}</th>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t</thead>\n\t\t\t\t{generate.month(this.month ?? this.value).map(week => (\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t{week.map(date => (\n\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\ttabindex={1}\n\t\t\t\t\t\t\t\tonMouseOver={() => {\n\t\t\t\t\t\t\t\t\t!this.doubleInput && (this.min || this.max) && (date < this.min || date > this.max)\n\t\t\t\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t\t\t\t: this.onHover(date)\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t(this.min || this.max) && (date < this.min || date > this.max) ? undefined : () => this.onClick(date)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tclass={(date == this.value ? [\"selected\"] : [])\n\t\t\t\t\t\t\t\t\t.concat(\n\t\t\t\t\t\t\t\t\t\t...(date == Date.now() ? [\"today\"] : []),\n\t\t\t\t\t\t\t\t\t\tDate.firstOfMonth(this.month ?? this.value) == Date.firstOfMonth(date) ? [\"currentMonth\"] : [],\n\t\t\t\t\t\t\t\t\t\tthis.doubleInput\n\t\t\t\t\t\t\t\t\t\t\t? this.start == date || this.end == date\n\t\t\t\t\t\t\t\t\t\t\t\t? [\"selected\"]\n\t\t\t\t\t\t\t\t\t\t\t\t: date >= (this.start ?? \"\") && date <= (this.end ?? \"\")\n\t\t\t\t\t\t\t\t\t\t\t\t? [\"dateRange\"]\n\t\t\t\t\t\t\t\t\t\t\t\t: []\n\t\t\t\t\t\t\t\t\t\t\t: \"\"\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t.concat(...(this.min || this.max ? (date < this.min || date > this.max ? [\"disable\"] : []) : \"\"))\n\t\t\t\t\t\t\t\t\t.join(\" \")}>\n\t\t\t\t\t\t\t\t{date.substring(8, 10)}\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</tr>\n\t\t\t\t))}\n\t\t\t</table>,\n\t\t]\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: fixed;\n\tleft: 0;\n\ttop: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 1;\n\t/* stylelint-disable-next-line declaration-no-important */\n\tbackground: rgba(var(--smoothly-default-color), var(--smoothly-semitransparent)) !important;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > header {\n\tborder-top-left-radius: 8px;\n\tborder-top-right-radius: 8px;\n\tmargin-top: 2em;\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n\tborder-color: rgb(var(--smoothly-primary-color));\n}\n:host:not([header]) header {\n\tborder: none;\n}\n:host > * {\n\tposition: relative;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: rgb(var(--smoothly-default-color));\n\tborder-color: rgb(var(--smoothly-color));\n\tborder-width: 1px;\n\tborder-style: solid;\n\tmax-width: 40em;\n\twidth: calc(100vw - 4em - 2px);\n\tmax-height: calc(100vh - 6em - 2px);\n\theight: auto;\n\tmargin-left: auto;\n\tmargin-right: auto;\n\tborder-collapse: collapse;\n}\n:host > main {\n\tborder-bottom-left-radius: 8px;\n\tborder-bottom-right-radius: 8px;\n\tmargin-bottom: 2em;\n\tborder: 1px solid rgb(var(--smoothly-default-contrast));\n\tbox-sizing: border-box;\n\toverflow: hidden;\n}\n:host:not([header]) main {\n\tborder-radius: 8px;\n}\n:host > * > smoothly-trigger {\n\tposition: absolute;\n\tright: -2em;\n\ttop: -2em;\n\tz-index: 1;\n\tborder-color: transparent;\n}\n:host > * > smoothly-trigger:hover {\n\tborder-color: transparent;\n}\n:host smoothly-icon {\n\tbackground-color: rgb(var(--smoothly-color));\n\tborder-radius: 50%;\n}\n:host > * > * {\n\tmargin: 10px;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-dialog\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDialog {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ mutable: true, reflect: true }) open = true\n\t@Prop({ reflect: true }) closable = false\n\t@Prop({ reflect: true }) header: string | undefined\n\t@Listen(\"trigger\")\n\tTriggerListener(event: CustomEvent<Trigger>) {\n\t\tif (Trigger.is(event.detail) && event.detail.name == \"close\")\n\t\t\tthis.open = false\n\t}\n\thostData() {\n\t\treturn {\n\t\t\tstyle: {\n\t\t\t\tdisplay: this.open ? \"block\" : \"none\",\n\t\t\t},\n\t\t}\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<header>\n\t\t\t\t{this.closable ? (\n\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t<smoothly-icon name=\"close-circle\" fill=\"solid\" color={this.color}></smoothly-icon>\n\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t) : (\n\t\t\t\t\t[]\n\t\t\t\t)}\n\t\t\t\t{this.header ? <h1>{this.header}</h1> : <slot name=\"header\"></slot>}\n\t\t\t</header>,\n\t\t\t<main>\n\t\t\t\t<slot></slot>\n\t\t\t</main>,\n\t\t]\n\t}\n}\n//\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-dialog-demo\",\n})\nexport class SmoothlyDialogDemo {\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-dialog color=\"default\" style={{ \"margin-top\": \"6vh\" }} closable>\n\t\t\t\t<smoothly-frame url=\"https://www.wikipedia.org/\" name=\"parent\" style={{ height: \"80vh\" }}></smoothly-frame>\n\t\t\t</smoothly-dialog>\n\t\t)\n\t}\n}\n","function getForwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n while (wordRegex.exec(str) != null) {\n result = wordRegex.lastIndex;\n if (wordRegex.lastIndex > index)\n break;\n }\n wordRegex.lastIndex <= index && (result = str.length);\n return result;\n}\nfunction getBackwardWordBreakIndex(str, index, wordRegex) {\n let result = 0;\n let execArray;\n while ((execArray = wordRegex.exec(str)) != null) {\n if (wordRegex.lastIndex - execArray[0].length < index)\n result = wordRegex.lastIndex - execArray[0].length;\n else\n break;\n }\n return result;\n}\nexport function getAdjecentWordBreakIndex(str, index, direction) {\n const wordRegex = /([\\wåäöüéáúíóßðœøæñµçþ_]+|[@-]+)/gi;\n return direction == \"backward\"\n ? getBackwardWordBreakIndex(str, index, wordRegex)\n : getForwardWordBreakIndex(str, index, wordRegex);\n}\n//# sourceMappingURL=getAdjecentWordBreakIndex.js.map","export var Selection;\n(function (Selection) {\n function getCursor(selection) {\n return selection.direction == \"backward\" ? selection.start : selection.end;\n }\n Selection.getCursor = getCursor;\n function getStalker(selection) {\n return selection.direction != \"backward\" ? selection.start : selection.end;\n }\n Selection.getStalker = getStalker;\n})(Selection || (Selection = {}));\n//# sourceMappingURL=Selection.js.map","export var State;\n(function (State) {\n function copy(state) {\n return {\n value: state.value,\n selection: { start: state.selection.start, end: state.selection.end, direction: state.selection.direction },\n };\n }\n State.copy = copy;\n})(State || (State = {}));\n//# sourceMappingURL=State.js.map","export class StateEditor {\n constructor(state) {\n this.value = state.value;\n this.selection = { start: state.selection?.start, end: state.selection?.end, direction: state.selection?.direction };\n }\n get(index, length = 1) {\n return this.value.substr(index, length);\n }\n is(index, ...character) {\n const c = this.get(index);\n return character.some(d => c == d);\n }\n isDigit(index) {\n const character = this.get(index);\n return character >= \"0\" && character <= \"9\";\n }\n match(matcher) {\n return this.value.match(matcher);\n }\n replace(start, end, value) {\n let result;\n if (typeof start == \"string\" && typeof end == \"string\") {\n let s;\n result = this;\n while ((s = result.value.indexOf(start)) > -1)\n result = result.replace(s, s + start.length, end);\n }\n else if (typeof start == \"number\" && typeof end == \"number\") {\n const state = {\n value: this.value,\n selection: { start: this.selection.start, end: this.selection.end, direction: this.selection.direction },\n };\n if (!value)\n value = \"\";\n state.value = this.value.slice(0, start) + value + this.value.slice(end, this.value.length);\n if (this.selection.start >= end)\n state.selection.start = this.selection.start + value.length - end + start;\n else if (this.selection.start > start && this.selection.start < end)\n state.selection.start = Math.min(this.selection.start, start + value.length);\n if (this.selection.end >= end)\n state.selection.end = this.selection.end + value.length - end + start;\n else if (this.selection.end > start && this.selection.end < end)\n state.selection.end = Math.min(this.selection.end, start + value.length);\n result = new StateEditor(state);\n }\n return result || this;\n }\n insert(index, value) {\n return this.replace(index, index, value);\n }\n append(value) {\n return this.insert(this.value.length, value);\n }\n prepend(value) {\n return this.insert(0, value);\n }\n suffix(value) {\n return new StateEditor({ value: this.value + value, selection: this.selection });\n }\n delete(start, end) {\n let result;\n if (!this.value)\n result = this;\n else if (typeof start == \"string\") {\n let s;\n result = this;\n while (start && (s = result.value.indexOf(start)) > -1)\n result = result.delete(s, s + start.length);\n }\n else\n result = this.replace(start, end || start + 1, \"\");\n return result;\n }\n truncate(end) {\n return this.value.length >= end ? this.delete(end, this.value.length) : this;\n }\n pad(length, padding, index) {\n let result = this;\n while (length > result.value.length + padding.length)\n result = result.insert(index, padding);\n if (length > result.value.length)\n result = result.insert(index, padding.substring(0, length - result.value.length));\n return result;\n }\n padEnd(length, padding) {\n return this.pad(length, padding, this.value.length);\n }\n padStart(length, padding) {\n return this.pad(length, padding, 0);\n }\n toLower() {\n return this.map(symbol => symbol.toLowerCase());\n }\n toUpper() {\n return this.map(symbol => symbol.toUpperCase());\n }\n map(mapping) {\n let result = this;\n let j = 0;\n for (let i = 0; i < this.value.length; i++) {\n const replacement = mapping(this.get(i), i);\n result = result.replace(j, j + 1, replacement);\n j += replacement.length;\n }\n return result;\n }\n static copy(state) {\n return new StateEditor({ ...state });\n }\n static create() {\n return new StateEditor({ value: \"\", selection: { start: 0, end: 0 } });\n }\n static modify(state) {\n return new StateEditor(typeof state == \"string\" ? { value: state, selection: { start: state.length, end: state.length } } : state);\n }\n}\n//# sourceMappingURL=StateEditor.js.map","import { getAdjecentWordBreakIndex } from \"./getAdjecentWordBreakIndex\";\nimport { Selection } from \"./Selection\";\nimport { State } from \"./State\";\nimport { StateEditor } from \"./StateEditor\";\nexport var Action;\n(function (Action) {\n function apply(formatter, state, action) {\n let result = State.copy(formatter.unformat(StateEditor.copy(state)));\n if (state.autocomplete == \"cc-exp\" && /^\\d\\d \\/$/g.test(state.value))\n action?.key && (action.key = \"Backspace\");\n if (action) {\n if (action.ctrlKey || action.metaKey) {\n if (action.key == \"a\")\n select(result, 0, result.value.length, \"forward\");\n else if ([\"ArrowLeft\", \"ArrowRight\"].includes(action.key) && state?.type != \"password\")\n result = ctrlArrow(formatter, state, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key) && state?.type != \"password\")\n result = ctrlBackspaceDelete(formatter, state, action);\n }\n else if ([\"ArrowLeft\", \"ArrowRight\", \"Home\", \"End\"].includes(action.key))\n arrowHomeEnd(result, action);\n else if ([\"Delete\", \"Backspace\"].includes(action.key)) {\n result.selection.start == result.selection.end &&\n select(result, result.selection.start + (action.key == \"Backspace\" ? -1 : 0), result.selection.end + (action.key == \"Delete\" ? 1 : 0));\n erase(result);\n }\n else if (action.key != \"Unidentified\") {\n erase(result);\n formatter.allowed(action.key, result) && replace(result, action.key);\n }\n }\n return formatter.format(StateEditor.copy(result));\n }\n Action.apply = apply;\n function paste(formatter, state, pasted) {\n const result = State.copy(formatter.unformat(StateEditor.copy(state)));\n replace(result, pasted);\n return formatter.format(StateEditor.copy(result));\n }\n Action.paste = paste;\n function ctrlArrow(formatter, state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"ArrowLeft\" ? \"backward\" : \"forward\");\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n return State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(stalkPosition, cursorPosition),\n end: Math.max(stalkPosition, cursorPosition),\n direction: stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\",\n },\n })));\n }\n function ctrlBackspaceDelete(formatter, state, action) {\n const cursorPosition = Selection.getCursor(state.selection);\n const adjecentIndex = getAdjecentWordBreakIndex(state.value, cursorPosition, action.key == \"Backspace\" ? \"backward\" : \"forward\");\n const result = State.copy(formatter.unformat(StateEditor.copy({\n ...state,\n selection: {\n start: Math.min(cursorPosition, adjecentIndex),\n end: Math.max(cursorPosition, adjecentIndex),\n direction: \"none\",\n },\n })));\n result.value = result.value.substring(0, result.selection.start) + result.value.substring(result.selection.end);\n result.selection.end = result.selection.start;\n return result;\n }\n function arrowHomeEnd(state, action) {\n let cursorPosition = Selection.getCursor(state.selection);\n let stalkPosition = Selection.getStalker(state.selection);\n cursorPosition =\n action.key == \"Home\"\n ? 0\n : action.key == \"End\"\n ? state.value.length\n : state.selection.start == state.selection.end || action.shiftKey\n ? Math.min(Math.max(cursorPosition + (action.key == \"ArrowLeft\" ? -1 : 1), 0), state.value.length)\n : action.key == \"ArrowLeft\"\n ? state.selection.start\n : state.selection.end;\n stalkPosition = action.shiftKey ? stalkPosition : cursorPosition;\n state.selection.direction =\n stalkPosition < cursorPosition ? \"forward\" : stalkPosition > cursorPosition ? \"backward\" : \"none\";\n state.selection.start = Math.min(stalkPosition, cursorPosition);\n state.selection.end = Math.max(stalkPosition, cursorPosition);\n }\n function select(state, from, to, direction) {\n state.selection.start = from;\n state.selection.end = to;\n direction && (state.selection.direction = direction);\n }\n function erase(state) {\n replace(state, \"\");\n }\n function replace(state, insertString) {\n state.value =\n state.value.substring(0, state.selection.start) + insertString + state.value.substring(state.selection.end);\n state.selection.start = state.selection.start + insertString.length;\n state.selection.end = state.selection.start;\n }\n})(Action || (Action = {}));\n//# sourceMappingURL=Action.js.map","import { StateEditor } from \"../StateEditor\";\nconst handlers = {};\nexport function add(type, create) {\n handlers[type] = create;\n}\nexport function get(type, ...argument) {\n const create = handlers[type];\n return create && create(argument);\n}\nexport function format(data, type, ...argument) {\n const handler = get(type, ...argument);\n return handler\n ? handler.format(StateEditor.modify(handler.toString(typeof data == \"string\" ? parse(data, type, argument) : data)))\n .value\n : \"\";\n}\nexport function parse(value, type, ...argument) {\n const handler = get(type, argument);\n return handler ? handler.fromString(handler.unformat(StateEditor.modify(value)).value) : undefined;\n}\n//# sourceMappingURL=base.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"tel\", autocomplete: \"cc-csc\", length: [3, 3], pattern: /^\\d{3}$/ };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 3 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-csc\", () => new Handler());\n//# sourceMappingURL=card-csc.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString().padStart(2, \"0\") + data[1].toString().padStart(2, \"0\")\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.length == 4\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(2))]\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.value.length > 0 && !unformatted.is(0, \"0\", \"1\"))\n result = result.prepend(\"0\");\n if (result.value.length > 1)\n result = result.insert(2, \" / \");\n return { ...result, type: \"tel\", autocomplete: \"cc-exp\", length: [7, 7], pattern: /^(0[1-9]|1[012]) \\/ \\d\\d$/ };\n }\n unformat(formatted) {\n return formatted.delete(\" / \");\n }\n allowed(symbol, state) {\n return state.value.length < 4 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"card-expires\", () => new Handler());\n//# sourceMappingURL=card-expires.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const issuer = getIssuer(unformatted.value);\n const result = unformatted.map((symbol, index) => (index != 0 && index % 4 == 0 && index + 1 < issuer.length[0] ? \" \" : \"\") + symbol);\n return {\n ...result,\n type: \"tel\",\n autocomplete: \"cc-number\",\n length: issuer.length.slice(1),\n pattern: issuer.verification,\n classes: [\"issuer-\" + issuer.icon],\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n const issuer = getIssuer(state.value);\n return symbol >= \"0\" && symbol <= \"9\" && state.value.length < issuer.length[0];\n }\n}\nadd(\"card-number\", () => new Handler());\nfunction getIssuer(value) {\n let result = defaultIssuer;\n for (const key in issuers)\n if (Object.prototype.hasOwnProperty.call(issuers, key) && issuers[key].identification.test(value)) {\n result = { ...defaultIssuer, name: key, ...issuers[key] };\n break;\n }\n return result;\n}\nconst defaultIssuer = {\n name: \"unknown\",\n verification: /^\\d{19}$/,\n identification: /^\\d/,\n length: [16, 16, 19],\n icon: \"generic\",\n};\nconst issuers = {\n amex: {\n verification: /^3[47][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{3}$/,\n identification: /^3[47]/,\n length: [15, 18, 18],\n icon: \"amex\",\n },\n dankort: {\n verification: /^(5019)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(5019)\\d+/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n diners: {\n verification: /^3(?:0[0-5]|[68][0-9])[0-9]\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{2}$/,\n identification: /^3(?:0[0-5]|[68][0-9])/,\n length: [14, 17, 17],\n icon: \"diners\",\n },\n discover: {\n verification: /^6(?:011|5[0-9]{2})\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^6(?:011|5[0-9]{2})/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n electron: {\n verification: /^((4026|4405|4508|4844|4913|4917)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|((4175)\\s(00)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(4026|417500|4405|4508|4844|4913|4917)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n interpayment: {\n verification: /^(636)[0-9]\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(636)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n jcb: {\n verification: /^((?:2131|1800)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})|(35[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4})$/,\n identification: /^(?:2131|1800|35\\d{3})/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n unionpay: {\n verification: /^(62|88)[0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(62|88)/,\n length: [16, 19, 19],\n icon: \"generic\",\n },\n maestro: {\n verification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)/,\n length: [16, 19, 19],\n icon: \"maestro\",\n },\n mastercard: {\n verification: /^5[1-5][0-9]{2}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9]{4}$/,\n identification: /^5[1-5][0-9]/,\n length: [16, 19, 19],\n icon: \"mastercard\",\n },\n visa: {\n verification: /^4[0-9]{3}\\s[0-9]{4}\\s[0-9]{4}\\s[0-9](?:[0-9]{3})?$/,\n identification: /^4[0-9]/,\n length: [16, 16, 19],\n icon: \"visa\",\n },\n};\n//# sourceMappingURL=card-number.js.map","export var DateFormat;\n(function (DateFormat) {\n function fromLocale(locale) {\n let result;\n switch (locale) {\n case \"sq-AL\":\n case \"es-AR\":\n case \"it-IT\":\n case \"en-GB\":\n case \"fr-FR\":\n result = \"dd/mm/YYYY\";\n break;\n case \"en-US\":\n result = \"mm/dd/YYYY\";\n break;\n case \"et-EE\":\n case \"de-AT\":\n case \"de-DE\":\n case \"he-IL\":\n case \"is-IS\":\n case \"lv-LV\":\n case \"pl-PL\":\n case \"ru-RU\":\n case \"fi-FI\":\n result = \"dd.mm.YYYY\";\n break;\n case \"hi-IN\":\n case \"en-IN\":\n result = \"dd-mm-YYYY\";\n break;\n default:\n result = \"YYYY-mm-dd\";\n break;\n }\n return result;\n }\n DateFormat.fromLocale = fromLocale;\n function toLocale(format) {\n let result;\n switch (format) {\n case \"dd/mm/YYYY\":\n result = \"en-GB\";\n break;\n case \"mm/dd/YYYY\":\n result = \"en-US\";\n break;\n case \"dd.mm.YYYY\":\n result = \"de-DE\";\n break;\n default:\n result = \"sv-SE\";\n break;\n }\n return result;\n }\n DateFormat.toLocale = toLocale;\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"YYYY-mm-dd\" || value == \"dd/mm/YYYY\" || value == \"dd.mm.YYYY\" || value == \"mm/dd/YYYY\"));\n }\n DateFormat.is = is;\n})(DateFormat || (DateFormat = {}));\n//# sourceMappingURL=DateFormat.js.map","import { DateFormat } from \"../../DateFormat\";\nimport { add } from \"../base\";\nexport class Base {\n constructor(separator) {\n this.separator = separator;\n }\n unformat(formatted) {\n return formatted.delete(this.separator);\n }\n validMonth(day, month, year) {\n return (new Date(Number.parseInt(year ?? \"2004\"), Number.parseInt(month), 0).getDate() >=\n Number.parseInt(day));\n }\n}\nconst handlers = {};\nexport function register(format, create) {\n handlers[format] = create;\n}\nadd(\"date\", (parameters) => {\n const argument = parameters && parameters.length > 0 ? parameters[0] : undefined;\n const format = DateFormat.is(argument) ? argument : DateFormat.fromLocale(argument);\n const create = handlers[format] ?? handlers[\"YYYY-mm-dd\"];\n return create();\n});\n//# sourceMappingURL=Base.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(8, 10), data.substring(5, 7), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(4, 8)}-${value.substring(2, 4)}-${value.substring(0, 2)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.get(0, 1) > \"3\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > \"1\")\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|[12][0-9]|3[01])\", \"(0[1-9]|1[012])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n return state.selection.start == 1 && state.value[0] == \"3\"\n ? symbol >= \"0\" && symbol <= \"1\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 2\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n (symbol == \"0\" || symbol == \"1\" || this.validMonth(state.value.substring(0, 2), symbol))\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value.substring(0, 2), state.value[2] + symbol)\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(0, 2), state.value.substring(2, 4), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"dd.mm.YYYY\", () => new Handler(\".\"));\nregister(\"dd/mm/YYYY\", () => new Handler(\"/\"));\nregister(\"dd-mm-YYYY\", () => new Handler(\"-\"));\n//# sourceMappingURL=dmy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return isoly.Date.is(data) && data.length == 10\n ? [data.substring(5, 7), data.substring(8, 10), data.substring(0, 4)].join(this.separator)\n : \"\";\n }\n fromString(value) {\n const result = value.length == 8 ? `${value.substring(4, 8)}-${value.substring(0, 2)}-${value.substring(2, 4)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.get(0, 1) > \"1\")\n result = result.insert(0, \"0\");\n if (result.value.length > 1)\n result = result.insert(2, this.separator);\n if (result.get(3, 1) > (result.get(0, 2) == \"02\" ? \"2\" : \"3\"))\n result = result.insert(3, \"0\");\n if (result.value.length > 4)\n result = result.insert(5, this.separator);\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])\", \"\\\\d{4}$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const result = state.selection.start == 1 && state.value[0] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 1 && state.value[0] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 3\n ? symbol >= \"0\" && symbol <= \"9\" && this.validMonth(state.value[2] + symbol, state.value.substring(0, 2))\n : state.selection.start == 7\n ? symbol >= \"0\" &&\n symbol <= \"9\" &&\n this.validMonth(state.value.substring(2, 4), state.value.substring(0, 2), state.value.substring(4, 7) + symbol)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n return result;\n }\n}\nregister(\"mm/dd/YYYY\", () => new Handler(\"/\"));\n//# sourceMappingURL=mdy.js.map","import * as isoly from \"isoly\";\nimport { Base, register } from \"./Base\";\nclass Handler extends Base {\n constructor(separator) {\n super(separator);\n }\n toString(data) {\n return typeof data != \"string\" ? \"\" : data;\n }\n fromString(value) {\n const result = value?.length == 8 ? `${value.substring(0, 4)}-${value.substring(4, 6)}-${value.substring(6, 8)}` : undefined;\n return isoly.Date.is(result) ? result : undefined;\n }\n daysInMonth(value) {\n const firstOfMonth = `${value.substring(0, 4)}-${value.substring(4, 6)}-01`;\n return isoly.Date.is(firstOfMonth)\n ? +isoly.Date.lastOfMonth(`${value.substring(0, 4)}-${value.substring(4, 6)}-01`).substring(8, 10)\n : 31;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.value.length > 3) {\n result = result.insert(4, this.separator);\n if (result.get(5, 1) > \"1\")\n result = result.insert(5, \"0\");\n if (result.value.length > 6) {\n result = result.insert(7, this.separator);\n if (result.get(8, 1) > this.daysInMonth(unformatted.value).toString().substring(0, 1))\n result = result.insert(8, \"0\");\n }\n }\n return {\n ...result,\n type: \"text\",\n length: [0, 10],\n pattern: new RegExp([\"^\\\\d{4}\", \"(0[1-9]|1[012])\", \"(0[1-9]|[12][0-9]|3[01])$\"].join(this.separator)),\n };\n }\n allowed(symbol, state) {\n const daysInMonth = this.daysInMonth(state.value);\n return state.selection.start == 5 && state.value[4] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 5 && state.value[4] == \"1\"\n ? symbol >= \"0\" && symbol <= \"2\"\n : state.selection.start == 7 && state.value[6] == \"0\"\n ? symbol >= \"1\" && symbol <= \"9\"\n : state.selection.start == 7 && ((state.value[6] == \"2\" && daysInMonth < 30) || state.value[6] == \"3\")\n ? symbol >= \"0\" && symbol <= daysInMonth.toString().substring(1)\n : state.selection.start < 8 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nregister(\"YYYY-mm-dd\", () => new Handler(\"-\"));\n//# sourceMappingURL=ymd.js.map","import * as isoly from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n let result = value.replace(\" \", \"T\");\n const fillerDate = \"0000-01-01T00:00:00.000Z\";\n if (result?.match(/-\\d$/))\n result = result.substring(0, result.length - 1) + \"0\" + result.substring(result.length - 1, result.length);\n result = !result.match(/^\\d{4}-(0[1-9]|1[012])/)\n ? undefined\n : result + fillerDate.substring(result.length, fillerDate.length);\n return isoly.DateTime.is(result) ? result : undefined;\n }\n format(unformatted) {\n let result = formatDate(unformatted);\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[\\d:.-]$/))\n result = result.insert(10, \" \");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 3$/))\n result = result.replace(11, 12, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [45]$/))\n result = result.insert(11, \"23:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) [6-9]$/))\n result = result.insert(11, \"23:5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 24$/))\n result = result.replace(10, 13, \"00:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 25$/))\n result = result.insert(12, \"3:\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) 2[6-9]$/))\n result = result.insert(12, \"3:5\").append(\":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])\\d[\\s\\S]$/))\n result = result.insert(13, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[6-9]$/))\n result = result.insert(14, \"5\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d\\d$/))\n result = result.insert(16, \":\");\n if (result.match(/^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3]):[0-5]\\d:[6-9]$/))\n result = result.insert(17, \"5\");\n return {\n ...result,\n type: \"text\",\n length: [0, 19],\n pattern: /^\\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01]) ([0-1]\\d|2[0-3])(:[0-5]\\d){2}$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (state.value.length < 19 &&\n ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"-\" || symbol == \":\" || symbol == \".\" || symbol == \" \"));\n }\n}\nadd(\"date-time\", () => new Handler());\nexport function formatDate(unformatted, format) {\n let result = unformatted;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(\"31\" + result.value.substring(2, 10), format)\n ? \"31\" + result.value.substring(2, 10)\n : validDate(\"30\" + result.value.substring(2, 10), format)\n ? \"30\" + result.value.substring(2, 10)\n : validDate(\"29\" + result.value.substring(2, 10), format)\n ? \"29\" + result.value.substring(2, 10)\n : validDate(\"28\" + result.value.substring(2, 10), format)\n ? \"28\" + result.value.substring(2, 10)\n : result.value);\n break;\n case \"mm/dd/YYYY\":\n if (!validDate(result.value, format))\n result = result.replace(0, 10, validDate(result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"31\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"30\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"29\" + result.value.substring(5, 10)\n : validDate(result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10), format)\n ? result.value.substring(0, 3) + \"28\" + result.value.substring(5, 10)\n : result.value);\n break;\n default:\n if (unformatted.value.length == 10) {\n if (!validDate(result.value)) {\n result = result.replace(0, 10, validDate(result.value.substring(0, 8) + \"31\")\n ? result.value.substring(0, 8) + \"31\"\n : validDate(result.value.substring(0, 8) + \"30\")\n ? result.value.substring(0, 8) + \"30\"\n : validDate(result.value.substring(0, 8) + \"29\")\n ? result.value.substring(0, 8) + \"29\"\n : validDate(result.value.substring(0, 8) + \"28\")\n ? result.value.substring(0, 8) + \"28\"\n : result.value);\n break;\n }\n return unformatted;\n }\n }\n return result;\n}\nfunction validDate(date, format) {\n let year;\n let month;\n let day;\n switch (format) {\n case \"dd/mm/YYYY\":\n case \"dd.mm.YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(3, 5));\n day = parseInt(date.substring(0, 2));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n case \"mm/dd/YYYY\":\n year = parseInt(date.substring(6, 10));\n month = parseInt(date.substring(0, 2));\n day = parseInt(date.substring(3, 5));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n default:\n year = parseInt(date.substring(0, 4));\n month = parseInt(date.substring(5, 7));\n day = parseInt(date.substring(8, 10));\n return year && month && day ? day > 0 && daysPerMonth(year, month) >= day : false;\n }\n}\nfunction daysPerMonth(year, month) {\n let result;\n switch (month) {\n case 1:\n case 3:\n case 5:\n case 7:\n case 8:\n case 10:\n case 12:\n default:\n result = 31;\n break;\n case 4:\n case 6:\n case 9:\n case 11:\n result = 30;\n break;\n case 2:\n result = 28;\n break;\n }\n return result;\n}\n//# sourceMappingURL=date-time.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return Array.isArray(data) && data.length == 2 && typeof data[0] == \"number\" && typeof data[1] == \"number\"\n ? data[0].toString() + \" / \" + data[1].toString()\n : typeof data == \"number\"\n ? data.toString()\n : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && value.match(/^\\d{1,2}\\s+\\/\\s+\\d{1,2}$/)\n ? [Number.parseInt(value.slice(0, 2)), Number.parseInt(value.slice(value.length - 2))]\n : typeof value == \"string\" && value.match(/\\d{1,2}/)\n ? Number.parseInt(value)\n : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (unformatted.match(/^\\d\\/$/))\n result = unformatted.replace(1, 2, \" / \");\n else if (unformatted.match(/^\\d{1,2}\\s$/))\n result = unformatted.replace(unformatted.value.length - 1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+$/))\n result = unformatted.delete(0, unformatted.value.length);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 1);\n else if (unformatted.match(/^[\\D.]+\\/[\\D.]+\\d\\d$/))\n result = unformatted.delete(0, unformatted.value.length - 2);\n else if (unformatted.match(/^[\\D.]+\\//))\n result = unformatted.delete(0, unformatted.value.search(\"/\") + 1);\n else if (unformatted.match(/^\\d\\d\\/$/))\n result = unformatted.replace(2, 3, \" / \");\n else if (unformatted.match(/^\\d\\d\\s+\\/$/))\n result = unformatted.delete(2, unformatted.value.length);\n else if (unformatted.match(/^\\d\\s+\\/$/))\n result = unformatted.delete(1, unformatted.value.length);\n else if (unformatted.match(/^\\d\\d\\s\\s+\\/\\s*$/))\n result = unformatted.replace(2, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\s+(\\/\\s*)?$/))\n result = unformatted.replace(1, unformatted.value.length, \" / \");\n else if (unformatted.match(/^\\d\\s\\/\\s\\d\\d.+$/))\n result = unformatted.delete(6, unformatted.value.length);\n else if (unformatted.value.length > 1 && unformatted.value.indexOf(\"/\") < 1)\n result = unformatted.insert(2, \" / \");\n else if (unformatted.value.length > 1 && unformatted.value.split(\"/\").length > 2)\n result = unformatted.delete(unformatted.value.lastIndexOf(\"/\"));\n else if (unformatted.value.length == 1 && !unformatted.isDigit(0))\n result = unformatted.delete(0);\n return { ...result, type: \"text\", length: [1, 7], pattern: /^(\\d{1,2}|\\d{1,2} \\/ \\d{1,2})$/ };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return state.value.length < 7 && ((symbol >= \"0\" && symbol <= \"9\") || symbol == \"/\" || symbol == \" \");\n }\n}\nadd(\"divisor\", () => new Handler());\n//# sourceMappingURL=divisor.js.map","import { isoly } from \"isoly\";\nimport { add } from \"./base\";\nclass Handler {\n constructor() {\n this.separator = \":\";\n this.patterns = {\n allowed: /^-?\\d*(?::{0,1}[0-5]{0,1}[0-9]{0,1}|[.,]{0,1}[0-9]{0,2})$/,\n extract: /^(-?)(\\d*)([:,.]{0,1})([0-9]{0,2})$/,\n zeros: /^(-?)(0+)(?:[1-9]|0[,.:]?)/,\n };\n }\n toString(data) {\n let result;\n if (!isoly.TimeSpan.is(data))\n result = \"\";\n else {\n const span = isoly.TimeSpan.normalize(data);\n if (!span.minutes && !span.hours)\n result = \"\";\n else if (this.separator != \":\")\n result = (+isoly.TimeSpan.toHours(span).toFixed(2) || \"\").toString(10);\n else if (span.hours && !span.minutes)\n result = span.hours.toString(10);\n else if (!span.hours && span.minutes)\n result = `${span.minutes < 0 ? \"-\" : \"\"}0:${Math.abs(span.minutes).toString(10)}`;\n else\n result = `${span.hours?.toString(10)}:${Math.abs(span.minutes ?? 0).toString(10)}`;\n }\n return result;\n }\n fromString(value) {\n let result;\n const match = value.match(this.patterns.extract);\n if (!match)\n result = undefined;\n else {\n const [value, negative, hours, separator, minutes] = match;\n this.separator = separator;\n if (separator == \":\") {\n const parsed = {\n hours: parseInt(hours),\n minutes: parseInt(minutes),\n };\n const multiplicand = negative ? -1 : 1;\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(parsed.hours) ? 0 : parsed.hours * multiplicand,\n minutes: !Number.isFinite(parsed.minutes) ? 0 : parsed.minutes * multiplicand,\n });\n }\n else {\n const hours = parseFloat(value.replace(\",\", \".\"));\n result = isoly.TimeSpan.normalize({\n hours: !Number.isFinite(hours) ? 0 : hours,\n });\n }\n }\n return result;\n }\n format(unformatted) {\n let result = unformatted;\n const [, negative, hours, separator] = unformatted.match(this.patterns.extract) ?? [];\n if (!hours && separator)\n result = result.insert(negative ? 1 : 0, \"0\");\n const match = result.match(this.patterns.zeros);\n if (match) {\n const [, negative, zeros] = match;\n if (zeros) {\n const offset = negative ? 1 : 0;\n result = result.delete(offset, zeros.length + offset);\n }\n }\n return { ...result, type: \"tel\", pattern: this.patterns.allowed };\n }\n unformat(formatted) {\n const [, , , separator] = formatted.match(this.patterns.extract) ?? [];\n if (separator)\n this.separator = separator;\n return formatted;\n }\n allowed(symbol, state) {\n const nextValue = state.value.slice(0, state.selection.start) + symbol + state.value.slice(state.selection.end);\n return !!nextValue.match(this.patterns.allowed);\n }\n}\nadd(\"duration\", () => new Handler());\n//# sourceMappingURL=duration.js.map","import { add } from \"./base\";\nconst modeTypes = [\"code\", \"pascal\", \"snake\", \"camel\", \"attribute\"];\nclass Handler {\n constructor(settings, mode) {\n this.settings = settings;\n this.mode = mode;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n split(unformatted) {\n let firstAllowedSymbol;\n let previousAllowedSymbol = \"\";\n return unformatted\n .map((symbol, index) => {\n const newSymbol = index !== 0 &&\n symbol === symbol.toUpperCase() &&\n isNaN(+symbol) &&\n previousAllowedSymbol !== \" \" &&\n this.isSymbolAllowed(symbol) &&\n firstAllowedSymbol\n ? \" \" + symbol\n : (symbol === \"_\" || symbol === \"-\") && previousAllowedSymbol !== \" \"\n ? \" \"\n : (symbol === \" \" && previousAllowedSymbol === \" \") ||\n !this.isSymbolAllowed(symbol) ||\n (!firstAllowedSymbol && !this.isSymbolLetter(symbol) && this.mode !== \"code\")\n ? \"\"\n : symbol;\n !firstAllowedSymbol && (firstAllowedSymbol = this.isSymbolLetter(symbol));\n this.isSymbolAllowed(symbol) && (previousAllowedSymbol = symbol);\n return newSymbol;\n })\n .toLower()\n .delete(\"-\")\n .delete(\"_\");\n }\n isSymbolLetter(symbol) {\n return (symbol >= \"a\" && symbol <= \"z\") || (symbol >= \"A\" && symbol <= \"Z\");\n }\n isSymbolAllowed(symbol) {\n return this.isSymbolLetter(symbol) || (symbol >= \"0\" && symbol <= \"9\") || symbol === \" \";\n }\n format(unformatted) {\n const alignedString = this.split(unformatted);\n let result;\n switch (this.mode) {\n case \"code\":\n result = alignedString.delete(\" \");\n break;\n case \"pascal\":\n case \"camel\":\n let previousSpace;\n result = alignedString\n .map((symbol, index) => {\n const newSymbol = (index === 0 && this.mode === \"pascal\") || previousSpace ? symbol.toUpperCase() : symbol.toLowerCase();\n previousSpace = symbol == \" \";\n return newSymbol;\n })\n .delete(\" \");\n break;\n case \"snake\":\n case \"attribute\":\n result = alignedString.replace(\" \", this.mode === \"snake\" ? \"_\" : \"-\");\n break;\n default:\n result = unformatted;\n }\n return { ...result, ...this.settings, type: \"text\", autocomplete: \"on\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.isSymbolLetter(symbol) ||\n (symbol >= \"0\" && symbol <= \"9\" && (this.mode == \"code\" || state.value.length > 0)) ||\n (symbol == \"_\" && this.mode == \"snake\" && state.value.length > 0) ||\n (symbol == \"-\" && this.mode == \"attribute\" && state.value.length > 0));\n }\n}\nadd(\"identifier-code\", (settings) => new Handler(settings || {}, \"code\"));\nadd(\"identifier-pascal\", (settings) => new Handler(settings || {}, \"pascal\"));\nadd(\"identifier-snake\", (settings) => new Handler(settings || {}, \"snake\"));\nadd(\"identifier-camel\", (settings) => new Handler(settings || {}, \"camel\"));\nadd(\"identifier-attribute\", (settings) => new Handler(settings || {}, \"attribute\"));\n//# sourceMappingURL=identifier.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n const year = new Date().getFullYear().toString();\n if (unformatted.value.length > 1 && unformatted.get(0, 2) != \"19\" && unformatted.get(0, 2) != \"20\")\n result = result.prepend(unformatted.get(0, 2) > year.substr(2, 2) ? \"19\" : \"20\");\n if (result.value.length >= 8)\n result = result.insert(8, \"-\");\n return {\n ...result.truncate(13),\n type: \"text\",\n length: [11, 13],\n pattern: /^\\d{6,8}-\\d{4}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\"-\");\n }\n allowed(symbol, state) {\n return state.value.length < 13 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"identity-number\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=identity-number.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"number\" ? data.toString() : \"\";\n }\n fromString(value) {\n const parsed = typeof value == \"string\" ? Number.parseInt(value) : undefined;\n return typeof parsed == \"number\" && !Number.isNaN(parsed) ? parsed : undefined;\n }\n format(unformatted) {\n return {\n ...unformatted,\n type: \"number\",\n length: [3, undefined],\n pattern: /^[0-9]+$/,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"integer\", () => new Handler());\n//# sourceMappingURL=integer.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"password\", autocomplete: \"current-password\" };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return true;\n }\n}\nadd(\"password\", () => new Handler());\n//# sourceMappingURL=password.js.map","import { add } from \"./base\";\nclass Handler {\n toString(data) {\n return typeof data == \"number\" ? (data * 100).toString() : \"\";\n }\n fromString(value) {\n const parsedFloat = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return typeof parsedFloat == \"number\" && !Number.isNaN(parsedFloat) ? parsedFloat / 100 : undefined;\n }\n format(unformatted) {\n return {\n ...(unformatted.value ? unformatted.suffix(\" %\") : unformatted),\n type: \"text\",\n length: [3, undefined],\n pattern: /^\\d+(.\\d)? %+$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" %\");\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" && symbol <= \"9\") || (symbol == \".\" && !state.value.includes(\".\"));\n }\n}\nadd(\"percent\", () => new Handler());\n//# sourceMappingURL=percent.js.map","export const phonePrefix = [\n {\n countryCode: \"+46\",\n areaCodes: [\n \"011\",\n \"0120\",\n \"0121\",\n \"0122\",\n \"0123\",\n \"0125\",\n \"013\",\n \"0140\",\n \"0141\",\n \"0142\",\n \"0143\",\n \"0144\",\n \"0150\",\n \"0151\",\n \"0152\",\n \"0155\",\n \"0156\",\n \"0157\",\n \"0158\",\n \"0159\",\n \"016\",\n \"0171\",\n \"0173\",\n \"0174\",\n \"0175\",\n \"0176\",\n \"018\",\n \"019\",\n \"021\",\n \"0220\",\n \"0221\",\n \"0222\",\n \"0223\",\n \"0224\",\n \"0225\",\n \"0226\",\n \"0227\",\n \"023\",\n \"0240\",\n \"0241\",\n \"0243\",\n \"0246\",\n \"0247\",\n \"0248\",\n \"0250\",\n \"0251\",\n \"0253\",\n \"0258\",\n \"026\",\n \"0270\",\n \"0271\",\n \"0278\",\n \"0280\",\n \"0281\",\n \"0290\",\n \"0291\",\n \"0292\",\n \"0293\",\n \"0294\",\n \"0295\",\n \"0297\",\n \"0300\",\n \"0301\",\n \"0302\",\n \"0303\",\n \"0304\",\n \"031\",\n \"0320\",\n \"0321\",\n \"0322\",\n \"0325\",\n \"033\",\n \"0340\",\n \"0345\",\n \"0346\",\n \"035\",\n \"036\",\n \"0370\",\n \"0371\",\n \"0372\",\n \"0380\",\n \"0381\",\n \"0382\",\n \"0383\",\n \"0390\",\n \"0392\",\n \"0393\",\n \"040\",\n \"0410\",\n \"0411\",\n \"0413\",\n \"0414\",\n \"0415\",\n \"0416\",\n \"0417\",\n \"0418\",\n \"042\",\n \"0430\",\n \"0431\",\n \"0433\",\n \"0435\",\n \"044\",\n \"0451\",\n \"0454\",\n \"0455\",\n \"0456\",\n \"0457\",\n \"0459\",\n \"046\",\n \"0470\",\n \"0471\",\n \"0472\",\n \"0474\",\n \"0476\",\n \"0477\",\n \"0478\",\n \"0479\",\n \"0480\",\n \"0481\",\n \"0485\",\n \"0486\",\n \"0490\",\n \"0491\",\n \"0492\",\n \"0493\",\n \"0494\",\n \"0495\",\n \"0496\",\n \"0498\",\n \"0499\",\n \"0500\",\n \"0501\",\n \"0502\",\n \"0503\",\n \"0504\",\n \"0505\",\n \"0506\",\n \"0510\",\n \"0511\",\n \"0512\",\n \"0513\",\n \"0514\",\n \"0515\",\n \"0520\",\n \"0521\",\n \"0522\",\n \"0523\",\n \"0524\",\n \"0525\",\n \"0526\",\n \"0528\",\n \"0530\",\n \"0531\",\n \"0532\",\n \"0533\",\n \"0534\",\n \"054\",\n \"0550\",\n \"0551\",\n \"0552\",\n \"0553\",\n \"0554\",\n \"0555\",\n \"0560\",\n \"0563\",\n \"0564\",\n \"0565\",\n \"0570\",\n \"0571\",\n \"0573\",\n \"0580\",\n \"0581\",\n \"0582\",\n \"0583\",\n \"0584\",\n \"0585\",\n \"0586\",\n \"0587\",\n \"0589\",\n \"0590\",\n \"0591\",\n \"060\",\n \"0611\",\n \"0612\",\n \"0613\",\n \"0620\",\n \"0621\",\n \"0622\",\n \"0623\",\n \"0624\",\n \"063\",\n \"0640\",\n \"0642\",\n \"0643\",\n \"0644\",\n \"0645\",\n \"0647\",\n \"0650\",\n \"0651\",\n \"0652\",\n \"0653\",\n \"0657\",\n \"0660\",\n \"0661\",\n \"0662\",\n \"0663\",\n \"0670\",\n \"0671\",\n \"0672\",\n \"0680\",\n \"0682\",\n \"0684\",\n \"0687\",\n \"0690\",\n \"0691\",\n \"0692\",\n \"0693\",\n \"0695\",\n \"0696\",\n \"08\",\n \"090\",\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0918\",\n \"0920\",\n \"0921\",\n \"0922\",\n \"0923\",\n \"0924\",\n \"0925\",\n \"0926\",\n \"0927\",\n \"0928\",\n \"0929\",\n \"0930\",\n \"0932\",\n \"0933\",\n \"0934\",\n \"0935\",\n \"0940\",\n \"0941\",\n \"0942\",\n \"0943\",\n \"0950\",\n \"0951\",\n \"0952\",\n \"0953\",\n \"0954\",\n \"0960\",\n \"0961\",\n \"0970\",\n \"0971\",\n \"0973\",\n \"0975\",\n \"0976\",\n \"0977\",\n \"0978\",\n \"0980\",\n \"0981\",\n \"010\",\n \"020\",\n \"0378\",\n \"070\",\n \"072\",\n \"073\",\n \"076\",\n \"079\",\n \"0710\",\n \"0740\",\n \"0746\",\n \"0749\",\n \"0741\",\n \"0742\",\n \"0743\",\n \"0744\",\n \"0745\",\n \"0747\",\n \"075\",\n \"077\",\n \"078\",\n \"0900\",\n \"0939\",\n \"0944\",\n \"0969\",\n \"099\",\n ],\n },\n];\n//# sourceMappingURL=phonePrefix.js.map","import { add } from \"./base\";\nimport { phonePrefix } from \"./phonePrefix\";\nclass Handler {\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n let result = unformatted;\n if (result.value.startsWith(\"+\")) {\n for (const country of phonePrefix)\n if (result.value.startsWith(country.countryCode))\n for (let prefix of country.areaCodes) {\n prefix = prefix.substring(1);\n if (result.value.startsWith(country.countryCode + prefix) && !result.value.includes(\"-\"))\n result = result\n .insert(country.countryCode.length, \"-\")\n .insert(country.countryCode.length + 1 + prefix.length, \"-\");\n }\n }\n else {\n const first = phonePrefix[0];\n for (const prefix of first.areaCodes)\n if (result.value.startsWith(prefix) && !result.value.includes(\"-\")) {\n result = result.insert(prefix.length, \"-\");\n result = result.delete(0);\n result = result.insert(0, \"-\").insert(0, first.countryCode);\n }\n }\n if (result.value.includes(\"-\")) {\n const digitIndex = result.value.indexOf(\"-\", result.value.indexOf(\"-\") + 1) + 1;\n const digitCount = result.value.substring(digitIndex, result.value.length + 1).length;\n switch (digitCount) {\n case 4:\n result = result.insert(digitIndex + 2, \" \");\n break;\n case 5:\n result = result.insert(digitIndex + 3, \" \");\n break;\n case 6:\n result = result.insert(digitIndex + 2, \" \");\n result = result.insert(digitIndex + 5, \" \");\n break;\n case 7:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 6, \" \");\n break;\n case 8:\n case 9:\n result = result.insert(digitIndex + 3, \" \");\n result = result.insert(digitIndex + 7, \" \");\n break;\n default:\n break;\n }\n if (digitCount > 9) {\n const spaces = Math.ceil(digitCount / 3) - 1;\n if (spaces > 0) {\n for (let i = 0; i < spaces; i++) {\n const position = i * 3 + 3 + i;\n result = result.insert(position + digitIndex, \" \");\n }\n }\n }\n }\n return { ...result, type: \"text\", autocomplete: \"tel\" };\n }\n unformat(formatted) {\n return formatted.delete(\" \").delete(\"-\");\n }\n allowed(symbol, state) {\n return ((symbol >= \"0\" && symbol <= \"9\") || (state.selection.start == 0 && symbol == \"+\" && !state.value.includes(\"+\")));\n }\n}\nadd(\"phone\", () => new Handler());\n//# sourceMappingURL=phone.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(country) {\n this.country = country;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n const result = !unformatted.value.includes(\" \") && unformatted.value.length >= 4 ? unformatted.insert(3, \" \") : unformatted;\n return {\n ...result.truncate(6),\n type: \"text\",\n autocomplete: \"postal-code\",\n length: [6, 6],\n pattern: /^\\d{3} \\d{2}$/,\n };\n }\n unformat(formatted) {\n return formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return state.value.length <= 5 && symbol >= \"0\" && symbol <= \"9\";\n }\n}\nadd(\"postal-code\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=postal-code.js.map","import { isoly } from \"isoly\";\nimport { StateEditor } from \"../StateEditor\";\nimport { add } from \"./base\";\nclass Handler {\n constructor(currency) {\n this.currency = currency;\n }\n toString(data) {\n return typeof data == \"number\" ? (isNaN(data) ? \"\" : data.toString()) : \"\";\n }\n fromString(value) {\n const result = typeof value == \"string\" ? Number.parseFloat(value) : undefined;\n return result != undefined && !isNaN(result) ? result : undefined;\n }\n format(unformatted) {\n let result = unformatted.value == \"NaN\" ? unformatted.replace(0, unformatted.value.length, \"\") : StateEditor.copy(unformatted);\n const decimals = this.currency && isoly.Currency.decimalDigits(this.currency);\n if (!result.value.includes(\".\") && decimals && Math.abs(Number.parseFloat(result.value)) > 0)\n result = result.suffix(\".0\");\n let separator = result.value && result.value.includes(\".\") ? result.value.indexOf(\".\") : undefined;\n if (separator == 0) {\n result = result.prepend(\"0\");\n separator++;\n }\n if (separator != undefined) {\n const adjust = separator + 1 + (decimals ?? 2) - result.value.length;\n result = adjust < 0 ? result.truncate(result.value.length + adjust) : result.suffix(\"0\".repeat(adjust));\n }\n else\n separator = result.value.length;\n const spaces = separator <= 0 ? 0 : Math.ceil(separator / 3) - 1;\n for (let i = 0; i < spaces; i++) {\n const position = separator - (spaces - i) * 3;\n result = result.insert(position, \" \");\n separator++;\n }\n if (result.match(/^[0\\s]{2,}$/))\n result = result.replace(0, result.value.length, \"0\");\n else if (result.match(/^[0\\s]{2,}(\\s\\w{3}){1}$/))\n result = result.replace(0, result.value.length - 4, \"0\");\n result =\n this.currency && (result.value.length > 1 || (result.value.length == 1 && result.value.charAt(0) != \".\"))\n ? result.suffix(\" \" + this.currency)\n : result;\n return {\n ...result,\n type: \"text\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d+)?\" + (this.currency ? \" \" + this.currency : \"\") + \"$\"),\n };\n }\n unformat(formatted) {\n return this.currency ? formatted.delete(\" \").delete(\"\" + this.currency) : formatted.delete(\" \");\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" && symbol <= \"9\") || (symbol == \".\" && !state.value.includes(\".\"));\n }\n}\nadd(\"price\", (argument) => new Handler(argument && argument.length > 0 ? argument[0] : undefined));\n//# sourceMappingURL=price.js.map","import { add } from \"./base\";\nclass Handler {\n constructor(settings) {\n this.settings = settings;\n }\n toString(data) {\n return typeof data == \"string\" ? data : \"\";\n }\n fromString(value) {\n return typeof value == \"string\" && !!value ? value : undefined;\n }\n format(unformatted) {\n return { ...unformatted, type: \"text\", ...this.settings };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (this.settings.length == undefined ||\n this.settings.length[1] == undefined ||\n state.value.length < this.settings.length[1]);\n }\n}\nadd(\"text\", (settings) => new Handler(settings || {}));\nadd(\"email\", (settings) => new Handler(settings || {}));\n//# sourceMappingURL=text.js.map",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { CountryCode, Currency, DateTime, Language, Locale } from \"isoly\"\nimport { format, get, Type } from \"tidily\"\n\n@Component({\n\ttag: \"smoothly-display\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplay {\n\t@Prop() type: Type\n\t@Prop() value?: any\n\t@Prop() currency?: Currency\n\t@Prop() country?: CountryCode.Alpha2\n\t@Prop() format?: DateTime.Format\n\trender() {\n\t\tlet result: string | HTMLElement | undefined\n\t\tconst type = this.type\n\t\tswitch (type) {\n\t\t\tdefault:\n\t\t\t\tresult = format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"email\":\n\t\t\t\tresult = <a href={\"mailto:\" + this.value}>{format(this.value, type)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"phone\":\n\t\t\t\tresult = <a href={\"tel:\" + this.value}>{format(this.value, type, this.country)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"postal-code\":\n\t\t\t\tresult = format(this.value, type, this.country)\n\t\t\t\tbreak\n\t\t\tcase \"price\":\n\t\t\t\tresult = format(this.value, type, this.currency)\n\t\t\t\tbreak\n\t\t\tcase \"date\":\n\t\t\t\tresult = get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t\tcase \"duration\":\n\t\t\t\tresult = format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"date-time\":\n\t\t\t\tresult = this.format\n\t\t\t\t\t? DateTime.localize(this.value, this.format, getLocale())\n\t\t\t\t\t: get(this.type as Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n}\nfunction getLocale(): Locale | undefined {\n\tconst result = navigator.language\n\treturn Locale.is(result) ? result : Language.is(result) ? Locale.toLocale(result) : undefined\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, Prop } from \"@stencil/core\"\nimport { Currency } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-display-amount\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayAmount {\n\t@Prop() amount: number | string\n\t@Prop() currency: Currency\n\t@Prop() toInteger = false\n\n\tformat(amount: string): string {\n\t\tconst digitsPerGroup = 3\n\t\tconst defaultDecimals = 2\n\t\tconst maxDecimals = (\n\t\t\tCurrency.decimalDigits(this.currency) ? Currency.decimalDigits(this.currency) : defaultDecimals\n\t\t) as number\n\t\tlet beforeSeparator = amount.length\n\t\tlet separator: number\n\t\tlet result = amount\n\t\tif (result == \"\")\n\t\t\tresult = \"0\"\n\t\tif (amount.includes(\".\")) {\n\t\t\tseparator = amount.indexOf(\".\")\n\t\t\tif (separator == 0) {\n\t\t\t\tresult = \"0\" + result\n\t\t\t\tseparator++\n\t\t\t}\n\t\t\tbeforeSeparator = separator\n\t\t\tresult = result.padEnd(separator + maxDecimals + 1, \"0\")\n\t\t\tresult = result.substring(0, separator + maxDecimals + 1)\n\t\t} else if (!this.toInteger) {\n\t\t\tresult = result + \".\"\n\t\t\tseparator = result.length - 1\n\t\t\tresult = result.padEnd(separator + maxDecimals + 1, \"0\")\n\t\t}\n\t\tconst spaces = Math.ceil(beforeSeparator / digitsPerGroup) - 1\n\t\tif (spaces > 0) {\n\t\t\tfor (let i = 0; i < spaces; i++) {\n\t\t\t\tconst position = beforeSeparator - (spaces - i) * digitsPerGroup\n\t\t\t\tresult = result.slice(0, position) + \" \" + result.slice(position, result.length)\n\t\t\t\tbeforeSeparator++\n\t\t\t}\n\t\t}\n\n\t\treturn result\n\t}\n\n\trender() {\n\t\treturn [\n\t\t\ttypeof this.amount == \"number\" ? this.format(this.amount.toString()) : this.format(this.amount),\n\t\t\t\" \",\n\t\t\tthis.currency,\n\t\t]\n\t}\n}\n","import { Component, Event, EventEmitter, h } from \"@stencil/core\"\nimport { Notice } from \"../../model\"\n@Component({\n\ttag: \"smoothly-display-demo\",\n})\nexport class SmoothlyDisplayDemo {\n\t@Event() notice: EventEmitter<Notice>\n\tprivate noticeWarning(notice: Notice) {\n\t\tconsole.log(\"emit\", notice)\n\t\tthis.notice.emit(notice)\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<main>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly display</h2>\n\t\t\t\t\t<dl>\n\t\t\t\t\t\t<dt>Duration</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: 13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: 8 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ minutes: 3 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: -13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ hours: -8 }} />\n\t\t\t\t\t\t\t\t<smoothly-display type=\"duration\" value={{ minutes: -3 }} />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>text</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"text\" value=\"text\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>postal code</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"postal-code\" value=\"752 31\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>password</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"password\" value=\"password\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>email</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"email\" value=\"test@example.com\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"price\" value=\"13.37\" currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount without decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200} currency=\"SEK\" toInteger={true}></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount with decimals if they are set, otherwise no decimal</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200.20} currency=\"SEK\" toInteger={true}></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>display amount with decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount amount={200.20} currency=\"SEK\"></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>percent</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"percent\" value=\"42\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>phone</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"phone\" value=\"0101881108\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card number</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-number\" value=\"4111111111111111\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card expires</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-expires\" value=\"7/22\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>card csc</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"card-csc\" value=\"987\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2022-07-07\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>date time</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"short\", day: \"numeric\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T02:02:02Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"long\", day: \"2-digit\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\"}} value=\"2022-07-07T02:02:02Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"2-digit\", day: \"2-digit\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T12:22:24Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"numeric\", day: \"numeric\", hour: \"numeric\", minute: \"numeric\", second: \"numeric\"}} value=\"2022-07-07T12:22:24Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"numeric\", month: \"short\", day: \"numeric\"}} value=\"2022-07-07T00:00+02:00\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"numeric\", day: \"numeric\"}} value=\"2022-07-07T00:00+02:00\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type=\"date-time\" format={{year: \"2-digit\", month: \"numeric\", day: \"numeric\", hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\", timeZone:\"Europe/Stockholm\"}} value=\"2022-07-07T12:15Z\"></smoothly-display>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Deprecated display date time</dt>\n\t\t\t\t\t\t<dt>Display amount</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-amount currency=\"SEK\" amount=\"1289.5\"></smoothly-display-amount>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Quiet</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-quiet color=\"dark\">-</smoothly-quiet>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t</dl>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly skeleton</h2>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" color=\"200,200,255\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" color=\"var(--smoothly-warning-color)\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"center\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" width=\"20rem\"></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t\t<smoothly-skeleton align=\"right\" period={3} distance=\"20rem\" ></smoothly-skeleton>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly URL encoded</h2>\n\t\t\t\t\t<smoothly-urlencoded data=\"hej=hopp&tjena=moss\"></smoothly-urlencoded>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly popup</h2>\n\t\t\t\t\t<div style={{display: \"flex\", justifyContent: \"space-between\"}}>\n\t\t\t\t\t\t<smoothly-popup direction=\"down\">\n\t\t\t\t\t\t\tClick for popup\n\t\t\t\t\t\t\t<span slot=\"popup\" color=\"dark\" style={{whiteSpace: \"nowrap\"}}>Some popup stuff that has a lot of text</span>\n\t\t\t\t\t\t</smoothly-popup>\n\t\t\t\t\t\t<smoothly-popup direction=\"down\">\n\t\t\t\t\t\t\tClick for popup\n\t\t\t\t\t\t\t<span slot=\"popup\" color=\"dark\" style={{whiteSpace: \"nowrap\"}}>Some popup with a bunch of text.</span>\n\t\t\t\t\t\t</smoothly-popup>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-popup>\n\t\t\t\t\t\t<div>Popup, click me</div>\n\t\t\t\t\t\t<div color=\"dark\" slot=\"popup\">\n\t\t\t\t\t\t\t1 line popup\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-popup>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t<h2>Test of different kinds of notifier</h2>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.warn(\"This is a test warning notice.\"))}>warning</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.succeeded(\"This is a test success notice.\"))}>success</button>\n\t\t\t\t\t<button onClick={() => this.noticeWarning(Notice.failed(\"This is a test danger notice.\"))}>danger</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.execute(\n\t\t\t\t\t\t\t\t\t\"This is a test execute notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\texecute\n\t\t\t\t\t</button>\n\t\t\t\t\t<button\n\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\tthis.noticeWarning(\n\t\t\t\t\t\t\t\tNotice.delay(\n\t\t\t\t\t\t\t\t\t\"This is a test delay notice.\",\n\t\t\t\t\t\t\t\t\t() =>\n\t\t\t\t\t\t\t\t\t\tnew Promise<[boolean, string]>(resolve =>\n\t\t\t\t\t\t\t\t\t\t\twindow.setTimeout(() => resolve([true, \"This went great\"]), 3000)\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}>\n\t\t\t\t\t\tdelay\n\t\t\t\t\t</button>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly spinner</h2>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>Large Spinner<smoothly-spinner active size=\"large\" style={{\"--background-color\": \"255,255,255\", \"--background-opacity\": \"0.2\", \"--spinner-color\": \"0,130,0\", }}></smoothly-spinner></div>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>Medium Spinner<smoothly-spinner active size=\"medium\"></smoothly-spinner></div>\n\t\t\t\t\t<div style={{position: \"relative\", height: \"10em\"}}>Small Spinner<smoothly-spinner active size=\"small\"></smoothly-spinner></div>\n\t\t\t\t\t<div style={{position: \"absolute\", left: \"500px\", top: \"150px\" }}><smoothly-svg url=\"https://theme.payfunc.com/intergiro/animated-logo.svg\"></smoothly-svg></div>\n\t\t\t\t</fieldset>\n\t\t\t\t<fieldset>\n\t\t\t\t\t<h2>Smoothly summary</h2>\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary size=\"large\">\n\t\t\t\t\t\t<p slot=\"summary\">Some title</p>\n\t\t\t\t\t\t<p slot=\"content\">Some content</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\">\n\t\t\t\t\t\t<div slot=\"summary\" style={{display: \"flex\", gap: \"0.3rem\"}}><span>Person</span><smoothly-icon name=\"person\" color=\"light\" fill=\"clear\" size=\"tiny\"></smoothly-icon></div>\n\t\t\t\t\t\t<p slot=\"content\">Some person information.</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary color=\"danger\" fill=\"clear\" open>\n\t\t\t\t\t\t<p slot=\"summary\">Some other title</p>\n\t\t\t\t\t\t<p slot=\"content\">A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please.A lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot more content, yes please.</p>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<h2>Label</h2>\n\t\t\t\t\t{labels.map(l => <smoothly-label hue={l.hue} description={l.description} shape={\"rectangle\"}>{l.name}</smoothly-label>)}\n\t\t\t\t</fieldset>\n\t\t\t</main>,\n\t\t]\n\t}\n}\nconst labels = [{\n\tname: \"2fa\",\n\thue: 120,\n\tdescription: \"User has two factor authentication enabled.\",\n},\n{\nname: \"expired\",\nhue: 240,\ndescription: \"User's password has expired.\",\n},\n{\nname: \"inactive\",\nhue: 60,\ndescription: \"User is inactive.\",\n}]\n","export class Rule {\n filter(value) {\n return value.filter(element => this.is(element));\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\nconst creators = [\n criteria => (criteria instanceof Rule ? criteria : undefined),\n];\nexport function add(create) {\n creators.push(create);\n}\nlet always;\nexport function setFallback(fallback) {\n always = fallback;\n}\nexport function create(criteria) {\n let result;\n for (const c of creators) {\n result = c(criteria);\n if (result)\n break;\n }\n return result || always;\n}\n//# sourceMappingURL=Rule.js.map","import { Rule, setFallback } from \"./Rule\";\nexport class Always extends Rule {\n constructor() {\n super();\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Always\";\n }\n is(value) {\n return true;\n }\n toString() {\n return \"\";\n }\n}\nsetFallback(new Always());\n//# sourceMappingURL=Always.js.map","import { create, Rule } from \"./Rule\";\nexport class Any extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 50;\n this.class = \"Any\";\n }\n is(value) {\n return (value &&\n typeof value == \"object\" &&\n Object.getOwnPropertyNames(value).some(property => this.criteria.is(value[property]) || this.is(value[property])));\n }\n toString() {\n return this.criteria.stringify(this.precedence);\n }\n}\nexport function any(criteria, value) {\n const result = new Any(create(criteria));\n return value ? result.is(value) : result;\n}\n//# sourceMappingURL=Any.js.map","import { Any } from \"./Any\";\nimport { create, Rule } from \"./Rule\";\nexport class And extends Rule {\n constructor(rules) {\n super();\n this.precedence = 40;\n this.class = \"And\";\n this.rules = rules.reduce((r, e) => (e instanceof And ? [...r, ...e.rules] : [...r, e]), []);\n }\n is(value) {\n return this.rules.every(c => c.is(value));\n }\n toString() {\n return this.rules.map(c => c.stringify(this.precedence)).join(\" \");\n }\n generalize() {\n return new And(this.rules.map(r => (r.class == \"Property\" ? r : new Any(r))));\n }\n}\nexport function and(...criterias) {\n return new And(criterias.map(create));\n}\n//# sourceMappingURL=And.js.map","import { Rule } from \"./Rule\";\nexport var Criteria;\n(function (Criteria) {\n Criteria.is = isCriteria;\n})(Criteria || (Criteria = {}));\nexport function isCriteria(value, recursive = false) {\n return (typeof value == \"number\" ||\n typeof value == \"string\" ||\n value instanceof Rule ||\n (recursive &&\n typeof value == \"object\" &&\n value &&\n Object.values(value).every(value => Array.isArray(value) ? value.every(value => isCriteria(value, true)) : isCriteria(value, true))));\n}\n//# sourceMappingURL=Criteria.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Level;\n(function (Level) {\n Level[Level[\"Logging\"] = 0] = \"Logging\";\n Level[Level[\"Debug\"] = 1] = \"Debug\";\n Level[Level[\"Warning\"] = 2] = \"Warning\";\n Level[Level[\"Recoverable\"] = 3] = \"Recoverable\";\n Level[Level[\"Critical\"] = 4] = \"Critical\";\n})(Level = exports.Level || (exports.Level = {}));\n//# sourceMappingURL=Level.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Level_1 = require(\"./Level\");\nclass Message {\n constructor(description, level = Level_1.Level.Recoverable, type = \"unknown\", region) {\n this.description = description;\n this.level = level;\n this.type = type;\n this.region = region;\n }\n toString() {\n return Level_1.Level[this.level] + \": \" + this.type + \" error. \" + this.description + (this.region ? \" @ \" + this.region.toString() : \"\");\n }\n}\nexports.Message = Message;\n//# sourceMappingURL=Message.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Message_1 = require(\"./Message\");\nclass ConsoleHandler {\n raise(message, level, type, region) {\n if (!(message instanceof Message_1.Message))\n message = new Message_1.Message(message, level, type, region);\n console.error(message.toString());\n }\n}\nexports.ConsoleHandler = ConsoleHandler;\n//# sourceMappingURL=ConsoleHandler.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Position {\n constructor(line, column) {\n this.line = line;\n this.column = column;\n }\n toString() {\n return \"Ln \" + this.line + \", Col \" + this.column;\n }\n}\nexports.Position = Position;\n//# sourceMappingURL=Position.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Position_1 = require(\"./Position\");\nclass Location extends Position_1.Position {\n constructor(resource, line, column) {\n super(line, column);\n this.resource = resource;\n }\n toString() {\n return this.resource.toString() + \" @ \" + super.toString();\n }\n}\nexports.Location = Location;\n//# sourceMappingURL=Location.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Region {\n constructor(resource, start, end, content) {\n this.resource = resource;\n this.start = start;\n this.end = end;\n this.content = content;\n }\n merge(other) { return other ? new Region(this.resource, this.start, other.end, this.content ? this.content : \"\" + other.content ? other.content : \"\") : this; }\n toString() {\n let result = this.resource.toString();\n if (this.start && this.end)\n result += \" (\" + this.start.toString() + \" - \" + this.end.toString() + \") \";\n if (this.content)\n result += this.content;\n return result;\n }\n}\nexports.Region = Region;\n//# sourceMappingURL=Region.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ConsoleHandler_1 = require(\"./ConsoleHandler\");\nexports.ConsoleHandler = ConsoleHandler_1.ConsoleHandler;\nvar Level_1 = require(\"./Level\");\nexports.Level = Level_1.Level;\nvar Location_1 = require(\"./Location\");\nexports.Location = Location_1.Location;\nvar Message_1 = require(\"./Message\");\nexports.Message = Message_1.Message;\nvar Position_1 = require(\"./Position\");\nexports.Position = Position_1.Position;\nvar Region_1 = require(\"./Region\");\nexports.Region = Region_1.Region;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass User {\n constructor(name, password) {\n this.name = name;\n this.password = password;\n }\n get isEmpty() {\n return !this.name && !this.password;\n }\n toString() {\n let result = \"\";\n if (this.name)\n result = this.name;\n if (this.password)\n result += \":\" + this.password;\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new User(splitted[0], splitted[1]);\n }\n else\n result = new User();\n return result;\n }\n}\nexports.User = User;\n//# sourceMappingURL=User.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Endpoint {\n constructor(host = [], port) {\n this.host = host;\n this.port = port;\n }\n get isEmpty() {\n return this.host.length == 0 && !this.port;\n }\n toString() {\n let result = this.host.join(\".\");\n if (this.port)\n result += \":\" + this.port.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\":\", 2);\n result = new Endpoint(splitted[0].split(\".\"), splitted.length > 1 ? parseInt(splitted[1]) : undefined);\n }\n else\n result = new Endpoint();\n return result;\n }\n}\nexports.Endpoint = Endpoint;\n//# sourceMappingURL=Endpoint.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst User_1 = require(\"./User\");\nconst Endpoint_1 = require(\"./Endpoint\");\nclass Authority {\n constructor(user = new User_1.User(), endpoint = new Endpoint_1.Endpoint()) {\n this.user = user;\n this.endpoint = endpoint;\n }\n get isEmpty() {\n return this.user.isEmpty && this.endpoint.isEmpty;\n }\n toString() {\n let result = \"\";\n if (!this.user.isEmpty)\n result = this.user.toString() + \"@\";\n if (!this.endpoint.isEmpty)\n result = result + this.endpoint.toString();\n return result;\n }\n static parse(data) {\n let result;\n if (data) {\n const splitted = data.split(\"@\", 2);\n result = new Authority(User_1.User.parse(splitted.length == 2 ? splitted.pop() : undefined), Endpoint_1.Endpoint.parse(splitted.pop()));\n }\n return result;\n }\n}\nexports.Authority = Authority;\n//# sourceMappingURL=Authority.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Authority_1 = require(\"./Authority\");\nclass Locator {\n constructor(scheme = [], authority = new Authority_1.Authority(), path = [], query = {}, fragment) {\n this.scheme = scheme;\n this.authority = authority;\n this.path = path;\n this.query = query;\n this.fragment = fragment;\n }\n get isRelative() {\n return this.path[0] == \".\" || this.path[0] == \"..\";\n }\n get isFolder() {\n return this.path[this.path.length - 1] == \"\";\n }\n get folder() {\n return this.isFolder ? this : new Locator(this.scheme, this.authority, this.path.filter((value, index) => index < this.path.length - 1), this.query, this.fragment);\n }\n get name() {\n return this.path[this.path.length - 1];\n }\n get extension() {\n const splitted = this.name.split(\".\");\n return splitted.length > 1 ? splitted[splitted.length - 1] : \"\";\n }\n createArray(value, count) {\n const result = [];\n while (count-- > 0)\n result.push(value);\n return result;\n }\n normalize() {\n let skip = 0;\n const path = this.path.reverse().filter((item, index) => {\n let r = false;\n if ((item == \"\" || item == \".\") && index < this.path.length - 1)\n r = false;\n else if (item == \"..\")\n skip++;\n else if (skip > 0)\n skip--;\n else\n r = true;\n return r;\n }).concat(this.createArray(\"..\", skip)).reverse();\n return new Locator(this.scheme, this.authority, path, this.query, this.fragment);\n }\n resolve(absolute) {\n return !absolute ? this : new Locator(this.scheme.length > 0 ? this.scheme : absolute.scheme, !this.authority.isEmpty ? this.authority : absolute.authority, this.isRelative ? absolute.folder.path.concat(this.path) : this.path, this.query, this.fragment).normalize();\n }\n appendPath(path) {\n return new Locator(this.scheme, this.authority, path instanceof Array ? [...this.path, ...path] : [...this.path, path], this.query, this.fragment);\n }\n toString() {\n let result = \"\";\n if (this.scheme.length > 0)\n result += this.scheme.join(\"+\") + \":\";\n if (!this.authority.isEmpty)\n result += \"//\" + this.authority.toString();\n else if (this.scheme.length > 0)\n result += \"//\";\n if (this.path) {\n let path = this.path.join(\"/\");\n if (path[0] != \".\" || result.length > 0)\n path = \"/\" + path;\n result += path;\n }\n if (Object.keys(this.query).length > 0)\n result += \"?\" + this.query.toString();\n if (this.fragment)\n result += \"#\" + this.fragment;\n return result;\n }\n static parse(data) {\n let result;\n switch (data) {\n case \"\":\n case null:\n case undefined:\n break;\n default:\n let hasAuthority = true;\n let scheme = [];\n let splitted = data.split(\"://\", 2);\n if (splitted.length > 1) {\n scheme = (splitted.shift() || \"\").split(\"+\");\n data = splitted.shift();\n }\n else if (data.slice(0, 2) == \"//\")\n data = data.slice(2);\n else\n hasAuthority = false;\n let index;\n let fragment;\n if (data && (index = data.lastIndexOf(\"#\")) > -1) {\n fragment = data.slice(index + 1);\n data = data.slice(0, index);\n }\n let query = {};\n if (data && (index = data.lastIndexOf(\"?\")) > -1) {\n query = new Object();\n data.slice(index + 1).split(\";\").forEach(element => {\n splitted = element.split(\"=\");\n const key = splitted.shift();\n const value = splitted.shift();\n if (key && value)\n query[key] = value;\n });\n data = data.slice(0, index);\n }\n let authority;\n let path = [];\n if (data) {\n splitted = data.split(\"/\");\n if (splitted.length > 0) {\n switch (splitted[0]) {\n case \".\":\n case \"..\":\n break;\n case \"\":\n splitted.shift();\n break;\n default:\n if (hasAuthority)\n authority = Authority_1.Authority.parse(splitted.shift());\n else\n splitted.unshift(\".\");\n break;\n }\n path = splitted;\n }\n }\n result = new Locator(scheme, authority, path, query, fragment);\n break;\n }\n return result;\n }\n}\nexports.Locator = Locator;\nLocator.empty = new Locator(undefined, undefined, undefined, undefined, undefined);\n//# sourceMappingURL=Locator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Authority_1 = require(\"./Authority\");\nexports.Authority = Authority_1.Authority;\nvar Endpoint_1 = require(\"./Endpoint\");\nexports.Endpoint = Endpoint_1.Endpoint;\nvar Locator_1 = require(\"./Locator\");\nexports.Locator = Locator_1.Locator;\nvar User_1 = require(\"./User\");\nexports.User = User_1.User;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Device {\n}\nexports.Device = Device;\n//# sourceMappingURL=Device.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass InDevice extends Device_1.Device {\n}\nexports.InDevice = InDevice;\n//# sourceMappingURL=InDevice.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InDevice_1 = require(\"./InDevice\");\nclass Reader extends InDevice_1.InDevice {\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Reader.openers.push({ open, priority });\n Reader.openers = Reader.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(locator) {\n let result;\n let i = 0;\n do\n result = Reader.openers[i++].open(locator);\n while (!result && i < Reader.openers.length);\n return result;\n }\n}\nexports.Reader = Reader;\nReader.openers = [];\n//# sourceMappingURL=Reader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nvar Reader_2 = require(\"./Reader\");\nexports.Reader = Reader_2.Reader;\nclass BufferedReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n this.buffer = [];\n this.lastContent = \"\";\n this.lastMark = this.locationValue = this.backend.location;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return !!this.backend; }\n get opened() { return !!this.backend; }\n get isEmpty() { return (this.buffer.length == 0 || this.buffer[0].data == \"\\0\") && this.backend.isEmpty; }\n get resource() {\n const location = this.location;\n return location ? location.resource : Uri.Locator.empty;\n }\n get location() {\n return this.locationValue;\n }\n get region() {\n return new Error.Region(this.resource, this.lastMark, this.location, this.lastContent);\n }\n close() {\n return this.backend.close();\n }\n peek(length) {\n if (!length)\n length = 1;\n let next;\n while (length > this.buffer.length && (next = this.backend.read()))\n this.buffer.push({ data: next, location: this.backend.location });\n return this.buffer.length == 0 ? undefined : this.buffer.slice(0, length > this.buffer.length ? this.buffer.length : length).map(value => value.data).join(\"\");\n }\n read(length) {\n if (!length)\n length = 1;\n const result = this.peek(length);\n if (result && result.length > 0) {\n this.locationValue = this.buffer[result.length - 1].location;\n this.buffer.splice(0, result.length);\n this.lastContent += result;\n }\n return result;\n }\n peekIs(value, count) {\n let result;\n if (value)\n if (typeof (value) == \"string\") {\n const v = value;\n while (count && count-- > 0)\n value += v;\n result = this.peek(value.length) == value ? value : undefined;\n }\n else if (value.length > 0 && !(result = this.peekIs(value[0])) && value.length)\n result = this.peekIs(value.slice(1));\n return result;\n }\n readIf(value) {\n let result;\n if (value)\n if (typeof (value) == \"string\")\n result = this.peek(value.length) == value && this.read(value.length) || undefined;\n else if (value.length > 0 && !(result = this.readIf(value[0])) && value.length)\n result = this.readIf(value.slice(1));\n return result;\n }\n readAll() {\n let result = \"\";\n while (this.peek())\n result += this.read();\n return result != \"\" ? result : undefined;\n }\n mark() {\n const result = this.region;\n this.lastMark = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(backend) {\n return backend ? new BufferedReader(backend) : undefined;\n }\n}\nexports.BufferedReader = BufferedReader;\n//# sourceMappingURL=BufferedReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction close(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.close = close;\nfunction fsync(fd) {\n return __awaiter(this, void 0, void 0, function* () { });\n}\nexports.fsync = fsync;\nfunction open(path, flags, mode) {\n return __awaiter(this, void 0, void 0, function* () { return 0; });\n}\nexports.open = open;\nfunction write(fd, buffer, offset, encoding) {\n return __awaiter(this, void 0, void 0, function* () { return { bytesWritten: 0 }; });\n}\nexports.write = write;\nfunction lstatSync(path, options) { return { isDirectory: () => false }; }\nexports.lstatSync = lstatSync;\nfunction readdirSync(path) { return []; }\nexports.readdirSync = readdirSync;\nfunction readFileSync(path, encoding) { return \"\"; }\nexports.readFileSync = readFileSync;\n//# sourceMappingURL=fs.browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst sep = \"/\";\nexports.sep = sep;\n//# sourceMappingURL=path.browser.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"../Error\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nclass StringReader extends Reader_1.Reader {\n constructor(content, resource) {\n super();\n this.content = content;\n this.resource = resource;\n this.tabSize = 2;\n this.count = 0;\n this.line = 1;\n this.column = 1;\n this.lastContent = \"\";\n this.readable = true;\n this.content += \"\\0\";\n this.lastPosition = this.location;\n }\n get opened() { return this.count + 1 >= this.content.length; }\n get isEmpty() { return this.opened; }\n get location() { return new Error.Location(this.resource, this.line, this.column); }\n get region() { return new Error.Region(this.resource, this.lastPosition, this.location, this.lastContent); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n const result = !(yield this.isEmpty);\n if (result)\n this.count = this.content.length;\n return result;\n });\n }\n read() {\n let result;\n if (this.count < this.content.length)\n result = this.content.charAt(this.count);\n else if (this.count == this.content.length)\n result = undefined;\n this.count++;\n if (result) {\n switch (result) {\n case \"\\n\":\n this.line++;\n this.column = 1;\n break;\n case \"\\t\":\n this.column += this.tabSize;\n break;\n default:\n this.column++;\n break;\n }\n this.lastContent += result;\n }\n return result;\n }\n mark() {\n const result = this.region;\n this.lastPosition = this.location;\n this.lastContent = \"\";\n return result;\n }\n static create(content, resource) {\n return content != undefined ? new StringReader(content, resource || Uri.Locator.empty) : undefined;\n }\n}\nexports.StringReader = StringReader;\n//# sourceMappingURL=StringReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Reader_1 = require(\"./Reader\");\nconst StringReader_1 = require(\"./StringReader\");\nclass FileReader extends Reader_1.Reader {\n constructor(backend) {\n super();\n this.backend = backend;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.backend.isEmpty; }\n get resource() { return this.backend ? this.backend.resource : Uri.Locator.empty; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() { return this.backend.read(); }\n mark() { return this.backend.mark(); }\n static open(resource) {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = StringReader_1.StringReader.create(fs.readFileSync((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"utf-8\"), resource);\n }\n catch (error) {\n console.log(`Failed to open file: ${resource.toString()}`);\n }\n return backend ? new FileReader(backend) : undefined;\n }\n}\nexports.FileReader = FileReader;\nReader_1.Reader.addOpener(p => FileReader.open(p), 10);\n//# sourceMappingURL=FileReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Uri = require(\"../Uri\");\nconst Error = require(\"../Error\");\nconst Reader_1 = require(\"./Reader\");\nconst FileReader_1 = require(\"./FileReader\");\nclass FolderReader extends Reader_1.Reader {\n constructor(files) {\n super();\n this.files = files;\n this.tabSizeValue = 2;\n this.lastLocation = new Error.Location(Uri.Locator.empty, 0, 0);\n }\n get tabSize() { return this.tabSizeValue; }\n set tabSize(size) {\n this.tabSizeValue = size;\n if (this.current)\n this.current.tabSize = size;\n }\n get readable() { return this.current != undefined && this.current.readable || this.files.length > 0; }\n get opened() { return this.current != undefined || this.files.length > 0; }\n get isEmpty() { return this.files.length == 0 && (!this.current || this.current.isEmpty); }\n get resource() { return this.current ? this.current.resource : this.lastLocation.resource; }\n get location() { return this.current ? this.current.location : this.lastLocation; }\n get region() { return this.current ? this.current.region : new Error.Region(this.resource); }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.current != undefined && (yield this.current.close());\n });\n }\n read() {\n let result;\n if (!this.current && this.files.length > 0) {\n this.current = FileReader_1.FileReader.open(this.files.shift());\n this.current.tabSize = this.tabSize;\n }\n if (this.current) {\n result = this.current.read();\n if (result == undefined || result == \"\\0\") {\n this.current.close();\n this.current = undefined;\n }\n }\n this.lastLocation = this.location;\n return result;\n }\n mark() { return this.current ? this.current.mark() : new Error.Region(this.resource); }\n static getFiles(folder, filetype, ignoreFiles = []) {\n let result = [];\n const files = fs.readdirSync(folder);\n files.forEach(file => {\n const filename = folder + path.sep + file;\n if (ignoreFiles.indexOf(filename) == -1) {\n if (fs.lstatSync(filename).isDirectory())\n result = result.concat(FolderReader.getFiles(filename, filetype, ignoreFiles));\n else if (file.length > filetype.length && file.lastIndexOf(filetype, file.length - filetype.length) === file.length - filetype.length)\n result.push(filename);\n }\n });\n return result;\n }\n static open(resource) {\n let files;\n try {\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\") && resource.isFolder || resource.name.match(\"*\"))\n files = FolderReader.getFiles((resource.isRelative ? \"\" : path.sep) + resource.folder.path.join(path.sep), resource.extension);\n }\n catch (error) {\n }\n return files ? new FolderReader(files.map(f => new Uri.Locator([\"file\"], undefined, f.split(path.sep)))) : undefined;\n }\n}\nexports.FolderReader = FolderReader;\nReader_1.Reader.addOpener((resource) => FolderReader.open(resource), 0);\n//# sourceMappingURL=FolderReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction* generate(next) {\n let result;\n while ((result = next()) != undefined)\n yield result;\n}\nfunction isIterator(item) {\n return item.next instanceof Function;\n}\nfunction* merge(left, right) {\n let result;\n while (!(result = left.next()).done)\n yield result.value;\n if (isIterator(right))\n while (!(result = right.next()).done)\n yield result.value;\n else\n yield right;\n}\nclass Enumerator {\n constructor(backend) {\n this.iterator = backend instanceof Function ? generate(backend) : backend;\n }\n get length() {\n let result = 0;\n while (!this.next().done)\n result++;\n return result;\n }\n get last() {\n return this.nextValue && !this.nextValue.done ? this.nextValue.value : undefined;\n }\n fetch() {\n const result = this.next();\n return result.done ? undefined : result.value;\n }\n next(value) {\n return this.nextValue = this.iterator.next(value);\n }\n append(item) {\n return new Enumerator(merge(this, item));\n }\n map(mapping) {\n return new Enumerator(() => {\n const item = this.fetch();\n return (item != undefined) ? mapping(item) : undefined;\n });\n }\n reduce(reduce, result) {\n const item = this.fetch();\n return item ? this.reduce(reduce, reduce(result, item)) : result;\n }\n apply(apply) {\n const item = this.fetch();\n if (item) {\n apply(item);\n this.apply(apply);\n }\n }\n filter(filter) {\n return new Enumerator(() => {\n let item;\n do\n item = this.fetch();\n while (item != undefined && !filter(item));\n return item;\n });\n }\n toArray() {\n const item = this.fetch();\n let result;\n if (!item)\n result = [];\n else {\n result = this.toArray();\n result.unshift(item);\n }\n return result;\n }\n static from(backend) {\n return new Enumerator(backend);\n }\n}\nexports.Enumerator = Enumerator;\nEnumerator.empty = Enumerator.from(() => undefined);\n//# sourceMappingURL=Enumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nfunction isIterable(other) {\n return other == null ? false : typeof other[Symbol.iterator] === \"function\";\n}\nclass Enumerable {\n constructor(get) {\n this.get = get;\n }\n get length() {\n return this.get().length;\n }\n get first() {\n return this.get().fetch();\n }\n get last() {\n return this.get().last;\n }\n getEnumerator() {\n return new Enumerator_1.Enumerator(this.get());\n }\n [Symbol.iterator]() {\n return this.getEnumerator();\n }\n append(item) {\n return new Enumerable(() => this.get().append(item));\n }\n map(mapping) {\n return new Enumerable(() => this.get().map(mapping));\n }\n reduce(reduce, result) {\n return this.get().reduce(reduce, result);\n }\n apply(apply) {\n this.get().apply(apply);\n }\n filter(filter) {\n return new Enumerable(() => this.get().filter(filter));\n }\n toArray() {\n return this.getEnumerator().toArray();\n }\n static from(get) {\n return isIterable(get) ? new Enumerable(() => new Enumerator_1.Enumerator(get[Symbol.iterator]())) : new Enumerable(() => {\n const r = get();\n return r instanceof Enumerator_1.Enumerator ? r : new Enumerator_1.Enumerator(r);\n });\n }\n}\nexports.Enumerable = Enumerable;\nEnumerable.empty = Enumerable.from([]);\n//# sourceMappingURL=Enumerable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass ArrayEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => this.position < this.backend.length ? this.backend[this.position++] : undefined);\n this.backend = backend;\n this.position = 0;\n }\n}\nexports.ArrayEnumerator = ArrayEnumerator;\n//# sourceMappingURL=ArrayEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Enumerator_1 = require(\"./Enumerator\");\nclass BufferedEnumerator extends Enumerator_1.Enumerator {\n constructor(backend) {\n super(() => {\n const result = this.peek(0);\n if (this.buffer.length > 0)\n this.buffer.shift();\n return result;\n });\n this.backend = backend;\n this.buffer = [];\n }\n peek(position) {\n if (!position)\n position = 0;\n let next;\n while (position > this.buffer.length - 1 && (next = this.backend.fetch()))\n this.buffer.push(next);\n return position > this.buffer.length - 1 ? undefined : this.buffer[position];\n }\n}\nexports.BufferedEnumerator = BufferedEnumerator;\n//# sourceMappingURL=BufferedEnumerator.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass String {\n static padLeft(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, true);\n }\n static padRight(value, paddingCharacter, width) {\n return String.pad(value, paddingCharacter, width, false);\n }\n static pad(value, paddingCharacter, width, padLeft) {\n let padding = \"\";\n const count = width - value.length;\n for (let i = 0; i < count; i++)\n padding += paddingCharacter;\n return padLeft ? padding + value : value + padding;\n }\n}\nexports.String = String;\n//# sourceMappingURL=String.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Enumerator_1 = require(\"./Enumerator\");\nexports.Enumerator = Enumerator_1.Enumerator;\nvar Enumerable_1 = require(\"./Enumerable\");\nexports.Enumerable = Enumerable_1.Enumerable;\nvar ArrayEnumerator_1 = require(\"./ArrayEnumerator\");\nexports.ArrayEnumerator = ArrayEnumerator_1.ArrayEnumerator;\nvar BufferedEnumerator_1 = require(\"./BufferedEnumerator\");\nexports.BufferedEnumerator = BufferedEnumerator_1.BufferedEnumerator;\nvar String_1 = require(\"./String\");\nexports.String = String_1.String;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Device_1 = require(\"./Device\");\nclass OutDevice extends Device_1.Device {\n}\nexports.OutDevice = OutDevice;\n//# sourceMappingURL=OutDevice.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Uri = require(\"../Uri\");\nconst Utilities_1 = require(\"../Utilities\");\nconst OutDevice_1 = require(\"./OutDevice\");\nclass Writer extends OutDevice_1.OutDevice {\n constructor() {\n super(...arguments);\n this.newLineSymbol = \"\\n\";\n }\n write(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator(message)) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([message]));\n });\n }\n writeLine(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return message instanceof Utilities_1.Enumerator ? this.writeImplementation(message.append(this.newLineSymbol)) :\n message instanceof Array ? this.writeImplementation(new Utilities_1.ArrayEnumerator([...message, this.newLineSymbol])) :\n message ? this.writeImplementation(new Utilities_1.ArrayEnumerator([message, this.newLineSymbol])) :\n this.writeImplementation(new Utilities_1.ArrayEnumerator([this.newLineSymbol]));\n });\n }\n static addOpener(open, priority) {\n if (!priority)\n priority = 0;\n Writer.openers.push({ open, priority });\n Writer.openers = Writer.openers.sort((left, right) => right.priority - left.priority);\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let result;\n if (typeof (resource) == \"string\") {\n const r = Uri.Locator.parse(resource);\n result = r ? yield Writer.open(r) : undefined;\n }\n else {\n let i = 0;\n do\n result = yield Writer.openers[i++].open(resource);\n while (!result && i < Writer.openers.length);\n }\n return result;\n });\n }\n}\nexports.Writer = Writer;\nWriter.openers = [];\n//# sourceMappingURL=Writer.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Writer_1 = require(\"./Writer\");\nclass Indenter extends Writer_1.Writer {\n constructor(backend) {\n super();\n this.backend = backend;\n this.autoFlush = true;\n this.indentionSymbol = \"\\t\";\n this.indentionCount = 0;\n this.indentNext = false;\n }\n get resource() { return this.backend.resource; }\n get opened() { return this.backend.opened; }\n get writable() { return this.backend.writable; }\n flush() {\n return this.backend.flush();\n }\n close() {\n return this.backend.close();\n }\n increase() {\n this.indentionCount++;\n return true;\n }\n decrease() {\n this.indentionCount--;\n return this.indentionCount >= 0;\n }\n getIndention() {\n return this.indentionSymbol.repeat(this.indentionCount);\n }\n writeImplementation(buffer) {\n const result = [];\n let item;\n let next = buffer.fetch();\n if (next)\n do {\n item = next;\n next = buffer.fetch();\n if (this.indentNext)\n item = this.getIndention() + item;\n this.indentNext = item.endsWith(this.newLineSymbol);\n item = item.replace(this.newLineSymbol, this.newLineSymbol + this.getIndention());\n if (this.indentNext)\n item = item.substring(0, item.length - this.indentionCount * this.indentionSymbol.length);\n result.push(this.backend.write(item));\n } while (next);\n return Promise.all(result).then(r => r.reduce((previous, current) => previous && current, true));\n }\n}\nexports.Indenter = Indenter;\n//# sourceMappingURL=Indenter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass PrefixReader extends Reader_1.Reader {\n constructor(backend, prefix) {\n super();\n this.prefix = prefix;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n return this.backend.close();\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = result == \"\\n\" && !this.backend.readIf(this.prefix) && !this.backend.peekIs(\"\\n\");\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, prefix) {\n return backend && prefix ? new PrefixReader(backend, prefix) : backend;\n }\n}\nexports.PrefixReader = PrefixReader;\n//# sourceMappingURL=PrefixReader.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fs = require(\"./fs\");\nconst path = require(\"./path\");\nconst Writer_1 = require(\"./Writer\");\nclass FileWriter extends Writer_1.Writer {\n constructor(resource, descriptor) {\n super();\n this.resource = resource;\n this.descriptor = descriptor;\n this.autoFlush = false;\n }\n get opened() { return this.descriptor > 0; }\n get writable() { return this.descriptor > 0; }\n flush() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n try {\n yield fs.fsync(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n return result;\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n let result = this.opened;\n if (result) {\n try {\n yield fs.close(this.descriptor);\n }\n catch (error) {\n result = false;\n }\n this.descriptor = 0;\n }\n return result;\n });\n }\n writeImplementation(buffer) {\n return __awaiter(this, void 0, void 0, function* () {\n let result = true;\n const content = Buffer.from(buffer.reduce((r, item) => r + item, \"\"));\n try {\n const r = yield fs.write(this.descriptor, content, 0, \"utf8\");\n result = r.bytesWritten == content.length;\n }\n catch (error) {\n result = false;\n }\n return result && (!this.autoFlush || (yield this.flush()));\n });\n }\n static open(resource) {\n return __awaiter(this, void 0, void 0, function* () {\n let backend;\n if (resource && (resource.scheme.length == 0 || resource.scheme.length == 1 && resource.scheme[0] == \"file\"))\n try {\n backend = yield fs.open((resource.isRelative ? \"\" : path.sep) + resource.path.join(path.sep), \"w\");\n }\n catch (error) {\n backend = undefined;\n }\n return backend ? new FileWriter(resource, backend) : undefined;\n });\n }\n}\nexports.FileWriter = FileWriter;\nWriter_1.Writer.addOpener(FileWriter.open);\n//# sourceMappingURL=FileWriter.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass TillReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = false;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = !this.done;\n if (result)\n this.done = true;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (!this.done) {\n result = this.backend.read();\n this.done = this.backend.peekIs(this.endMark) != undefined;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new TillReader(backend, endMark) : backend;\n }\n}\nexports.TillReader = TillReader;\n//# sourceMappingURL=TillReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Reader_1 = require(\"./Reader\");\nconst BufferedReader_1 = require(\"./BufferedReader\");\nclass UntilReader extends Reader_1.Reader {\n constructor(backend, endMark) {\n super();\n this.endMark = endMark;\n this.done = -1;\n this.backend = backend instanceof BufferedReader_1.BufferedReader ? backend : BufferedReader_1.BufferedReader.create(backend);\n const peeked = this.backend.peekIs(this.endMark);\n if (peeked)\n this.done = peeked.length;\n }\n get tabSize() { return this.backend.tabSize; }\n set tabSize(size) { this.backend.tabSize = size; }\n get readable() { return this.backend.readable; }\n get opened() { return !this.done && this.backend.opened; }\n get isEmpty() { return this.done == 0 || this.backend.isEmpty; }\n get resource() { return this.backend.resource; }\n get location() { return this.backend.location; }\n get region() { return this.backend.region; }\n close() {\n const result = this.done > 0;\n if (result)\n this.done = 0;\n return Promise.resolve(result);\n }\n read() {\n let result;\n if (this.done != 0) {\n result = this.backend.read();\n let peeked;\n if (this.done > 0)\n this.done--;\n else if (peeked = this.backend.peekIs(this.endMark))\n this.done = peeked.length;\n }\n return result;\n }\n mark() { return this.backend.mark(); }\n static create(backend, endMark) {\n return backend && endMark ? new UntilReader(backend, endMark) : backend;\n }\n}\nexports.UntilReader = UntilReader;\n//# sourceMappingURL=UntilReader.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar BufferedReader_1 = require(\"./BufferedReader\");\nexports.BufferedReader = BufferedReader_1.BufferedReader;\nvar Device_1 = require(\"./Device\");\nexports.Device = Device_1.Device;\nvar FileReader_1 = require(\"./FileReader\");\nexports.FileReader = FileReader_1.FileReader;\nvar FolderReader_1 = require(\"./FolderReader\");\nexports.FolderReader = FolderReader_1.FolderReader;\nvar Indenter_1 = require(\"./Indenter\");\nexports.Indenter = Indenter_1.Indenter;\nvar InDevice_1 = require(\"./InDevice\");\nexports.InDevice = InDevice_1.InDevice;\nvar OutDevice_1 = require(\"./OutDevice\");\nexports.OutDevice = OutDevice_1.OutDevice;\nvar PrefixReader_1 = require(\"./PrefixReader\");\nexports.PrefixReader = PrefixReader_1.PrefixReader;\nvar Reader_1 = require(\"./Reader\");\nexports.Reader = Reader_1.Reader;\nvar StringReader_1 = require(\"./StringReader\");\nexports.StringReader = StringReader_1.StringReader;\nvar FileWriter_1 = require(\"./FileWriter\");\nexports.FileWriter = FileWriter_1.FileWriter;\nvar TillReader_1 = require(\"./TillReader\");\nexports.TillReader = TillReader_1.TillReader;\nvar UntilReader_1 = require(\"./UntilReader\");\nexports.UntilReader = UntilReader_1.UntilReader;\nvar Writer_1 = require(\"./Writer\");\nexports.Writer = Writer_1.Writer;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Error = require(\"./Error\");\nexports.Error = Error;\nconst IO = require(\"./IO\");\nexports.IO = IO;\nconst Uri = require(\"./Uri\");\nexports.Uri = Uri;\nconst Utilities = require(\"./Utilities\");\nexports.Utilities = Utilities;\n//# sourceMappingURL=index.js.map","import { Error, IO } from \"@cogneco/mend\";\nexport class Source extends IO.BufferedReader {\n constructor(reader, errorHandler) {\n super(typeof reader == \"string\" ? IO.StringReader.create(reader) : reader);\n this.errorHandler = errorHandler;\n }\n raise(message, level, type = \"lexical\", region) {\n if (!(message instanceof Error.Message)) {\n if (!level)\n level = Error.Level.Critical;\n if (!region)\n region = this.region;\n message = new Error.Message(message, level, type, region);\n }\n if (this.errorHandler)\n this.errorHandler.raise(message);\n }\n requirePrefix(prefix) {\n return new Source(new IO.PrefixReader(this, prefix), this.errorHandler);\n }\n till(endMark) {\n return new Source(IO.TillReader.create(this, endMark), this.errorHandler);\n }\n until(endMark) {\n return new Source(IO.UntilReader.create(this, endMark), this.errorHandler);\n }\n peekIsSymbol(symbols) {\n return (this.peekIs(symbols ?? [\"!\", \"(\", \")\", \"[\", \"]\", \"|\", \"*\", \":\", \".\", \"<=\", \">=\", \"<\", \">\", \" * \", \" + \", \" - \", \" / \", \",\"])?.length ?? false);\n }\n peekIsWhitespace() {\n return !!this.peekIs([\" \", \"\\n\", \"\\t\"]);\n }\n}\n//# sourceMappingURL=Source.js.map","import { Utilities } from \"@cogneco/mend\";\nimport { Source } from \"./Source\";\nfunction tokenize(reader, errorHandler, symbols) {\n const source = new Source(reader, errorHandler);\n return new Utilities.Enumerator(() => {\n let result;\n let peekSymbolLength = 1;\n if (!source.isEmpty) {\n while (source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n source.read();\n if ((peekSymbolLength = source.peekIsSymbol(symbols)))\n result = { value: source.read(peekSymbolLength) || \"\", region: source.mark() };\n else {\n let value = \"\";\n while (!source.isEmpty && !source.peekIsWhitespace() && !source.peekIsSymbol(symbols))\n value += source.read();\n if (value)\n result = { value, region: source.mark() };\n }\n }\n return result;\n });\n}\nexport { Source, tokenize };\n//# sourceMappingURL=index.js.map","import { tokenize } from \"../lexer\";\nexport class Base {\n tokenize(input) {\n return tokenize(input, undefined, [\n \"!\",\n \"(\",\n \")\",\n \"[\",\n \"]\",\n \"|\",\n \" | \",\n \"*\",\n \":\",\n \".\",\n \"<=\",\n \">=\",\n \"<\",\n \">\",\n \" * \",\n \" + \",\n \"+\",\n \" - \",\n \"-\",\n \" / \",\n ])\n .map(t => ({ value: t.value }))\n .toArray();\n }\n}\n//# sourceMappingURL=Base.js.map","import { Base } from \"./Base\";\nexport class Array extends Base {\n constructor(input) {\n super();\n this.class = \"array\";\n this.array = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return Array.completor\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []);\n }\n isType(value) {\n return global.Array.isArray(value);\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof Array;\n }\n}\nArray.completor = [];\n//# sourceMappingURL=Array.js.map","export var Cursor;\n(function (Cursor) {\n function is(value) {\n return typeof value == \"object\" && typeof value.start == \"number\" && typeof value.end == \"number\";\n }\n Cursor.is = is;\n})(Cursor || (Cursor = {}));\n//# sourceMappingURL=Cursor.js.map","import { Cursor } from \"./Cursor\";\nexport var Completion;\n(function (Completion) {\n function stringify(completions) {\n return completions.map(c => typeof c.cursor == \"number\"\n ? c.value.slice(0, c.cursor) + \"_\" + c.value.slice(c.cursor, c.value.length)\n : c.value + \"_\");\n }\n Completion.stringify = stringify;\n function prepend(prefix, completion, suffix) {\n return Array.isArray(completion)\n ? completion.map(c => prepend(prefix, c, suffix))\n : {\n value: prefix + completion.value + (suffix ?? \"\"),\n cursor: typeof completion?.cursor == \"number\"\n ? completion?.cursor + prefix.length\n : Cursor.is(completion.cursor)\n ? { start: completion.cursor.start + prefix.length, end: completion.cursor.end + prefix.length }\n : completion.value.length + prefix.length,\n suggestion: completion.suggestion,\n };\n }\n Completion.prepend = prepend;\n})(Completion || (Completion = {}));\n//# sourceMappingURL=Completion.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Boolean extends SType {\n constructor() {\n super();\n this.class = \"boolean\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n const result = type\n ? Boolean.literals.filter(c => c.value.startsWith(tokens[0]?.value ?? \"\"))\n : tokens[0]?.value == \":\"\n ? Completion.prepend(\":\", Boolean.literals.filter(c => c.value.startsWith(tokens[1]?.value ?? \"\")))\n : [];\n return [\n ...(result ?? []),\n ...(type ? [] : Boolean.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value == \"boolean\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n}\nBoolean.literals = [\n { value: \"true\", suggestion: { value: \"true\" } },\n { value: \"false\", suggestion: { value: \"false\" } },\n];\nBoolean.completor = [];\n//# sourceMappingURL=Boolean.js.map","import { Completion } from \"./Completion\";\nexport var Completor;\n(function (Completor) {\n function functions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens.length <= 3 &&\n tokens[0].value == \":\" &&\n completion.value.startsWith(tokens[1]?.value ?? \"\") &&\n (tokens[2]?.value ?? \"(\") == \"(\"\n ? Completion.prepend(\":\", [completion])\n : tokens.length <= 4 &&\n tokens.slice(0, 4).reduce((string, token) => string + token.value, \"\") == \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(), \")\")\n : tokens.length == 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[4].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : tokens.length > 5 &&\n tokens.slice(0, 3).reduce((string, token) => string + token.value, \"\") + tokens[tokens.length - 1].value ==\n \":\" + completion.value\n ? Completion.prepend(\":\" + completion.value.substring(0, completion.value.length - 1), argument(tokens.slice(3, tokens.length - 1)), \")\")\n : [];\n }\n Completor.functions = functions;\n function expressions(tokens, argument, completion) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\":\", [completion])\n : Completion.prepend(\":\", argument(tokens.slice(1)));\n }\n Completor.expressions = expressions;\n function operators(tokens, argument, completion) {\n return tokens.length >= 1 && tokens[0].value == completion.value\n ? Completion.prepend(completion.value, argument(tokens.slice(1)))\n : tokens.length == 0 ||\n (tokens.length == 1 && completion.value.startsWith(tokens[0].value)) ||\n tokens[0].value == completion.value.replace(/ /g, \"\")\n ? [completion]\n : [];\n }\n Completor.operators = operators;\n})(Completor || (Completor = {}));\n//# sourceMappingURL=Completor.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class Number extends SType {\n constructor(input) {\n super();\n this.input = input;\n this.class = \"number\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return [\n ...(tokens.length > 0 && tokens[0].value == \":\" && baseObject\n ? Completion.prepend(\":\", baseObject.complete(tokens.slice(1), undefined, this))\n : baseObject && tokens.length >= 0 && type\n ? Completion.prepend(\" \", baseObject?.complete(tokens, undefined, undefined))\n : []),\n ...(type ? Number.completorArgument : Number.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return isNaN(+value) ? false : true;\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static addArgument(...pattern) {\n this.completorArgument.push(...pattern);\n }\n static is(value) {\n return value instanceof Number || !global.Number.isNaN(value);\n }\n}\nNumber.completor = [];\nNumber.completorArgument = [];\n//# sourceMappingURL=Number.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class TObject extends SType {\n constructor(properties) {\n super();\n this.properties = properties;\n this.class = \"object\";\n this.completions = Object.keys(this.properties).map(p => ({ value: p, suggestion: { value: p } }));\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n const filtered = this.filterByType(type);\n if (!baseObject) {\n const matched = tokens.length > 0 ? this.match(tokens[0], filtered) : undefined;\n if (matched)\n result =\n tokens.length >= 1\n ? Completion.prepend(matched.value, this.properties[matched.value].complete(tokens.slice(1), this, type))\n : [];\n else if (type && tokens.length > 2 && type.isType(tokens[0].value + tokens[1].value + tokens[2].value))\n result = Completion.prepend(tokens[0].value + tokens[1].value + tokens[2].value, type.complete(tokens.slice(3), this, type));\n else if (type && tokens.length > 0 && type.isType(tokens[0].value))\n result = Completion.prepend(tokens[0].value, type.complete(tokens.slice(1), this, type));\n else {\n let found;\n result =\n tokens.length == 0\n ? [...this.addDot(filtered, type), ...(type?.class == \"number\" ? [] : TObject.wildcard)]\n : tokens.length == 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.completions, type ? \".\" : \"\")\n : tokens.length >= 1 && (found = TObject.wildcard.find(w => w.value == tokens[0].value))\n ? Completion.prepend(found.value, this.complete(tokens.slice(1)))\n : this.addDot(this.partial(tokens[0], filtered), type);\n }\n }\n else\n result =\n tokens.length == 0\n ? [{ value: \".\", suggestion: { value: \".\" } }]\n : tokens[0].value != \".\"\n ? []\n : tokens.length == 1\n ? Completion.prepend(\".\", this.addDot(filtered, type))\n : this.properties[tokens[1].value]\n ? Completion.prepend(\".\" + tokens[1].value, this.properties[tokens[1].value].complete(tokens.slice(2), baseObject, type))\n : Completion.prepend(\".\", this.addDot(this.partial(tokens[1], filtered), type));\n return [\n ...result.reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ...TObject.completor.flatMap(p => p(tokens, this, baseObject)),\n ];\n }\n filterByType(type) {\n return type\n ? this.completions.filter(c => this.properties[c.value].class == type.class ||\n (this.properties[c.value].class == \"object\"\n ? this.properties[c.value].filterByType(type).length > 0\n : false))\n : this.completions;\n }\n addDot(completions, type) {\n return !completions\n ? []\n : type\n ? completions.map(c => this.properties[c.value].class == \"object\"\n ? { value: c.value + \".\", suggestion: { value: c.suggestion?.value + \".\" } }\n : c)\n : completions;\n }\n partial(token, completions) {\n const result = completions.filter(c => c.value.startsWith(token.value));\n return result && result.length > 0 ? result : undefined;\n }\n match(token, completions) {\n const result = completions.filter(c => c.value == token.value);\n return result && result.length > 0 ? result[0] : undefined;\n }\n isType(value) {\n return false;\n }\n static add(...completor) {\n this.completor.push(...completor);\n }\n}\nTObject.wildcard = [\n { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } },\n];\nTObject.completor = [];\n//# sourceMappingURL=Object.js.map","import { Base as SType } from \"./Base\";\nimport { Completion } from \"./Completion\";\nexport class String extends SType {\n constructor(input) {\n super();\n this.class = \"string\";\n if (input)\n this.value = input;\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n let result;\n if (type)\n result = this.value?.startsWith(tokens[0]?.value ?? \"\")\n ? [{ value: this.value, suggestion: { value: this.value } }]\n : undefined;\n else\n result =\n tokens.length == 0 || tokens[0].value != \":\"\n ? undefined\n : this.value?.startsWith(tokens[1]?.value ?? \"\")\n ? [Completion.prepend(\":\", { value: this.value, suggestion: { value: this.value } })]\n : undefined;\n return [\n ...(result ?? []),\n ...(type ? [] : String.completor)\n .flatMap(p => p(tokens, this, baseObject))\n .reduce((result, element) => result.some(p => p.value == element.value && p.cursor == element.cursor) ? result : [...result, element], []),\n ];\n }\n isType(value) {\n return typeof value.value == \"string\";\n }\n static add(...pattern) {\n this.completor.push(...pattern);\n }\n static is(value) {\n return value instanceof String;\n }\n}\nString.completor = [];\n//# sourceMappingURL=String.js.map","import { Base as SType } from \"./Base\";\nexport class Union extends SType {\n constructor(type) {\n super();\n this.type = type;\n this.class = \"union\";\n }\n complete(input, baseObject, type) {\n const tokens = typeof input == \"string\" ? this.tokenize(input) : input;\n return this.type ? this.type?.flatMap(t => t?.complete(tokens, baseObject, type) ?? []) : [];\n }\n isType(value) {\n return value instanceof Union;\n }\n static is(value) {\n return value instanceof Union;\n }\n}\n//# sourceMappingURL=Union.js.map","import { Array as TArray } from \"./Array\";\nimport { Boolean as TBoolean } from \"./Boolean\";\nimport { Completion as TCompletion } from \"./Completion\";\nimport { Completor as TCompletor } from \"./Completor\";\nimport { Number as TNumber } from \"./Number\";\nimport { TObject } from \"./Object\";\nimport { String as TString } from \"./String\";\nimport { Union as TUnion } from \"./Union\";\nexport var Type;\n(function (Type) {\n function complete(template, input) {\n const completions = template.complete(input);\n return completions\n .filter(c => !input.includes(c.value) && c.suggestion?.value)\n .map(c => ({\n full: c.value,\n cursor: c?.cursor ?? c.value.length,\n addon: c?.suggestion?.value,\n description: c?.suggestion?.description,\n }));\n }\n Type.complete = complete;\n function convert(value) {\n let result;\n switch (typeof value) {\n case \"object\":\n result = global.Array.isArray(value)\n ? new TArray(value.map(e => convert(e)))\n : new TObject(global.Object.entries(value).reduce((r, c) => {\n return { ...r, [c[0]]: convert(c[1]) };\n }, {}));\n break;\n case \"string\":\n result = new TString(value);\n break;\n default:\n result = new TNumber(value);\n break;\n }\n return result;\n }\n Type.convert = convert;\n Type.Array = TArray;\n Type.Boolean = TBoolean;\n Type.Completion = TCompletion;\n Type.Object = TObject;\n Type.String = TString;\n Type.Number = TNumber;\n Type.Union = TUnion;\n Type.Completor = TCompletor;\n})(Type || (Type = {}));\n//# sourceMappingURL=index.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class EndsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"EndsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.endsWith(this.needle);\n }\n toString() {\n return `*${this.needle}`;\n }\n}\nexport function endsWith(needle, value) {\n const result = new EndsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens || (tokens[0].value == \"*\" && string.value && string.value.endsWith(tokens[1]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } })]\n : [];\n }, { value: \"*\", suggestion: { value: \"*\", description: \"endswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=EndsWith.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Every extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Every\";\n }\n is(value) {\n return Array.isArray(value) && value.every(v => this.criteria.is(v));\n }\n toString() {\n return `every(${this.criteria.toString()})`;\n }\n}\nexport function every(criteria, value) {\n const result = new Every(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type) {\n const arrayArgumentor = (tokens) => type.array.some(Type.String.is) && tokens\n ? type.array\n .filter(Type.String.is)\n .map(p => p.complete([{ value: \":\" }, ...tokens]))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.String.is)\n ? type.array.filter(Type.String.is).map(e => ({ value: e?.value ?? \"\" }))\n : type.array.some(Type.Number.is) && tokens\n ? type.array\n .filter(Type.Number.is)\n .map(e => e.complete(tokens))\n .reduce((result, element) => Array.isArray(element) ? result.concat(element) : element ? [...result, element] : result, [])\n : !tokens && type.array.some(Type.Number.is)\n ? type.array.filter(Type.Number.is).map(e => ({ value: (e?.value ?? \"\").toString() }))\n : [];\n return Completor.functions(tokens, arrayArgumentor, {\n value: \"every()\",\n cursor: 6,\n suggestion: { value: \"every()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Every.js.map","import { Rule } from \"./Rule\";\nexport class FunctionCall extends Rule {\n constructor(identifier, argument, definition) {\n super();\n this.identifier = identifier;\n this.argument = argument;\n this.definition = definition;\n this.precedence = 85;\n this.class = \"FunctionCall\";\n }\n is(value) {\n return this.definition?.is(value) ?? true;\n }\n toString() {\n return `${this.identifier}(${this.argument.join(\", \")})`;\n }\n}\nexport function isType(value) {\n return typeof value == \"object\" && value?.class == \"FunctionCall\";\n}\n//# sourceMappingURL=FunctionCall.js.map","export class Expression {\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n}\n//# sourceMappingURL=Expression.js.map","import { Expression } from \"./Expression\";\nexport class Value extends Expression {\n constructor(value, name) {\n super();\n this.name = name;\n this.precedence = Value.precedence;\n this.class = \"Value\";\n if (typeof value == \"string\")\n this.value = isNaN(+value.replace(\",\", \".\")) ? value : +value.replace(\",\", \".\");\n else\n this.value = value;\n }\n toString() {\n return this.name ? `${this.name?.toString()}.` + this.value.toString() : this.value.toString();\n }\n evaluate(variable) {\n return variable ? this.get(variable) : +this.value;\n }\n get(variable) {\n return typeof this.value == \"string\"\n ? +variable[this.value]\n : this.name && typeof this.value == \"object\"\n ? this.value.get(variable[this.name])\n : +this.value;\n }\n static create(value, name) {\n return new Value(value, name);\n }\n}\nValue.precedence = 19;\n//# sourceMappingURL=Value.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThan\";\n this.symbol = \">\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThan(criteria, value) {\n const result = new GreaterThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">\",\n suggestion: { value: \">\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class GreaterThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"GreaterThanOrEqual\";\n this.symbol = \">=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) >=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function greaterThanOrEqual(criteria, value) {\n const result = new GreaterThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \">=\",\n suggestion: { value: \">=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Has extends Rule {\n constructor(property) {\n super();\n this.property = property;\n this.precedence = 85;\n this.class = \"Has\";\n }\n is(value, property) {\n return typeof value == \"object\" && value\n ? Object.entries(value).some(e => {\n property = typeof property == \"string\" ? property : this.property;\n return e[0] == property\n ? true\n : typeof e[1] == \"object\" && e[1]\n ? this.is(e[1], property.includes(\".\") && property.split(\".\")[0] == e[0] ? property.split(\".\")[1] : undefined)\n : false;\n })\n : false;\n }\n toString() {\n return `has(${this.property})`;\n }\n}\nexport function has(criteria, value) {\n const result = new Has(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class == \"object\"\n ? Completor.functions(tokens, (tokens) => type.completions.filter(c => c.value.startsWith(tokens ? tokens[0].value : \"\")), {\n value: \"has()\",\n cursor: 4,\n suggestion: { value: \"has()\" },\n })\n : [];\n}\nType.Object.add(complete);\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Includes extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Includes\";\n }\n is(value) {\n return typeof value == \"string\" && value.includes(this.needle);\n }\n toString() {\n return `*${this.needle}*`;\n }\n}\nexport function includes(needle, value) {\n const result = new Includes(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 3 && string.value?.includes(tokens[1].value) && string.value != tokens[1].value) ||\n (tokens.length == 2 && tokens[0].value + tokens[1].value == \"**\")\n ? [\n Type.Completion.prepend(\"*\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\"),\n ]\n : tokens.length == 1 && tokens[0].value == \"*\"\n ? [{ value: \"**\", suggestion: { value: \"**\", description: \"includes\" } }]\n : [];\n }, { value: \"**\", cursor: 1, suggestion: { value: \"**\", description: \"includes\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Includes.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Some extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 100;\n this.class = \"Some\";\n }\n is(value, object) {\n return Array.isArray(value) && value.some(v => this.criteria.is(v, object));\n }\n toString() {\n return `some(${this.criteria.toString()})`;\n }\n}\nexport function some(criteria, value) {\n const result = new Some(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return tokens.length == 0\n ? [{ value: \":\", suggestion: { value: \":\" } }]\n : tokens[0].value != \":\"\n ? []\n : tokens.length == 1 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\")\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : tokens.length == 2 && tokens[0].value == \":\"\n ? Type.Completion.prepend(\":\", type.array\n .filter(Type.String.is)\n .filter(e => e.value && e.value != \"string\" && e.value.startsWith(tokens[1].value))\n .map(e => ({ value: e?.value ?? \"\", suggestion: { value: e?.value ?? \"\" } })))\n : [];\n}\nType.Array.add(complete);\n//# sourceMappingURL=Some.js.map","import { isCriteria } from \"./Criteria\";\nimport { add, Rule } from \"./Rule\";\nimport { some } from \"./Some\";\nexport class Is extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Is\";\n this.symbol = \":\";\n }\n is(value, object) {\n return Array.isArray(value) && isCriteria(this.value)\n ? some(this.value, value)\n : (typeof value == \"boolean\" ? value.toString() : isNaN(+value) ? value : +value) ==\n (typeof this.value == \"object\" ? this.value.evaluate(object) : this.value);\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function is(criteria, value) {\n const result = new Is(criteria);\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"bigint\" ||\n typeof criteria == \"boolean\" ||\n typeof criteria == \"number\" ||\n typeof criteria == \"string\"\n ? new Is(criteria)\n : undefined);\n//# sourceMappingURL=Is.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThan extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThan\";\n this.symbol = \"<\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThan(criteria, value) {\n const result = new LesserThan(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<\",\n suggestion: { value: \"<\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThan.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Value } from \"./Value\";\nexport class LesserThanOrEqual extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"LesserThanOrEqual\";\n this.symbol = \"<=\";\n }\n is(value, object) {\n return ((isNaN(+value) ? value : +value) <=\n ((this.value instanceof Value && typeof this.value.value == \"string\" && this.value.value.includes(\"-\")) ||\n typeof this.value != \"object\"\n ? this.value\n : this.value.evaluate(object)));\n }\n toString() {\n return this.value.toString();\n }\n}\nexport function lesserThanOrEqual(criteria, value) {\n const result = new LesserThanOrEqual(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, type) : []), {\n value: \"<=\",\n suggestion: { value: \"<=\" },\n });\n}\nType.Number.add(complete);\nType.String.add(complete);\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Match extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Match\";\n }\n is(value) {\n return typeof value == \"string\" && this.criteria.test(value);\n }\n toString() {\n return `/${this.criteria}/`;\n }\n}\nexport function match(criteria) {\n return new Match(criteria);\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return tokens && tokens?.length == 1 && tokens[0].value == \"/\" ? [{ value: \"//\", cursor: 1 }] : [];\n }, { value: \"//\", cursor: 1, suggestion: { value: \"//\", description: \"match\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=Match.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Not extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Not.precedence;\n this.class = \"Not\";\n }\n is(value) {\n return !this.criteria.is(value);\n }\n toString() {\n return `!${this.criteria.stringify(this.precedence)}`;\n }\n}\nNot.precedence = 90;\nexport function not(criteria, value) {\n const result = new Not(create(criteria));\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return type && type.class != \"object\" && baseObject\n ? Completor.expressions(tokens, (tokens) => {\n return tokens[0].value != \"!\"\n ? []\n : Type.Completion.prepend(\"!\", type.complete(tokens.slice(1), baseObject, type));\n }, { value: \"!\", cursor: 1, suggestion: { value: \"!\", description: \"not\" } })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\nType.Boolean.add(complete);\nType.Object.add(complete);\n//# sourceMappingURL=Not.js.map","import { create, Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nexport class Or extends Rule {\n constructor(criterias) {\n super();\n this.precedence = Or.precedence;\n this.class = \"Or\";\n this.criteria = criterias.reduce((r, c) => (c instanceof Or ? [...r, ...c.criteria] : [...r, c]), []);\n }\n is(value) {\n return this.criteria.some(c => c.is(value));\n }\n toString() {\n return this.criteria.map(c => c.stringify(this.precedence)).join(\" | \");\n }\n}\nOr.precedence = 30;\nexport function or(...criterias) {\n return new Or(criterias.map(create));\n}\nfunction complete(tokens, type, baseObject) {\n return Type.Completor.operators(tokens, (tokens) => (tokens && baseObject ? baseObject?.complete(tokens, undefined, undefined) : []), {\n value: \" | \",\n suggestion: { value: \"|\", description: \"or\" },\n });\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=Or.js.map","import { Error, Utilities } from \"@cogneco/mend\";\nexport class Source extends Utilities.BufferedEnumerator {\n constructor(tokens, errorHandler) {\n super(Array.isArray(tokens) ? new Utilities.ArrayEnumerator(tokens) : tokens);\n this.errorHandler = errorHandler;\n }\n clone(start = \"(\", end = \")\") {\n let nestingCount = 0;\n return new Source(new Utilities.Enumerator(() => {\n let result;\n if (this.peekIs(start))\n nestingCount++;\n else if (this.peekIs(end))\n nestingCount--;\n if (nestingCount >= 0)\n result = this.fetch();\n return result;\n }), this);\n }\n peekIs(...needles) {\n return needles.every((needle, index) => {\n const peeked = this.peek(index);\n return peeked && peeked.value && Source.is(needle, peeked.value);\n });\n }\n fetchIf(...needles) {\n const result = [];\n if (this.peekIs(...needles))\n needles.forEach(_ => result.push(this.fetch()));\n return needles.length == 1\n ? result.length == 1\n ? result[0]\n : undefined\n : needles.length == result.length\n ? result\n : undefined;\n }\n mark() {\n return Utilities.Enumerable.from(Utilities.Enumerable.empty);\n }\n raise(message, level = Error.Level.Critical, type = \"grammatical\", region) {\n if (typeof message == \"string\") {\n if (!region && this.last)\n region = this.last.region;\n message = new Error.Message(message, level, type, region);\n }\n this.errorHandler.raise(message);\n }\n static is(needle, value) {\n return Array.isArray(needle)\n ? needle.some(n => Source.is(n, value))\n : typeof needle != \"string\"\n ? needle.test(value)\n : needle.startsWith(\"!\") && needle != \"!\"\n ? !Source.is(needle.substring(1), value)\n : needle == \"any\"\n ? Source.symbol.every(s => s != value)\n : needle == \"symbol\"\n ? Source.symbol.some(s => s == value)\n : needle == \"identifier\"\n ? /[A-Za-z][A-Za-z0-9_]*/.test(value)\n : needle == value;\n }\n}\nSource.wildcard = [\"*\", \"?\"];\nSource.separator = [\"(\", \")\", \".\"];\nSource.operator = [\"!\", \"|\"];\nSource.comparator = [\"<\", \"<=\", \">\", \">=\", \":\"];\nSource.binaryOperator = [\" * \", \" + \", \" - \"];\nSource.symbol = [...Source.wildcard, ...Source.separator, ...Source.operator, ...Source.comparator];\n//# sourceMappingURL=Source.js.map","import { Error } from \"@cogneco/mend\";\nimport { And } from \"../And\";\nimport * as lexer from \"../lexer\";\nimport { Or } from \"../Or\";\nimport { Rule } from \"../Rule\";\nimport { Source } from \"./Source\";\nexport function parse(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Rule ? handler : undefined;\n const result = [];\n while (source.peek()) {\n if (source.fetchIf(\"|\"))\n result[result.length - 1] = new Or([result[result.length - 1], parseNext(0, source)]);\n else\n result.push(parseNext(0, source));\n }\n return result.length == 1 ? result[0] : new And(result);\n}\nexport function parseNext(previous, source) {\n let result;\n const precedenceTest = typeof previous == \"number\" ? p => previous < p : p => previous.precedence > p;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const parser of parsers)\n if (precedenceTest(parser[1] || Number.MAX_SAFE_INTEGER)) {\n const r = parser[0](source, left);\n if (r) {\n result = parseNext(r, source);\n break;\n }\n }\n return result || left || new And([]);\n}\nconst parsers = [];\nexport function add(parser, precedence) {\n parsers.push([parser, precedence]);\n}\n//# sourceMappingURL=parse.js.map","import { Error } from \"@cogneco/mend\";\nimport { Expression } from \"../Expression\";\nimport * as lexer from \"../lexer\";\nimport { Value } from \"../Value\";\nimport { Source } from \"./Source\";\nexport function parseExpression(source, handler) {\n if (typeof source == \"string\") {\n handler = handler || new Error.ConsoleHandler();\n const tokens = lexer.tokenize(source, handler).toArray();\n source = new Source(tokens, handler);\n }\n handler = handler instanceof Expression ? handler : undefined;\n let result;\n let algebra = false;\n let comparator = false;\n while (!result != algebra && !comparator && source.peek()) {\n let i = 1;\n algebra = false;\n comparator = false;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n result = parseNextExpression(result ?? Number.MAX_SAFE_INTEGER, source);\n }\n if (!result)\n source.raise(\"Missing Expression\");\n return result ?? new Value(NaN);\n}\nexport function parseNextExpression(previous, source) {\n let result;\n const left = typeof previous == \"number\" ? undefined : previous;\n for (const expressionParser of expressionParsers) {\n const r = expressionParser[0](source, previous);\n if (r) {\n result = r;\n break;\n }\n }\n return result || left;\n}\nconst expressionParsers = [];\nexport function addExpression(expressionParser, precedence) {\n expressionParsers.push([expressionParser, precedence]);\n}\n//# sourceMappingURL=Expression.js.map","import { Every } from \"../Every\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"every\", \"(\") && new Every(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Every.js.map","import { Some } from \"../Some\";\nimport { add, parse } from \"./parse\";\nadd(source => {\n const result = source.fetchIf(\":\", \"some\", \"(\") && new Some(parse(source.clone()));\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n});\n//# sourceMappingURL=Some.js.map","import { addExpression, parseExpression } from \"./Expression\";\nimport { add, parse } from \"./parse\";\nadd(getAdder(parse));\naddExpression(getAdder(parseExpression));\nfunction getAdder(parser) {\n return (source) => {\n const result = source.fetchIf(\"(\") && parser(source.clone());\n if (result && !source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n return result;\n };\n}\n//# sourceMappingURL=group.js.map","import { GreaterThan } from \"../GreaterThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">\") && new GreaterThan(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThan.js.map","import { GreaterThanOrEqual } from \"../GreaterThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\">=\") && new GreaterThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=GreaterThanOrEqual.js.map","import { LesserThan } from \"../LesserThan\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<\") && new LesserThan(parseExpression(source));\n});\n//# sourceMappingURL=LesserThan.js.map","import { LesserThanOrEqual } from \"../LesserThanOrEqual\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nadd(source => {\n return source.fetchIf(\"<=\") && new LesserThanOrEqual(parseExpression(source));\n});\n//# sourceMappingURL=LesserThanOrEqual.js.map","import { Not } from \"../Not\";\nimport { add, parseNext } from \"./parse\";\nadd(source => source.fetchIf(\"!\") && new Not(parseNext(Not.precedence, source)));\n//# sourceMappingURL=Not.js.map","import { Has } from \"../Has\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\"has\", \"(\", \"any\", \")\") || source.fetchIf(\":\", \"has\", \"(\", \"any\", \")\");\n return fetched && new Has(fetched.length == 4 ? fetched[2].value : fetched[3].value);\n});\n//# sourceMappingURL=Has.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Within extends Rule {\n constructor(value) {\n super();\n this.value = value;\n this.precedence = 85;\n this.class = \"Within\";\n }\n is(value) {\n return this.value.includes(value);\n }\n toString() {\n return `within(${this.value.join(\", \")})`;\n }\n}\nexport function within(criteria, value) {\n const result = new Within(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return baseObject && type?.class\n ? Completor.functions(tokens, (tokens) => [], {\n value: \"within()\",\n cursor: 7,\n suggestion: { value: \"within()\" },\n })\n : [];\n}\nType.String.add(complete);\nType.Number.add(complete);\n//# sourceMappingURL=Within.js.map","import { Within } from \"../Within\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"within\", \"(\");\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetch()?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new Within(parameters) : undefined;\n});\n//# sourceMappingURL=Within.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class Contains extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = 85;\n this.class = \"Contains\";\n }\n is(value, object) {\n return Array.isArray(value) && this.criteria.every(c => value.some(v => c == v));\n }\n toString() {\n return `contains(${this.criteria.join(\", \")})`;\n }\n}\nexport function contains(criteria, value) {\n const result = new Contains(criteria);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, type, baseObject) {\n return Completor.functions(tokens, () => [], {\n value: \"contains()\",\n cursor: 9,\n suggestion: { value: \"contains()\" },\n });\n}\nType.Array.add(complete);\n//# sourceMappingURL=Contains.js.map","import { Contains } from \"../Contains\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"contains\", \"(\");\n const parameters = [];\n if (fetched && source.peek()) {\n do {\n parameters.push(source.fetchIf(\"any\")?.value ?? \"\");\n } while (source.fetchIf(\",\"));\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters.length > 0 ? new Contains(parameters) : undefined;\n});\n//# sourceMappingURL=Contains.js.map","import { FunctionCall } from \"../FunctionCall\";\nimport { add } from \"./parse\";\nadd(source => {\n const peek = source.peek(3)?.value;\n const fetched = [\")\", \",\", \"(\"].find(s => s == peek) || source.peek(2)?.value == \")\" ? source.fetchIf(\"identifier\", \"(\") : undefined;\n let parameters;\n if (fetched && source.peek()) {\n parameters = [source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\"];\n while (source.fetchIf(\",\"))\n parameters.push(source.fetchIf(/[A-Za-z0-9_\\.\\-]+/)?.value ?? \"\");\n if (!source.fetchIf(\")\"))\n source.raise(\"Missing end of parenthesis.\");\n }\n return fetched && parameters ? new FunctionCall(fetched[0].value, parameters) : undefined;\n});\n//# sourceMappingURL=FunctionCall.js.map","import { and } from \"./And\";\nimport { add, create, Rule } from \"./Rule\";\nexport class Property extends Rule {\n constructor(name, criteria) {\n super();\n this.name = name;\n this.criteria = criteria;\n this.precedence = Property.precedence;\n this.class = \"Property\";\n this.symbol = \".\";\n }\n is(value, object) {\n return !this.criteria\n ? value == object?.[this.name]\n : typeof value == \"object\"\n ? this.criteria.is(value[this.name], object ?? value)\n : this.criteria.is(value, object?.[this.name]);\n }\n toString() {\n return `${this.name}${this.criteria ? this.criteria.symbol ?? \":\" : \"\"}${this.criteria?.stringify(this.precedence) ?? \"\"}`;\n }\n}\nProperty.precedence = 80;\nexport function property(name, criteria, value) {\n const result = (Array.isArray(name) ? name : [name]).reduceRight((r, p) => new Property(p, r), create(criteria));\n return value ? result.is(value) : result;\n}\nadd(criteria => typeof criteria == \"object\" && !(criteria instanceof Rule) && !Array.isArray(criteria)\n ? and(...Object.getOwnPropertyNames(criteria).map(p => property(p, criteria[p])))\n : undefined);\n//# sourceMappingURL=Property.js.map","import { Property } from \"../Property\";\nimport { add, parseNext } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n const result = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n result.push(fetched[0].value);\n if (source.peekIs(\"identifier\", Source.comparator) && (fetched = source.fetchIf(\"identifier\")))\n result.push(fetched.value);\n return result.length > 0\n ? result.reduceRight((r, name) => new Property(name, r), source.peekIs(\"identifier\") && (fetched = source.fetchIf(\"identifier\"))\n ? new Property(fetched.value)\n : parseNext(Property.precedence, source))\n : undefined;\n});\n//# sourceMappingURL=Property.js.map","import { Includes } from \"../Includes\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\", \"*\") || source.fetchIf(\"*\", \"any\", \"*\");\n return fetched && new Includes(fetched.length == 4 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=Includes.js.map","import { Rule } from \"./Rule\";\nimport { Type } from \"./Type\";\nimport { Completor } from \"./Type/Completor\";\nexport class StartsWith extends Rule {\n constructor(needle) {\n super();\n this.needle = needle;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"StartsWith\";\n }\n is(value) {\n return typeof value == \"string\" && value.startsWith(this.needle);\n }\n toString() {\n return `${this.needle}*`;\n }\n}\nexport function startsWith(needle, value) {\n const result = new StartsWith(needle);\n return value ? result.is(value) : result;\n}\nfunction complete(tokens, string) {\n return Completor.expressions(tokens, (tokens) => {\n return !tokens ||\n (tokens.length == 1 && tokens[0].value == \"*\") ||\n (tokens.length == 2 &&\n tokens[1].value == \"*\" &&\n string.value &&\n string.value.startsWith(tokens[0]?.value ?? \"\"))\n ? [Type.Completion.prepend(\"\", { value: string?.value ?? \"\", suggestion: { value: string?.value ?? \"\" } }, \"*\")]\n : [];\n }, { value: \"*\", cursor: 0, suggestion: { value: \"*\", description: \"startswith\" } });\n}\nType.String.add(complete);\n//# sourceMappingURL=StartsWith.js.map","import { StartsWith } from \"../StartsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"any\", \"*\") || source.fetchIf(\"any\", \"*\");\n return fetched && new StartsWith(fetched?.length == 3 ? fetched[1].value : fetched[0].value);\n});\n//# sourceMappingURL=StartsWith.js.map","import { EndsWith } from \"../EndsWith\";\nimport { add } from \"./parse\";\nadd(source => {\n const fetched = source.fetchIf(\":\", \"*\", \"any\") || source.fetchIf(\"*\", \"any\");\n return fetched && new EndsWith(fetched?.length == 3 ? fetched[2].value : fetched[1].value);\n});\n//# sourceMappingURL=EndsWith.js.map","import { Expression } from \"./Expression\";\nimport { Type } from \"./Type\";\nexport class InfixOperator extends Expression {\n toString() {\n const symbol = this.symbol;\n return (this.left.stringify(InfixOperator.getPrecedence(symbol)) +\n ` ${symbol} ` +\n this.right.stringify(InfixOperator.getPrecedence(symbol)));\n }\n constructor(symbol, precedence, left, right) {\n super();\n this.precedence = precedence;\n this.left = left;\n this.right = right;\n this.class = \"InfixOperator\";\n this.symbol = symbol.replace(/ /g, \"\");\n }\n evaluate(criteria) {\n let result;\n switch (this.getSymbol()) {\n case \"+\":\n result = this.left.evaluate(criteria) + this.right.evaluate(criteria);\n break;\n case \"-\":\n result = this.left.evaluate(criteria) - this.right.evaluate(criteria);\n break;\n case \"*\":\n result = this.left.evaluate(criteria) * this.right.evaluate(criteria);\n break;\n default:\n result = NaN;\n break;\n }\n return result;\n }\n getSymbol() {\n return this.symbol;\n }\n stringify(precedence = 0) {\n let result = this.toString();\n if (this.precedence < precedence)\n result = \"(\" + result + \")\";\n return result;\n }\n static getPrecedence(symbol) {\n let result;\n symbol = symbol?.replace(/ /g, \"\");\n switch (symbol) {\n case \"+\":\n result = 14;\n break;\n case \"-\":\n result = 15;\n break;\n case \"*\":\n result = 16;\n break;\n default:\n result = undefined;\n break;\n }\n return result;\n }\n static create(symbol, left, right) {\n let result;\n const fallback = new InfixOperator(\"+\", 14, left, right);\n const precedence = InfixOperator.getPrecedence(symbol);\n if (precedence)\n result = new InfixOperator(symbol, precedence, left, right);\n return result || fallback;\n }\n}\nfunction complete(tokens, type, baseObject) {\n return [\" + \", \" - \", \" * \"]\n .map(s => ({ value: s, suggestion: { value: s } }))\n .map(c => Type.Completor.operators(tokens, (tokens) => (tokens ? baseObject.complete(tokens, undefined, type) : []), c))\n .reduce((result, element) => result.concat(element), []);\n}\nType.Number.addArgument(complete);\n//# sourceMappingURL=InfixOperator.js.map","import { InfixOperator } from \"../InfixOperator\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\nimport { Source } from \"./Source\";\naddExpression((source, previous) => {\n let result;\n const symbol = source.peekIs(Source.binaryOperator) && source.fetch().value;\n let precedence;\n if (symbol && typeof previous == \"object\") {\n let right;\n let nextPrecedence;\n let i = 0;\n precedence = InfixOperator.getPrecedence(symbol);\n while (!nextPrecedence && source.peek(i)) {\n nextPrecedence =\n source.peek(i)?.value == \"(\" ? Number.MAX_SAFE_INTEGER : InfixOperator.getPrecedence(source.peek(i)?.value);\n i++;\n }\n if (nextPrecedence && precedence < nextPrecedence) {\n right = parseNextExpression(precedence, source);\n if (!right) {\n source.raise(\"Missing right hand side of \" + symbol);\n }\n }\n else\n right = parseNextExpression(NaN, source);\n if ((nextPrecedence && precedence == nextPrecedence) || nextPrecedence == Number.MAX_SAFE_INTEGER) {\n result = parseNextExpression(new InfixOperator(symbol, precedence, previous, right), source);\n }\n else\n result = new InfixOperator(symbol, precedence, previous, right);\n }\n return result;\n});\n//# sourceMappingURL=InfixOperator.js.map","import { Value } from \"../Value\";\nimport { addExpression, parseNextExpression } from \"./Expression\";\naddExpression((source, previous) => {\n const fetchedArray = [];\n let fetched;\n while ((fetched = source.fetchIf(\"identifier\", \".\")))\n fetchedArray.push(fetched[0].value);\n let result;\n if (fetchedArray.length == 0) {\n fetched = source.fetchIf(\"any\", \".\", \"any\") || source.fetchIf(\"any\", \",\", \"any\") || source.fetchIf(\"any\");\n result =\n fetched &&\n (Array.isArray(fetched)\n ? new Value(+fetched.map(t => t.value.replace(\",\", \".\")).join(\"\"))\n : new Value(fetched.value));\n }\n else {\n fetched = source.fetchIf(\"identifier\");\n const fetchedValue = new Value(fetched ? fetched.value : 0);\n result =\n fetchedArray.length > 0\n ? fetchedArray.reduceRight((r, name) => new Value(isNaN(+r) ? r : +r, name), fetchedValue)\n : undefined;\n }\n if (result && typeof previous == \"number\" && !isNaN(previous) && previous != Number.MAX_SAFE_INTEGER)\n result = parseNextExpression(result, source);\n return result;\n});\n//# sourceMappingURL=Value.js.map","import { Is } from \"../Is\";\nimport { parseExpression } from \"./Expression\";\nimport { add } from \"./parse\";\nimport { Source } from \"./Source\";\nadd(source => {\n let expression;\n if (source.fetchIf(\":\")) {\n let algebra = false;\n let comparator = false;\n let i = 1;\n while (!algebra && !comparator && source.peek(i)) {\n algebra = Source.binaryOperator.some(c => source.peek(i)?.value == c);\n comparator = Source.comparator.some(c => source.peek(i)?.value == c);\n i++;\n }\n if (algebra)\n expression = parseExpression(source);\n }\n const fetched = source.fetchIf(\"any\");\n return expression ? new Is(expression) : fetched && new Is(fetched.value);\n});\n//# sourceMappingURL=Is.js.map","import { add } from \"./parse\";\nadd(source => {\n source.raise(`Ignoring unknown token \"${source.fetch()}\"`);\n return undefined;\n});\n//# sourceMappingURL=ignore.js.map","export var replace;\n(function (replace) {\n function argument(value, argument) {\n let result = undefined;\n let index;\n const parameter = typeof value == \"string\" ? value : value.toString();\n if (argument &&\n argument.input &&\n argument.identifier &&\n argument?.input?.length > 0 &&\n argument?.identifier?.length > 0 &&\n argument.identifier.includes(parameter)) {\n index = argument.identifier.indexOf(parameter);\n result = isNaN(+argument.input[index]) ? argument.input[index] : +argument.input[index];\n }\n return result;\n }\n replace.argument = argument;\n})(replace || (replace = {}));\n//# sourceMappingURL=replace.js.map","import { add, create, Rule } from \"./Rule\";\nexport class Tuple extends Rule {\n constructor(criteria) {\n super();\n this.criteria = criteria;\n this.precedence = Number.MAX_SAFE_INTEGER;\n this.class = \"Tuple\";\n }\n is(value) {\n return this.criteria.length == value.length && this.criteria.every((c, index) => c.is(value[index]));\n }\n toString() {\n return `[${this.criteria.map(c => c.toString()).join(\", \")}]`;\n }\n}\nadd(criteria => (Array.isArray(criteria) ? new Tuple(criteria.map(create)) : undefined));\n//# sourceMappingURL=Tuple.js.map","import \"./Always\";\nimport { And, and } from \"./And\";\nimport { Any, any } from \"./Any\";\nimport { Contains, contains } from \"./Contains\";\nimport { Criteria } from \"./Criteria\";\nimport { EndsWith, endsWith } from \"./EndsWith\";\nimport { Every, every } from \"./Every\";\nimport { FunctionCall } from \"./FunctionCall\";\nimport { GreaterThan, greaterThan } from \"./GreaterThan\";\nimport { GreaterThanOrEqual, greaterThanOrEqual } from \"./GreaterThanOrEqual\";\nimport { Has, has } from \"./Has\";\nimport { Includes, includes } from \"./Includes\";\nimport { Is } from \"./Is\";\nimport { LesserThan, lesserThan } from \"./LesserThan\";\nimport { LesserThanOrEqual, lesserThanOrEqual } from \"./LesserThanOrEqual\";\nimport { Match, match } from \"./Match\";\nimport { Not, not } from \"./Not\";\nimport { Or, or } from \"./Or\";\nimport { parse, parseExpression } from \"./parse\";\nimport { Property, property } from \"./Property\";\nimport { resolve } from \"./resolve\";\nimport { create, Rule } from \"./Rule\";\nimport { Some, some } from \"./Some\";\nimport { StartsWith, startsWith } from \"./StartsWith\";\nimport { Tuple } from \"./Tuple\";\nimport { Type as SType } from \"./Type\";\nimport { Value } from \"./Value\";\nimport { Within, within } from \"./Within\";\nfunction is(criteria, value) {\n const result = create(criteria);\n return value ? result.is(value) : result;\n}\nfunction filter(criteria, value) {\n const c = create(criteria);\n return c.filter(value);\n}\nexport { And, Any, Criteria, Contains, EndsWith, Every, FunctionCall, Has, GreaterThan, GreaterThanOrEqual, LesserThan, LesserThanOrEqual, Includes, Is, Match, Not, Or, Property, Rule, Some, StartsWith, Tuple, SType as Type, Value, Within, any, and, create, contains, endsWith, every, has, filter, greaterThan, greaterThanOrEqual, lesserThan, lesserThanOrEqual, includes, is, match, not, or, parse, parseExpression, property, resolve, some, startsWith, within, };\n//# sourceMappingURL=selectively.js.map","import { EventEmitter } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\n\nconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\nexport interface Filter extends Filter.Element {\n\tsmoothlyFilterUpdate: EventEmitter<Filter.Update>\n\tsmoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n}\nexport namespace Filter {\n\texport type Manipulate = (criteria: selectively.Criteria) => selectively.Criteria\n\texport type Update = (expression: selectively.Criteria) => void\n\texport interface Element {\n\t\tproperty?: string\n\t\tproperties?: Record<string, string>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tproperty: isly.string().optional(),\n\t\t\tproperties: isly.record<Record<string, string>>(isly.string(), isly.string()).optional(),\n\t\t})\n\t}\n\texport const type = Element.type.extend<Filter>({\n\t\tsmoothlyFilterUpdate: EventEmitter,\n\t\tsmoothlyFilterManipulate: EventEmitter,\n\t})\n}\n",":host {\n\tposition: relative;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tmargin-left: 1rem;\n\tmargin-right: 1rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n:host>div::slotted([slot=detail]) {\n\tz-index: 5;\n}\n\n:host::slotted([slot=bar]) {\n\tpointer-events: auto;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n}\n\n:host>div:empty+smoothly-icon {\n\tdisplay: none;\n}\n\n:host>smoothly-icon {\n\tcursor: pointer;\n\tmargin-left: 0.3em;\n\tmargin-right: 0.3em;\n\tflex-shrink: 0;\n}\n\n.close {\n\tposition: fixed;\n\tz-index: 3;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100dvw;\n\theight: 100dvh;\n\tbackground: transparent;\n}\n\n.hidden {\n\tdisplay: none;\n}\n\n:host>.container {\n\tpadding: 2em;\n\tposition: absolute;\n\tright: 0.35em;\n\twidth: fit-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\ttop: 100%;\n\twidth: fit-content;\n\tz-index: 4;\n\tbackground-color: rgb(var(--smoothly-color));\n\tmargin: 0.8em -2em;\n}\n\n/* arrow */\n.container:before {\n\tcontent: \"\";\n\twidth: 0.6em;\n\theight: 0.6em;\n\ttransform: rotate(45deg);\n\tborder-top: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-left: 1px solid rgb(var(--smoothly-medium-tint));\n\tbackground-color: rgb(var(--smoothly-color));\n\tposition: absolute;\n\tz-index: 3;\n}\n\n/* arrow placement */\n.container.arrow-top:before {\n\tleft: calc(91%);\n\ttop: -5px;\n}\n\n.container:after {\n\tcontent: \"\";\n\theight: 100%;\n\twidth: 100%;\n\tborder: 1px solid rgb(var(--smoothly-medium-tint));\n\tborder-radius: 0.25em;\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Filter } from \"./Filter\"\n\n@Component({\n\ttag: \"smoothly-filter\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilter {\n\tfield: HTMLSmoothlyFilterFieldElement | undefined\n\tupdating = false\n\tfilters: Set<Filter.Update> = new Set<Filter.Update>() // maybe set?\n\t@State() detailChildren?: boolean\n\t@State() criteria: selectively.Criteria = selectively.and()\n\t@State() expanded = false\n\t@Event() smoothlyFilter: EventEmitter<selectively.Criteria>\n\n\t@Listen(\"smoothlyFilterUpdate\")\n\tupdateHandler(event: CustomEvent<Filter.Update>) {\n\t\tevent.stopPropagation()\n\t\tif (Filter.Element.type.is(event.target))\n\t\t\tthis.filters.add(event.detail)\n\t}\n\t@Listen(\"smoothlyFilterManipulate\")\n\tmanipulateHandler(event: CustomEvent<Filter.Manipulate>) {\n\t\tevent.stopPropagation()\n\t\tthis.updating = true\n\t\tthis.criteria = event.detail(this.criteria)\n\t\tthis.smoothlyFilter.emit(this.criteria)\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t\tthis.updating = false\n\t}\n\t@Listen(\"smoothlyFilterField\")\n\tfilterFieldHandler(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and(event.detail)))\n\t\t\tthis.filters.forEach(update => update(this.criteria))\n\t\t}\n\t}\n\tclear(): void {\n\t\tthis.field?.clear()\n\t\tthis.smoothlyFilter.emit((this.criteria = selectively.and()))\n\t\tthis.filters.forEach(update => update(this.criteria))\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"bar\" />\n\t\t\t\t<smoothly-filter-field criteria={this.criteria} ref={e => (this.field = e)} />\n\t\t\t\t{this.criteria.toString() != \"\" && (\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tname={\"close\"}\n\t\t\t\t\t\ttoolTip={\"Clear all filters\"}\n\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\tthis.clear()\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t\t<div class={this.expanded ? \"container arrow-top\" : \"hidden\"}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.expanded ? \"options\" : \"options-outline\"}\n\t\t\t\t\ttoolTip={(this.expanded ? \"Hide\" : \"Show\") + \" additional filters\"}\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tthis.expanded = !this.expanded\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<div class={this.expanded ? \"close\" : \"hidden\"} onClick={() => (this.expanded = !this.expanded)} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tflex-grow: 5;\n}\n\n","import { Component, Event, EventEmitter, h, Host, Method, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\n\n@Component({\n\ttag: \"smoothly-filter-field\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterField {\n\tinput: HTMLSmoothlyInputElement | undefined\n\t@Prop() criteria: selectively.Criteria\n\t@Event() smoothlyFilterField: EventEmitter<selectively.Rule>\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tawait this.input?.clear()\n\t}\n\tfilterFieldEmit() {\n\t\tthis.smoothlyFilterField.emit(selectively.parse(this.input?.value ?? \"\"))\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host onKeyDown={(e: KeyboardEvent) => e.key == \"Enter\" && this.filterFieldEmit()}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tname=\"filter\"\n\t\t\t\t\tref={e => (this.input = e)}\n\t\t\t\t\tvalue={this.criteria.toString()}\n\t\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyBlur={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.filterFieldEmit()\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t}}>\n\t\t\t\t\tFilter\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n display: block;\n}\n\n\n","import { Component, Event, EventEmitter, h, Prop, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { tidily } from \"tidily\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterInput implements Filter {\n\ttype: tidily.Type = \"text\"\n\t@State() needle: selectively.Criteria = \"\"\n\t@Prop() property: string\n\t@Prop() placeholder: string\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const rule of expression.rules) {\n\t\t\t\tconst criteria = this.isCriteria(rule, this.property)\n\t\t\t\tif (criteria) {\n\t\t\t\t\tthis.needle = criteria.needle ?? \"\"\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\telse\n\t\t\tthis.needle = \"\"\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string): selectively.Includes | undefined {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\t(criteria instanceof selectively.Property &&\n\t\t\t\tcriteria.name == property &&\n\t\t\t\t((criteria.criteria instanceof selectively.Includes && criteria.criteria) ||\n\t\t\t\t\t(criteria.criteria instanceof selectively.Property && this.isCriteria(criteria.criteria, rest.join(\".\"))))) ||\n\t\t\tundefined\n\t\t)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, string>>) {\n\t\tevent.stopPropagation()\n\t\tconst needle = event.detail[this.property]\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tconst newCriteria = needle ? this.getCriteria(needle) : undefined\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t!newCriteria\n\t\t\t\t\t? index != -1 && result.rules.splice(index, 1)\n\t\t\t\t\t: index == -1\n\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tprivate getCriteria(needle: string): selectively.Rule | undefined {\n\t\treturn this.property\n\t\t\t.split(\".\")\n\t\t\t.reduceRight((r: selectively.Rule, e) => selectively.property(e, r), selectively.includes(needle))\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == key &&\n\t\t\t(rest.length == 0 || (!!criteria.criteria && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-input\n\t\t\t\tname={this.property}\n\t\t\t\tvalue={this.needle}\n\t\t\t\ttype={this.type}\n\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyFormDisable={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}>\n\t\t\t\t<slot />\n\t\t\t</smoothly-input>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n\n:host>smoothly-picker {\n\tflex-grow: 1;\n\twidth: 12.5em;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { isly } from \"isly\"\nimport { Option } from \"../../../model\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterPicker implements Filter {\n\tupdating = false\n\toptions: Map<string, { state: Record<string, any>; selected: (selected: boolean) => void }> = new Map<\n\t\tstring,\n\t\t{ state: Record<string, any>; selected: (selected: boolean) => void }\n\t>()\n\t@Prop() label: string\n\t@Prop() property: string\n\t@Prop() multiple = false\n\t@Prop() type: \"array\" | \"string\" = \"string\"\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tevent.stopPropagation()\n\t\tthis.options.set(event.detail.value, {\n\t\t\tstate: this.property.split(\".\").reduceRight((r, e) => ({ [e]: r }), event.detail.value),\n\t\t\tselected: event.detail.set.selected,\n\t\t})\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tthis.updating = true\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0)\n\t\t\tfor (const option of this.options.values()) {\n\t\t\t\toption.selected(\n\t\t\t\t\texpression.rules.some(\n\t\t\t\t\t\tr =>\n\t\t\t\t\t\t\tthis.isCriteria(r, this.property, option.state) &&\n\t\t\t\t\t\t\t(this.type == \"array\" ? this.findInstanceOf(r, this.property) : r.is(option.state))\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t}\n\t\telse\n\t\t\tthis.options.forEach(o => o.selected(false))\n\t\tthis.updating = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: Record<string, any> | any): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn criteria instanceof selectively.Property && criteria.name == property\n\t\t\t? this.isCriteria(criteria.criteria, rest.join(\".\"), value[property])\n\t\t\t: this.multiple\n\t\t\t? (criteria instanceof selectively.Within && criteria.value.some(e => e == value)) ||\n\t\t\t (this.type == \"array\" && criteria instanceof selectively.Contains && criteria.criteria.some(e => e == value))\n\t\t\t: criteria instanceof selectively.Is && criteria.value == value\n\t}\n\tpickerHandler(event: CustomEvent<Record<string, unknown>>) {\n\t\tevent.stopPropagation()\n\t\tif (!this.updating) {\n\t\t\tconst argument = event.detail[this.property]\n\t\t\tconst manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\t\tlet result: selectively.Criteria = criteria\n\t\t\t\tconst newCriteria = this.getCriteria(argument)\n\t\t\t\tif (!(result instanceof selectively.Rule))\n\t\t\t\t\tresult = newCriteria ? selectively.and(result, newCriteria) : result\n\t\t\t\telse if (result instanceof selectively.And) {\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, this.property))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t}\n\t\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t\t}\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, key: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t(criteria.criteria instanceof selectively.Within ||\n\t\t\t\tcriteria.criteria instanceof selectively.Is ||\n\t\t\t\tcriteria.criteria instanceof selectively.Contains ||\n\t\t\t\t(criteria.criteria instanceof selectively.Property && this.findInstanceOf(criteria.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\tprivate getCriteria(detail: unknown): selectively.Rule | undefined {\n\t\tlet result: selectively.Criteria | undefined\n\t\tif (this.multiple && isly.string().array({ criteria: \"minLength\", value: 1 }).is(detail))\n\t\t\tresult = this.type == \"array\" ? selectively.contains(detail) : selectively.within(detail)\n\t\telse if (typeof detail == \"string\")\n\t\t\tresult = selectively.is(detail)\n\t\telse\n\t\t\tresult = undefined\n\t\treturn result && this.property.split(\".\").reduceRight((r, e) => selectively.property(e, r), result)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-picker\n\t\t\t\tname={this.property}\n\t\t\t\tlooks=\"border\"\n\t\t\t\tmultiple={this.multiple}\n\t\t\t\tonSmoothlyInputLooks={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyPickerLoaded={e => e.stopPropagation()}\n\t\t\t\tonSmoothlyInput={e => this.pickerHandler(e)}>\n\t\t\t\t{this.label && (\n\t\t\t\t\t<span slot=\"label\">\n\t\t\t\t\t\t{[this.label.slice(0, 1).toUpperCase(), this.label.slice(1, this.label.length)].join(\"\")}\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t<slot />\n\t\t\t</smoothly-picker>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\tdisplay: inline-block;\n}\n\n:host[flip] {\n\ttransform: scaleX(-1);\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport { Icon } from \"../../../model\"\nimport { Filter } from \"../Filter\"\n\n@Component({\n\ttag: \"smoothly-filter-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFilterToggle {\n\t@Prop() icon: Icon\n\t@Prop() properties: Record<string, string>\n\t@Prop() toolTip: string\n\t@Prop() not: boolean\n\t@Prop({ reflect: true }) flip = false\n\t@Prop({ mutable: true }) active = false\n\t@Event() smoothlyFilterUpdate: EventEmitter<Filter.Update>\n\t@Event() smoothlyFilterManipulate: EventEmitter<Filter.Manipulate>\n\tcomponentWillLoad() {\n\t\tthis.active && this.activeHandler()\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyFilterUpdate.emit(this.update.bind(this))\n\t}\n\tupdate(expression: selectively.Criteria): void {\n\t\tif (expression instanceof selectively.And && expression.rules.length > 0) {\n\t\t\tthis.active = Object.entries(this.properties).every(([key, value]) =>\n\t\t\t\texpression.rules.some(r => {\n\t\t\t\t\tconst criteria = !this.not ? r : r instanceof selectively.Not ? r.criteria : undefined\n\t\t\t\t\treturn value == \"\"\n\t\t\t\t\t\t? !(criteria instanceof selectively.Property && criteria.name == key)\n\t\t\t\t\t\t: this.isCriteria(criteria, key, value)\n\t\t\t\t})\n\t\t\t)\n\t\t} else\n\t\t\tthis.active = false\n\t}\n\tprivate isCriteria(criteria: selectively.Rule | undefined, key: string, value: string): boolean {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn (\n\t\t\tcriteria instanceof selectively.Property &&\n\t\t\tcriteria.name == property &&\n\t\t\t((criteria.criteria instanceof selectively.Is && criteria.criteria.value == value) ||\n\t\t\t\tthis.isCriteria(criteria.criteria, rest.join(\".\"), value))\n\t\t)\n\t}\n\n\tactiveHandler(activate?: true) {\n\t\tconst manipulate: Filter.Manipulate = (criteria: selectively.Criteria): selectively.Criteria => {\n\t\t\tlet result: selectively.Criteria = criteria\n\t\t\tactivate && (this.active = !this.active)\n\t\t\tif (result instanceof selectively.And) {\n\t\t\t\tfor (const [key, value] of Object.entries(this.properties)) {\n\t\t\t\t\tconst newCriteria =\n\t\t\t\t\t\t!this.active || (this.active && value == \"\")\n\t\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t\t: this.not\n\t\t\t\t\t\t\t? selectively.not(this.createCriteria(key, value))\n\t\t\t\t\t\t\t: this.createCriteria(key, value)\n\t\t\t\t\tconst index = result.rules.findIndex(r => this.findInstanceOf(r, key))\n\t\t\t\t\t!newCriteria && index >= 0\n\t\t\t\t\t\t? result.rules.splice(index, 1)\n\t\t\t\t\t\t: !newCriteria\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: index == -1\n\t\t\t\t\t\t? result.rules.push(newCriteria)\n\t\t\t\t\t\t: (result.rules[index] = newCriteria)\n\t\t\t\t}\n\t\t\t\tresult = selectively.and(...result.rules)\n\t\t\t}\n\t\t\treturn result\n\t\t}\n\t\tthis.smoothlyFilterManipulate.emit(manipulate.bind(this))\n\t}\n\tcreateCriteria(key: string, value: string): selectively.Rule {\n\t\tconst [property, ...rest] = key.split(\".\")\n\t\treturn selectively.property(\n\t\t\tproperty,\n\t\t\trest.length == 0 ? selectively.is(value) : this.createCriteria(rest.join(\".\"), value)\n\t\t)\n\t}\n\tfindInstanceOf(criteria: selectively.Criteria, property: string): boolean {\n\t\tconst check = !this.not ? criteria : criteria instanceof selectively.Not ? criteria.criteria : false\n\t\tconst [key, ...rest] = property.split(\".\")\n\t\treturn (\n\t\t\tcheck instanceof selectively.Property &&\n\t\t\tcheck.name == key &&\n\t\t\t(rest.length == 0 || (!!check.criteria && this.findInstanceOf(check.criteria, rest.join(\".\"))))\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<smoothly-icon\n\t\t\t\tfill=\"clear\"\n\t\t\t\tcolor={this.active ? \"success\" : \"medium\"}\n\t\t\t\tname={(this.active ? `${this.icon}` : `${this.icon}-outline`) as Icon}\n\t\t\t\ttoolTip={this.toolTip}\n\t\t\t\tonClick={() => this.activeHandler(true)}\n\t\t\t/>\n\t\t)\n\t}\n}\n","export var Method;\n(function (Method) {\n function is(value) {\n return (typeof value == \"string\" &&\n (value == \"GET\" ||\n value == \"POST\" ||\n value == \"DELETE\" ||\n value == \"HEAD\" ||\n value == \"PATCH\" ||\n value == \"PUT\" ||\n value == \"OPTIONS\" ||\n value == \"TRACE\" ||\n value == \"CONNECT\"));\n }\n Method.is = is;\n function parse(value) {\n value = value?.toUpperCase();\n return is(value) ? value : undefined;\n }\n Method.parse = parse;\n})(Method || (Method = {}));\n//# sourceMappingURL=Method.js.map","const parsers = {};\nexport function add(parser, ...contentType) {\n contentType.forEach(t => (parsers[t] = parser));\n}\nexport function parse(request) {\n const contentType = request.headers.get(\"Content-Type\");\n const type = contentType && contentType.split(\";\");\n const parser = parsers[type?.[0] ?? \"plain/text\"];\n return parser ? parser(request) : request.text();\n}\n//# sourceMappingURL=Parser.js.map","const serializers = {};\nexport function add(serializer, ...contentType) {\n contentType.forEach(t => (serializers[t] = serializer));\n}\nexport function serialize(body, contentType) {\n const serializer = serializers[contentType?.split(\";\")[0] ?? \"\"];\n return serializer ? serializer(body, contentType) : body;\n}\n//# sourceMappingURL=Serializer.js.map","export function to(name) {\n return name.toLowerCase().replace(/-[a-z]/g, match => match.substring(1).toUpperCase());\n}\nexport function from(name) {\n const result = name.replace(/[A-Z]/g, match => \"-\" + match);\n return result[0].toUpperCase() + result.substring(1);\n}\n//# sourceMappingURL=CamelCase.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"aIM\", \"A-IM\", 1],\n [\"accept\", \"Accept\", 2],\n [\"acceptCharset\", \"Accept-Charset\", 2],\n [\"acceptDatetime\", \"Accept-Datetime\", 1],\n [\"acceptEncoding\", \"Accept-Encoding\", 2],\n [\"acceptLanguage\", \"Accept-Language\", 2],\n [\"accessControlRequestMethod\", \"Access-Control-Request-Method\", 1],\n [\"accessControlRequestHeaders\", \"Access-Control-Request-Headers\", 1],\n [\"authorization\", \"Authorization\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"cookie\", \"Cookie\", 1],\n [\"date\", \"Date\", 1],\n [\"expect\", \"Expect\", 1],\n [\"forwarded\", \"Forwarded\", 1],\n [\"from\", \"From\", 1],\n [\"host\", \"Host\", 1],\n [\"http2Settings\", \"HTTP2-Settings\", 1],\n [\"ifMatch\", \"If-Match\", 2],\n [\"ifModifiedSince\", \"If-Modified-Since\", 1],\n [\"ifNoneMatch\", \"If-None-Match\", 2],\n [\"ifRange\", \"If-Range\", 1],\n [\"ifUnmodifiedSince\", \"If-Unmodified-Since\", 1],\n [\"maxForwards\", \"Max-Forwards\", 1],\n [\"origin\", \"Origin\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthorization\", \"Proxy-Authorization\", 1],\n [\"range\", \"Range\", 1],\n [\"referer\", \"Referer\", 1],\n [\"te\", \"TE\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"userAgent\", \"User-Agent\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"via\", \"Via\", 2],\n [\"warning\", \"Warning\", 1],\n [\"upgradeInsecureRequests\", \"Upgrade-Insecure-Requests\", 1],\n [\"xRequestedWith\", \"X-Requested-With\", 1],\n [\"dnt\", \"DNT\", 1],\n [\"xForwardedFor\", \"X-Forwarded-For\", 1],\n [\"xForwardedHost\", \"X-Forwarded-Host\", 1],\n [\"xForwardedProto\", \"X-Forwarded-Proto\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"frontEndHttps\", \"Front-End-Https\", 1],\n [\"xHttpMethodOverride\", \"X-Http-Method-Override\", 1],\n [\"xAttDeviceId\", \"X-ATT-DeviceId\", 1],\n [\"xWapProfile\", \"X-Wap-Profile\", 1],\n [\"proxyConnection\", \"Proxy-Connection\", 1],\n [\"xCsrfToken\", \"X-Csrf-Token\", 1],\n [\"xCorrelationID\", \"X-Correlation-ID\", 1],\n [\"xModNonce\", \"x-mod-nonce\", 1],\n [\"xModRetry\", \"x-mod-retry\", 1],\n [\"saveData\", \"Save-Data\", 1],\n [\"xAuthToken\", \"X-Auth-Token\", 1],\n [\"xTrackingId\", \"x-tracking-id\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, n, l]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? [...headers]\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.entries == \"function\";\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Method } from \"../Method\";\nimport * as Parser from \"../Parser\";\nimport * as Serializer from \"../Serializer\";\nimport { Header as RequestHeader } from \"./Header\";\nexport var Request;\n(function (Request) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"method\", \"url\", \"parameter\", \"search\", \"remote\", \"header\", \"body\"].some(k => k == key)) &&\n Method.is(value.method) &&\n value.url instanceof URL &&\n typeof value.parameter == \"object\" &&\n Object.entries(value.parameter).every(([parameter, value]) => typeof parameter == \"string\" && typeof value == \"string\") &&\n typeof value.search == \"object\" &&\n Object.entries(value.search).every(([key, value]) => typeof key == \"string\" && typeof value == \"string\") &&\n (value.remote == undefined || typeof value.remote == \"string\") &&\n (value.header == undefined || RequestHeader.is(value.header)));\n }\n Request.is = is;\n async function to(request) {\n const r = is(request) ? request : create(request);\n const header = r.header.contentType?.startsWith(\"multipart/form-data\")\n ? (({ contentType, ...header }) => header)(r.header)\n : r.header;\n return {\n url: r.url.toString(),\n method: r.method,\n headers: RequestHeader.to(header),\n body: [\"GET\", \"HEAD\"].some(v => v == r.method)\n ? undefined\n : await Serializer.serialize(await r.body, r.header.contentType),\n };\n }\n Request.to = to;\n function from(request) {\n const url = new URL(request.url);\n return {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n header: RequestHeader.from(request.headers),\n parameter: {},\n search: Object.fromEntries(url.searchParams.entries()),\n body: Parser.parse(request),\n ...(\"cf\" in request && { cloudflare: request.cf }),\n };\n }\n Request.from = from;\n function create(request) {\n let result;\n if (typeof request == \"string\")\n result = create({ url: request });\n else {\n const url = typeof request.url == \"string\" ? new URL(request.url) : request.url;\n result = {\n method: Method.parse(request.method) ?? \"GET\",\n url,\n parameter: request.parameter ?? {},\n search: { ...request.search, ...Object.fromEntries(url.searchParams.entries()) },\n remote: request.remote,\n header: request.header ?? {},\n body: request.body,\n };\n }\n return result;\n }\n Request.create = create;\n let Header;\n (function (Header) {\n Header.is = RequestHeader.is;\n Header.from = RequestHeader.from;\n Header.to = RequestHeader.to;\n })(Header = Request.Header || (Request.Header = {}));\n})(Request || (Request = {}));\n//# sourceMappingURL=index.js.map","const PlatformRequest = typeof Request != \"undefined\" ? Request : globalThis.Request;\nconst PlatformResponse = typeof Response != \"undefined\" ? Response : globalThis.Response;\nexport { PlatformRequest as Request, PlatformResponse as Response };\n//# sourceMappingURL=Platform.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Socket_instances, _Socket_receiveQueue, _Socket_sendQueue, _Socket_closed, _Socket_backend, _Socket_onMessage, _Socket_onClose, _Socket_handleOpen, _Socket_onOpen;\nexport class Socket {\n get state() {\n return __classPrivateFieldGet(this, _Socket_closed, \"f\") ? \"closed\" : \"opened\";\n }\n set onMessage(value) {\n if (__classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").length && value) {\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\").forEach(value);\n __classPrivateFieldSet(this, _Socket_receiveQueue, [], \"f\");\n }\n __classPrivateFieldSet(this, _Socket_onMessage, value, \"f\");\n }\n set onClose(value) {\n if (this.state == \"closed\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onClose, value, \"f\");\n }\n set onOpen(value) {\n if (this.state == \"opened\" && value)\n value();\n __classPrivateFieldSet(this, _Socket_onOpen, value, \"f\");\n }\n constructor(backend, isOpen) {\n _Socket_instances.add(this);\n _Socket_receiveQueue.set(this, []);\n _Socket_sendQueue.set(this, []);\n _Socket_closed.set(this, false);\n _Socket_backend.set(this, void 0);\n _Socket_onMessage.set(this, void 0);\n _Socket_onClose.set(this, void 0);\n _Socket_onOpen.set(this, void 0);\n __classPrivateFieldSet(this, _Socket_backend, backend, \"f\");\n if (isOpen)\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"open\", () => {\n if (__classPrivateFieldGet(this, _Socket_onOpen, \"f\"))\n __classPrivateFieldGet(this, _Socket_onOpen, \"f\").call(this);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).bind(this);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"message\", async (event) => {\n const data = this.processReceived(event.data);\n __classPrivateFieldGet(this, _Socket_instances, \"m\", _Socket_handleOpen).call(this);\n if (__classPrivateFieldGet(this, _Socket_onMessage, \"f\"))\n __classPrivateFieldGet(this, _Socket_onMessage, \"f\").call(this, data);\n else\n __classPrivateFieldGet(this, _Socket_receiveQueue, \"f\")?.push(data);\n });\n __classPrivateFieldGet(this, _Socket_backend, \"f\").addEventListener(\"close\", () => {\n if (__classPrivateFieldGet(this, _Socket_onClose, \"f\"))\n __classPrivateFieldGet(this, _Socket_onClose, \"f\").call(this);\n __classPrivateFieldSet(this, _Socket_closed, true, \"f\");\n });\n }\n send(message) {\n if (__classPrivateFieldGet(this, _Socket_sendQueue, \"f\"))\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\").push(this.processSend(message));\n else\n __classPrivateFieldGet(this, _Socket_backend, \"f\").send(this.processSend(message));\n }\n}\n_Socket_receiveQueue = new WeakMap(), _Socket_sendQueue = new WeakMap(), _Socket_closed = new WeakMap(), _Socket_backend = new WeakMap(), _Socket_onMessage = new WeakMap(), _Socket_onClose = new WeakMap(), _Socket_onOpen = new WeakMap(), _Socket_instances = new WeakSet(), _Socket_handleOpen = function _Socket_handleOpen() {\n __classPrivateFieldGet(this, _Socket_sendQueue, \"f\")?.forEach(buffer => __classPrivateFieldGet(this, _Socket_backend, \"f\").send(buffer));\n __classPrivateFieldSet(this, _Socket_sendQueue, undefined, \"f\");\n};\n//# sourceMappingURL=Socket.js.map","import { Socket } from \"./Socket\";\nexport class ArrayBuffer extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? data.arrayBuffer()\n : typeof data == \"string\"\n ? new TextEncoder().encode(data).buffer\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=ArrayBuffer.js.map","import { Socket } from \"./Socket\";\nexport class Json extends Socket {\n processReceived(data) {\n return JSON.parse(data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data);\n }\n processSend(data) {\n return JSON.stringify(data);\n }\n}\n//# sourceMappingURL=Json.js.map","import { Socket } from \"./Socket\";\nexport class String extends Socket {\n processReceived(data) {\n return data?.arrayBuffer\n ? new TextDecoder().decode(data.arrayBuffer())\n : typeof data != \"string\"\n ? new TextDecoder().decode(data)\n : data;\n }\n processSend(data) {\n return data;\n }\n}\n//# sourceMappingURL=String.js.map","var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _Factory_json, _Factory_string, _Factory_arrayBuffer;\nimport { ArrayBuffer as SocketArrayBuffer } from \"./ArrayBuffer\";\nimport { Json as SocketJson } from \"./Json\";\nimport { String as SocketString } from \"./String\";\nexport class Factory {\n get json() {\n if (!__classPrivateFieldGet(this, _Factory_json, \"f\"))\n __classPrivateFieldSet(this, _Factory_json, new SocketJson(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_json, \"f\");\n }\n get string() {\n if (!__classPrivateFieldGet(this, _Factory_string, \"f\"))\n __classPrivateFieldSet(this, _Factory_string, new SocketString(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_string, \"f\");\n }\n get arrayBuffer() {\n if (!__classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\"))\n __classPrivateFieldSet(this, _Factory_arrayBuffer, new SocketArrayBuffer(this.backend, this.isOpen), \"f\");\n return __classPrivateFieldGet(this, _Factory_arrayBuffer, \"f\");\n }\n constructor(backend, isOpen) {\n this.backend = backend;\n this.isOpen = isOpen;\n _Factory_json.set(this, void 0);\n _Factory_string.set(this, void 0);\n _Factory_arrayBuffer.set(this, void 0);\n }\n createResponse(header = {}) {\n return { status: 101, socket: this, header };\n }\n close(code, reason) {\n this.backend.close(code, reason);\n }\n}\n_Factory_json = new WeakMap(), _Factory_string = new WeakMap(), _Factory_arrayBuffer = new WeakMap();\n//# sourceMappingURL=Factory.js.map","import { Factory as SocketFactory } from \"./Factory\";\nexport var Socket;\n(function (Socket) {\n Socket.Factory = SocketFactory;\n})(Socket || (Socket = {}));\n//# sourceMappingURL=index.js.map","import * as CamelCase from \"../CamelCase\";\nconst fields = [\n [\"accessControlAllowOrigin\", \"Access-Control-Allow-Origin\", 1],\n [\"accessControlAllowCredentials\", \"Access-Control-Allow-Credentials\", 1],\n [\"accessControlExposeHeaders\", \"Access-Control-Expose-Headers\", 2],\n [\"accessControlMaxAge\", \"Access-Control-Max-Age\", 1],\n [\"accessControlAllowMethods\", \"Access-Control-Allow-Methods\", 2],\n [\"accessControlAllowHeaders\", \"Access-Control-Allow-Headers\", 2],\n [\"acceptPatch\", \"Accept-Patch\", 1],\n [\"acceptRanges\", \"Accept-Ranges\", 1],\n [\"age\", \"Age\", 1],\n [\"allow\", \"Allow\", 2],\n [\"altSvc\", \"Alt-Svc\", 1],\n [\"cacheControl\", \"Cache-Control\", 1],\n [\"cfConnectionIp\", \"CF-Connecting-IP\", 1],\n [\"cfIpCountry\", \"CF-IPCountry\", 1],\n [\"connection\", \"Connection\", 1],\n [\"contentDisposition\", \"Content-Disposition\", 1],\n [\"contentEncoding\", \"Content-Encoding\", 1],\n [\"contentLanguage\", \"Content-Language\", 2],\n [\"contentLength\", \"Content-Length\", 1],\n [\"contentLocation\", \"Content-Location\", 1],\n [\"contentMD5\", \"Content-MD5\", 1],\n [\"contentRange\", \"Content-Range\", 1],\n [\"contentSecurityPolicy\", \"Content-Security-Policy\", 1],\n [\"contentType\", \"Content-Type\", 1],\n [\"date\", \"Date\", 1],\n [\"deltaBase\", \"Delta-Base\", 1],\n [\"eTag\", \"ETag\", 1],\n [\"expires\", \"Expires\", 1],\n [\"iM\", \"IM\", 1],\n [\"lastModified\", \"Last-Modified\", 1],\n [\"link\", \"Link\", 1],\n [\"location\", \"Location\", 1],\n [\"p3P\", \"P3P\", 1],\n [\"pragma\", \"Pragma\", 1],\n [\"proxyAuthenticate\", \"Proxy-Authenticate\", 1],\n [\"publicKeyPins\", \"Public-Key-Pins\", 1],\n [\"refresh\", \"Refresh\", 1],\n [\"retryAfter\", \"Retry-After\", 1],\n [\"server\", \"Server\", 1],\n [\"setCookie\", \"Set-Cookie\", 1],\n [\"status\", \"Status\", 1],\n [\"strictTransportSecurity\", \"Strict-Transport-Security\", 1],\n [\"timingAllowOrigin\", \"Timing-Allow-Origin\", 2],\n [\"trailer\", \"Trailer\", 1],\n [\"transferEncoding\", \"Transfer-Encoding\", 1],\n [\"tk\", \"Tk\", 1],\n [\"upgrade\", \"Upgrade\", 2],\n [\"vary\", \"Vary\", 2],\n [\"via\", \"Via\", 1],\n [\"warning\", \"Warning\", 1],\n [\"wwwAuthenticate\", \"WWW-Authenticate\", 1],\n [\"xContentDuration\", \"X-Content-Duration\", 1],\n [\"xContentSecurityPolicy\", \"X-Content-Security-Policy\", 1],\n [\"xContentTypeOptions\", \"X-Content-Type-Options\", 1],\n [\"xCorrelationId\", \"X-Correlation-ID\", 1],\n [\"xFrameOptions\", \"X-Frame-Options\", 1],\n [\"xMsContinuation\", \"X-Ms-Continuation\", 1],\n [\"xPoweredBy\", \"X-Powered-By\", 1],\n [\"xRequestId\", \"X-Request-ID\", 1],\n [\"xUACompatible\", \"X-UA-Compatible\", 1],\n [\"xWebkitCsp\", \"X-WebKit-CSP\", 1],\n [\"xXssProtection\", \"X-XSS-Protection\", 1],\n];\nexport var Header;\n(function (Header) {\n function is(value) {\n function isString(value) {\n return value == undefined || typeof value == \"string\";\n }\n function isStringArray(value) {\n return value == undefined || (Array.isArray(value) && value.every(v => typeof v == \"string\"));\n }\n return (typeof value == \"object\" && fields.every(field => (field[2] == 1 ? isString : isStringArray)(value[field[0]])));\n }\n Header.is = is;\n function to(header) {\n return Object.fromEntries(Object.entries(header).map(([name, value]) => {\n const field = fields.find(([camelCase, ..._]) => camelCase == name);\n return [field ? field[1] : CamelCase.from(name), Array.isArray(value) ? value.join(\", \") : value];\n }));\n }\n Header.to = to;\n function from(headers) {\n return Object.fromEntries((Array.isArray(headers)\n ? headers.map(([field, ...value]) => [field, value.join(\", \")])\n : isHeaders(headers)\n ? getEntries(headers)\n : Object.entries(headers)).map(([name, value]) => {\n const field = fields.find(([c, n, l]) => name.toLowerCase() == n.toLowerCase());\n return field\n ? [field[0], field[2] == 1 || typeof value != \"string\" ? value : value.split(\",\").map(v => v.trim())]\n : [CamelCase.to(name), value];\n }));\n }\n Header.from = from;\n function toString(header) {\n return Object.entries(header)\n .map(([header, value]) => header + \": \" + value)\n .join(\"\\n\");\n }\n Header.toString = toString;\n function isHeaders(value) {\n return typeof value.forEach == \"function\";\n }\n function getEntries(headers) {\n const result = [];\n headers.forEach((value, key) => result.push([key, value]));\n return result;\n }\n})(Header || (Header = {}));\n//# sourceMappingURL=Header.js.map","import { Header } from \"./Header\";\nexport var Like;\n(function (Like) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(property => property == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || Header.is(value.header)) &&\n (value.socket == undefined ||\n (typeof value.socket.close == \"function\" &&\n typeof value.socket.json?.send == \"function\" &&\n typeof value.socket.string?.send == \"function\" &&\n typeof value.socket.arrayBuffer?.send == \"function\")) &&\n (value.status != undefined || value.header != undefined || value.body != undefined));\n }\n Like.is = is;\n})(Like || (Like = {}));\n//# sourceMappingURL=Like.js.map","import * as Parser from \"../Parser\";\nimport * as Platform from \"../Platform\";\nimport * as Serializer from \"../Serializer\";\nimport { Socket } from \"../Socket\";\nimport { Header as ResponseHeader } from \"./Header\";\nimport { Like as ResponseLike } from \"./Like\";\nexport var Response;\n(function (Response) {\n function is(value) {\n return (typeof value == \"object\" &&\n Object.keys(value).every(key => [\"status\", \"header\", \"body\", \"socket\"].some(k => k == key)) &&\n (value.status == undefined || typeof value.status == \"number\") &&\n (value.header == undefined || ResponseHeader.is(value.header)) &&\n (value.socket == undefined || value.socket instanceof WebSocket));\n }\n Response.is = is;\n async function to(request) {\n return new Platform.Response(await Serializer.serialize(await request.body, request.header.contentType), {\n status: request.status,\n headers: new Headers(ResponseHeader.to(!request.header.contentType?.startsWith(\"multipart/formdata\")\n ? request.header\n : (({ contentType, ...header }) => header)(request.header))),\n ...(request.socket && {\n webSocket: { ...request.socket.createResponse().socket }?.backend,\n }),\n });\n }\n Response.to = to;\n function from(response) {\n return {\n status: response.status,\n header: ResponseHeader.from(response.headers),\n body: response.status == 101 ? undefined : Parser.parse(response),\n ...(response.webSocket && { socket: new Socket.Factory(response.webSocket) }),\n };\n }\n Response.from = from;\n function create(response, contentType) {\n const result = ResponseLike.is(response)\n ? {\n status: 200,\n header: {},\n body: undefined,\n ...(response.socket && { socket: response.socket }),\n ...response,\n }\n : typeof response?.createResponse == \"function\" && (contentType == undefined || ResponseHeader.is(contentType))\n ? response.createResponse(contentType)\n : {\n status: (typeof response == \"object\" && typeof response.status == \"number\" && response.status) || 200,\n header: typeof response == \"object\"\n ? {\n ...response.header,\n ...((response.status == 301 || response.status == 302) && response.location\n ? { location: response.location }\n : {}),\n }\n : {},\n body: !(typeof response == \"object\" && !Array.isArray(response)) ||\n response instanceof ArrayBuffer ||\n ArrayBuffer.isView(response) ||\n response instanceof FormData\n ? response\n : (({ header, ...body }) => body)(response),\n ...((response.webSocket && { socket: new Socket.Factory(response.webSocket) }) ||\n (response.socket && { socket: response.socket })),\n };\n if (!result.header.contentType)\n switch (typeof result.body) {\n case \"undefined\":\n break;\n default:\n case \"object\":\n result.header.contentType =\n typeof contentType == \"string\"\n ? contentType\n : contentType?.contentType\n ? contentType.contentType\n : result.body instanceof FormData\n ? \"multipart/formdata\"\n : result.body instanceof ArrayBuffer || ArrayBuffer.isView(result.body)\n ? isPdf(result.body)\n ? \"application/pdf\"\n : \"application/octet-stream\"\n : \"application/json; charset=utf-8\";\n break;\n case \"string\":\n result.header.contentType =\n result.body.slice(0, 9).toLowerCase() == \"<!doctype\"\n ? \"text/html; charset=utf-8\"\n : /^[A-Za-z0-9-_=]+\\.[A-Za-z0-9-_=]+\\.?[A-Za-z0-9-_.+/=]*$/.test(result.body)\n ? \"application/jwt; charset=utf-8\"\n : /^<\\?xml version=(.|\\n)*\\?>(.|\\n)*<svg(.|\\n)*<\\/svg>$/.test(result.body)\n ? \"image/svg+xml\"\n : \"text/plain; charset=utf-8\";\n break;\n }\n return result;\n }\n Response.create = create;\n function isPdf(body) {\n const bytes = new Uint8Array(ArrayBuffer.isView(body) ? body.buffer : body).slice(0, 4);\n return [37, 80, 68, 70].every((current, index) => current == bytes[index]);\n }\n Response.Header = ResponseHeader;\n Response.Like = ResponseLike;\n})(Response || (Response = {}));\n//# sourceMappingURL=index.js.map","import { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nexport const fetch = create(globalThis.fetch);\nfetch.create = create;\nfunction create(fetch) {\n return async (request) => {\n const r = Request.create(request);\n return Response.from(await fetch(r.url.toString(), await Request.to(r)));\n };\n}\n//# sourceMappingURL=fetch.js.map","export var FormData;\n(function (FormData) {\n function to(data) {\n const result = new globalThis.FormData();\n result.append(\"*\", new globalThis.Blob([new TextEncoder().encode(JSON.stringify(toHelperObject(data, \"\", result)))], {\n type: \"application/json; charset=utf-8\",\n }));\n return result;\n }\n FormData.to = to;\n function toHelperObject(data, name, form) {\n return Object.entries(data).reduce((result, [key, value]) => {\n value instanceof Blob\n ? form.append(name ? `${name}.${key}` : key, value)\n : typeof value == \"object\" && value\n ? Array.isArray(value)\n ? (result[key] = toHelperArray(value, name ? `${name}.${key}` : key, form))\n : (result[key] = toHelperObject(value, name ? `${name}.${key}` : key, form))\n : (result[key] = value);\n return result;\n }, {});\n }\n function toHelperArray(data, name, form) {\n return data.reduce((result, value) => {\n typeof value == \"object\" && value\n ? Array.isArray(value)\n ? result.push(toHelperArray(value, name, form))\n : result.push(toHelperObject(value, name, form))\n : result.push(value);\n return result;\n }, []);\n }\n async function from(form) {\n const result = {};\n for (const [name, value] of form.entries())\n await set(result, name.split(\".\"), value);\n return result;\n }\n FormData.from = from;\n async function set(data, [head, ...tail], value) {\n if (tail.length == 0)\n value instanceof Blob && value.type.startsWith(\"application/json\")\n ? head == \"*\"\n ? merge(data, JSON.parse(await value.text()))\n : typeof data[head] == \"object\" && data[head]\n ? merge(data[head], JSON.parse(await value.text()))\n : (data[head] = JSON.parse(await value.text()))\n : (data[head] = value);\n else\n set(typeof data[head] == \"object\" && data[head] ? data[head] : (data[head] = {}), tail, value);\n }\n function merge(target, ...sources) {\n if (sources.length) {\n const [head, ...tail] = sources;\n Object.entries(head).forEach(([key, value]) => isObject(value)\n ? merge(isObject(target[key]) ? target[key] : (target[key] = {}), value)\n : (target[key] = head[key]));\n merge(target, ...tail);\n }\n }\n function isObject(value) {\n return value && typeof value == \"object\" && !Array.isArray(value);\n }\n FormData.isObject = isObject;\n})(FormData || (FormData = {}));\n//# sourceMappingURL=FormData.js.map","export function stringify(data) {\n const result = [];\n const map = (key, value) => {\n switch (typeof value) {\n default:\n case \"bigint\":\n case \"boolean\":\n case \"number\":\n case \"string\":\n result.push(`${key}=${encodeURIComponent(value.toString())}`);\n break;\n case \"undefined\":\n break;\n case \"object\":\n for (const property in value)\n if (Object.prototype.hasOwnProperty.call(value, property))\n map(key ? key + `[${property}]` : property, value[property]);\n break;\n }\n };\n map(\"\", data);\n return result.join(\"&\");\n}\nexport function parse(data) {\n const convertArrays = (target) => {\n return typeof target == \"object\" &&\n Object.keys(target)\n .sort()\n .every((k, i) => `${k}` == `${i}`)\n ? Object.entries(target)\n .sort()\n .map(entry => (typeof entry[1] == \"object\" ? convertArrays(entry[1]) : entry[1]))\n : typeof target == \"object\"\n ? Object.fromEntries(Object.entries(target).map(entry => [entry[0], convertArrays(entry[1])]))\n : target;\n };\n const insert = (target, key, value) => {\n target[key[0]] = key.length > 1 ? insert(target[key[0]] ?? {}, key.slice(1), value) : value;\n return target;\n };\n const entries = data\n .split(\"&\")\n .map(d => d.split(\"=\", 2))\n .map(([k, v]) => [\n decodeURIComponent(k)\n .split(\"[\")\n .map(p => p.replace(\"]\", \"\")),\n decodeURIComponent(v.replace(/\\+/g, \" \")),\n ]);\n return entries.reduce((result, [key, value]) => convertArrays(insert(result, key, value)), {});\n}\n//# sourceMappingURL=Search.js.map","import { Client } from \"./Client\";\nimport { fetch } from \"./fetch\";\nimport { FormData } from \"./FormData\";\nimport * as http from \"./http\";\nimport { Method } from \"./Method\";\nimport * as Parser from \"./Parser\";\nimport { Request } from \"./Request\";\nimport { Response } from \"./Response\";\nimport * as Search from \"./Search\";\nimport * as Serializer from \"./Serializer\";\nimport { Socket } from \"./Socket\";\nParser.add(async (request) => await request.text(), \"text/plain\", \"text/html\");\nParser.add(async (request) => await request.json(), \"application/json\");\nParser.add(async (request) => await request.arrayBuffer(), \"application/pdf\");\nParser.add(async (request) => FormData.from(await request.formData()), \"multipart/form-data\");\nParser.add(async (request) => Search.parse(await request.text()), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (typeof body == \"string\" ? body : body.toString()), \"text/plain\", \"text/html\");\nSerializer.add(async (body) => JSON.stringify(body), \"application/json\");\nSerializer.add(async (body) => body, \"application/pdf\");\nSerializer.add(async (body) => Search.stringify(body), \"application/x-www-form-urlencoded\");\nSerializer.add(async (body) => (body instanceof globalThis.FormData ? body : FormData.to(body)), \"multipart/form-data\");\nexport { Client, fetch, FormData, Method, Parser, Request, Response, Search, Serializer, Socket, http };\n//# sourceMappingURL=index.js.map","export interface Clearable {\n\tclear(): Promise<void>\n}\nexport namespace Clearable {\n\texport function is(value: Clearable | any): value is Clearable {\n\t\treturn value && typeof value == \"object\" && typeof value.clear == \"function\"\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Editable extends Editable.Element {\n\tchanged: boolean\n\tvalue?: any\n}\nexport namespace Editable {\n\texport interface Element {\n\t\tedit: Editable.Edit\n\t\treset: Editable.Reset\n\t\treadonly: boolean\n\t\tlisten: Editable.Listen\n\t\tsetInitialValue: () => void\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tedit: isly.function(),\n\t\t\treadonly: isly.boolean(),\n\t\t\tlisten: isly.function<Listen>(),\n\t\t\treset: isly.function<Reset>(),\n\t\t\tsetInitialValue: isly.function(),\n\t\t})\n\t}\n\texport type Listen = (property: \"changed\", listener: (parent: Editable) => Promise<void>) => void\n\texport type Edit = (editable: boolean) => Promise<void>\n\texport type Reset = () => Promise<void>\n\texport const type = Element.type.extend<Editable>({\n\t\tchanged: isly.boolean(),\n\t\tvalue: isly.any().optional(),\n\t})\n}\n","import { isly } from \"isly\"\n\nexport type Looks = typeof Looks.types[number]\n\nexport namespace Looks {\n\texport const types = [\"plain\", \"grid\", \"border\", \"line\", \"transparent\"] as const\n\texport const type = isly.string(types)\n\texport const is = type.is\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Data } from \"../../model\"\nimport { Looks } from \"./Looks\"\n\nexport interface Input extends Input.Element {\n\tsmoothlyInput: EventEmitter<Data>\n\tsmoothlyInputForm?: EventEmitter<Record<string, Data>>\n}\nexport namespace Input {\n\texport interface Element {\n\t\tvalue?: Data[string]\n\t\tcolor?: Color\n\t\tname: string\n\t\tlooks: Looks\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tvalue: isly.union<Required<Element>[\"value\"], Data, Data[string]>(Data.type, Data.valueType).optional(),\n\t\t\tcolor: Color.type.optional(),\n\t\t\tname: isly.string(),\n\t\t\tlooks: Looks.type,\n\t\t})\n\t\texport const is = type.is\n\t}\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Input>({\n\t\tsmoothlyInput: EventEmitter,\n\t\tsmoothlyInputForm: EventEmitter.optional(),\n\t})\n\texport const is = type.is\n}\n","smoothly-form {\n\tdisplay: block;\n\tposition: relative;\n\t--background-color: var(--smoothly-color-shade);\n\t--text-color: var(--smoothly-color-contrast)\n}\nsmoothly-form > form {\n\tposition: relative;\n\tmin-width: 15em;\n}\nsmoothly-form > form > fieldset {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n\tmargin-inline-start: unset;\n\tmargin-inline-end: unset;\n\tpadding-block-start: unset;\n\tpadding-inline-start: unset;\n\tpadding-inline-end: unset;\n\tpadding-block-end: unset;\n\tmin-inline-size: unset;\n\tborder-width: unset;\n\tborder-style: unset;\n\tborder-color: unset;\n\tborder-image: unset;\n}\nsmoothly-form > form > fieldset > * {\n\tflex-grow: 1;\n\tmin-width: 10em;\n\tflex-basis: 40%;\n}\nsmoothly-form[looks=\"grid\"] > form > fieldset {\n\tborder: rgba(var(--text-color), .5) solid .5px;\n}\nsmoothly-form[looks=\"line\"] > form > fieldset,\nsmoothly-form[looks=\"border\"] > form > fieldset,\nsmoothly-form[looks=\"transparent\"] > form > fieldset {\n\tgap: 2em\n}\n\nsmoothly-form > form > div {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: 1em;\n\tmargin-top: 0.5rem;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Method, Prop, Watch } from \"@stencil/core\"\nimport { http } from \"cloudly-http\"\nimport { Color, Data, Notice } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Editable } from \"../input/Editable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-form\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyForm implements Clearable, Submittable, Editable {\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) value: Readonly<Data> = {}\n\t@Prop() type: \"update\" | \"change\" | \"fetch\" | \"create\" = \"create\"\n\t@Prop({ mutable: true }) readonly = false\n\t@Prop({ reflect: true, attribute: \"looks\" }) looks: Looks = \"plain\"\n\t@Prop() name?: string\n\t@Prop() action?: string\n\t@Prop({ mutable: true }) processing: boolean\n\t@Prop() prevent = true\n\t@Prop({ mutable: true }) changed = false\n\t@Event() smoothlyFormInput: EventEmitter<Data>\n\t@Event() smoothlyFormSubmit: EventEmitter<{ value: Data; type: \"update\" | \"change\" | \"fetch\" | \"create\" | \"remove\" }>\n\t@Event() notice: EventEmitter<Notice>\n\tprivate inputs = new Map<string, Input.Element>()\n\tprivate readonlyAtLoad = this.readonly\n\tprivate listeners: {\n\t\tchanged?: ((parent: Editable) => Promise<void>)[]\n\t} = {}\n\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\t;(this.listeners[property] ??= []).push(listener)\n\t\tlistener(this)\n\t}\n\t@Watch(\"value\")\n\twatchValue() {\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\t@Watch(\"readonly\")\n\twatchReadonly() {\n\t\tthis.listeners.changed?.forEach(l => l(this))\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks, color: Color | undefined) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.looks, this.color)\n\t}\n\t@Listen(\"smoothlyInput\")\n\tasync smoothlyInputHandler(event: CustomEvent<Record<string, any>>): Promise<void> {\n\t\tthis.smoothlyFormInput.emit((this.value = Data.merge(this.value, event.detail)))\n\t}\n\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyForm) => void>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this)\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tthis.value = Data.merge(this.value, { [event.target.name]: event.target.value })\n\t\t\tthis.inputs.set(event.target.name, event.target)\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormDisable\")\n\tasync smoothlyFormDisableHandler(event: CustomEvent): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.readonly)\n\t}\n\t@Method()\n\tasync submit(remove?: boolean): Promise<void> {\n\t\tthis.smoothlyFormSubmit.emit({ value: this.value, type: remove == true ? \"remove\" : this.type })\n\t\tif (this.action) {\n\t\t\tthis.processing = true\n\t\t\tconst action = this.action\n\t\t\tthis.notice?.emit(\n\t\t\t\tNotice.execute(\"Submitting form\", async () => {\n\t\t\t\t\tconst response = await http\n\t\t\t\t\t\t.fetch(\n\t\t\t\t\t\t\thttp.Request.create(\n\t\t\t\t\t\t\t\tremove == true\n\t\t\t\t\t\t\t\t\t? { method: \"DELETE\", url: action, header: { contentType: \"application/json\" }, body: this.value }\n\t\t\t\t\t\t\t\t\t: this.type == \"fetch\"\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t\t\t\t\turl: `${action}?${http.Search.stringify(this.value)}`,\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\tmethod: this.type == \"change\" ? \"PUT\" : this.type == \"update\" ? \"PATCH\" : \"POST\",\n\t\t\t\t\t\t\t\t\t\t\turl: action,\n\t\t\t\t\t\t\t\t\t\t\theader: { contentType: \"application/json\" },\n\t\t\t\t\t\t\t\t\t\t\tbody: this.value,\n\t\t\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\tlet result: [boolean, string]\n\t\t\t\t\tif (!response || response?.status < 200 || response.status >= 300)\n\t\t\t\t\t\tresult = [false, \"Failed to submit form.\"]\n\t\t\t\t\telse {\n\t\t\t\t\t\tresult = [true, \"Form successfully submitted.\"]\n\t\t\t\t\t\tthis.type == \"create\" && (await this.clear())\n\t\t\t\t\t\tthis.setInitialValue()\n\t\t\t\t\t\tthis.readonlyAtLoad && this.edit(!this.readonlyAtLoad)\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.processing = false\n\t\t\t\t\treturn result\n\t\t\t\t})\n\t\t\t)\n\t\t}\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tClearable.is(input) && input.clear()\n\t\t})\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.edit(editable)\n\t\t})\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.reset()\n\t\t})\n\t\tthis.changed = [...this.inputs.values()].some(input => (Editable.type.is(input) ? input.changed : true))\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.inputs.forEach(input => {\n\t\t\tEditable.Element.type.is(input) && input.setInitialValue()\n\t\t})\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-spinner active={this.processing}></smoothly-spinner>\n\t\t\t\t<form onSubmit={!this.prevent ? undefined : e => e.preventDefault()} name={this.name}>\n\t\t\t\t\t<fieldset>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</fieldset>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"edit\" />\n\t\t\t\t\t\t<slot name=\"reset\" />\n\t\t\t\t\t\t<slot name=\"clear\" />\n\t\t\t\t\t\t<slot name=\"submit\" />\n\t\t\t\t\t</div>\n\t\t\t\t</form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 100%;\n\theight: 100%;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > iframe {\n\tborder: none;\n\tpadding: none;\n\tmargin: none;\n}\n","import { Component, Element, Event, EventEmitter, Method, Prop } from \"@stencil/core\"\nimport { Message, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-frame\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFrame {\n\t@Prop() url: string\n\t@Prop() name: string\n\t@Event() trigger: EventEmitter<Trigger>\n\t@Event() message2: EventEmitter<Message<any>>\n\t@Element() element?: HTMLElement\n\tget contentWindow(): Window | undefined {\n\t\tconst iframe =\n\t\t\tthis.element && this.element.firstElementChild ? (this.element.firstElementChild as HTMLIFrameElement) : undefined\n\t\treturn (iframe && iframe.contentWindow) || undefined\n\t}\n\t@Prop()\n\torigin: string | undefined\n\n\tget defaultOrigin(): string {\n\t\tconst match = this.url.match(/^(([a-z]+\\+)*[a-z]+:\\/\\/)?[^/^\\n]+/)\n\t\treturn match ? match[0] : \"*\"\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.contentWindow)\n\t\t\tMessage.listen(\n\t\t\t\tthis.origin ?? this.defaultOrigin,\n\t\t\t\t(destination: string, content: any) => {\n\t\t\t\t\tif (destination == this.name)\n\t\t\t\t\t\tif (Trigger.is(content))\n\t\t\t\t\t\t\tthis.trigger.emit(content)\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tthis.message2.emit({ destination, content })\n\t\t\t\t},\n\t\t\t\twindow\n\t\t\t)\n\t}\n\tsend(message2: Message<any>): void\n\tsend(destination: string, content: Trigger | any): void\n\t@Method()\n\tasync send(message2: string | Message<any>, content?: Trigger | any): Promise<void> {\n\t\tif (typeof message2 == \"string\")\n\t\t\tMessage.send((this.origin ?? this.defaultOrigin) + \"#\" + message2, content, this.contentWindow)\n\t\telse if (Message.is(message2) && this.contentWindow)\n\t\t\tMessage.send(\n\t\t\t\t{\n\t\t\t\t\tdestination: (this.origin ?? this.defaultOrigin) + \"#\" + message2.destination,\n\t\t\t\t\tcontent: message2.destination,\n\t\t\t\t},\n\t\t\t\tthis.contentWindow\n\t\t\t)\n\t}\n\n\trender() {\n\t\treturn []\n\t}\n}\n",":host[size] {\n\tbackground: none;\n}\n:host {\n\tdisplay: block;\n}\n:host[rotate] {\n\t--rotate: rotate(var(--rotation, 0deg));\n\ttransform: var(--rotate);\n}\n:host[flip=x] {\n\t--flip: scaleX(-1);\n\ttransform: var(--flip);\n}\n:host[flip=y] {\n\t--flip: scaleY(-1);\n\ttransform: var(--flip);\n}\n:host[rotate][flip] {\n\ttransform:var(--rotate)var(--flip);\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[size=tiny] {\n\twidth: 1.2em;\n\theight: 1.2em;\n}\n:host[size=small] {\n\twidth: 1.4em;\n\theight: 1.4em;\n}\n:host[size=medium] {\n\twidth: 1.8em;\n\theight: 1.8em;\n}\n:host[size=large] {\n\twidth: 2.8em;\n\theight: 2.8em;\n}\n:host[size=xlarge] {\n\twidth: 4em;\n\theight: 4em;\n}\n","import { Component, h, Host, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-icon\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIcon {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) fill: Fill = \"solid\"\n\t@Prop({ reflect: true }) name: Icon | \"empty\" = \"empty\"\n\t@Prop({ reflect: true }) size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"medium\"\n\t@Prop({ reflect: true }) rotate?: number\n\t@Prop({ reflect: true }) flip?: \"x\" | \"y\"\n\t@Prop() toolTip?: string\n\t@State() document?: string\n\t@Watch(\"name\")\n\tasync componentWillLoad() {\n\t\tlet result: string | undefined\n\t\tif (this.name != \"empty\") {\n\t\t\tresult = await Icon.load(this.name)\n\t\t\tresult = result\n\t\t\t\t?.replace(/(?<=^<svg\\s?)/, `$& role=\"img\"`)\n\t\t\t\t.replace(` width=\"512\" height=\"512\"`, \"\")\n\t\t\t\t.replace(/stroke:#000;/gi, \"\")\n\t\t\tif (!this.toolTip)\n\t\t\t\tresult = result?.replace(/<title>.*<\\/title>/, \"\")\n\t\t\telse if (result?.includes(\"<title>\"))\n\t\t\t\tresult = result.replace(/(<title>).*(<\\/title>)/, `<title>${this.toolTip}</title>`)\n\t\t\telse\n\t\t\t\tresult = result?.replace(/(.*>)(<\\/svg>$)/, `$1<title>${this.toolTip}</title>$2`)\n\t\t}\n\t\tthis.document =\n\t\t\tresult ??\n\t\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t<title>Empty</title>\n\t\t</svg>`\n\t}\n\trender() {\n\t\treturn <Host innerHTML={this.document} style={{ [\"--rotation\"]: `${this.rotate ?? 0}deg` }} />\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n}\n:host > div > * {\n\tmargin: 0.5cm;\n}\n","import { Component, h } from \"@stencil/core\"\nimport { Icon } from \"../../model\"\n@Component({\n\ttag: \"smoothly-icon-demo\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIconDemo {\n\tpage = 0\n\trender() {\n\t\treturn [\n\t\t\t<h1>Icons</h1>,\n\t\t\t<div>\n\t\t\t\t{[\n\t\t\t\t\t\"add-circle\",\n\t\t\t\t\t\"add\",\n\t\t\t\t\t\"airplane\",\n\t\t\t\t\t\"alarm\",\n\t\t\t\t\t\"albums\",\n\t\t\t\t\t\"alert-circle\",\n\t\t\t\t\t\"alert\",\n\t\t\t\t\t\"american-football\",\n\t\t\t\t\t\"analytics\",\n\t\t\t\t\t\"aperture\",\n\t\t\t\t\t\"apps\",\n\t\t\t\t\t\"archive\",\n\t\t\t\t\t\"arrow-back-circle\",\n\t\t\t\t\t\"arrow-back\",\n\t\t\t\t\t\"arrow-down-circle\",\n\t\t\t\t\t\"arrow-down\",\n\t\t\t\t\t\"arrow-forward-circle\",\n\t\t\t\t\t\"arrow-forward\",\n\t\t\t\t\t\"arrow-redo-circle\",\n\t\t\t\t\t\"arrow-redo\",\n\t\t\t\t\t\"arrow-undo-circle\",\n\t\t\t\t\t\"arrow-undo\",\n\t\t\t\t\t\"arrow-up-circle\",\n\t\t\t\t\t\"arrow-up\",\n\t\t\t\t\t\"at-circle\",\n\t\t\t\t\t\"at\",\n\t\t\t\t\t\"attach\",\n\t\t\t\t\t\"backspace\",\n\t\t\t\t\t\"bandage\",\n\t\t\t\t\t\"barbell\",\n\t\t\t\t\t\"bar-chart\",\n\t\t\t\t\t\"barcode\",\n\t\t\t\t\t\"baseball\",\n\t\t\t\t\t\"basketball\",\n\t\t\t\t\t\"basket\",\n\t\t\t\t\t\"battery-charging\",\n\t\t\t\t\t\"battery-dead\",\n\t\t\t\t\t\"battery-full\",\n\t\t\t\t\t\"battery-half\",\n\t\t\t\t\t\"beaker\",\n\t\t\t\t\t\"bed\",\n\t\t\t\t\t\"beer\",\n\t\t\t\t\t\"bicycle\",\n\t\t\t\t\t\"bluetooth\",\n\t\t\t\t\t\"boat\",\n\t\t\t\t\t\"body\",\n\t\t\t\t\t\"bonfire\",\n\t\t\t\t\t\"bookmarks\",\n\t\t\t\t\t\"bookmark\",\n\t\t\t\t\t\"book\",\n\t\t\t\t\t\"briefcase\",\n\t\t\t\t\t\"browsers\",\n\t\t\t\t\t\"brush\",\n\t\t\t\t\t\"bug\",\n\t\t\t\t\t\"build\",\n\t\t\t\t\t\"bulb\",\n\t\t\t\t\t\"business\",\n\t\t\t\t\t\"bus\",\n\t\t\t\t\t\"cafe\",\n\t\t\t\t\t\"calculator\",\n\t\t\t\t\t\"calendar\",\n\t\t\t\t\t\"call\",\n\t\t\t\t\t\"camera-reverse\",\n\t\t\t\t\t\"camera\",\n\t\t\t\t\t\"card\",\n\t\t\t\t\t\"caret-back-circle\",\n\t\t\t\t\t\"caret-back\",\n\t\t\t\t\t\"caret-down-circle\",\n\t\t\t\t\t\"caret-down\",\n\t\t\t\t\t\"caret-forward-circle\",\n\t\t\t\t\t\"caret-forward\",\n\t\t\t\t\t\"caret-up-circle\",\n\t\t\t\t\t\"caret-up\",\n\t\t\t\t\t\"car-sport\",\n\t\t\t\t\t\"car\",\n\t\t\t\t\t\"cart\",\n\t\t\t\t\t\"cash\",\n\t\t\t\t\t\"cellular\",\n\t\t\t\t\t\"chatbox-ellipses\",\n\t\t\t\t\t\"chatbox\",\n\t\t\t\t\t\"chatbubble-ellipses\",\n\t\t\t\t\t\"chatbubbles\",\n\t\t\t\t\t\"chatbubble\",\n\t\t\t\t\t\"checkbox\",\n\t\t\t\t\t\"checkmark-circle\",\n\t\t\t\t\t\"checkmark-done-circle\",\n\t\t\t\t\t\"checkmark-done\",\n\t\t\t\t\t\"checkmark\",\n\t\t\t\t\t\"chevron-back-circle\",\n\t\t\t\t\t\"chevron-back\",\n\t\t\t\t\t\"chevron-down-circle\",\n\t\t\t\t\t\"chevron-down\",\n\t\t\t\t\t\"chevron-forward-circle\",\n\t\t\t\t\t\"chevron-forward\",\n\t\t\t\t\t\"chevron-up-circle\",\n\t\t\t\t\t\"chevron-up\",\n\t\t\t\t\t\"clipboard\",\n\t\t\t\t\t\"close-circle\",\n\t\t\t\t\t\"close\",\n\t\t\t\t\t\"cloud-circle\",\n\t\t\t\t\t\"cloud-done\",\n\t\t\t\t\t\"cloud-download\",\n\t\t\t\t\t\"cloud-offline\",\n\t\t\t\t\t\"cloud\",\n\t\t\t\t\t\"cloud-upload\",\n\t\t\t\t\t\"cloudy-night\",\n\t\t\t\t\t\"cloudy\",\n\t\t\t\t\t\"code-download\",\n\t\t\t\t\t\"code-slash\",\n\t\t\t\t\t\"code\",\n\t\t\t\t\t\"code-working\",\n\t\t\t\t\t\"cog\",\n\t\t\t\t\t\"color-fill\",\n\t\t\t\t\t\"color-filter\",\n\t\t\t\t\t\"color-palette\",\n\t\t\t\t\t\"color-wand\",\n\t\t\t\t\t\"compass\",\n\t\t\t\t\t\"construct\",\n\t\t\t\t\t\"contract\",\n\t\t\t\t\t\"contrast\",\n\t\t\t\t\t\"copy\",\n\t\t\t\t\t\"create\",\n\t\t\t\t\t\"crop\",\n\t\t\t\t\t\"cube\",\n\t\t\t\t\t\"cut\",\n\t\t\t\t\t\"desktop\",\n\t\t\t\t\t\"disc\",\n\t\t\t\t\t\"document-attach\",\n\t\t\t\t\t\"documents\",\n\t\t\t\t\t\"document\",\n\t\t\t\t\t\"document-text\",\n\t\t\t\t\t\"download\",\n\t\t\t\t\t\"duplicate\",\n\t\t\t\t\t\"ear\",\n\t\t\t\t\t\"earth\",\n\t\t\t\t\t\"easel\",\n\t\t\t\t\t\"egg\",\n\t\t\t\t\t\"ellipse\",\n\t\t\t\t\t\"ellipsis-horizontal-circle\",\n\t\t\t\t\t\"ellipsis-horizontal\",\n\t\t\t\t\t\"ellipsis-vertical-circle\",\n\t\t\t\t\t\"ellipsis-vertical\",\n\t\t\t\t\t\"enter\",\n\t\t\t\t\t\"exit\",\n\t\t\t\t\t\"expand\",\n\t\t\t\t\t\"eyedrop\",\n\t\t\t\t\t\"eye-off\",\n\t\t\t\t\t\"eye\",\n\t\t\t\t\t\"fast-food\",\n\t\t\t\t\t\"female\",\n\t\t\t\t\t\"file-tray-full\",\n\t\t\t\t\t\"file-tray-stacked\",\n\t\t\t\t\t\"file-tray\",\n\t\t\t\t\t\"film\",\n\t\t\t\t\t\"filter\",\n\t\t\t\t\t\"finger-print\",\n\t\t\t\t\t\"fitness\",\n\t\t\t\t\t\"flag\",\n\t\t\t\t\t\"flame\",\n\t\t\t\t\t\"flashlight\",\n\t\t\t\t\t\"flash-off\",\n\t\t\t\t\t\"flash\",\n\t\t\t\t\t\"flask\",\n\t\t\t\t\t\"flower\",\n\t\t\t\t\t\"folder-open\",\n\t\t\t\t\t\"folder\",\n\t\t\t\t\t\"football\",\n\t\t\t\t\t\"funnel\",\n\t\t\t\t\t\"game-controller\",\n\t\t\t\t\t\"gift\",\n\t\t\t\t\t\"git-branch\",\n\t\t\t\t\t\"git-commit\",\n\t\t\t\t\t\"git-compare\",\n\t\t\t\t\t\"git-merge\",\n\t\t\t\t\t\"git-network\",\n\t\t\t\t\t\"git-pull-request\",\n\t\t\t\t\t\"glasses\",\n\t\t\t\t\t\"globe\",\n\t\t\t\t\t\"golf\",\n\t\t\t\t\t\"grid\",\n\t\t\t\t\t\"hammer\",\n\t\t\t\t\t\"hand-left\",\n\t\t\t\t\t\"hand-right\",\n\t\t\t\t\t\"happy\",\n\t\t\t\t\t\"hardware-chip\",\n\t\t\t\t\t\"headset\",\n\t\t\t\t\t\"heart-circle\",\n\t\t\t\t\t\"heart-dislike-circle\",\n\t\t\t\t\t\"heart-dislike\",\n\t\t\t\t\t\"heart-half\",\n\t\t\t\t\t\"heart\",\n\t\t\t\t\t\"help-buoy\",\n\t\t\t\t\t\"help-circle\",\n\t\t\t\t\t\"help\",\n\t\t\t\t\t\"home\",\n\t\t\t\t\t\"hourglass\",\n\t\t\t\t\t\"ice-cream\",\n\t\t\t\t\t\"images\",\n\t\t\t\t\t\"image\",\n\t\t\t\t\t\"infinite\",\n\t\t\t\t\t\"information-circle\",\n\t\t\t\t\t\"information\",\n\t\t\t\t\t\"journal\",\n\t\t\t\t\t\"keypad\",\n\t\t\t\t\t\"key\",\n\t\t\t\t\t\"language\",\n\t\t\t\t\t\"laptop\",\n\t\t\t\t\t\"layers\",\n\t\t\t\t\t\"leaf\",\n\t\t\t\t\t\"library\",\n\t\t\t\t\t\"link\",\n\t\t\t\t\t\"list-circle\",\n\t\t\t\t\t\"list\",\n\t\t\t\t\t\"locate\",\n\t\t\t\t\t\"location\",\n\t\t\t\t\t\"lock-closed\",\n\t\t\t\t\t\"lock-open\",\n\t\t\t\t\t\"log-in\",\n\t\t\t\t\t\"logo-amazon\",\n\t\t\t\t\t\"logo-amplify\",\n\t\t\t\t\t\"logo-android\",\n\t\t\t\t\t\"logo-angular\",\n\t\t\t\t\t\"logo-apple-appstore\",\n\t\t\t\t\t\"logo-apple\",\n\t\t\t\t\t\"logo-behance\",\n\t\t\t\t\t\"logo-bitbucket\",\n\t\t\t\t\t\"logo-bitcoin\",\n\t\t\t\t\t\"logo-buffer\",\n\t\t\t\t\t\"logo-capacitor\",\n\t\t\t\t\t\"logo-chrome\",\n\t\t\t\t\t\"logo-closed-captioning\",\n\t\t\t\t\t\"logo-codepen\",\n\t\t\t\t\t\"logo-css3\",\n\t\t\t\t\t\"logo-designernews\",\n\t\t\t\t\t\"logo-docker\",\n\t\t\t\t\t\"logo-dribbble\",\n\t\t\t\t\t\"logo-dropbox\",\n\t\t\t\t\t\"logo-edge\",\n\t\t\t\t\t\"logo-electron\",\n\t\t\t\t\t\"logo-euro\",\n\t\t\t\t\t\"logo-facebook\",\n\t\t\t\t\t\"logo-firebase\",\n\t\t\t\t\t\"logo-firefox\",\n\t\t\t\t\t\"logo-flickr\",\n\t\t\t\t\t\"logo-foursquare\",\n\t\t\t\t\t\"logo-github\",\n\t\t\t\t\t\"logo-gitlab\",\n\t\t\t\t\t\"logo-google-playstore\",\n\t\t\t\t\t\"logo-google\",\n\t\t\t\t\t\"logo-hackernews\",\n\t\t\t\t\t\"logo-html5\",\n\t\t\t\t\t\"logo-instagram\",\n\t\t\t\t\t\"logo-ionic\",\n\t\t\t\t\t\"logo-ionitron\",\n\t\t\t\t\t\"logo-javascript\",\n\t\t\t\t\t\"logo-laravel\",\n\t\t\t\t\t\"logo-linkedin\",\n\t\t\t\t\t\"logo-markdown\",\n\t\t\t\t\t\"logo-medium\",\n\t\t\t\t\t\"logo-nodejs\",\n\t\t\t\t\t\"logo-no-smoking\",\n\t\t\t\t\t\"logo-npm\",\n\t\t\t\t\t\"logo-octocat\",\n\t\t\t\t\t\"logo-paypal\",\n\t\t\t\t\t\"logo-pinterest\",\n\t\t\t\t\t\"logo-playstation\",\n\t\t\t\t\t\"logo-pwa\",\n\t\t\t\t\t\"logo-python\",\n\t\t\t\t\t\"logo-react\",\n\t\t\t\t\t\"logo-reddit\",\n\t\t\t\t\t\"logo-rss\",\n\t\t\t\t\t\"logo-sass\",\n\t\t\t\t\t\"logo-skype\",\n\t\t\t\t\t\"logo-slack\",\n\t\t\t\t\t\"logo-snapchat\",\n\t\t\t\t\t\"logo-soundcloud\",\n\t\t\t\t\t\"logo-stackoverflow\",\n\t\t\t\t\t\"logo-steam\",\n\t\t\t\t\t\"logo-stencil\",\n\t\t\t\t\t\"logo-tiktok\",\n\t\t\t\t\t\"logo-tumblr\",\n\t\t\t\t\t\"logo-tux\",\n\t\t\t\t\t\"logo-twitch\",\n\t\t\t\t\t\"logo-twitter\",\n\t\t\t\t\t\"logo-usd\",\n\t\t\t\t\t\"log-out\",\n\t\t\t\t\t\"logo-web-component\",\n\t\t\t\t\t\"logo-venmo\",\n\t\t\t\t\t\"logo-whatsapp\",\n\t\t\t\t\t\"logo-vimeo\",\n\t\t\t\t\t\"logo-windows\",\n\t\t\t\t\t\"logo-vk\",\n\t\t\t\t\t\"logo-wordpress\",\n\t\t\t\t\t\"logo-vue\",\n\t\t\t\t\t\"logo-xbox\",\n\t\t\t\t\t\"logo-xing\",\n\t\t\t\t\t\"logo-yahoo\",\n\t\t\t\t\t\"logo-yen\",\n\t\t\t\t\t\"logo-youtube\",\n\t\t\t\t\t\"magnet\",\n\t\t\t\t\t\"mail-open\",\n\t\t\t\t\t\"mail\",\n\t\t\t\t\t\"mail-unread\",\n\t\t\t\t\t\"male-female\",\n\t\t\t\t\t\"male\",\n\t\t\t\t\t\"man\",\n\t\t\t\t\t\"map\",\n\t\t\t\t\t\"medal\",\n\t\t\t\t\t\"medical\",\n\t\t\t\t\t\"medkit\",\n\t\t\t\t\t\"megaphone\",\n\t\t\t\t\t\"menu\",\n\t\t\t\t\t\"mic-circle\",\n\t\t\t\t\t\"mic-off-circle\",\n\t\t\t\t\t\"mic-off\",\n\t\t\t\t\t\"mic\",\n\t\t\t\t\t\"moon\",\n\t\t\t\t\t\"move\",\n\t\t\t\t\t\"musical-notes\",\n\t\t\t\t\t\"musical-note\",\n\t\t\t\t\t\"navigate-circle\",\n\t\t\t\t\t\"navigate\",\n\t\t\t\t\t\"newspaper\",\n\t\t\t\t\t\"notifications-circle\",\n\t\t\t\t\t\"notifications-off-circle\",\n\t\t\t\t\t\"notifications-off\",\n\t\t\t\t\t\"notifications\",\n\t\t\t\t\t\"nuclear\",\n\t\t\t\t\t\"nutrition\",\n\t\t\t\t\t\"open\",\n\t\t\t\t\t\"options\",\n\t\t\t\t\t\"paper-plane\",\n\t\t\t\t\t\"partly-sunny\",\n\t\t\t\t\t\"pause-circle\",\n\t\t\t\t\t\"pause\",\n\t\t\t\t\t\"paw\",\n\t\t\t\t\t\"pencil\",\n\t\t\t\t\t\"people-circle\",\n\t\t\t\t\t\"people\",\n\t\t\t\t\t\"person-add\",\n\t\t\t\t\t\"person-circle\",\n\t\t\t\t\t\"person-remove\",\n\t\t\t\t\t\"person\",\n\t\t\t\t\t\"phone-landscape\",\n\t\t\t\t\t\"phone-portrait\",\n\t\t\t\t\t\"pie-chart\",\n\t\t\t\t\t\"pin\",\n\t\t\t\t\t\"pint\",\n\t\t\t\t\t\"pizza\",\n\t\t\t\t\t\"planet\",\n\t\t\t\t\t\"play-back-circle\",\n\t\t\t\t\t\"play-back\",\n\t\t\t\t\t\"play-circle\",\n\t\t\t\t\t\"play-forward-circle\",\n\t\t\t\t\t\"play-forward\",\n\t\t\t\t\t\"play-skip-back-circle\",\n\t\t\t\t\t\"play-skip-back\",\n\t\t\t\t\t\"play-skip-forward-circle\",\n\t\t\t\t\t\"play-skip-forward\",\n\t\t\t\t\t\"play\",\n\t\t\t\t\t\"podium\",\n\t\t\t\t\t\"power\",\n\t\t\t\t\t\"pricetags\",\n\t\t\t\t\t\"pricetag\",\n\t\t\t\t\t\"print\",\n\t\t\t\t\t\"pulse\",\n\t\t\t\t\t\"push\",\n\t\t\t\t\t\"qr-code\",\n\t\t\t\t\t\"radio-button-off\",\n\t\t\t\t\t\"radio-button-on\",\n\t\t\t\t\t\"radio\",\n\t\t\t\t\t\"rainy\",\n\t\t\t\t\t\"reader\",\n\t\t\t\t\t\"receipt\",\n\t\t\t\t\t\"recording\",\n\t\t\t\t\t\"refresh-circle\",\n\t\t\t\t\t\"refresh\",\n\t\t\t\t\t\"reload-circle\",\n\t\t\t\t\t\"reload\",\n\t\t\t\t\t\"remove-circle\",\n\t\t\t\t\t\"remove\",\n\t\t\t\t\t\"reorder-four\",\n\t\t\t\t\t\"reorder-three\",\n\t\t\t\t\t\"reorder-two\",\n\t\t\t\t\t\"repeat\",\n\t\t\t\t\t\"resize\",\n\t\t\t\t\t\"restaurant\",\n\t\t\t\t\t\"return-down-back\",\n\t\t\t\t\t\"return-down-forward\",\n\t\t\t\t\t\"return-up-back\",\n\t\t\t\t\t\"return-up-forward\",\n\t\t\t\t\t\"ribbon\",\n\t\t\t\t\t\"rocket\",\n\t\t\t\t\t\"rose\",\n\t\t\t\t\t\"sad\",\n\t\t\t\t\t\"save\",\n\t\t\t\t\t\"scan-circle\",\n\t\t\t\t\t\"scan\",\n\t\t\t\t\t\"school\",\n\t\t\t\t\t\"search-circle\",\n\t\t\t\t\t\"search\",\n\t\t\t\t\t\"send\",\n\t\t\t\t\t\"server\",\n\t\t\t\t\t\"settings\",\n\t\t\t\t\t\"shapes\",\n\t\t\t\t\t\"share-social\",\n\t\t\t\t\t\"share\",\n\t\t\t\t\t\"shield-checkmark\",\n\t\t\t\t\t\"shield\",\n\t\t\t\t\t\"shirt\",\n\t\t\t\t\t\"shuffle\",\n\t\t\t\t\t\"skull\",\n\t\t\t\t\t\"snow\",\n\t\t\t\t\t\"speedometer\",\n\t\t\t\t\t\"square\",\n\t\t\t\t\t\"star-half\",\n\t\t\t\t\t\"star\",\n\t\t\t\t\t\"stats-chart\",\n\t\t\t\t\t\"stop-circle\",\n\t\t\t\t\t\"stop\",\n\t\t\t\t\t\"stopwatch\",\n\t\t\t\t\t\"subway\",\n\t\t\t\t\t\"sunny\",\n\t\t\t\t\t\"swap-horizontal\",\n\t\t\t\t\t\"swap-vertical\",\n\t\t\t\t\t\"sync-circle\",\n\t\t\t\t\t\"sync\",\n\t\t\t\t\t\"tablet-landscape\",\n\t\t\t\t\t\"tablet-portrait\",\n\t\t\t\t\t\"tennisball\",\n\t\t\t\t\t\"terminal\",\n\t\t\t\t\t\"text\",\n\t\t\t\t\t\"thermometer\",\n\t\t\t\t\t\"thumbs-down\",\n\t\t\t\t\t\"thumbs-up\",\n\t\t\t\t\t\"thunderstorm\",\n\t\t\t\t\t\"timer\",\n\t\t\t\t\t\"time\",\n\t\t\t\t\t\"today\",\n\t\t\t\t\t\"toggle\",\n\t\t\t\t\t\"trail-sign\",\n\t\t\t\t\t\"train\",\n\t\t\t\t\t\"transgender\",\n\t\t\t\t\t\"trash-bin\",\n\t\t\t\t\t\"trash\",\n\t\t\t\t\t\"trending-down\",\n\t\t\t\t\t\"trending-up\",\n\t\t\t\t\t\"triangle\",\n\t\t\t\t\t\"trophy\",\n\t\t\t\t\t\"tv\",\n\t\t\t\t\t\"umbrella\",\n\t\t\t\t\t\"walk\",\n\t\t\t\t\t\"wallet\",\n\t\t\t\t\t\"warning\",\n\t\t\t\t\t\"watch\",\n\t\t\t\t\t\"water\",\n\t\t\t\t\t\"videocam\",\n\t\t\t\t\t\"wifi\",\n\t\t\t\t\t\"wine\",\n\t\t\t\t\t\"volume-high\",\n\t\t\t\t\t\"volume-low\",\n\t\t\t\t\t\"volume-medium\",\n\t\t\t\t\t\"volume-mute\",\n\t\t\t\t\t\"volume-off\",\n\t\t\t\t\t\"woman\",\n\t\t\t\t]\n\t\t\t\t\t.slice(this.page * 100, 100)\n\t\t\t\t\t.map(name => (\n\t\t\t\t\t\t<smoothly-icon name={name as Icon} toolTip={name}></smoothly-icon>\n\t\t\t\t\t))}\n\t\t\t</div>,\n\t\t\t<h3>Icon transforms</h3>,\n\t\t\t<div>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Normal\"}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Flipped horizontally\"} flip=\"x\"></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Flipped vertically\"} flip=\"y\"></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"bicycle\"} toolTip={\"Rotated 180deg\"} rotate={180}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated 60deg\"} rotate={60}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated 213deg\"} rotate={213}></smoothly-icon>\n\t\t\t\t<smoothly-icon name={\"wine\"} toolTip={\"Rotated -60deg\"} rotate={-60}></smoothly-icon>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"musical-notes\"}\n\t\t\t\t\ttoolTip={\"Flipped horizontally and rotated 45deg\"}\n\t\t\t\t\trotate={45}\n\t\t\t\t\tflip=\"x\"></smoothly-icon>\n\t\t\t</div>,\n\t\t]\n\t}\n}\n","@import \"./shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tfont-weight: var(--smoothly-font-weight);\n\tpadding: 0 0.4em;\n\toverflow: hidden;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > div:nth-child(2) {\n\tmargin-left: 0.2em;\n}\n:host > div {\n\tposition: relative;\n\twidth: 100%;\n\theight: 100%;\n}\nlabel {\n\tposition: absolute;\n\tleft: 0;\n\ttop: 0.6em;\n\topacity: 0.8;\n\tuser-select: none;\n\tcursor: inherit;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n:host:not([show-label]) label {\n\tdisplay: none;\n}\n:host:not([show-label]) input {\n\tpadding: 0.7em 0.3em 0.7em 0.4em;\n}\ninput {\n\tpadding: 1.2em 0.3em 0.2em 0.4em;\n\tbox-sizing: border-box;\n\twidth: 100%;\n\theight: 100%;\n\tborder: 0;\n\tz-index: 1;\n\tposition: relative;\n\tfont-size: 1rem;\n\tfont-family: var(--smoothly-font-family);\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\nsmoothly-icon {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0.2em;\n\ttop: 0.6em;\n}\n\ninput:invalid + label + smoothly-icon {\n\tdisplay: block;\n}\n:host > div > label {\n\tz-index: 1;\n\tpointer-events: none;\n}\n:host:not([readonly]):not(.has-value)[placeholder] > div > label,\n:host.has-value > div > label,\n:host:not([readonly]):not(.has-value):focus-within > div > label {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\ninput:focus {\n\toutline: none;\n}\ninput:-webkit-autofill,\ninput:-webkit-autofill:hover,\ninput:-webkit-autofill:focus,\ninput:-webkit-autofill:active {\n\tbox-shadow: 0 0 0 40em rgb(var(--background-color, var(--smoothly-color-shade))) inset;\n\t-webkit-box-shadow: 0 0 0 40em rgb(var(--background-color, var(--smoothly-color-shade))) inset;\n}\ninput:-webkit-autofill,\ninput:-webkit-autofill + label {\n\t-webkit-text-fill-color: rgb(var(--text-color, var(--smoothly-color-contrast)));\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Color } from \"../../model\"\nimport { Clearable } from \"./Clearable\"\nimport { Editable } from \"./Editable\"\nimport { Input } from \"./Input\"\nimport { Looks } from \"./Looks\"\n\n@Component({\n\ttag: \"smoothly-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInput implements Clearable, Input, Editable {\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop() delay = 0\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ reflect: true }) type: tidily.Type = \"text\"\n\t@Prop({ reflect: true }) required = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() autocomplete = true\n\t@Prop({ reflect: true }) placeholder: string | undefined\n\t@Prop() disabled = false\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop({ reflect: true }) currency?: isoly.Currency\n\t@Prop({ mutable: true }) changed = false\n\t@State() formatter: tidily.Formatter & tidily.Converter<any>\n\t@State() initialValue?: any\n\tprivate inputElement: HTMLInputElement\n\t/** On re-render the input will blur. This boolean is meant to keep track of if input should keep its focus. */\n\tprivate keepFocusOnReRender = false\n\tprivate lastValue: any\n\tprivate state: Readonly<tidily.State> & Readonly<tidily.Settings>\n\tprivate abortInputEvent?: () => void\n\tprivate uneditable = this.readonly\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyBlur: EventEmitter<void>\n\t@Event() smoothlyChange: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync SmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): Promise<void> {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name == this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Watch(\"type\")\n\ttypeChange(): void {\n\t\tlet result: (tidily.Formatter & tidily.Converter<any>) | undefined\n\t\tswitch (this.type) {\n\t\t\tcase \"price\":\n\t\t\t\tresult = tidily.get(\"price\", this.currency)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = tidily.get(this.type, getLocale())\n\t\t\t\tbreak\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\tthis.formatter = result || tidily.get(\"text\")!\n\t}\n\tprivate newState(state: tidily.State) {\n\t\treturn this.formatter.format(tidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy(state))))\n\t}\n\t@Watch(\"value\")\n\tvalueWatcher(value: any, before: any) {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tif (this.lastValue != value) {\n\t\t\tthis.lastValue = value\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\tvalue: this.newState({ value: this.formatter.toString(value), selection: this.state.selection }).value,\n\t\t\t}\n\t\t}\n\t\tif (value != before) {\n\t\t\tif (typeof value == \"string\")\n\t\t\t\tvalue = value.trim()\n\t\t\tthis.smoothlyInputEmit(value)\n\t\t}\n\t\tthis.listener.changed?.(this)\n\t}\n\tasync smoothlyInputEmit(value: any): Promise<void> {\n\t\tthis.abortInputEvent?.()\n\t\tconst timeout = window.setTimeout(() => {\n\t\t\tthis.abortInputEvent = undefined\n\t\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\t}, this.delay * 1000)\n\t\tthis.abortInputEvent = () => {\n\t\t\tthis.abortInputEvent = undefined\n\t\t\twindow.clearTimeout(timeout)\n\t\t}\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly() {\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"currency\")\n\tonCurrency() {\n\t\tthis.state = {\n\t\t\t...this.state,\n\t\t\tvalue: this.newState({ value: this.formatter.toString(this.value), selection: this.state.selection }).value,\n\t\t\tpattern: this.newState({ value: this.formatter.toString(this.value), selection: this.state.selection }).pattern,\n\t\t}\n\t}\n\tcomponentWillLoad() {\n\t\tthis.typeChange()\n\t\tconst value = this.formatter.toString(this.value) || \"\"\n\t\tthis.lastValue = this.initialValue = this.value\n\t\tconst start = value.length\n\t\tthis.state = this.newState({\n\t\t\tvalue,\n\t\t\tselection: { start, end: start, direction: \"none\" },\n\t\t})\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidRender() {\n\t\tif (this.keepFocusOnReRender) {\n\t\t\tthis.inputElement.focus()\n\t\t\tthis.keepFocusOnReRender = false\n\t\t}\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.uneditable && (this.value = undefined)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\t!this.uneditable && (this.readonly = !editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\t!this.uneditable && (this.value = this.initialValue)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\t@Method()\n\tasync getFormData(name: string): Promise<Record<string, any>> {\n\t\tconst result: Record<string, any> = {}\n\t\tconst form = document.forms.namedItem(name)\n\t\tif (form) {\n\t\t\tconst elements = form.elements\n\t\t\tfor (let i = 0; i < elements.length; i++) {\n\t\t\t\tconst element = elements.item(i)\n\t\t\t\tif (this.hasNameAndValue(element) && element.name)\n\t\t\t\t\tresult[element.name] = element.value\n\t\t\t}\n\t\t\t// Overwrite values with values from smoothly-input\n\t\t\tconst smoothlyInputs = form.getElementsByTagName(\"smoothly-input\")\n\t\t\tfor (let i = 0; i < smoothlyInputs.length; i++) {\n\t\t\t\tconst element = smoothlyInputs.item(i)\n\t\t\t\tif (this.hasNameAndValue(element) && element.name)\n\t\t\t\t\tresult[element.name] = element.value\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\thasNameAndValue(element: any): element is { name: string; value: string } {\n\t\treturn (\n\t\t\ttypeof (element as { name?: string }).name == \"string\" && typeof (element as { value?: string }).value == \"string\"\n\t\t)\n\t}\n\t@Method()\n\tasync setKeepFocusOnReRender(keepFocus: boolean) {\n\t\tthis.keepFocusOnReRender = keepFocus\n\t}\n\t@Method()\n\tasync setSelectionRange(start: number, end: number, direction?: tidily.Direction) {\n\t\tthis.state = this.newState({\n\t\t\t...this.state,\n\t\t\tselection: { start, end, direction: direction ?? this.state.selection.direction },\n\t\t})\n\t\tconst after = this.formatter.format(\n\t\t\ttidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy({ ...this.state })))\n\t\t)\n\t\tthis.updateBackend(after, this.inputElement)\n\t}\n\tonBlur(event: FocusEvent) {\n\t\tthis.smoothlyBlur.emit()\n\t\tif (this.abortInputEvent) {\n\t\t\tthis.abortInputEvent()\n\t\t\tconst value = typeof this.value == \"string\" ? this.value.trim() : this.value\n\t\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\t}\n\t\tif (this.initialValue != this.value)\n\t\t\tthis.smoothlyChange.emit({ [this.name]: this.value })\n\t}\n\tonFocus(event: FocusEvent) {\n\t\tconst after = this.formatter.format(\n\t\t\ttidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy({ ...this.state })))\n\t\t)\n\t\tif (event.target)\n\t\t\tthis.updateBackend(after, event.target as HTMLInputElement, false)\n\t}\n\tonClick(event: MouseEvent) {\n\t\tconst backend = event.target as HTMLInputElement\n\t\tthis.state = {\n\t\t\t...this.state,\n\t\t\tvalue: backend.value,\n\t\t\tselection: {\n\t\t\t\tstart: backend.selectionStart ?? backend.value.length,\n\t\t\t\tend: backend.selectionEnd ?? backend.value.length,\n\t\t\t\tdirection: backend.selectionDirection ?? \"none\",\n\t\t\t},\n\t\t}\n\t\tconst after = this.newState({ ...this.state })\n\t\tthis.updateBackend(after, backend)\n\t}\n\tonKeyDown(event: KeyboardEvent) {\n\t\tif (event.key && !(event.key == \"Unidentified\")) {\n\t\t\tconst backend = event.target as HTMLInputElement\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\tvalue: backend.value,\n\t\t\t\tselection: {\n\t\t\t\t\tstart: backend.selectionStart ?? backend.value.length,\n\t\t\t\t\tend: backend.selectionEnd ?? backend.value.length,\n\t\t\t\t\tdirection: backend.selectionDirection ?? \"none\",\n\t\t\t\t},\n\t\t\t}\n\t\t\tif (\n\t\t\t\t(!((event.ctrlKey || event.metaKey) && (event.key == \"v\" || event.key == \"x\" || event.key == \"c\")) &&\n\t\t\t\t\tevent.key.length == 1) ||\n\t\t\t\tevent.key == \"ArrowLeft\" ||\n\t\t\t\tevent.key == \"ArrowRight\" ||\n\t\t\t\tevent.key == \"Delete\" ||\n\t\t\t\tevent.key == \"Backspace\" ||\n\t\t\t\tevent.key == \"Home\" ||\n\t\t\t\tevent.key == \"End\"\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.processKey(event, backend)\n\t\t\t} else if (event.key == \"ArrowUp\" || event.key == \"ArrowDown\")\n\t\t\t\tevent.preventDefault()\n\t\t}\n\t}\n\tonPaste(event: ClipboardEvent) {\n\t\tevent.preventDefault()\n\t\tlet pasted = event.clipboardData ? event.clipboardData.getData(\"text\") : \"\"\n\t\tconst backend = event.target as HTMLInputElement\n\t\tpasted = this.expiresAutocompleteFix(backend, pasted)\n\t\tthis.processPaste(pasted, backend)\n\t}\n\tonInput(event: InputEvent) {\n\t\tif (event.inputType == \"insertReplacementText\") {\n\t\t\tthis.processKey({ key: \"a\", ctrlKey: true }, event.target as HTMLInputElement)\n\t\t\t;[...(event.data ?? \"\")].forEach(c => this.processKey({ key: c }, event.target as HTMLInputElement))\n\t\t} else {\n\t\t\tconst backend = event.target as HTMLInputElement\n\t\t\tlet data = backend.value\n\t\t\tif (data) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tthis.processKey({ key: \"a\", ctrlKey: true }, backend)\n\t\t\t\tdata = this.expiresAutocompleteFix(backend, data)\n\t\t\t\tfor (const letter of data)\n\t\t\t\t\tthis.processKey({ key: letter }, backend)\n\t\t\t}\n\t\t}\n\t}\n\tprivate expiresAutocompleteFix(backend: HTMLInputElement, value: string) {\n\t\tif (backend.attributes.getNamedItem(\"autocomplete\")?.value == \"cc-exp\")\n\t\t\tvalue = value.match(/^20\\d\\d[.\\D]*\\d\\d$/)\n\t\t\t\t? value.substring(value.length - 2, value.length) + value.substring(2, 4)\n\t\t\t\t: value.match(/^(1[3-9]|[2-9]\\d)[.\\D]*\\d\\d$/)\n\t\t\t\t? value.substring(value.length - 2, value.length) + value.substring(0, 2)\n\t\t\t\t: value.match(/^\\d\\d[.\\D]*20\\d\\d$/)\n\t\t\t\t? value.substring(0, 2) + value.substring(value.length - 2, value.length)\n\t\t\t\t: value\n\t\treturn value\n\t}\n\tprivate processPaste(pasted: string, backend: HTMLInputElement) {\n\t\tif (!this.readonly) {\n\t\t\tconst after = tidily.Action.paste(this.formatter, this.state, pasted)\n\t\t\tthis.updateBackend(after, backend)\n\t\t}\n\t}\n\tprivate processKey(event: tidily.Action, backend: HTMLInputElement) {\n\t\tif (!this.readonly) {\n\t\t\tconst after = tidily.Action.apply(this.formatter, this.state, event)\n\t\t\tthis.updateBackend(after, backend)\n\t\t}\n\t}\n\tupdateBackend(\n\t\tafter: Readonly<tidily.State> & Readonly<tidily.Settings>,\n\t\tbackend: HTMLInputElement,\n\t\tsetSelection = true\n\t) {\n\t\tif (after.value != backend.value)\n\t\t\tbackend.value = after.value\n\t\tif (setSelection) {\n\t\t\tif (backend.selectionStart != undefined && after.selection.start != backend.selectionStart)\n\t\t\t\tbackend.selectionStart = after.selection.start\n\t\t\tif (backend.selectionEnd != undefined && after.selection.end != backend.selectionEnd)\n\t\t\t\tbackend.selectionEnd = after.selection.end\n\t\t\tbackend.selectionDirection = after.selection.direction ?? backend.selectionDirection\n\t\t}\n\t\tthis.state = after\n\t\tthis.value = this.lastValue = this.formatter.fromString(\n\t\t\tthis.formatter.unformat(tidily.StateEditor.copy({ ...this.state })).value\n\t\t)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ \"has-value\": this.state?.value != undefined && this.state?.value != \"\" }}\n\t\t\t\tonclick={() => this.inputElement?.focus()}>\n\t\t\t\t<slot name=\"start\"></slot>\n\t\t\t\t<div>\n\t\t\t\t\t<input\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\ttype={this.state?.type}\n\t\t\t\t\t\tplaceholder={this.placeholder}\n\t\t\t\t\t\trequired={this.required}\n\t\t\t\t\t\tautocomplete={this.autocomplete ? this.state?.autocomplete : \"off\"}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\treadOnly={this.readonly}\n\t\t\t\t\t\tpattern={this.state?.pattern && this.state?.pattern.source}\n\t\t\t\t\t\tvalue={this.state?.value}\n\t\t\t\t\t\tonInput={(e: InputEvent) => this.onInput(e)}\n\t\t\t\t\t\tonFocus={e => this.onFocus(e)}\n\t\t\t\t\t\tonClick={e => this.onClick(e)}\n\t\t\t\t\t\tonBlur={e => this.onBlur(e)}\n\t\t\t\t\t\tonKeyDown={e => this.onKeyDown(e)}\n\t\t\t\t\t\tref={(el: HTMLInputElement) => (this.inputElement = el)}\n\t\t\t\t\t\tonPaste={e => this.onPaste(e)}></input>\n\t\t\t\t\t<label htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t<smoothly-icon name=\"alert-circle\" color=\"danger\" fill=\"clear\" size=\"small\"></smoothly-icon>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\"></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n\nfunction getLocale(): isoly.Locale | undefined {\n\tconst result = navigator.language\n\treturn isoly.Locale.is(result) ? result : isoly.Language.is(result) ? isoly.Locale.toLocale(result) : undefined\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-direction: row;\n\tposition: relative;\n\tgap: .5em;\n\tpadding: .6em;\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--background-color));\n}\n\nsmoothly-icon {\n\tposition: absolute;\n\tz-index: 1;\n}\n\n:host input {\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tappearance: none;\n\theight: 1.2em;\n\twidth: 1.2em;\n\tborder: 1px solid black;\n\tdisplay: block;\n}\n\n:host:not([readonly]) smoothly-icon,\n:host:not([readonly]) input {\n\tcursor: pointer;\n}\n\n:host[disabled] input,\n:host[disabled] smoothly-icon {\n\tborder-color: rgb(var(--smoothly-color-contrast), 0.3);\n\tcolor: rgb(var(--smoothly-color-contrast), 0.4);\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Method, Prop, Watch } from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-checkbox\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputCheckbox implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate initialValue?: any\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Prop() name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ mutable: true }) checked = false\n\t@Prop() value = this.checked\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\t!this.disabled && !this.readonly && (this.checked = false)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.checked = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.checked\n\t\tthis.changed = false\n\t}\n\t@Watch(\"checked\")\n\telementCheck(): void {\n\t\tthis.changed = this.initialValue !== this.checked\n\t\tthis.smoothlyInput.emit({ [this.name]: this.checked })\n\t\tthis.listener.changed?.(this)\n\t}\n\tinputHandler() {\n\t\t!this.disabled && !this.readonly && (this.checked = !this.checked)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler()}>\n\t\t\t\t<input type=\"checkbox\" checked={this.checked} />\n\t\t\t\t{this.checked && <smoothly-icon name=\"checkmark-outline\" size=\"tiny\" />}\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host() {\n\ttransition: 0.6s;\n\tmargin: 0rem;\n\tmin-width: 0rem;\n}\n\n:host([type=\"input\"]) {\n\tline-height: 1;\n}\n\n:host([type=\"form\"]) {\n\tmargin: 1em 0em;\n}\n\n:host([type=\"input\"]) ::slotted(smoothly-icon) {\n\tfilter: opacity(60%);\n\tfont-size: 70%;\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n\n:host([type=\"input\"]) button {\n \tpadding: 0rem;\n \tmargin: 0rem;\n \tmin-width: 0rem; \n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-clear\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputClear {\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill = \"clear\"\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\tprivate parent?: Clearable | (Clearable & Editable)\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Clearable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tif (Editable.Element.type.is(parent)) {\n\t\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\t\tthis.disabled = p.readonly ? true : !p.value\n\t\t\t\t\t\t\tthis.display = p.readonly ? false : Boolean(p.value)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\t\tthis.disabled = p.readonly ? true : Object.values(p.value).filter(val => val).length < 1\n\t\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.clear()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n}\n\n:host smoothly-input { \n\twidth: 100% /* Element doesnt take up all its avaliable space without this*/\n}\n\n:host .color-sample {\n\theight: 2em;\n\twidth: 5em;\n\tbackground-color: var(--value);\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n\tborder-radius: 2px;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { SmoothlyInputCustomEvent } from \"../../../components\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { SmoothlyInput } from \"../index\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputColor implements Input, Clearable, ComponentWillLoad {\n\t@Element() element: HTMLElement\n\t@Prop({ mutable: true }) value: string | undefined\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop() name: string\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tinputHandler(event: SmoothlyInputCustomEvent<Record<string, any>>): void {\n\t\tthis.value = event.detail[this.name]\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--value\": this.value }}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tname={this.name}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tonSmoothlyInput={event => this.inputHandler(event)}>\n\t\t\t\t\tColor\n\t\t\t\t\t<div slot=\"end\" class=\"color-sample\"></div>\n\t\t\t\t</smoothly-input>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tposition: relative;\n\tmax-width: 100vw;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host[looks=transparent] smoothly-input {\n\toutline: none;\n}\nnav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 3.5em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tmin-width: 18em;\n}\n:host > div {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host > nav > .arrow {\n\tposition: absolute;\n\tz-index: 9;\n\ttransform: translate(2em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n\n@media screen and (min-width: 400px){\n\tnav {\n\t\tposition: absolute;\n\t\tz-index: 10;\n\t\ttop: 3.5em;\n\t\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\t\tmax-width: 22em;\n\t\t\n\t}\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Method, Prop, Watch } from \"@stencil/core\"\nimport { Date } from \"isoly\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class InputDate implements Clearable, Input {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value?: Date\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ mutable: true }) max: Date\n\t@Prop({ mutable: true }) min: Date\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) disabled: boolean\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tonStart(next: Date) {\n\t\tthis.smoothlyValueChange.emit(next)\n\t\tthis.smoothlyInput.emit({ [this.name]: next })\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyDateSet\")\n\tdateSetHandler(event: CustomEvent<Date>) {\n\t\tthis.open = false\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-input\n\t\t\t\tcolor={this.color}\n\t\t\t\tname={this.name}\n\t\t\t\tonFocus={() => (this.open = !this.open)}\n\t\t\t\tonClick={() => (this.open = !this.open)}\n\t\t\t\tdisabled={this.disabled}\n\t\t\t\ttype=\"date\"\n\t\t\t\tvalue={this.value}\n\t\t\t\tlooks={this.looks}\n\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\tonSmoothlyInput={e => (this.value = e.detail[this.name])}>\n\t\t\t\t<slot></slot>\n\t\t\t</smoothly-input>,\n\t\t\tthis.open && !this.disabled\n\t\t\t\t? [\n\t\t\t\t\t\t<div onClick={() => (this.open = false)}></div>,\n\t\t\t\t\t\t<nav>\n\t\t\t\t\t\t\t<div class=\"arrow\"></div>\n\t\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\t\tdoubleInput={false}\n\t\t\t\t\t\t\t\tvalue={this.value ?? Date.now()}\n\t\t\t\t\t\t\t\tonSmoothlyValueChange={event => {\n\t\t\t\t\t\t\t\t\tthis.value = event.detail\n\t\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\t\tmin={this.min}></smoothly-calendar>\n\t\t\t\t\t\t</nav>,\n\t\t\t\t ]\n\t\t\t\t: [],\n\t\t]\n\t}\n}\n","@import \"../../shared.css\";\n\n:host {\n\tposition: relative;\n\tdisplay: block;\n\twidth: fit-content;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\t&:focus-within smoothly-input {\n\t\toutline: none;\n\t}\n}\n:host > nav {\n\tposition: absolute;\n\tz-index: 10;\n\ttop: 3.5em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tmax-width: 22em;\n}\n:host > div {\n\tposition: fixed;\n\ttop: 0px;\n\tleft: 0px;\n\tright: 0px;\n\tbottom: 0px;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host > nav > .arrow {\n\tposition: absolute;\n\tz-index: 9;\n\ttransform: translate(10em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host > section {\n\tdisplay: flex;\n\tbackground-color: var(--background-color, var(--smoothly-color-shade), transparent);\n\tborder-radius: 0.25rem;\n\tcursor: pointer;\n}\nsmoothly-input {\n\tborder-radius: var(--border-radius, none);\n\tbackground-color: transparent;\n\twidth: var(--input-width);\n\tflex-grow: 1;\n}\nspan {\n\tpadding: 0.5em 0.2em 0.5em 0.2em;\n\talign-self: center;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Clearable } from \"../../Clearable\"\nimport { Input } from \"../../Input\"\nimport { Looks } from \"../../Looks\"\nimport { Color, Data } from \"./../../../../model\"\n\n@Component({\n\ttag: \"smoothly-input-date-range\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class InputDateRange implements Clearable, Input {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value?: isoly.Date\n\t@Prop({ mutable: true }) start?: isoly.Date\n\t@Prop({ mutable: true }) end?: isoly.Date\n\t@Prop({ mutable: true }) max: isoly.Date\n\t@Prop({ mutable: true }) min: isoly.Date\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() labelStart = \"from\"\n\t@Prop() labelEnd = \"to\"\n\t@Event() smoothlyValueChange: EventEmitter<isoly.Date>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.start = undefined\n\t\tthis.end = undefined\n\t}\n\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t\tif (this.start && this.end)\n\t\t\tthis.smoothlyInput.emit({ [this.name]: { start: this.start, end: this.end } })\n\t}\n\t@Watch(\"value\")\n\tonValue(next: isoly.Date) {\n\t\tthis.smoothlyValueChange.emit(next)\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>) {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyStartChange\")\n\tonStartChanged(event: CustomEvent<isoly.Date>) {\n\t\tthis.start = event.detail\n\t}\n\t@Listen(\"smoothlyEndChange\")\n\tonEndChanged(event: CustomEvent<isoly.Date>) {\n\t\tthis.end = event.detail\n\t}\n\t@Listen(\"smoothlyDateRangeSet\")\n\tonDateRangeSet(event: CustomEvent<isoly.DateRange>) {\n\t\tthis.open = false\n\t\tevent.stopPropagation()\n\t\tisoly.DateRange.is(event.detail) && this.smoothlyInput.emit({ [this.name]: event.detail })\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host tabindex={0}>\n\t\t\t\t<section onClick={() => (this.open = !this.open)}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\tname=\"start\"\n\t\t\t\t\t\tvalue={this.start}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t\tonSmoothlyInput={e => (this.start = e.detail.start)}>\n\t\t\t\t\t\t{`${this.labelStart}`}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<span>–</span>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"date\"\n\t\t\t\t\t\tname=\"end\"\n\t\t\t\t\t\tvalue={this.end}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t\tonSmoothlyInput={e => (this.end = e.detail.end)}>\n\t\t\t\t\t\t{`${this.labelEnd}`}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</section>\n\t\t\t\t{this.open ? <div onClick={() => (this.open = false)}></div> : []}\n\t\t\t\t{this.open ? (\n\t\t\t\t\t<nav>\n\t\t\t\t\t\t<div class=\"arrow\"></div>\n\t\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\t\tdoubleInput={true}\n\t\t\t\t\t\t\tvalue={this.value ?? isoly.Date.now()}\n\t\t\t\t\t\t\tonSmoothlyValueChange={event => {\n\t\t\t\t\t\t\t\tthis.value = event.detail\n\t\t\t\t\t\t\t\tevent.stopPropagation()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tstart={this.start}\n\t\t\t\t\t\t\tend={this.end}\n\t\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\t\tmin={this.min}></smoothly-calendar>\n\t\t\t\t\t</nav>\n\t\t\t\t) : (\n\t\t\t\t\t[]\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","smoothly-input-demo {\n\tdisplay: block;\n\tmargin: 2em;\n\tmargin-bottom: 20rem;\n}\n.checkbox-group {\n\tdisplay: flex;\n\tgap: 1.5em;\n\talign-items: center;\n\tbackground-color: rgb(var(--background-color));\n}\n.select-div {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tgap: 1em;\n\tflex-wrap: wrap;\n}\n.select-div>* {\n\tflex-basis: 49%;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-demo\",\n\tstyleUrl: \"style.css\",\n})\nexport class SmoothlyInputDemo {\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Select</h2>\n\t\t\t\t<div class=\"select-div\">\n\t\t\t\t\t<smoothly-input-select name=\"select-dessert\" looks=\"border\" onSmoothlyInput={e => console.log(e.detail)}>\n\t\t\t\t\t\t<label slot=\"label\">Select with reset button</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">Ice cream</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">Cookie</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">Croissant</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">Chocolate fondue</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tname=\"select-dessert-multiple\"\n\t\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\t\tonSmoothlyInput={e => console.log(e.detail)}>\n\t\t\t\t\t\t<label slot=\"label\">Select multiple with reset button</label>\n\t\t\t\t\t\t<smoothly-item value=\"ice cream\">Ice cream</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"sponge cake\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t<smoothly-item selected value=\"cookie\">\n\t\t\t\t\t\t\tCookie\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"croissant\">Croissant</smoothly-item>\n\t\t\t\t\t\t<smoothly-item selected value=\"chocolate fondue\">\n\t\t\t\t\t\t\tChocolate fondue\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tname=\"select-icon\"\n\t\t\t\t\t\tclearable={false}\n\t\t\t\t\t\tshowSelected={false}\n\t\t\t\t\t\tonSmoothlyInput={e => console.log(\"Form Readonly\", e.detail)}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</div>\n\n\t\t\t\t<h2>Delayed</h2>\n\t\t\t\t<smoothly-input name=\"Delayed\" delay={2}>\n\t\t\t\t\tDelayed\n\t\t\t\t</smoothly-input>\n\t\t\t\t<h2>Editable form and Input with Clear and Reset - Readonly</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\ttype=\"create\"\n\t\t\t\t\treadonly\n\t\t\t\t\taction=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input readonly name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\" value={\"777888999\"}>\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-select menuHeight=\"7.5items\" placeholder=\"Select...\" multiple name=\"select-month\">\n\t\t\t\t\t\t<label slot=\"label\">Month</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox\">Check the box</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox2\" checked>\n\t\t\t\t\t\tCheck the box 2\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\" value={20000}>\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-picker multiple name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"button\" color=\"tertiary\" slot=\"edit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-reset fill=\"default\" type=\"form\" color=\"warning\" slot=\"reset\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit delete slot=\"clear\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" type=\"button\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Editable form and Input with Clear and Reset - Editable</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\ttype=\"create\"\n\t\t\t\t\taction=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input readonly name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\" value={\"777888999\"}>\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"refresh-outline\" />\n\t\t\t\t\t\t</smoothly-input-reset>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-select multiple menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t<label slot=\"label\">Month multiple select</label>\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox\">Check the box</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-checkbox name=\"checkbox2\" checked>\n\t\t\t\t\t\tCheck the box 2\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\" value={20000}>\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-picker multiple name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"button\" color=\"tertiary\" slot=\"edit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-reset fill=\"default\" type=\"form\" color=\"warning\" slot=\"reset\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit delete slot=\"clear\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" type=\"button\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Color</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input-color name=\"color\"></smoothly-input-color>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Range</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range\" outputSide=\"right\">\n\t\t\t\t\t\tSelect and so\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range2\">\n\t\t\t\t\t\tSelect with really really long label\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<smoothly-input-range step={1} name=\"range3\">\n\t\t\t\t\t\tSelect\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Duration</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tplaceholder=\"hh:mm\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tconsole.log(\"event duration\", duration)\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"duration\"\n\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\tvalue={this.duration}\n\t\t\t\t\t\tplaceholder=\"-hh:mm\"\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tconst duration = e.detail.duration\n\t\t\t\t\t\t\tconsole.log(\"event duration\", duration)\n\t\t\t\t\t\t\tthis.duration = duration\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Transparent inputs</h2>\n\t\t\t\t<smoothly-form looks={\"transparent\"}>\n\t\t\t\t\t<smoothly-input-file name={\"file\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>File</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"folder-open-outline\"} size={\"small\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input type={\"duration\"} looks={\"transparent\"} placeholder={\"h:mm\"}>\n\t\t\t\t\t\tInput\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker>\n\t\t\t\t\t\t<span slot={\"label\"}>Picker</span>\n\t\t\t\t\t\t<span slot={\"search\"}>Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"ellipse-outline\"} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"square-outline\"} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date-range>Date Range</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-select name={\"transport\"}>\n\t\t\t\t\t\t<smoothly-item value={\"plane\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"airplane-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"car\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"car-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"bus\"} selected>\n\t\t\t\t\t\t\t<smoothly-icon name={\"bus-outline\"} />\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h2>Submit</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Prices</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"no\">\n\t\t\t\t\t\tNo currency\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"crowns\" currency=\"SEK\">\n\t\t\t\t\t\tSEK\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"usDollar\" currency=\"USD\">\n\t\t\t\t\t\tUSD\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"pounds\" currency=\"GBP\">\n\t\t\t\t\t\tGBP\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"peso\" currency=\"UYW\">\n\t\t\t\t\t\tUYW\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"iceland\" currency=\"ISK\">\n\t\t\t\t\t\tISK\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" name=\"Palladium\" currency=\"XPD\">\n\t\t\t\t\t\t{\"XPD (Palladium)\"}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h4>Clear</h4>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input name=\"First Name\" value=\"John\">\n\t\t\t\t\t\tFirst name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"Last name\" value=\"Doe\">\n\t\t\t\t\t\tLast name\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"Phone\">\n\t\t\t\t\t\tPhone\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"danger\" slot=\"submit\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Identifier</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"identifier-code\">Code</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-attribute\">Attribute</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-snake\">Snake</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-pascal\">Pascal</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"identifier-camel\">Camel</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Border</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" onSubmit={(e: Event) => alert(e)} color=\"success\" fill=\"solid\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Grid</h2>\n\t\t\t\t<h4>Contact</h4>\n\t\t\t\t<smoothly-form looks=\"grid\" action=\"https://webhook.site/85bb78f6-b450-4a74-81ac-d7cac6e94bbe\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"street\" value=\"Torgny Segerstedts Allé 87\">\n\t\t\t\t\t\tStreet\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"postal-code\" name=\"zip\">\n\t\t\t\t\t\tZipCode\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"city\">\n\t\t\t\t\t\tCity\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"countryCode\">\n\t\t\t\t\t\tCountryCode\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"phone\" name=\"phone\">\n\t\t\t\t\t\tPhone\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tSubmit\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Card</h4>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={(e: CustomEvent) => alert(JSON.stringify(e.detail))}>\n\t\t\t\t\t<smoothly-input type=\"card-number\" name=\"card\">\n\t\t\t\t\t\tCard #\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t\t<smoothly-input type=\"card-expires\" name=\"expires\">\n\t\t\t\t\t\tExpires\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"card-csc\" name=\"csc\">\n\t\t\t\t\t\tCVV/CVC\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\">\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Contact</h4>\n\t\t\t\t<smoothly-form looks=\"grid\">\n\t\t\t\t\t<smoothly-input type=\"email\" name=\"email\">\n\t\t\t\t\t\tEmail\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"password\" name=\"password\">\n\t\t\t\t\t\tPassword\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"price\" currency=\"SEK\" name=\"price\">\n\t\t\t\t\t\tPrice\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"percent\" name=\"percent\">\n\t\t\t\t\t\tPercent\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\"></smoothly-icon>\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Random</h4>\n\t\t\t\t<smoothly-form looks=\"grid\">\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"name\"\n\t\t\t\t\t\treadonly={true}\n\t\t\t\t\t\tvalue={\"Readonly\"}\n\t\t\t\t\t\tonSmoothlyBlur={() => console.log(\"smoothly blur\")}\n\t\t\t\t\t\tstyle={{ width: \"100%\" }}>\n\t\t\t\t\t\tReadonly\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"testing\">\n\t\t\t\t\t\tTextTest\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"date-time\" name=\"date-time\">\n\t\t\t\t\t\tDate-Time\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"divisor\" name=\"divisor\">\n\t\t\t\t\t\tDivisor\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"date\" name=\"date\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-date name=\"some-date\">Calendar</smoothly-input-date>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Line</h2>\n\t\t\t\t<smoothly-form looks=\"line\" action=\"https://api.toiletapi.com/upload/6b12fd2f-e896-46f9-b38f-25cf42cee4b4\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" fill=\"solid\" onSubmit={(e: Event) => alert(e)} color=\"success\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Input Alternatives</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\"></smoothly-icon>\n\t\t\t\t\t\tFirst Name\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" onSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\tname=\"name.first\"\n\t\t\t\t\t\tplaceholder=\"Smith\"\n\t\t\t\t\t\tonSmoothlyChange={e => console.log(\"smoothly change event\")}>\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\"></smoothly-icon>\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input placeholder=\"test\"></smoothly-input>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" fill=\"solid\" onSubmit={(e: Event) => alert(e)} color=\"success\">\n\t\t\t\t\t\tSend\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly checkboxes</h4>\n\t\t\t\t<smoothly-form>\n\t\t\t\t\t<div class=\"checkbox-group\">\n\t\t\t\t\t\t<smoothly-input-checkbox disabled name=\"first-checkbox\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tFirst\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"second-checkbox\" checked>\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" size=\"tiny\" />\n\t\t\t\t\t\t\tsecond\n\t\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"third-checkbox\">3rd</smoothly-input-checkbox>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly Radio Buttons</h4>\n\t\t\t\t<smoothly-form onSmoothlyFormSubmit={e => console.log(e.detail)} looks=\"border\">\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close\" />\n\t\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t\t<p slot=\"label\">Clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-radio name=\"radioSecondInput\">\n\t\t\t\t\t\t<p slot=\"label\">Not clearable</p>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"first\"}>\n\t\t\t\t\t\t\tLabel 1\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"second\"}>\n\t\t\t\t\t\t\tLabel 2\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"third\"}>\n\t\t\t\t\t\t\tLabel 3\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"fourth\"}>\n\t\t\t\t\t\t\tLabel 4\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"fifth\"}>\n\t\t\t\t\t\t\tLabel 5\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item slot=\"options\" value={\"sixth\"}>\n\t\t\t\t\t\t\tLabel 6\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Smoothly Picker</h4>\n\t\t\t\t<smoothly-picker-demo />\n\t\t\t\t<smoothly-back-to-top />\n\t\t\t\t<h4>Smoothly Date</h4>\n\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\t\t\t<smoothly-input-date showLabel={false} value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\tDate\n\t\t\t\t</smoothly-input-date>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={e => console.log(e.detail)}>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"testing\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2024-12-30\"></smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">submit daterange</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\tshowLabel={false}\n\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t}}></smoothly-input-date-range>\n\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormSubmit={e => console.log(\"Submitted\", e.detail)}>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"text\">\n\t\t\t\t\t\tText\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-input-file placeholder=\"Select or drag a file here\" name=\"file\">\n\t\t\t\t\t\t\t<span slot=\"label\">Testing file input</span>\n\t\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"folder-outline\" />\n\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<br />\n\t\t\t\t<smoothly-form looks=\"line\" onSmoothlyFormSubmit={e => console.log(\"form input\", e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"text\">Input</smoothly-input>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-picker name=\"picker\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-select name=\"select\" placeholder=\"Select...\" menuHeight=\"7.5items\">\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"date-range\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\t\tshowLabel={false}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-input-date name=\"date\" value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" fill=\"solid\" size=\"medium\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h4>Form with spinner showcase</h4>\n\t\t\t\t<smoothly-form looks=\"line\" processing={true} onSmoothlyFormSubmit={e => console.log(\"form input\", e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"text\">Input</smoothly-input>\n\t\t\t\t\t<smoothly-input-file camera=\"back\" placeholder=\"Capture a photo\" name=\"image\">\n\t\t\t\t\t\t<span slot=\"label\">Testing camera photo</span>\n\t\t\t\t\t\t<smoothly-icon slot=\"button\" name=\"camera-outline\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-picker name=\"picker\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-select name=\"select\" placeholder=\"Select...\">\n\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname=\"date-range\"\n\t\t\t\t\t\tstart={isoly.Date.now()}\n\t\t\t\t\t\tend={isoly.Date.nextMonth(isoly.Date.now())}\n\t\t\t\t\t\tmin=\"2021-10-10\"\n\t\t\t\t\t\tmax=\"2025-12-30\"\n\t\t\t\t\t\tshowLabel={false}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\"--border-radius\": \"4px\",\n\t\t\t\t\t\t\t\"--padding\": \"0 0.75em\",\n\t\t\t\t\t\t\t\"--input-width\": \"12ch\",\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-input-date name=\"date\" value=\"2021-10-28\" max=\"2021-12-30\" min=\"2021-10-10\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-submit slot=\"submit\" color=\"success\" fill=\"solid\" size=\"icon\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" fill=\"solid\" size=\"medium\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([editable]){\n\topacity: 0.5;\n}\n\n:host smoothly-icon.default {\n\ttransform: translate(.1em, -.1em);\n}\n\n:host::slotted(button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { Editable } from \"../Editable\"\n\n@Component({\n\ttag: \"smoothly-input-edit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputEdit implements ComponentWillLoad {\n\tprivate parent?: Editable\n\t@Prop({ reflect: true }) color?: Color = \"tertiary\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() toolTip = \"Edit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = p.readonly\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.edit(true)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"create-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t</Button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n\tpadding-left: 0.4rem;\n\t\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)))\n}\n.mask {\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground-color: rgb(var(--text-color ,var(--smoothly-color-contrast)), 0.3);\n}\n\n:host:not(.dragging) .mask {\n\tdisplay: none;\n}\ninput {\n\toverflow: hidden;\n\theight: 0;\n\twidth: 0;\n\tpadding:0\n}\n.input {\n\tdisplay: flex;\n\talign-items:center;\n\tpadding-left: 0.4rem;\n\tpadding-bottom: 0.2rem;\n}\nsmoothly-button {\n\tmargin: 0;\n\tborder: none;\n}\nlabel {\n\tpadding-left: 0.4rem;\n\tpadding-top: 0.4rem;\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: baseline;\n\tjustify-content: flex-start;\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n\tcursor: inherit;\n\n}\nlabel::slotted(*) {\n\tdisplay: block;\n\twidth: 100%;\n\tfont-size: 0.65em;\n\topacity: 0.8;\n}\n:host:not([show-label]) label {\n\tdisplay: none;\n}\nsmoothly-icon {\n\tdisplay: none;\n\tposition: absolute;\n\tright: 0.2em;\n\ttop: 0.6em;\n}\nspan {\n\tcursor: pointer;\n\tpadding-left: 0.5rem;\n}\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, State } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-file\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputFile implements Clearable, Input {\n\tprivate transfer: DataTransfer = new DataTransfer()\n\tprivate input?: HTMLInputElement\n\t@State() dragging = false\n\t@Prop() accept?: string\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) camera: \"front\" | \"back\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) value?: File\n\t@Prop({ mutable: true, reflect: true }) placeholder: string | undefined\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, File>>\n\t@Event() smoothlyChange: EventEmitter<Record<string, File>>\n\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = looks), !this.color && (this.color = color)))\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ dragging: this.dragging }}\n\t\t\t\ttabindex={0}\n\t\t\t\tonClick={() => this.input?.click()}\n\t\t\t\tonDragOver={(event: Event) => (event.preventDefault(), event.stopPropagation())}\n\t\t\t\tonDragEnter={() => (this.dragging = true)}>\n\t\t\t\t<label>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</label>\n\t\t\t\t<div class=\"input\">\n\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tfill={\"clear\"}\n\t\t\t\t\t\tsize=\"flexible\"\n\t\t\t\t\t\tonClick={event => (event.stopPropagation(), this.input?.click())}>\n\t\t\t\t\t\t<slot name={\"button\"} />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<span onClick={event => (event.stopPropagation(), this.input?.click())}>\n\t\t\t\t\t\t{this.value?.name ?? this.placeholder}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass={\"mask\"}\n\t\t\t\t\t\tonDrop={event => (\n\t\t\t\t\t\t\tevent.preventDefault(),\n\t\t\t\t\t\t\tevent.stopPropagation(),\n\t\t\t\t\t\t\t(this.dragging = false),\n\t\t\t\t\t\t\tevent.dataTransfer?.files.length &&\n\t\t\t\t\t\t\t\t(this.smoothlyInput.emit({ [this.name]: (this.value = event.dataTransfer.files[0]) }),\n\t\t\t\t\t\t\t\tthis.smoothlyChange.emit({ [this.name]: (this.value = event.dataTransfer.files[0]) }))\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonDragLeave={event => (event.stopPropagation(), (this.dragging = false))}\n\t\t\t\t\t/>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={element => (this.input = element)}\n\t\t\t\t\t\ttype={\"file\"}\n\t\t\t\t\t\tcapture={this.camera == \"back\" ? \"environment\" : \"user\"}\n\t\t\t\t\t\taccept={this.accept ?? (!this.camera ? undefined : \"image/jpeg\")}\n\t\t\t\t\t\tfiles={\n\t\t\t\t\t\t\t(this.transfer.items.clear(), this.value && this.transfer.items.add(this.value), this.transfer.files)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonInput={event => (\n\t\t\t\t\t\t\tevent.stopPropagation(),\n\t\t\t\t\t\t\tthis.input?.files?.length && this.smoothlyInput.emit({ [this.name]: (this.value = this.input?.files[0]) })\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonChange={event => (\n\t\t\t\t\t\t\tevent.stopPropagation(),\n\t\t\t\t\t\t\tthis.input?.files?.length &&\n\t\t\t\t\t\t\t\tthis.smoothlyChange.emit({ [this.name]: (this.value = this.input?.files[0]) })\n\t\t\t\t\t\t)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tfont-size: large;\n}\nsmoothly-icon {\n\tfont-size: smaller;\n}\n","import { Component, Event, EventEmitter, h, Prop, Watch } from \"@stencil/core\"\nimport { Date } from \"isoly\"\nimport * as generate from \"../../calendar/generate\"\n\n@Component({\n\ttag: \"smoothly-input-month\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class MonthSelector {\n\t@Prop({ mutable: true }) value?: Date\n\t@Event() smoothlyValueChange: EventEmitter<Date>\n\t@Watch(\"value\")\n\tonValueChanged(next: Date) {\n\t\tthis.smoothlyValueChange.emit(next)\n\t}\n\tprivate adjustMonth(delta: number) {\n\t\tconst date = Date.parse(this.value ?? Date.now())\n\t\tdate.setMonth(date.getMonth() + delta)\n\t\tthis.value = Date.create(date)\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<div onClick={() => this.adjustMonth(-1)}>\n\t\t\t\t<smoothly-icon name=\"caret-back-outline\" size=\"small\" />\n\t\t\t</div>,\n\t\t\t<smoothly-input-select onSmoothlySelect={(e: CustomEvent) => (this.value = e.detail)}>\n\t\t\t\t{generate.years(this.value ?? Date.now()).map(year => (\n\t\t\t\t\t<smoothly-item value={year.date} selected={year.selected}>\n\t\t\t\t\t\t{year.name}\n\t\t\t\t\t</smoothly-item>\n\t\t\t\t))}\n\t\t\t</smoothly-input-select>,\n\t\t\t<smoothly-input-select onSmoothlySelect={(e: CustomEvent) => (this.value = e.detail)}>\n\t\t\t\t{generate.months(this.value ?? Date.now()).map(month => (\n\t\t\t\t\t<smoothly-item value={month.date} selected={month.selected}>\n\t\t\t\t\t\t{month.name}\n\t\t\t\t\t</smoothly-item>\n\t\t\t\t))}\n\t\t\t</smoothly-input-select>,\n\t\t\t<div onClick={() => this.adjustMonth(1)}>\n\t\t\t\t<smoothly-icon name=\"caret-forward-outline\" size=\"small\" />\n\t\t\t</div>,\n\t\t]\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tpadding: .4em; \n\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)));\n\tdisplay: flex;\n\talign-items: center;\n}\n\n:host .input-group {\n\tdisplay: flex;\n\twidth: 100%;\n\talign-items: center;\n\tgap: 1em\n}\n\n:host .input-group div {\n\talign-items: center;\n\tdisplay: flex;\n\tjustify-content: right;\n\twidth: 100%;\n\tflex-wrap: wrap;\n\tgap: 1em;\n}\n\n:host .input-group::slotted(p) {\n\tmargin: 0 0 0 0.2em;\n\twhite-space: nowrap;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\nimport { Selectable } from \"./Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadio implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate active?: Selectable\n\tprivate valueReceivedOnLoad = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\tinitialValue?: Selectable\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ mutable: true }) value: any = undefined\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop() clearable?: boolean\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop() name: string\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\t!this.valueReceivedOnLoad && this.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.initialValue = this.active\n\t}\n\t@Listen(\"smoothlyRadioButtonRegister\")\n\thandleRegister(event: CustomEvent<(name: string) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.name)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tSmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputRadio) => void>): void {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === this.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this)\n\t\t}\n\t}\n\t@Listen(\"smoothlySelect\")\n\tsmoothlyRadioInputHandler(event: CustomEvent<Selectable>): void {\n\t\tevent.stopPropagation()\n\t\tif (!this.readonly || !this.valueReceivedOnLoad) {\n\t\t\tif (this.clearable && this.active?.value === event.detail.value)\n\t\t\t\tthis.clear()\n\t\t\telse if (this.active?.value !== event.detail.value) {\n\t\t\t\tthis.active?.select(false)\n\t\t\t\tthis.active = event.detail\n\t\t\t\tthis.value = this.active.value\n\t\t\t\tthis.active.select(true)\n\t\t\t}\n\t\t}\n\t\t!this.valueReceivedOnLoad && (this.valueReceivedOnLoad = !this.valueReceivedOnLoad)\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.active?.select(false)\n\t\t\tthis.active = undefined\n\t\t\tthis.value = undefined\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.active?.select(false)\n\t\tthis.active = this.initialValue\n\t\tthis.value = this.initialValue?.value\n\t\tthis.active?.select(true)\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.active\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.valueReceivedOnLoad && (this.changed = this.initialValue?.value !== this.value)\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<slot />\n\t\t\t\t<div class=\"input-group\">\n\t\t\t\t\t<slot name=\"label\" />\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"options\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\talign-items: center;\n\tposition: relative;\n}\n\n:host:hover > * {\n\tcursor: pointer;\n}\n\n:host input:focus-visible + smoothly-icon {\n\toutline: 2px solid rgb(var(--smoothly-primary-color));\t\n\tborder-radius: 1px;\n}\n\n:host input {\n\topacity: 0;\n\tz-index: 1;\n\twidth: 1.5em;\n\theight: 1.5em;\n\tposition: absolute;\n\ttransform: translateX(50%);\n}\n\n:host label {\n\tpadding: 0 .3em;\n\twhite-space: nowrap;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { Looks } from \"../../Looks\"\nimport { Selectable } from \"../Selected\"\n\n@Component({\n\ttag: \"smoothly-input-radio-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRadioItem {\n\t@Element() element: HTMLInputElement\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ mutable: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) looks: Looks = \"plain\"\n\t@Prop({ mutable: true }) name: string\n\t@Event() smoothlySelect: EventEmitter<Selectable>\n\t@Event() smoothlyRadioButtonRegister: EventEmitter<(name: string) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyRadioButtonRegister.emit(name => (this.name = name))\n\t\tthis.selected && this.inputHandler()\n\t}\n\tinputHandler(): void {\n\t\tthis.smoothlySelect.emit({ value: this.value, selected: this.selected, select: s => (this.selected = s) })\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler()}>\n\t\t\t\t<input name={this.name} type=\"radio\" checked={this.selected} />\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={this.selected ? \"checkmark-circle\" : \"ellipse-outline\"}\n\t\t\t\t\tsize=\"medium\"\n\t\t\t\t\tfill=\"outline\"\n\t\t\t\t\tcolor={this.selected ? \"success\" : \"medium\"}\n\t\t\t\t\ttoolTip=\"Select\"\n\t\t\t\t/>\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n* {\n\tbox-sizing: border-box;\n}\n\n:host {\n\tposition: relative;\n\twidth: 100%;\n\tjustify-content: center;\n\talign-items: center;\n\tdisplay: flex;\n\tbackground-color: rgb(var(--background-color,var(--smoothly-color-shade)));\n\tpadding: 0 .4em;\n}\n\n:host :nth-child(2) {\n margin-left: 0.2em;\n}\n\n:host > div {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 100%;\n\tpadding: 1.1em 0 .1em 0;\n}\n\n:host.output-side-right > div {\n\tpadding: 0;\n}\n\n:host output {\n\tmin-width: 4em;\n\ttext-align: center;\n\tmargin-left: .5em\n}\n\n:host label {\n\tposition: absolute;\n\tdisplay: block;\n\twhite-space: nowrap;\n\ttext-align: center;\n\ttop: .5em;\n\tleft: 0;\n\tfont-size: .6em;\n}\n\n:host.output-side-right label {\n\tposition: static;\n\tfont-size: inherit;\n\ttext-align: left;\n\tpadding-right: .5em\n} \n\n:host.output-side-right output {\n\torder: 3;\n\tmargin: 0;\n} \n\n/*--------------------Reset browserspecific CSS------------------ */\ninput[type=range] {\n -webkit-appearance: none; /* Hides the slider so that custom slider can be made */\n width: 100%; /* Specific width is required for Firefox. */\n background: transparent; /* Otherwise white in Chrome */\n\theight: 1.5em;\n\tpadding: 0 .4em;\n}\n\n/*--------------------THUMB------------------ */\n/* WebKit/Blink */\ninput[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n height: 1.2em;\n width: .7em;\n border-radius: 20%;\n background-color: rgb(var(--smoothly-primary-contrast));\n\tborder: 1px rgb(var(--text-color, var(--smoothly-color-contrast))) solid;\n cursor: pointer;\n margin-top: -.45em; /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */\n}\n\n/* Firefox */\ninput[type=range]::-moz-range-thumb {\n height: 1.2em;\n width: .7em;\n border-radius: 20%;\n background-color: rgb(var(--smoothly-primary-contrast));\n\tborder: 1px rgb(var(--text-color, var(--smoothly-color-contrast))) solid;\n cursor: pointer;\n}\n\n/*--------------------SLIDER TRACK------------------ */\ninput[type=range]::-webkit-slider-runnable-track {\n height: .3em;\n cursor: pointer;\n\tbackground-color: rgb(var(--smoothly-primary-color));\n border-radius: 20px;\n}\n\ninput[type=range]::-moz-range-track {\n width: 100%;\n height: .3em;\n cursor: pointer;\n background-color: rgb(var(--smoothly-primary-color));\n border-radius: 20px;\n}\n\n:host(:not([value])) input[type=range]::-webkit-slider-runnable-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host(:not([value])) input[type=range]::-moz-range-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Method, Prop, VNode, Watch } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRange implements Input, Clearable, Editable, ComponentWillLoad {\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Prop({ mutable: true }) value: number | undefined = undefined\n\tprivate initialValue = this.value\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() min = 0\n\t@Prop() max = 100000\n\t@Prop() name: string\n\t@Prop() labelText?: string\n\t@Prop() step: number | \"any\" = \"any\"\n\t@Prop() outputSide: \"right\" | \"left\" = \"left\"\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.changed = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.listener.changed?.(this)\n\t}\n\tinputHandler(event: Event): void {\n\t\tevent.target instanceof HTMLInputElement &&\n\t\t\t(this.value =\n\t\t\t\tthis.step !== \"any\" ? event.target.valueAsNumber : Math.round(event.target.valueAsNumber * 100) / 100)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class={{ \"output-side-right\": this.outputSide === \"right\" }}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<label htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t<output htmlFor={this.name}>{this.value ?? \"—\"}</output>\n\t\t\t\t\t<input\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\tpart=\"range\"\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\tstep={this.step}\n\t\t\t\t\t\tdisabled={this.readonly}\n\t\t\t\t\t\tonInput={event => this.inputHandler(event)}\n\t\t\t\t\t\tvalue={this.value ?? this.min}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"end\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host() {\n\ttransition: 0.6s;\n\tmin-width: 0rem;\n}\n\n:host([type=\"input\"]) {\n\tline-height: 1;\n}\n\n:host([type=\"input\"]) ::slotted(smoothly-icon) {\n\tfilter: opacity(60%);\n\tfont-size: 70%;\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n\n:host([type=\"input\"]) button {\n \tmin-width: 0rem; \n}\n:host smoothly-icon.default {\n\ttransform: translateY(-.1em) scaleX(-1) ;\n}\n:host::slotted(button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Button } from \"../../Button\"\nimport { SmoothlyForm } from \"../../form\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\n\n@Component({\n\ttag: \"smoothly-input-reset\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputReset {\n\treadonlyAtLoad: boolean\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill = \"clear\"\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true, mutable: true }) display = true\n\t@Prop({ reflect: true }) type: \"form\" | \"input\" = \"input\"\n\t@Prop() tooltip = \"Reset\"\n\tprivate parent?: Editable.Element\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Editable.Element.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tthis.readonlyAtLoad = parent.readonly\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\tthis.display = p.readonly ? false : p.changed\n\t\t\t\t\t}\n\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\t\tthis.disabled = !this.readonlyAtLoad && !p.changed\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler(event: MouseEvent) {\n\t\tevent.stopPropagation()\n\t\tthis.parent?.reset()\n\t\tthis.parent instanceof SmoothlyForm && this.readonlyAtLoad && this.parent?.edit(false)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host title={this.tooltip}>\n\t\t\t\t<Button disabled={this.disabled} type=\"button\">\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"refresh-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t</Button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Item {\n\tvalue: any\n\tselected?: boolean\n\tfilter: (filter: string) => Promise<void>\n}\n\nexport namespace Item {\n\texport const type = isly.object<Item>({\n\t\tvalue: isly.any(),\n\t\tselected: isly.boolean().optional(),\n\t\tfilter: isly.function(),\n\t})\n\texport const is = type.is\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tflex-direction: row;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color-shade));\n}\n\n:host.icon {\n\twidth: fit-content;\n\tflex-direction: column;\n}\n\n:host>.select-display {\n\tbox-sizing: border-box;\n\tmin-height: 2.7em;\n\tdisplay: flex;\n\tcursor: default;\n\tpadding: .7em ;\n\toverflow: hidden;\t\n\twidth: 100%;\n\twhite-space: nowrap;\n\tgap: 1em;\n\ttext-overflow: ellipsis;\n}\n\n:host>.icons {\n\tdisplay:flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-right: .4em;\n}\n:host>.icons::slotted(smoothly-input-reset) {\n\tpadding-right: .2em;\n}\n\n:host::slotted([slot=label]) {\n\tposition: absolute;\n\tleft: 0.4em;\n\ttop: 0.6em;\n\topacity: 0.8;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n\n:host.has-value::slotted([slot=label]),\n:host:not(.has-value)[placeholder]::slotted([slot=label]) {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\n\n:host.has-value:has([slot=label]) .select-display,\n:host:not(.has-value)[placeholder] .select-display {\n padding-bottom: 0;\n padding-left: .8em;\n padding-top: 1.1em;\n overflow: hidden;\t\n width: 100%;\n}\n\n:host>.options {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: absolute;\n\ttop: 2.7em;\n\tz-index: 10;\n\tmax-height: var(--menu-height, unset);\n\twidth: 100%;\n\toverflow-y: auto;\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n\n:host[looks=border] .options {\n\ttransform: translateX(-1px);\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n\tborder-top: rgba(var(--text-color, var(--smoothly-color-contrast)), .4) solid 1px;\n}\n\n:host[looks=\"grid\"] .options {\n\ttransform: translateX(-2px);\n\tborder: rgba(var(--text-color, var(--smoothly-color-contrast)), .5) solid 2px;\n\tborder-top: rgba(var(--text-color, var(--smoothly-color-contrast)), .2) solid 2px;\n}\n\n:host>.options::slotted(smoothly-item){\n\tpadding: .7em;\n}\n\n:host>.options::slotted(smoothly-item.non-selectable) {\n\tdisplay: flex;\n\tgap: 1em;\n\tbackground-color: rgba(var(--smoothly-primary-tint), .5);\n\tcolor: var(--smoothly-color-contrast)\n}\n\n:host>.options>smoothly-item.non-selectable>smoothly-icon[name=\"backspace-outline\"] {\n\tmargin-left: auto;\n\tmargin-right: 0;\n}\n\n:host>.options.hidden {\n\tdisplay: none;\n}\n\n:host>section {\n\tposition: fixed;\n\ttop: 0px;\n\tleft: 0px;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 10;\n}\n\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Color, Data } from \"../../../model\"\nimport { Item } from \"../../item/Item\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n@Component({\n\ttag: \"smoothly-input-select\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSelect implements Input, Editable, Clearable, ComponentWillLoad {\n\tprivate initialValue: HTMLSmoothlyItemElement[] = []\n\tprivate initialValueHandled = false\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\titems: HTMLSmoothlyItemElement[] = []\n\titemHeight: number | undefined\n\tdisplaySelectedElement?: HTMLElement\n\t@Element() element: HTMLSmoothlyInputSelectElement\n\t@Prop() name = \"selected\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true, mutable: true }) showSelected?: boolean = true\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() multiple = false\n\t@Prop() clearable = true\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true }) placeholder?: string | any\n\t@Prop() menuHeight?: `${number}${\"items\" | \"rem\" | \"px\" | \"vh\"}`\n\t@State() open = false\n\t@State() selected: HTMLSmoothlyItemElement[] = []\n\t@State() filter = \"\"\n\t@Event() smoothlySelect: EventEmitter<unknown>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks, color: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.listener.changed?.(this)\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tthis.selected && !this.initialValueHandled && (this.initialValue = [...this.selected])\n\t\tthis.initialValueHandled = true\n\t}\n\tcomponentDidRender(): void | Promise<void> {\n\t\tthis.itemHeight === undefined && (this.itemHeight = this.items.find(item => item.clientHeight > 0)?.clientHeight)\n\t\tif (this.menuHeight && this.itemHeight) {\n\t\t\tthis.element?.style.setProperty(\n\t\t\t\t\"--menu-height\",\n\t\t\t\t!this.menuHeight.endsWith(\"items\") || this.items.length == 0\n\t\t\t\t\t? this.menuHeight\n\t\t\t\t\t: `${this.itemHeight * +(this.menuHeight.match(/^(\\d+(\\.\\d+)?|\\.\\d+)/g)?.[0] ?? \"10\")}px`\n\t\t\t)\n\t\t}\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\tthis.initialValue.forEach(item => (item.selected = true))\n\t\tthis.selected = [...this.initialValue]\n\t\tthis.displaySelected()\n\t\tthis.changed = false\n\t\tthis.open && this.handleShowOptions()\n\t}\n\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (this.clearable) {\n\t\t\tthis.selected.forEach(item => (item.selected = item.hidden = false))\n\t\t\tthis.selected = []\n\t\t\tif (this.displaySelectedElement) {\n\t\t\t\tthis.displaySelectedElement.innerHTML = this.placeholder ?? \"(none)\"\n\t\t\t}\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.changed = false\n\t\tthis.initialValue = [...this.selected]\n\t}\n\t@Watch(\"selected\")\n\tonSelectedChange() {\n\t\tthis.initialValueHandled && (this.changed = !this.areValuesEqual(this.selected, this.initialValue))\n\t\tconst value =\n\t\t\t!this.multiple && this.selected[0]\n\t\t\t\t? this.selected[0].value\n\t\t\t\t: this.multiple && this.selected.length > 0\n\t\t\t\t? this.selected.map(item => item.value)\n\t\t\t\t: undefined\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Watch(\"filter\")\n\tasync onFilterChange(value: string): Promise<void> {\n\t\tvalue = value.toLowerCase()\n\t\tawait Promise.all(this.items.map(item => item.filter(value)))\n\t}\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.listener.changed?.(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputSelect) => void>): Promise<void> {\n\t\tif (event.target && \"name\" in event.target && event.target.name !== this.name) {\n\t\t\tevent.stopPropagation()\n\t\t} else if (Item.type.is(event.target)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.items.push(event.target as HTMLSmoothlyItemElement)\n\t\t}\n\t\tevent.detail(this)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && this.handleShowOptions()\n\t}\n\t@Listen(\"smoothlyItemSelect\")\n\tonItemSelect(event: CustomEvent<HTMLSmoothlyItemElement>): void {\n\t\tevent.stopPropagation()\n\t\tif (this.multiple) {\n\t\t\tthis.selected = event.detail.selected\n\t\t\t\t? [...this.selected, event.detail]\n\t\t\t\t: this.selected.filter(item => item.selected)\n\t\t} else {\n\t\t\tthis.selected[0] && (this.selected[0].hidden = this.selected[0].selected = false)\n\t\t\tthis.selected = !event.detail.selected ? [] : [event.detail]\n\t\t\t!this.showSelected && event.detail.selected && (event.detail.hidden = true)\n\t\t}\n\t\tthis.displaySelected()\n\t\tthis.element.focus()\n\t}\n\t@Watch(\"open\")\n\tonClosed(): void {\n\t\tif (!this.open) {\n\t\t\tconst marked = this.items.find(item => item.marked)\n\t\t\tif (marked)\n\t\t\t\tmarked.marked = false\n\t\t}\n\t}\n\thandleShowOptions(event?: Event): void {\n\t\t!this.readonly &&\n\t\t\t!(event && event.target && this.items.includes(event.target as HTMLSmoothlyItemElement) && this.multiple) &&\n\t\t\t(this.open = !this.open)\n\t\tthis.filter = \"\"\n\t}\n\tareValuesEqual(selected: HTMLSmoothlyItemElement[], initialValue: HTMLSmoothlyItemElement[]): boolean {\n\t\treturn selected.length === initialValue.length && initialValue.every(value => selected.includes(value))\n\t}\n\tdisplaySelected(): void {\n\t\tconst displayString: string = \"<div>\" + this.selected.map(option => option.innerHTML).join(\"</div><div>\") + \"</div>\"\n\t\tthis.displaySelectedElement &&\n\t\t\t(this.displaySelectedElement.innerHTML =\n\t\t\t\tthis.selected.length > 0 ? displayString : this.placeholder ? this.placeholder : \"\")\n\t}\n\t@Listen(\"keydown\")\n\tonKeyDown(event: KeyboardEvent) {\n\t\tevent.stopPropagation()\n\t\tconst visibleItems = this.items.some(item => item.getAttribute(\"hidden\") === null)\n\n\t\tif (event.key != \"Tab\" && !event.ctrlKey && !event.metaKey)\n\t\t\tevent.preventDefault()\n\t\tif (this.open) {\n\t\t\tswitch (event.key) {\n\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tvisibleItems && this.move(-1)\n\t\t\t\t\tbreak\n\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tvisibleItems && this.move(1)\n\t\t\t\t\tbreak\n\t\t\t\tcase \"Escape\":\n\t\t\t\t\tif (this.filter == \"\")\n\t\t\t\t\t\tthis.open = false\n\t\t\t\t\telse\n\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\tbreak\n\t\t\t\tcase \"Backspace\":\n\t\t\t\t\tthis.filter = this.filter.slice(0, -1)\n\t\t\t\t\tbreak\n\t\t\t\tcase \"Enter\":\n\t\t\t\t\tconst result = this.items.find(item => item.marked)\n\t\t\t\t\tif (result?.value)\n\t\t\t\t\t\tresult.selected = !result.selected\n\t\t\t\t\tthis.smoothlyItemSelect.emit(result)\n\t\t\t\t\tif (!this.multiple) {\n\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\tcase \"Tab\":\n\t\t\t\t\tthis.open = false\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t} else {\n\t\t\tswitch (event.key) {\n\t\t\t\tcase \"Enter\":\n\t\t\t\tcase \" \":\n\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\tbreak\n\t\t\t\tcase \"ArrowDown\":\n\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\tthis.move(0)\n\t\t\t\t\tbreak\n\t\t\t\tcase \"ArrowUp\":\n\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\tthis.move(-1)\n\t\t\t\t\tbreak\n\t\t\t\tcase \"Tab\":\n\t\t\t\t\tbreak\n\t\t\t\tdefault:\n\t\t\t\t\tthis.handleShowOptions()\n\t\t\t\t\tif (event.key.length == 1)\n\t\t\t\t\t\tthis.filter += event.key\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\tprivate move(direction: -1 | 0 | 1): void {\n\t\tlet markedIndex = this.items.findIndex(item => item.marked)\n\t\tif (markedIndex == -1)\n\t\t\tmarkedIndex = this.items.findIndex(item => item.selected)\n\t\tif (this.items[markedIndex])\n\t\t\tthis.items[markedIndex].marked = false\n\t\tif (markedIndex == -1)\n\t\t\tmarkedIndex = 0\n\t\tdo {\n\t\t\tmarkedIndex = (markedIndex + direction + this.items.length) % this.items.length\n\t\t} while (this.items[markedIndex].hidden)\n\t\tthis.items[markedIndex].marked = true\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttabIndex={0}\n\t\t\t\tclass={{ \"has-value\": this.selected.length !== 0 }}\n\t\t\t\tonClick={(event: Event) => this.handleShowOptions(event)}>\n\t\t\t\t<div class=\"select-display\" ref={element => (this.displaySelectedElement = element)}>\n\t\t\t\t\t{this.placeholder}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t\t<smoothly-icon size=\"tiny\" name={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"} />\n\t\t\t\t</div>\n\t\t\t\t<slot name=\"label\" />\n\t\t\t\t<div class={`${this.open ? \"\" : \"hidden\"} options`}>\n\t\t\t\t\t{this.filter.length > 0 && (\n\t\t\t\t\t\t<smoothly-item selectable={false}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"search-outline\" size=\"small\" />\n\t\t\t\t\t\t\t{this.filter}\n\t\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\t\tname=\"backspace-outline\"\n\t\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\t\tonClick={e => {\n\t\t\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\t\t\tthis.filter = \"\"\n\t\t\t\t\t\t\t\t\tthis.element.focus()\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t)}\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export interface Submittable {\n\tsubmit(remove?: boolean): Promise<void>\n}\nexport namespace Submittable {\n\texport function is(value: Submittable | any): value is Submittable {\n\t\treturn value && typeof value == \"object\" && typeof value.submit == \"function\"\n\t}\n}\n",":host {\n\tdisplay: flex;\n}\n:host(:not([display])) {\n\tdisplay: none;\n}\n:host::slotted(smoothly-button button > * > * + smoothly-icon),\n:host::slotted(smoothly-button-confirm button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\nimport { Editable } from \"../Editable\"\nimport { Submittable } from \"../Submittable\"\n\n@Component({\n\ttag: \"smoothly-input-submit\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSubmit implements ComponentWillLoad {\n\tprivate parent?: Submittable & Editable\n\t@Prop() delete = false\n\t@Prop() color?: Color\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true, mutable: true }) disabled = false\n\t@Prop({ reflect: true, mutable: true }) display = false\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() toolTip = this.delete ? \"Remove\" : \"Submit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent) && Editable.type.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t\tparent.listen(\"changed\", async p => {\n\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t\tthis.disabled = p.readonly ? true : Object.values(p.value).filter(val => val).length < 1 ? true : !p.changed\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.submit(this.delete)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host title={this.toolTip}>\n\t\t\t\t{this.delete == true ? (\n\t\t\t\t\t<smoothly-button-confirm\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tcolor={this.color ?? \"danger\"}\n\t\t\t\t\t\tfill={this.fill}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t<smoothly-icon name=\"trash-outline\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tsize={this.size}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tshape={this.shape}\n\t\t\t\t\t\texpand={this.expand}\n\t\t\t\t\t\tcolor={this.color ?? \"success\"}\n\t\t\t\t\t\tfill={this.fill}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" fill=\"solid\" />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([selected]) {\n\tbackground-color: rgb(var(--smoothly-primary-shade));\n\tcolor: rgb(var(--smoothly-primary-contrast));\n}\n:host {\n\tpadding: 0.5em;\n\tcursor: pointer;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tborder: rgb(var(--smoothly-default-shade) solid 1px);\n}\n:host([marked]),\n:host:hover {\n\tbackground-color: rgba(var(--smoothly-primary-tint), .3);\n}\n","import {\n\tComponent,\n\tComponentDidLoad,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n} from \"@stencil/core\"\nimport { Item } from \"./Item\"\n\n@Component({\n\ttag: \"smoothly-item\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyItem implements Item, ComponentWillLoad, ComponentDidLoad {\n\t@Element() element: HTMLSmoothlyItemElement\n\t@Prop() value: any\n\t@Prop({ reflect: true, mutable: true }) selected: boolean\n\t@Prop({ reflect: true, mutable: true }) marked: boolean\n\t@Prop() selectable = true\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\t@Listen(\"click\")\n\tonClick() {\n\t\tif (this.selectable) {\n\t\t\tthis.selected = !this.selected\n\t\t\tthis.smoothlyItemSelect.emit(this.element)\n\t\t}\n\t}\n\tcomponentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.selected && this.selectable)\n\t\t\tthis.smoothlyItemSelect.emit(this.element)\n\t}\n\t@Method()\n\tasync filter(filter: string): Promise<void> {\n\t\tconst value = typeof this.value === \"string\" ? this.value : JSON.stringify(this.value ?? \"\")\n\t\tthis.element.hidden =\n\t\t\tfilter && this.selectable\n\t\t\t\t? !(value.includes(filter) || this.element.innerText.toLowerCase().includes(filter))\n\t\t\t\t: false\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host tabIndex={-1} class={!this.selectable ? \"non-selectable\" : \"\"}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tposition: relative;\n\twidth: max-content;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0.15em 0.6em;\n\tborder-radius: 2em;\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tbackground-color: hsl(var(--hue), 85%, 70%);\n}\n\n:host([shape=rectangle]) {\n\tborder-radius: 0.3em;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-label\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLabel {\n\t@Prop() hue: number\n\t@Prop() description: string\n\t@Prop({ reflect: true }) shape: \"rectangle\" | \"rounded\"\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttitle={this.description}\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--hue\": this.hue.toString(),\n\t\t\t\t}}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, FunctionalComponent, h, Host, JSX, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-lazy\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyLazy {\n\t@Prop({ mutable: true }) show = false\n\t@Prop() content?: JSX.Element | FunctionalComponent\n\n\tloadMoreHandler(event: CustomEvent<string>): void {\n\t\tevent.stopPropagation()\n\t\tthis.show = true\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot name=\"before\" />\n\t\t\t\t<smoothly-load-more onSmoothlyLoadMore={e => this.loadMoreHandler(e)} />\n\t\t\t\t{this.show && (typeof this.content == \"function\" ? <this.content /> : this.content)}\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\ttop: var(--offset,)\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-load-more\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class LoadMore implements ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyLoadMoreElement\n\t@Prop() offset = \"0\"\n\t@Prop() name = \"\"\n\t@Prop() multiple = false\n\t@Event() smoothlyLoadMore: EventEmitter<string>\n\n\tcomponentWillLoad(): void {\n\t\tconst observer = new IntersectionObserver((entries, observer) => this.observationHandler(observer, entries))\n\t\tobserver.observe(this.element)\n\t}\n\n\tobservationHandler(observer: IntersectionObserver, entries: IntersectionObserverEntry[]): void {\n\t\tif (entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) {\n\t\t\tthis.smoothlyLoadMore.emit(this.name)\n\t\t\t!this.multiple && (observer.unobserve(this.element), observer.disconnect())\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn <Host style={{ \"--offset\": `${this.offset}` }} />\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 30em;\n\tmin-height: 3em;\n\tborder-radius: 5px;\n\tmargin: 0.5em;\n}\n.clean {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tpadding: 0.5em 1em;\n}\n.icon {\n\tdisplay: grid;\n\twidth: 100%;\n\tgrid-template-columns: 1fr 5fr;\n}\n.icon > p{\n\tpadding-right: 1em;\n}\n:host > span > p {\n\ttext-align: left;\n}\n:host[hidden] {\n\tdisplay: none;\n}\nsmoothly-icon {\n\tleft: 0;\n\tfont-size: 1.2em;\n\talign-self: center;\n\tjustify-self: center;\n}\nsmoothly-trigger {\n\tfont-size: 0.5em;\n\tfloat: right;\n\ttext-align: right;\n\tmargin-right: 0.2em;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport { Color, Notice, Trigger } from \"../../model\"\nimport { Icon } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notification\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notification {\n\t@Prop() notice: Notice\n\t@Prop() closable = true\n\t@Prop() icon = false\n\t@State() tick = {}\n\t@Event() remove: EventEmitter<Notice>\n\tprivate listener: Notice.Listener = notice => {\n\t\tif (notice.state == \"closed\")\n\t\t\tthis.remove.emit(notice)\n\t\telse\n\t\t\tthis.tick = {}\n\t}\n\tprivate get properties(): [Color, Icon | undefined] {\n\t\tlet result: [Color, Icon | undefined]\n\t\tswitch (this.notice.state) {\n\t\t\tcase \"delayed\":\n\t\t\tcase \"warning\":\n\t\t\t\tresult = [\"warning\", \"warning-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"success\":\n\t\t\t\tresult = [\"success\", \"checkmark-circle\"]\n\t\t\t\tbreak\n\t\t\tcase \"executing\":\n\t\t\t\tresult = [\"light\", \"hourglass-outline\"]\n\t\t\t\tbreak\n\t\t\tcase \"failed\":\n\t\t\t\tresult = [\"danger\", \"alert-circle\"]\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = [\"light\", undefined]\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n\n\t@Listen(\"trigger\")\n\tonTrigger(event: CustomEvent<Trigger>) {\n\t\tif (event.detail.name == \"close\") {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.notice.close()\n\t\t}\n\t}\n\n\t@Watch(\"notice\")\n\tonUpdatedNotice(newValue: Notice, oldValue?: Notice) {\n\t\tif (oldValue)\n\t\t\toldValue.unlisten(this.listener)\n\t\tnewValue.listen(this.listener)\n\t}\n\tcomponentDidLoad() {\n\t\tthis.onUpdatedNotice(this.notice)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host color={this.properties[0]} fill=\"solid\">\n\t\t\t\t{this.closable ? (\n\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t<smoothly-icon name=\"close-circle-outline\"></smoothly-icon>\n\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t) : (\n\t\t\t\t\t\"\"\n\t\t\t\t)}\n\t\t\t\t<span class={this.icon ? \"icon\" : \"clean\"}>\n\t\t\t\t\t{this.icon ? <smoothly-icon name={this.properties[1]}></smoothly-icon> : \"\"}\n\t\t\t\t\t<p>{this.notice.message}</p>\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > aside {\n\tdisplay: flex;\n\tflex-wrap: wrap-reverse;\n\talign-content: stretch;\n\tposition: fixed;\n\tbottom: 3rem;\n\tleft: 0;\n\ttext-align: center;\n\tz-index: 100;\n}\n","import { Component, h, Listen, State } from \"@stencil/core\"\nimport { Notice } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-notifier\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Notifier {\n\t@State() notices: Notice[] = []\n\n\t@Listen(\"notice\")\n\tonNotice(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices, event.detail]\n\t}\n\t@Listen(\"remove\")\n\tonRemove(event: CustomEvent<Notice>) {\n\t\tthis.notices = [...this.notices.filter(n => n != event.detail)]\n\t}\n\trender() {\n\t\treturn [\n\t\t\t<slot></slot>,\n\t\t\t<aside>\n\t\t\t\t{this.notices.map(n => (\n\t\t\t\t\t<smoothly-notification notice={n}></smoothly-notification>\n\t\t\t\t))}\n\t\t\t</aside>,\n\t\t]\n\t}\n}\n","@import \"../input/shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\twidth: max-content;\n\tpadding: 1em 0.7em 0.2em 0.8em;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n}\n:host div.element {\n\tdisplay: flex;\n\tbackground-color: inherit;\n}\nsmoothly-slot-elements {\n\twhite-space: nowrap;\n}\n.selected {\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 1rem;\n\twidth: 100%;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmargin-right: 2px;\n}\n.selected::after {\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\twidth: 2ch;\n}\n:host:not([looks=transparent]) .selected::after {\n\tbackground: linear-gradient(90deg, rgba(var(--background-color, var(--smoothly-color-shade)), 0) 0%, rgba(var(--background-color, var(--smoothly-color-shade)), 1) 100%);\n}\n.selected * {\n\tdisplay: none;\n}\n.label {\n\tposition: absolute;\n\tleft: 0.4rem;\n\ttop: 0.6rem;\n\tcolor: rgb(var(--text-color, var(--smoothly-color-contrast)));\n\topacity: 0.8;\n\tuser-select: none;\n\tcursor: inherit;\n\ttransform-origin: top left;\n\ttransition: transform 100ms ease;\n}\n.selected:not(:empty) + .label {\n\ttop: 0.4em;\n\ttransform: scale(0.6);\n}\n","import {\n\tComponent,\n\tComponentDidLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Notice, Option } from \"../../model\"\nimport { Clearable } from \"../input/Clearable\"\nimport { Editable } from \"../input/Editable\"\nimport { Input } from \"../input/Input\"\nimport { Looks } from \"../input/Looks\"\nimport { Controls } from \"./menu\"\n\n@Component({\n\ttag: \"smoothly-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPicker implements Clearable, Editable, Input, ComponentDidLoad {\n\tprivate valueRecivedOnLoad = false\n\tprivate initialValue = new Map<any, Option>()\n\tprivate listener: { changed?: (parent: Editable) => Promise<void> } = {}\n\t@Element() element: HTMLSmoothlyPickerElement\n\t@Prop({ reflect: true, mutable: true }) looks: Looks = \"plain\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) changed = false\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() selected = new Map<any, Option>()\n\t@State() display: Node[]\n\t@Event() smoothlyPickerLoaded: EventEmitter<Controls>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyChange: EventEmitter<Record<string, any | any[]>> // multiple -> any[]\n\t@Event() smoothlyInputLooks: EventEmitter<(looks: Looks) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\tprivate controls?: Controls\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = looks))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.smoothlyInputLoad.emit(() => {\n\t\t\treturn\n\t\t})\n\t\tthis.listener.changed?.(this)\n\t}\n\n\t@Watch(\"selected\")\n\tselectedChanged(): void {\n\t\tconst selected = Array.from(this.selected.values(), option => option.value)\n\t\tthis.changed = !this.areValuesEqual(this.selected, this.initialValue)\n\t\tthis.smoothlyInput.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\tthis.smoothlyChange.emit({ [this.name]: this.multiple ? selected : selected.at(0) })\n\t\tthis.display = Array.from(this.selected.values(), option => {\n\t\t\tconst span = document.createElement(\"span\")\n\t\t\toption.slotted.forEach(node => span.appendChild(node.cloneNode(true)))\n\t\t\treturn span\n\t\t})\n\t\t!this.valueRecivedOnLoad && (this.initialValue = new Map(this.selected))\n\t}\n\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tif (this.controls)\n\t\t\tthis.smoothlyPickerLoaded.emit(this.controls)\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks: Looks) => void>): void {\n\t\tif (event.target != this.element)\n\t\t\tevent.stopPropagation()\n\t}\n\t@Listen(\"smoothlyPickerMenuLoaded\")\n\tmenuLoadedHandler(event: CustomEvent<Controls & { synced: () => boolean }>): void {\n\t\tthis.controls = event.detail\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>): void {\n\t\tif (event.detail.selected)\n\t\t\tthis.selected = this.multiple\n\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t: new Map().set(event.detail.value, event.detail)\n\t\t!this.valueRecivedOnLoad && (this.valueRecivedOnLoad = !this.valueRecivedOnLoad)\n\t}\n\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>): void {\n\t\tif ((this.readonly && !this.valueRecivedOnLoad) || !this.readonly)\n\t\t\tif (this.multiple)\n\t\t\t\tthis.selected = event.detail.selected\n\t\t\t\t\t? new Map(this.selected.set(event.detail.value, event.detail).entries())\n\t\t\t\t\t: !this.selected.delete(event.detail.value)\n\t\t\t\t\t? this.selected\n\t\t\t\t\t: new Map(this.selected.entries())\n\t\t\telse\n\t\t\t\tthis.selected = !event.detail.selected ? new Map() : new Map().set(event.detail.value, event.detail)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tthis.open = !event.composedPath().includes(this.element) || this.readonly ? false : !this.open\n\t}\n\t@Listen(\"focusin\", { target: \"window\" })\n\tfocusHandler(event: FocusEvent) {\n\t\tif (!event.composedPath().includes(this.element))\n\t\t\tthis.open = false\n\t}\n\t@Method()\n\tasync clear() {\n\t\tthis.selected.forEach(option => option.selected && option.element.clickHandler())\n\t}\n\t@Method()\n\tasync listen(property: \"changed\", listener: (parent: Editable) => Promise<void>): Promise<void> {\n\t\tthis.listener[property] = listener\n\t\tlistener(this)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tawait this.reset()\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tconst initialValueArray = Array.from(this.initialValue.values(), option => option.value)\n\t\tthis.selected.forEach(\n\t\t\toption => !initialValueArray.includes(option.value) && option.selected && option.set.selected(false)\n\t\t)\n\t\tthis.initialValue.forEach(option => option.set.selected(true))\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = new Map(this.selected)\n\t\tthis.selectedChanged()\n\t}\n\tareValuesEqual(selected: Map<any, Option>, initialValue: Map<any, Option>): boolean {\n\t\tconst initialValueArray = Array.from(initialValue.values(), option => option.value)\n\t\tconst selectedArray = Array.from(selected.values(), option => option.value)\n\t\treturn (\n\t\t\tselectedArray.length === initialValueArray.length &&\n\t\t\tinitialValueArray.every(value => selectedArray.includes(value))\n\t\t)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host tabindex={0}>\n\t\t\t\t<smoothly-slot-elements class={\"selected\"} nodes={this.display} />\n\t\t\t\t<span class={\"label\"}>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</span>\n\t\t\t\t<button type=\"button\">\n\t\t\t\t\t<smoothly-icon size=\"tiny\" name={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"} />\n\t\t\t\t</button>\n\t\t\t\t<slot name=\"child\" />\n\t\t\t\t<smoothly-picker-menu\n\t\t\t\t\topen={this.open}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tonClick={e => e.stopPropagation()}\n\t\t\t\t\tmultiple={this.multiple}\n\t\t\t\t\tmutable={this.mutable}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tvalidator={this.validator}>\n\t\t\t\t\t<slot name=\"search\" slot=\"search\" />\n\t\t\t\t\t<slot name=\"display\" slot=\"display\" />\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-picker-menu>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n:host smoothly-form {\n\tmax-width: 50rem;\n}\n:host .counter {\n\tposition: relative;\n\twidth: 3rem;\n\theight: 3rem;\n}\n:host .counter-button {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tpadding: 0;\n\tmargin: 0;\n\theight: 3rem;\n\twidth: 3rem;\n\tbackground-color: inherit;\n\tborder: none;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n:host .controlled smoothly-input:not([readonly]),\n:host .controlled smoothly-picker:not([readonly]) {\n\toutline: 1px solid rgb(var(--smoothly-success-color));\n}\n","import { Component, h, Host, Listen, State } from \"@stencil/core\"\nimport { Data, Notice } from \"../../../model\"\nimport { Controls } from \"../menu\"\n\nfunction validateEmail(email: string) {\n\treturn email.match(/^.+@.+/) ? true : { result: false, notice: Notice.failed(\"That is not an email\") }\n}\n\n@Component({\n\ttag: \"smoothly-picker-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPickerDemo {\n\tprivate controls?: Controls\n\tprivate users: Record<string, string | undefined> = {\n\t\t\"giovani@rocket.com\": \"giovani doe\",\n\t\t\"jessie@rocket.com\": \"jessie doe\",\n\t\t\"james@rocket.com\": \"james doe\",\n\t}\n\t@State() counter = 3\n\t@State() data = {\n\t\tmessage: \"hello world\",\n\t\temails: [{ value: \"jessie@rocket.com\" }, { value: \"james@rocket.com\" }],\n\t\toptions: [\n\t\t\t{ value: \"giovani@rocket.com\" },\n\t\t\t{ value: \"john@example.com\" },\n\t\t\t{ value: \"jane@example.com\" },\n\t\t\t{ value: \"jack@example.com\" },\n\t\t\t{ value: \"jessica@example.com\" },\n\t\t\t{ value: \"julia@example.com\" },\n\t\t\t{ value: \"jayden@example.com\" },\n\t\t\t{ value: \"jake@example.com\" },\n\t\t\t{ value: \"jamie@example.com\" },\n\t\t\t{ value: \"jasmine@example.com\" },\n\t\t],\n\t}\n\t@State() change?: SmoothlyPickerDemo[\"data\"]\n\tinputHandler(event: CustomEvent<Data>) {\n\t\tif (this.change) {\n\t\t\tthis.change = {\n\t\t\t\t...this.change,\n\t\t\t\t...event.detail,\n\t\t\t}\n\t\t\tconsole.log(\"demo input\", this.change)\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormSubmit\")\n\tsubmitHandler(event: CustomEvent<Data>) {\n\t\tconsole.log(\"submitted\", event.detail)\n\t}\n\tclickHandler() {\n\t\tif (!this.change)\n\t\t\tthis.controls?.remember()\n\t\telse\n\t\t\tthis.controls?.restore()\n\t\tthis.change = this.change ? undefined : { ...this.data, emails: [...this.data.emails] }\n\t}\n\tloadedHandler(event: CustomEvent<Controls>) {\n\t\tthis.controls = event.detail\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button onClick={() => (this.counter += 1)}>Add one</smoothly-button>\n\t\t\t\t\t<smoothly-button onClick={() => (this.counter -= 1)}>Remove one</smoothly-button>\n\t\t\t\t\t<smoothly-picker\n\t\t\t\t\t\tclass={\"counter\"}\n\t\t\t\t\t\tkey={Array.from({ length: this.counter }).toString()}\n\t\t\t\t\t\tname=\"counter\"\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\tmutable>\n\t\t\t\t\t\t{Array.from({ length: this.counter }).map((_, index) => (\n\t\t\t\t\t\t\t<smoothly-picker-option value={index} selected={index < this.counter - 1}>\n\t\t\t\t\t\t\t\t{index}\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<button slot=\"child\" class={\"counter-button\"}>\n\t\t\t\t\t\t\t<smoothly-icon name={\"add-outline\"} />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t</div>\n\n\t\t\t\t<h5>Controlled input</h5>\n\t\t\t\t<smoothly-button color={\"secondary\"} onClick={() => this.clickHandler()}>\n\t\t\t\t\t{!this.change ? \"start edit\" : \"end edit\"}\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-form class={\"controlled\"} looks=\"line\" onSmoothlyFormInput={e => this.inputHandler(e)}>\n\t\t\t\t\t<smoothly-input readonly={!this.change} name=\"message\" value={this.data.message}>\n\t\t\t\t\t\tMessage\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker\n\t\t\t\t\t\tname=\"emails\"\n\t\t\t\t\t\tmutable\n\t\t\t\t\t\tmultiple\n\t\t\t\t\t\treadonly={!this.change}\n\t\t\t\t\t\tvalidator={validateEmail}\n\t\t\t\t\t\tonSmoothlyPickerLoaded={e => this.loadedHandler(e)}>\n\t\t\t\t\t\t<span slot=\"label\">Emails</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-add-outline\" />\n\t\t\t\t\t\t{(this.change?.emails ?? this.data.emails).map(email => (\n\t\t\t\t\t\t\t<smoothly-picker-option\n\t\t\t\t\t\t\t\tkey={email.value}\n\t\t\t\t\t\t\t\tvalue={email}\n\t\t\t\t\t\t\t\tselected\n\t\t\t\t\t\t\t\tsearch={[this.users[email.value] ?? []].flat()}>\n\t\t\t\t\t\t\t\t<span>{this.users[email.value]}</span>\n\t\t\t\t\t\t\t\t<span slot=\"label\">{email.value}</span>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-outline\" />\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{this.data.options.map(email => (\n\t\t\t\t\t\t\t<smoothly-picker-option key={email.value} value={email} search={[this.users[email.value] ?? []].flat()}>\n\t\t\t\t\t\t\t\t<span>{this.users[email.value]}</span>\n\t\t\t\t\t\t\t\t<span slot=\"label\">{email.value}</span>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" slot=\"display\" name=\"person-outline\" />\n\t\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-input-clear slot={\"submit\"} type=\"form\" color=\"danger\" fill=\"solid\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-button slot={\"submit\"} color={\"secondary\"} onClick={() => this.controls?.clear()}>\n\t\t\t\t\t\tRemoved added by mutation\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-submit size=\"icon\" slot=\"submit\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" />\n\t\t\t\t\t</smoothly-submit>\n\t\t\t\t</smoothly-form>\n\n\t\t\t\t<h5>uncontrolled inputs</h5>\n\t\t\t\t<smoothly-form onSmoothlyFormSubmit={e => console.log(\"submitted\", e.detail)} looks=\"line\">\n\t\t\t\t\t<smoothly-input name=\"purpose\" type=\"text\">\n\t\t\t\t\t\tPurpose\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-picker multiple mutable name=\"emails\" validator={validateEmail}>\n\t\t\t\t\t\t<span slot=\"label\">Emails</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"james@rocket.com\"}>james@rocket.com</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"jessie@rocket.com\"}>\n\t\t\t\t\t\t\tjessie@rocket.com\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"giovanni@rocket.com\"}>giovanni@rocket.com</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit</smoothly-submit>\n\t\t\t\t\t<smoothly-input-clear type=\"form\" color=\"danger\" fill=\"solid\" slot=\"clear\">\n\t\t\t\t\t\tClear\n\t\t\t\t\t</smoothly-input-clear>\n\t\t\t\t\t<smoothly-picker name=\"shape\">\n\t\t\t\t\t\t<span slot=\"label\">Shape</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option value={\"circle\"}>\n\t\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t\t<smoothly-picker multiple readonly name=\"animals\">\n\t\t\t\t\t\t<span slot=\"label\">Animals</span>\n\t\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t\t<smoothly-picker-option selected value={\"cat\"}>\n\t\t\t\t\t\t\tCat\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"dog\"}>Dog</smoothly-picker-option>\n\t\t\t\t\t\t<smoothly-picker-option value={\"fish\"}>Fish</smoothly-picker-option>\n\t\t\t\t\t</smoothly-picker>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<smoothly-picker looks=\"border\" name=\"icon\" multiple>\n\t\t\t\t\t<span slot=\"label\">Icon</span>\n\t\t\t\t\t<span slot=\"search\">Search</span>\n\t\t\t\t\t<smoothly-picker-option value={\"circle\"} required>\n\t\t\t\t\t\t<span slot=\"label\">Circle</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"ellipse-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"cube\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Cube</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cube-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"square\"} selected>\n\t\t\t\t\t\t<span slot={\"label\"}>Square</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"square-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"airplane\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Airplane</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"airplane-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"alarm\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Alarm</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"alarm-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"archive\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Archive</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"archive-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"bag\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Bag</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"bag-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"cafe\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Cafe</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"cafe-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"disc\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Disc</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"disc-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"earth\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Earth</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"earth-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t<smoothly-picker-option value={\"fast-food\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Fast food</span>\n\t\t\t\t\t\t<smoothly-icon size=\"tiny\" name=\"fast-food-outline\" />\n\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t</smoothly-picker>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 0.5rem;\n\tposition: absolute;\n\tz-index: 4;\n\tleft: -1px;\n\tright: -1px;\n\tmin-width: max-content;\n\tbackground-color: rgb(var(--background-color, var(--smoothly-color-shade)));\n\tpadding: 0.5rem;\n\tborder: rgb(var(--text-color, var(--smoothly-color-contrast))) solid 1px;\n}\n:host:not(.flip) {\n\ttop: 100%;\n}\n:host.flip {\n\tbottom: 100%;\n}\n:host:not([open]) {\n\tdisplay: none;\n}\n:host .list {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr auto;\n\talign-items: center;\n\trow-gap: 0.5ch;\n\toverflow-y: auto;\n\tmax-height: calc(1.75rem * 10 + 0.5ch * 9);\n\tpadding-right: 0.5rem;\n\tpadding-bottom: 0.25rem;\n}\n:host .hide {\n\tdisplay: none;\n}\n:host .controls {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\tgap: 0.5rem;\n\ttransition: grid-template-columns 200ms linear;\n}\n:host .controls > button:disabled {\n\topacity: 0.3;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, State, Watch } from \"@stencil/core\"\nimport global from \"../../../global/index\"\nimport { Notice, Option } from \"../../../model\"\nimport { Looks } from \"../../input/Looks\"\nimport { Slot } from \"../slot-elements\"\n\nconst Observers = global().Observers\n\nfunction* chain<T>(...iterables: Iterable<T>[]): Iterable<T> {\n\tfor (const iterable of iterables)\n\t\tyield* iterable\n}\n\nfunction restore<T extends Option>(target: T | undefined, source: Option): T | undefined {\n\ttarget?.set.selected((target.selected = source.selected))\n\ttarget?.set.readonly((target.readonly = source.readonly))\n\ttarget?.set.visible((target.visible = source.visible))\n\ttarget?.set.value((target.value = source.value))\n\ttarget?.set.search((target.search = source.search))\n\treturn target\n}\nfunction restoreListener(ref: HTMLElement | undefined, option: Option) {\n\tref?.addEventListener(\"smoothlyPickerOptionLoad\", (e: CustomEvent<Option>) => restore(e.detail, option))\n}\nexport interface Controls {\n\tremember: () => void\n\trestore: () => void\n\tclear: () => void\n}\n@Component({\n\ttag: \"smoothly-picker-menu\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPickerMenu {\n\t@Element() element: HTMLSmoothlyPickerMenuElement\n\t@Prop() looks: Looks\n\t@Prop({ reflect: true }) open = false\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop({ reflect: true }) mutable = false\n\t@Prop({ reflect: true }) readonly = false\n\t@Prop() validator?: (value: string) => boolean | { result: boolean; notice: Notice }\n\t@State() backend = new Map<any, Option & { clone: Node }>() // value -> Option\n\t@State() options = new Map<any, Option>() // value -> Option\n\t@State() created = new Map<any, Option.Created>()\n\t@State() search = \"\"\n\t@State() valid = false\n\t@State() display: Node[]\n\t@State() flip = false\n\t@State() flipChecked = false\n\t@Event() notice: EventEmitter<Notice>\n\t@Event() smoothlyPickerMenuLoaded: EventEmitter<Controls>\n\tprivate memory?: { backend: SmoothlyPickerMenu[\"backend\"]; options: SmoothlyPickerMenu[\"options\"] }\n\tprivate listElement?: HTMLElement\n\tprivate searchElement?: HTMLElement\n\n\tcomponentWillLoad() {\n\t\tif (!Observers.has(this.element)) {\n\t\t\tconst threshold = 0.4\n\t\t\tObservers.set(\n\t\t\t\tthis.element,\n\t\t\t\tnew IntersectionObserver(\n\t\t\t\t\tentries =>\n\t\t\t\t\t\t(entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) < threshold &&\n\t\t\t\t\t\t!this.flipChecked &&\n\t\t\t\t\t\t((this.flip = !this.flip), (this.flipChecked = true)),\n\t\t\t\t\t{ threshold }\n\t\t\t\t)\n\t\t\t)\n\t\t}\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyPickerMenuLoaded.emit({\n\t\t\tremember: () => {\n\t\t\t\tthis.memory = {\n\t\t\t\t\tbackend: new Map(Array.from(this.backend.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t\toptions: new Map(Array.from(this.options.entries(), ([value, option]) => [value, { ...option }])),\n\t\t\t\t}\n\t\t\t},\n\t\t\trestore: () => {\n\t\t\t\tif (this.memory) {\n\t\t\t\t\tfor (const option of this.options.values()) {\n\t\t\t\t\t\tconst memory = this.memory.options.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t\tfor (const option of this.backend.values()) {\n\t\t\t\t\t\tconst memory = this.memory.backend.get(option.value)\n\t\t\t\t\t\tif (memory != undefined)\n\t\t\t\t\t\t\trestore(option, memory)\n\t\t\t\t\t\telse if (this.created.get(option.value))\n\t\t\t\t\t\t\toption.set.selected((option.selected = false))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tclear: () => {\n\t\t\t\tconst backend = Array.from(this.backend.entries())\n\t\t\t\tbackend.filter(([key]) => this.created.has(key)).forEach(([, option]) => option.set.selected(false))\n\t\t\t\tthis.backend = new Map(backend.filter(([key]) => !this.created.has(key)))\n\t\t\t\tthis.options = new Map(Array.from(this.options.entries()).filter(([key]) => !this.created.has(key)))\n\t\t\t\tthis.created = new Map()\n\t\t\t},\n\t\t})\n\t}\n\tdisconnectedCallback() {\n\t\tif (!this.element.parentElement) {\n\t\t\tObservers.get(this.element)?.disconnect()\n\t\t\tObservers.remove(this.element)\n\t\t}\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tconst observer = Observers.get(this.element)\n\t\tif (this.open)\n\t\t\tobserver?.observe(this.element)\n\t\telse\n\t\t\tobserver?.unobserve(this.element)\n\t}\n\n\t@Watch(\"readonly\")\n\treadonlyChanged() {\n\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\toption.element, option.set.readonly(this.readonly)\n\t}\n\t@Listen(\"scroll\", { target: \"window\" })\n\tscrollHandler() {\n\t\tthis.flipChecked = false\n\t}\n\t@Listen(\"smoothlyPickerOptionLoad\")\n\toptionLoadHandler(event: CustomEvent<Option.Load>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail.set.readonly(this.readonly)\n\n\t\t\tconst current = this.options.get(event.detail.value)\n\t\t\tif (current)\n\t\t\t\tevent.detail.set.selected(current.element.selected)\n\t\t}\n\t}\n\t@Listen(\"smoothlyPickerOptionLoaded\")\n\toptionLoadedHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst current = restore(this.backend.get(event.detail.value), event.detail)\n\t\t\tthis.backend = new Map(\n\t\t\t\tthis.backend\n\t\t\t\t\t.set(event.detail.value, {\n\t\t\t\t\t\t...event.detail,\n\t\t\t\t\t\tclone: current?.clone ?? event.detail.element.cloneNode(true),\n\t\t\t\t\t})\n\t\t\t\t\t.entries()\n\t\t\t)\n\t\t} else\n\t\t\tthis.options.set(event.detail.value, event.detail)\n\t}\n\t@Listen(\"smoothlyPickerOptionChange\")\n\toptionChangeHandler(event: CustomEvent<Option>) {\n\t\tif (!this.listElement || !event.composedPath().includes(this.listElement)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.options.get(event.detail.value)?.set.selected(event.detail.selected)\n\t\t} else {\n\t\t\tconst current = this.backend.get(event.detail.value)\n\t\t\tif (current?.element.parentElement)\n\t\t\t\tcurrent?.set.selected(event.detail.selected)\n\t\t}\n\n\t\tif (!this.readonly && !this.multiple && event.detail.selected)\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\tif (option.value != event.detail.value)\n\t\t\t\t\toption.set.selected(false)\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.search = event.detail.search\n\t\tif (!this.search) {\n\t\t\tthis.valid = false\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\toption.set.visible(true)\n\t\t} else {\n\t\t\tthis.valid = !Array.from(this.options.values()).find(option => option.value == this.search)\n\t\t\tconst search = this.search.toLocaleLowerCase()\n\t\t\tfor (const option of chain(this.options.values(), this.backend.values())) {\n\t\t\t\tconst value = option.value.toString().toLocaleLowerCase().includes(search)\n\t\t\t\tconst searches = option.search.some(value => value.includes(search))\n\t\t\t\tconst result = value || searches\n\t\t\t\toption.set.visible(result)\n\t\t\t}\n\t\t}\n\t}\n\taddHandler() {\n\t\tconst validation = !this.validator ? true : this.validator(this.search)\n\t\tif (this.mutable) {\n\t\t\tif (typeof validation == \"object\" ? validation.result : validation) {\n\t\t\t\tif (!this.multiple)\n\t\t\t\t\tfor (const option of chain(this.options.values(), this.backend.values()))\n\t\t\t\t\t\toption.set.selected(false)\n\t\t\t\tthis.created = new Map(this.created.set(this.search, { value: this.search, selected: true }).entries())\n\t\t\t\tthis.search = \"\"\n\t\t\t\tthis.searchElement?.focus()\n\t\t\t\tthis.valid = false\n\t\t\t}\n\t\t\tif (typeof validation == \"object\")\n\t\t\t\tthis.notice.emit(validation.notice)\n\t\t}\n\t}\n\tkeyDownHandler(event: KeyboardEvent) {\n\t\tif (event.key == \"Enter\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.addHandler()\n\t\t}\n\t}\n\t@Listen(\"smoothlySlotEmpty\")\n\temptyDisplayHandler(event: CustomEvent<Slot>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail.set.nodes(this.display)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ valid: this.valid, flip: this.flip }}>\n\t\t\t\t<smoothly-slotted-elements class={\"hide\"} onSmoothlySlottedChange={e => (this.display = e.detail)}>\n\t\t\t\t\t<slot name=\"display\" />\n\t\t\t\t</smoothly-slotted-elements>\n\t\t\t\t<div class={\"hide\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t{Array.from(this.created.values(), option => (\n\t\t\t\t\t\t<smoothly-picker-option key={option.value} value={option.value} selected={option.selected}>\n\t\t\t\t\t\t\t{option.value}\n\t\t\t\t\t\t\t<smoothly-slot-elements slot=\"display\" nodes={this.display} />\n\t\t\t\t\t\t</smoothly-picker-option>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"controls\"}>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tref={e => (this.searchElement = e)}\n\t\t\t\t\t\tname=\"search\"\n\t\t\t\t\t\tvalue={this.search}\n\t\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\t\tonKeyDown={e => this.keyDownHandler(e)}\n\t\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\t\tonSmoothlyChange={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}>\n\t\t\t\t\t\t<slot name=\"search\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t{this.mutable && !this.readonly ? (\n\t\t\t\t\t\t<button onClick={() => this.addHandler()} disabled={!this.valid} type={\"button\"}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"add-outline\" />\n\t\t\t\t\t\t</button>\n\t\t\t\t\t) : null}\n\t\t\t\t</div>\n\t\t\t\t<div class={\"list\"} ref={e => (this.listElement = e)}>\n\t\t\t\t\t{Array.from(this.backend.values())\n\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t\t\t.map(option => (\n\t\t\t\t\t\t\t<smoothly-slot-elements ref={e => restoreListener(e, option)} clone={false} nodes={option.clone} />\n\t\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n:host(:not([visible])) {\n\tdisplay: none;\n}\n:host > * {\n\tcursor: pointer;\n\tpadding: 0.25ch 0.5rem\n}\n:host .display {\n\tpadding-left: 0;\n}\n:host button {\n\tcolor: unset;\n\tbackground-color: inherit;\n\tborder: none;\n\tpadding-right: 0;\n}\n:host .content {\n\tdisplay: flex;\n\tcolumn-gap: 1rem;\n\tjustify-content: space-between;\n}\n:host([required]) > * {\n\tcursor: default;\n}\n:host([required]) button {\n\topacity: 0.65;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { Option } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-picker-option\",\n\tstyleUrl: \"style.css\",\n\tshadow: true,\n})\nexport class SmoothlyPickerOption {\n\t@Element() element: HTMLSmoothlyPickerOptionElement\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) visible = true\n\t@Prop({ mutable: true }) value: any\n\t@Prop({ mutable: true }) search: string[] = []\n\t@Prop({ reflect: true }) position = -1\n\t@Prop({ reflect: true }) required = false\n\t@State() readonly = false\n\t@State() slotted: Node[] = []\n\t@Event() smoothlyPickerOptionLoad: EventEmitter<Option.Load>\n\t@Event() smoothlyPickerOptionLoaded: EventEmitter<Option>\n\t@Event() smoothlyPickerOptionChange: EventEmitter<Option>\n\n\tget option(): Option {\n\t\treturn {\n\t\t\telement: this.element,\n\t\t\tselected: this.selected,\n\t\t\treadonly: this.readonly,\n\t\t\trequired: this.required,\n\t\t\tvisible: this.visible,\n\t\t\tsearch: this.search,\n\t\t\tvalue: this.value,\n\t\t\tslotted: this.slotted,\n\t\t\tposition:\n\t\t\t\tthis.position >= 0 || !this.element.parentElement?.parentElement\n\t\t\t\t\t? this.position\n\t\t\t\t\t: Array.from(this.element.parentElement.parentElement.children).indexOf(this.element.parentElement),\n\t\t\tset: {\n\t\t\t\tselected: selected => (this.selected = selected),\n\t\t\t\treadonly: readonly => (this.readonly = readonly),\n\t\t\t\tvisible: visible => (this.visible = visible),\n\t\t\t\tsearch: search => (this.search = search),\n\t\t\t\tvalue: value => (this.value = value),\n\t\t\t},\n\t\t}\n\t}\n\t@Watch(\"position\")\n\t@Watch(\"selected\")\n\t@Watch(\"slotted\")\n\temitChange() {\n\t\tif (this.element.parentElement)\n\t\t\tthis.smoothlyPickerOptionChange.emit(this.option)\n\t}\n\n\tcomponentWillLoad() {\n\t\tif (this.required)\n\t\t\tthis.selected = true\n\t\tthis.smoothlyPickerOptionLoad.emit((({ slotted, ...option }) => option)(this.option))\n\t}\n\tcomponentDidLoad() {\n\t\tthis.smoothlyPickerOptionLoaded.emit(this.option)\n\t}\n\tslottedChangeHandler(event: CustomEvent<Node[]>) {\n\t\tevent.stopPropagation()\n\t\tthis.slotted = event.detail\n\t}\n\t@Method()\n\tasync clickHandler() {\n\t\tif (!this.readonly && !this.required)\n\t\t\tthis.selected = !this.selected\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ visible: this.visible }} onClick={() => this.clickHandler()}>\n\t\t\t\t<div part=\"display\" class={\"display\"}>\n\t\t\t\t\t<slot name=\"display\" />\n\t\t\t\t</div>\n\t\t\t\t<div part=\"content\" class={\"content\"}>\n\t\t\t\t\t<smoothly-slotted-elements onSmoothlySlottedChange={e => this.slottedChangeHandler(e)} clone>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</smoothly-slotted-elements>\n\t\t\t\t\t<slot name={\"label\"} />\n\t\t\t\t</div>\n\t\t\t\t<button type={\"button\"}>\n\t\t\t\t\t<smoothly-icon name={this.selected ? \"checkbox-outline\" : \"square-outline\"} />\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: inline-flex;\n\tposition: relative;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host:not([visible]) .popup {\n\tdisplay: none;\n}\n:host .popup {\n\tdisplay: inline;\n\tposition: absolute;\n\tpadding: 0.3em;\n\tleft: var(--left);\n\tright: var(--right);\n\tbackground-color: rgb(238, 238, 238);\n\tborder-color: rgb(238, 238, 238);\n\tborder-style: solid;\n\tborder-width: 0.1em;\n\tborder-radius: 0.6em;\n\tz-index: 3;\n}\n:host[direction=down] .popup {\n\ttop: 2.2em;\n\tbox-shadow: 6px 5px 9px -9px black, 5px 6px 9px -9px black;\n}\n:host[direction=up] .popup {\n\tbottom: 2.2em;\n\tbox-shadow: -6px -5px 9px -9px black, -5px -6px 9px -9px black;\n}\n:host:not([visible]) .background {\n\tdisplay: none;\n}\n:host .background {\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\twidth: 100vw;\n\theight: 100vh;\n\tz-index: 2;\n}\n:host:not([visible]) .arrow {\n\tdisplay: none;\n}\n:host .arrow {\n\tbackground-color: rgb(238, 238, 238);\n\tborder-color: rgb(238, 238, 238);\n\tz-index: 2;\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 12px;\n\theight: 12px;\n\ttransform: rotate(45deg);\n\tleft: calc(var(--left) + 1em);\n\tright: calc(var(--right) + 1em);\n}\n:host[direction=down] .arrow {\n\ttop: 2em;\n\tborder-top-style: solid;\n\tborder-top-width: 1px;\n\tborder-left-style: solid;\n\tborder-left-width: 1px;\n}\n:host[direction=up] .arrow {\n\tbottom: 2em;\n\tborder-bottom-style: solid;\n\tborder-bottom-width: 1px;\n\tborder-right-style: solid;\n\tborder-right-width: 1px;\n}\n:host .pointer {\n\tcursor: pointer;\n}\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport { Component, Event, EventEmitter, h, Host, Prop, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-popup\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyPopup {\n\t@Prop({ mutable: true, reflect: true }) visible = false\n\t@Prop({ mutable: true, reflect: true }) direction: \"up\" | \"down\" = \"down\"\n\t@State() cssVariables: { \"--left\"?: string; \"--right\"?: string } = { \"--left\": \"0.1em\" }\n\t@Event() popup: EventEmitter<boolean>\n\tprivate popupElement: HTMLElement | undefined\n\n\tprivate onClick() {\n\t\tif (this.visible == false) {\n\t\t\tthis.popupElement?.style.setProperty(\"display\", \"block\")\n\t\t\tthis.cssVariables =\n\t\t\t\t(this.popupElement?.getBoundingClientRect().right ?? 0) >= window.innerWidth\n\t\t\t\t\t? { \"--right\": \"0.1em\" }\n\t\t\t\t\t: (this.popupElement?.getBoundingClientRect().left ?? 0) < 0\n\t\t\t\t\t? { \"--left\": \"0.1em\" }\n\t\t\t\t\t: this.cssVariables\n\t\t\tthis.popupElement?.style.removeProperty(\"display\")\n\t\t}\n\t\tthis.visible = !this.visible\n\t\tthis.popup.emit(this.visible)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host style={{ ...this.cssVariables }}>\n\t\t\t\t<div class=\"pointer\" onClick={() => this.onClick()}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"background\" onClick={() => this.onClick()}></div>\n\t\t\t\t<div class=\"arrow\" onClick={() => this.onClick()}></div>\n\t\t\t\t<div class=\"popup\" ref={el => (this.popupElement = el)}>\n\t\t\t\t\t<slot name=\"popup\"></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\topacity: 0.5;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-quiet\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyQuiet {\n\t@Prop() color: string\n\trender() {\n\t\treturn (\n\t\t\t<Host color={this.color}>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host[hidden] {\n\tdisplay: none;\n}\nbutton:focus {\n\toutline: none;\n}\nsmoothly-selector {\n\toutline: none;\n}\nbutton {\n\tdisplay: block;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-select-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySelectDemo {\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-tab-switch>\n\t\t\t\t<smoothly-tab label=\"test1\" open>\n\t\t\t\t\tHello world!\n\t\t\t\t</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test2\">this is a test message!</smoothly-tab>\n\t\t\t\t<smoothly-tab label=\"test3\">this is a test message again!</smoothly-tab>\n\t\t\t</smoothly-tab-switch>,\n\t\t]\n\t}\n}\n",":host {\n\tdisplay: block;\n\theight: 1rem;\n}\n:host(::before) {\n\tcontent: \"\";\n\tdisplay: block;\n\twidth: var(--width);\n\theight: 100%;\n\tborder-radius: 0.4rem;\n\tbackground-image: linear-gradient(90deg, rgb(var(--color, var(--smoothly-dark-color))) 0, transparent 2.5rem, rgb(var(--color, var(--smoothly-dark-color))) 5rem);\n\tbackground-size: calc(var(--distance) + 5rem);\n\tanimation-duration: var(--period, 1.6s);\n\tanimation-iteration-count: infinite;\n\tanimation-timing-function: linear;\n\tanimation-name: shine-lines-left;\n}\n@keyframes shine-lines-left {\n\t0% {\n\t\tbackground-position: -5rem;\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: var(--distance);\n\t}\n}\n:host([align=center]::before) {\n\tmargin: 0 auto;\n\tanimation-name: shine-lines-center;\n}\n@keyframes shine-lines-center {\n\t0% {\n\t\tbackground-position: calc((var(--width) - var(--distance)) / 2 - 5rem);\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: calc(var(--width) + (var(--distance) - var(--width)) / 2);\n\t}\n}\n:host([align=right]::before) {\n\tmargin: 0;\n\tmargin-left: auto;\n\tanimation-name: shine-lines-right;\n}\n@keyframes shine-lines-right {\n\t0% {\n\t\tbackground-position: calc(var(--width) - var(--distance) - 5rem);\n\t}\n\t40%,\n\t100% {\n\t\tbackground-position: var(--width);\n\t}\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-skeleton\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySkeleton {\n\t@Prop() widths: string[] = [\"8rem\", \"9rem\", \"10rem\"]\n\t@Prop({ mutable: true }) width: string\n\t@Prop() color: string\n\t@Prop() period: number\n\t@Prop() distance: string\n\t@Prop({ reflect: true }) align: \"left\" | \"center\" | \"right\" = \"left\"\n\tcomponentWillLoad() {\n\t\tthis.width = this.width ?? this.widths[Math.floor(Math.random() * this.widths.length)]\n\t}\n\trender() {\n\t\tconst cssVariables = {\n\t\t\t\"--width\": this.width,\n\t\t\t\"--distance\": this.distance ?? \"10rem\",\n\t\t\t...(this.color ? { \"--color\": this.color } : undefined),\n\t\t\t...(this.period ? { \"--period\": this.period + \"s\" } : undefined),\n\t\t}\n\t\treturn <Host style={cssVariables}></Host>\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, Watch } from \"@stencil/core\"\n\nexport interface Slot {\n\tset: {\n\t\tnodes: (nodes: Node | Node[]) => void\n\t}\n}\n\n@Component({\n\ttag: \"smoothly-slot-elements\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySlotElements {\n\t@Element() element: HTMLElement\n\t@Prop() clone = true\n\t@Prop({ mutable: true }) nodes?: Node | Node[]\n\t@Event() smoothlySlotEmpty: EventEmitter<Slot>\n\n\tcomponentWillLoad() {\n\t\tif (!this.nodes)\n\t\t\tthis.smoothlySlotEmpty.emit({\n\t\t\t\tset: {\n\t\t\t\t\tnodes: nodes => (this.nodes = nodes),\n\t\t\t\t},\n\t\t\t})\n\t}\n\n\t@Watch(\"nodes\")\n\tcomponentDidLoad() {\n\t\tthis.element.innerHTML = \"\"\n\t\tif (this.nodes)\n\t\t\tif (Array.isArray(this.nodes))\n\t\t\t\tthis.nodes.forEach(node => this.element.appendChild(this.clone ? node.cloneNode(true) : node))\n\t\t\telse\n\t\t\t\tthis.element.appendChild(this.clone ? this.nodes.cloneNode(true) : this.nodes)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-slotted-elements\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySottedElement {\n\t@Element() element: HTMLElement\n\t@Prop() clone = true\n\t@Event() smoothlySlottedChange: EventEmitter<Node[]>\n\n\tcomponentDidRender() {\n\t\tconst slotted = Array.from(this.element.childNodes, child => {\n\t\t\tlet result: Node | Node[]\n\t\t\tif (child instanceof HTMLSlotElement) {\n\t\t\t\tconst assigned = child.assignedNodes()\n\t\t\t\tresult = assigned.length\n\t\t\t\t\t? assigned.map(child => (this.clone ? child.cloneNode(true) : child))\n\t\t\t\t\t: this.clone\n\t\t\t\t\t? child.cloneNode(true)\n\t\t\t\t\t: child\n\t\t\t} else\n\t\t\t\tresult = child\n\t\t\treturn result\n\t\t}).flat()\n\t\tthis.smoothlySlottedChange.emit(Array.from(slotted, child => (this.clone ? child.cloneNode(true) : child)))\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","$time: 1.4s;\n:host:not([active]) {\n\tdisplay: none;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host {\n\tdisplay: block;\n\tstroke: rgb(var(--spinner-color, var(--smoothly-primary-tint)));\n\tposition: absolute;\n\tz-index: 4;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tbackground-color: rgba(var(--background-color, var(--smoothly-default-color)), var(--background-opacity, var(--smoothly-semitransparent, 0.8)));\n\tsvg {\n\t\tposition: absolute;\n\t\tleft: calc(50% - var(--size) / 2);\n\t\ttop: calc(50% - var(--size) / 2);\n\t\twidth: var(--size);\n\t\tanimation: SPIN-SVG $time linear infinite;\n\t\tcircle {\n\t\t\ttransform-origin: center;\n\t\t\tanimation: SPIN-CIRCLE $time ease-in-out infinite;\n\t\t\tstroke-dasharray: 187;\n\t\t\tstroke-dashoffset: 0;\n\t\t}\n\t}\n}\n@keyframes SPIN-SVG {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\t100% {\n\t\ttransform: rotate(270deg);\n\t}\n}\n@keyframes SPIN-CIRCLE {\n\t0% {\n\t\tstroke-dashoffset: 187;\n\t}\n\t50% {\n\t\tstroke-dashoffset: 46.75;\n\t\ttransform: rotate(135deg);\n\t}\n\t100% {\n\t\tstroke-dashoffset: 187;\n\t\ttransform: rotate(450deg);\n\t}\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-spinner\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlySpinner {\n\t@Prop({ reflect: true }) active: boolean\n\t@Prop({ reflect: true }) size: \"small\" | \"medium\" | \"large\" = \"large\"\n\n\trender() {\n\t\tconst strokeWidth = this.size == \"large\" ? 6 : this.size == \"medium\" ? 8 : 12\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--color\": `var(--spinner-color)`,\n\t\t\t\t\t\"--size\": this.size == \"large\" ? \"5em\" : this.size == \"medium\" ? \"3em\" : \"1.2em\",\n\t\t\t\t}}>\n\t\t\t\t<svg class=\"spinner\" viewBox={`0 0 ${60 + strokeWidth} ${60 + strokeWidth}`} xmlns=\"http://www.w3.org/2000/svg\">\n\t\t\t\t\t<circle\n\t\t\t\t\t\tclass=\"path\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke-width={strokeWidth}\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tcx={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tcy={`${30 + strokeWidth / 2}`}\n\t\t\t\t\t\tr=\"30\"></circle>\n\t\t\t\t</svg>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../button/style.css\";\n\n:host() {\n\tmargin: 1em 0em;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"../Button\"\nimport { Submittable } from \"../input/Submittable\"\n\n@Component({\n\ttag: \"smoothly-submit\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlySubmit {\n\t@Prop({ reflect: true }) color?: Color = \"success\"\n\t@Prop({ reflect: true }) expand?: \"block\" | \"full\"\n\t@Prop({ reflect: true }) fill?: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop({ reflect: true }) shape?: \"rounded\"\n\t@Prop() prevent = true\n\tprivate parent?: Submittable\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: HTMLElement) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.smoothlyInputLoad.emit(parent => {\n\t\t\tif (Submittable.is(parent)) {\n\t\t\t\tthis.parent = parent\n\t\t\t}\n\t\t})\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.parent?.submit()\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Button disabled={this.disabled} type={this.type}>\n\t\t\t\t<slot />\n\t\t\t</Button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\tcolumn-gap: 0.3rem;\n}\n\n:host>details {\n\tdisplay: contents;\n}\n\n:host>details>summary {\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-column: 1/-1;\n\tlist-style: none;\n\talign-items: center;\n}\n\n:host>details>summary>smoothly-icon {\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n\n:host:hover details>summary>smoothly-icon {\n\topacity: 1;\n}\n\n:host>details[open]>summary>smoothly-icon {\n\ttransform: rotate(90deg);\n}\n\n:host>details::slotted([slot=content]) {\n\tgrid-column: 2;\n}\n\n@media screen and (min-width: 900px) {\n\t:host>details>summary:hover {\n\t\tcursor: pointer;\n\t}\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\n@Component({\n\ttag: \"smoothly-summary\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySummary {\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop() color: Color\n\t@Prop() fill: Fill = \"solid\"\n\t@Prop() size: \"tiny\" | \"small\" | \"medium\" | \"large\" = \"tiny\"\n\t@Event() smoothlySummaryOpen: EventEmitter<boolean>\n\n\ttoggleHandler(event: Event) {\n\t\tif (event.target instanceof HTMLDetailsElement) {\n\t\t\tthis.open = event.target.open\n\t\t\tthis.smoothlySummaryOpen.emit(this.open)\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<details onToggle={e => this.toggleHandler(e)} open={this.open}>\n\t\t\t\t<summary>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward\" color={this.color} fill={this.fill} size={this.size}></smoothly-icon>\n\t\t\t\t\t<slot name=\"summary\"></slot>\n\t\t\t\t</summary>\n\t\t\t\t<slot name=\"content\"></slot>\n\t\t\t</details>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmin-width: var(--size-width);\n\tmin-height: var(--size-height);\n\tbackground-color: rgb(var(--color, var(--smoothly-color-contrast)));\n}\nobject {\n\tmin-width: var(--size-width);\n\tmin-height: var(--size-height);\n\tbackground-color: rgb(var(--color, var(--smoothly-color-contrast)));\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-svg\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlySvg {\n\t@Prop({ reflect: true }) url!: string\n\t@Prop({ reflect: true }) size?: \"large\" | \"medium\" | \"small\" | \"tiny\" | { height: string; width: string }\n\t@Prop() color: string\n\tprivate readonly defaultSizes: Record<\"large\" | \"medium\" | \"small\" | \"tiny\", { height: string; width: string }> = {\n\t\tlarge: { height: \"50rem\", width: \"50rem\" },\n\t\tmedium: { height: \"30rem\", width: \"30rem\" },\n\t\tsmall: { height: \"10rem\", width: \"10rem\" },\n\t\ttiny: { height: \"5rem\", width: \"5rem\" },\n\t}\n\trender() {\n\t\tconst height = this.size\n\t\t\t? typeof this.size == \"object\"\n\t\t\t\t? this.size.height\n\t\t\t\t: this.defaultSizes[this.size].height\n\t\t\t: \"10rem\"\n\t\tconst width = this.size\n\t\t\t? typeof this.size == \"object\"\n\t\t\t\t? this.size.width\n\t\t\t\t: this.defaultSizes[this.size].width\n\t\t\t: \"10rem\"\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"min-height\": height,\n\t\t\t\t\t\"min-width\": width,\n\t\t\t\t\t\"--size-height\": height,\n\t\t\t\t\t\"--size-width\": width,\n\t\t\t\t\t\"--color\": this.color,\n\t\t\t\t}}>\n\t\t\t\t<object height={height} width={width} type=\"image/svg+xml\" data={this.url} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host([open]) {\n\tborder-bottom: 3px solid rgb(var(--smoothly-primary-color));\n\tbox-sizing: border-box;\n\tmargin-bottom: -3px;\n}\n.hide {\n\tdisplay: none;\n}\nlabel {\n\tdisplay: block;\n\tpadding: .5rem;\n\tbackground-color: transparent;\n\twidth: auto;\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tab\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTab {\n\texpansionElement?: HTMLDivElement\n\t@Event() expansionOpen: EventEmitter<HTMLElement>\n\t@Prop() label: string\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tif (this.expansionElement) {\n\t\t\tthis.expansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.open = !this.open\n\t\te.stopPropagation()\n\t}\n\tcomponentDidLoad(): void {\n\t\tif (this.expansionElement && this.open) {\n\t\t\tthis.expansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<label>{this.label}</label>\n\t\t\t\t<div ref={e => (this.expansionElement = e)} class={!this.open ? \"hide\" : \"\"}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-around;\n\tborder-bottom: 3px solid rgb(var(--smoothly-default-shade));\n}\n","import { Component, Element, h, Host, Listen, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tab-switch\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabSwitch {\n\t@Element() element: HTMLSmoothlyTabSwitchElement\n\t@State() selectedElement: HTMLSmoothlyTabElement\n\t@Listen(\"expansionOpen\")\n\topenChanged(event: CustomEvent) {\n\t\tevent.stopPropagation()\n\t\tthis.selectedElement = event.target as HTMLSmoothlyTabElement\n\t\tthis.selectedElement.open = true\n\t\tthis.element.after(event.detail)\n\t}\n\t@Watch(\"selectedElement\")\n\tonSelectedChange(value: HTMLSmoothlyTabElement, old: HTMLSmoothlyTabElement) {\n\t\tif (old)\n\t\t\told.open = false\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table;\n\twidth: var(--table-width, 80%);\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-default-color));\n}\n:host[root] {\n\tmargin-left: 1.5rem;\n\tmargin-right: 1.5rem;\n}\n:host:not([root]) {\n\tmargin: 0;\n\twidth: 100%;\n}\n","import { Component, ComponentWillLoad, Element, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class Table implements ComponentWillLoad {\n\tprivate owner?: EventTarget\n\tprivate expandable: WeakMap<EventTarget, { allowSpotlight: (allowed: boolean) => void } | undefined> = new WeakMap()\n\tprivate expanded: Set<EventTarget> = new Set()\n\t@Element() element: HTMLSmoothlyTableElement\n\t@Prop({ mutable: true, reflect: true }) root = true\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true }) align: \"middle\" | \"bottom\" | \"top\" = \"middle\"\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyNestedTable: EventEmitter<() => void>\n\t@Event() smoothlySpotlightChange: EventEmitter<{ allowSpotlight: boolean; owner?: EventTarget }>\n\t@Event() smoothlyTableLoad: EventEmitter<(owner: EventTarget) => void>\n\tcomponentWillLoad() {\n\t\tthis.smoothlyNestedTable.emit(() => (this.root = false))\n\t\tthis.smoothlyTableLoad.emit((owner: EventTarget) => (this.owner = owner))\n\t}\n\t@Listen(\"smoothlyExpandableLoad\")\n\thandleExpandableLoaded(event: CustomEvent<{ allowSpotlight: (allowed: boolean) => void }>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && this.expandable.set(event.target, event.detail)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\thandleExpandableState(event: CustomEvent<boolean>) {\n\t\tevent.stopPropagation()\n\t\tevent.target && (event.detail ? this.expanded.add(event.target) : this.expanded.delete(event.target))\n\t\tthis.smoothlySpotlightChange.emit({ allowSpotlight: !this.expanded.size, owner: this.owner })\n\t}\n\t@Listen(\"smoothlySpotlightChange\")\n\thandleSpotlightState(event: CustomEvent<{ allowSpotlight: boolean; owner?: EventTarget }>) {\n\t\tthis.open = !!this.expanded.size\n\t\tevent.target != this.element &&\n\t\t\t(event.stopPropagation(),\n\t\t\tevent.detail.owner && this.expandable.get(event.detail.owner)?.allowSpotlight(event.detail.allowSpotlight))\n\t}\n\t@Listen(\"smoothlyNestedTable\")\n\thandleNestedTable(event: CustomEvent<() => void>) {\n\t\tevent.target != this.element && (event.stopPropagation(), event.detail())\n\t}\n\t@Listen(\"smoothlyExpansionLoad\")\n\t@Listen(\"smoothlyExpansionOpen\")\n\thandleEvents(event: CustomEvent) {\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn [<slot></slot>]\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 1.5rem;\n\twhite-space: nowrap;\n\tpadding: 0.3rem 0 0.3rem 1rem;\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n}\n:host smoothly-icon {\n\tdisplay: none;\n\twidth: 1em;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\tmargin: 0 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n:host:hover smoothly-icon {\n\topacity: 1;\n}\nsmoothly-table-expandable-row > div :host:last-of-type smoothly-icon {\n\tdisplay: flex;\n}\nsmoothly-table-expandable-row[open] > div :host:last-of-type smoothly-icon {\n\ttransform: rotate(90deg);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: 1fr auto;\n\talign-items: center;\n}\n:host > div > div {\n\twidth: 100%;\n}\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableCell {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\" size=\"tiny\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 3rem;\n\tpadding-bottom: 10rem;\n\tmargin-left: 1.5rem;\n\tmargin-right: 1.5rem;\n}\n\n.content {\n\tdisplay: contents;\n}\n\nsmoothly-lazy {\n\twidth: 80%;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h4>Demo table 1: Filtered & Checked Table</h4> <smoothly-lazy content={<smoothly-table-demo-filtered />} />\n\t\t\t\t<h4>Demo table 2</h4> <smoothly-table-testing></smoothly-table-testing> <h4>Demo table 3</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Header D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tnormal row (exp.cell)\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 1 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 2 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 3 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell 4 content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>normal row (nor.cell)\"</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\texpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">expandable cell details.</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>expandable row (nor.cell)</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Normal cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">expandable row content</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 4</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Header A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tHeader expansion\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Expansion cell</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-tab-switch>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 1\" open={true}>\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header B</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>B Content</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"innertable 2\">\n\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>Header C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>C Content</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t</smoothly-tab-switch>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>A Content</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tExpandable cell\n\t\t\t\t\t\t\t<div slot=\"detail\">Expansion content</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 5</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>nested expandable row</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b row</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>e row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>f row</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable row expansion e f</div>\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t<span>one</span>\n\t\t\t\t\t\t\t<span>two</span>\n\t\t\t\t\t\t\t<span>three</span>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\tfive<smoothly-icon name=\"paper-plane-sharp\" size=\"small\"></smoothly-icon>\n\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">four</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<span>nested expandable cells</span>\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>E</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>F</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\te cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>G</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>H</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tg cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion g</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\th cell\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion h</div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tf cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion f</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tb cell\n\t\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\tc cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion c</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t\td cell\n\t\t\t\t\t\t\t\t\t\t\t<div slot=\"detail\">nested expandable cell expansion d</div>\n\t\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 6</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>display</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>contents</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<div class={\"content\"}>\n\t\t\t\t\t\t\t<smoothly-table-cell>A</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>B</smoothly-table-cell>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div slot=\"detail\">expansion</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 7</h4> <span>nested 1 then normal</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>A</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>B</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>a</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>b</smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ccccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>cccc</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-table-cell>dddd</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">CONTENT</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t</smoothly-table>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 8</h4> <span>not nested</span>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>C</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>D</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>c</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>d</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>cc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>dd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-cell>ccc</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>ddd</smoothly-table-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>First name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Last name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header style={{ width: \"1px\" }}>\n\t\t\t\t\t\t\t<smoothly-icon name=\"alert-outline\" />\n\t\t\t\t\t\t</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Jessie</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell>Doe</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-table-cell></smoothly-table-cell>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<p>This is Jessie</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 9 - Lazy expansion rows</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Proquse</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t<smoothly-table-cell>Pax2Pay</smoothly-table-cell>\n\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t</smoothly-table>\n\t\t\t\t<h4>Demo table 10 - Lazy expansion cells</h4>\n\t\t\t\t<smoothly-table>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Company</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tProquse\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={<img src={\"https://brand.proquse.com/logo/proquse-black.svg\"} alt={\"Proquse Logotype.\"} />}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\tPax2Pay\n\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\tcontent={() => (\n\t\t\t\t\t\t\t\t\t<img src={\"https://dash.pax2pay.app/assets/pax2pay-dark-horizontal.svg\"} alt={\"Pax2Pay Logotype.\"} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { h } from \"@stencil/core\"\n\nexport class Selector<T> {\n\t#selected?: T[]\n\tget selected(): T[] {\n\t\treturn (this.#selected ??= Object.values(this.data))\n\t}\n\tprivate constructor(private readonly key: keyof T, private data: Readonly<Record<string, T>> = {}) {}\n\thandle(data: Record<string, T>): Selector<T> {\n\t\treturn new Selector(\n\t\t\tthis.key,\n\t\t\t\"check-all\" in data\n\t\t\t\t? data[\"check-all\"] ?? {}\n\t\t\t\t: Object.fromEntries(Object.entries({ ...this.data, ...data }).filter(([_, value]) => value != undefined))\n\t\t)\n\t}\n\trender(item: T | T[]): HTMLSmoothlyCheckboxElement {\n\t\treturn Array.isArray(item) ? (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname=\"check-all\"\n\t\t\t\tvalue={Object.fromEntries(item.map(i => [i[this.key], i]))}\n\t\t\t\tintermediate={this.selected.length > 0 && this.selected.length < item.length}\n\t\t\t\tchecked={this.selected.length == item.length ? true : this.selected.length == 0 && false}\n\t\t\t/>\n\t\t) : (\n\t\t\t<smoothly-checkbox\n\t\t\t\tname={item[this.key]?.toString()}\n\t\t\t\tvalue={item}\n\t\t\t\tchecked={!!this.data[item[this.key]?.toString() ?? \"\"]}\n\t\t\t/>\n\t\t)\n\t}\n\tstatic create<T>(key: keyof T): Selector<T> {\n\t\treturn new Selector(key)\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: 80%;\n}\n\nsmoothly-table-cell:nth-of-type(2) {\n\ttext-align: right;\n}\n\ntd {\n\tpadding-left: 1.5em;\n}\n","import { Component, ComponentWillLoad, h, Host, Listen, State } from \"@stencil/core\"\nimport { selectively } from \"selectively\"\nimport * as http from \"cloudly-http\"\nimport { Selector } from \"../../Selector\"\nimport { Cat } from \"./Root\"\n\n@Component({\n\ttag: \"smoothly-table-demo-filtered\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableDemoFiltered implements ComponentWillLoad {\n\t@State() criteria: selectively.Criteria = {}\n\t@State() cats?: Cat[] | false\n\t@State() selector: Selector<Cat> = Selector.create(\"breed\")\n\t@Listen(\"smoothlyFilter\")\n\tonFilterUpdate(event: CustomEvent<selectively.Criteria>) {\n\t\tevent.stopPropagation()\n\t\tthis.criteria = event.detail\n\t}\n\t@Listen(\"smoothlyInput\")\n\tsmoothlyInputHandler(event: CustomEvent<Record<string, any>>) {\n\t\tevent.stopPropagation()\n\t\tthis.selector = this.selector.handle(event.detail)\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tconst response = await http.fetch(\"https://catfact.ninja/breeds?limit=15\")\n\t\tthis.cats =\n\t\t\tresponse.status == 200 &&\n\t\t\t(await response.body).data.map((cat: any) => ({\n\t\t\t\t...cat,\n\t\t\t\tprice: [...cat.breed].reduce((r, c) => r + c.charCodeAt(0), 0),\n\t\t\t\tnested: { ...cat, names: names[cat.country] ?? [] },\n\t\t\t\tnames: names[cat.country] ?? [],\n\t\t\t}))\n\t}\n\n\trender() {\n\t\tconst cats = this.cats && selectively.filter(this.criteria, this.cats)\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-filter>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ [\"nested.pattern\"]: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"add\"\n\t\t\t\t\t\ttoolTip=\"Nested Ticked\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Ticked\", breed: \"\" }}\n\t\t\t\t\t\ticon=\"paw\"\n\t\t\t\t\t\ttoolTip=\"Ticked cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ breed: \"Bombay\", pattern: \"Solid\" }}\n\t\t\t\t\t\ticon=\"radio-button-on\"\n\t\t\t\t\t\ttoolTip=\"Solid bombay cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-toggle\n\t\t\t\t\t\tproperties={{ pattern: \"Colorpoint\" }}\n\t\t\t\t\t\tnot\n\t\t\t\t\t\tactive\n\t\t\t\t\t\ticon=\"alert\"\n\t\t\t\t\t\ttoolTip=\"Colored cats\"\n\t\t\t\t\t\tslot=\"bar\"\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-filter-picker label=\"coat\" property=\"nested.coat\" slot=\"bar\" multiple={false}>\n\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t<smoothly-picker-option value={cat.nested.coat}>{cat.nested.coat}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"coat\" property=\"nested.coat\" multiple>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\t\t\tcat =>\n\t\t\t\t\t\t\t\t\t\t\tcat.nested?.coat && (\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-picker-option value={cat.nested.coat}>{cat.nested.coat}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"breed\" property=\"breed\" multiple={false}>\n\t\t\t\t\t\t\t\t{this.cats &&\n\t\t\t\t\t\t\t\t\tthis.cats.map(\n\t\t\t\t\t\t\t\t\t\tcat => cat.breed && <smoothly-picker-option value={cat.breed}>{cat.breed}</smoothly-picker-option>\n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\t\t\t\t\t\t\t<smoothly-filter-picker label=\"names\" property=\"nested.names\" multiple={true} type=\"array\">\n\t\t\t\t\t\t\t\t{Object.values(names).flatMap(names =>\n\t\t\t\t\t\t\t\t\tnames.map(name => <smoothly-picker-option value={name}>{name}</smoothly-picker-option>)\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-filter-picker>\n\n\t\t\t\t\t\t\t<smoothly-filter-input property=\"coat\" placeholder=\"ex. Short\" />\n\t\t\t\t\t\t\t<smoothly-filter-input property=\"nested.coat\" placeholder=\"ex. Rex\" />\n\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-filter>\n\t\t\t\t{!cats ? (\n\t\t\t\t\t\"Failed to load data.\"\n\t\t\t\t) : (\n\t\t\t\t\t<smoothly-table>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-header>{this.selector.render(cats)}</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Breed</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Coat</smoothly-table-header>\n\t\t\t\t\t\t\t<smoothly-table-header>Price</smoothly-table-header>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t{cats.map(cat => (\n\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>{this.selector.render(cat)}</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.breed}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Country: {cat.country}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t{cat.coat}\n\t\t\t\t\t\t\t\t\t<div slot=\"detail\">Pattern: {cat.pattern}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t<smoothly-display type=\"price\" value={cat.price} currency=\"SEK\"></smoothly-display>\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t\t<td colSpan={5}>\n\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tvalue={`Selected: ${\n\t\t\t\t\t\t\t\t\t\tthis.selector.selected.length != 0 ? this.selector.selected.length : cats ? cats.length : \"?\"\n\t\t\t\t\t\t\t\t\t}`}></smoothly-display>\n\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t\t</smoothly-table>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\nconst names: Record<string, string[]> = {\n\t\"United States\": [\"bill\", \"bob\", \"brad\", \"joe\", \"molly\"],\n\tAustralia: [\"nigel\", \"bruce\", \"sheila\", \"brad\", \"shane\"],\n\t\"United Kingdom\": [\"nigel\", \"james\", \"molly\", \"shane\", \"bob\"],\n\tGreece: [\"dionysius\", \"demetrius\", \"polikarpos\"],\n}\n",":host {\n\tdisplay: table-cell;\n\tpadding: 0.3rem 0 0.3rem 0;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host:not([open]) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)), 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host smoothly-icon {\n\twidth: 1em;\n\tpadding: 0 0.3rem;\n\ttransition: transform 0.2s, opacity 0.1s;\n\tdisplay: flex;\n\theight: auto;\n\taspect-ratio: 1 / 1;\n\talign-self: center;\n\topacity: 0.3;\n}\n:host:hover smoothly-icon {\n\topacity: 1;\n}\n:host[open] smoothly-icon {\n\ttransform: rotate(90deg);\n}\n:host > div {\n\tdisplay: grid;\n\tgrid-template-columns: auto 1fr;\n\talign-items: center;\n}\n.hide {\n\tdisplay: none;\n}\ntd::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 1px);\n\ttop: 1px;\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\ntr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0 0 0 rgb(var(--smoothly-tertiary-color)) inset;\n}\ntr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\ntd::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\ntd::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: -1px;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableCell implements ComponentWillLoad {\n\tprivate expansionElement?: HTMLTableRowElement\n\tprivate beginOpen: boolean\n\t@Element() element: HTMLSmoothlyTableExpandableCellElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpansionLoad: EventEmitter<void>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\t@Watch(\"open\")\n\topenChanged(value: boolean) {\n\t\tif (this.expansionElement)\n\t\t\tif (value)\n\t\t\t\tthis.beginOpen = true\n\t\t\telse\n\t\t\t\tthis.element.append(this.expansionElement)\n\t\tthis.smoothlyExpandableChange.emit(this.open)\n\t}\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyExpansionLoad.emit()\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\tcomponentDidRender(): void {\n\t\tif (this.beginOpen) {\n\t\t\tthis.beginOpen = false\n\t\t\tthis.smoothlyExpansionOpen.emit(this.expansionElement)\n\t\t}\n\t}\n\t@Listen(\"click\")\n\tonClick() {\n\t\tthis.open = !this.open\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-icon name=\"caret-forward-outline\"></smoothly-icon>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }} ref={e => (this.expansionElement = e)}>\n\t\t\t\t\t<td colSpan={999} class={!this.open ? \"hide\" : \"\"}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n}\ndiv {\n\tdisplay: table-row;\n\tcursor: pointer;\n\tline-height: 1.5rem;\n}\n:host[open] > div {\n\tposition: relative;\n\tz-index: 3;\n\tbackground-color: rgb(var(--smoothly-color));\n}\n:host[open] > div::slotted(*) smoothly-table-cell,\n:host[open] > div::slotted(smoothly-table-cell) {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\t\n}\n:host[open] > div::slotted(*) smoothly-table-cell:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n:host[open] > div::slotted(*) smoothly-table-cell:last-child:first-child {\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)) inset, 1px 0 0 0 rgb(var(--smoothly-color-shade)) inset, -1px 0 0 0 rgb(var(--smoothly-color-shade)) inset;\n}\n\n.hide {\n\tdisplay: none;\n}\ndiv > tr > td {\n\tposition: relative;\n}\ntd::slotted(*) {\n\t--expansion-width: 1.5rem;\n\t--expansion-border-width: 3px;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-color));\n\twidth: calc(100% + 3rem - 2px);\n\tleft: calc(-1 * var(--expansion-width) + 1px);\n\tbox-sizing: border-box;\n\tpadding: 0.5rem calc(var(--expansion-width) - 1px);\n\tborder-bottom: 1px solid rgb(var(--smoothly-color-shade));\n}\ntr.spotlight > td::slotted(*) {\n\tbox-shadow: calc(var(--expansion-border-width)) 0px 0px 0px rgb(var(--smoothly-tertiary-color)) inset;\n}\ntr:not(.spotlight) > td::slotted(*) {\n\tbox-shadow: -1px 0 0 0 rgb(var(--smoothly-tertiary-color)), 1px 0 0 0 rgb(var(--smoothly-tertiary-color));\n}\ntd::slotted(*)::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1px;\n\twidth: calc(var(--expansion-width) + 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n}\ntd::slotted(*)::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: 0;\n\twidth: calc(var(--expansion-width) - 1px);\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tborder-right: 1px solid rgb(var(--smoothly-color-shade));\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tProp,\n\tState,\n\tWatch,\n} from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableExpandableRow implements ComponentWillLoad {\n\t@Element() element: HTMLSmoothlyTableRowElement\n\t@State() allowSpotlight = true\n\t@State() spotlight = true\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Event() smoothlyExpansionOpen: EventEmitter<HTMLElement>\n\t@Event() smoothlyExpandableChange: EventEmitter<boolean>\n\t@Event() smoothlyExpandableLoad: EventEmitter<{ allowSpotlight: (allowed: boolean) => void }>\n\n\t@Watch(\"open\")\n\t@Watch(\"allowSpotlight\")\n\thandleSpotlight() {\n\t\tthis.spotlight = this.open && this.allowSpotlight\n\t}\n\tcomponentWillLoad() {\n\t\tthis.smoothlyExpandableLoad.emit({\n\t\t\tallowSpotlight: (allowed: boolean) => (this.allowSpotlight = allowed),\n\t\t})\n\t}\n\t@Listen(\"smoothlyTableLoad\")\n\thandleTableLoaded(event: CustomEvent<(owner: EventTarget) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this.element)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => (this.open = !this.open)}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</div>\n\t\t\t\t<tr class={{ spotlight: this.spotlight }}>\n\t\t\t\t\t<td colSpan={999} class={{ hide: !this.open }}>\n\t\t\t\t\t\t<slot name=\"detail\"></slot>\n\t\t\t\t\t</td>\n\t\t\t\t</tr>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-footer-group;\n\tposition: sticky;\n\tbottom: 0;\n\tbackground-color: rgb(var(--smoothly-color));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade)),\n\t\tinset 0 1px 0 rgb(var(--smoothly-color-shade));\n\tline-height: 2.5rem;\n\tfont-weight: bold;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-footer\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableFooter {\n\trender() {\n\t\treturn <slot />\n\t}\n}\n",":host {\n\tdisplay: table-cell;\n\tline-height: 2.5rem;\n\tborder-top: 1px solid rgb(var(--smoothly-color-shade));\n\tbox-shadow: 0 1px 0 0 rgb(var(--smoothly-color-shade));\n\tpadding-left: 1rem;\n\tfont-weight: bold;\n}\n\nsmoothly-table[align=bottom] :host {\n\tvertical-align: bottom;\n}\nsmoothly-table[align=middle] :host {\n\tvertical-align: middle;\n}\nsmoothly-table[align=top] :host {\n\tvertical-align: top;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-header\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableHeader {\n\t@Prop() name: string\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<slot></slot>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: table-row-group;\n\tcursor: default;\n\tline-height: 1.5rem;\n}\n.hide {\n\tdisplay: none;\n}\ndiv {\n\tdisplay: contents;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class TableRow {\n\tprivate element?: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) open = false\n\texpansions: HTMLSmoothlyTableExpandableCellElement[] = []\n\t@Listen(\"smoothlyExpansionLoad\")\n\tonExpansionLoad(event: CustomEvent<void>) {\n\t\tthis.expansions.push(event.target as HTMLSmoothlyTableExpandableCellElement)\n\t}\n\t@Listen(\"smoothlyExpandableChange\")\n\tonExpansionChange() {\n\t\tthis.open = this.expansions.some(expansion => expansion.open)\n\t}\n\t@Listen(\"smoothlyExpansionOpen\")\n\tonExpansionOpen(event: CustomEvent<HTMLElement | undefined>) {\n\t\tthis.expansions.forEach(cell => {\n\t\t\tif (cell != event.target)\n\t\t\t\tcell.open = false\n\t\t})\n\t\tif (event.detail)\n\t\t\tthis.element?.after(event.detail)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<div ref={e => (this.element = e)}>\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Lazie\",\n\t\tage: 3,\n\t},\n\t{\n\t\ttype: \"dog\",\n\t\tname: \"Jessie\",\n\t\tage: 8,\n\t},\n\t{\n\t\ttype: \"cat\",\n\t\tname: \"Snooz\",\n\t\tage: 5,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Squeak\",\n\t\tage: 1,\n\t},\n\t{\n\t\ttype: \"bird\",\n\t\tname: \"Quirk\",\n\t\tage: 2,\n\t},\n]\n",":host {\n\twidth: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n}\n\nsmoothly-table {\n\twidth: 80%;\n}\n\n.tableCell {\n\theight: 3rem;\n\tdisplay: flex;\n\talign-items: center;\n}\n\n.tableCell>div {\n\tmargin-left: 3rem;\n\tmargin-right: 3rem;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tjustify-content: space-between;\n\tgap: 2rem;\n}\n\ntd>div.footer {\n\tdisplay: flex;\n\tpadding-left: 1.5em;\n\tflex-direction: row;\n\tgap: 1em;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { data } from \"./data\"\n@Component({\n\ttag: \"smoothly-table-testing\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableTesting {\n\t@State() counter = 0\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table color=\"dark\">\n\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-header>Type</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Name</smoothly-table-header>\n\t\t\t\t\t\t<smoothly-table-header>Age</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-row>\n\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.name}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.age}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t))}\n\t\t\t\t\t{data.map(animal => (\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>{animal.type}</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.name}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t{animal.age}\n\t\t\t\t\t\t\t\t<smoothly-form slot=\"detail\" onSmoothlyFormSubmit={() => this.counter++} looks=\"line\">\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.type}>Type</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input value={animal.name}>Name</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-input>{animal.age}</smoothly-input>\n\t\t\t\t\t\t\t\t\t<smoothly-submit slot=\"submit\">Submit!</smoothly-submit>\n\t\t\t\t\t\t\t\t</smoothly-form>\n\t\t\t\t\t\t\t</smoothly-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t))}\n\t\t\t\t\t<smoothly-table-footer>\n\t\t\t\t\t\t<td colSpan={2}>\n\t\t\t\t\t\t\t<div class=\"footer\">\n\t\t\t\t\t\t\t\tCurrently viewing content from:\n\t\t\t\t\t\t\t\t<smoothly-display type=\"date\" value=\"2023-10-12\" />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</td>\n\t\t\t\t\t\t<smoothly-table-header>{\"Total age: \" + data.reduce((r, a) => r + a.age, 0)}</smoothly-table-header>\n\t\t\t\t\t</smoothly-table-footer>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n}\n:host > :first-child {\n\tmargin-top: 0.2rem;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColor {\n\t@Prop() color: Color\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{this.color}\n\t\t\t\t{([\"tint\", \"color\", \"shade\"] as const).map(variant => (\n\t\t\t\t\t<smoothly-theme-color-variant color={this.color} variant={variant}></smoothly-theme-color-variant>\n\t\t\t\t))}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 3em;\n\theight: 3em;\n\tfont-weight: 900;\n}\n\n:host[color][variant=color] {\n\tbackground: rgb(var(--smoothly-color));\n}\n:host[color][variant=tint] {\n\tbackground: rgb(var(--smoothly-color-tint));\n}\n:host[color][variant=shade] {\n\tbackground: rgb(var(--smoothly-color-shade));\n}\n","import { Component, Prop } from \"@stencil/core\"\nimport { Color } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-theme-color-variant\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColorVariant {\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) variant: \"shade\" | \"tint\" | \"color\" = \"color\"\n\trender() {\n\t\treturn \"Aa\"\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\trow-gap: 1em;\n\tcolumn-gap: 1em;\n\twidth: fit-content;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-colors\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColors {\n\trender() {\n\t\treturn (\n\t\t\t[\n\t\t\t\t\"primary\",\n\t\t\t\t\"secondary\",\n\t\t\t\t\"tertiary\",\n\t\t\t\t\"success\",\n\t\t\t\t\"warning\",\n\t\t\t\t\"danger\",\n\t\t\t\t\"light\",\n\t\t\t\t\"medium\",\n\t\t\t\t\"dark\",\n\t\t\t\t\"default\",\n\t\t\t] as const\n\t\t).map(color => <smoothly-theme-color color={color}></smoothly-theme-color>)\n\t}\n}\n",null,"import { Component, h, Host, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-picker\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemePicker {\n\t@Prop() element = \"smoothly-css\"\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tname=\"theme\"\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\tconst element = document.querySelector(`#${this.element}`)\n\t\t\t\t\t\tif (element instanceof HTMLLinkElement && typeof e.detail.theme == \"string\")\n\t\t\t\t\t\t\telement.href = e.detail.theme\n\t\t\t\t\t}}>\n\t\t\t\t\t<slot></slot>\n\t\t\t\t</smoothly-input-select>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host{\n\tdisplay: inline-block;\n\tborder: none;\n}\nbutton{\n\tborder: solid white 0.5px;\n\tdisplay: flex;\n\tpadding: 0.6em;\n\tjustify-content: center;\n\tfont-size: 110%;\n\tfont-weight: 400;\n\tcolor: rgb(var(--smoothly-default-tint));\n\tbackground-color: rgb(var(--smoothly-default-shade));\n}\n:host([shape=rounded]){\n\tborder-radius: 0.6em;\n}\n:host([shape=rounded]) > button {\n\tborder-radius: 0.5em;\n}\n:host([selected]) > button{\n\tcolor: rgb(var(--smoothly-light-contrast));\n}\n::slotted(smoothly-icon){\n\tstroke: rgb(var(--smoothly-default-contrast));\n\tfill: rgb(var(--smoothly-default-contrast));\n\tfont-size: 110%;\n}\n:host(:not([selected])) > ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-default-tint));\n\tfill:rgb(var(--smoothly-default-tint));\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n","import { Component, h, Listen, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-toggle\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggle {\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) shape: \"rounded\"\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() name: string\n\t@Prop() value?: any\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.selected = !this.selected\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<button>\n\t\t\t\t<slot name=\"icon-slot\"></slot>\n\t\t\t\t<slot>{this.name}</slot>\n\t\t\t</button>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmargin: 1em 0;\n\twidth: 3.6em;\n\theight: 1.8em;\n}\n\n:host button {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tposition: relative;\n\tcursor: pointer;\n\tborder: none;\n\tborder-radius: 3em;\n\tbackground-color: rgb(var(--smoothly-light-tint));\n}\n:host button:hover {\n\tbackground-color: rgb(var(--smoothly-light-color));\n}\n:host smoothly-icon {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tposition: absolute;\n\tleft: 0;\n\tfill: rgb(var(--smoothly-color));\n\tstroke: rgb(var(--smoothly-color));\n\tfont-size: 1.2em;\n\ttransition: 100ms ease-in-out;\n}\n\n:host[checkmark] smoothly-icon {\n\tfill: rgb(var(--smoothly-success-color));\n\tstroke: rgb(var(--smoothly-success-color));\n}\n:host([selected][checkmark]) button{\n\tbackground-color: rgb(var(--smoothly-success-color));\n}\n\n:host([selected]) smoothly-icon{\n\ttransform: translateX(100%);\n}\n\n:host([size=small]){\n\twidth: 3.05em;\n\theight: 1.5em;\n}\n\n:host([size=large]){\n\twidth: 5.2em;\n\theight: 2.5em;\n}\n\n:host([size=small]) smoothly-icon{\n\tfont-size: 1em;\n}\n\n:host([size=large]) smoothly-icon{\n\tfont-size: 1.75em;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-toggle-switch\",\n\tstyleUrl: \"style.css\",\n\tshadow: true,\n})\nexport class SmoothlyToggleSwitch {\n\t@Prop({ reflect: true }) checkmark = true\n\t@Prop({ mutable: true, reflect: true }) selected = false\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) size: \"small\" | \"default\" | \"large\" = \"default\"\n\t@Prop({ reflect: true }) color: Color\n\t@Prop({ reflect: true }) fill: Fill = \"clear\"\n\t@Event() smoothlyToggleSwitchChange: EventEmitter<boolean>\n\n\thandleClick() {\n\t\tthis.selected = !this.selected\n\t\tthis.smoothlyToggleSwitchChange.emit(this.selected)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<button disabled={this.disabled} onClick={() => this.handleClick()}>\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={!this.checkmark ? \"ellipse\" : this.selected ? \"checkmark-circle\" : \"close-circle\"}\n\t\t\t\t\t\tfill=\"clear\"\n\t\t\t\t\t\tclass={{ selected: this.selected }}></smoothly-icon>\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tborder-style: solid;\n\tborder-width: 1px;\n\tborder-radius: 3px;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host[disabled] {\n\topacity: 0.5;\n}\nbutton {\n\tborder-color: transparent;\n\tbackground-color: transparent;\n\tpadding: 0.2em 0.3em;\n\tfont-size: 110%;\n\tfont-weight: 400;\n}\n:host:not([disabled]):hover,\n:host:not([disabled]):focus,\n:host:not([disabled]):active {\n\tborder-color: var(--smoothly-trigger-border);\n}\n:host[expand=full] > button,\n:host[expand=block] > button {\n\twidth: 100%;\n}\n:host[expand=full] {\n\tborder-left: none;\n\tborder-right: none;\n}\n","import { Component, Event, EventEmitter, h, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill, Trigger } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-trigger\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTrigger {\n\t@Prop({ reflect: true }) color: Color | undefined\n\t@Prop({ reflect: true }) fill: Fill\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: \"link\" | \"button\" = \"button\"\n\t@Prop() name: string\n\t@Prop() value?: any\n\t@Event() trigger: EventEmitter<Trigger>\n\n\t@Listen(\"click\")\n\tonClick(e: UIEvent) {\n\t\tthis.trigger.emit({ name: this.name, value: this.value })\n\t\te.stopPropagation()\n\t\te.preventDefault()\n\t}\n\trender() {\n\t\tlet result: HTMLElement\n\t\tswitch (this.type) {\n\t\t\tcase \"link\":\n\t\t\t\tresult = this.disabled ? (\n\t\t\t\t\t<slot></slot>\n\t\t\t\t) : (\n\t\t\t\t\t<a onClick={e => this.onClick(e)}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</a>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t\tcase \"button\":\n\t\t\t\tresult = (\n\t\t\t\t\t<button disabled={this.disabled} name={this.name}>\n\t\t\t\t\t\t<slot></slot>\n\t\t\t\t\t</button>\n\t\t\t\t)\n\t\t\t\tbreak\n\t\t}\n\t\treturn result\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tuple\",\n})\nexport class SmoothlyTuple {\n\t@Prop() tuple: [string, string]\n\trender() {\n\t\treturn [<b>{this.tuple[0]}</b>, \": \", this.tuple[1], <br />]\n\t}\n}\n","import { Component, h, Prop } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-urlencoded\",\n})\nexport class Urlencoded {\n\t@Prop() data: string // TODO: Consider using a specific type for this\n\trender() {\n\t\treturn this.data\n\t\t\t.split(\"&\")\n\t\t\t.map(p => p.split(\"=\") as [string, string])\n\t\t\t.map(tuple => <smoothly-tuple tuple={tuple}></smoothly-tuple>)\n\t}\n}\n"],"mappings":"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,WAAW5c,GACP,cAAcA,GAAS,YAAcA,EAAQA,EAAQC,SAC7D,CACI6b,OAAOgB,GACH,MAAO,IAAKA,EAAa1Y,KAAM,WAAYmX,aAAc,mBACjE,CACID,SAASyB,GACL,OAAOA,CACf,CACIlB,QAAQjB,EAAQvY,GACZ,OAAO,IACf,EAEAyF,GAAI,YAAY,IAAM,IAAI+U,KCjB1B,MAAMA,GACFna,SAAS+Z,GACL,cAAcA,GAAQ,UAAYA,EAAO,KAAK/Z,WAAa,EACnE,CACIka,WAAW5c,GACP,MAAMohB,SAAqBphB,GAAS,SAAWgd,OAAOsD,WAAWtgB,GAASC,UAC1E,cAAcmhB,GAAe,WAAapE,OAAO8D,MAAMM,GAAeA,EAAc,IAAMnhB,SAClG,CACI6b,OAAOgB,GACH,MAAO,IACCA,EAAY9c,MAAQ8c,EAAY/U,OAAO,MAAQ+U,EACnD1Y,KAAM,OACNsB,OAAQ,CAAC,EAAGzF,WACZoG,QAAS,iBAErB,CACIiV,SAASyB,GACL,OAAOA,EAAUzC,OAAO,KAChC,CACIuB,QAAQjB,EAAQvY,GACZ,OAAQuY,GAAU,KAAOA,GAAU,KAASA,GAAU,MAAQvY,EAAMrC,MAAM+L,SAAS,IAC3F,EAEAjE,GAAI,WAAW,IAAM,IAAI+U,KCxBlB,MAAMwE,GAAc,CACvB,CACIC,YAAa,MACbC,UAAW,CACP,MACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,KACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,OACA,MACA,MACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,MACA,MACA,OACA,OACA,OACA,OACA,SCnSZ,MAAM1E,GACFna,SAAS+Z,GACL,cAAcA,GAAQ,SAAWA,EAAO,EAChD,CACIG,WAAW5c,GACP,cAAcA,GAAS,YAAcA,EAAQA,EAAQC,SAC7D,CACI6b,OAAOgB,GACH,IAAIjW,EAASiW,EACb,GAAIjW,EAAO7G,MAAMyK,WAAW,KAAM,CAC9B,IAAK,MAAM0W,KAAWE,GAClB,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,QAAS,CACzB0G,QAAeugC,EAAKC,KAAKvnC,KAAKK,MAC9B0G,EAASA,IAAM,MAANA,SAAM,SAANA,EACNsB,QAAQ,gBAAiB,iBAC1BA,QAAQ,4BAA6B,IACrCA,QAAQ,iBAAkB,IAC5B,IAAKrI,KAAKuE,QACTwC,EAASA,IAAM,MAANA,SAAM,SAANA,EAAQsB,QAAQ,qBAAsB,SAC3C,GAAItB,IAAM,MAANA,SAAM,SAANA,EAAQkF,SAAS,WACzBlF,EAASA,EAAOsB,QAAQ,yBAA0B,UAAUrI,KAAKuE,wBAEjEwC,EAASA,IAAM,MAANA,SAAM,SAANA,EAAQsB,QAAQ,kBAAmB,YAAYrI,KAAKuE,oB,CAE/DvE,KAAKyS,SACJ1L,IAAM,MAANA,SAAM,EAANA,EACA,sG,CAIFrD,S,MACC,OAAOC,EAAC0O,EAAI,CAACvQ,UAAW9B,KAAKyS,SAAU/N,MAAO,CAAE,CAAC,cAAe,IAAG1D,EAAAhB,KAAKwnC,UAAM,MAAAxmC,SAAA,EAAAA,EAAI,S,wECzCpF,MAAMR,GAAW,mQ,MCOJinC,GAAgB,MAL7B5nC,YAAA6nC,G,UAMC1nC,KAAA2nC,KAAO,C,CACPjkC,SACC,MAAO,CACNC,EAAA,mBACAA,EAAA,WACE,CACA,aACA,MACA,WACA,QACA,SACA,eACA,QACA,oBACA,YACA,WACA,OACA,UACA,oBACA,aACA,oBACA,aACA,uBACA,gBACA,oBACA,aACA,oBACA,aACA,kBACA,WACA,YACA,KACA,SACA,YACA,UACA,UACA,YACA,UACA,WACA,aACA,SACA,mBACA,eACA,eACA,eACA,SACA,MACA,OACA,UACA,YACA,OACA,OACA,UACA,YACA,WACA,OACA,YACA,WACA,QACA,MACA,QACA,OACA,WACA,MACA,OACA,aACA,WACA,OACA,iBACA,SACA,OACA,oBACA,aACA,oBACA,aACA,uBACA,gBACA,kBACA,WACA,YACA,MACA,OACA,OACA,WACA,mBACA,UACA,sBACA,cACA,aACA,WACA,mBACA,wBACA,iBACA,YACA,sBACA,eACA,sBACA,eACA,yBACA,kBACA,oBACA,aACA,YACA,eACA,QACA,eACA,aACA,iBACA,gBACA,QACA,eACA,eACA,SACA,gBACA,aACA,OACA,eACA,MACA,aACA,eACA,gBACA,aACA,UACA,YACA,WACA,WACA,OACA,SACA,OACA,OACA,MACA,UACA,OACA,kBACA,YACA,WACA,gBACA,WACA,YACA,MACA,QACA,QACA,MACA,UACA,6BACA,sBACA,2BACA,oBACA,QACA,OACA,SACA,UACA,UACA,MACA,YACA,SACA,iBACA,oBACA,YACA,OACA,SACA,eACA,UACA,OACA,QACA,aACA,YACA,QACA,QACA,SACA,cACA,SACA,WACA,SACA,kBACA,OACA,aACA,aACA,cACA,YACA,cACA,mBACA,UACA,QACA,OACA,OACA,SACA,YACA,aACA,QACA,gBACA,UACA,eACA,uBACA,gBACA,aACA,QACA,YACA,cACA,OACA,OACA,YACA,YACA,SACA,QACA,WACA,qBACA,cACA,UACA,SACA,MACA,WACA,SACA,SACA,OACA,UACA,OACA,cACA,OACA,SACA,WACA,cACA,YACA,SACA,cACA,eACA,eACA,eACA,sBACA,aACA,eACA,iBACA,eACA,cACA,iBACA,cACA,yBACA,eACA,YACA,oBACA,cACA,gBACA,eACA,YACA,gBACA,YACA,gBACA,gBACA,eACA,cACA,kBACA,cACA,cACA,wBACA,cACA,kBACA,aACA,iBACA,aACA,gBACA,kBACA,eACA,gBACA,gBACA,cACA,cACA,kBACA,WACA,eACA,cACA,iBACA,mBACA,WACA,cACA,aACA,cACA,WACA,YACA,aACA,aACA,gBACA,kBACA,qBACA,aACA,eACA,cACA,cACA,WACA,cACA,eACA,WACA,UACA,qBACA,aACA,gBACA,aACA,eACA,UACA,iBACA,WACA,YACA,YACA,aACA,WACA,eACA,SACA,YACA,OACA,cACA,cACA,OACA,MACA,MACA,QACA,UACA,SACA,YACA,OACA,aACA,iBACA,UACA,MACA,OACA,OACA,gBACA,eACA,kBACA,WACA,YACA,uBACA,2BACA,oBACA,gBACA,UACA,YACA,OACA,UACA,cACA,eACA,eACA,QACA,MACA,SACA,gBACA,SACA,aACA,gBACA,gBACA,SACA,kBACA,iBACA,YACA,MACA,OACA,QACA,SACA,mBACA,YACA,cACA,sBACA,eACA,wBACA,iBACA,2BACA,oBACA,OACA,SACA,QACA,YACA,WACA,QACA,QACA,OACA,UACA,mBACA,kBACA,QACA,QACA,SACA,UACA,YACA,iBACA,UACA,gBACA,SACA,gBACA,SACA,eACA,gBACA,cACA,SACA,SACA,aACA,mBACA,sBACA,iBACA,oBACA,SACA,SACA,OACA,MACA,OACA,cACA,OACA,SACA,gBACA,SACA,OACA,SACA,WACA,SACA,eACA,QACA,mBACA,SACA,QACA,UACA,QACA,OACA,cACA,SACA,YACA,OACA,cACA,cACA,OACA,YACA,SACA,QACA,kBACA,gBACA,cACA,OACA,mBACA,kBACA,aACA,WACA,OACA,cACA,cACA,YACA,eACA,QACA,OACA,QACA,SACA,aACA,QACA,cACA,YACA,QACA,gBACA,cACA,WACA,SACA,KACA,WACA,OACA,SACA,UACA,QACA,QACA,WACA,OACA,OACA,cACA,aACA,gBACA,cACA,aACA,SAECwW,MAAMna,KAAK2nC,KAAO,IAAK,KACvB1+B,KAAI5I,GACJsD,EAAA,iBAAetD,KAAMA,EAAckE,QAASlE,OAG/CsD,EAAA,6BACAA,EAAA,WACCA,EAAA,iBAAetD,KAAM,UAAWkE,QAAS,WACzCZ,EAAA,iBAAetD,KAAM,UAAWkE,QAAS,uBAAwBqjC,KAAK,MACtEjkC,EAAA,iBAAetD,KAAM,UAAWkE,QAAS,qBAAsBqjC,KAAK,MACpEjkC,EAAA,iBAAetD,KAAM,UAAWkE,QAAS,iBAAkBijC,OAAQ,MACnE7jC,EAAA,iBAAetD,KAAM,OAAQkE,QAAS,gBAAiBijC,OAAQ,KAC/D7jC,EAAA,iBAAetD,KAAM,OAAQkE,QAAS,iBAAkBijC,OAAQ,MAChE7jC,EAAA,iBAAetD,KAAM,OAAQkE,QAAS,iBAAkBijC,QAAS,KACjE7jC,EAAA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"}