smoothly 1.113.0 → 1.115.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 (378) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/smoothly-app_98.cjs.entry.js +126 -101
  3. package/dist/cjs/smoothly-app_98.cjs.entry.js.map +1 -1
  4. package/dist/cjs/smoothly-input-checkbox-demo.cjs.entry.js +1 -1
  5. package/dist/cjs/smoothly-submit.cjs.entry.js +1 -1
  6. package/dist/cjs/smoothly-trigger-sink.cjs.entry.js +1 -1
  7. package/dist/cjs/smoothly-trigger-source.cjs.entry.js +1 -1
  8. package/dist/cjs/smoothly.cjs.js +1 -1
  9. package/dist/collection/components/app/index.js +2 -2
  10. package/dist/collection/components/app/index.js.map +1 -1
  11. package/dist/collection/components/app/room/index.js +12 -8
  12. package/dist/collection/components/app/room/index.js.map +1 -1
  13. package/dist/collection/components/icon/demo/index.js +25 -3
  14. package/dist/collection/components/icon/demo/index.js.map +1 -1
  15. package/dist/collection/components/input/checkbox/demo/index.js +1 -1
  16. package/dist/collection/components/input/checkbox/index.js +2 -2
  17. package/dist/collection/components/input/clear/index.js +1 -1
  18. package/dist/collection/components/input/color/demo/index.js +1 -1
  19. package/dist/collection/components/input/color/index.js +2 -2
  20. package/dist/collection/components/input/date/index.js +1 -1
  21. package/dist/collection/components/input/date/range/index.js +3 -3
  22. package/dist/collection/components/input/date/text/index.js +1 -1
  23. package/dist/collection/components/input/date/time/index.js +5 -5
  24. package/dist/collection/components/input/demo/date/index.js +1 -1
  25. package/dist/collection/components/input/demo/index.js +4 -4
  26. package/dist/collection/components/input/demo/price/index.js +1 -1
  27. package/dist/collection/components/input/demo/radio/index.js +1 -1
  28. package/dist/collection/components/input/demo/standard/index.js +1 -1
  29. package/dist/collection/components/input/demo/user-input/index.js +3 -3
  30. package/dist/collection/components/input/edit/index.js +1 -1
  31. package/dist/collection/components/input/file/index.js +1 -1
  32. package/dist/collection/components/input/index.js +2 -2
  33. package/dist/collection/components/input/month/index.js +4 -4
  34. package/dist/collection/components/input/radio/item/index.js +1 -1
  35. package/dist/collection/components/input/range/demo/index.js +1 -1
  36. package/dist/collection/components/input/range/index.js +4 -4
  37. package/dist/collection/components/input/reset/index.js +1 -1
  38. package/dist/collection/components/input/select/index.js +2 -2
  39. package/dist/collection/components/input/submit/index.js +1 -1
  40. package/dist/collection/components/item/index.js +1 -1
  41. package/dist/collection/components/label/index.js +2 -2
  42. package/dist/collection/components/lazy/index.js +1 -1
  43. package/dist/collection/components/load-more/index.js +1 -1
  44. package/dist/collection/components/modal/index.js +2 -2
  45. package/dist/collection/components/notification/index.js +1 -1
  46. package/dist/collection/components/notifier/index.js +1 -1
  47. package/dist/collection/components/spinner/index.js +2 -2
  48. package/dist/collection/components/submit/index.js +1 -1
  49. package/dist/collection/components/summary/index.js +1 -1
  50. package/dist/collection/components/table/body/index.js +1 -1
  51. package/dist/collection/components/table/cell/index.js +1 -1
  52. package/dist/collection/components/table/demo/colspan/index.js +1 -1
  53. package/dist/collection/components/table/demo/filler-row/index.js +1 -1
  54. package/dist/collection/components/table/demo/group/index.js +1 -1
  55. package/dist/collection/components/table/demo/index.js +1 -1
  56. package/dist/collection/components/table/demo/nested-no-cell/index.js +2 -2
  57. package/dist/collection/components/table/demo/nested-no-cell/inner/index.js +1 -1
  58. package/dist/collection/components/table/demo/simple/simple.js +1 -1
  59. package/dist/collection/components/table/expandable/cell/index.js +1 -1
  60. package/dist/collection/components/table/expandable/row/index.js +1 -1
  61. package/dist/collection/components/table/filler-row/index.js +1 -1
  62. package/dist/collection/components/table/foot/index.js +1 -1
  63. package/dist/collection/components/table/group/index.js +1 -1
  64. package/dist/collection/components/table/head/index.js +2 -2
  65. package/dist/collection/components/table/index.js +1 -1
  66. package/dist/collection/components/table/row/index.js +1 -1
  67. package/dist/collection/components/tabs/demo/index.js +1 -1
  68. package/dist/collection/components/tabs/tab/index.js +1 -1
  69. package/dist/collection/components/theme/color/index.js +1 -1
  70. package/dist/collection/components/theme/demo/index.js +1 -1
  71. package/dist/collection/components/theme/guide/index.js +8 -8
  72. package/dist/collection/components/theme/picker/index.js +2 -2
  73. package/dist/collection/components/toggle-switch/demo/index.js +1 -1
  74. package/dist/collection/components/toggle-switch/index.js +1 -1
  75. package/dist/collection/components/trigger/index.js +1 -1
  76. package/dist/collection/components/trigger/sink/index.js +1 -1
  77. package/dist/collection/components/trigger/source/index.js +1 -1
  78. package/dist/components/{p-DdXfvS4U.js → p-1j2KmcfQ.js} +2 -2
  79. package/dist/components/{p-C519IJGa.js → p-4pGbxojU.js} +2 -2
  80. package/dist/components/{p-WzQNLGYx.js → p-67RlLkJb.js} +2 -2
  81. package/dist/components/{p-BDW8BGmy.js → p-6PsJb2Ez.js} +2 -2
  82. package/dist/components/{p-B8ljN4o0.js → p-AX8gOGUr.js} +2 -2
  83. package/dist/components/p-B0kZrKne.js +2 -0
  84. package/dist/components/p-B2MMqcTF.js +2 -0
  85. package/dist/components/{p-CDetFhB9.js → p-B6sHuEsq.js} +2 -2
  86. package/dist/components/{p-Bh2x2l2j.js → p-BEHgXDtQ.js} +2 -2
  87. package/dist/components/{p-Qf8o2d67.js → p-BFJL6rrU.js} +2 -2
  88. package/dist/components/p-BGBbdXaw.js +2 -0
  89. package/dist/components/{p-9Fc5vWzs.js → p-BGzrO9CQ.js} +2 -2
  90. package/dist/components/{p-CjAkXCwI.js → p-BHcHgI_e.js} +2 -2
  91. package/dist/components/{p-CLN-EYZz.js → p-BHsrC9Oh.js} +2 -2
  92. package/dist/components/{p-CjknknP6.js → p-BRoShuOu.js} +2 -2
  93. package/dist/components/{p-CGg8GrGq.js → p-BUa0wBSK.js} +2 -2
  94. package/dist/components/p-BXoBluZQ.js +2 -0
  95. package/dist/components/{p-jlska1pM.js → p-B_z5-Hf8.js} +2 -2
  96. package/dist/components/p-BanWK6rV.js +2 -0
  97. package/dist/components/p-Bes8H54c.js +2 -0
  98. package/dist/components/{p-JLn3QBuQ.js.map → p-Bes8H54c.js.map} +1 -1
  99. package/dist/components/{p-BznhH5yZ.js → p-BfwEfI7H.js} +2 -2
  100. package/dist/components/{p-BrrLEO2B.js → p-Bn7CZqdz.js} +2 -2
  101. package/dist/components/{p-DvF8zgEi.js → p-BpV6GXd7.js} +2 -2
  102. package/dist/components/{p-BEQ2yAjW.js → p-Bpc6uh0M.js} +2 -2
  103. package/dist/components/p-Bq5YEPPT.js +2 -0
  104. package/dist/components/p-Bq5YEPPT.js.map +1 -0
  105. package/dist/components/{p-CuC7MNAM.js → p-BulPH2Jo.js} +2 -2
  106. package/dist/components/{p-CXEfxOpA.js → p-C-zr_dP8.js} +2 -2
  107. package/dist/components/{p-MCxlBxSA.js → p-C02MtoAQ.js} +2 -2
  108. package/dist/components/{p-DxVl-YSW.js → p-C2xjUTYO.js} +2 -2
  109. package/dist/components/{p-JdwWRJjd.js → p-C6T0ZB2C.js} +2 -2
  110. package/dist/components/{p-MNhi5te8.js → p-CAgJrhiy.js} +2 -2
  111. package/dist/components/p-CApTrLt_.js +2 -0
  112. package/dist/components/{p-B_Tu52N5.js → p-CCExK0R5.js} +2 -2
  113. package/dist/components/p-CCExK0R5.js.map +1 -0
  114. package/dist/components/{p-C5JaWzfu.js → p-CFgT9iMG.js} +2 -2
  115. package/dist/components/{p-OfpR2_fh.js → p-CJEV2v84.js} +2 -2
  116. package/dist/components/p-CKlr_F9h.js +2 -0
  117. package/dist/components/{p-Cct10sTX.js → p-CL7fW_Oh.js} +2 -2
  118. package/dist/components/{p-DTOzpQD8.js → p-COK__8-d.js} +2 -2
  119. package/dist/components/{p-uCXQl-5J.js → p-CPnXAdGI.js} +2 -2
  120. package/dist/components/p-CSXWpZjy.js +2 -0
  121. package/dist/components/{p-fjRiTKvl.js → p-CTdXhHGF.js} +2 -2
  122. package/dist/components/{p-0vl7fnbi.js → p-CUdZx76u.js} +2 -2
  123. package/dist/components/{p-C0XPq5lI.js → p-CVNSeOlg.js} +2 -2
  124. package/dist/components/{p-Dt4cCJEp.js → p-CcXqouEO.js} +2 -2
  125. package/dist/components/p-CgCEK6Lc.js +2 -0
  126. package/dist/components/{p-uWmGtcyP.js.map → p-CgCEK6Lc.js.map} +1 -1
  127. package/dist/components/{p-DRiOEv4L.js → p-CmPHR3tf.js} +2 -2
  128. package/dist/components/{p-C-dGqk3e.js → p-CoJyQegK.js} +2 -2
  129. package/dist/components/p-CooymHn6.js +2 -0
  130. package/dist/components/p-CqMnH54Q.js +2 -0
  131. package/dist/components/p-CqSiLhUe.js +2 -0
  132. package/dist/components/{p-CbWiiNJL.js → p-CqXSfYre.js} +2 -2
  133. package/dist/components/{p-xbCL6ChL.js → p-CqyGm3oe.js} +2 -2
  134. package/dist/components/{p-Q-gVll-_.js → p-CrKwvG9J.js} +2 -2
  135. package/dist/components/{p-BMHv8WTp.js → p-CrkBYYf-.js} +2 -2
  136. package/dist/components/{p-B6W5V130.js → p-CtuuZV3u.js} +2 -2
  137. package/dist/components/p-Cv-uvD7X.js +2 -0
  138. package/dist/components/{p-BZJNdp6g.js → p-Cw_sHLuu.js} +2 -2
  139. package/dist/components/{p-DbS9bWfm.js → p-D-mAUrbR.js} +2 -2
  140. package/dist/components/{p-gJF_-tuy.js → p-D5WTwmc6.js} +2 -2
  141. package/dist/components/{p-DGxkSNZ-.js → p-D5dkLuTD.js} +2 -2
  142. package/dist/components/p-DGa_QPb9.js +2 -0
  143. package/dist/components/{p-eptsxAXs.js.map → p-DGa_QPb9.js.map} +1 -1
  144. package/dist/components/{p-97N6vnZd.js → p-DHj4bfJ8.js} +2 -2
  145. package/dist/components/{p-97N6vnZd.js.map → p-DHj4bfJ8.js.map} +1 -1
  146. package/dist/components/{p-DVbSVIVZ.js → p-DIf6-Fvg.js} +2 -2
  147. package/dist/components/{p-BpBeeNcM.js → p-DIhqNc1G.js} +2 -2
  148. package/dist/components/{p-CsHiDnB-.js → p-DLBMEh0f.js} +2 -2
  149. package/dist/components/{p-pYGmgv_e.js → p-DM3PMEgb.js} +2 -2
  150. package/dist/components/{p-D4LmYvoM.js → p-DS66Mn9S.js} +2 -2
  151. package/dist/components/p-DYNjCosy.js +2 -0
  152. package/dist/components/{p-OV_wRej-.js → p-D_uKY0yY.js} +2 -2
  153. package/dist/components/p-DkhX1qsg.js +2 -0
  154. package/dist/components/{p-DkxTx6nY.js → p-Dz8Bblye.js} +2 -2
  155. package/dist/components/{p-BqODWrES.js → p-He4KDK9-.js} +2 -2
  156. package/dist/components/{p-W-kaGeCx.js → p-N-UYdc5h.js} +2 -2
  157. package/dist/components/{p-oWil-NTX.js → p-NFd9Dxr1.js} +2 -2
  158. package/dist/components/{p-DyL_ilIk.js → p-NGbZCAH9.js} +2 -2
  159. package/dist/components/{p-DtoC1d2_.js → p-Qv-IgIvL.js} +2 -2
  160. package/dist/components/{p-7ReeDB-R.js → p-Ww5QjB3D.js} +2 -2
  161. package/dist/components/{p-CCzyYE1m.js → p-_o_lUhve.js} +2 -2
  162. package/dist/components/{p-B11YJh32.js → p-d26Fb7IS.js} +2 -2
  163. package/dist/components/{p-D4PyTfe4.js → p-dBpTpVs8.js} +2 -2
  164. package/dist/components/{p-DKir2dIt.js → p-fnKrPnzp.js} +2 -2
  165. package/dist/components/{p-V6FzDWfL.js → p-nFLcvugJ.js} +2 -2
  166. package/dist/components/{p-B7ws0a8Z.js → p-xkRxEiC8.js} +2 -2
  167. package/dist/components/smoothly-app-demo.js +1 -1
  168. package/dist/components/smoothly-app-room.js +1 -1
  169. package/dist/components/smoothly-app.js +1 -1
  170. package/dist/components/smoothly-button-demo-standard.js +1 -1
  171. package/dist/components/smoothly-button-demo.js +1 -1
  172. package/dist/components/smoothly-calendar.js +1 -1
  173. package/dist/components/smoothly-date-text.js +1 -1
  174. package/dist/components/smoothly-dialog-demo.js +1 -1
  175. package/dist/components/smoothly-dialog.js +1 -1
  176. package/dist/components/smoothly-display-demo.js +1 -1
  177. package/dist/components/smoothly-form-demo-all.js +1 -1
  178. package/dist/components/smoothly-form-demo-card.js +1 -1
  179. package/dist/components/smoothly-form-demo-controlled.js +1 -1
  180. package/dist/components/smoothly-form-demo-date-range.js +1 -1
  181. package/dist/components/smoothly-form-demo-date.js +1 -1
  182. package/dist/components/smoothly-form-demo-login.js +1 -1
  183. package/dist/components/smoothly-form-demo-pet.js +1 -1
  184. package/dist/components/smoothly-form-demo-prices.js +1 -1
  185. package/dist/components/smoothly-form-demo-schedule.js +1 -1
  186. package/dist/components/smoothly-form-demo-transparent.js +1 -1
  187. package/dist/components/smoothly-form-demo-typed.js +1 -1
  188. package/dist/components/smoothly-form-demo.js +1 -1
  189. package/dist/components/smoothly-form.js +1 -1
  190. package/dist/components/smoothly-icon-demo.js +1 -1
  191. package/dist/components/smoothly-input-checkbox-demo.js +1 -1
  192. package/dist/components/smoothly-input-checkbox.js +1 -1
  193. package/dist/components/smoothly-input-clear.js +1 -1
  194. package/dist/components/smoothly-input-color-demo.js +1 -1
  195. package/dist/components/smoothly-input-color.js +1 -1
  196. package/dist/components/smoothly-input-date-demo.js +1 -1
  197. package/dist/components/smoothly-input-date-range.js +1 -1
  198. package/dist/components/smoothly-input-date-time.js +1 -1
  199. package/dist/components/smoothly-input-date.js +1 -1
  200. package/dist/components/smoothly-input-demo-radio.js +1 -1
  201. package/dist/components/smoothly-input-demo-standard.js +1 -1
  202. package/dist/components/smoothly-input-demo-user-input.js +1 -1
  203. package/dist/components/smoothly-input-demo.js +1 -1
  204. package/dist/components/smoothly-input-edit.js +1 -1
  205. package/dist/components/smoothly-input-file.js +1 -1
  206. package/dist/components/smoothly-input-month.js +1 -1
  207. package/dist/components/smoothly-input-price-demo.js +1 -1
  208. package/dist/components/smoothly-input-radio-item.js +1 -1
  209. package/dist/components/smoothly-input-radio.js +1 -1
  210. package/dist/components/smoothly-input-range-demo.js +1 -1
  211. package/dist/components/smoothly-input-range.js +1 -1
  212. package/dist/components/smoothly-input-reset.js +1 -1
  213. package/dist/components/smoothly-input-select.js +1 -1
  214. package/dist/components/smoothly-input-submit.js +1 -1
  215. package/dist/components/smoothly-input.js +1 -1
  216. package/dist/components/smoothly-item.js +1 -1
  217. package/dist/components/smoothly-label.js +1 -1
  218. package/dist/components/smoothly-lazy.js +1 -1
  219. package/dist/components/smoothly-load-more.js +1 -1
  220. package/dist/components/smoothly-modal.js +1 -1
  221. package/dist/components/smoothly-notification.js +1 -1
  222. package/dist/components/smoothly-notifier.js +1 -1
  223. package/dist/components/smoothly-spinner.js +1 -1
  224. package/dist/components/smoothly-submit.js +1 -1
  225. package/dist/components/smoothly-summary.js +1 -1
  226. package/dist/components/smoothly-tab.js +1 -1
  227. package/dist/components/smoothly-table-body.js +1 -1
  228. package/dist/components/smoothly-table-cell.js +1 -1
  229. package/dist/components/smoothly-table-demo-colspan.js +1 -1
  230. package/dist/components/smoothly-table-demo-filler-row.js +1 -1
  231. package/dist/components/smoothly-table-demo-group.js +1 -1
  232. package/dist/components/smoothly-table-demo-nested-no-cell-inner.js +1 -1
  233. package/dist/components/smoothly-table-demo-nested-no-cell.js +1 -1
  234. package/dist/components/smoothly-table-demo-simple.js +1 -1
  235. package/dist/components/smoothly-table-demo.js +1 -1
  236. package/dist/components/smoothly-table-expandable-cell.js +1 -1
  237. package/dist/components/smoothly-table-expandable-row.js +1 -1
  238. package/dist/components/smoothly-table-filler-row.js +1 -1
  239. package/dist/components/smoothly-table-foot.js +1 -1
  240. package/dist/components/smoothly-table-head.js +1 -1
  241. package/dist/components/smoothly-table-row-group.js +1 -1
  242. package/dist/components/smoothly-table-row.js +1 -1
  243. package/dist/components/smoothly-table.js +1 -1
  244. package/dist/components/smoothly-tabs-demo.js +1 -1
  245. package/dist/components/smoothly-theme-color.js +1 -1
  246. package/dist/components/smoothly-theme-colors.js +1 -1
  247. package/dist/components/smoothly-theme-demo.js +1 -1
  248. package/dist/components/smoothly-theme-guide.js +1 -1
  249. package/dist/components/smoothly-theme-picker.js +1 -1
  250. package/dist/components/smoothly-toggle-switch-demo.js +1 -1
  251. package/dist/components/smoothly-toggle-switch.js +1 -1
  252. package/dist/components/smoothly-trigger-sink.js +1 -1
  253. package/dist/components/smoothly-trigger-source.js +1 -1
  254. package/dist/components/smoothly-trigger.js +1 -1
  255. package/dist/esm/loader.js +1 -1
  256. package/dist/esm/smoothly-app_98.entry.js +126 -101
  257. package/dist/esm/smoothly-app_98.entry.js.map +1 -1
  258. package/dist/esm/smoothly-input-checkbox-demo.entry.js +1 -1
  259. package/dist/esm/smoothly-submit.entry.js +1 -1
  260. package/dist/esm/smoothly-trigger-sink.entry.js +1 -1
  261. package/dist/esm/smoothly-trigger-source.entry.js +1 -1
  262. package/dist/esm/smoothly.js +1 -1
  263. package/dist/smoothly/p-7d6c72eb.entry.js +2 -0
  264. package/dist/smoothly/{p-118fd1b8.entry.js → p-94d091cd.entry.js} +2 -2
  265. package/dist/smoothly/p-b7ac3c88.entry.js +2 -0
  266. package/dist/smoothly/p-b7ac3c88.entry.js.map +1 -0
  267. package/dist/smoothly/{p-2cd32901.entry.js → p-be43737e.entry.js} +2 -2
  268. package/dist/smoothly/{p-baabb62e.entry.js → p-d4dad5a8.entry.js} +2 -2
  269. package/dist/smoothly/smoothly.esm.js +1 -1
  270. package/dist/types/components/app/index.d.ts +1 -0
  271. package/dist/types/components/app/room/index.d.ts +3 -1
  272. package/dist/types/components/icon/demo/index.d.ts +2 -0
  273. package/dist/types/components.d.ts +5 -5
  274. package/package.json +1 -1
  275. package/dist/components/p-B_Tu52N5.js.map +0 -1
  276. package/dist/components/p-BdqxED0P.js +0 -2
  277. package/dist/components/p-BnKGlfV9.js +0 -2
  278. package/dist/components/p-Bufbdh4o.js +0 -2
  279. package/dist/components/p-Bufbdh4o.js.map +0 -1
  280. package/dist/components/p-BxsOj_LX.js +0 -2
  281. package/dist/components/p-CMEyMMZz.js +0 -2
  282. package/dist/components/p-COTO4dlW.js +0 -2
  283. package/dist/components/p-CZGfvbsC.js +0 -2
  284. package/dist/components/p-Cgowjgod.js +0 -2
  285. package/dist/components/p-Cw-_pWl-.js +0 -2
  286. package/dist/components/p-D4fagxgG.js +0 -2
  287. package/dist/components/p-D8jJZbTy.js +0 -2
  288. package/dist/components/p-JB57brc4.js +0 -2
  289. package/dist/components/p-JLn3QBuQ.js +0 -2
  290. package/dist/components/p-eptsxAXs.js +0 -2
  291. package/dist/components/p-h1R5xtdy.js +0 -2
  292. package/dist/components/p-hcVaU3nW.js +0 -2
  293. package/dist/components/p-rRkypR5s.js +0 -2
  294. package/dist/components/p-uWmGtcyP.js +0 -2
  295. package/dist/smoothly/p-2fbd48bb.entry.js +0 -2
  296. package/dist/smoothly/p-d2f00811.entry.js +0 -2
  297. package/dist/smoothly/p-d2f00811.entry.js.map +0 -1
  298. /package/dist/components/{p-DdXfvS4U.js.map → p-1j2KmcfQ.js.map} +0 -0
  299. /package/dist/components/{p-C519IJGa.js.map → p-4pGbxojU.js.map} +0 -0
  300. /package/dist/components/{p-WzQNLGYx.js.map → p-67RlLkJb.js.map} +0 -0
  301. /package/dist/components/{p-BDW8BGmy.js.map → p-6PsJb2Ez.js.map} +0 -0
  302. /package/dist/components/{p-B8ljN4o0.js.map → p-AX8gOGUr.js.map} +0 -0
  303. /package/dist/components/{p-JB57brc4.js.map → p-B0kZrKne.js.map} +0 -0
  304. /package/dist/components/{p-Cw-_pWl-.js.map → p-B2MMqcTF.js.map} +0 -0
  305. /package/dist/components/{p-CDetFhB9.js.map → p-B6sHuEsq.js.map} +0 -0
  306. /package/dist/components/{p-Bh2x2l2j.js.map → p-BEHgXDtQ.js.map} +0 -0
  307. /package/dist/components/{p-Qf8o2d67.js.map → p-BFJL6rrU.js.map} +0 -0
  308. /package/dist/components/{p-h1R5xtdy.js.map → p-BGBbdXaw.js.map} +0 -0
  309. /package/dist/components/{p-9Fc5vWzs.js.map → p-BGzrO9CQ.js.map} +0 -0
  310. /package/dist/components/{p-CjAkXCwI.js.map → p-BHcHgI_e.js.map} +0 -0
  311. /package/dist/components/{p-CLN-EYZz.js.map → p-BHsrC9Oh.js.map} +0 -0
  312. /package/dist/components/{p-CjknknP6.js.map → p-BRoShuOu.js.map} +0 -0
  313. /package/dist/components/{p-CGg8GrGq.js.map → p-BUa0wBSK.js.map} +0 -0
  314. /package/dist/components/{p-hcVaU3nW.js.map → p-BXoBluZQ.js.map} +0 -0
  315. /package/dist/components/{p-jlska1pM.js.map → p-B_z5-Hf8.js.map} +0 -0
  316. /package/dist/components/{p-BnKGlfV9.js.map → p-BanWK6rV.js.map} +0 -0
  317. /package/dist/components/{p-BznhH5yZ.js.map → p-BfwEfI7H.js.map} +0 -0
  318. /package/dist/components/{p-BrrLEO2B.js.map → p-Bn7CZqdz.js.map} +0 -0
  319. /package/dist/components/{p-DvF8zgEi.js.map → p-BpV6GXd7.js.map} +0 -0
  320. /package/dist/components/{p-BEQ2yAjW.js.map → p-Bpc6uh0M.js.map} +0 -0
  321. /package/dist/components/{p-CuC7MNAM.js.map → p-BulPH2Jo.js.map} +0 -0
  322. /package/dist/components/{p-CXEfxOpA.js.map → p-C-zr_dP8.js.map} +0 -0
  323. /package/dist/components/{p-MCxlBxSA.js.map → p-C02MtoAQ.js.map} +0 -0
  324. /package/dist/components/{p-DxVl-YSW.js.map → p-C2xjUTYO.js.map} +0 -0
  325. /package/dist/components/{p-JdwWRJjd.js.map → p-C6T0ZB2C.js.map} +0 -0
  326. /package/dist/components/{p-MNhi5te8.js.map → p-CAgJrhiy.js.map} +0 -0
  327. /package/dist/components/{p-BxsOj_LX.js.map → p-CApTrLt_.js.map} +0 -0
  328. /package/dist/components/{p-C5JaWzfu.js.map → p-CFgT9iMG.js.map} +0 -0
  329. /package/dist/components/{p-OfpR2_fh.js.map → p-CJEV2v84.js.map} +0 -0
  330. /package/dist/components/{p-COTO4dlW.js.map → p-CKlr_F9h.js.map} +0 -0
  331. /package/dist/components/{p-Cct10sTX.js.map → p-CL7fW_Oh.js.map} +0 -0
  332. /package/dist/components/{p-DTOzpQD8.js.map → p-COK__8-d.js.map} +0 -0
  333. /package/dist/components/{p-uCXQl-5J.js.map → p-CPnXAdGI.js.map} +0 -0
  334. /package/dist/components/{p-BdqxED0P.js.map → p-CSXWpZjy.js.map} +0 -0
  335. /package/dist/components/{p-fjRiTKvl.js.map → p-CTdXhHGF.js.map} +0 -0
  336. /package/dist/components/{p-0vl7fnbi.js.map → p-CUdZx76u.js.map} +0 -0
  337. /package/dist/components/{p-C0XPq5lI.js.map → p-CVNSeOlg.js.map} +0 -0
  338. /package/dist/components/{p-Dt4cCJEp.js.map → p-CcXqouEO.js.map} +0 -0
  339. /package/dist/components/{p-DRiOEv4L.js.map → p-CmPHR3tf.js.map} +0 -0
  340. /package/dist/components/{p-C-dGqk3e.js.map → p-CoJyQegK.js.map} +0 -0
  341. /package/dist/components/{p-Cgowjgod.js.map → p-CooymHn6.js.map} +0 -0
  342. /package/dist/components/{p-rRkypR5s.js.map → p-CqMnH54Q.js.map} +0 -0
  343. /package/dist/components/{p-D8jJZbTy.js.map → p-CqSiLhUe.js.map} +0 -0
  344. /package/dist/components/{p-CbWiiNJL.js.map → p-CqXSfYre.js.map} +0 -0
  345. /package/dist/components/{p-xbCL6ChL.js.map → p-CqyGm3oe.js.map} +0 -0
  346. /package/dist/components/{p-Q-gVll-_.js.map → p-CrKwvG9J.js.map} +0 -0
  347. /package/dist/components/{p-BMHv8WTp.js.map → p-CrkBYYf-.js.map} +0 -0
  348. /package/dist/components/{p-B6W5V130.js.map → p-CtuuZV3u.js.map} +0 -0
  349. /package/dist/components/{p-CZGfvbsC.js.map → p-Cv-uvD7X.js.map} +0 -0
  350. /package/dist/components/{p-BZJNdp6g.js.map → p-Cw_sHLuu.js.map} +0 -0
  351. /package/dist/components/{p-DbS9bWfm.js.map → p-D-mAUrbR.js.map} +0 -0
  352. /package/dist/components/{p-gJF_-tuy.js.map → p-D5WTwmc6.js.map} +0 -0
  353. /package/dist/components/{p-DGxkSNZ-.js.map → p-D5dkLuTD.js.map} +0 -0
  354. /package/dist/components/{p-DVbSVIVZ.js.map → p-DIf6-Fvg.js.map} +0 -0
  355. /package/dist/components/{p-BpBeeNcM.js.map → p-DIhqNc1G.js.map} +0 -0
  356. /package/dist/components/{p-CsHiDnB-.js.map → p-DLBMEh0f.js.map} +0 -0
  357. /package/dist/components/{p-pYGmgv_e.js.map → p-DM3PMEgb.js.map} +0 -0
  358. /package/dist/components/{p-D4LmYvoM.js.map → p-DS66Mn9S.js.map} +0 -0
  359. /package/dist/components/{p-CMEyMMZz.js.map → p-DYNjCosy.js.map} +0 -0
  360. /package/dist/components/{p-OV_wRej-.js.map → p-D_uKY0yY.js.map} +0 -0
  361. /package/dist/components/{p-D4fagxgG.js.map → p-DkhX1qsg.js.map} +0 -0
  362. /package/dist/components/{p-DkxTx6nY.js.map → p-Dz8Bblye.js.map} +0 -0
  363. /package/dist/components/{p-BqODWrES.js.map → p-He4KDK9-.js.map} +0 -0
  364. /package/dist/components/{p-W-kaGeCx.js.map → p-N-UYdc5h.js.map} +0 -0
  365. /package/dist/components/{p-oWil-NTX.js.map → p-NFd9Dxr1.js.map} +0 -0
  366. /package/dist/components/{p-DyL_ilIk.js.map → p-NGbZCAH9.js.map} +0 -0
  367. /package/dist/components/{p-DtoC1d2_.js.map → p-Qv-IgIvL.js.map} +0 -0
  368. /package/dist/components/{p-7ReeDB-R.js.map → p-Ww5QjB3D.js.map} +0 -0
  369. /package/dist/components/{p-CCzyYE1m.js.map → p-_o_lUhve.js.map} +0 -0
  370. /package/dist/components/{p-B11YJh32.js.map → p-d26Fb7IS.js.map} +0 -0
  371. /package/dist/components/{p-D4PyTfe4.js.map → p-dBpTpVs8.js.map} +0 -0
  372. /package/dist/components/{p-DKir2dIt.js.map → p-fnKrPnzp.js.map} +0 -0
  373. /package/dist/components/{p-V6FzDWfL.js.map → p-nFLcvugJ.js.map} +0 -0
  374. /package/dist/components/{p-B7ws0a8Z.js.map → p-xkRxEiC8.js.map} +0 -0
  375. /package/dist/smoothly/{p-2fbd48bb.entry.js.map → p-7d6c72eb.entry.js.map} +0 -0
  376. /package/dist/smoothly/{p-118fd1b8.entry.js.map → p-94d091cd.entry.js.map} +0 -0
  377. /package/dist/smoothly/{p-2cd32901.entry.js.map → p-be43737e.entry.js.map} +0 -0
  378. /package/dist/smoothly/{p-baabb62e.entry.js.map → p-d4dad5a8.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["any","name","IslyAny","Type","class","is","value","undefined","getLocale","result","navigator","language","isoly","Locale","Language","toLocale","styleCss","SmoothlyApp","constructor","hostRef","this","menuOpen","navBreakpoint","mobileMode","rooms","componentWillLoad","mediaQuery","window","matchMedia","matches","addEventListener","e","updateMobileMode","componentDidLoad","Object","values","forEach","room","element","setMobileMode","componentDidRender","selected","location","search","_a","home","find","disabled","setSelected","selectRoom","path","selectedChanged","content","getContent","requestAnimationFrame","mainElement","replaceChildren","locationChangeHandler","event","state","smoothlyPath","history","smoothlyUrlChange","emit","href","roomSelectedHandler","target","detail","URL","pathname","origin","query","pushState","smoothlyQuery","roomLoadedHandler","toString","clickHandler","composedPath","some","burgerElement","navElement","render","h","Host","key","color","label","ref","open","onSmoothlyNavStatus","stopPropagation","SmoothlyAppDemo","urlChangeHandler","console","log","app","style","padding","maxWidth","margin","slot","type","fill","link","onClick","alert","Part","prefix","suffix","modifier","hasCustomName","regexIdentifierStart","regexIdentifierPart","kFullWildcardRegex","isASCII","str","extended","test","lexer","lenient","tokens","i","length","char","ErrorOrInvalid","msg","TypeError","push","index","j","code","substr","count","pattern","error","parse","options","delimiter","prefixes","segmentWildcardRegex","escapeString","nameSet","Set","tryConsume","tryConsumeModifier","mustConsume","nextType","consumeText","result2","DefaultEncodePart","encodePart","pendingFixedValue","appendToPendingFixedValue","maybeAddPartFromPendingFixedValue","addPart","nameToken","regexOrWildcardToken","modifierToken","regexValue","has","add","charToken","indexOf","openToken","nameToken2","regexOrWildcardToken2","replace","flags","ignoreCase","stringToRegexp","names","partsToRegexp","modifierToString","parts","sensitive","strict","end","start","endsWith","part","RegExp","isEndDelimited","lastPart","DEFAULT_OPTIONS","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","token","previousToken","componentCharStart","assign","regexp","COMPONENTS","DEFAULT_PATTERN","extractValues","baseURL","o","processBaseURLString","escapePatternString","applyInit","init","slashIndex","lastIndexOf","escapeRegexpString","partsToPattern","kFullWildcardRegex2","regexIdentifierPart2","customName","needsGrouping","nextPart","URLPattern","baseURLOrOptions","component_pattern","parser","ignoreCaseOptions","defaults","component","options2","err","message","exec","inputs","match","groups","entries","compareComponent","left","right","comparePart","left2","right2","attr","emptyFixedPart","wildcardOnlyPart","comparePartList","Math","min","globalThis","SmoothlyAppRoom","stringOrPatternPaths","Array","isArray","paths","map","smoothlyRoomLoad","replaceState","mobile","contentElement","smoothlyRoomSelect","setQuery","metaKey","ctrlKey","which","button","preventDefault","icon","SmoothlyBackToTop","opacity","bottom","scrollableParent","Scrollable","findParent","visible","_b","scrollTop","cssVariables","scrollTo","top","behavior","SmoothlyBurger","openChanged","smoothlyNavStatus","SmoothlyButton","title","tooltip","Button","SmoothlyButtonConfirm","doubleClickTime","clickTimeStamp","timeStamp","timer","clearTimeout","smoothlyConfirm","setTimeout","warning","expand","size","shape","SmoothlyButtonDemo","SmoothlyButtonDemoStandard","props","heightText","updateInputHeightText","rootFontSize","Number","getComputedStyle","document","documentElement","fontSize","lastButton","heightPx","clientHeight","onSmoothlyFormInput","looks","checked","clearable","Fill","menuHeight","Icon","Name","Color","colors","el","rounded","text","useColor","month","date","d","Date","setDate","day","getDay","row","r","column","setUTCDate","create","firstOfMonth","weekdays","getDate","toLocaleString","weekday","months","current","setMonth","years","max","getYear","getFullYear","setFullYear","year","Calendar","clickCounter","onStart","onEnd","startInternal","endInternal","jumpTo","yearMonth","Year","Y","now","mon","Month","M","_d","_c","smoothlyDateSet","onClickDoubleInput","frozenDate","smoothlyDateRangeSet","onHover","doubleInput","withinLimit","Fragment","inCalendar","next","previous","showLabel","onSmoothlyInput","onSmoothlyUserInput","generate.weekdays","generate.month","week","tabindex","onMouseOver","today","currentMonth","dateRange","disable","DateFormat","guides","D","isComplete","lengthOf","getGuide","filledLength","guide","Parts","lastDay","lastDate","lastOfMonth","padStart","toDate","fromDate","Order","fromLocale","locale","getPart","order","charAt","toArray","split","Separator","InputSelection","isAtStart","currentTarget","sel","getSelection","rangeCount","contains","anchorNode","isCollapsed","range","getRangeAt","preRange","cloneRange","selectNodeContents","setEnd","startContainer","startOffset","isAtEnd","postRange","setStart","endContainer","endOffset","selectAll","focus","createRange","removeAllRanges","addRange","setPosition","selection","textNode","firstChild","position","innerText","collapse","collapsed","SmoothlyInputDateRangeText","partElements","separator","updateInputs","partsHandler","previousEmittedValue","smoothlyDateTextChange","smoothlyDateTextHasText","focusedIndexHandler","smoothlyDateTextFocusChange","focusedIndex","setValue","setAllParts","yearIndex","monthIndex","dayIndex","setPart","select","place","setFocus","deselect","blur","getInnerText","beforeInputHandler","nonDigitData","data","noRangedSelection","inputType","smoothlyDateTextDone","inputHandler","isDay","singleDigitThreshold","numberValue","commitPart","autoAdvancePart","roundedValue","roundedParts","smoothlyDateHasPartialDate","keyDownHandler","autoAdvanceIfPossible","clamped","smoothlyDateTextPrevious","smoothlyDateTextNext","readonly","onFocus","onBlur","onKeyDown","contenteditable","inputmode","SmoothlyDialog","closable","TriggerListener","Trigger","hostData","display","__stencil_render","header","SmoothlyDialogDemo","openModal","openTallModal","showFrame","onSmoothlyModalChange","align","from","height","getForwardWordBreakIndex","wordRegex","lastIndex","getBackwardWordBreakIndex","execArray","getAdjecentWordBreakIndex","direction","Selection","getCursor","getStalker","State","copy","remainder","StateEditor","get","character","c","isDigit","matcher","s","slice","insert","append","prepend","delete","truncate","pad","padEnd","toLower","symbol","toUpper","toUpperCase","mapping","replacement","modify","Action","apply","formatter","action","unformat","autocomplete","ctrlArrow","ctrlBackspaceDelete","arrowHomeEnd","erase","allowed","format","paste","pasted","cursorPosition","stalkPosition","shiftKey","adjecentIndex","to","insertString","handlers","argument","handler","fromString","Handler","partialFormat","unformatted","formatted","issuer","getIssuer","spaceIndexes","verification","classes","defaultIssuer","issuers","prototype","hasOwnProperty","call","identification","amex","dankort","diners","discover","electron","interpayment","jcb","unionpay","maestro","mastercard","visa","Base","formatString","validMonth","register","parameters","super","join","daysInMonth","fillerDate","DateTime","formatDate","validDate","daysPerMonth","patterns","extract","zeros","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","number","decimals","parsedFloat","phonePrefix","countryCode","areaCodes","first","digitIndex","digitCount","spaces","ceil","currency","toInteger","Currency","decimalDigits","addLeadingIntegerZero","fillDecimalsIfPresent","truncateIntegerZeros","addThousandSeparators","forceDecimalZero","appendCurrency","separatorIndex","zeroHandling","adjust","repeat","SmoothlyDisplay","collapseDepth","tidily.format","tidily.get","localize","SmoothlyDisplayDemo","noticeWarning","notice","hour","minute","second","timeZone","Notice","warn","succeeded","failed","execute","Promise","resolve","delay","width","downloadingSpinner","overlay","gap","labels","l","hue","description","SmoothlyDisplayDemoJson","colapseDepth","json","nested","age","array","emptyObject","emptyArray","truthy","falsy","null","notDefined","longString","JsonValue","isly.object","SmoothlyDisplayJson","SmoothlyDisplayJsonObject","openBracket","closeBracket","keys","empty","nextCollapseDepth","v","k","SmoothlyDisplayJsonPrimitive","JSON","stringify","SmoothlyDisplayJsonRecordKey","Method","parsers","contentType","t","request","headers","serializers","serializer","serialize","body","fields","Header","isString","isStringArray","every","field","fromEntries","camelCase","n","CamelCase.from","isHeaders","trim","CamelCase.to","Request","method","parameter","remote","RequestHeader","async","Serializer.serialize","searchParams","Parser.parse","cloudflare","cf","PlatformResponse","Response","__classPrivateFieldGet","receiver","kind","f","__classPrivateFieldSet","set","_Socket_instances","_Socket_receiveQueue","_Socket_sendQueue","_Socket_closed","_Socket_backend","_Socket_onMessage","_Socket_onClose","_Socket_handleOpen","_Socket_onOpen","Socket","onMessage","onClose","onOpen","backend","isOpen","bind","processReceived","send","processSend","WeakMap","WeakSet","buffer","ArrayBuffer","arrayBuffer","TextEncoder","encode","Json","TextDecoder","decode","String","_Factory_json","_Factory_string","_Factory_arrayBuffer","Factory","SocketJson","string","SocketString","SocketArrayBuffer","createResponse","status","socket","close","reason","SocketFactory","_","getEntries","Like","property","ResponseHeader","WebSocket","Platform.Response","Headers","webSocket","response","ResponseLike","isView","FormData","isPdf","bytes","Uint8Array","fetch","Blob","toHelperObject","form","reduce","toHelperArray","head","tail","merge","sources","isObject","encodeURIComponent","convertArrays","sort","entry","decodeURIComponent","p","Parser.add","formData","Search.parse","Serializer.add","Search.stringify","Clearable","clear","Observer","parent","callbacks","subscribe","callback","publish","all","Editable","EditableObserver","Element","edit","isly.function","isly.boolean","listen","reset","setInitialValue","EventEmitter","extend","isDifferentFromInitial","isly.any","optional","smoothlyFormDisable","Looks","isly.string","Input","unregister","getValue","invalid","defined","binary","smoothlyInputLoad","smoothlyInput","smoothlyUserInput","smoothlyKeydown","smoothlyInputForm","formRemove","self","SmoothlyForm","removeInput","formAdd","formRename","oldName","registerSubAction","prevent","Map","readonlyAtLoad","observer","isConnected","Data","remove","smoothlyFormInput","listener","watchValue","validator","flaws","flaw","validate","rest","nestedFlaws","watchReadonly","smoothlyInputLooksHandler","smoothlyInputHandler","smoothlyKeydownHandler","submit","windowSubmitHandler","submitHandler","smoothlyInputLoadHandler","inputComponent","inputValue","smoothlyFormDisableHandler","processing","smoothlyFormSubmit","http\n .fetch","http.Request","http.Search.stringify","catch","smoothlyFormClear","editable","smoothlyFormEdit","smoothlyFormReset","hidden","onSubmit","SmoothlyFormDemo","SmoothlyFormDemoAll","onSmoothlyFormSubmit","multiple","placeholder","showSelected","step","SmoothlyFormDemoCard","SmoothlyFormDemoControlled","currencies","nameChanged","SmoothlyFormDemoDate","isly.fromIs","SmoothlyFormDemoDateRange","DateRange","SmoothlyFormDemoLogin","SmoothlyFormDemoPet","hasOwner","owner","onSmoothlyInputLoad","firstName","lastName","birthday","ownedRange","favoriteHat","favoriteColor","RGB","toHex","favoritePizza","hasPet","SmoothlyFormDemoPrices","ScheduledEvent","amount","isly.number","TimeTable","schedule","SmoothlyFormDemoTransparent","Contact","middle","last","CountryCode","Alpha2","SmoothlyFormDemoTyped","en","SmoothlyFrame","contentWindow","iframe","firstElementChild","defaultOrigin","Message","destination","trigger","message2","SmoothlyIcon","updateSvg","promise","latestPromise","load","svgElement","sanitizeSvg","svg","DOMParser","parseFromString","querySelector","setAttribute","removeAttribute","innerHTML","rotate","SmoothlyIconDemo","page","background","ordered","flatMap","filter","variant","Logo","flip","clipboard","writeText","Deep","equal","a","b","notEqual","Adjacent","getWordBreakIndex","InputStateHandler","keydownHandlers","ArrowLeft","moveCursor","ArrowRight","eventHandlers","beforeinput","insertText","insertFromPaste","insertFromDrop","deleteContentBackward","deleteContentForward","deleteWordBackward","formattedState","deleteWord","deleteWordForward","deleteByCut","insertReplacementText","insertCompositionText","extra","selectionStart","selectionEnd","selectionDirection","unformatState","partialFormatState","defaultPrevented","cursor","tidily.Selection","stalk","createFormattedState","onInputEvent","_f","_e","_g","adjacentIndex","tidily.State","tidily.StateEditor","unformattedState","initialState","inputElement","stringValue","setSelection","Key","shift","ctrl","alt","meta","altKey","SmoothlyInput","required","copied","uneditable","stateHandler","nameChange","initialValue","setCustomInitialValue","typeChange","stateChange","valueChange","lastValue","readonlyChange","smoothlyInputLooks","disconnectedCallback","onEvent","copyText","onclick","_h","readOnly","_j","_k","source","smoothlyBlur","smoothlyChange","htmlFor","copyable","onMouseLeave","errorMessage","SmoothlyInputCheckbox","id","random","handleDisabledChange","elementCheck","before","changed","onChange","SmoothlyInputClear","Boolean","val","SmoothlyInputColor","rgb","g","hsl","output","sliderMode","Hex","toRGB","onWindowClick","watchingReadonly","round","valueChanged","handleSwitchMode","toHSL","hexInputHandler","sliderInputHandler","temporaryColor","HSL","openDropdown","onSmoothlyToggleSwitchChange","checkmark","outputSide","SmoothlyInputColorDemo","SmoothlyInputDate","alwaysShowGuide","hasFocus","hasText","onValueChange","dateTextElement","smoothlyValueChange","includesTextElement","includesCalendar","calendarElement","includesIconsElement","iconsElement","onUserChangedValue","newValue","dateSetHandler","onSmoothlyDateTextHasText","onSmoothlyDateTextFocusChange","onSmoothlyDateHasPartialDate","onSmoothlyDateTextChange","onSmoothlyDateTextDone","onSmoothlyDateSet","SmoothlyInputDateDemo","SmoothlyInputDateRange","startHasText","endHasText","startChanged","oldValue","updateValue","endChanged","oldStart","oldEnd","initialStart","initialEnd","startTextElement","endTextElement","includesStartTextElement","includesEndTextElement","startOrEnd","onSmoothlyDateTextNext","onSmoothlyDateTextPrevious","onSmoothlyDateRangeSet","SmoothlyInputDateTime","handleChange","getHour","getMinute","SmoothlyInputDemo","duration","alphanumeric","numbers","nextMonth","mutable","fromCharCode","SmoothlyInputDemoRadio","selectedChange","radio","SmoothlyInputDemoStandard","connectedCallback","querySelectorAll","borderRadius","SmoothlyInputDemoUserInput","increment","textIndex","debug","selectIndex","checkboxChecked","radioIndex","rangeValue","colorIndex","dateValue","datetimeValue","nextDay","dateRangeValue","SmoothlyInputEdit","SmoothlyInputFile","dragging","transfer","DataTransfer","files","items","dropHandler","dataTransfer","click","dragOverHandler","dragEnterHandler","dragLeaveHandler","onDragOver","onDragEnter","onDrop","onDragLeave","capture","camera","accept","onInput","SmoothlyInputMonth","allowPreviousMonth","allowNextMonth","adjustMonth","delta","getMonth","setAllowPreviousMonth","previousMonth","minMonth","setAllowNextMonth","maxMonth","searchDisabled","generate.years","generate.months","SmoothlyInputPriceDemo","SmoothlyInputRadio","valueReceivedOnLoad","active","handleRegister","smoothlyRadioInputHandler","userInitiated","SmoothlyInputRadioItem","smoothlyRadioItemRegister","smoothlyRadioItemSelect","SmoothlyInputRange","showInput","onSmoothlyBlur","valueAsNumber","SmoothlyInputRangeDemo","SmoothlyInputReset","Item","deselectable","layout","firstItemHeight","item","applyMenuHeight","itemHeight","setProperty","applyElementHeight","menu","selectable","currentIndex","findIndex","marked","hasVisibleItems","getAttribute","markOnly","findFirstSelected","findFirstMarked","scroll","centerInView","container","offsetTop","offsetHeight","SmoothlyInputSelect","initialValueHandled","lastOpen","addedItems","onSelectedChange","justOpened","scrollToSelected","selectedItem","dropdownElement","getItems","displaySelected","closeMenu","displayElement","areValuesEqual","onRequiredChange","onFilterChange","fromSelf","fromEndSlot","onItemDomChange","onItemSelect","onClosed","markedItem","smoothlySelectOpen","displayString","option","handlerNavigate","handleEscape","handleEnter","openMenu","move","resetFilter","addItem","concat","searchElement","setFilter","queueMicrotask","toggleMenu","wasIconsClicked","toggleElement","wasSearchClicked","wasItemClicked","HTMLElement","tagName","onPaste","SmoothlyInputSubmit","Submittable","isly.Type","onSmoothlyConfirm","SmoothlyItem","selectedWatcher","smoothlyItemSelect","mutationObserver","MutationObserver","smoothlyItemDOMChange","observe","childList","subtree","characterData","tabIndex","SmoothlyLabel","SmoothlyLazy","show","loadMoreHandler","onSmoothlyLoadMore","LoadMore","triggerMode","checkInView","inView","smoothlyLoadMore","IntersectionObserver","observationHandler","once","removeEventListener","disconnect","intersectionRatio","unobserve","SmoothlyModal","smoothlyModalChange","closeModal","role","classList","Notification","tick","properties","onTrigger","onUpdatedNotice","unlisten","Notifier","notices","onNotice","onRemove","SmoothlySpinner","strokeWidth","viewBox","xmlns","cx","cy","SmoothlySummary","toggleHandler","HTMLDetailsElement","smoothlySummaryOpen","onToggle","SmoothlyTab","openHandler","smoothlyTabOpen","smoothlyTabLoad","smoothlyTabs","removeTab","onInputLoad","SmoothlyTable","columns","smoothlyTableExpandableRowChange","smoothlyTableExpandableCellChange","SmoothlyTableBody","SmoothlyTableCell","SmoothlyTableDemo","SmoothlyTableDemoColspan","SmoothlyTableDemoFillerRow","cats","breed","coat","SmoothlyTableDemoGroup","balance","eyeColor","gender","company","registered","friends","SmoothlyTableDemoNestedNoCell","loadedRows","onSmoothlyTableExpandableRowChange","loadingIndex","SmoothlyTableDemoNestedNoCellInner","SmoothlyTableDemoSimple","cat","SmoothlyTableExpandableCell","smoothlyTableExpandableCellRegister","clickedOnDetail","detailElement","openChange","SmoothlyTableExpandableRow","div","SmoothlyTableFillerRow","SmoothlyTableFoot","SmoothlyTableHead","depth","onScroll","scrollParent","parentRect","getBoundingClientRect","elementRect","scrolled","getTopOffset","currentElement","rows","parentElement","SmoothlyTableRow","expandableCells","smoothlyTableExpandableCellRegisterHandler","smoothlyTableExpandableCellChangeHandler","cell","SmoothlyTableRowGroup","smoothlyTableRowGroupChange","SmoothlyTabs","tabs","tabElements","tab","firstOpenableTab","isSmoothlyTabElement","selectedElement","old","numberOfTabs","SmoothlyTabsDemo","extraTab1","extraTab2","SmoothlyThemeColor","SmoothlyThemeColorVariant","SmoothlyThemeColors","SmoothlyThemeDemo","SmoothlyThemePicker","HTMLLinkElement","theme","SmoothlyToggleSwitch","handleClick","smoothlyToggleSwitchChange","SmoothlyToggleSwitchDemo","SmoothlyTrigger"],"sources":["node_modules/isly/dist/mjs/any/index.js","src/model/getLocale.ts","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/back-to-top/style.scss?tag=smoothly-back-to-top&encapsulation=scoped","src/components/back-to-top/index.tsx","src/components/burger/style.css?tag=smoothly-burger&encapsulation=scoped","src/components/burger/index.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/button/demo/standard/style.css?tag=smoothly-button-demo-standard&encapsulation=scoped","src/components/button/demo/standard/index.tsx","src/components/calendar/generate.ts","src/components/calendar/style.css?tag=smoothly-calendar&encapsulation=scoped","src/components/calendar/index.tsx","src/components/input/date/text/DateFormat.ts","src/components/input/date/text/InputSelection.ts","src/components/input/date/text/style.css?tag=smoothly-date-text&encapsulation=scoped","src/components/input/date/text/index.tsx","src/components/dialog/style.css?tag=smoothly-dialog&encapsulation=scoped","src/components/dialog/index.tsx","src/components/dialog/demo/style.css?tag=smoothly-dialog-demo&encapsulation=scoped","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/email.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","node_modules/tidily/dist/mjs/Handler/hex-color.js","src/components/display/style.css?tag=smoothly-display&encapsulation=scoped","src/components/display/index.tsx","src/components/display/demo/index.tsx","src/components/display/demo/json/index.tsx","src/components/display/json/JsonValue.tsx","src/components/display/json/style.css?tag=smoothly-display-json&encapsulation=scoped","src/components/display/json/index.tsx","src/components/display/json/object/style.css?tag=smoothly-display-json-object&encapsulation=scoped","src/components/display/json/object/index.tsx","src/components/display/json/primitive/style.css?tag=smoothly-display-json-primitive&encapsulation=scoped","src/components/display/json/primitive/index.tsx","src/components/display/json/object/key/style.css?tag=smoothly-display-json-record-key&encapsulation=scoped","src/components/display/json/object/key/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/Observer.ts","src/components/input/Editable/index.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/form/demo/style.css?tag=smoothly-form-demo&encapsulation=scoped","src/components/form/demo/index.tsx","src/components/form/demo/all/index.tsx","src/components/form/demo/card/index.tsx","src/components/form/demo/controlled/index.tsx","src/components/form/demo/date/style.css?tag=smoothly-form-demo-date&encapsulation=scoped","src/components/form/demo/date/index.tsx","src/components/form/demo/date-range/style.css?tag=smoothly-form-demo-date-range&encapsulation=scoped","src/components/form/demo/date-range/index.tsx","src/components/form/demo/login/index.tsx","src/components/form/demo/pet/style.css?tag=smoothly-form-demo-pet&encapsulation=scoped","src/components/form/demo/pet/index.tsx","src/components/form/demo/prices/index.tsx","src/components/form/demo/schedule/index.tsx","src/components/form/demo/transparent/index.tsx","src/components/form/demo/typed/Contact.ts","src/components/form/demo/typed/style.css?tag=smoothly-form-demo-typed&encapsulation=scoped","src/components/form/demo/typed/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/Deep.ts","src/components/input/Adjacent.ts","src/components/input/InputStateHandler.ts","src/components/input/Key.ts","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/color/demo/index.tsx","src/components/input/date/style.css?tag=smoothly-input-date&encapsulation=scoped","src/components/input/date/index.tsx","src/components/input/demo/date/style.css?tag=smoothly-input-date-demo&encapsulation=scoped","src/components/input/demo/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/date/time/style.css?tag=smoothly-input-date-time&encapsulation=scoped","src/components/input/date/time/index.tsx","src/components/input/demo/style.css?tag=smoothly-input-demo&encapsulation=scoped","src/components/input/demo/index.tsx","src/components/input/demo/radio/style.css?tag=smoothly-input-demo-radio&encapsulation=scoped","src/components/input/demo/radio/index.tsx","src/components/input/demo/standard/style.css?tag=smoothly-input-demo-standard&encapsulation=scoped","src/components/input/demo/standard/index.tsx","src/components/input/demo/user-input/style.css?tag=smoothly-input-demo-user-input&encapsulation=scoped","src/components/input/demo/user-input/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/demo/price/style.css?tag=smoothly-input-price-demo&encapsulation=scoped","src/components/input/demo/price/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/range/demo/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/layout.ts","src/components/input/select/menu.ts","src/components/input/select/scroll.ts","src/components/input/select/style.css?tag=smoothly-input-select&encapsulation=scoped","src/components/input/select/index.tsx","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/index.tsx","src/components/modal/style.css?tag=smoothly-modal&encapsulation=scoped","src/components/modal/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/spinner/style.css?tag=smoothly-spinner&encapsulation=scoped","src/components/spinner/index.tsx","src/components/summary/style.css?tag=smoothly-summary&encapsulation=scoped","src/components/summary/index.tsx","src/components/tabs/tab/style.css?tag=smoothly-tab&encapsulation=scoped","src/components/tabs/tab/index.tsx","src/components/table/style.css?tag=smoothly-table&encapsulation=scoped","src/components/table/index.tsx","src/components/table/body/style.css?tag=smoothly-table-body&encapsulation=scoped","src/components/table/body/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/demo/colspan/style.css?tag=smoothly-table-demo-colspan&encapsulation=scoped","src/components/table/demo/colspan/index.tsx","src/components/table/demo/filler-row/style.css?tag=smoothly-table-demo-filler-row&encapsulation=scoped","src/components/table/demo/filler-row/index.tsx","src/components/table/demo/group/style.css?tag=smoothly-table-demo-group&encapsulation=scoped","src/components/table/demo/group/index.tsx","src/components/table/demo/nested-no-cell/data.ts","src/components/table/demo/nested-no-cell/style.css?tag=smoothly-table-demo-nested-no-cell&encapsulation=scoped","src/components/table/demo/nested-no-cell/index.tsx","src/components/table/demo/nested-no-cell/inner/style.css?tag=smoothly-table-demo-nested-no-cell-inner&encapsulation=scoped","src/components/table/demo/nested-no-cell/inner/index.tsx","src/components/table/demo/simple/style.css?tag=smoothly-table-demo-simple&encapsulation=scoped","src/components/table/demo/simple/simple.tsx","src/components/table/expandable/cell/style.scss?tag=smoothly-table-expandable-cell&encapsulation=scoped","src/components/table/expandable/cell/index.tsx","src/components/table/expandable/row/style.scss?tag=smoothly-table-expandable-row&encapsulation=scoped","src/components/table/expandable/row/index.tsx","src/components/table/filler-row/style.css?tag=smoothly-table-filler-row&encapsulation=scoped","src/components/table/filler-row/index.tsx","src/components/table/foot/style.css?tag=smoothly-table-foot&encapsulation=scoped","src/components/table/foot/index.tsx","src/components/table/head/style.css?tag=smoothly-table-head&encapsulation=scoped","src/components/table/head/index.tsx","src/components/table/row/style.css?tag=smoothly-table-row&encapsulation=scoped","src/components/table/row/index.tsx","src/components/table/group/style.scss?tag=smoothly-table-row-group&encapsulation=scoped","src/components/table/group/index.tsx","src/components/tabs/style.css?tag=smoothly-tabs&encapsulation=scoped","src/components/tabs/index.tsx","src/components/tabs/demo/style.css?tag=smoothly-tabs-demo&encapsulation=scoped","src/components/tabs/demo/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/demo/style.css?tag=smoothly-theme-demo&encapsulation=scoped","src/components/theme/demo/index.tsx","src/components/theme/guide/style.css?tag=smoothly-theme-guide&encapsulation=scoped","src/components/theme/guide/index.tsx","src/components/theme/picker/style.css?tag=smoothly-theme-picker&encapsulation=scoped","src/components/theme/picker/index.tsx","src/components/toggle-switch/style.css?tag=smoothly-toggle-switch&encapsulation=scoped","src/components/toggle-switch/index.tsx","src/components/toggle-switch/demo/style.css?tag=smoothly-toggle-switch-demo&encapsulation=scoped","src/components/toggle-switch/demo/index.tsx","src/components/trigger/style.css?tag=smoothly-trigger&encapsulation=scoped","src/components/trigger/index.tsx"],"sourcesContent":["import { Type } from \"../Type\";\nexport function any(name) {\n return new IslyAny(name ?? \"any\");\n}\nexport class IslyAny extends Type {\n class = \"any\";\n is = (value) => value != undefined;\n}\n//# sourceMappingURL=index.js.map","import { isoly } from \"isoly\"\n\nexport function 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","smoothly-app {\n\t--header-height: 5rem;\n\tdisplay: block;\n}\n\nsmoothly-app>smoothly-notifier>main {\n\theight: calc(100dvh - var(--header-height));\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-mobile-mode>smoothly-notifier>header:has(smoothly-burger)>nav>ul smoothly-app-room {\n\twidth: 100%;\n\theight: 4em;\n}\n\nsmoothly-app>smoothly-notifier>header {\n\tposition: sticky;\n\ttop: 0;\n\tz-index: 20;\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 1px 0 0 rgb(var(--smoothly-color-shade)) inset;\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:not([label])>smoothly-notifier>header>h1 {\n\tdisplay: none;\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 {\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\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\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\nsmoothly-app.smoothly-mobile-mode:not([menu-open])>smoothly-notifier>header>nav {\n\tdisplay: none;\n}\n\nsmoothly-app>smoothly-notifier>main>div {\n\toverflow-y: scroll;\n\theight: 100%;\n}\n\n/* Mobile mode */\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav {\n\twidth: fit-content;\n\tmax-width: 100%;\n\ttop: 100%;\n\tposition: absolute;\n\tmax-height: calc(100dvh - var(--header-height));\n\toverflow-y: scroll;\n\tright: 0;\n\theight: auto;\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav,\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul {\n\tflex-direction: column;\n\tbackground-color: rgba(var(--smoothly-color));\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul {\n\tpadding: 1.5rem;\n\tbox-sizing: border-box;\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul li {\n\tmargin-right: 0;\n\twidth: 100%;\n}\nsmoothly-app:not(.smoothly-mobile-mode)>smoothly-notifier>header>smoothly-burger {\n\tdisplay: none;\n}\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>smoothly-burger {\n\tposition: absolute;\n\ttop: 0;\n\tright: 0;\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul>[slot=\"nav-start\"] {\n\tdisplay: none;\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul>div.nav-start-container,\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul>div.nav-end-container {\n\tflex-direction: column;\n\tmargin: 0;\n\talign-items: start;\n\tjustify-content: center;\n}\n\nsmoothly-app.smoothly-mobile-mode>smoothly-notifier>header>nav>ul>div.nav-start-container>*:last-child {\n\tmargin-bottom: 1em;\n}\n\n","import { Component, Event, EventEmitter, h, Host, 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({ reflect: true }) label?: string\n\t@Prop() color: Color\n\t@Prop() home?: string\n\t@Prop({ mutable: true, reflect: true }) menuOpen = false\n\t@Prop({ reflect: true }) navBreakpoint: `${number}${\"px\" | \"em\" | \"rem\"}` = \"48rem\"\n\t@State() mobileMode = false\n\t@State() selected?: Room\n\t@Event() smoothlyUrlChange: EventEmitter<string>\n\tprivate burgerElement?: HTMLSmoothlyBurgerElement\n\tprivate navElement?: HTMLElement\n\tmainElement?: HTMLElement\n\trooms: Record<string, Room | undefined> = {}\n\n\tcomponentWillLoad() {\n\t\tconst mediaQuery = window.matchMedia(`(max-width: ${this.navBreakpoint})`)\n\t\tthis.mobileMode = mediaQuery.matches\n\t\tmediaQuery.addEventListener(\"change\", e => this.updateMobileMode(e.matches))\n\t}\n\tcomponentDidLoad() {\n\t\tthis.updateMobileMode(this.mobileMode)\n\t}\n\tupdateMobileMode(mobileMode: boolean) {\n\t\tthis.mobileMode = mobileMode\n\t\tObject.values(this.rooms).forEach(room => room?.element.setMobileMode(mobileMode))\n\t\tif (!mobileMode) {\n\t\t\tthis.menuOpen = false\n\t\t}\n\t}\n\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\t}\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\trequestAnimationFrame(() => {\n\t\t\tif (this.mainElement && content) {\n\t\t\t\tthis.mainElement.replaceChildren(content)\n\t\t\t}\n\t\t})\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\tthis.smoothlyUrlChange.emit(window.location.href)\n\t}\n\t@Listen(\"smoothlyRoomSelect\")\n\troomSelectedHandler(event: SmoothlyAppRoomCustomEvent<{ history: boolean; path: string; query?: string }>) {\n\t\tthis.selected = { element: event.target }\n\t\tif (this.mobileMode) {\n\t\t\tthis.menuOpen = false\n\t\t}\n\t\tif (!event.detail.history) {\n\t\t\tconst path = event.detail.path\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\tlocation.search = event.detail.query ? `?${event.detail.query}` : \"\"\n\t\t\twindow.history.pushState({ smoothlyPath: path, smoothlyQuery: event.detail.query || \"\" }, \"\", location.href)\n\t\t}\n\t}\n\t@Listen(\"smoothlyRoomLoad\")\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}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tclickHandler(event: MouseEvent) {\n\t\tif (this.mobileMode && !event.composedPath().some(e => e == this.burgerElement || e == this.navElement)) {\n\t\t\tthis.menuOpen = false\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ \"smoothly-mobile-mode\": this.mobileMode }}>\n\t\t\t\t<smoothly-notifier>\n\t\t\t\t\t<header color={this.color}>\n\t\t\t\t\t\t<h1>\n\t\t\t\t\t\t\t<a href={\"\"}>{this.label}</a>\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t\t\t<nav ref={e => (this.navElement = e)}>\n\t\t\t\t\t\t\t<ul>\n\t\t\t\t\t\t\t\t<div class={\"nav-start-container\"}>\n\t\t\t\t\t\t\t\t\t<slot name=\"nav-start\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t\t\t<div class={\"nav-end-container\"}>\n\t\t\t\t\t\t\t\t\t<slot name=\"nav-end\" />\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</ul>\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t<smoothly-burger\n\t\t\t\t\t\t\tref={e => (this.burgerElement = e)}\n\t\t\t\t\t\t\topen={this.menuOpen}\n\t\t\t\t\t\t\tonSmoothlyNavStatus={e => (e.stopPropagation(), (this.menuOpen = e.detail))}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</header>\n\t\t\t\t\t<main ref={e => (this.mainElement = e)} />\n\t\t\t\t</smoothly-notifier>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Listen, 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\t@Listen(\"smoothlyUrlChange\", { target: \"window\" })\n\turlChangeHandler(event: CustomEvent<string>) {\n\t\tconsole.log(\"smoothlyUrlChange\", event.detail)\n\t}\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-app-room path=\"/\">\n\t\t\t\t\t<section style={{ padding: \"1em\", maxWidth: \"32em\", margin: \"0 auto\" }}>\n\t\t\t\t\t\t<header>\n\t\t\t\t\t\t\t<h1>Welcome</h1>\n\t\t\t\t\t\t</header>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\tSmoothly is a component library written in <a href=\"http://stenciljs.com\">Stencil</a>. It can therefore be\n\t\t\t\t\t\t\tused across web based frontend toolchains such as React, Vue, Angular, Svelte, and even plain HTML.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\tThis is particularly useful when trying to unifying the user experience across projects written in\n\t\t\t\t\t\t\tdifferent technology stacks. It is also written to minimize the amount of code you need to write to\n\t\t\t\t\t\t\tachieve a nice user experience.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</section>\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/form\" label=\"Forms\" content={<smoothly-form-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/input\" label=\"Inputs\" content={<smoothly-input-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/table\" label=\"Tables\" content={<smoothly-table-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/button\" label=\"Buttons\" content={<smoothly-button-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/icon\" label=\"Icons\" content={<smoothly-icon-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/theme\" label=\"Theming\" content={<smoothly-theme-demo />} />\n\t\t\t\t<smoothly-app-room path=\"/dialog\" label=\"Dialogs\" content={<smoothly-dialog-demo />} slot=\"nav-end\" />\n\t\t\t\t<smoothly-app-room path=\"/display\" label=\"Display\" content={<smoothly-display-demo />} slot=\"nav-end\" />\n\t\t\t\t<smoothly-app-room path=\"/tabs\" label=\"Tabs\" slot=\"nav-end\">\n\t\t\t\t\t<smoothly-tabs-demo />\n\t\t\t\t</smoothly-app-room>\n\t\t\t\t<smoothly-app-room path=\"/links\" label=\"Links\" slot=\"nav-end\">\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=\"/redirect\" label=\"Redirect\" slot=\"nav-end\">\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 Part = class {\n constructor(type, name, prefix, value, suffix, modifier) {\n this.type = 3 /* kFixed */;\n this.name = \"\";\n this.prefix = \"\";\n this.value = \"\";\n this.suffix = \"\";\n this.modifier = 3 /* kNone */;\n this.type = type;\n this.name = name;\n this.prefix = prefix;\n this.value = value;\n this.suffix = suffix;\n this.modifier = modifier;\n }\n hasCustomName() {\n return this.name !== \"\" && typeof this.name !== \"number\";\n }\n};\nvar regexIdentifierStart = /[$_\\p{ID_Start}]/u;\nvar regexIdentifierPart = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\nvar kFullWildcardRegex = \".*\";\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: \"OTHER_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: \"REGEX\", 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 options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n const segmentWildcardRegex = `[^${escapeString(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 return tryConsume(\"OTHER_MODIFIER\") ?? 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 let pendingFixedValue = \"\";\n const appendToPendingFixedValue = (value) => {\n pendingFixedValue += value;\n };\n const maybeAddPartFromPendingFixedValue = () => {\n if (!pendingFixedValue.length) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(pendingFixedValue), \"\", 3 /* kNone */));\n pendingFixedValue = \"\";\n };\n const addPart = (prefix, nameToken, regexOrWildcardToken, suffix, modifierToken) => {\n let modifier = 3 /* kNone */;\n switch (modifierToken) {\n case \"?\":\n modifier = 1 /* kOptional */;\n break;\n case \"*\":\n modifier = 0 /* kZeroOrMore */;\n break;\n case \"+\":\n modifier = 2 /* kOneOrMore */;\n break;\n }\n if (!nameToken && !regexOrWildcardToken && modifier === 3 /* kNone */) {\n appendToPendingFixedValue(prefix);\n return;\n }\n maybeAddPartFromPendingFixedValue();\n if (!nameToken && !regexOrWildcardToken) {\n if (!prefix) {\n return;\n }\n result.push(new Part(3 /* kFixed */, \"\", \"\", encodePart(prefix), \"\", modifier));\n return;\n }\n let regexValue;\n if (!regexOrWildcardToken) {\n regexValue = segmentWildcardRegex;\n } else if (regexOrWildcardToken === \"*\") {\n regexValue = kFullWildcardRegex;\n } else {\n regexValue = regexOrWildcardToken;\n }\n let type = 2 /* kRegex */;\n if (regexValue === segmentWildcardRegex) {\n type = 1 /* kSegmentWildcard */;\n regexValue = \"\";\n } else if (regexValue === kFullWildcardRegex) {\n type = 0 /* kFullWildcard */;\n regexValue = \"\";\n }\n let name;\n if (nameToken) {\n name = nameToken;\n } else if (regexOrWildcardToken) {\n name = key++;\n }\n if (nameSet.has(name)) {\n throw new TypeError(`Duplicate name '${name}'.`);\n }\n nameSet.add(name);\n result.push(new Part(type, name, encodePart(prefix), regexValue, encodePart(suffix), modifier));\n };\n while (i < tokens.length) {\n const charToken = tryConsume(\"CHAR\");\n const nameToken = tryConsume(\"NAME\");\n let regexOrWildcardToken = tryConsume(\"REGEX\");\n if (!nameToken && !regexOrWildcardToken) {\n regexOrWildcardToken = tryConsume(\"ASTERISK\");\n }\n if (nameToken || regexOrWildcardToken) {\n let prefix = charToken ?? \"\";\n if (options.prefixes.indexOf(prefix) === -1) {\n appendToPendingFixedValue(prefix);\n prefix = \"\";\n }\n maybeAddPartFromPendingFixedValue();\n let modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken, regexOrWildcardToken, \"\", modifierToken);\n continue;\n }\n const value = charToken ?? tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n appendToPendingFixedValue(value);\n continue;\n }\n const openToken = tryConsume(\"OPEN\");\n if (openToken) {\n const prefix = consumeText();\n const nameToken2 = tryConsume(\"NAME\");\n let regexOrWildcardToken2 = tryConsume(\"REGEX\");\n if (!nameToken2 && !regexOrWildcardToken2) {\n regexOrWildcardToken2 = tryConsume(\"ASTERISK\");\n }\n const suffix = consumeText();\n mustConsume(\"CLOSE\");\n const modifierToken = tryConsumeModifier();\n addPart(prefix, nameToken2, regexOrWildcardToken2, suffix, modifierToken);\n continue;\n }\n maybeAddPartFromPendingFixedValue();\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 stringToRegexp(path, names, options) {\n return partsToRegexp(parse(path, options), names, options);\n}\nfunction modifierToString(modifier) {\n switch (modifier) {\n case 0 /* kZeroOrMore */:\n return \"*\";\n case 1 /* kOptional */:\n return \"?\";\n case 2 /* kOneOrMore */:\n return \"+\";\n case 3 /* kNone */:\n return \"\";\n }\n}\nfunction partsToRegexp(parts, names, options = {}) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n let result = options.start ? \"^\" : \"\";\n for (const part of parts) {\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapeString(part.value);\n } else {\n result += `(?:${escapeString(part.value)})${modifierToString(part.modifier)}`;\n }\n continue;\n }\n if (names)\n names.push(part.name);\n const segmentWildcardRegex = `[^${escapeString(options.delimiter)}]+?`;\n let regexValue = part.value;\n if (part.type === 1 /* kSegmentWildcard */)\n regexValue = segmentWildcardRegex;\n else if (part.type === 0 /* kFullWildcard */)\n regexValue = kFullWildcardRegex;\n if (!part.prefix.length && !part.suffix.length) {\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(${regexValue})${modifierToString(part.modifier)}`;\n } else {\n result += `((?:${regexValue})${modifierToString(part.modifier)})`;\n }\n continue;\n }\n if (part.modifier === 3 /* kNone */ || part.modifier === 1 /* kOptional */) {\n result += `(?:${escapeString(part.prefix)}(${regexValue})${escapeString(part.suffix)})`;\n result += modifierToString(part.modifier);\n continue;\n }\n result += `(?:${escapeString(part.prefix)}`;\n result += `((?:${regexValue})(?:`;\n result += escapeString(part.suffix);\n result += escapeString(part.prefix);\n result += `(?:${regexValue}))*)${escapeString(part.suffix)})`;\n if (part.modifier === 0 /* kZeroOrMore */) {\n result += \"?\";\n }\n }\n const endsWith = `[${escapeString(options.endsWith)}]|$`;\n const delimiter = `[${escapeString(options.delimiter)}]`;\n if (options.end) {\n if (!options.strict) {\n result += `${delimiter}?`;\n }\n if (!options.endsWith.length) {\n result += \"$\";\n } else {\n result += `(?=${endsWith})`;\n }\n return new RegExp(result, flags(options));\n }\n if (!options.strict) {\n result += `(?:${delimiter}(?=${endsWith}))?`;\n }\n let isEndDelimited = false;\n if (parts.length) {\n const lastPart = parts[parts.length - 1];\n if (lastPart.type === 3 /* kFixed */ && lastPart.modifier === 3 /* kNone */) {\n isEndDelimited = options.delimiter.indexOf(lastPart) > -1;\n }\n }\n if (!isEndDelimited) {\n result += `(?=${delimiter}|${endsWith})`;\n }\n return new RegExp(result, flags(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 // The list of `LexToken`s produced by the path-to-regexp `lexer()` function\n // when passed `input` with lenient mode enabled.\n this.tokenList = [];\n // As we parse the input string we populate a `URLPatternInit` dictionary\n // with each component pattern. This is then the final result of the parse.\n this.internalResult = {};\n // The index of the current `LexToken` being considered.\n this.tokenIndex = 0;\n // The value to add to `tokenIndex` on each turn through the parse loop.\n // While typically this is `1`, it is also set to `0` at times for things\n // like state transitions, etc. It is automatically reset back to `1` at\n // the top of the parse loop.\n this.tokenIncrement = 1;\n // The index of the first `LexToken` to include in the component string.\n this.componentStart = 0;\n // The current parse state. This should only be changed via `changeState()`\n // or `rewindAndSetState()`.\n this.state = 0 /* INIT */;\n // The current nest depth of `{ }` pattern groupings.\n this.groupDepth = 0;\n // The current nesting depth of `[ ]` in hostname patterns.\n this.hostnameIPv6BracketDepth = 0;\n // True if we should apply parse rules as if this is a \"standard\" URL. If\n // false then this is treated as a \"not a base URL\".\n this.shouldTreatAsStandardURL = false;\n this.input = input;\n }\n // Return the parse result. The result is only available after the\n // `parse()` method completes.\n get result() {\n return this.internalResult;\n }\n // Attempt to parse the input string used to construct the Parser object.\n // This method may only be called once. Any errors will be thrown as an\n // exception. Retrieve the parse result by accessing the `Parser.result`\n // property getter.\n parse() {\n this.tokenList = lexer(\n this.input,\n /*lenient=*/\n true\n );\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(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n this.internalResult.hash = \"\";\n } else {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\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(\n 10 /* DONE */,\n /*skip=*/\n 0\n );\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(\n 4 /* PASSWORD */,\n /*skip=*/\n 1\n );\n } else if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\n }\n break;\n case 4 /* PASSWORD */:\n if (this.isIdentityTerminator()) {\n this.changeState(\n 5 /* HOSTNAME */,\n /*skip=*/\n 1\n );\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(\n 6 /* PORT */,\n /*skip=*/\n 1\n );\n } else if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 6 /* PORT */:\n if (this.isPathnameStart()) {\n this.changeState(\n 7 /* PATHNAME */,\n /*skip=*/\n 0\n );\n } else if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 7 /* PATHNAME */:\n if (this.isSearchPrefix()) {\n this.changeState(\n 8 /* SEARCH */,\n /*skip=*/\n 1\n );\n } else if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\n }\n break;\n case 8 /* SEARCH */:\n if (this.isHashPrefix()) {\n this.changeState(\n 9 /* HASH */,\n /*skip=*/\n 1\n );\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 !== \"REGEX\" && 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 = stringToRegexp(\n this.makeComponentString(),\n /*keys=*/\n void 0,\n options\n );\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 partsToPattern(parts, options) {\n options.delimiter ?? (options.delimiter = \"/#?\");\n options.prefixes ?? (options.prefixes = \"./\");\n options.sensitive ?? (options.sensitive = false);\n options.strict ?? (options.strict = false);\n options.end ?? (options.end = true);\n options.start ?? (options.start = true);\n options.endsWith = \"\";\n const kFullWildcardRegex2 = \".*\";\n const segmentWildcardRegex = `[^${escapeRegexpString(options.delimiter)}]+?`;\n const regexIdentifierPart2 = /[$_\\u200C\\u200D\\p{ID_Continue}]/u;\n let result = \"\";\n for (let i = 0; i < parts.length; ++i) {\n const part = parts[i];\n if (part.type === 3 /* kFixed */) {\n if (part.modifier === 3 /* kNone */) {\n result += escapePatternString(part.value);\n continue;\n }\n result += `{${escapePatternString(part.value)}}${modifierToString(part.modifier)}`;\n continue;\n }\n const customName = part.hasCustomName();\n let needsGrouping = !!part.suffix.length || !!part.prefix.length && (part.prefix.length !== 1 || !options.prefixes.includes(part.prefix));\n const lastPart = i > 0 ? parts[i - 1] : null;\n const nextPart = i < parts.length - 1 ? parts[i + 1] : null;\n if (!needsGrouping && customName && part.type === 1 /* kSegmentWildcard */ && part.modifier === 3 /* kNone */ && nextPart && !nextPart.prefix.length && !nextPart.suffix.length) {\n if (nextPart.type === 3 /* kFixed */) {\n const code = nextPart.value.length > 0 ? nextPart.value[0] : \"\";\n needsGrouping = regexIdentifierPart2.test(code);\n } else {\n needsGrouping = !nextPart.hasCustomName();\n }\n }\n if (!needsGrouping && !part.prefix.length && lastPart && lastPart.type === 3 /* kFixed */) {\n const code = lastPart.value[lastPart.value.length - 1];\n needsGrouping = options.prefixes.includes(code);\n }\n if (needsGrouping) {\n result += \"{\";\n }\n result += escapePatternString(part.prefix);\n if (customName) {\n result += `:${part.name}`;\n }\n if (part.type === 2 /* kRegex */) {\n result += `(${part.value})`;\n } else if (part.type === 1 /* kSegmentWildcard */) {\n if (!customName) {\n result += `(${segmentWildcardRegex})`;\n }\n } else if (part.type === 0 /* kFullWildcard */) {\n if (!customName && (!lastPart || lastPart.type === 3 /* kFixed */ || lastPart.modifier !== 3 /* kNone */ || needsGrouping || part.prefix !== \"\")) {\n result += \"*\";\n } else {\n result += `(${kFullWildcardRegex2})`;\n }\n }\n if (part.type === 1 /* kSegmentWildcard */ && customName && !!part.suffix.length) {\n if (regexIdentifierPart2.test(part.suffix[0])) {\n result += \"\\\\\";\n }\n }\n result += escapePatternString(part.suffix);\n if (needsGrouping) {\n result += \"}\";\n }\n if (part.modifier !== 3 /* kNone */) {\n result += modifierToString(part.modifier);\n }\n }\n return result;\n}\nvar URLPattern = class {\n constructor(init = {}, baseURLOrOptions, options) {\n this.regexp = {};\n this.names = {};\n this.component_pattern = {};\n this.parts = {};\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.names[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 this.parts[component] = parse(pattern, options2);\n this.regexp[component] = partsToRegexp(\n this.parts[component],\n /* out */\n this.names[component],\n options2\n );\n this.component_pattern[component] = partsToPattern(this.parts[component], options2);\n } catch (err) {\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, name] of this.names[component].entries()) {\n if (typeof name === \"string\" || typeof name === \"number\") {\n let value = match[i + 1];\n groups[name] = value;\n }\n }\n result[component] = {\n input: values[component] ?? \"\",\n groups\n };\n }\n return result;\n }\n static compareComponent(component, left, right) {\n const comparePart = (left2, right2) => {\n for (let attr of [\"type\", \"modifier\", \"prefix\", \"value\", \"suffix\"]) {\n if (left2[attr] < right2[attr])\n return -1;\n else if (left2[attr] === right2[attr])\n continue;\n else\n return 1;\n }\n return 0;\n };\n const emptyFixedPart = new Part(3 /* kFixed */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const wildcardOnlyPart = new Part(0 /* kFullWildcard */, \"\", \"\", \"\", \"\", 3 /* kNone */);\n const comparePartList = (left2, right2) => {\n let i = 0;\n for (; i < Math.min(left2.length, right2.length); ++i) {\n let result = comparePart(left2[i], right2[i]);\n if (result)\n return result;\n }\n if (left2.length === right2.length) {\n return 0;\n }\n return comparePart(left2[i] ?? emptyFixedPart, right2[i] ?? emptyFixedPart);\n };\n if (!left.component_pattern[component] && !right.component_pattern[component]) {\n return 0;\n }\n if (left.component_pattern[component] && !right.component_pattern[component]) {\n return comparePartList(left.parts[component], [wildcardOnlyPart]);\n }\n if (!left.component_pattern[component] && right.component_pattern[component]) {\n return comparePartList([wildcardOnlyPart], right.parts[component]);\n }\n return comparePartList(left.parts[component], right.parts[component]);\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\theight: 100%;\n\tposition: relative;\n}\n\n:host>div {\n\toverflow-y: auto;\n\theight: 100%;\n}\n\n:not(:host[label], :host[icon]),\n:host[disabled] {\n\tdisplay: none;\n}\n\n:host>div {\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}\n:host[icon]>li>a>.label {\n\tdisplay: none;\n}\n:host([icon][label]):hover::before,\n:host([icon][label]):hover::after {\n\tposition: absolute;\n\tcolor: rgb(var(--smoothly-color-contrast));\n\tbackground-color: rgb(var(--smoothly-color-tint));\n\tborder-radius: 0.25rem;\n\tpointer-events: none;\n}\n:host([icon][label]):hover::before {\n\tcontent: \"\";\n bottom: -1.75rem;\n transform: rotate(45deg);\n width: 1.25em;\n height: 1.25em;\n}\n:host([icon][label]):hover::after {\n\tcontent: attr(label);\n\twhite-space: nowrap;\n\tbottom: -3.25rem;\n\tpadding: .5rem 1rem;\n\tborder-radius: .25rem;\n}\n\n/* Mobile mode */\n:host.smoothly-mobile-mode>li>a {\n\tpadding: 0;\n}\n:host.smoothly-mobile-mode[icon]>li>a>.label {\n\tdisplay: unset;\n\tpadding: 0 1rem;\n}\n:host.smoothly-mobile-mode>li>a {\n\tmargin-left: -1.5rem;\n\tmargin-right: -1.5rem;\n\tpadding-left: 1.5rem;\n\tpadding-right: 1.5rem;\n}\n:host.smoothly-mobile-mode[icon][label]:hover::before,\n:host.smoothly-mobile-mode[icon][label]:hover::after {\n\tcontent: unset;\n}\n\n","import {\n\tComponent,\n\tEvent,\n\tEventEmitter,\n\tFunctionalComponent,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tState,\n\tVNode,\n} 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\tprivate query?: string\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 | (string | URLPattern)[] = \"\"\n\t@State() paths: URLPattern[]\n\t@Prop({ reflect: true, mutable: true }) selected?: boolean\n\t@Prop() content?: VNode | FunctionalComponent\n\t@State() mobileMode = false\n\t@Event() smoothlyRoomSelect: EventEmitter<{ history: boolean; path: string; query?: string }>\n\t@Event() smoothlyRoomLoad: EventEmitter<{ selected: boolean }>\n\t@Event() smoothlyUrlChange: EventEmitter<string>\n\tprivate contentElement?: HTMLElement\n\tcomponentDidRender() {\n\t\tthis.selected && this.smoothlyUrlChange.emit(window.location.href)\n\t}\n\tcomponentWillLoad() {\n\t\tconst stringOrPatternPaths = Array.isArray(this.path) ? this.path : [this.path]\n\t\tthis.paths = stringOrPatternPaths.map(path => (typeof path == \"string\" ? new URLPattern({ pathname: path }) : path))\n\t\tthis.selected = this.paths.some(pattern => pattern.test(window.location.href))\n\t\tthis.smoothlyRoomLoad.emit({ selected: this.selected })\n\t\tthis.selected && window.history.replaceState({ smoothlyPath: this.paths[0].pathname }, \"\", window.location.href)\n\t}\n\t@Method()\n\tasync setMobileMode(mobile: boolean) {\n\t\tthis.mobileMode = mobile\n\t}\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.smoothlyRoomSelect.emit({ history: !!options?.history, path: this.paths[0].pathname, query: this.query })\n\t\t}\n\t}\n\t@Listen(\"smoothlyUrlUpdate\", { target: \"window\" })\n\tasync setQuery(event: CustomEvent<{ query?: string; path: string }>): Promise<void> {\n\t\tif (event.detail.path == this.path && this.query != event.detail.query) {\n\t\t\tthis.query = event.detail.query\n\t\t\twindow.history.pushState(\n\t\t\t\t{ smoothlyPath: this.path, smoothlyQuery: this.query },\n\t\t\t\t\"\",\n\t\t\t\t`${window.location.pathname}${this.query ? `?${this.query}` : \"\"}`\n\t\t\t)\n\t\t\tthis.smoothlyUrlChange.emit(window.location.href)\n\t\t}\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 class={{ \"smoothly-mobile-mode\": this.mobileMode }}>\n\t\t\t\t<li>\n\t\t\t\t\t<a href={this.paths[0]?.pathname} onClick={e => this.clickHandler(e)}>\n\t\t\t\t\t\t{this.icon && <smoothly-icon name={this.icon} />}\n\t\t\t\t\t\t{this.label && <span class=\"label\">{this.label}</span>}\n\t\t\t\t\t</a>\n\t\t\t\t</li>\n\t\t\t\t<div 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 />\n\t\t\t\t</div>\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, Element, h, Host, Prop, State } from \"@stencil/core\"\nimport { Scrollable } from \"../../model/Scrollable\"\n\n@Component({\n\ttag: \"smoothly-back-to-top\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyBackToTop {\n\tprivate scrollableParent?: HTMLElement\n\t@Element() element: HTMLSmoothlyBackToTopElement\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\tthis.scrollableParent = Scrollable.findParent(this.element)\n\t\tthis.scrollableParent?.addEventListener(\"scroll\", () => {\n\t\t\tthis.visible = (this.scrollableParent?.scrollTop ?? 0) > 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\tthis.scrollableParent?.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\" />\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\theight: 100%;\n\tcursor: pointer;\n}\n:host smoothly-icon {\n\t--smoothly-icon-size: 3rem;\n\tmargin-right: 1em;\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, 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({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyNavStatus: EventEmitter<boolean>\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyNavStatus.emit(this.open)\n\t}\n\n\t@Listen(\"click\")\n\tclickHandler() {\n\t\tthis.open = !this.open\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-icon name=\"menu\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../color/style.css\";\n\n:host {\n\t--smoothly-button-border-radius: 0.5rem;\n\tdisplay: inline-flex;\n\tbox-sizing: border-box;\n\tborder-radius: var(--smoothly-button-border-radius);\n\tfont-size: var(--smoothly-button-font-size, 1rem);\n\tcursor: pointer;\n\tborder: none;\n\toutline: none;\n\tposition: relative;\n}\n:host([shape=rounded]) {\n\t--smoothly-button-border-radius: 2rem;\n}\n\n:host([type=link]) {\n\tdisplay: inline;\n}\n\n:host([disabled]) {\n\topacity: 0.5;\n}\n:host>a {\n\tfont-weight: 400;\n\tbackground-color: transparent;\n}\n:host>a,\n:host>button {\n\tfont-size: var(--smoothly-button-font-size);\n\tborder: 1px solid transparent;\n\toutline: none;\n\tcursor: pointer;\n\tdisplay: inline-flex;\n\tgap: 0.5rem;\n\tbox-sizing: border-box;\n}\n:host>button {\n\tfont-weight: bold;\n\tjustify-content: center;\n\twidth: 100%;\n\talign-items: center;\n\tborder-radius: var(--smoothly-button-border-radius);\n\tpadding-inline: var(--smoothly-button-padding-inline, 1rem);\n}\n:host {\n\tmin-height: var(--smoothly-button-height, 2.5rem);\n}\n\n:host:has(> a:empty),\n:host:has(> button:empty),\n:host>a:empty,\n:host>button:empty {\n\tborder-width: 0;\n\tmin-height: 0;\n\tpadding-inline: 0;\n}\n\n:host([size=small]) {\n\t--smoothly-button-height: 2rem;\n\t--smoothly-button-padding-inline: 0.75rem;\n\t--smoothly-button-font-size: 0.875rem;\n\t--smoothly-icon-size: 1.4rem;\n}\n:host([size=large]) {\n\t--smoothly-button-height: 3rem;\n\t--smoothly-button-padding-inline: 1.25rem;\n\t--smoothly-button-font-size: 1.125rem;\n}\n\n:host(:not([size=icon]):not([size=flexible]))>button {\n\tmin-width: 8rem;\n}\n:host([size=icon]) {\n\t--smoothly-icon-size: 1.4rem;\n}\n:host([size=icon])>button {\n\tmin-height: var(--smoothly-button-height, 2.5rem);\n\tmin-width: var(--smoothly-button-height, 2.5rem);\n\tpadding: 0;\n}\n\n:host(:not([size=icon])) {\n\tmin-width: 8em;\n}\n\n:host([size=flexible]) {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n\tdisplay: flex;\n\tjustify-content: center;\n}\n\n:host([size=flexible])>button {\n\tmin-width: unset;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n:host([expand]) {\n\twidth: 100%;\n}\n\n:host([expand=full]) {\n\tborder-left: none;\n\tborder-right: none;\n\t--smoothly-button-border-radius: 0;\n}\n\n:host([fill=outline])>button {\n\tbackground-color: transparent;\n\tcolor: rgb(var(--smoothly-button-foreground));\n\tfill: rgb(var(--smoothly-button-foreground));\n\tstroke: rgb(var(--smoothly-button-foreground));\n\tborder-color: rgb(var(--smoothly-button-foreground));\n}\n\n:host(:not([fill=clear]):not([disabled]))>button:hover,\n:host(:not([disabled]))>button:focus-visible,\n:host([fill=outline]:not([disabled])):active>button::before {\n\tborder-color: rgb(var(--smoothly-button-focus-color));\n}\n\n:host([fill=outline]:not([disabled]))>button:hover::before,\n:host([fill=outline]:not([disabled]))>button:focus-within::before,\n:host([fill=outline]:not([disabled]))>button:active::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tborder: 2px solid rgb(var(--smoothly-button-focus-border));\n\tinset: -1px;\n\tborder-radius: var(--smoothly-button-border-radius);\n}\n\n:host(:not([fill=clear]):not([fill=outline]):not([disabled]))>button:hover,\n:host(:not([fill=clear]):not([fill=outline]):not([disabled]))>button:focus-visible,\n:host(:not([fill=clear]):not([fill=outline]):not([disabled]))>button:active {\n\tbackground: rgb(var(--smoothly-button-hover-background));\n}\n\n:host>button,\n:host ::slotted(smoothly-icon) {\n\tcolor: rgb(var(--smoothly-button-foreground));\n\tstroke: rgb(var(--smoothly-button-foreground));\n\tfill: rgb(var(--smoothly-button-foreground));\n}\n\n:host([hidden]) {\n\tdisplay: none;\n}\n","import { Component, h, Host, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../model\"\nimport { Button } from \"./Button\"\n\n@Component({\n\ttag: \"smoothly-button\",\n\tstyleUrl: \"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 }) tooltip?: string\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) type: Button.Properties[\"type\"]\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 (\n\t\t\t<Host title={this.tooltip}>\n\t\t\t\t<Button disabled={this.disabled} type={this.type} link={this.link}>\n\t\t\t\t\t<slot />\n\t\t\t\t</Button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: inline-block;\n}\n:host([disabled]) {\n\topacity: 0.5;\n\tpointer-events: none;\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\"\nimport { Editable } from \"../input/Editable\"\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() size: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\t@State() clickTimeStamp: number | undefined\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => 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={\"button\"}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\tname={\"alert-outline\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tcolor=\"warning\"\n\t\t\t\t\t\tsize={this.size === \"icon\" ? \"tiny\" : \"small\"}\n\t\t\t\t\t/>\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={\"button\"}\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\nsmoothly-button-demo smoothly-button {\n\tmargin: .2em .5em;\n}\n","import { Component, h, Host } 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<Host>\n\t\t\t\t<section>\n\t\t\t\t\t<smoothly-button-demo-standard />\n\t\t\t\t</section>\n\t\t\t\t<section>\n\t\t\t\t\t<h4>Confirm button (two clicks)</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button-confirm name=\"confirm\" shape=\"rounded\" color=\"danger\" size=\"large\">\n\t\t\t\t\t\t\tDelete\n\t\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" shape=\"rounded\" color=\"success\" size=\"icon\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-outline\" size=\"tiny\" />\n\t\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t\t<smoothly-button-confirm name=\"confirm-icon\" shape=\"rounded\" color=\"danger\" size=\"icon\" fill=\"outline\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"trash-outline\" size=\"tiny\" fill=\"outline\" />\n\t\t\t\t\t\t</smoothly-button-confirm>\n\t\t\t\t\t</div>\n\t\t\t\t\t<smoothly-toggle-switch-demo />\n\t\t\t\t\t<h4>Links with icons</h4>\n\t\t\t\t\t<smoothly-button type=\"link\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\ttype link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button type=\"button\" color=\"warning\" fill=\"default\">\n\t\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\" />\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\t<smoothly-icon name=\"arrow-forward\" slot=\"end\" />\n\t\t\t\t\t\tlink + type link\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<h4>Size and Color test</h4>\n\t\t\t\t\t<smoothly-button color=\"primary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Primary + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" shape=\"rounded\">\n\t\t\t\t\t\tColor Secondary + Default\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" size=\"large\">\n\t\t\t\t\t\tColor Warning + Large\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"danger\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Danger + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"success\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Success + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"tertiary\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Tertiary + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"dark\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Dark + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"medium\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Medium + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"light\" fill=\"solid\" size=\"small\" shape=\"rounded\">\n\t\t\t\t\t\tColor Light + Small\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<h4>Expand examples</h4>\n\t\t\t\t\t<smoothly-button color=\"secondary\" fill=\"solid\" expand=\"full\">\n\t\t\t\t\t\tColor Secondary + Default\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button color=\"warning\" fill=\"solid\" expand=\"block\">\n\t\t\t\t\t\tColor Warning + Large\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<h4>Fill examples</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"primary\" fill=\"solid\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t\tFill Solid\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"secondary\" fill=\"outline\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t\tFill Outline\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" color=\"tertiary\" fill=\"clear\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t\tFill Clear\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"success\" fill=\"solid\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"basketball\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4>Buttons with Icon in \"start\"</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"warning\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t\t\tCheck\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"basketball\" slot=\"start\" />\n\t\t\t\t\t\t\tCheck\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button shape=\"rounded\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"call\" slot=\"start\" />\n\t\t\t\t\t\t\tCheck\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"call\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button size=\"flexible\" fill=\"solid\" color=\"success\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"airplane\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4>Buttons with Icon in \"end\"</h4>\n\t\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\">\n\t\t\t\t\t\tGo Forward\n\t\t\t\t\t\t<smoothly-icon name=\"arrow-forward\" slot=\"end\" />\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<h4>Test for icon button</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button size=\"icon\" fill=\"solid\" shape=\"rounded\" color=\"success\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"call\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"warning\" fill=\"solid\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"search-outline\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button size=\"icon\" shape=\"rounded\" color=\"secondary\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" />\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4>Link examples</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button type=\"link\">type link</smoothly-button>\n\t\t\t\t\t\t<smoothly-button type=\"button\" fill=\"clear\">\n\t\t\t\t\t\t\t<a href=\"https://google.com\">link</a>\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button link=\"https://google.com\" type=\"link\">\n\t\t\t\t\t\t\tlink + type link\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h4>Disabled buttons</h4>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-button disabled fill=\"solid\" color=\"secondary\">\n\t\t\t\t\t\t\tDisabled\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t<smoothly-button type=\"link\" link=\"https://google.com\" disabled>\n\t\t\t\t\t\t\tDisabled link\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t</div>\n\t\t\t\t</section>\n\t\t\t\t<smoothly-back-to-top />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host smoothly-input-select smoothly-item {\n\tdisplay: flex;\n}\n\n:host .buttons {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tgap: 0.5rem;\n}\n:host .buttons > smoothly-button {\n\tmargin-block: 0;\n}\n\n:host .height-text {\n\tborder-left: 3px dotted rgb(var(--smoothly-default-contrast));\n\tpadding-inline: 1rem;\n\talign-content: center;\n}\n","import { Component, h, Host, State, Watch } from \"@stencil/core\"\nimport { Color, Fill, Icon } from \"../../../../model\"\nimport { Button } from \"../../Button\"\n\ntype Options = {\n\tfill?: Fill\n\tdisabled?: boolean\n\texpand?: \"block\" | \"full\"\n\ttype?: Button.Properties[\"type\"]\n\tsize?: \"small\" | \"large\" | \"icon\" | \"flexible\"\n\trounded?: boolean\n\ticon?: Icon\n\ttext?: { value: string; useColor?: boolean }\n\ttooltip?: string\n}\n\n@Component({\n\ttag: \"smoothly-button-demo-standard\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyButtonDemoStandard {\n\t@State() props: Options = {}\n\t@State() heightText: string = \"\"\n\t@State() lastButton?: HTMLElement\n\n\t@Watch(\"props\")\n\tupdateInputHeightText() {\n\t\tsetTimeout(() => {\n\t\t\tconst rootFontSize = Number(getComputedStyle(document.documentElement).fontSize.replace(\"px\", \"\"))\n\t\t\tif (this.lastButton) {\n\t\t\t\tconst heightPx = this.lastButton.clientHeight\n\t\t\t\tthis.heightText = `${heightPx / rootFontSize}rem (${heightPx}px)`\n\t\t\t}\n\t\t}, 100)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Button Standard</h2>\n\t\t\t\t<smoothly-form onSmoothlyFormInput={e => (this.props = e.detail)} looks=\"grid\">\n\t\t\t\t\t<smoothly-input-checkbox name=\"text.useColor\" checked>\n\t\t\t\t\t\tUse Color as Text\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-select name=\"size\">\n\t\t\t\t\t\t<span slot=\"label\">Size</span>\n\t\t\t\t\t\t{[\"small\", \"large\", \"icon\", \"flexible\"].map(size => (\n\t\t\t\t\t\t\t<smoothly-item value={size} key={size}>\n\t\t\t\t\t\t\t\t{size}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input name=\"text.value\" value=\"Button\">\n\t\t\t\t\t\tText\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio name=\"expand\" clearable>\n\t\t\t\t\t\t<span slot=\"label\">Expand</span>\n\t\t\t\t\t\t<smoothly-input-radio-item value=\"block\">block</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value=\"full\">full</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-select name=\"fill\">\n\t\t\t\t\t\t<span slot=\"label\">Fill</span>\n\t\t\t\t\t\t{Fill.values.map(fill => (\n\t\t\t\t\t\t\t<smoothly-item value={fill} key={fill}>\n\t\t\t\t\t\t\t\t{fill}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"disabled\">Disabled</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-select name=\"type\">\n\t\t\t\t\t\t<span slot=\"label\">Type</span>\n\t\t\t\t\t\t{[\"button\", \"submit\", \"reset\", \"link\"].map(type => (\n\t\t\t\t\t\t\t<smoothly-item value={type} key={type}>\n\t\t\t\t\t\t\t\t{type}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-checkbox name=\"rounded\">Rounded</smoothly-input-checkbox>\n\t\t\t\t\t<smoothly-input-select name=\"icon\" menuHeight=\"8items\">\n\t\t\t\t\t\t<span slot=\"label\">Icon</span>\n\t\t\t\t\t\t{Icon.Name.values.map(icon => (\n\t\t\t\t\t\t\t<smoothly-item value={icon} key={icon}>\n\t\t\t\t\t\t\t\t<smoothly-icon name={icon} size=\"small\" tooltip={icon} />\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input name=\"tooltip\" value=\"Tooltip\">\n\t\t\t\t\t\tTooltip\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<div class=\"buttons\">\n\t\t\t\t\t{Color.values.map((color, index, colors) => (\n\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\tonClick={e => console.log(`Clicked button with color: ${color}`, e)}\n\t\t\t\t\t\t\ttooltip={this.props.tooltip}\n\t\t\t\t\t\t\tref={el => colors.length - 1 == index && (this.lastButton = el)}\n\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\texpand={this.props.expand}\n\t\t\t\t\t\t\tfill={this.props.fill}\n\t\t\t\t\t\t\tdisabled={this.props.disabled}\n\t\t\t\t\t\t\tshape={this.props.rounded ? \"rounded\" : undefined}\n\t\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t\t\ttype={this.props.type}\n\t\t\t\t\t\t\tkey={color}>\n\t\t\t\t\t\t\t{this.props.icon ? <smoothly-icon name={this.props.icon} /> : undefined}\n\t\t\t\t\t\t\t{this.props.text?.useColor ? color : this.props.text?.value}\n\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t))}\n\t\t\t\t\t<div class=\"height-text\">{this.heightText}</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { 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\t}\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(\n\tcurrent: isoly.Date,\n\tmin?: isoly.Date,\n\tmax?: isoly.Date\n): { date: isoly.Date; name: string; selected?: boolean }[] {\n\tconst day = new globalThis.Date(current)\n\tconst start = min ? isoly.Date.getYear(min) : new Date().getFullYear() - 50\n\tconst end = max ? isoly.Date.getYear(max) : new Date().getFullYear() + 50\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\tpadding: 0.5em;\n\tborder: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>smoothly-input-month {\n\tpadding: 0 0.5em\n}\n\n:host>table {\n\ttable-layout: fixed;\n\twidth: 100%;\n}\n\n:host>table>thead>tr>th,\n:host>table>tr>td {\n\ttext-align: center;\n\tpadding: 0.5em;\n\tmin-width: 2em;\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n\t-webkit-user-select: none;\n\tuser-select: none;\n}\n:host>table>tr>td {\n\tposition: relative;\n\tcursor: pointer;\n}\n\n:host>table>tr>td.currentMonth {\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n\n:host>table>tr>td:not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-default-contrast), var(--other-month-opacity));\n}\n\n:host>table>tr>td:nth-child(6):not(.currentMonth).selected,\n:host>table>tr>td:nth-child(6):not(.currentMonth).dateRange,\n:host>table>tr>td:nth-child(7):not(.currentMonth).selected,\n:host>table>tr>td:nth-child(7):not(.currentMonth).dateRange {\n\tcolor: rgba(var(--smoothly-default-contrast));\n}\n\n:host>table>tr>td:nth-child(6),\n:host>table>tr>td:nth-child(7) {\n\tcolor: rgb(var(--smoothly-calendar-weekend-foreground, var(--smoothly-danger-color)));\n}\n\n:host>table>tr>td:nth-child(6):not(.currentMonth),\n:host>table>tr>td:nth-child(7):not(.currentMonth) {\n\tcolor: rgba(var(--smoothly-calendar-weekend-foreground, var(--smoothly-danger-color)), var(--other-month-opacity));\n}\n\n:host>table>tr>td:not(.selected, .disable):hover {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n\n:host>table>tr>td.selected {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-color));\n}\n\n:host>table>tr>td.today::before {\n\tcontent: \"\";\n\tinset: 2px;\n\tposition: absolute;\n\tborder: 1px solid currentColor;\n}\n\n:host>table>tr>td.dateRange {\n\tcolor: rgb(var(--smoothly-primary-contrast));\n\tbackground: rgb(var(--smoothly-primary-tint));\n}\n\n:host>table>tr>td.disable {\n\tcursor: not-allowed;\n\topacity: 0.5;\n}\n","import { Component, Element, Event, EventEmitter, Fragment, h, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } 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\tprivate frozenDate: isoly.Date\n\t@Element() element: HTMLTableRowElement\n\t@Prop({ mutable: true }) month?: isoly.Date\n\t@Prop({ mutable: true }) value?: isoly.Date\n\t@Prop() start?: isoly.Date\n\t@Prop() end?: isoly.Date\n\t@Prop({ mutable: true }) max: isoly.Date\n\t@Prop({ mutable: true }) min: isoly.Date\n\t@Prop({ reflect: true }) doubleInput: boolean\n\t@State() startInternal?: isoly.Date\n\t@State() endInternal?: isoly.Date\n\t@Event() smoothlyDateSet: EventEmitter<isoly.Date>\n\t@Event() smoothlyDateRangeSet: EventEmitter<isoly.DateRange>\n\n\tcomponentWillLoad() {\n\t\tthis.onStart()\n\t\tthis.onEnd()\n\t}\n\t@Watch(\"start\")\n\tonStart() {\n\t\tthis.startInternal = this.start\n\t}\n\t@Watch(\"end\")\n\tonEnd() {\n\t\tthis.endInternal = this.end\n\t}\n\t@Method()\n\tasync jumpTo(yearMonth: { Y?: string; M?: string }) {\n\t\tconst year = isoly.Date.Year.is(yearMonth.Y)\n\t\t\t? yearMonth.Y\n\t\t\t: (this.month?.substring(0, 4) ?? isoly.Date.now().substring(0, 4))\n\t\tconst mon = isoly.Date.Month.is(yearMonth.M)\n\t\t\t? yearMonth.M\n\t\t\t: (this.month?.substring(5, 7) ?? isoly.Date.now().substring(5, 7))\n\t\tconst date = `${year}-${mon}-01`\n\t\tif (isoly.Date.is(date)) {\n\t\t\tthis.month = date\n\t\t}\n\t}\n\n\tprivate clickCounter = 0\n\tprivate onClick(date: isoly.Date) {\n\t\tthis.value = date\n\t\tthis.smoothlyDateSet.emit(this.value)\n\t}\n\tprivate onClickDoubleInput(date: isoly.Date) {\n\t\tthis.clickCounter += 1\n\t\tif (this.clickCounter % 2 == 1) {\n\t\t\tthis.startInternal = this.endInternal = this.frozenDate = date\n\t\t} else {\n\t\t\tconst start = this.startInternal! > date ? date : this.startInternal\n\t\t\tconst end = this.endInternal! < date ? date : this.endInternal\n\t\t\tthis.startInternal = start\n\t\t\tthis.endInternal = end\n\t\t}\n\t\tthis.clickCounter % 2 == 0 &&\n\t\t\tthis.startInternal &&\n\t\t\tthis.endInternal &&\n\t\t\tthis.smoothlyDateRangeSet.emit({ start: this.startInternal, end: this.endInternal })\n\t}\n\tprivate onHover(date: isoly.Date) {\n\t\tif (this.doubleInput && this.clickCounter % 2 == 1) {\n\t\t\tif (date < this.frozenDate) {\n\t\t\t\tthis.startInternal = date\n\t\t\t\tthis.endInternal = this.frozenDate\n\t\t\t} else {\n\t\t\t\tthis.startInternal = this.frozenDate\n\t\t\t\tthis.endInternal = date\n\t\t\t}\n\t\t}\n\t}\n\tprivate withinLimit(date: isoly.Date) {\n\t\treturn (!this.min || date >= this.min) && (!this.max || date <= this.max)\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Fragment>\n\t\t\t\t<smoothly-input-month\n\t\t\t\t\tname=\"month\"\n\t\t\t\t\tvalue={this.month ?? this.value}\n\t\t\t\t\tmin={this.min}\n\t\t\t\t\tmax={this.max}\n\t\t\t\t\tinCalendar\n\t\t\t\t\tnext\n\t\t\t\t\tprevious\n\t\t\t\t\tshowLabel={false}\n\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\"month\" in e.detail && typeof e.detail.month == \"string\" && (this.month = e.detail.month)\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyUserInput={e => e.stopPropagation()}>\n\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t</smoothly-input-month>\n\t\t\t\t<table>\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{generate.weekdays().map(day => (\n\t\t\t\t\t\t\t\t<th>{day}</th>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t{generate.month(this.month ?? this.value ?? isoly.Date.now()).map(week => (\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t{week.map(date => (\n\t\t\t\t\t\t\t\t<td\n\t\t\t\t\t\t\t\t\ttabindex={1}\n\t\t\t\t\t\t\t\t\tonMouseOver={this.withinLimit(date) ? () => this.onHover(date) : undefined}\n\t\t\t\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\t\t\t\tthis.withinLimit(date)\n\t\t\t\t\t\t\t\t\t\t\t? () => (this.doubleInput ? this.onClickDoubleInput(date) : this.onClick(date))\n\t\t\t\t\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\t\tselected:\n\t\t\t\t\t\t\t\t\t\t\tdate == this.value ||\n\t\t\t\t\t\t\t\t\t\t\t(this.doubleInput && (date == this.startInternal || date == this.endInternal)),\n\t\t\t\t\t\t\t\t\t\ttoday: date == isoly.Date.now(),\n\t\t\t\t\t\t\t\t\t\tcurrentMonth:\n\t\t\t\t\t\t\t\t\t\t\tisoly.Date.firstOfMonth(this.month ?? this.value ?? isoly.Date.now()) ==\n\t\t\t\t\t\t\t\t\t\t\tisoly.Date.firstOfMonth(date),\n\t\t\t\t\t\t\t\t\t\tdateRange: this.doubleInput && date > (this.startInternal ?? \"\") && date < (this.endInternal ?? \"\"),\n\t\t\t\t\t\t\t\t\t\tdisable: !this.withinLimit(date),\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{date.substring(8, 10)}\n\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t))}\n\t\t\t\t</table>\n\t\t\t</Fragment>\n\t\t)\n\t}\n}\n","import { isoly } from \"isoly\"\n\nexport namespace DateFormat {\n\texport const guides = {\n\t\tY: \"YYYY\",\n\t\tM: \"MM\",\n\t\tD: \"DD\",\n\t} as const\n\n\texport type Part = \"Y\" | \"M\" | \"D\"\n\texport type Parts = { [part in Part]?: string }\n\texport namespace Part {\n\t\texport function isComplete(part: Part, value: string | undefined): boolean {\n\t\t\treturn (value?.length ?? 0) >= DateFormat.Part.lengthOf(part)\n\t\t}\n\t\texport function lengthOf(part: Part): number {\n\t\t\treturn guides[part].length\n\t\t}\n\t\texport function getGuide(part: Part, filledLength: number | undefined): string {\n\t\t\tconst guide = DateFormat.guides[part]\n\t\t\treturn guide.substring(0, guide.length - (filledLength ?? 0))\n\t\t}\n\t}\n\texport namespace Parts {\n\t\texport function lastDay(parts: Parts): number {\n\t\t\tif (parts.Y && parts.M && parseInt(parts.M) >= 1 && parseInt(parts.M) <= 12) {\n\t\t\t\tconst lastDate = isoly.Date.lastOfMonth(`${parts.Y.padStart(4, \"0\")}-${parts.M.padStart(2, \"0\")}-01`)\n\t\t\t\treturn isoly.Date.getDay(lastDate)\n\t\t\t} else if (parts.M && parseInt(parts.M) >= 1 && parseInt(parts.M) <= 12) {\n\t\t\t\t// Assume leap year\n\t\t\t\tconst lastDate = isoly.Date.lastOfMonth(`2004-${parts.M.padStart(2, \"0\")}-01`)\n\t\t\t\treturn isoly.Date.getDay(lastDate)\n\t\t\t}\n\t\t\treturn 31\n\t\t}\n\t\texport function toDate(parts: Parts): isoly.Date | undefined {\n\t\t\tif (parts.Y && parts.Y.length == 4 && parts.M && parts.M.length == 2 && parts.D && parts.D.length == 2) {\n\t\t\t\tconst value = `${parts.Y}-${parts.M}-${parts.D}`\n\t\t\t\tconst lastOfMonth = isoly.Date.lastOfMonth(`${parts.Y}-${parts.M}-01`)\n\t\t\t\treturn lastOfMonth < value ? lastOfMonth : value\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\t\texport function fromDate(value: isoly.Date): Required<DateFormat.Parts>\n\t\texport function fromDate(value: undefined): undefined\n\t\texport function fromDate(value: isoly.Date | undefined): Required<DateFormat.Parts> | undefined\n\t\texport function fromDate(value: isoly.Date | undefined): Required<DateFormat.Parts> | undefined {\n\t\t\tif (value) {\n\t\t\t\treturn {\n\t\t\t\t\tY: value.substring(0, 4).padStart(4, \"0\"),\n\t\t\t\t\tM: value.substring(5, 7).padStart(2, \"0\"),\n\t\t\t\t\tD: value.substring(8, 10).padStart(2, \"0\"),\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined\n\t\t}\n\t}\n\n\texport type Order = \"YMD\" | \"DMY\" | \"MDY\"\n\n\texport namespace Order {\n\t\texport function fromLocale(locale?: isoly.Locale): Order {\n\t\t\tswitch (locale) {\n\t\t\t\tcase \"en-US\":\n\t\t\t\t\treturn \"MDY\"\n\t\t\t\tcase \"sq-AL\":\n\t\t\t\tcase \"es-AR\":\n\t\t\t\tcase \"it-IT\":\n\t\t\t\tcase \"en-GB\":\n\t\t\t\tcase \"fr-FR\":\n\t\t\t\tcase \"et-EE\":\n\t\t\t\tcase \"de-AT\":\n\t\t\t\tcase \"de-DE\":\n\t\t\t\tcase \"he-IL\":\n\t\t\t\tcase \"is-IS\":\n\t\t\t\tcase \"lv-LV\":\n\t\t\t\tcase \"pl-PL\":\n\t\t\t\tcase \"ru-RU\":\n\t\t\t\tcase \"fi-FI\":\n\t\t\t\tcase \"hi-IN\":\n\t\t\t\tcase \"en-IN\":\n\t\t\t\t\treturn \"DMY\"\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"YMD\"\n\t\t\t}\n\t\t}\n\t\texport function getPart(order: Order, index: number): Part {\n\t\t\treturn order.charAt(index) as Part\n\t\t}\n\t\texport function toArray(order: Order): Part[] {\n\t\t\treturn order.split(\"\") as Part[]\n\t\t}\n\t}\n\n\texport type Separator = \"-\" | \"/\" | \".\"\n\texport namespace Separator {\n\t\texport function fromLocale(locale?: isoly.Locale): Separator {\n\t\t\tswitch (locale) {\n\t\t\t\tcase \"sq-AL\":\n\t\t\t\tcase \"es-AR\":\n\t\t\t\tcase \"it-IT\":\n\t\t\t\tcase \"en-GB\":\n\t\t\t\tcase \"fr-FR\":\n\t\t\t\tcase \"en-US\":\n\t\t\t\t\treturn \"/\"\n\t\t\t\tcase \"et-EE\":\n\t\t\t\tcase \"de-AT\":\n\t\t\t\tcase \"de-DE\":\n\t\t\t\tcase \"he-IL\":\n\t\t\t\tcase \"is-IS\":\n\t\t\t\tcase \"lv-LV\":\n\t\t\t\tcase \"pl-PL\":\n\t\t\t\tcase \"ru-RU\":\n\t\t\t\tcase \"fi-FI\":\n\t\t\t\t\treturn \".\"\n\t\t\t\tdefault:\n\t\t\t\t\treturn \"-\"\n\t\t\t}\n\t\t}\n\t}\n}\n","export namespace InputSelection {\n\texport function isAtStart(event: KeyboardEvent): boolean {\n\t\tconst el = event.currentTarget as HTMLElement\n\t\tconst sel = window.getSelection()\n\t\tif (!sel || sel.rangeCount === 0 || !el.contains(sel.anchorNode)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Only trigger if there is no selection (caret only)\n\t\tif (!sel.isCollapsed) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst range = sel.getRangeAt(0)\n\t\tconst preRange = range.cloneRange()\n\t\tpreRange.selectNodeContents(el)\n\t\tpreRange.setEnd(range.startContainer, range.startOffset)\n\n\t\treturn preRange.toString().length === 0\n\t}\n\n\texport function isAtEnd(event: KeyboardEvent): boolean {\n\t\tconst el = event.currentTarget as HTMLElement\n\t\tconst sel = window.getSelection()\n\t\tif (!sel || sel.rangeCount === 0 || !el.contains(sel.anchorNode)) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Only trigger if there is no selection (caret only)\n\t\tif (!sel.isCollapsed) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst range = sel.getRangeAt(0)\n\t\tconst postRange = range.cloneRange()\n\t\tpostRange.selectNodeContents(el)\n\t\tpostRange.setStart(range.endContainer, range.endOffset)\n\n\t\treturn postRange.toString().length === 0\n\t}\n\n\texport function selectAll(el?: HTMLElement) {\n\t\tif (!el) {\n\t\t\treturn\n\t\t}\n\t\tel.focus()\n\t\tconst range = document.createRange()\n\t\trange.selectNodeContents(el) // Select all content inside\n\n\t\tconst sel = window.getSelection()\n\t\tif (!sel) {\n\t\t\treturn\n\t\t}\n\n\t\tsel.removeAllRanges()\n\t\tsel.addRange(range) // Apply the selection\n\t}\n\n\texport function setPosition(el: HTMLElement | undefined, index: number) {\n\t\tif (!el) {\n\t\t\treturn\n\t\t}\n\n\t\tel.focus()\n\n\t\tconst selection = window.getSelection()\n\t\tif (!selection) {\n\t\t\treturn\n\t\t}\n\n\t\tconst range = document.createRange()\n\t\tconst textNode = el.firstChild || el\n\n\t\tconst position = Math.max(0, Math.min(index, el.innerText.length))\n\t\trange.setStart(textNode, position)\n\t\trange.collapse(true)\n\n\t\tselection.removeAllRanges()\n\t\tselection.addRange(range)\n\t}\n\n\texport function isCollapsed(el: HTMLElement): boolean {\n\t\tconst sel = window.getSelection()\n\t\tif (!sel || sel.rangeCount === 0) {\n\t\t\treturn true\n\t\t} // nothing selected at all\n\n\t\tconst range = sel.getRangeAt(0)\n\n\t\t// Make sure selection is inside our element\n\t\tif (!el.contains(range.startContainer) || !el.contains(range.endContainer)) {\n\t\t\treturn true\n\t\t}\n\n\t\treturn range.collapsed\n\t}\n}\n","\n:host {\n\t--guide-opacity: 0.5;\n}\n\n:host .smoothly-date-text-part:focus {\n\toutline: none;\n}\n\n:host .guide {\n\topacity: var(--guide-opacity);\n}\n\n:host .smoothly-date-text-part:not(.is-complete) + .guide + .smoothly-date-separator {\n\topacity: var(--guide-opacity);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { getLocale } from \"../../../../model\"\nimport { DateFormat } from \"./DateFormat\"\nimport { InputSelection } from \"./InputSelection\"\n\n@Component({\n\ttag: \"smoothly-date-text\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateRangeText {\n\t@Element() element: HTMLElement\n\tprivate partElements: { [partIndex in number]: HTMLSpanElement | undefined } = {\n\t\t0: undefined,\n\t\t1: undefined,\n\t\t2: undefined,\n\t}\n\t@Prop() locale?: isoly.Locale = getLocale()\n\t@Prop({ reflect: true }) readonly: boolean\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() value?: isoly.Date // Only used for initial value\n\t@State() parts: DateFormat.Parts = {}\n\tprivate previousEmittedValue?: isoly.Date\n\t@State() order: DateFormat.Order\n\t@State() separator: DateFormat.Separator\n\t@State() focusedIndex?: number\n\t@Event() smoothlyDateTextHasText: EventEmitter<boolean>\n\t@Event() smoothlyDateTextChange: EventEmitter<isoly.Date | undefined>\n\t@Event() smoothlyDateTextFocusChange: EventEmitter<boolean>\n\t@Event() smoothlyDateHasPartialDate: EventEmitter<DateFormat.Parts>\n\t@Event() smoothlyDateTextDone: EventEmitter<void>\n\t@Event() smoothlyDateTextPrevious: EventEmitter<void>\n\t@Event() smoothlyDateTextNext: EventEmitter<void>\n\n\tcomponentWillLoad() {\n\t\tthis.order = DateFormat.Order.fromLocale(this.locale)\n\t\tthis.separator = DateFormat.Separator.fromLocale(this.locale)\n\t\tthis.parts = DateFormat.Parts.fromDate(this.value) ?? {}\n\t}\n\tcomponentDidLoad() {\n\t\tthis.updateInputs()\n\t}\n\n\t@Watch(\"parts\")\n\tpartsHandler() {\n\t\tconst value = DateFormat.Parts.toDate(this.parts)\n\t\tif (value != this.previousEmittedValue) {\n\t\t\tthis.smoothlyDateTextChange.emit(value)\n\t\t\tthis.previousEmittedValue = value\n\t\t}\n\t\tthis.smoothlyDateTextHasText.emit(Object.values(this.parts).some(part => !!part))\n\t}\n\t@Watch(\"focusedIndex\")\n\tfocusedIndexHandler() {\n\t\tthis.smoothlyDateTextFocusChange.emit(typeof this.focusedIndex == \"number\")\n\t}\n\n\t@Method()\n\tasync setValue(value: isoly.Date | undefined) {\n\t\tconst parts = DateFormat.Parts.fromDate(value)\n\t\tthis.setAllParts(parts)\n\t}\n\n\tsetAllParts(parts?: DateFormat.Parts) {\n\t\tthis.parts = parts ?? {}\n\t\tthis.updateInputs()\n\t}\n\tupdateInputs() {\n\t\tconst yearIndex = this.order.indexOf(\"Y\")\n\t\tconst monthIndex = this.order.indexOf(\"M\")\n\t\tconst dayIndex = this.order.indexOf(\"D\")\n\t\tthis.partElements[yearIndex] && (this.partElements[yearIndex]!.innerText = this.parts.Y ?? \"\")\n\t\tthis.partElements[monthIndex] && (this.partElements[monthIndex]!.innerText = this.parts.M ?? \"\")\n\t\tthis.partElements[dayIndex] && (this.partElements[dayIndex]!.innerText = this.parts.D ?? \"\")\n\t}\n\n\tsetPart(part: \"Y\" | \"M\" | \"D\", value: string | undefined) {\n\t\tthis.parts = {\n\t\t\t...this.parts,\n\t\t\t[part]: value,\n\t\t}\n\t\tconst index = this.order.indexOf(part)\n\t\tthis.partElements[index] && (this.partElements[index]!.innerText = value ?? \"\")\n\t}\n\n\t@Method()\n\tasync select(place: \"start\" | \"end\" = \"start\") {\n\t\tconst index = place == \"start\" ? 0 : 2\n\t\tthis.setFocus(index)\n\t}\n\t@Method()\n\tasync deselect() {\n\t\tthis.partElements[this.focusedIndex ?? 0]?.blur()\n\t}\n\n\tgetInnerText(target: EventTarget | null) {\n\t\treturn (target as HTMLSpanElement).innerText.replace(/\\n/g, \"\").replace(/\\D/g, \"\")\n\t}\n\n\t@Listen(\"beforeinput\")\n\tbeforeInputHandler(e: InputEvent) {\n\t\tconst part = this.order[this.focusedIndex ?? 0] as \"Y\" | \"M\" | \"D\"\n\t\tconst value = this.getInnerText(e.target)\n\t\tconst nonDigitData = e.data && /\\D/.test(e.data)\n\t\tconst isComplete = DateFormat.Part.isComplete(part, value)\n\t\tconst noRangedSelection = InputSelection.isCollapsed(e.target as HTMLElement)\n\t\tif (\n\t\t\t(e.inputType == \"insertText\" || e.inputType == \"insertFromPaste\") &&\n\t\t\t(nonDigitData || (isComplete && noRangedSelection))\n\t\t) {\n\t\t\te.preventDefault()\n\t\t}\n\t\tif (e.inputType == \"insertParagraph\" || e.inputType == \"insertLineBreak\") {\n\t\t\tthis.smoothlyDateTextDone.emit()\n\t\t\te.preventDefault()\n\t\t}\n\t}\n\n\t@Listen(\"input\", { capture: true })\n\tinputHandler(e: InputEvent) {\n\t\tconst part = DateFormat.Order.getPart(this.order, this.focusedIndex ?? 0)\n\t\tconst index = this.focusedIndex ?? 0\n\t\tconst value = this.getInnerText(e.target)\n\t\tthis.parts = {\n\t\t\t...this.parts,\n\t\t\t[part]: value,\n\t\t}\n\n\t\tif ([\"D\", \"M\"].includes(part)) {\n\t\t\tconst isDay = part == \"D\"\n\t\t\tconst max = isDay ? DateFormat.Parts.lastDay(this.parts) : 12\n\t\t\tconst singleDigitThreshold = isDay ? 3 : 1\n\t\t\tconst numberValue = parseInt(value)\n\t\t\tif (value.length >= 2) {\n\t\t\t\tthis.commitPart(part, numberValue, index, max)\n\t\t\t} else if (value.length == 1 && numberValue > singleDigitThreshold) {\n\t\t\t\tthis.autoAdvancePart(part, numberValue, index, max)\n\t\t\t}\n\t\t}\n\t\tif (DateFormat.Part.isComplete(part, value)) {\n\t\t\tthis.setFocus(index + 1)\n\t\t}\n\t\tconst roundedValue = DateFormat.Parts.toDate(this.parts)\n\t\tif (roundedValue) {\n\t\t\tconst roundedParts = DateFormat.Parts.fromDate(roundedValue)\n\t\t\tif (this.parts.D !== roundedParts?.D) {\n\t\t\t\tthis.setPart(\"D\", roundedParts?.D)\n\t\t\t}\n\t\t}\n\t\tif (this.parts.Y || this.parts.M || this.parts.D) {\n\t\t\tthis.smoothlyDateHasPartialDate.emit(this.parts)\n\t\t}\n\t}\n\tkeyDownHandler(e: KeyboardEvent) {\n\t\tconst text = this.getInnerText(e.target)\n\t\tconst index = this.focusedIndex ?? 0\n\t\tif (InputSelection.isAtStart(e) && e.key == \"ArrowLeft\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(index - 1)\n\t\t\te.preventDefault() // Keep selection\n\t\t} else if (InputSelection.isAtEnd(e) && e.key == \"ArrowRight\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(index + 1)\n\t\t\te.preventDefault() // Keep selection\n\t\t} else if (e.key == \"Home\" || e.key == \"ArrowUp\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(0)\n\t\t\te.preventDefault() // Keep selection\n\t\t} else if (e.key == \"End\" || e.key == \"ArrowDown\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(2)\n\t\t\te.preventDefault() // Keep selection\n\t\t} else if (InputSelection.isAtStart(e) && e.key == \"Backspace\" && text == \"\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(index - 1)\n\t\t\te.preventDefault() // Prevent delete previous part\n\t\t} else if (InputSelection.isAtEnd(e) && e.key == \"Delete\" && text == \"\") {\n\t\t\tthis.autoAdvanceIfPossible(index)\n\t\t\tthis.setFocus(index + 1)\n\t\t\te.preventDefault() // Prevent delete next part\n\t\t}\n\t}\n\n\tcommitPart(part: DateFormat.Part, value: number, index: number, max: number) {\n\t\tconst clamped = Math.max(1, Math.min(value, max))\n\t\tthis.setPart(part, clamped.toString().padStart(2, \"0\"))\n\t\tInputSelection.setPosition(this.partElements[index], 2)\n\t}\n\tautoAdvancePart(part: DateFormat.Part, value: number, index: number, max: number) {\n\t\tconst clamped = Math.max(1, Math.min(value, max))\n\t\tthis.setPart(part, clamped.toString().padStart(2, \"0\"))\n\t\tthis.setFocus(index + 1)\n\t}\n\n\tautoAdvanceIfPossible(index: number) {\n\t\tconst part = DateFormat.Order.getPart(this.order, index)\n\t\tconst value = this.parts[part] ?? \"\"\n\t\tif (part == \"D\" && value.length == 1) {\n\t\t\tthis.autoAdvancePart(part, parseInt(value), index, DateFormat.Parts.lastDay(this.parts))\n\t\t} else if (part == \"M\" && value.length == 1) {\n\t\t\tthis.autoAdvancePart(part, parseInt(value), index, 12)\n\t\t}\n\t}\n\n\tsetFocus(index: number) {\n\t\tif (index < 0) {\n\t\t\tthis.smoothlyDateTextPrevious.emit()\n\t\t} else if (index > 2) {\n\t\t\tthis.smoothlyDateTextNext.emit()\n\t\t} else {\n\t\t\tInputSelection.selectAll(this.partElements[index])\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class={{ \"has-text\": Object.values(this.parts).some(part => !!part) }}>\n\t\t\t\t{DateFormat.Order.toArray(this.order).map((part, index) => (\n\t\t\t\t\t<span onClick={() => !this.readonly && !this.disabled && this.setFocus(index)}>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t\t\"smoothly-date-text-part\": true,\n\t\t\t\t\t\t\t\t\"is-complete\": DateFormat.Part.isComplete(part, this.parts[part]),\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tonFocus={() => (this.focusedIndex = index)}\n\t\t\t\t\t\t\tonBlur={() => (this.focusedIndex = undefined)}\n\t\t\t\t\t\t\tonKeyDown={(e: KeyboardEvent) => this.keyDownHandler(e)}\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tref={el => (this.partElements[index] = el)}\n\t\t\t\t\t\t\tcontenteditable={!(this.readonly || this.disabled)}\n\t\t\t\t\t\t\tinputmode=\"numeric\">\n\t\t\t\t\t\t\t{/* year or month or day written here */}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"guide\">{DateFormat.Part.getGuide(part, this.parts[part]?.length)}</span>\n\t\t\t\t\t\t{index < 2 && <span class=\"smoothly-date-separator\">{this.separator}</span>}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 55%;\n left: 50%;\n transform: translate(-50%, -50%);\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 > section {\n\tmargin-top: var(--smoothly-dialog-margin-top)\n}\n:host > section > div.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]) div.header {\n\tborder: none;\n}\n\n:host > section > * {\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 > section > div.content {\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]) >section> div.content {\n\tborder-radius: 8px;\n}\n:host > section > * > smoothly-trigger {\n\tposition: absolute;\n\tright: -2em;\n\ttop: -2em;\n\tz-index: 1;\n\tborder-color: transparent;\n}\n:host > section > * > smoothly-trigger:hover {\n\tborder-color: transparent;\n}\n:host > section > div.header > smoothly-trigger > smoothly-icon {\n\tbackground-color: rgb(var(--smoothly-color));\n\tborder-radius: 50%;\n}\n:host > section > * > * {\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\t}\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<section>\n\t\t\t\t<div class=\"header\">\n\t\t\t\t\t{this.closable && (\n\t\t\t\t\t\t<smoothly-trigger fill=\"clear\" name=\"close\">\n\t\t\t\t\t\t\t<smoothly-icon name=\"close-circle\" fill=\"solid\" color={this.color} />\n\t\t\t\t\t\t</smoothly-trigger>\n\t\t\t\t\t)}\n\t\t\t\t\t{this.header ? <h1>{this.header}</h1> : <slot name=\"header\" />}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"content\">\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t)\n\t}\n}\n","\n:host > smoothly-button {\n\tdisplay: block;\n\tmargin-block: 2rem;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-dialog-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDialogDemo {\n\t@State() openModal = false\n\t@State() openTallModal = false\n\t@State() showFrame = false\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\" onClick={() => (this.openModal = true)}>\n\t\t\t\t\tOpen Modal\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\" onClick={() => (this.openTallModal = true)}>\n\t\t\t\t\tOpen Modal with long text and top-aligned.\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button fill=\"solid\" color=\"light\" onClick={() => (this.showFrame = !this.showFrame)}>\n\t\t\t\t\tShow Frame\n\t\t\t\t</smoothly-button>\n\n\t\t\t\t<smoothly-modal closable open={this.openModal} onSmoothlyModalChange={e => (this.openModal = e.detail)}>\n\t\t\t\t\t<h2 slot=\"header\">Modal</h2>\n\t\t\t\t\t<span>Are you sure you want to confirm this action?</span>\n\t\t\t\t\t<smoothly-button slot=\"actions\" color=\"success\">\n\t\t\t\t\t\tConfirm\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-button slot=\"actions\" color=\"light\" fill=\"outline\" onClick={() => (this.openModal = false)}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-modal>\n\n\t\t\t\t<smoothly-modal\n\t\t\t\t\tclosable\n\t\t\t\t\topen={this.openTallModal}\n\t\t\t\t\tonSmoothlyModalChange={e => (this.openTallModal = e.detail)}\n\t\t\t\t\talign=\"top\">\n\t\t\t\t\t<h2 slot=\"header\">Modal</h2>\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<div slot=\"summary\">Lorem ipsum</div>\n\t\t\t\t\t\t<div slot=\"content\">\n\t\t\t\t\t\t\t{Array.from({ length: 10 }).map(() => (\n\t\t\t\t\t\t\t\t<p>\n\t\t\t\t\t\t\t\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et\n\t\t\t\t\t\t\t\t\tdolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut\n\t\t\t\t\t\t\t\t\taliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum\n\t\t\t\t\t\t\t\t\tdolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui\n\t\t\t\t\t\t\t\t\tofficia deserunt mollit anim id est laborum.\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-button slot=\"actions\" color=\"light\" fill=\"outline\" onClick={() => (this.openTallModal = false)}>\n\t\t\t\t\t\tCancel\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</smoothly-modal>\n\n\t\t\t\t{this.showFrame && (\n\t\t\t\t\t<smoothly-dialog closable>\n\t\t\t\t\t\t<smoothly-frame url=\"https://www.wikipedia.org/\" name=\"parent\" style={{ height: \"80vh\" }} />\n\t\t\t\t\t</smoothly-dialog>\n\t\t\t\t)}\n\t\t\t</Host>\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 remainder: state.remainder,\n };\n }\n State.copy = copy;\n})(State || (State = {}));\n//# sourceMappingURL=State.js.map","export class StateEditor {\n value;\n selection;\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.substring(index, 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 partialFormat = this.format;\n format(unformatted) {\n return {\n ...unformatted,\n type: \"text\",\n inputmode: \"numeric\",\n autocomplete: \"cc-csc\",\n length: [3, 3],\n pattern: /^\\d{3}$/,\n };\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 partialFormat = this.format;\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 {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\n autocomplete: \"cc-exp\",\n length: [7, 7],\n pattern: /^(0[1-9]|1[012]) \\/ \\d\\d$/,\n };\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 partialFormat = this.format;\n format(unformatted) {\n const issuer = getIssuer(unformatted.value);\n const result = unformatted.map((symbol, index) => (index + 1 < issuer.length[0] && issuer.spaceIndexes.includes(index) ? \" \" : \"\") + symbol);\n return {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\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 = {\n ...defaultIssuer,\n spaceIndexes: value.length == 14 ? [4, 10] : defaultIssuer.spaceIndexes,\n };\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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]{6}\\s[0-9]{4}$/,\n identification: /^3(?:0[0-5]|[68][0-9])/,\n spaceIndexes: [4, 10],\n length: [14, 16, 16],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 spaceIndexes: [4, 8, 12],\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 separator;\n constructor(separator) {\n this.separator = separator;\n }\n partialFormat(unformatted) {\n const formatted = this.format(unformatted);\n return {\n ...formatted,\n remainder: this.formatString.slice(formatted.value.length),\n };\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 { 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 formatString = `DD${this.separator}MM${this.separator}YYYY`;\n format(unformatted) {\n let result = unformatted.delete(this.separator);\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 { 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 formatString = `MM${this.separator}DD${this.separator}YYYY`;\n format(unformatted) {\n let result = unformatted.delete(this.separator);\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 { 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 formatString = `YYYY${this.separator}MM${this.separator}DD`;\n format(unformatted) {\n let result = unformatted.delete(this.separator);\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 { 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 partialFormat = this.format;\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 partialFormat = this.format;\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 separator = \":\";\n 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 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 partialFormat = this.format;\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\";\nclass Handler {\n settings;\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 partialFormat = this.format;\n format(unformatted) {\n return { ...unformatted, ...this.settings, type: \"text\", inputmode: \"email\", autocomplete: \"email\" };\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(\"email\", (settings) => new Handler(settings || {}));\n//# sourceMappingURL=email.js.map","import { add } from \"./base\";\nconst modeTypes = [\"code\", \"pascal\", \"snake\", \"camel\", \"attribute\"];\nclass Handler {\n settings;\n mode;\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 partialFormat = this.format;\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 country;\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 partialFormat = this.format;\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.substring(2, 4) ? \"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 min;\n max;\n pad;\n constructor(options) {\n this.min = options.min;\n this.max = options.max;\n this.pad = options.pad;\n }\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 partialFormat(unformatted) {\n return {\n ...unformatted,\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: /^[0-9]+$/,\n };\n }\n format(unformatted) {\n const result = this.partialFormat(unformatted);\n const number = this.fromString(result.value);\n const value = number == undefined\n ? result.value\n : this.min != undefined && number < this.min\n ? this.toString(this.min)\n : this.max != undefined && number > this.max\n ? this.toString(this.max)\n : result.value;\n return {\n ...result,\n value: typeof this.pad == \"number\" && value ? value.padStart(this.pad, \"0\") : value,\n };\n }\n unformat(formatted) {\n return formatted;\n }\n allowed(symbol, state) {\n return (symbol >= \"0\" &&\n symbol <= \"9\" &&\n (this.max == undefined ||\n this.max.toString().length > state.value.length ||\n state.selection.start != state.selection.end));\n }\n}\nadd(\"integer\", (argument) => new Handler(argument?.[0] ?? {}));\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 partialFormat = this.format;\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 let result = \"\";\n if (typeof data == \"number\") {\n const decimals = data.toString().split(\".\")[1]?.length ?? 2;\n result = (data * 100).toFixed(!decimals || decimals <= 1 ? 0 : decimals - 2);\n }\n return result;\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 partialFormat = this.format;\n format(unformatted) {\n return {\n ...(unformatted.value ? unformatted.suffix(\" %\") : unformatted),\n type: \"text\",\n inputmode: \"numeric\",\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 partialFormat = this.format;\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: \"tel\", 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 country;\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 partialFormat = this.format;\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 currency;\n toInteger;\n constructor(options) {\n this.currency = options && typeof options == \"object\" ? options.currency : options;\n this.toInteger = options && typeof options == \"object\" ? options.toInteger : undefined;\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 partialFormat(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 result = this.addLeadingIntegerZero(result);\n result = this.fillDecimalsIfPresent(result, decimals, \"onlyLimit\");\n result = this.truncateIntegerZeros(result);\n result = this.addThousandSeparators(result);\n return {\n ...result,\n remainder: this.format(unformatted).value.slice(result.value.length),\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d*)?$\"),\n };\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 (!this.toInteger)\n result = this.forceDecimalZero(result, decimals);\n result = this.addLeadingIntegerZero(result);\n result = this.fillDecimalsIfPresent(result, decimals, \"fillAndLimit\");\n result = this.truncateIntegerZeros(result);\n result = this.addThousandSeparators(result);\n result = this.appendCurrency(result);\n return {\n ...result,\n type: \"text\",\n inputmode: \"numeric\",\n length: [3, undefined],\n pattern: new RegExp(\"^(\\\\d{0,3})( \\\\d{3})*(\\\\.\\\\d+)?\" + (this.currency ? \" \" + this.currency : \"\") + \"$\"),\n };\n }\n forceDecimalZero(state, decimals) {\n if (!state.value.includes(\".\") && decimals && (Math.abs(Number.parseFloat(state.value)) >= 0 || state.value == \"0\"))\n state = state.suffix(\".0\");\n return state;\n }\n addLeadingIntegerZero(state) {\n const separatorIndex = state.value && state.value.includes(\".\") ? state.value.indexOf(\".\") : undefined;\n if (separatorIndex == 0)\n state = state.prepend(\"0\");\n return state;\n }\n fillDecimalsIfPresent(state, decimals, zeroHandling) {\n const separatorIndex = state.value.indexOf(\".\");\n if (separatorIndex != -1) {\n const adjust = separatorIndex + 1 + (decimals ?? 2) - state.value.length;\n state =\n adjust < 0\n ? state.truncate(state.value.length + adjust)\n : zeroHandling == \"fillAndLimit\"\n ? state.suffix(\"0\".repeat(adjust))\n : state;\n }\n return state;\n }\n truncateIntegerZeros(state) {\n const match = state.match(/^[0\\s]{2,}/);\n if (match)\n state = state.replace(0, match[0].length, \"0\");\n return state;\n }\n addThousandSeparators(state) {\n let separatorIndex = state.value.includes(\".\") ? state.value.indexOf(\".\") : state.value.length;\n const spaces = separatorIndex <= 0 ? 0 : Math.ceil(separatorIndex / 3) - 1;\n for (let i = 0; i < spaces; i++) {\n const position = separatorIndex - (spaces - i) * 3;\n state = state.insert(position, \" \");\n separatorIndex++;\n }\n return state;\n }\n appendCurrency(state) {\n return this.currency && (state.value.length > 1 || (state.value.length == 1 && state.value.charAt(0) != \".\"))\n ? state.suffix(\" \" + this.currency)\n : state;\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\") ||\n (symbol == \".\" &&\n !state.value.includes(\".\") &&\n (!this.currency || isoly.Currency.decimalDigits(this.currency) != 0)));\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 settings;\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 partialFormat = this.format;\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 || {}));\n//# sourceMappingURL=text.js.map","import { add } from \"./base\";\nclass Handler {\n toString(value) {\n return typeof value == \"string\" ? \"#\" + value : \"\";\n }\n fromString(value) {\n return value ? \"#\" + value : undefined;\n }\n partialFormat = this.format;\n format(unformatted) {\n const result = unformatted.delete(\"#\");\n return {\n ...(result.value ? result.prepend(\"#\") : result),\n type: \"text\",\n length: [4, 7],\n pattern: /^#([0-9a-f]{3}|[0-9a-f]{6})$/i,\n };\n }\n unformat(formatted) {\n return formatted.delete(\"#\");\n }\n allowed(symbol, state) {\n return (((symbol >= \"0\" && symbol <= \"9\") || (symbol >= \"a\" && symbol <= \"f\") || (symbol >= \"A\" && symbol <= \"F\")) &&\n state.value.length < 6);\n }\n}\nadd(\"hex-color\", () => new Handler());\n//# sourceMappingURL=hex-color.js.map",":host {\n\tdisplay: block;\n\twhite-space: wrap;\n}\n\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host>div {\n\topacity: 0.6;\n\tfont-size: .8rem;\n}\n","import { Component, h, Prop } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { getLocale } from \"../../model\"\n\n@Component({\n\ttag: \"smoothly-display\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplay {\n\t@Prop() type: tidily.Type | \"json\"\n\t@Prop() label?: string\n\t@Prop() value?: any\n\t@Prop() collapseDepth?: number\n\t@Prop() toInteger?: boolean\n\t@Prop() currency?: isoly.Currency\n\t@Prop() country?: isoly.CountryCode.Alpha2\n\t@Prop() format?: isoly.DateTime.Format\n\trender() {\n\t\tlet result: string | HTMLElement | undefined\n\t\tconst type = this.type\n\t\tswitch (type) {\n\t\t\tcase \"json\":\n\t\t\t\tresult = <smoothly-display-json value={this.value} collapseDepth={this.collapseDepth} />\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = tidily.format(this.value, type)\n\t\t\t\tbreak\n\t\t\tcase \"email\":\n\t\t\t\tresult = <a href={\"mailto:\" + this.value}>{tidily.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}>{tidily.format(this.value, type, this.country)}</a>\n\t\t\t\tbreak\n\t\t\tcase \"postal-code\":\n\t\t\t\tresult = tidily.format(this.value, type, this.country)\n\t\t\t\tbreak\n\t\t\tcase \"price\":\n\t\t\t\tresult = tidily.format(this.value, type, { currency: this.currency, toInteger: this.toInteger })\n\t\t\t\tbreak\n\t\t\tcase \"date\":\n\t\t\t\tresult = tidily.get(this.type as tidily.Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t\tcase \"duration\":\n\t\t\t\tresult = tidily.format(this.value, type) || \"0\"\n\t\t\t\tbreak\n\t\t\tcase \"date-time\":\n\t\t\t\tresult = this.format\n\t\t\t\t\t? isoly.DateTime.localize(this.value, this.format, getLocale())\n\t\t\t\t\t: tidily.get(this.type as tidily.Type, getLocale())?.toString(this.value)\n\t\t\t\tbreak\n\t\t}\n\t\treturn this.label ? [<div>{this.label}</div>, result] : result\n\t}\n}\n","import { Component, Event, EventEmitter, h, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Color, Notice } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-display-demo\",\n})\nexport class SmoothlyDisplayDemo {\n\t@State() downloadingSpinner: boolean\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<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: 13, minutes: 100 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: 8 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ minutes: 3 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\t\t\t\t\tstyle={{ display: \"inline\" }}\n\t\t\t\t\t\t\t\t\t\ttype=\"duration\"\n\t\t\t\t\t\t\t\t\t\tvalue={{ hours: -13, minutes: 100 }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ hours: -8 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{}} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t\t\t<smoothly-display style={{ display: \"inline\" }} type=\"duration\" value={{ minutes: -3 }} />\n\t\t\t\t\t\t\t\t\t{\" h\"}\n\t\t\t\t\t\t\t\t</div>\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\" />\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\" />\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\" />\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\" />\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\" />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price without decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={200} currency=\"SEK\" toInteger />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price 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 type={\"price\"} value={200.2} currency=\"SEK\" toInteger />\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>price with decimals</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={200.2} currency=\"SEK\" />\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\" />\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\" />\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\" />\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\" />\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\" />\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\" />\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"short\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T02:02:02Z\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"2-digit\",\n\t\t\t\t\t\t\t\t\tmonth: \"long\",\n\t\t\t\t\t\t\t\t\tday: \"2-digit\",\n\t\t\t\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\t\t\t\tsecond: \"2-digit\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T02:02:02Z\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"2-digit\",\n\t\t\t\t\t\t\t\t\tday: \"2-digit\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:22:24Z\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"numeric\",\n\t\t\t\t\t\t\t\t\tmonth: \"numeric\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"numeric\",\n\t\t\t\t\t\t\t\t\tminute: \"numeric\",\n\t\t\t\t\t\t\t\t\tsecond: \"numeric\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:22:24Z\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{ year: \"numeric\", month: \"short\", day: \"numeric\" }}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T00:00+02:00\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{ year: \"2-digit\", month: \"numeric\", day: \"numeric\" }}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T00:00+02:00\"\n\t\t\t\t\t\t\t/>\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\n\t\t\t\t\t\t\t\ttype=\"date-time\"\n\t\t\t\t\t\t\t\tformat={{\n\t\t\t\t\t\t\t\t\tyear: \"2-digit\",\n\t\t\t\t\t\t\t\t\tmonth: \"numeric\",\n\t\t\t\t\t\t\t\t\tday: \"numeric\",\n\t\t\t\t\t\t\t\t\thour: \"2-digit\",\n\t\t\t\t\t\t\t\t\tminute: \"2-digit\",\n\t\t\t\t\t\t\t\t\tsecond: \"2-digit\",\n\t\t\t\t\t\t\t\t\ttimeZone: \"Europe/Stockholm\",\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tvalue=\"2022-07-07T12:15Z\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</dd>\n\t\t\t\t\t\t<dt>Display JSON</dt>\n\t\t\t\t\t\t<dd>\n\t\t\t\t\t\t\t<smoothly-display-demo-json />\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<h2>With labels</h2>\n\t\t\t\t<dd>\n\t\t\t\t\t<smoothly-display label=\"Today\" type=\"date\" value={isoly.Date.now()} />\n\t\t\t\t\t<smoothly-display label=\"Total amount\" type=\"price\" currency=\"SEK\" value={6789} />\n\t\t\t\t\t<smoothly-display label=\"Total amount\" type=\"price\" currency=\"GBP\" value={678.9} />\n\t\t\t\t\t<smoothly-display\n\t\t\t\t\t\tlabel=\"Logs\"\n\t\t\t\t\t\ttype=\"json\"\n\t\t\t\t\t\tvalue={[\n\t\t\t\t\t\t\t{ type: \"trace\", message: \"Hello\" },\n\t\t\t\t\t\t\t{ type: \"error\", message: \"Oh no!\" },\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</dd>\n\t\t\t\t<fieldset>\n\t\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.\"))}>\n\t\t\t\t\t\tsuccess\n\t\t\t\t\t</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={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tLarge\n\t\t\t\t\t\t<smoothly-spinner\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\"--spinner-background\": \"200,255,200\",\n\t\t\t\t\t\t\t\t\"--spinner-background-opacity\": \"0.2\",\n\t\t\t\t\t\t\t\t\"--spinner-color\": \"0,130,0\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tMedium\n\t\t\t\t\t\t<smoothly-spinner size=\"medium\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ width: \"fit-content\" }}>\n\t\t\t\t\t\tSmall\n\t\t\t\t\t\t<smoothly-spinner size=\"small\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\tIcon sized spinner on button\n\t\t\t\t\t\t{Color.values.map(color => (\n\t\t\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\t\t\tsize=\"icon\"\n\t\t\t\t\t\t\t\tcolor={color}\n\t\t\t\t\t\t\t\tshape=\"rounded\"\n\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\tthis.downloadingSpinner = true\n\t\t\t\t\t\t\t\t\tsetTimeout(() => (this.downloadingSpinner = false), 3000)\n\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t{!this.downloadingSpinner && <smoothly-icon name=\"download-outline\" />}\n\t\t\t\t\t\t\t\t{this.downloadingSpinner && (\n\t\t\t\t\t\t\t\t\t<smoothly-spinner size=\"icon\" style={{ \"--spinner-background-opacity\": \"0\" }} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<h3>Spinner with overlay</h3>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tLarge Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner\n\t\t\t\t\t\t\toverlay\n\t\t\t\t\t\t\tsize=\"large\"\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\"--spinner-background\": \"255,200,255\",\n\t\t\t\t\t\t\t\t\"--spinner-background-opacity\": \"0.5\",\n\t\t\t\t\t\t\t\t\"--spinner-color\": \"0,130,0\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tMedium Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay color=\"secondary\" size=\"medium\" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div style={{ position: \"relative\", height: \"10em\" }}>\n\t\t\t\t\t\tSmall Overlay Spinner\n\t\t\t\t\t\t<smoothly-spinner overlay size=\"small\" />\n\t\t\t\t\t</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<span slot=\"summary\">Some title</span>\n\t\t\t\t\t\t<smoothly-summary slot=\"content\">\n\t\t\t\t\t\t\t<div slot=\"summary\">Some other title</div>\n\t\t\t\t\t\t\t<div slot=\"content\">\n\t\t\t\t\t\t\t\tA lot more content, yes please. A lot more content, yes please. A lot more content, yes please. A lot\n\t\t\t\t\t\t\t\tmore content, yes please. A lot more content, yes please.A lot more content, yes please. A lot more\n\t\t\t\t\t\t\t\tcontent, yes please. A lot more content, yes please. A lot more content, yes please.\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t</smoothly-summary>\n\t\t\t\t\t<smoothly-summary>\n\t\t\t\t\t\t<div slot=\"summary\" style={{ display: \"flex\", gap: \"0.3rem\" }}>\n\t\t\t\t\t\t\t<span>Person</span>\n\t\t\t\t\t\t\t<smoothly-icon name=\"person\" color=\"light\" fill=\"clear\" size=\"tiny\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p slot=\"content\">Some person information.</p>\n\t\t\t\t\t</smoothly-summary>\n\n\t\t\t\t\t<h2>Label</h2>\n\t\t\t\t\t{labels.map(l => (\n\t\t\t\t\t\t<smoothly-label hue={l.hue} description={l.description} shape={\"rectangle\"}>\n\t\t\t\t\t\t\t{l.name}\n\t\t\t\t\t\t</smoothly-label>\n\t\t\t\t\t))}\n\t\t\t\t\t<smoothly-label color=\"primary\" description=\"Using colors\" shape={\"rectangle\"}>\n\t\t\t\t\t\tPrimary\n\t\t\t\t\t</smoothly-label>\n\t\t\t\t</fieldset>\n\t\t\t</main>,\n\t\t]\n\t}\n}\nconst labels = [\n\t{\n\t\tname: \"2fa\",\n\t\thue: 120,\n\t\tdescription: \"User has two factor authentication enabled.\",\n\t},\n\t{\n\t\tname: \"expired\",\n\t\thue: 240,\n\t\tdescription: \"User's password has expired.\",\n\t},\n\t{\n\t\tname: \"inactive\",\n\t\thue: 60,\n\t\tdescription: \"User is inactive.\",\n\t},\n]\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-demo-json\",\n})\nexport class SmoothlyDisplayDemoJson {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t{[0, 1, 3, undefined].map(colapseDepth => [\n\t\t\t\t\t<div>collapseDepth={colapseDepth ?? \"undefined\"}</div>,\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<smoothly-display type=\"json\" value={json} collapseDepth={colapseDepth} />\n\t\t\t\t\t</div>,\n\t\t\t\t])}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n\nconst json = {\n\tname: \"stringy\",\n\tnested: {\n\t\tage: 109,\n\t\tarray: [\"one\", \"two\", \"three\", { name: \"four\" }],\n\t\temptyObject: {},\n\t\temptyArray: [],\n\t\ttruthy: true,\n\t\tfalsy: false,\n\t\tnull: null,\n\t\tnotDefined: undefined,\n\t\tlongString:\n\t\t\t\"pepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakorpepparkakor\",\n\t},\n}\n","import { FunctionalComponent, h } from \"@stencil/core\"\nimport { isly } from \"isly\"\n\nexport const JsonValue: FunctionalComponent<{ value: any; collapseDepth?: number }> = ({ value, collapseDepth }) => {\n\treturn isly.object().is(value) || Array.isArray(value) ? (\n\t\t<smoothly-display-json-object value={value} collapseDepth={collapseDepth} />\n\t) : (\n\t\t<smoothly-display-json-primitive value={value} />\n\t)\n}\n",":host {\n\tfont-family: monospace;\n}\n","import { Component, h, Prop, VNode } from \"@stencil/core\"\nimport { JsonValue } from \"./JsonValue\"\n\n@Component({\n\ttag: \"smoothly-display-json\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJson {\n\t@Prop() value: any\n\t@Prop() collapseDepth?: number\n\n\trender(): VNode {\n\t\treturn <JsonValue value={this.value} collapseDepth={this.collapseDepth} />\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tposition: relative;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n\n.indent {\n\tpadding-left: 1rem;\n\tborder-left: 1px solid rgba(var(--smoothly-default-contrast), 0.3);\n}\n:host(:not(.open)) .content {\n\t/* Hide content so it's still selectable and you can copy the full JSON */\n\topacity: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n:host>.content>.indent:last-child>.comma {\n\tdisplay: none;\n}\n:host .open-bracket {\n\tcursor: pointer;\n}\n:host .open-bracket::after {\n\tbackground-color: rgb(var(--smoothly-light-color));\n\tcolor: rgb(var(--smoothly-light-shade));\n\tborder: 1px solid rgb(var(--smoothly-light-color));\n\twhite-space: pre;\n\tborder-radius: 0.25rem;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n:host > .open-bracket:hover::after {\n\tcolor: rgb(var(--smoothly-default-contrast));\n\tborder-color: rgb(var(--smoothly-light-shade));\n}\n\n:host(:not(.open):not(.empty))>.open-bracket::after {\n\tcontent: \" ▶ \" attr(data-length) \" ◀ \";\n}\n:host(.open:not(.empty))>.open-bracket::after {\n\tcontent: \" ▼ \";\n}\n:host > .open-bracket:hover,\n:host > .open-bracket:hover~.close-bracket {\n\tfont-weight: bold;\n}\n:host > .open-bracket:hover+.content>.indent {\n\tborder-left-color: rgb(var(--smoothly-default-contrast));\n}\n","import { Component, ComponentWillLoad, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { JsonValue } from \"../JsonValue\"\n\n@Component({\n\ttag: \"smoothly-display-json-object\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonObject implements ComponentWillLoad {\n\t@Prop() value: Record<string, any> | any[]\n\t@Prop() collapseDepth?: number\n\t@State() open: boolean\n\t@State() empty: boolean\n\tprivate openBracket: string = \"\"\n\tprivate closeBracket: string = \"\"\n\tprivate length: number\n\n\tcomponentWillLoad() {\n\t\tthis.open = typeof this.collapseDepth == \"number\" ? this.collapseDepth > 0 : true\n\t\tif (Array.isArray(this.value)) {\n\t\t\tthis.openBracket = \"[\"\n\t\t\tthis.closeBracket = \"]\"\n\t\t\tthis.length = this.value.length\n\t\t} else {\n\t\t\tthis.openBracket = \"{\"\n\t\t\tthis.closeBracket = \"}\"\n\t\t\tthis.length = Object.keys(this.value).length\n\t\t}\n\t\tthis.empty = this.length == 0\n\t}\n\n\trender(): VNode {\n\t\tconst nextCollapseDepth = typeof this.collapseDepth == \"number\" ? Math.max(this.collapseDepth - 1, 0) : undefined\n\t\treturn (\n\t\t\t<Host class={{ empty: this.empty, open: this.open }}>\n\t\t\t\t<span class=\"open-bracket\" onClick={() => (this.open = !this.open)} data-length={this.length}>\n\t\t\t\t\t{this.openBracket}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"content\">\n\t\t\t\t\t{Array.isArray(this.value)\n\t\t\t\t\t\t? this.value.map(v => (\n\t\t\t\t\t\t\t\t<div class=\"indent\">\n\t\t\t\t\t\t\t\t\t<JsonValue value={v} collapseDepth={nextCollapseDepth} />\n\t\t\t\t\t\t\t\t\t<span class=\"comma\">,</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t: Object.entries(this.value).map(([k, v]) => (\n\t\t\t\t\t\t\t\t<div class=\"indent\">\n\t\t\t\t\t\t\t\t\t{<smoothly-display-json-record-key value={k} />}:{\" \"}\n\t\t\t\t\t\t\t\t\t{<JsonValue value={v} collapseDepth={nextCollapseDepth} />}\n\t\t\t\t\t\t\t\t\t<span class=\"comma\">,</span>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t))}\n\t\t\t\t</span>\n\t\t\t\t<span class=\"close-bracket\">{this.closeBracket}</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tdisplay: inline;\n\toverflow-wrap: anywhere;\n\twhite-space: pre-wrap;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host(.string) {\n\tfont-weight: var(--smoothly-display-json-string-font-weight, bold);\n\tcolor: rgb(var(--smoothly-display-json-string, var(--smoothly-primary-color)));\n}\n:host(.number) {\n\tfont-weight: var(--smoothly-display-json-number-font-weight, bold);\n\tcolor: rgb(var(--smoothly-display-json-number, var(--smoothly-secondary-color)));\n}\n:host(.boolean) {\n\tfont-weight: var(--smoothly-display-json-boolean-font-weight, bold);\n\tcolor: rgb(var(--smoothly-display-json-boolean, var(--smoothly-tertiary-color)));\n}\n:host(.null),\n:host(.undefined) {\n\tfont-weight: var(--smoothly-display-json-undefined-font-weight, normal);\n\tcolor: rgb(var(--smoothly-display-json-undefined, var(--smoothly-medium-color)));\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-json-primitive\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonPrimitive {\n\t@Prop() value: any\n\n\trender(): VNode {\n\t\treturn <Host class={this.value == null ? \"null\" : typeof this.value}>{\"\" + JSON.stringify(this.value)}</Host>\n\t}\n}\n",":host {\n\tfont-family: monospace;\n\tdisplay: inline;\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n:host[hidden] {\n\tdisplay: none;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-display-json-record-key\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyDisplayJsonRecordKey {\n\t@Prop() value: any\n\n\trender(): VNode {\n\t\treturn <Host>\"{this.value}\"</Host>\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 { Editable } from \".\"\n\nexport type Listener = (parent: Editable) => Promise<void>\n\nexport class Observer {\n\tprivate callbacks: Listener[] = []\n\tconstructor(private parent: Editable) {}\n\n\tasync subscribe(callback: Listener) {\n\t\tthis.callbacks.push(callback)\n\t\tawait callback(this.parent)\n\t}\n\n\tasync publish() {\n\t\tPromise.all(this.callbacks.map(callback => callback(this.parent)))\n\t}\n\n\tstatic create(parent: Editable) {\n\t\treturn new Observer(parent)\n\t}\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Listener as ObserverListener, Observer as EditableObserver } from \"./Observer\"\n\nexport interface Editable extends Editable.Element {\n\tisDifferentFromInitial: boolean\n\tvalue?: any\n\tsmoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n}\n\nexport namespace Editable {\n\texport const Observer = EditableObserver\n\texport namespace Observer {\n\t\texport type Listener = ObserverListener\n\t}\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\texport const is = type.is\n\t}\n\texport type Listen = (listener: Observer.Listener) => void\n\texport type Edit = (editable: boolean) => Promise<void>\n\texport type Reset = () => Promise<void>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Editable>({\n\t\tisDifferentFromInitial: isly.boolean(),\n\t\tvalue: isly.any().optional(),\n\t\tsmoothlyFormDisable: EventEmitter,\n\t})\n\texport const is = type.is\n}\n","import { isly } from \"isly\"\n\nexport type Looks = (typeof Looks.values)[number]\n\nexport namespace Looks {\n\texport const values = [\"plain\", \"grid\", \"border\", \"line\", \"transparent\"] as const\n\texport const type = isly.string(values)\n\texport const is = type.is\n}\n","import { EventEmitter } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Data } from \"../../model\"\nimport { SmoothlyForm } from \"../form\"\nimport { Editable } from \"./Editable\"\nimport { Key } from \"./Key\"\nimport { Looks } from \"./Looks\"\n\nexport interface Input extends Input.Element {\n\tsmoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\tsmoothlyInput: EventEmitter<Data> // Used for smoothly-form\n\tsmoothlyUserInput: EventEmitter<Input.UserInput>\n\tsmoothlyKeydown?: EventEmitter<Key>\n\tsmoothlyInputForm?: EventEmitter<Record<string, Data>>\n\tparent: Editable | undefined\n}\nexport namespace Input {\n\texport type UserInput<T = any> = { name: string; value: T }\n\texport interface Element {\n\t\tregister: () => Promise<void>\n\t\tunregister: () => Promise<void>\n\t\tgetValue: GetValue\n\t\tdisabled?: boolean\n\t\tcolor?: Color\n\t\tname: string\n\t\tinvalid?: boolean\n\t\tlooks?: Looks\n\t\tdefined?: boolean\n\t\tbinary?: Binary\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tregister: isly.function<() => Promise<void>>(),\n\t\t\tunregister: isly.function<() => Promise<void>>(),\n\t\t\tgetValue: isly.function<GetValue>(),\n\t\t\tdisabled: isly.boolean().optional(),\n\t\t\tcolor: Color.type.optional(),\n\t\t\tname: isly.string(),\n\t\t\tinvalid: isly.boolean().optional(),\n\t\t\tlooks: Looks.type.optional(),\n\t\t\tdefined: isly.boolean().optional(),\n\t\t\tbinary: isly.function<Binary>().optional(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport type GetValue = () => Promise<any>\n\texport type Binary = () => Promise<boolean>\n\tconst EventEmitter = isly.object<EventEmitter>({ emit: isly.function<EventEmitter[\"emit\"]>() })\n\texport const type = Element.type.extend<Input>({\n\t\tsmoothlyInputLoad: EventEmitter,\n\t\tsmoothlyInput: EventEmitter,\n\t\tsmoothlyUserInput: EventEmitter,\n\t\tsmoothlyKeydown: EventEmitter.optional(),\n\t\tsmoothlyInputForm: EventEmitter.optional(),\n\t\tparent: Editable.type.optional(),\n\t})\n\texport const is = type.is\n\n\texport function formRemove(self: Input, name?: string) {\n\t\tif (self.parent instanceof SmoothlyForm) {\n\t\t\tself.parent.removeInput(name ?? self.name)\n\t\t}\n\t}\n\texport function formAdd(self: Input) {\n\t\tself.smoothlyInputLoad.emit(parent => (self.parent = parent))\n\t}\n\texport function formRename(self: Input, oldName?: string) {\n\t\tif (oldName) {\n\t\t\tformRemove(self, oldName)\n\t\t}\n\t\tformAdd(self)\n\t}\n\n\t/* For adding clear, edit, reset that is inside input etc. - should be called on smoothlyInputLoad */\n\texport function registerSubAction(self: Input & Editable, event: CustomEvent<(parent: Editable) => void>) {\n\t\tif (!(event.target && \"name\" in event.target && event.target.name === self.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(self)\n\t\t}\n\t}\n}\n","smoothly-form {\n\tdisplay: block;\n\tposition: relative;\n}\nsmoothly-form > form {\n\tposition: relative;\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: min(100%, var(--smoothly-form-input-min-width, 14rem));\n\tflex-basis: 40%;\n}\n\nsmoothly-form[looks=\"line\"] > form > fieldset,\nsmoothly-form[looks=\"border\"] > form > fieldset,\nsmoothly-form[looks=\"transparent\"] > form > fieldset {\n\trow-gap: var(--smoothly-form-row-gap, 2rem);\n\tcolumn-gap: var(--smoothly-form-column-gap, 2rem);\n}\nsmoothly-form[looks=\"grid\"] > form > fieldset {\n\tpadding: 1px;\n\tgap: 1px;\n}\n\nsmoothly-form > form > div:not(:empty) {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: 1em;\n\tmargin-top: 1.5rem;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\n\tWatch,\n} from \"@stencil/core\"\nimport { http } from \"cloudly-http\"\nimport { isly } from \"isly\"\nimport { SmoothlyFormCustomEvent } from \"../../components\"\nimport { Key } from \"../../components/input/Key\"\nimport { Color, Data, Notice, Submit } 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 ComponentWillLoad, Clearable, Submittable, Editable {\n\t@Element() element: HTMLSmoothlyFormElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) value: Readonly<Data> = {}\n\t@Prop() action?: string\n\t@Prop() validator?: isly.Type<any>\n\t@Prop() type?: \"update\" | \"change\" | \"fetch\" | \"create\" = this.action ? \"create\" : undefined\n\t@Prop({ mutable: true }) readonly = false\n\t@Prop({ reflect: true, attribute: \"looks\" }) looks?: Looks\n\t@Prop({ reflect: true }) name?: string\n\t@Prop() prevent = true\n\t@Prop({ mutable: true }) processing?: Promise<boolean>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyFormInput: EventEmitter<Data>\n\t@Event() smoothlyFormSubmit: EventEmitter<Submit>\n\t@Event() smoothlyFormReset: EventEmitter<void>\n\t@Event() smoothlyFormEdit: EventEmitter<boolean>\n\t@Event() smoothlyFormClear: EventEmitter<void>\n\t@Event() notice: EventEmitter<Notice>\n\tisDifferentFromInitial = false\n\tprivate contentType: \"json\" | \"form-data\" = \"json\"\n\tprivate inputs = new Map<string, Input.Element>()\n\tprivate readonlyAtLoad = this.readonly\n\tprivate observer = Editable.Observer.create(this)\n\n\tcomponentWillLoad(): void {\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t}\n\t@Method()\n\tasync removeInput(name: string) {\n\t\tif (this.element.isConnected) {\n\t\t\tthis.value = Data.remove(this.value, name)\n\t\t\tthis.inputs.delete(name)\n\t\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t\t}\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Watch(\"value\")\n\tasync watchValue() {\n\t\tthis.isDifferentFromInitial = [...this.inputs.values()].some(input =>\n\t\t\tEditable.type.is(input) ? input.isDifferentFromInitial : true\n\t\t)\n\t\tif (this.validator) {\n\t\t\tconst flaws = this.validator\n\t\t\t\t?.flaw(Data.convertArrays(this.value))\n\t\t\t\t.flaws?.reduce((r: Record<string, isly.Flaw>, f) => (f.property ? { ...r, [f.property]: f } : r), {})\n\t\t\tfor (const [property, input] of this.inputs.entries()) {\n\t\t\t\tthis.validate(flaws, property, input)\n\t\t\t}\n\t\t}\n\t\tthis.observer.publish()\n\t}\n\tvalidate(flaws: Record<string, isly.Flaw> | undefined, property: string, input: Input.Element) {\n\t\tif (property.includes(\".\")) {\n\t\t\tconst [key, ...rest] = property.split(\".\")\n\t\t\tconst nestedFlaws = flaws?.[key]?.flaws ?? []\n\t\t\tthis.validate(\n\t\t\t\tnestedFlaws.reduce((r: Record<string, isly.Flaw>, f) => (f.property ? { ...r, [f.property]: f } : r), {}),\n\t\t\t\trest.join(\".\"),\n\t\t\t\tinput\n\t\t\t)\n\t\t} else {\n\t\t\tconst flaw = flaws?.[property]\n\t\t\tinput && (input.invalid = !!flaw)\n\t\t}\n\t}\n\t@Watch(\"readonly\")\n\twatchReadonly() {\n\t\tthis.observer.publish()\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks?: Looks, color?: Color) => 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.value = Data.merge(this.value, event.detail)\n\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t}\n\t@Listen(\"smoothlyKeydown\")\n\tasync smoothlyKeydownHandler(event: CustomEvent<Key>): Promise<void> {\n\t\tif (event.detail.key == \"Enter\" && this.inputs.has(event.detail.name)) {\n\t\t\tevent.stopPropagation()\n\t\t\tawait this.submit()\n\t\t}\n\t}\n\t@Listen(\"smoothlyFormSubmit\", { target: \"window\" })\n\twindowSubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tevent.target == this.element && event.detail.result(false)\n\t}\n\t@Listen(\"smoothlyFormSubmit\")\n\tsubmitHandler(event: SmoothlyFormCustomEvent<Submit>): void {\n\t\tthis.action && event.stopPropagation()\n\t}\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\tconst inputComponent = event.target\n\t\tif (Input.Element.is(inputComponent)) {\n\t\t\tif (await inputComponent.binary?.()) {\n\t\t\t\tthis.contentType = \"form-data\"\n\t\t\t}\n\t\t\tconst inputValue = await inputComponent.getValue() // Needs to await value separately to avoid race condition\n\t\t\tthis.value = Data.merge(this.value, { [inputComponent.name]: inputValue })\n\t\t\tthis.smoothlyFormInput.emit(Data.convertArrays(this.value))\n\t\t\tthis.inputs.set(inputComponent.name, inputComponent)\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.processing = new Promise(resolve => {\n\t\t\tthis.smoothlyFormSubmit.emit({\n\t\t\t\tvalue: Data.convertArrays(this.value),\n\t\t\t\tresult: resolve,\n\t\t\t\ttype: remove == true ? \"remove\" : this.type,\n\t\t\t})\n\t\t\tif (this.action) {\n\t\t\t\tconst action = this.action\n\t\t\t\tthis.notice.emit(\n\t\t\t\t\tNotice.execute(\"Submitting form\", async () => {\n\t\t\t\t\t\tconst method = remove\n\t\t\t\t\t\t\t? \"DELETE\"\n\t\t\t\t\t\t\t: !this.type || this.type == \"create\"\n\t\t\t\t\t\t\t\t? \"POST\"\n\t\t\t\t\t\t\t\t: this.type == \"change\"\n\t\t\t\t\t\t\t\t\t? \"PUT\"\n\t\t\t\t\t\t\t\t\t: this.type == \"update\"\n\t\t\t\t\t\t\t\t\t\t? \"PATCH\"\n\t\t\t\t\t\t\t\t\t\t: \"GET\"\n\t\t\t\t\t\tconst response = await http\n\t\t\t\t\t\t\t.fetch(\n\t\t\t\t\t\t\t\thttp.Request.create(\n\t\t\t\t\t\t\t\t\tmethod == \"GET\"\n\t\t\t\t\t\t\t\t\t\t? { method, url: `${action}?${http.Search.stringify(this.value)}` }\n\t\t\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\t\t\tmethod,\n\t\t\t\t\t\t\t\t\t\t\t\turl: action,\n\t\t\t\t\t\t\t\t\t\t\t\t...(this.value && {\n\t\t\t\t\t\t\t\t\t\t\t\t\theader: { contentType: this.contentType ? \"multipart/form-data\" : \"application/json\" },\n\t\t\t\t\t\t\t\t\t\t\t\t\tbody: this.value,\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)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t.catch(() => undefined)\n\t\t\t\t\t\tconst result =\n\t\t\t\t\t\t\t!response || response?.status < 200 || response.status >= 300\n\t\t\t\t\t\t\t\t? ([false, \"Failed to submit form.\"] as const)\n\t\t\t\t\t\t\t\t: ([true, \"Form successfully submitted.\"] as const)\n\t\t\t\t\t\tresolve(result[0])\n\t\t\t\t\t\treturn [...result]\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t})\n\t\tif (await this.processing) {\n\t\t\tthis.type == \"create\" && (await this.clear())\n\t\t\tawait this.setInitialValue()\n\t\t\tthis.readonlyAtLoad && (await this.edit(!this.readonlyAtLoad))\n\t\t}\n\t\tthis.processing = undefined\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tawait Promise.all([...this.inputs.values()].map(async input => Clearable.is(input) && input.clear()))\n\t\tthis.smoothlyFormClear.emit()\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.inputs.values()].map(async input => Editable.Element.type.is(input) && input.edit(editable))\n\t\t)\n\t\tthis.readonly = !editable\n\t\tthis.smoothlyFormEdit.emit(editable)\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tawait Promise.all([...this.inputs.values()].map(input => Editable.Element.type.is(input) && input.reset()))\n\t\tthis.isDifferentFromInitial = [...this.inputs.values()].some(input =>\n\t\t\tEditable.type.is(input) ? input.isDifferentFromInitial : true\n\t\t)\n\t\tthis.smoothlyFormReset.emit()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.inputs.values()].map(input => Editable.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 overlay hidden={!this.processing} />\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 />\n\t\t\t\t\t</fieldset>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name=\"clear\" />\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=\"delete\" />\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: flex;\n\tmargin-top: 2em;\n\tmargin-bottom: 10em;\n}\n\n:host>div {\n\tmargin: auto;\n\twidth: 1200px;\n\tmax-width: calc(100% - 0.5rem);\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemo {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-form-demo-all />\n\t\t\t\t\t<smoothly-form-demo-pet />\n\t\t\t\t\t<smoothly-form-demo-card />\n\t\t\t\t\t<smoothly-form-demo-login />\n\t\t\t\t\t<smoothly-form-demo-prices />\n\t\t\t\t\t<smoothly-form-demo-typed />\n\t\t\t\t\t<smoothly-form-demo-transparent />\n\t\t\t\t\t<smoothly-form-demo-date />\n\t\t\t\t\t<smoothly-form-demo-schedule />\n\t\t\t\t\t<smoothly-form-demo-date-range />\n\t\t\t\t\t<smoothly-form-demo-controlled />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-all\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoAll {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>All inputs</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\tonSmoothlyFormSubmit={e => {\n\t\t\t\t\t\tObject.entries(e.detail.value).forEach(([key, value]) => console.log(key, value))\n\t\t\t\t\t}}>\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 showLabel={false} 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</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</smoothly-input>\n\t\t\t\t\t<smoothly-input-radio clearable name=\"radioFirstInput\">\n\t\t\t\t\t\t<label slot=\"label\">Clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected 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 value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-color name=\"color\">Color</smoothly-input-color>\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={20} label=\"Range\" />\n\t\t\t\t\t<smoothly-input name=\"pets.0.name\">First Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.0.age\" max={100} step={1} label=\"First Pet's Age\" />\n\t\t\t\t\t<smoothly-input name=\"pets.1.name\">Second Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.1.age\" max={100} step={1} label=\"Second Pet's Age\" />\n\t\t\t\t\t<smoothly-input name=\"pets.2.name\">Third Pet's Name</smoothly-input>\n\t\t\t\t\t<smoothly-input-range name=\"pets.2.age\" max={100} step={1} label=\"Third Pet's Age\" />\n\t\t\t\t\t<smoothly-input-file name={\"profile\"} placeholder={\"Click or drag your profile picture here...\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Profile</span>\n\t\t\t\t\t\t<smoothly-icon slot={\"button\"} name={\"person-circle-outline\"} size={\"tiny\"} fill={\"default\"} />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<smoothly-input type=\"duration\" name=\"duration\" value={{}}>\n\t\t\t\t\t\tDuration\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-clear fill=\"default\" type=\"form\" color=\"warning\" slot=\"clear\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-edit fill=\"default\" type=\"form\" 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=\"delete\" color=\"danger\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t\t<smoothly-input-submit fill=\"default\" color=\"success\" slot=\"submit\" size=\"icon\" shape=\"rounded\" />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-card\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoCard {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Card</h2>\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-input-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\" />\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</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, State, VNode, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { SmoothlyFormCustomEvent } from \"../../../../components\"\nimport { Data } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-controlled\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoControlled {\n\t@State() name = \"Initial name\"\n\t@State() currency: isoly.Currency = \"EUR\"\n\t@State() date: isoly.Date = isoly.Date.now()\n\tprivate currencies: isoly.Currency[] = [\"GBP\", \"SEK\", \"EUR\", \"USD\"]\n\n\t@Watch(\"name\")\n\tnameChanged(current: string, previous: string): void {\n\t\tconsole.log(`updated name from '${previous}' to '${current}'`)\n\t}\n\n\tasync submitHandler(\n\t\tevent: SmoothlyFormCustomEvent<{ result: (result: boolean) => void; value: Data }>\n\t): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tconsole.log(\"Received event. Processing...\", event.detail)\n\t\tif (!(typeof event.detail.value.name == \"string\")) {\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\t} else if (!(typeof event.detail.value.date == \"string\")) {\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\t} else if (!isoly.Currency.is(event.detail.value.currency)) {\n\t\t\tconsole.error(\"Bad input. Resolving false.\")\n\t\t} else {\n\t\t\tawait new Promise(resolve => window.setTimeout(resolve, 1_000))\n\t\t\tthis.name = event.detail.value.name\n\t\t\tthis.date = event.detail.value.date\n\t\t\tthis.currency = event.detail.value.currency\n\t\t\tconsole.log(\"Finished processing successfully. Resolving true.\")\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Controlled</h2>\n\t\t\t\t<smoothly-form readonly looks={\"grid\"} onSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input type={\"text\"} name={\"name\"} value={this.name}>\n\t\t\t\t\t\tName\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name={\"currency\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Currency</span>\n\t\t\t\t\t\t{this.currencies.map(currency => (\n\t\t\t\t\t\t\t<smoothly-item selected={currency == this.currency} value={currency}>\n\t\t\t\t\t\t\t\t{currency}\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input>Dummy</smoothly-input>\n\t\t\t\t\t<smoothly-input-month name={\"date\"} value={this.date} next previous>\n\t\t\t\t\t\t<span slot={\"year-label\"}>Year</span>\n\t\t\t\t\t\t<span slot={\"month-label\"}>Month</span>\n\t\t\t\t\t</smoothly-input-month>\n\t\t\t\t\t<smoothly-input-edit slot={\"edit\"} size={\"icon\"} color={\"primary\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} size={\"icon\"} color={\"warning\"} fill={\"default\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, Event, EventEmitter, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { isly } from \"isly\"\nimport { Notice, Submit } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoDate {\n\t@Event() notice: EventEmitter<Notice>\n\tprivate validator = isly.object<{ date: isoly.Date }>({\n\t\tdate: isly.fromIs(\"isoly.Date\", isoly.Date.is),\n\t})\n\tasync submitHandler(event: CustomEvent<Submit>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tif (!this.validator.is(event.detail.value)) {\n\t\t\tconsole.error(`Type is incomplete.`)\n\t\t\tthis.notice.emit(Notice.failed(`Type is incomplete.`))\n\t\t} else {\n\t\t\tthis.notice.emit(Notice.succeeded(`Type is complete!`))\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Date input</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks={\"border\"}\n\t\t\t\t\ttype={\"create\"}\n\t\t\t\t\tvalidator={this.validator}\n\t\t\t\t\tonSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input-date name={\"date\"}>{\"Date\"}</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"}>\n\t\t\t\t\t\t<smoothly-icon name={\"checkmark-outline\"} />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, Event, EventEmitter, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { isly } from \"isly\"\nimport { Notice, Submit } from \"../../../../model\"\n\n@Component({\n\ttag: \"smoothly-form-demo-date-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoDateRange {\n\t@Event() notice: EventEmitter<Notice>\n\tprivate validator = isly.object<{ range: isoly.DateRange }>({\n\t\trange: isly.fromIs(\"isoly.DateRange\", isoly.DateRange.is),\n\t})\n\tasync submitHandler(event: CustomEvent<Submit>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tif (!this.validator.is(event.detail.value)) {\n\t\t\tconsole.error(`Type is incomplete.`)\n\t\t\tthis.notice.emit(Notice.failed(`Type is incomplete.`))\n\t\t} else {\n\t\t\tthis.notice.emit(Notice.succeeded(`Type is complete!`))\n\t\t\tevent.detail.result(true)\n\t\t}\n\t\tevent.detail.result(false)\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Date-range input</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks={\"border\"}\n\t\t\t\t\ttype={\"create\"}\n\t\t\t\t\tvalidator={this.validator}\n\t\t\t\t\tonSmoothlyFormSubmit={e => this.submitHandler(e)}>\n\t\t\t\t\t<smoothly-input-date-range name={\"range\"}>{\"Range\"}</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"}>\n\t\t\t\t\t\t<smoothly-icon name={\"checkmark-outline\"} />\n\t\t\t\t\t</smoothly-input-submit>\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-login\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoLogin {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Login</h2>\n\t\t\t\t<smoothly-form looks=\"border\">\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"username\">\n\t\t\t\t\t\tUsername\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-reset slot=\"reset\" type=\"form\" size=\"icon\" color=\"warning\" />\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\" />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","\n:host {\n\tdisplay: grid;\n\tgrid-template-columns: 2fr 1fr;\n\tgrid-template-rows: auto auto;\n\tgrid-column-gap: 2rem;\n}\n\n:host smoothly-input-checkbox[name=\"hasOwner\"],\n:host > smoothly-form smoothly-tabs {\n\tflex-basis: 100%;\n}\n","import { Component, Fragment, h, Host, State, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { RGB } from \"../../../../model/Color/RGB\"\n\n@Component({\n\ttag: \"smoothly-form-demo-pet\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoPet {\n\t@State() hasOwner = false\n\t@State() owner: {\n\t\tfirstName?: string\n\t\tlastName?: string\n\t\tbirthday?: string\n\t\townedRange?: Partial<isoly.DateRange>\n\t\theight?: number\n\t\tfavoriteHat?: string\n\t\tfavoriteColor?: RGB\n\t\tfavoritePizza?: string\n\t\thasPet?: boolean\n\t} = {}\n\t@State() value: any\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Pet</h2>\n\t\t\t\t<h3>Value</h3>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tonSmoothlyFormSubmit={(e: CustomEvent) => alert(JSON.stringify(e.detail))}\n\t\t\t\t\tonSmoothlyFormInput={e => (this.value = { ...e.detail })}>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" value=\"Johnny\">\n\t\t\t\t\t\tName\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"integer\" name=\"age\">\n\t\t\t\t\t\tAge (Years)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\tname=\"hasOwner\"\n\t\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInput={e => {\n\t\t\t\t\t\t\tthis.hasOwner = e.detail.hasOwner as boolean\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tHas Owner\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t{this.hasOwner && (\n\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"owner.firstName\"\n\t\t\t\t\t\t\t\tvalue={this.owner.firstName}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, firstName: e.detail[\"owner.firstName\"] })}>\n\t\t\t\t\t\t\t\tOwner First Name\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\tname=\"owner.lastName\"\n\t\t\t\t\t\t\t\tvalue={this.owner.lastName}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, lastName: e.detail[\"owner.lastName\"] })}>\n\t\t\t\t\t\t\t\tOwner Last Name\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"owner.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner picture</span>\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date\n\t\t\t\t\t\t\t\tname=\"owner.birthday\"\n\t\t\t\t\t\t\t\tvalue={this.owner.birthday}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, birthday: e.detail[\"owner.birthday\"] })}>\n\t\t\t\t\t\t\t\tOwner birthday\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\t\t\tname=\"owner.ownedRange\"\n\t\t\t\t\t\t\t\tstart={this.owner.ownedRange?.start}\n\t\t\t\t\t\t\t\tend={this.owner.ownedRange?.end}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, ownedRange: e.detail[\"owner.ownedRange\"] })}>\n\t\t\t\t\t\t\t\tOwner ownedRange\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tname=\"owner.height\"\n\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\tmax={250}\n\t\t\t\t\t\t\t\tvalue={this.owner.height}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, height: e.detail[\"owner.height\"] })}>\n\t\t\t\t\t\t\t\tOwner's Height\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"owner.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index} selected={this.owner.favoriteHat == value}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-color\n\t\t\t\t\t\t\t\tname=\"owner.favoriteColor\"\n\t\t\t\t\t\t\t\tvalue={this.owner.favoriteColor ? RGB.toHex(this.owner.favoriteColor) : undefined}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, favoriteColor: e.detail[\"owner.favoriteColor\"] })}>\n\t\t\t\t\t\t\t\tOwner's Favorite Color\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio\n\t\t\t\t\t\t\t\tname=\"owner.favoritePizza\"\n\t\t\t\t\t\t\t\tvalue={this.owner.favoritePizza}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e =>\n\t\t\t\t\t\t\t\t\t(this.owner = { ...this.owner, favoritePizza: e.detail[\"owner.favoritePizza\"] as string })\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t<span slot=\"label\">Owner's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\t\t\tname=\"owner.hasPet\"\n\t\t\t\t\t\t\t\tchecked={this.owner.hasPet}\n\t\t\t\t\t\t\t\tonSmoothlyInput={e => (this.owner = { ...this.owner, hasPet: e.detail[\"owner.hasPet\"] as boolean })}>\n\t\t\t\t\t\t\t\tHas Pet\n\t\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t)}\n\t\t\t\t\t<smoothly-tabs>\n\t\t\t\t\t\t<smoothly-tab label=\"Dog\" name=\"dog\">\n\t\t\t\t\t\t\t<smoothly-input type={\"text\"} name=\"dog.breed\">\n\t\t\t\t\t\t\t\tBreed\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"dog.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog picture</span>\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date-time name=\"dog.lastWalk\">Time of last walk</smoothly-input-date-time>\n\t\t\t\t\t\t\t<smoothly-input-date name=\"dog.birthday\">Dog birthday</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range name=\"dog.dateRange\">Dog date range</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"dog.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-color name=\"dog.favoriteColor\">Dog's Favorite Color</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio name=\"dog.favoritePizza\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Dog's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox name=\"dog.hasPet\">Has Pet</smoothly-input-checkbox>\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t<smoothly-tab label=\"Cat\" name=\"cat\" open>\n\t\t\t\t\t\t\t<smoothly-input name={\"cat.favoriteFood\"}>Favorite Food</smoothly-input>\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t<smoothly-tab label=\"Parrot\" name=\"parrot\">\n\t\t\t\t\t\t\t<smoothly-input type=\"price\" name=\"parrot.price\" currency=\"EUR\">\n\t\t\t\t\t\t\t\tSummary Price\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t\t<smoothly-input-file name=\"parrot.picture\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary picture</span>\n\t\t\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t\t\t<smoothly-input-date name=\"parrot.birthday\">Summary birthday</smoothly-input-date>\n\t\t\t\t\t\t\t<smoothly-input-date-range name=\"parrot.ownedRange\" start=\"2020-01-01\" end=\"2020-01-15\">\n\t\t\t\t\t\t\t\tSummary ownedRange\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t\t\t<smoothly-input-range name=\"parrot.height\" label={\"Height\"}>\n\t\t\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"parrot.favoriteHat\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary's Favorite Hat</span>\n\t\t\t\t\t\t\t\t{[\"🎩 top hat\", \"🧢 cap\", \"👒 sun hat\", \"❌ none\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-month name=\"parrot.month\">\n\t\t\t\t\t\t\t\t<span slot={\"month-label\"}>Summary month</span>\n\t\t\t\t\t\t\t</smoothly-input-month>\n\t\t\t\t\t\t\t<smoothly-input-color name=\"parrot.color\">Summary Color</smoothly-input-color>\n\t\t\t\t\t\t\t<smoothly-input-radio name=\"parrot.favoritePizza\">\n\t\t\t\t\t\t\t\t<span slot=\"label\">Summary's Favorite Pizza</span>\n\t\t\t\t\t\t\t\t{[\"vesuvio\", \"capricciosa\", \"quattro formaggi\"].map((value, index) => (\n\t\t\t\t\t\t\t\t\t<smoothly-input-radio-item value={value} key={index}>\n\t\t\t\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t\t\t<smoothly-input-checkbox name=\"parrot.hasPet\">Has Pet</smoothly-input-checkbox>\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t</smoothly-tabs>\n\t\t\t\t\t<smoothly-input-submit size=\"icon\" slot=\"submit\" color=\"success\" fill=\"solid\" />\n\t\t\t\t</smoothly-form>\n\t\t\t\t<smoothly-display type=\"json\" value={this.value} />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-prices\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoPrices {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Prices</h2>\n\t\t\t\t<smoothly-form looks=\"line\">\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\" toInteger>\n\t\t\t\t\t\tSEK (toInteger)\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-reset slot=\"reset\" fill=\"default\" type=\"form\" color=\"warning\" />\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\" />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { isly } from \"isly\"\n\ntype ScheduledEvent = {\n\tdate: isoly.Date\n\tamount: number\n}\nnamespace ScheduledEvent {\n\texport const type = isly.object<ScheduledEvent>({\n\t\tdate: isly.fromIs(\"isoly.Date\", isoly.Date.is),\n\t\tamount: isly.number(),\n\t})\n}\n\ntype TimeTable = { schedule: ScheduledEvent[] }\nnamespace TimeTable {\n\texport const type = isly.object<TimeTable>({ schedule: ScheduledEvent.type.array() })\n}\n\n// This demo demonstrate that the form can handle arrays in the validator\n@Component({\n\ttag: \"smoothly-form-demo-schedule\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoPrices {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Schedule</h2>\n\t\t\t\t<smoothly-form looks=\"line\" validator={TimeTable.type}>\n\t\t\t\t\t<smoothly-input-date name=\"schedule.0.date\">Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input name=\"schedule.0.amount\" type=\"price\">\n\t\t\t\t\t\tAmount\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-date name=\"schedule.1.date\">Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input name=\"schedule.1.amount\" type=\"price\">\n\t\t\t\t\t\tAmount\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-date name=\"schedule.2.date\">Date</smoothly-input-date>\n\t\t\t\t\t<smoothly-input name=\"schedule.2.amount\" type=\"price\">\n\t\t\t\t\t\tAmount\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-reset slot=\"reset\" fill=\"default\" type=\"form\" color=\"warning\" />\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\" />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-form-demo-transparent\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoTransparent {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Transparent</h2>\n\t\t\t\t<smoothly-form looks={\"transparent\"} onSmoothlyFormSubmit={e => console.log(e.detail.value)}>\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-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\t<smoothly-input-submit icon={\"checkbox-outline\"} />\n\t\t\t\t</smoothly-form>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isoly } from \"isoly\"\nimport { isly } from \"isly\"\n\nexport interface Contact {\n\tname: { first: string; middle?: string; last: string }\n\tage: number\n\tcountry: isoly.CountryCode.Alpha2\n\tbirthday: isoly.Date\n}\nexport namespace Contact {\n\texport const type = isly.object<Contact>({\n\t\tname: isly.object<Contact[\"name\"]>({ first: isly.string(), middle: isly.string().optional(), last: isly.string() }),\n\t\tage: isly.number(age => 18 <= age && age <= 120),\n\t\tcountry: isly.fromIs(\"CountryCode\", isoly.CountryCode.Alpha2.is),\n\t\tbirthday: isly.fromIs(\"Date\", isoly.Date.is),\n\t})\n}\n","\n","import { Component, h, Host, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Contact } from \"./Contact\"\n\n@Component({\n\ttag: \"smoothly-form-demo-typed\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyFormDemoTyped {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Typed Contact</h2>\n\t\t\t\t<smoothly-form validator={Contact.type}>\n\t\t\t\t\t<smoothly-input name=\"name.first\">First Name</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"name.middle\">Middle Name (optional)</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"name.last\">Last Name</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"age\" type=\"integer\">\n\t\t\t\t\t\tAge (18-120)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name=\"country\">\n\t\t\t\t\t\t<span slot=\"label\">Country</span>\n\t\t\t\t\t\t{isoly.CountryCode.Alpha2.values.map(country => (\n\t\t\t\t\t\t\t<smoothly-item value={country}>{isoly.CountryCode.Name.en.from(country)}</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-date name=\"birthday\">Date of birth</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-reset slot={\"reset\"} type={\"form\"} size={\"icon\"} color={\"warning\"} />\n\t\t\t\t\t<smoothly-input-submit slot={\"submit\"} size={\"icon\"} color={\"success\"} />\n\t\t\t\t</smoothly-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({ reflect: true }) 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\t} else {\n\t\t\t\t\t\t\tthis.message2.emit({ destination, content })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\twindow\n\t\t\t)\n\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\t} else 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\t}\n\t}\n\n\trender() {\n\t\treturn []\n\t}\n}\n",":host[fill] {\n\tbackground: none;\n}\n:host {\n\tdisplay: flex;\n\tflex-shrink: 0;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-sizing: content-box;\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\t--smoothly-icon-size: 1.2rem;\n}\n:host[size=small] {\n\t--smoothly-icon-size: 1.4rem;\n}\n:host[size=medium] {\n\t--smoothly-icon-size: 1.8rem;\n}\n:host[size=large] {\n\t--smoothly-icon-size: 2.8rem;\n}\n:host[size=xlarge] {\n\t--smoothly-icon-size: 4rem;\n}\n:host {\n\twidth: var(--smoothly-icon-size, 1.8rem);\n\theight: var(--smoothly-icon-size, 1.8rem);\n}\n:host::slotted(svg) {\n\t/* this is needed for svg to work on safari */\n\twidth: 100%;\n}\n","import { Component, Element, 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@Element() element: HTMLElement\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\" | \"xlarge\"\n\t@Prop({ reflect: true }) rotate?: number\n\t@Prop({ reflect: true }) flip?: \"x\" | \"y\"\n\t@Prop() tooltip?: string\n\t@State() latestPromise: Promise<string | undefined>\n\n\tasync componentWillLoad() {\n\t\tawait this.nameChanged()\n\t}\n\t@Watch(\"tooltip\")\n\t@Watch(\"name\")\n\tasync nameChanged() {\n\t\tif (this.name == \"empty\") {\n\t\t\tthis.updateSvg()\n\t\t\treturn\n\t\t}\n\n\t\tconst promise = (this.latestPromise = Icon.load(this.name))\n\t\tconst result = await promise\n\t\tif (promise != this.latestPromise) {\n\t\t\treturn\n\t\t}\n\n\t\tif (result) {\n\t\t\tconst svgElement = this.sanitizeSvg(result)\n\t\t\tthis.updateSvg(svgElement)\n\t\t}\n\t}\n\n\tprivate sanitizeSvg(svg: string): SVGElement | undefined {\n\t\tconst parser = new DOMParser()\n\t\tconst document = parser.parseFromString(svg, \"image/svg+xml\")\n\t\tconst svgElement = document.querySelector(\"svg\")\n\n\t\tif (svgElement) {\n\t\t\tsvgElement.setAttribute(\"role\", \"img\")\n\t\t\tsvgElement.removeAttribute(\"width\")\n\t\t\tsvgElement.removeAttribute(\"height\")\n\t\t}\n\t\treturn svgElement ?? undefined\n\t}\n\tupdateSvg(svg?: SVGElement) {\n\t\tsvg\n\t\t\t? this.element.replaceChildren(svg)\n\t\t\t: (this.element.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 512 512\">\n\t\t\t\t\t<title>Empty</title>\n\t\t\t\t</svg>`)\n\t}\n\n\trender() {\n\t\treturn <Host title={this.tooltip} style={{ [\"--rotation\"]: `${this.rotate ?? 0}deg` }} />\n\t}\n}\n",":host {\n\tdisplay: block;\n\twidth: clamp(200px, 100%, 1200px);\n\tmargin: auto;\n}\n:host([hidden]) {\n\tdisplay: none;\n}\n:host > div {\n\tdisplay: flex;\n\tflex-flow: row wrap;\n}\n\n:host > div > smoothly-icon {\n\tpadding: 1rem;\n\tposition: relative;\n}\n\n:host > div > smoothly-icon:hover {\n\tscale: 1.5;\n}\n\n:host > div > smoothly-icon:hover::after {\n\tcontent: attr(data-name);\n\tposition: absolute;\n\twhite-space: nowrap;\n\tbottom: 100%;\n\tbackground: rgb(var(--smoothly-default-contrast));\n\tcolor: rgb(var(--smoothly-default-color));\n\tpadding: 0.25rem 1rem;\n\tz-index: 1;\n\tpointer-events: none;\n}\n","import { Component, Event, EventEmitter, Fragment, h, Host, State } from \"@stencil/core\"\nimport { Color, Fill, Icon, Notice } from \"../../../model\"\n@Component({\n\ttag: \"smoothly-icon-demo\",\n\tstyleUrl: \"./style.css\",\n\tscoped: true,\n})\nexport class SmoothlyIconDemo {\n\tpage = 0\n\n\t@State() display: { filter?: string; variant?: \"outline\" | \"sharp\" } = {}\n\t@State() props: {\n\t\tcolor?: Color\n\t\tcustomColor?: string\n\t\tcustomBackground?: string\n\t\tfill?: Fill\n\t\tflip?: \"x\" | \"y\"\n\t\tsize?: \"tiny\" | \"small\" | \"medium\" | \"large\" | \"xlarge\"\n\t\trotate?: number\n\t} = {}\n\t@Event() notice: EventEmitter<Notice>\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Filter and Variants</h2>\n\t\t\t\t<smoothly-form looks=\"grid\" onSmoothlyFormInput={e => (this.display = e.detail)}>\n\t\t\t\t\t<smoothly-input name=\"filter\">Filter</smoothly-input>\n\t\t\t\t\t<smoothly-input-select name=\"variant\">\n\t\t\t\t\t\t<span slot=\"label\">Variant</span>\n\t\t\t\t\t\t<smoothly-item value={\"outline\"}>outline</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"sharp\"}>sharp</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h2>Props</h2>\n\t\t\t\t<smoothly-form\n\t\t\t\t\tlooks=\"grid\"\n\t\t\t\t\tonSmoothlyFormInput={e => {\n\t\t\t\t\t\tthis.props = e.detail\n\t\t\t\t\t\tconsole.log(\"props\", this.props)\n\t\t\t\t\t}}>\n\t\t\t\t\t<smoothly-input-select name={\"color\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Color</span>\n\t\t\t\t\t\t{Color.values.map(color => (\n\t\t\t\t\t\t\t<smoothly-item value={color}>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\tbackground: `rgb(var(--smoothly-${color}-color))`,\n\t\t\t\t\t\t\t\t\t\t\"margin-right\": \"0.5rem\",\n\t\t\t\t\t\t\t\t\t\twidth: \"2.5rem\",\n\t\t\t\t\t\t\t\t\t\theight: \"2.5rem\",\n\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\t<span>{color}</span>\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name={\"fill\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Fill</span>\n\t\t\t\t\t\t{Fill.values.map(fill => (\n\t\t\t\t\t\t\t<smoothly-item value={fill}>{fill}</smoothly-item>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"customColor\" menuHeight=\"12items\" ordered>\n\t\t\t\t\t\t<span slot={\"label\"}>Custom Color</span>\n\t\t\t\t\t\t{Color.values.flatMap(c => (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{[\"tint\", \"color\", \"shade\", \"contrast\"].map(v => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={`--smoothly-${c}-${v}`}>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\tbackground: `rgb(var(--smoothly-${c}-${v}))`,\n\t\t\t\t\t\t\t\t\t\t\t\t\"margin-right\": \"0.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"2.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"2.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>{`rgb(var(--smoothly-${c}-${v}))`}</span>\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"customBackground\" menuHeight=\"12items\" ordered>\n\t\t\t\t\t\t<span slot={\"label\"}>Custom Background</span>\n\t\t\t\t\t\t{Color.values.flatMap(c => (\n\t\t\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t\t\t{[\"tint\", \"color\", \"shade\", \"contrast\"].map(v => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={`--smoothly-${c}-${v}`}>\n\t\t\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\t\t\t\t\tbackground: `rgb(var(--smoothly-${c}-${v}))`,\n\t\t\t\t\t\t\t\t\t\t\t\t\"margin-right\": \"0.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t\twidth: \"2.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t\theight: \"2.5rem\",\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t<span>{`rgb(var(--smoothly-${c}-${v}))`}</span>\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</Fragment>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name=\"flip\">\n\t\t\t\t\t\t<span slot={\"label\"}>Flip</span>\n\t\t\t\t\t\t<smoothly-item value={\"x\"}>x</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"y\"}>y</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-select name={\"size\"}>\n\t\t\t\t\t\t<span slot={\"label\"}>Size</span>\n\t\t\t\t\t\t<smoothly-item value={\"tiny\"}>tiny</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"small\"}>small</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"medium\"}>medium</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"large\"}>large</smoothly-item>\n\t\t\t\t\t\t<smoothly-item value={\"xlarge\"}>xlarge</smoothly-item>\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<smoothly-input-range name=\"rotate\" step={1} min={-180} max={180} value={0}>\n\t\t\t\t\t\tRotate\n\t\t\t\t\t\t<smoothly-input-clear slot={\"end\"} />\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t</smoothly-form>\n\t\t\t\t<h1>Icons</h1>\n\t\t\t\t<div class=\"icons\">\n\t\t\t\t\t{[\n\t\t\t\t\t\t...Icon.Name.values\n\t\t\t\t\t\t\t.filter(name => !this.display.filter || name.includes(this.display.filter))\n\t\t\t\t\t\t\t.map((name): Icon => (this.display.variant ? `${name}-${this.display.variant}` : name)),\n\t\t\t\t\t\t...Icon.Logo.values.filter(name => !this.display.filter || name.includes(this.display.filter)),\n\t\t\t\t\t].map(name => (\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tname={name}\n\t\t\t\t\t\t\ttooltip={name}\n\t\t\t\t\t\t\tdata-name={name}\n\t\t\t\t\t\t\tcolor={this.props.color}\n\t\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\t\tfill: this.props[\"customColor\"] ? `rgb(var(${this.props[\"customColor\"]}))` : \"\",\n\t\t\t\t\t\t\t\tcolor: this.props[\"customColor\"] ? `rgb(var(${this.props[\"customColor\"]}))` : \"\",\n\t\t\t\t\t\t\t\tbackground: this.props[\"customBackground\"] ? `rgb(var(${this.props[\"customBackground\"]}))` : \"\",\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tfill={this.props.fill}\n\t\t\t\t\t\t\tflip={this.props.flip}\n\t\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t\t\trotate={this.props.rotate}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tnavigator.clipboard.writeText(name)\n\t\t\t\t\t\t\t\tthis.notice.emit(Notice.succeeded(`Copied \"${name}\"`))\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export namespace Deep {\n\texport function equal(a: any, b: any): boolean {\n\t\tif (a === b) {\n\t\t\treturn true\n\t\t}\n\t\tif (typeof a == \"object\" && typeof b == \"object\") {\n\t\t\tconst keys = Object.keys(a)\n\t\t\tif (keys.length == Object.keys(b).length && keys.every(key => equal(a[key], b[key]))) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\texport function notEqual(a: any, b: any): boolean {\n\t\treturn !equal(a, b)\n\t}\n}\n","export namespace Adjacent {\n\texport function getWordBreakIndex(str: string, index: number, direction: \"backward\" | \"forward\"): number {\n\t\tconst wordRegex = /([^.-@\\s]+)/gi\n\t\treturn direction == \"backward\"\n\t\t\t? getBackwardWordBreakIndex(str, index, wordRegex)\n\t\t\t: getForwardWordBreakIndex(str, index, wordRegex)\n\t}\n\n\tfunction getBackwardWordBreakIndex(str: string, index: number, wordRegex: RegExp): number {\n\t\tlet result = 0\n\t\tlet execArray: RegExpExecArray | null\n\t\twhile ((execArray = wordRegex.exec(str)) != null) {\n\t\t\tif (wordRegex.lastIndex - execArray[0].length < index) {\n\t\t\t\tresult = wordRegex.lastIndex - execArray[0].length\n\t\t\t} else {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn result\n\t}\n\n\tfunction getForwardWordBreakIndex(str: string, index: number, wordRegex: RegExp): number {\n\t\tlet result = 0\n\t\twhile (wordRegex.exec(str) != null) {\n\t\t\tresult = wordRegex.lastIndex\n\t\t\tif (wordRegex.lastIndex > index) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\twordRegex.lastIndex <= index && (result = str.length)\n\t\treturn result\n\t}\n}\n","import { isoly } from \"isoly\"\nimport { tidily } from \"tidily\"\nimport { Adjacent } from \"./Adjacent\"\n\ntype Formatter = tidily.Formatter & tidily.Converter<any>\ntype Handler<E extends Event> = (event: E, unformatted: tidily.State, formatted: tidily.State) => tidily.State\n\nexport class InputStateHandler {\n\tconstructor(\n\t\tprivate formatter: Formatter,\n\t\tprivate type: tidily.Type\n\t) {}\n\tstatic create(type: \"price\", priceOptions: { currency?: isoly.Currency; toInteger?: boolean }): InputStateHandler\n\tstatic create(type: \"integer\", integerOptions: { min?: number; max?: number; pad?: number }): InputStateHandler\n\tstatic create(type: tidily.Type, locale?: isoly.Locale): InputStateHandler\n\tstatic create(type: tidily.Type, extra?: any): InputStateHandler {\n\t\tlet result: (tidily.Formatter & tidily.Converter<any>) | undefined\n\t\tswitch (type) {\n\t\t\tcase \"price\":\n\t\t\t\tresult = tidily.get(\"price\", extra)\n\t\t\t\tbreak\n\t\t\tcase \"integer\":\n\t\t\t\tresult = tidily.get(\"integer\", extra)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tresult = tidily.get(type, extra)\n\t\t\t\tbreak\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\treturn new InputStateHandler(result || tidily.get(\"text\")!, type)\n\t}\n\n\tpublic onKeyDown(\n\t\tevent: KeyboardEvent,\n\t\tstate: Readonly<tidily.State> & tidily.Settings\n\t): Readonly<tidily.State> & tidily.Settings {\n\t\tlet result: Readonly<tidily.State> & tidily.Settings = state\n\t\tconst handler = this.keydownHandlers[event.key]\n\t\tif (handler) {\n\t\t\tconst input = event.target as HTMLInputElement\n\t\t\tstate.selection.start = input.selectionStart ?? state.selection.start\n\t\t\tstate.selection.end = input.selectionEnd ?? state.selection.end\n\t\t\tstate.selection.direction = input.selectionDirection ?? state.selection.direction\n\t\t\tconst unformatted = handler(event, this.unformatState(state), state)\n\t\t\tconst formatted = this.partialFormatState(unformatted)\n\t\t\tif (event.defaultPrevented) {\n\t\t\t\tinput.selectionStart = formatted.selection.start\n\t\t\t\tinput.selectionEnd = formatted.selection.end\n\t\t\t\tinput.selectionDirection = formatted.selection.direction ?? null\n\t\t\t}\n\t\t\tresult = formatted\n\t\t}\n\t\treturn result\n\t}\n\tkeydownHandlers: { [key: string]: Handler<KeyboardEvent> | undefined } = {\n\t\tArrowLeft: (event, state) => (event.ctrlKey || event.metaKey ? state : this.moveCursor(event, state)),\n\t\tArrowRight: (event, state) => (event.ctrlKey || event.metaKey ? state : this.moveCursor(event, state)),\n\t}\n\n\tmoveCursor(event: KeyboardEvent, state: tidily.State): tidily.State {\n\t\tevent.preventDefault()\n\t\tlet cursor = tidily.Selection.getCursor(state.selection)\n\t\tlet stalk = tidily.Selection.getStalker(state.selection)\n\t\tcursor = Math.min(Math.max(cursor + (event.key == \"ArrowLeft\" ? -1 : 1), 0), state.value.length)\n\t\tstalk = event.shiftKey ? stalk : cursor\n\t\tstate.selection.direction = stalk < cursor ? \"forward\" : stalk > cursor ? \"backward\" : \"none\"\n\t\tstate.selection.start = Math.min(stalk, cursor)\n\t\tstate.selection.end = Math.max(stalk, cursor)\n\t\treturn state\n\t}\n\n\tpublic onFocus(event: FocusEvent, state: tidily.State) {\n\t\tconst result = this.partialFormatState(this.unformatState(state))\n\t\tconst input = event.target as HTMLInputElement\n\t\tinput.value = result.value\n\t\treturn result\n\t}\n\n\tpublic onBlur(event: FocusEvent, state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\tconst result = this.createFormattedState(state)\n\t\tconst input = event.target as HTMLInputElement\n\t\tinput.value = result.value\n\t\treturn result\n\t}\n\n\tpublic onInputEvent(event: InputEvent, state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\tconst input = event.target as HTMLInputElement\n\t\tstate.selection.start = input.selectionStart ?? state.selection.start\n\t\tstate.selection.end = input.selectionEnd ?? state.selection.end\n\t\tstate.selection.direction = input.selectionDirection ?? state.selection.direction\n\t\tconst result =\n\t\t\tevent.type == \"beforeinput\" || event.type == \"input\"\n\t\t\t\t? (this.eventHandlers[event.type][event.inputType]?.(event, this.unformatState(state), state) ?? state)\n\t\t\t\t: state\n\t\tconst formatted = this.partialFormatState(result)\n\t\tif (event.defaultPrevented) {\n\t\t\tinput.value = formatted.value\n\t\t\tinput.selectionStart = formatted.selection.start\n\t\t\tinput.selectionEnd = formatted.selection.end\n\t\t\tinput.selectionDirection = formatted.selection.direction ?? null\n\t\t}\n\t\treturn formatted\n\t}\n\tprivate eventHandlers: Record<\"beforeinput\" | \"input\", { [inputType: string]: Handler<InputEvent> | undefined }> = {\n\t\tbeforeinput: {\n\t\t\tinsertText: (event, state) => this.insert(event, state),\n\t\t\tinsertFromPaste: (event, state) => this.insert(event, state),\n\t\t\tinsertFromDrop: (event, state) => this.insert(event, state),\n\t\t\tdeleteContentBackward: (event, state) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (state.selection.start == state.selection.end) {\n\t\t\t\t\tthis.select(state, state.selection.start - 1, state.selection.end)\n\t\t\t\t}\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\tdeleteContentForward: (event, state) => {\n\t\t\t\tevent.preventDefault()\n\t\t\t\tif (state.selection.start == state.selection.end) {\n\t\t\t\t\tthis.select(state, state.selection.start, state.selection.end + 1)\n\t\t\t\t}\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\tdeleteWordBackward: (event, unformatted, formattedState) => {\n\t\t\t\tlet result = unformatted\n\t\t\t\tif (this.type != \"password\") {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tresult = this.deleteWord(formattedState, \"backward\")\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t},\n\t\t\tdeleteWordForward: (event, unformatted, formattedState) => {\n\t\t\t\tlet result = unformatted\n\t\t\t\tif (this.type != \"password\") {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tresult = this.deleteWord(formattedState, \"forward\")\n\t\t\t\t}\n\t\t\t\treturn result\n\t\t\t},\n\t\t\tdeleteByCut: (_, state) => {\n\t\t\t\tthis.erase(state)\n\t\t\t\treturn state\n\t\t\t},\n\t\t\t// historyUndo - TODO\n\t\t\t// historyRedo - TODO\n\t\t\t// insertLineBreak - TODO\n\t\t},\n\t\tinput: {\n\t\t\tinsertReplacementText: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t\tinsertCompositionText: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t\tdeleteWordBackward: (event, state) =>\n\t\t\t\tthis.type == \"password\" ? { ...state, value: (event.target as HTMLInputElement).value } : state,\n\t\t\tdeleteWordForward: (event, state) =>\n\t\t\t\tthis.type == \"password\" ? { ...state, value: (event.target as HTMLInputElement).value } : state,\n\t\t\t// Chrome will dispatch an input event without inputType when auto-filling\n\t\t\tundefined: (event, state) => ({ ...state, value: (event.target as HTMLInputElement).value }),\n\t\t},\n\t}\n\n\tprivate insert(event: InputEvent, unformatted: tidily.State): tidily.State {\n\t\tevent.preventDefault()\n\t\tif (typeof event.data == \"string\") {\n\t\t\tfor (const c of event.data) {\n\t\t\t\tthis.formatter.allowed(c, unformatted) && this.replace(unformatted, c.replace(/(\\r|\\n|\\t)/g, \"\"))\n\t\t\t}\n\t\t}\n\t\treturn unformatted\n\t}\n\tprivate deleteWord(formattedState: tidily.State, direction: \"backward\" | \"forward\"): tidily.State {\n\t\tconst cursorPosition = tidily.Selection.getCursor(formattedState.selection)\n\t\tconst adjacentIndex = Adjacent.getWordBreakIndex(formattedState.value, cursorPosition, direction)\n\t\tconst result = this.unformatState({\n\t\t\t...formattedState,\n\t\t\tselection: {\n\t\t\t\tstart: Math.min(cursorPosition, adjacentIndex),\n\t\t\t\tend: Math.max(cursorPosition, adjacentIndex),\n\t\t\t\tdirection: \"none\",\n\t\t\t},\n\t\t})\n\t\tconst value = result.value.substring(0, result.selection.start) + result.value.substring(result.selection.end)\n\t\tresult.value = value\n\t\tresult.selection.end = result.selection.start\n\t\treturn result\n\t}\n\n\tprivate select(state: tidily.State, from: number, to: number, direction?: tidily.Direction): void {\n\t\tstate.selection.start = from\n\t\tstate.selection.end = to\n\t\tdirection && (state.selection.direction = direction)\n\t}\n\tprivate erase(state: tidily.State): void {\n\t\tthis.replace(state, \"\")\n\t}\n\tprivate replace(state: tidily.State, insertString: string): void {\n\t\tstate.value =\n\t\t\tstate.value.substring(0, state.selection.start) + insertString + state.value.substring(state.selection.end)\n\t\tstate.selection.start = state.selection.start + insertString.length\n\t\tstate.selection.end = state.selection.start\n\t}\n\n\tprivate unformatState(formattedState: tidily.State): tidily.State {\n\t\treturn tidily.State.copy(this.formatter.unformat(tidily.StateEditor.copy(formattedState)))\n\t}\n\tprivate partialFormatState(unformattedState: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\treturn this.formatter.partialFormat(tidily.StateEditor.copy(unformattedState))\n\t}\n\tprivate createFormattedState(state: tidily.State): Readonly<tidily.State> & tidily.Settings {\n\t\treturn this.formatter.format(tidily.StateEditor.copy(this.formatter.unformat(tidily.StateEditor.copy(state))))\n\t}\n\tprivate toString(value: any): string {\n\t\treturn this.formatter.toString(value)\n\t}\n\tpublic initialState(value: any, inputElement?: HTMLInputElement): Readonly<tidily.State> & tidily.Settings {\n\t\tconst stringValue = this.toString(value) || \"\"\n\t\tconst start = stringValue.length\n\t\tconst state = this.createFormattedState({\n\t\t\tvalue: stringValue,\n\t\t\tselection: { start, end: start, direction: \"none\" },\n\t\t})\n\t\tif (inputElement) {\n\t\t\tinputElement.value = state.value\n\t\t}\n\t\treturn state\n\t}\n\tpublic setValue(\n\t\tinputElement: HTMLInputElement,\n\t\tformattedState: Readonly<tidily.State> & tidily.Settings,\n\t\tvalue: any\n\t): Readonly<tidily.State> & tidily.Settings {\n\t\tconst result = {\n\t\t\t...formattedState,\n\t\t\tvalue: this.createFormattedState({ value: this.formatter.toString(value), selection: formattedState.selection })\n\t\t\t\t.value,\n\t\t}\n\t\tinputElement.value = result.value\n\t\treturn result\n\t}\n\tpublic getValue(formattedState: tidily.State): any {\n\t\treturn this.formatter.fromString(this.unformatState(formattedState).value)\n\t}\n\tpublic setSelection(\n\t\tinputElement: HTMLInputElement,\n\t\tformattedState: Readonly<tidily.State> & tidily.Settings,\n\t\tstart: number,\n\t\tend: number\n\t) {\n\t\tinputElement.focus()\n\t\tinputElement.selectionStart = start\n\t\tinputElement.selectionEnd = end\n\t\tthis.select(formattedState, start, end)\n\t\treturn formattedState\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Key {\n\tname: string\n\tkey: string\n\tshift: boolean\n\tctrl: boolean\n\talt: boolean\n\tmeta: boolean\n}\n\nexport namespace Key {\n\texport const type = isly.object<Key>({\n\t\tname: isly.string(),\n\t\tkey: isly.string(),\n\t\tshift: isly.boolean(),\n\t\tctrl: isly.boolean(),\n\t\talt: isly.boolean(),\n\t\tmeta: isly.boolean(),\n\t})\n\texport const is = type.is\n\n\texport function create(name: string, event: KeyboardEvent): Key {\n\t\treturn {\n\t\t\tname,\n\t\t\tkey: event.key,\n\t\t\tshift: event.shiftKey,\n\t\t\tctrl: event.ctrlKey,\n\t\t\talt: event.altKey,\n\t\t\tmeta: event.metaKey,\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\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n}\n\n:host[hidden] {\n\tdisplay: none;\n}\n\n:host>.smoothly-input-container {\n\tposition: relative;\n\tflex-grow: 1;\n\theight: 100%;\n}\n\n:host>.smoothly-input-container>label {\n\tleft: var(--input-padding-side);\n}\n\n:host:not([show-label])>div>input {\n\tpadding: 0 var(--input-padding-side);\n}\n\n:host>.smoothly-input-container>div.guide {\n\tposition: absolute;\n box-sizing: border-box;\n align-content: center;\n\theight: 100%;\n\tpadding-inline: var(--input-padding-side);\n}\n:host([show-label])>.smoothly-input-container>div.guide {\n\tpadding-block: var(--input-value-padding-top) var(--input-value-padding-bottom);\n}\n:host>.smoothly-input-container>div.guide>div.value {\n\tdisplay: inline;\n\tpointer-events: none;\n\topacity: 0;\n}\n:host>.smoothly-input-container>div.guide>div.remainder {\n\tdisplay: inline;\n\tpointer-events: none;\n\topacity: 0.5;\n}\n\n:host>.smoothly-input-container>input {\n\tpadding: \n\t\tvar(--input-value-padding-top) \n\t\tvar(--input-padding-side) \n\t\tvar(--input-value-padding-bottom) \n\t\tvar(--input-padding-side);\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}\n:host([disabled])>.smoothly-input-container>input {\n\tcursor: not-allowed;\n}\n\n:host>.smoothly-invalid {\n\tdisplay: none;\n\tz-index: 2;\n\tpadding: 0.5rem;\n}\n:host[invalid]>.smoothly-invalid {\n\tdisplay: flex;\n}\n\n:host>div>label {\n\tz-index: 1;\n\tpointer-events: none;\n}\n\n:host>div>input:focus {\n\toutline: none;\n}\n\n:host>div>input:-webkit-autofill,\n:host>div>input:-webkit-autofill:hover,\n:host>div>input:-webkit-autofill:focus,\n:host>div>input:-webkit-autofill:active {\n\tbox-shadow: 0 0 0 40em rgb(var(--smoothly-input-background)) inset;\n\t-webkit-box-shadow: 0 0 0 40em rgb(var(--smoothly-input-background)) inset;\n}\n\n:host>div>input:-webkit-autofill,\n:host>div>input:-webkit-autofill+label {\n\t-webkit-text-fill-color: rgb(var(--smoothly-input-foreground));\n}\n:host>span.copyable {\n\tposition: relative;\n}\n:host>span.copyable>smoothly-icon {\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0.5rem;\n\n}\n:host>span.copyable:hover small,\n:host>span.copyable:focus small {\n\tdisplay: block;\n}\n:host>span.copyable>small {\n\tdisplay: none;\n\twidth: max-content;\n\tborder-radius: 0.25rem;\n\tpadding: 0.2rem 0.3rem;\n\tposition: absolute;\n\tright: -0.5rem;\n\ttop: -2rem;\n\tbackground-color: rgb(var(--smoothly-default-contrast));\n\tcolor: rgb(var(--smoothly-default-tint));\n}\n","import { Component, Element, 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 { getLocale } from \"../../model/getLocale\"\nimport { Clearable } from \"./Clearable\"\nimport { Deep } from \"./Deep\"\nimport { Editable } from \"./Editable\"\nimport { Input } from \"./Input\"\nimport { InputStateHandler } from \"./InputStateHandler\"\nimport { Key } from \"./Key\"\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@Element() element: HTMLSmoothlyInputElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\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?: Exclude<tidily.Settings[\"autocomplete\"], undefined>\n\t@Prop({ reflect: true }) placeholder: string | undefined\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop() toInteger?: boolean\n\t@Prop({ reflect: true }) currency?: isoly.Currency\n\t@Prop() min?: number\n\t@Prop() max?: number\n\t@Prop() pad?: number\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ reflect: true }) errorMessage?: string\n\t@Prop({ reflect: true }) copyable?: boolean\n\t@State() initialValue?: any\n\t@State() state: Readonly<tidily.State> & Readonly<tidily.Settings>\n\t@State() copied = false\n\tisDifferentFromInitial = false\n\tparent: Editable | undefined\n\tprivate stateHandler: InputStateHandler\n\tprivate inputElement: HTMLInputElement | undefined\n\tprivate uneditable = this.readonly\n\tprivate observer = Editable.Observer.create(this)\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyKeydown: EventEmitter<Key>\n\t@Event() smoothlyBlur: EventEmitter<void>\n\t@Event() smoothlyChange: EventEmitter<Record<string, any>>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\n\t@Method()\n\tasync getValue(): Promise<any | undefined> {\n\t\treturn this.stateHandler.getValue(this.state)\n\t}\n\t@Method()\n\tasync setValue(value: any): Promise<void> {\n\t\tif (this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setValue(this.inputElement, this.state, value)\n\t\t}\n\t}\n\t@Method()\n\tasync setFocus(): Promise<void> {\n\t\tthis.inputElement?.focus()\n\t}\n\t@Method()\n\tasync setSelection(start: number, end: number): Promise<void> {\n\t\tif (this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setSelection(\n\t\t\t\tthis.inputElement,\n\t\t\t\tthis.state,\n\t\t\t\tstart,\n\t\t\t\tend < 0 ? this.inputElement.value.length + end + 1 : end\n\t\t\t)\n\t\t}\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tif (!this.uneditable && this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setValue(this.inputElement, this.state, undefined)\n\t\t}\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\tif (!this.uneditable && this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setValue(this.inputElement, this.state, this.initialValue)\n\t\t}\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.isDifferentFromInitial = false\n\t\tthis.initialValue = this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t}\n\t@Method()\n\tasync setCustomInitialValue(value: any): Promise<void> {\n\t\tthis.initialValue = value\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInput) => void>): Promise<void> {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Watch(\"currency\")\n\t@Watch(\"type\")\n\ttypeChange(): void {\n\t\tswitch (this.type) {\n\t\t\tcase \"price\":\n\t\t\t\tthis.stateHandler = InputStateHandler.create(\"price\", { currency: this.currency, toInteger: this.toInteger })\n\t\t\t\tbreak\n\t\t\tcase \"integer\":\n\t\t\t\tthis.stateHandler = InputStateHandler.create(\"integer\", { min: this.min, max: this.max, pad: this.pad })\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthis.stateHandler = InputStateHandler.create(this.type, getLocale())\n\t\t\t\tbreak\n\t\t}\n\t\tthis.state = this.stateHandler.initialState(this.value ?? this.state?.value, this.inputElement)\n\t}\n\t@Watch(\"state\")\n\tstateChange() {\n\t\tconst value = this.stateHandler.getValue(this.state)\n\t\tthis.isDifferentFromInitial = Deep.notEqual(this.initialValue, value)\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"value\")\n\tvalueChange(value: any) {\n\t\tconst lastValue = this.stateHandler.getValue(this.state)\n\t\tif (Deep.notEqual(lastValue, value) && this.inputElement) {\n\t\t\tthis.state = this.stateHandler.setValue(this.inputElement, this.state, value)\n\t\t\tthis.smoothlyInput.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t}\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\treadonlyChange() {\n\t\tthis.observer.publish()\n\t}\n\tcomponentWillLoad() {\n\t\tthis.initialValue = this.value\n\t\tthis.typeChange()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\tcomponentDidLoad() {\n\t\tif (this.inputElement) {\n\t\t\tthis.inputElement.value = this.state.value\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Listen(\"input\")\n\t@Listen(\"beforeinput\")\n\tonEvent(event: InputEvent) {\n\t\tthis.state = this.stateHandler.onInputEvent(event, this.state)\n\t\tif (event.type == \"input\" || event.defaultPrevented) {\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.stateHandler.getValue(this.state) })\n\t\t}\n\t}\n\tcopyText(value?: string) {\n\t\tif (value) {\n\t\t\tnavigator.clipboard.writeText(value)\n\t\t\tthis.copied = true\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\" />\n\t\t\t\t<div class=\"smoothly-input-container\">\n\t\t\t\t\t<div class={\"guide\"}>\n\t\t\t\t\t\t<div class={\"value\"}>{this.state?.value}</div>\n\t\t\t\t\t\t<div class={\"remainder\"}>{this.state?.remainder}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<input\n\t\t\t\t\t\tref={(el: HTMLInputElement) => (this.inputElement = el)}\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\tinputmode={this.state?.inputmode}\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}\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\tonKeyDown={async event => {\n\t\t\t\t\t\t\tthis.state = this.stateHandler.onKeyDown(event, this.state)\n\t\t\t\t\t\t\tif (!this.readonly && !this.disabled) {\n\t\t\t\t\t\t\t\tthis.smoothlyKeydown.emit(Key.create(this.name, event))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonFocus={event => !this.readonly && (this.state = this.stateHandler.onFocus(event, this.state))}\n\t\t\t\t\t\tonBlur={event => {\n\t\t\t\t\t\t\tif (!this.readonly) {\n\t\t\t\t\t\t\t\tconst lastValue = this.stateHandler.getValue(this.state)\n\t\t\t\t\t\t\t\tthis.state = this.stateHandler.onBlur(event, this.state)\n\t\t\t\t\t\t\t\tthis.smoothlyBlur.emit()\n\t\t\t\t\t\t\t\tthis.smoothlyInput.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t\t\t\t\t\t\tif (Deep.notEqual(lastValue, this.stateHandler.getValue(this.state))) {\n\t\t\t\t\t\t\t\t\tthis.smoothlyChange.emit({ [this.name]: this.stateHandler.getValue(this.state) })\n\t\t\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.stateHandler.getValue(this.state) })\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/>\n\t\t\t\t\t<label class={\"label float-on-focus\"} htmlFor={this.name}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t\t{this.copyable && this.value && (\n\t\t\t\t\t<span class=\"copyable\">\n\t\t\t\t\t\t<small>{this.copied ? \"Copied!\" : \"Copy\"}</small>\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tname=\"copy-outline\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={() => this.copyText(this.value)}\n\t\t\t\t\t\t\tonMouseLeave={() => (this.copied = false)}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t)}\n\t\t\t\t<smoothly-icon class=\"smoothly-invalid\" name=\"alert-circle\" size=\"small\" tooltip={this.errorMessage} />\n\t\t\t\t<slot name=\"end\" />\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-direction: row;\n\tposition: relative;\n\tgap: .5rem;\n\tpadding-inline: var(--input-padding-side);\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n}\n:host:has(>.smoothly-checkbox-end-slot:not(:empty)) {\n\tpadding-right: 0;\n}\n\n:host>input {\n\t-webkit-appearance: none;\n\t-moz-appearance: none;\n\tappearance: none;\n\theight: 1.25rem;\n\twidth: 1.25rem;\n\tborder-radius: 0.25rem;\n\tborder: 1px solid rgb(var(--smoothly-input-foreground));\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tdisplay: block;\n}\n:host([checked][looks=transparent])>input, /* Override shared.css transparent styling */\n:host([checked])>input {\n\tbackground-color: rgb(var(--smoothly-input-foreground));\n}\n\n:host:not([readonly]):not([disabled])>input,\n:host:not([readonly]):not([disabled])>label {\n\tcursor: pointer;\n}\n:host>label:empty {\n\tdisplay: none;\n}\n\n:host([disabled]),\n:host([disabled])>* {\n\tcursor: not-allowed;\n}\n\n:host>smoothly-icon {\n\tposition: absolute;\n\tz-index: 1;\n\tpointer-events: none;\n\t--smoothly-color-contrast: var(--smoothly-input-background);\n\t/* outline: 2px solid blue; */\n}\n\n:host[looks=\"transparent\"] {\n\tbackground-color: transparent;\n}\n/* overwrite shared.css styling */\n:host[looks=\"transparent\"]:not([readonly]):focus-within {\n\toutline-color: transparent;\n}\n\n:host>.smoothly-checkbox-end-slot {\n\tmargin-left: auto;;\n}\n:host>.smoothly-checkbox-end-slot:empty {\n\tdisplay: none;\n}\n","import {\n\tComponent,\n\tComponentWillLoad,\n\tElement,\n\tEvent,\n\tEventEmitter,\n\th,\n\tHost,\n\tListen,\n\tMethod,\n\tProp,\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\"\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\t@Element() element: HTMLSmoothlyInputCheckboxElement\n\tisDifferentFromInitial = false\n\tparent: Editable | undefined\n\tprivate initialValue?: any\n\tprivate observer = Editable.Observer.create(this)\n\tprivate id: string\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Prop({ mutable: true, reflect: true }) checked = false\n\t@Prop() value?: Record<\"true\" | \"false\", any>\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => 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(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.observer.publish()\n\t\tthis.id = \"id-\" + Math.random().toString(36).substring(2, 11)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputCheckbox) => void>): Promise<void> {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<boolean> {\n\t\treturn this.value ? this.value[`${!!this.checked}`] : this.checked\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(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\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.isDifferentFromInitial = false\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\tasync handleDisabledChange(): Promise<void> {\n\t\tthis.observer.publish()\n\t}\n\n\t@Watch(\"checked\")\n\tasync elementCheck(_: boolean | undefined, before: boolean | undefined) {\n\t\tthis.isDifferentFromInitial = !!this.initialValue != !!this.checked\n\t\tconst changed = !!this.checked != !!before\n\t\tif (changed) {\n\t\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\t\tthis.observer.publish()\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<input\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\tid={this.id}\n\t\t\t\t\tchecked={this.checked}\n\t\t\t\t\tdisabled={this.disabled || this.readonly}\n\t\t\t\t\tonChange={async e => {\n\t\t\t\t\t\tthis.checked = (e.target as HTMLInputElement).checked\n\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t{this.checked && <smoothly-icon name=\"checkmark-sharp\" size=\"tiny\" />}\n\t\t\t\t<label htmlFor={this.id}>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t\t<span class=\"smoothly-checkbox-end-slot\">\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\";\n\n:host {\n\tdisplay: flex;\n}\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\n}\n\n:host::slotted(smoothly-button>button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\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@Element() element: HTMLSmoothlyInputClearElement\n\t@Prop() 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?: boolean\n\t@Prop({ reflect: true }) size: \"small\" | \"large\" | \"icon\" | \"flexible\" = \"icon\"\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 = \"Clear\"\n\tprivate parent?: Clearable | (Clearable & Editable)\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => 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.is(parent)) {\n\t\t\t\t\tparent.listen(async p => {\n\t\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\t\tconst defined = typeof p.defined == \"boolean\" ? p.defined : Boolean(await p.getValue())\n\t\t\t\t\t\t\tthis.display = defined && !p.readonly && !p.disabled\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.display = !p.readonly\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tif (typeof this.disabled !== \"boolean\") {\n\t\t\t\t\t\tparent.listen(async p => {\n\t\t\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\t\t\tthis.disabled = p.readonly || Object.values(p.value).filter(val => val).length < 1\n\t\t\t\t\t\t\t}\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<Host title={this.tooltip}>\n\t\t\t\t<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon name=\"close\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\talign-items: center;\n\tjustify-content: center;\n}\n:host>smoothly-input {\n\twidth: 100%;\n\t--input-min-height: calc(var(--input-min-height) - 2px);\n\t--smoothly-input-border-focus: none;\n}\n:host div.color-sample {\n\theight: 2em;\n\twidth: 3em;\n\tmargin-right: 0.5rem;\n\tbackground-color: var(--hexCode);\n\toutline: 1px solid rgb(var(--smoothly-input-border));\n\tborder-radius: 3px;\n}\n:host smoothly-icon[name=options-outline] {\n\tpadding-right: var(--input-padding-side);\n}\n:host[readonly] smoothly-icon[name=options-outline],\n:host[disabled] smoothly-icon[name=options-outline] {\n\tdisplay: none;\n}\n:host:not([readonly]):not([disabled]) smoothly-icon[name=options-outline] {\n\tcursor: pointer;\n}\n:host>div.rgb-sliders {\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tposition: absolute;\n\tpadding: 1em 1em 1em 0;\n\ttop: calc(var(--element-height) + .8em);\n\tleft: 0;\n\tbox-sizing: border-box;\n\tz-index: 20;\n\tborder: 1px solid rgb(var(--smoothly-input-border));\n}\n:host>div.rgb-sliders::before {\n\tcontent: \"\";\n\ttransform: translate(2em, -0.55em) rotate(45deg);\n\twidth: 1em;\n\theight: 1em;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n\tposition: absolute;\n\tz-index: 100;\n\ttop: 0em\n}\n:host>div.rgb-sliders>smoothly-toggle-switch {\n\tmargin-left: auto;\n\tmargin-right: 1em;\n\tmargin-bottom: 1em;\n}\ndiv.rgb-sliders smoothly-input-range {\n\tpadding: .5em 0\n}\ndiv.rgb-sliders smoothly-input-range label {\n\twidth: 4em;\n}\n\n/* -------------RGB SLIDERS------------------- */\n\n/* --------------------R------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(255, var(--rgb-g), var(--rgb-b)), rgb(0, var(--rgb-g), var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(255, var(--rgb-g), var(--rgb-b)), rgb(0, var(--rgb-g), var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-moz-range-thumb {\n\tbackground-color: red;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=r]::-webkit-slider-thumb {\n\tbackground-color: red;\n}\n\n/* --------------------G------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), 255, var(--rgb-b)), rgb(var(--rgb-r), 0, var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), 255, var(--rgb-b)), rgb(var(--rgb-r), 0, var(--rgb-b)))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-moz-range-thumb {\n\tbackground-color: green;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=g]::-webkit-slider-thumb {\n\tbackground-color: green;\n}\n\n/* --------------------B------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), var(--rgb-g), 255), rgb(var(--rgb-r), var(--rgb-g), 0))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-moz-range-track {\n\tbackground: linear-gradient(to left, rgb(var(--rgb-r), var(--rgb-g), 255), rgb(var(--rgb-r), var(--rgb-g), 0))\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-moz-range-thumb { \n\tbackground-color: blue;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=b]::-webkit-slider-thumb {\n\tbackground-color: blue;\n}\n\n/* -------------HSL SLIDERS------------------- */\n\n/* --------------------H------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to right in hsl longer hue, red, red)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-moz-range-track {\n\tbackground: linear-gradient(to right in hsl longer hue, red, red)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-webkit-slider-thumb {\n\tbackground-color: hsl(var(--hsl-h), 100%, 50%)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=h]::-moz-range-thumb {\n\tbackground-color: hsl(var(--hsl-h), 100%, 50%)\n}\n\n\n/* --------------------S------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-webkit-slider-runnable-track { \n\tbackground: linear-gradient(to right, hsl(var(--hsl-h), 0%, 50%), hsl(var(--hsl-h), 100%, 50%)); \n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-moz-range-track {\n\tbackground: linear-gradient(to right, hsl(var(--hsl-h), 0%, 50%), hsl(var(--hsl-h), 100%, 50%)); \n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-moz-range-thumb {\n\tbackground-color: hsl(var(--hsl-h), var(--hsl-s), 50%)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=s]::-webkit-slider-thumb {\n\tbackground-color: hsl(var(--hsl-h), var(--hsl-s), 50%)\n}\n\n/* --------------------L------------------- */\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-moz-range-track {\n\tbackground: linear-gradient(to right, black, white)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-webkit-slider-runnable-track {\n\tbackground: linear-gradient(to right, black, white)\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-moz-range-thumb {\n\tbackground-color: #777;\n}\ndiv.rgb-sliders smoothly-input-range>div>input[name=l]::-webkit-slider-thumb {\n\tbackground-color: #777;\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 { HSL } from \"../../../model/Color/HSL\"\nimport { RGB } from \"../../../model/Color/RGB\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\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, Editable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate observer = Editable.Observer.create(this)\n\tprivate rgb: RGB = { r: undefined, g: undefined, b: undefined }\n\tprivate hsl: HSL = { h: undefined, s: undefined, l: undefined }\n\tprivate initialValue: string | undefined\n\t@Prop({ mutable: true }) value: string | undefined = undefined\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop() output: \"rgb\" | \"hex\" = \"rgb\"\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Element() element: HTMLSmoothlyInputColorElement\n\t@State() open = false\n\t@State() sliderMode: \"rgb\" | \"hsl\" = \"rgb\"\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tasync componentWillLoad(): Promise<void> {\n\t\tthis.value && this.setInitialValue()\n\t\tthis.value && (this.rgb = Color.Hex.toRGB(this.value))\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\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\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputColor) => void>): void {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<RGB | string | undefined> {\n\t\treturn this.output === \"rgb\"\n\t\t\t? {\n\t\t\t\t\tr: this.rgb.r === undefined ? undefined : Math.round(this.rgb.r),\n\t\t\t\t\tg: this.rgb.g === undefined ? undefined : Math.round(this.rgb.g),\n\t\t\t\t\tb: this.rgb.b === undefined ? undefined : Math.round(this.rgb.b),\n\t\t\t\t}\n\t\t\t: this.value\n\t\t\t\t? this.value\n\t\t\t\t: undefined\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.rgb = { r: undefined, g: undefined, b: undefined }\n\t\tthis.hsl = { h: undefined, s: undefined, l: undefined }\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Method()\n\tasync edit(editable: boolean): Promise<void> {\n\t\tthis.readonly = !editable\n\t\tthis.open = false\n\t}\n\t@Method()\n\tasync reset(): Promise<void> {\n\t\tthis.value = this.initialValue\n\t\tthis.open = false\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.initialValue = this.value\n\t\tthis.open = false\n\t}\n\t@Watch(\"value\")\n\tasync valueChanged(): Promise<void> {\n\t\tthis.isDifferentFromInitial = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.observer.publish()\n\t}\n\thandleSwitchMode(event: CustomEvent): void {\n\t\tevent.stopPropagation()\n\t\tthis.sliderMode = event.detail ? \"hsl\" : \"rgb\"\n\t\tif (this.sliderMode === \"rgb\") {\n\t\t\tthis.value && (this.rgb = Color.Hex.toRGB(this.value))\n\t\t} else {\n\t\t\tthis.value && (this.hsl = Color.RGB.toHSL(Color.Hex.toRGB(this.value)))\n\t\t}\n\t}\n\tasync hexInputHandler(value: string): Promise<void> {\n\t\tif (value !== this.value) {\n\t\t\tif (value && Color.Hex.type.is(value)) {\n\t\t\t\tif (this.sliderMode === \"hsl\" || this.rgb.r === undefined) {\n\t\t\t\t\tthis.rgb = Color.Hex.toRGB(value)\n\t\t\t\t}\n\t\t\t\tif (this.sliderMode === \"rgb\" || this.hsl.h === undefined) {\n\t\t\t\t\tthis.hsl = Color.RGB.toHSL(Color.Hex.toRGB(value))\n\t\t\t\t}\n\t\t\t} else if (!value || !Color.Hex.type.is(value)) {\n\t\t\t\tthis.rgb = { r: undefined, g: undefined, b: undefined }\n\t\t\t\tthis.hsl = { h: undefined, s: undefined, l: undefined }\n\t\t\t}\n\t\t\tthis.value = value\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t}\n\t}\n\tsliderInputHandler(event: CustomEvent<Data>): void {\n\t\tevent.stopPropagation()\n\t\tconst color = Object.keys(event.detail)[0]\n\t\tlet temporaryColor = this.sliderMode === \"rgb\" ? this.rgb : this.hsl\n\t\ttype ColorType = HSL | RGB\n\t\tif (!(event.detail[color] === undefined)) {\n\t\t\tfor (const key of Object.keys(temporaryColor)) {\n\t\t\t\tif (key === color) {\n\t\t\t\t\ttemporaryColor = {\n\t\t\t\t\t\t...temporaryColor,\n\t\t\t\t\t\t[key]: key === \"s\" || key === \"l\" ? +(event.detail[color] ?? 0) * 100 : event.detail[color],\n\t\t\t\t\t}\n\t\t\t\t} else if (temporaryColor[key as keyof ColorType] === undefined) {\n\t\t\t\t\ttemporaryColor = { ...temporaryColor, [key]: 0 }\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.sliderMode === \"rgb\") {\n\t\t\t\tthis.rgb = { ...temporaryColor } as RGB\n\t\t\t\tthis.hsl = Color.RGB.toHSL(this.rgb)\n\t\t\t\tthis.hexInputHandler(Color.RGB.toHex(this.rgb))\n\t\t\t} else {\n\t\t\t\tthis.hsl = { ...temporaryColor } as HSL\n\t\t\t\tthis.rgb = Color.HSL.toRGB(this.hsl)\n\t\t\t\tthis.hexInputHandler(Color.RGB.toHex(Color.HSL.toRGB(this.hsl)))\n\t\t\t}\n\t\t}\n\t}\n\topenDropdown(): void {\n\t\tthis.open = !this.open\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--hexCode\": this.value,\n\t\t\t\t\t\"--rgb-r\": `${Math.round(this.rgb.r ?? 0)}`,\n\t\t\t\t\t\"--rgb-g\": `${Math.round(this.rgb.g ?? 0)}`,\n\t\t\t\t\t\"--rgb-b\": `${Math.round(this.rgb.b ?? 0)}`,\n\t\t\t\t\t\"--hsl-h\": `${Math.round(this.hsl.h ?? 0)}`,\n\t\t\t\t\t\"--hsl-s\": `${Math.round(this.hsl.s ?? 0)}%`,\n\t\t\t\t\t\"--hsl-l\": `${Math.round(this.hsl.l ?? 0)}%`,\n\t\t\t\t\t\"--element-height\": `${this.element.clientHeight}px`,\n\t\t\t\t}}>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={undefined}\n\t\t\t\t\tname={this.name}\n\t\t\t\t\ttype={\"hex-color\"}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInput={event => (event?.stopPropagation(), this.hexInputHandler(event.detail[this.name]))}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-input>\n\t\t\t\t<div class=\"color-sample\" />\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tname=\"options-outline\"\n\t\t\t\t\tsize=\"small\"\n\t\t\t\t\tonClick={() => !this.readonly && !this.disabled && this.openDropdown()}\n\t\t\t\t/>\n\t\t\t\t<div>\n\t\t\t\t\t{/* Extra div needed otherwise stencil sets hidden on the slot for no apparent reason */}\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t</div>\n\t\t\t\t{this.open && !this.readonly && !this.disabled && (\n\t\t\t\t\t<div class=\"rgb-sliders\">\n\t\t\t\t\t\t<smoothly-toggle-switch\n\t\t\t\t\t\t\ttitle={`${this.sliderMode === \"rgb\" ? \"To HSL\" : \"To RGB\"}`}\n\t\t\t\t\t\t\tonSmoothlyToggleSwitchChange={event => this.handleSwitchMode(event)}\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tcheckmark={false}\n\t\t\t\t\t\t\tselected={this.sliderMode === \"hsl\"}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{Object.entries(this.rgb).map(([key, value]) => (\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tstyle={this.sliderMode != \"rgb\" ? { display: \"none\" } : {}}\n\t\t\t\t\t\t\t\tname={key}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\tmax={255}\n\t\t\t\t\t\t\t\tcolor={undefined}\n\t\t\t\t\t\t\t\ttype={\"text\"}\n\t\t\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\t\t\tstep={1}\n\t\t\t\t\t\t\t\toutputSide=\"right\"\n\t\t\t\t\t\t\t\tonSmoothlyInput={event => this.sliderInputHandler(event)}\n\t\t\t\t\t\t\t\tonSmoothlyUserInput={event => event.stopPropagation()}\n\t\t\t\t\t\t\t\tlabel={key.toUpperCase()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t{Object.entries(this.hsl).map(([key, value]) => (\n\t\t\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\t\t\tstyle={this.sliderMode != \"hsl\" ? { display: \"none\" } : {}}\n\t\t\t\t\t\t\t\tname={key}\n\t\t\t\t\t\t\t\tmin={0}\n\t\t\t\t\t\t\t\tmax={key === \"h\" ? 359 : 1}\n\t\t\t\t\t\t\t\tcolor={undefined}\n\t\t\t\t\t\t\t\ttype={key === \"s\" || key === \"l\" ? \"percent\" : \"text\"}\n\t\t\t\t\t\t\t\tvalue={(key === \"s\" || key === \"l\") && value ? value / 100 : value}\n\t\t\t\t\t\t\t\tstep={key === \"s\" || key === \"l\" ? 0.01 : 1}\n\t\t\t\t\t\t\t\toutputSide=\"right\"\n\t\t\t\t\t\t\t\tonSmoothlyInput={event => this.sliderInputHandler(event)}\n\t\t\t\t\t\t\t\tonSmoothlyUserInput={event => event.stopPropagation()}\n\t\t\t\t\t\t\t\tlabel={key.toUpperCase()}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-input-color-demo\",\n\tstyles: \"style.css\",\n})\nexport class SmoothlyInputColorDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Color</h2>\n\t\t\t\t<smoothly-input-color name=\"color\">Choose color</smoothly-input-color>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\tmax-width: 100vw;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n\tmin-height: var(--input-min-height);\n}\n:host .smoothly-date-placeholder {\n\tdisplay: none;\n}\n:host:not([always-show-guide]):not(:focus-within):not(.has-text) .smoothly-date-placeholder {\n\topacity: 0.5;\n\tdisplay: block;\n}\n\n:host:not([always-show-guide]):not(:focus-within):not(.has-text) smoothly-date-text {\n\tvisibility: hidden;\n}\n\n:host>.label {\n\tleft: var(--input-padding-side);\n}\n:host[show-label] > .smoothly-date-placeholder,\n:host[show-label] > smoothly-date-text {\n\tmargin-inline: var(--input-padding-side);\n\tmargin-block: var(--input-value-padding-top) var(--input-value-padding-bottom);\n}\n:host:not([show-label]) > .smoothly-date-placeholder,\n:host:not([show-label]) > smoothly-date-text {\n\tmargin-inline: var(--input-padding-side) auto;\n\tmargin-block: auto;\n}\n:host:not([readonly]) {\n\tcursor: pointer;\n}\n\n:host[disabled] {\n\tcursor: not-allowed;\n}\n\n:host>smoothly-calendar {\n\tposition: absolute;\n\tz-index: 20;\n\ttop: 4rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmin-width: 18rem;\n\tmax-width: 22rem;\n}\n\n:host>smoothly-calendar::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tleft: 2rem;\n\ttop: -0.55rem;\n\tz-index: 9;\n\ttransform: rotate(45deg);\n\twidth: 1rem;\n\theight: 1rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>.smoothly-icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tmargin-left: auto;\n}\n:host>.smoothly-icons>.smoothly-invalid {\n\tdisplay: none;\n\tpadding: 0.5rem;\n}\n:host[invalid]>.smoothly-icons>.smoothly-invalid {\n\tdisplay: flex;\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\tWatch,\n} from \"@stencil/core\"\nimport { isoly } from \"isoly\"\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-date\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDate implements ComponentWillLoad, Clearable, Input, Editable {\n\tprivate dateTextElement?: HTMLSmoothlyDateTextElement\n\tprivate iconsElement?: HTMLElement\n\tprivate calendarElement?: HTMLSmoothlyCalendarElement\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true }) locale?: isoly.Locale\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ reflect: true }) errorMessage?: string\n\t@Prop({ reflect: true }) placeholder?: string\n\t@Prop({ reflect: true }) alwaysShowGuide = false\n\tparent: Editable | undefined\n\tchanged = false\n\tisDifferentFromInitial = false\n\tprivate hasFocus = false\n\tprivate initialValue?: isoly.Date\n\tprivate observer = Editable.Observer.create(this)\n\t@Prop({ mutable: true }) value?: isoly.Date\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ mutable: true }) max: isoly.Date\n\t@Prop({ mutable: true }) min: isoly.Date\n\t@Prop({ reflect: true }) showLabel = true\n\t@State() hasText = false\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyValueChange: EventEmitter<isoly.Date>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\n\tcomponentWillLoad(): void {\n\t\tthis.setInitialValue()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<isoly.Date | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Watch(\"value\")\n\tonValueChange(value: isoly.Date) {\n\t\tif (!this.hasFocus) {\n\t\t\tthis.dateTextElement?.setValue(value)\n\t\t}\n\t\tthis.isDifferentFromInitial = this.initialValue != this.value\n\t\tthis.smoothlyValueChange.emit(value)\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\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\t}\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\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputDate) => void>): void {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\tonClick(event: MouseEvent): void {\n\t\tconst includesTextElement = !!this.dateTextElement && event.composedPath().includes(this.dateTextElement)\n\t\tconst includesCalendar = !!this.calendarElement && event.composedPath().includes(this.calendarElement)\n\t\tconst includesIconsElement = !!this.iconsElement && event.composedPath().includes(this.iconsElement)\n\t\tif (!this.readonly && !this.disabled && !includesTextElement && !includesCalendar && !includesIconsElement) {\n\t\t\tthis.dateTextElement?.select()\n\t\t}\n\t\tif (!this.readonly && !this.disabled && !includesCalendar && !includesIconsElement) {\n\t\t\tthis.open = !this.open || includesTextElement\n\t\t}\n\t}\n\tonUserChangedValue(event: CustomEvent<isoly.Date | undefined>) {\n\t\tevent.stopPropagation()\n\t\tconst newValue = event.detail ?? undefined // normalize null to undefined\n\t\tif (this.value != newValue) {\n\t\t\tthis.value = newValue\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.value })\n\t\t}\n\t}\n\t@Method()\n\tasync edit(editable: boolean) {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset() {\n\t\tthis.value = this.initialValue\n\t}\n\t@Method()\n\tasync setInitialValue() {\n\t\tthis.initialValue = this.value\n\t\tthis.isDifferentFromInitial = false\n\t}\n\t@Listen(\"smoothlyDateSet\")\n\tdateSetHandler(event: CustomEvent<isoly.Date>) {\n\t\tthis.open = false\n\t\tevent.stopPropagation()\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttabindex={this.disabled ? undefined : 0}\n\t\t\t\tclass={{ \"has-value\": !!this.value, \"has-text\": this.hasText, \"floating-label\": this.alwaysShowGuide }}\n\t\t\t\tonClick={(e: MouseEvent) => this.onClick(e)}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<label class={\"label float-on-focus\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t\t{this.placeholder && <span class=\"smoothly-date-placeholder\">{this.placeholder}</span>}\n\t\t\t\t<smoothly-date-text\n\t\t\t\t\tref={el => (this.dateTextElement = el)}\n\t\t\t\t\tlocale={this.locale}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tvalue={this.value}\n\t\t\t\t\tonSmoothlyDateTextHasText={e => (e.stopPropagation(), (this.hasText = e.detail))}\n\t\t\t\t\tonSmoothlyDateTextFocusChange={e => (e.stopPropagation(), (this.hasFocus = e.detail))}\n\t\t\t\t\tonSmoothlyDateHasPartialDate={e => (e.stopPropagation(), this.calendarElement?.jumpTo(e.detail))}\n\t\t\t\t\tonSmoothlyDateTextChange={e => (e.stopPropagation(), this.onUserChangedValue(e))}\n\t\t\t\t\tonSmoothlyDateTextDone={e => (e.stopPropagation(), (this.open = false), this.dateTextElement?.deselect())}\n\t\t\t\t/>\n\t\t\t\t<span class=\"smoothly-icons\" ref={el => (this.iconsElement = el)}>\n\t\t\t\t\t<smoothly-icon class=\"smoothly-invalid\" name=\"alert-circle\" size=\"small\" tooltip={this.errorMessage} />\n\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t</span>\n\t\t\t\t{this.open && !this.readonly && (\n\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\tref={el => (this.calendarElement = el)}\n\t\t\t\t\t\tdoubleInput={false}\n\t\t\t\t\t\tvalue={this.value}\n\t\t\t\t\t\tonSmoothlyDateSet={e => (e.stopPropagation(), this.onUserChangedValue(e))}\n\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\tmin={this.min}>\n\t\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-calendar>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));\n\tmax-width: min(42rem, 100%);\n\tmargin: auto;\n\tflex-direction: column;\n\tgap: 0.5rem;\n}\n\n:host :not(smoothly-input-date):not(smoothly-input-date-range) {\n\tgrid-column: 1 / -1;\n}\n","import { Component, Fragment, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-date-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateDemo {\n\t@State() date?: isoly.Date\n\t@State() alwaysShowGuide = false\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<h2>Date input</h2>\n\t\t\t\t\t<p>Different locales formatting the same date</p>\n\t\t\t\t\t<smoothly-button\n\t\t\t\t\t\tcolor=\"primary\"\n\t\t\t\t\t\tonClick={() => (this.date = this.date ? isoly.Date.next(this.date) : isoly.Date.now())}>\n\t\t\t\t\t\tSet date\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\tlooks=\"transparent\"\n\t\t\t\t\t\tonSmoothlyUserInput={e => {\n\t\t\t\t\t\t\tthis.alwaysShowGuide = e.detail.value\n\t\t\t\t\t\t\tconsole.log(this.alwaysShowGuide)\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\tAlways Show Guide\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t</div>\n\t\t\t\t{([\"en-US\", \"en-GB\", \"de-DE\", \"se-SE\"] as isoly.Locale[]).map(locale => (\n\t\t\t\t\t<Fragment>\n\t\t\t\t\t\t<smoothly-input-date\n\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\tname={locale}\n\t\t\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\t\t\tvalue={this.date}\n\t\t\t\t\t\t\talwaysShowGuide={this.alwaysShowGuide}>\n\t\t\t\t\t\t\t{locale}\n\t\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\t\tlocale={locale}\n\t\t\t\t\t\t\tname={locale + \"-range\"}\n\t\t\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\t\t\tstart={this.date}\n\t\t\t\t\t\t\tend={this.date ? isoly.Date.next(this.date) : undefined}\n\t\t\t\t\t\t\talwaysShowGuide={this.alwaysShowGuide}>\n\t\t\t\t\t\t\t{locale} Range\n\t\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t</Fragment>\n\t\t\t\t))}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../shared.css\";\n\n:host {\n\tposition: relative;\n\tdisplay: flex;\n\tbackground-color: rgb(var(--smoothly-input-background));\n}\n\n:host [slot=start] {\n\talign-self: center;\n}\n\n:host .label {\n\tleft: var(--input-padding-side);\n}\n\n:host .smoothly-date-range-separator {\n\twhite-space: pre;\n}\n\n:host .smoothly-date-range-placeholder {\n\tmargin-inline: var(--input-padding-side);\n\tdisplay: none;\n}\n\n:host:not([always-show-guide]):not(:focus-within):not(.has-text) {\n\t& .smoothly-date-range-placeholder {\n\t\tdisplay: block;\n\t\topacity: 0.5;\n\t}\n\n\t& smoothly-date-text,\n\t& .smoothly-date-range-separator {\n\t\tvisibility: hidden;\n\t}\n}\n\n:host smoothly-date-text.start-date-text {\n\tmargin-inline: var(--input-padding-side) 0;\n}\n\n:host smoothly-date-text.end-date-text {\n\tmargin-inline: 0 var(--input-padding-side);\n}\n\n:host[show-label] .smoothly-date-range-placeholder,\n:host[show-label] smoothly-date-text,\n:host[show-label] .smoothly-date-range-separator {\n\tmargin-block: var(--input-value-padding-top) var(--input-value-padding-bottom);\n}\n\n:host:not([show-label]) .smoothly-date-range-placeholder,\n:host:not([show-label]) smoothly-date-text,\n:host:not([show-label]) .smoothly-date-range-separator {\n\tmargin-block: auto;\n}\n\n:host:not([readonly]) {\n\tcursor: pointer;\n}\n\n:host[disabled] {\n\tcursor: not-allowed;\n}\n\n:host > smoothly-calendar {\n\tposition: absolute;\n\tz-index: 20;\n\ttop: 4rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmax-width: 22rem;\n\tmin-width: 18rem;\n}\n\n:host > smoothly-calendar::before {\n\tcontent: \"\";\n\tposition: absolute;\n\ttop: -0.55rem;\n\tleft: 3rem;\n\tz-index: 9;\n\ttransform: rotate(45deg);\n\twidth: 1rem;\n\theight: 1rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host > .smoothly-date-range-input-part {\n\tdisplay: flex;\n\twidth: 100%;\n\tbackground-color: var(--smoothly-input-background);\n\tborder-radius: 0.25rem;\n\tcursor: pointer;\n}\n\n:host > span.smoothly-icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n:host > .smoothly-icons > .smoothly-invalid {\n\tdisplay: none;\n\tpadding: 0.5rem;\n}\n\n:host[invalid] > .smoothly-icons > .smoothly-invalid {\n\tdisplay: flex;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Clearable } from \"../../Clearable\"\nimport { Editable } from \"../../Editable\"\nimport { Input } from \"../../Input\"\nimport { Looks } from \"../../Looks\"\nimport { Color } from \"./../../../../model\"\n\n@Component({\n\ttag: \"smoothly-input-date-range\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateRange implements Clearable, Input, Editable {\n\tprivate startTextElement?: HTMLSmoothlyDateTextElement\n\tprivate endTextElement?: HTMLSmoothlyDateTextElement\n\tprivate calendarElement?: HTMLSmoothlyCalendarElement\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true }) locale?: isoly.Locale\n\t@Prop({ reflect: true }) name: string = \"dateRange\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ mutable: true }) start: isoly.Date | undefined\n\t@Prop({ mutable: true }) end: isoly.Date | undefined\n\t@Prop({ reflect: true }) placeholder: string\n\t@Prop({ reflect: true }) alwaysShowGuide = false\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ reflect: true }) errorMessage?: string\n\t@Prop() max?: isoly.Date\n\t@Prop() min?: isoly.Date\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate hasFocus = false\n\tprivate observer = Editable.Observer.create(this)\n\tprivate initialStart?: isoly.Date\n\tprivate initialEnd?: isoly.Date\n\t@State() open: boolean\n\t@State() startHasText = false\n\t@State() endHasText = false\n\t@Event() smoothlyInput: EventEmitter<{ [name: string]: Partial<isoly.DateRange> | undefined }>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput<Partial<isoly.DateRange> | undefined>>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\n\tasync componentWillLoad() {\n\t\tthis.setInitialValue()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"start\")\n\tstartChanged(_: isoly.Date | undefined, oldValue: isoly.Date | undefined) {\n\t\tthis.updateValue(oldValue, this.end)\n\t}\n\t@Watch(\"end\")\n\tendChanged(_: isoly.Date | undefined, oldValue: isoly.Date | undefined) {\n\t\tthis.updateValue(this.start, oldValue)\n\t}\n\n\tasync updateValue(oldStart: isoly.Date | undefined, oldEnd: isoly.Date | undefined) {\n\t\tif (oldStart != this.start || oldEnd != this.end) {\n\t\t\tthis.isDifferentFromInitial = this.initialStart != this.start || this.initialEnd != this.end\n\t\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\t\tthis.observer.publish()\n\t\t}\n\t\tif (!this.hasFocus) {\n\t\t\tthis.startTextElement?.setValue(this.start)\n\t\t\tthis.endTextElement?.setValue(this.end)\n\t\t}\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputDateRange) => void>): void {\n\t\tInput.registerSubAction(this, event)\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\t}\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\tonClick(event: MouseEvent): void {\n\t\tconst includesStartTextElement = !!this.startTextElement && event.composedPath().includes(this.startTextElement)\n\t\tconst includesEndTextElement = !!this.endTextElement && event.composedPath().includes(this.endTextElement)\n\t\tconst includesTextElement = includesStartTextElement || includesEndTextElement\n\t\tif (!includesTextElement && !this.readonly && !this.disabled) {\n\t\t\tthis.start && !this.end ? this.endTextElement?.select() : this.startTextElement?.select()\n\t\t}\n\t\tif (!this.readonly && !this.disabled) {\n\t\t\tthis.open = !this.open || includesTextElement\n\t\t}\n\t}\n\tasync onSmoothlyDateTextChange(event: CustomEvent<isoly.Date | undefined>, startOrEnd: \"start\" | \"end\") {\n\t\tevent.stopPropagation()\n\t\tconst newValue = event.detail ?? undefined\n\t\tconst start = startOrEnd == \"start\" ? newValue : this.start\n\t\tconst end = startOrEnd == \"end\" ? newValue : this.end\n\t\tif (isoly.Date.is(start) && isoly.Date.is(end) && start > end) {\n\t\t\t// Swap values\n\t\t\tthis.start = end\n\t\t\tthis.end = start\n\t\t\tthis.startTextElement?.setValue(this.start)\n\t\t\tthis.endTextElement?.setValue(this.end)\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t} else if (this[startOrEnd] != newValue) {\n\t\t\tthis[startOrEnd] = newValue\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<Partial<isoly.DateRange> | undefined> {\n\t\treturn this.start || this.end ? { start: this.start, end: this.end } : undefined\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Method()\n\tasync edit(editable: boolean) {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset() {\n\t\tthis.start = this.initialStart\n\t\tthis.end = this.initialEnd\n\t}\n\t@Method()\n\tasync setInitialValue() {\n\t\tthis.initialStart = this.start\n\t\tthis.initialEnd = this.end\n\t\tthis.isDifferentFromInitial = false\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.start = undefined\n\t\tthis.end = undefined\n\t\tthis.smoothlyInput.emit({ [this.name]: undefined })\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\ttabindex={this.disabled ? undefined : 0}\n\t\t\t\tclass={{\n\t\t\t\t\t\"has-value\": !!(this.start || this.end),\n\t\t\t\t\t\"has-text\": !!(this.startHasText || this.endHasText),\n\t\t\t\t\t\"floating-label\": this.alwaysShowGuide,\n\t\t\t\t}}>\n\t\t\t\t<span class=\"smoothly-date-range-input-part\" onClick={(e: MouseEvent) => this.onClick(e)}>\n\t\t\t\t\t<slot name=\"start\" />\n\t\t\t\t\t<label class={\"label float-on-focus\"}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t</label>\n\t\t\t\t\t{this.placeholder && <span class=\"smoothly-date-range-placeholder\">{this.placeholder}</span>}\n\t\t\t\t\t<smoothly-date-text\n\t\t\t\t\t\tref={el => (this.startTextElement = el)}\n\t\t\t\t\t\tclass=\"start-date-text\"\n\t\t\t\t\t\tlocale={this.locale}\n\t\t\t\t\t\tonSmoothlyDateTextHasText={e => (e.stopPropagation(), (this.startHasText = e.detail))}\n\t\t\t\t\t\tonSmoothlyDateTextFocusChange={e => (e.stopPropagation(), (this.hasFocus = e.detail))}\n\t\t\t\t\t\tonSmoothlyDateHasPartialDate={e => (e.stopPropagation(), this.calendarElement?.jumpTo(e.detail))}\n\t\t\t\t\t\tonSmoothlyDateTextChange={e => (e.stopPropagation(), this.onSmoothlyDateTextChange(e, \"start\"))}\n\t\t\t\t\t\tonSmoothlyDateTextNext={e => (e.stopPropagation(), this.endTextElement?.select())}\n\t\t\t\t\t\tonSmoothlyDateTextDone={e => (\n\t\t\t\t\t\t\te.stopPropagation(),\n\t\t\t\t\t\t\tthis.end ? (this.startTextElement?.deselect(), (this.open = false)) : this.endTextElement?.select()\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tvalue={this.start}\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t/>\n\t\t\t\t\t<span class=\"smoothly-date-range-separator\"> – </span>\n\t\t\t\t\t<smoothly-date-text\n\t\t\t\t\t\tref={el => (this.endTextElement = el)}\n\t\t\t\t\t\tclass=\"end-date-text\"\n\t\t\t\t\t\tlocale={this.locale}\n\t\t\t\t\t\tonSmoothlyDateTextHasText={e => (e.stopPropagation(), (this.endHasText = e.detail))}\n\t\t\t\t\t\tonSmoothlyDateTextFocusChange={e => (e.stopPropagation(), (this.hasFocus = e.detail))}\n\t\t\t\t\t\tonSmoothlyDateHasPartialDate={e => (e.stopPropagation(), this.calendarElement?.jumpTo(e.detail))}\n\t\t\t\t\t\tonSmoothlyDateTextChange={e => (e.stopPropagation(), this.onSmoothlyDateTextChange(e, \"end\"))}\n\t\t\t\t\t\tonSmoothlyDateTextPrevious={e => (e.stopPropagation(), this.startTextElement?.select(\"end\"))}\n\t\t\t\t\t\tonSmoothlyDateTextNext={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyDateTextDone={e => (e.stopPropagation(), this.endTextElement?.deselect(), (this.open = false))}\n\t\t\t\t\t\tvalue={this.end}\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\t/>\n\t\t\t\t</span>\n\t\t\t\t<span class={\"smoothly-icons\"}>\n\t\t\t\t\t<smoothly-icon class=\"smoothly-invalid\" name=\"alert-circle\" size=\"small\" tooltip={this.errorMessage} />\n\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t</span>\n\t\t\t\t{this.open && (\n\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\tref={el => (this.calendarElement = el)}\n\t\t\t\t\t\tdoubleInput\n\t\t\t\t\t\tonSmoothlyDateSet={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyDateRangeSet={e => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t\tthis.start = e.detail.start\n\t\t\t\t\t\t\tthis.end = e.detail.end\n\t\t\t\t\t\t\tthis.smoothlyInput.emit({ [this.name]: e.detail })\n\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: e.detail })\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvalue={this.start}\n\t\t\t\t\t\tstart={this.start}\n\t\t\t\t\t\tend={this.end}\n\t\t\t\t\t\tmax={this.max}\n\t\t\t\t\t\tmin={this.min}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tposition: relative;\n\tmax-width: 100vw;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n\tmin-height: var(--input-min-height);\n}\n\n:host>smoothly-input {\n\t--input-min-height: calc(var(--input-min-height) - 2px);\n\t--smoothly-input-border-focus: none;\n}\n\n:host:not([readonly])>smoothly-input>div>input {\n\tcursor: pointer;\n}\n\n:host[disabled],\n:host[disabled]>smoothly-input>div>input {\n\tcursor: not-allowed;\n}\n\n:host[looks=transparent] smoothly-input {\n\toutline: none;\n}\n\n:host>smoothly-calendar {\n\tposition: absolute;\n\tz-index: 20;\n\ttop: 4rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tmin-width: 18rem;\n\tmax-width: 22rem;\n}\n\n:host>smoothly-calendar::before {\n\tcontent: \"\";\n\tbox-sizing: border-box;\n\tposition: absolute;\n\ttop: -0.55rem;\n\tleft: 2rem;\n\tz-index: 9;\n\ttransform: rotate(45deg);\n\twidth: 1rem;\n\theight: 1rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tborder-top: 1px solid rgb(var(--smoothly-input-border));\n\tborder-left: 1px solid rgb(var(--smoothly-input-border));\n}\n\n:host>span.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n:host>smoothly-input[name=\"date\"] {\n\twidth: 12rem;\n}\n:host>smoothly-input[name=\"hour\"] {\n\twidth: 4rem;\n}\n:host>smoothly-input[name=\"minute\"] {\n\tmin-width: 4rem;\n\tflex-grow: 1;\n}\n:host>span.colon {\n\tpadding: \n\t\tvar(--input-value-padding-top) \n\t\tvar(--input-padding-side) \n\t\tvar(--input-value-padding-bottom) \n\t\tvar(--input-padding-side);\n}\n:host>.icons>.smoothly-invalid {\n\tdisplay: none;\n\tz-index: 2;\n\tcursor: pointer;\n\tpadding: 0.5rem;\n}\n:host[invalid]>.icons>.smoothly-invalid {\n\tdisplay: flex;\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\tWatch,\n} from \"@stencil/core\"\nimport { isoly } from \"isoly\"\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-date-time\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDateTime implements ComponentWillLoad, Clearable, Input, Editable {\n\t@Element() element: HTMLElement\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ reflect: true }) errorMessage?: string\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate initialValue?: isoly.DateTime\n\tprivate observer = Editable.Observer.create(this)\n\t@Prop({ mutable: true }) value?: isoly.DateTime\n\t@Prop({ mutable: true }) open: boolean\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop() min?: isoly.DateTime\n\t@Prop() max?: isoly.DateTime\n\t@State() date?: isoly.Date\n\t@State() hour?: number\n\t@State() minute?: number\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyValueChange: EventEmitter<isoly.DateTime>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\n\tcomponentWillLoad(): void {\n\t\tthis.setInitialValue()\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t\tthis.valueChange(this.value)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<isoly.DateTime | undefined> {\n\t\tconst value =\n\t\t\tthis.date && typeof this.hour == \"number\" && typeof this.minute == \"number\"\n\t\t\t\t? `${this.date}T${`${this.hour}`.padStart(2, \"0\")}:${`${this.minute}`.padStart(2, \"0\")}:00.000Z`\n\t\t\t\t: undefined\n\t\treturn isoly.DateTime.is(value) ? value : undefined\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t\tthis.date = undefined\n\t\tthis.hour = undefined\n\t\tthis.minute = undefined\n\t}\n\n\t@Watch(\"date\")\n\t@Watch(\"hour\")\n\t@Watch(\"minute\")\n\tasync handleChange() {\n\t\tconst value = await this.getValue()\n\t\tthis.smoothlyValueChange.emit(value)\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.observer.publish()\n\t}\n\n\t@Watch(\"value\")\n\tvalueChange(value?: isoly.DateTime) {\n\t\tif (isoly.DateTime.is(value)) {\n\t\t\tthis.date = isoly.DateTime.getDate(value)\n\t\t\tthis.hour = isoly.DateTime.getHour(value)\n\t\t\tthis.minute = isoly.DateTime.getMinute(value)\n\t\t}\n\t\tthis.smoothlyValueChange.emit(value)\n\t\tthis.smoothlyInput.emit({ [this.name]: value })\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\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\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputDateTime) => void>): void {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: Event): void {\n\t\t!event.composedPath().includes(this.element) && this.open && (this.open = !this.open)\n\t}\n\t@Method()\n\tasync edit(editable: boolean) {\n\t\tthis.readonly = !editable\n\t}\n\t@Method()\n\tasync reset() {\n\t\tif (isoly.DateTime.is(this.initialValue)) {\n\t\t\tthis.date = isoly.DateTime.getDate(this.initialValue)\n\t\t\tthis.hour = isoly.DateTime.getHour(this.initialValue)\n\t\t\tthis.minute = isoly.DateTime.getMinute(this.initialValue)\n\t\t} else {\n\t\t\tthis.date = undefined\n\t\t\tthis.hour = undefined\n\t\t\tthis.minute = undefined\n\t\t}\n\t}\n\t@Method()\n\tasync setInitialValue() {\n\t\tthis.initialValue = await this.getValue()\n\t\tthis.isDifferentFromInitial = false\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={this.looks == \"transparent\" ? this.looks : undefined}\n\t\t\t\t\tname={\"date\"}\n\t\t\t\t\tonFocus={() => !this.readonly && !this.disabled && (this.open = !this.open)}\n\t\t\t\t\tonClick={() => !this.readonly && !this.disabled && (this.open = !this.open)}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\ttype=\"date\"\n\t\t\t\t\tvalue={this.date}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.date = e.detail.date\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyUserInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t\t\t\t}}>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-input>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tname=\"hour\"\n\t\t\t\t\ttype=\"integer\"\n\t\t\t\t\tmax={23}\n\t\t\t\t\tpad={2}\n\t\t\t\t\tvalue={this.hour}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tplaceholder=\"hh\"\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.hour = e.detail.hour\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyUserInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<span class=\"colon\">:</span>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tname=\"minute\"\n\t\t\t\t\ttype=\"integer\"\n\t\t\t\t\tmax={59}\n\t\t\t\t\tpad={2}\n\t\t\t\t\tvalue={this.minute}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tplaceholder=\"mm\"\n\t\t\t\t\tonSmoothlyInputLoad={e => e.stopPropagation()}\n\t\t\t\t\tonSmoothlyInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.minute = e.detail.minute\n\t\t\t\t\t}}\n\t\t\t\t\tonSmoothlyUserInput={async e => {\n\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t\t<span class=\"icons\">\n\t\t\t\t\t<smoothly-icon class=\"smoothly-invalid\" name=\"alert-circle\" size=\"small\" tooltip={this.errorMessage} />\n\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t</span>\n\t\t\t\t{this.open && !this.readonly && (\n\t\t\t\t\t<smoothly-calendar\n\t\t\t\t\t\tdoubleInput={false}\n\t\t\t\t\t\tvalue={this.value ? isoly.DateTime.getDate(this.value) : undefined}\n\t\t\t\t\t\tmin={this.min ? isoly.DateTime.getDate(this.min) : undefined}\n\t\t\t\t\t\tmax={this.max ? isoly.DateTime.getDate(this.max) : undefined}\n\t\t\t\t\t\tonSmoothlyDateSet={async e => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\tthis.date = e.detail\n\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t\t\t\t\t\tthis.open = false\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<div slot={\"year-label\"}>\n\t\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div slot={\"month-label\"}>\n\t\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-calendar>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-top: 2em;\n\tmargin-bottom: 10rem;\n}\n\n:host .select-div-row {\n\tdisplay: flex;\n}\n\n:host .select-div-row smoothly-input {\n flex: 1;\n}\n\nsmoothly-input-demo-standard {\n\tmargin-bottom: 2rem;\n}\n\ndiv.inputs {\n\tmax-width: min(calc(100% - 2rem), 56rem);\n\tmargin: auto;\n}\n\ndiv.inputs>h2:not(:first-child) {\n\tpadding-top: 3em;\n\tmargin-top: 3em;\n\tborder-top: 1px solid black;\n}\n\n.checkbox-group {\n\tdisplay: flex;\n\tgap: 1.5em;\n\talign-items: center;\n\tbackground-color: rgb(var(--smoothly-input-background));\n}\n\n.select-div {\n\tdisplay: flex;\n\t/* justify-content: space-between; */\n\tgap: 1em;\n\tflex-wrap: wrap;\n}\n\n.select-div>* {\n\tflex-grow: 1;\n\tmin-width: min(100%, var(--smoothly-form-input-min-width, 18rem));\n\tflex-basis: 40%;\n}\n","import { Component, Event, EventEmitter, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemo {\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\t@State() alphanumeric: string = \"!@##\"\n\tprivate numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]\n\t@Event() smoothlyUrlUpdate: EventEmitter<{ path: string; query?: string }>\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-input-demo-standard />\n\t\t\t\t<smoothly-input-date-demo />\n\t\t\t\t<smoothly-input-demo-user-input />\n\t\t\t\t<smoothly-input-demo-radio />\n\t\t\t\t<div class=\"inputs\">\n\t\t\t\t\t<h2>Calendar</h2>\n\t\t\t\t\t<smoothly-input-date name=\"some-date\">Calendar</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date-time name=\"someDateTime\" value={isoly.DateTime.now()}>\n\t\t\t\t\t\tDateTime\n\t\t\t\t\t</smoothly-input-date-time>\n\t\t\t\t\t<h2>Date Range</h2>\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-01\"\n\t\t\t\t\t\tmax=\"2025-01-31\"\n\t\t\t\t\t/>\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\">\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" size=\"icon\" />\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tlooks=\"grid\"\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\"--smoothly-input-border-radius\": \"0.5rem\",\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" size=\"icon\" />\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<h2>Date</h2>\n\t\t\t\t\t<smoothly-input-date>Date</smoothly-input-date>\n\t\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\t\tDate\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date value=\"2021-10-28\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" size=\"icon\" />\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<smoothly-input-date value=\"2021-10-28\">\n\t\t\t\t\t\tDate\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" size=\"icon\" />\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<h2>Select</h2>\n\t\t\t\t\t<div class=\"select-div\">\n\t\t\t\t\t\t<smoothly-input-select name=\"select-dessert\" looks=\"border\">\n\t\t\t\t\t\t\t<label slot=\"label\">Select with clear button</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"1\">Ice cream</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"2\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"3\" disabled>\n\t\t\t\t\t\t\t\tDisabled Item\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"4\">Cookie</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"5\">Croissant</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"6\">Chocolate fondue</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select multiple name=\"select-dessert-multiple\" looks=\"border\">\n\t\t\t\t\t\t\t<label slot=\"label\">Select multiple with reset button</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"ice cream\">Ice cream</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"sponge cake\">Sponge cake</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"cookie\">\n\t\t\t\t\t\t\t\tCookie\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"croissant\">Croissant</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"chocolate fondue\">\n\t\t\t\t\t\t\t\tChocolate fondue\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-input-reset size=\"icon\" slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select name=\"spirit-animals\" looks=\"border\" mutable>\n\t\t\t\t\t\t\t<label slot=\"label\">Select or add new options</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"manatee\">Manatee</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item selected value=\"cthulu\">\n\t\t\t\t\t\t\t\tCthulu\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select ordered menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t\t<label slot=\"label\">Alphabet ordered select</label>\n\t\t\t\t\t\t\t{Array.from({ length: 26 })\n\t\t\t\t\t\t\t\t.map((_, i) => String.fromCharCode(i + 65))\n\t\t\t\t\t\t\t\t.map(char => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value={char} selected={char == \"H\"}>\n\t\t\t\t\t\t\t\t\t\t{char}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select multiple menuHeight=\"7.5items\" placeholder=\"Select...\" name=\"select-month\">\n\t\t\t\t\t\t\t<label slot=\"label\">Month multiple select</label>\n\t\t\t\t\t\t\t<smoothly-item value=\"1\">January</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"2\">February</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"3\">March</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"4\">April</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"5\">May</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"6\">June</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"7\">July</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"8\">August</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"9\">September</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"10\">October</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"11\">November</smoothly-item>\n\t\t\t\t\t\t\t<smoothly-item value=\"12\">December</smoothly-item>\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<div class=\"select-div-row\">\n\t\t\t\t\t\t\t<smoothly-input-select name=\"select-icon\" clearable={false} showSelected={false}>\n\t\t\t\t\t\t\t\t<smoothly-item value=\"folder\" selected>\n\t\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"folder-outline\" />\n\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t<smoothly-item value=\"camera\">\n\t\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"camera-outline\" />\n\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t<smoothly-item value=\"boat\">\n\t\t\t\t\t\t\t\t\t<smoothly-icon size=\"small\" name=\"boat-outline\" />\n\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input-select name=\"select-number\" clearable={false}>\n\t\t\t\t\t\t\t\t{this.numbers.map(number => (\n\t\t\t\t\t\t\t\t\t<smoothly-item value=\"number\" selected={number === 3}>\n\t\t\t\t\t\t\t\t\t\t{number}\n\t\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t\t<smoothly-input name=\"name\" value=\"Sten Qvist\">\n\t\t\t\t\t\t\t\tName\n\t\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<h2>Duration</h2>\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 => (this.duration = e.detail.duration)}>\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\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<h2>Integer with Min/Max</h2>\n\t\t\t\t\t<smoothly-input name=\"days\" type=\"integer\" min={0} max={365}>\n\t\t\t\t\t\tDays per year (0-365)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"hour\" type=\"integer\" min={0} max={23}>\n\t\t\t\t\t\tHours per day (0-23)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"minute\" type=\"integer\" min={0} max={59}>\n\t\t\t\t\t\tMinutes per hour (0-59)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input name=\"minute\" type=\"integer\" min={18} max={120}>\n\t\t\t\t\t\tAge (18-120)\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<h2>Invalid text with warning icon and tooltip</h2>\n\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tcopyable\n\t\t\t\t\t\tname=\"alphanumeric\"\n\t\t\t\t\t\tinvalid={!/^[a-zA-Z0-9]+$/.test(this.alphanumeric)}\n\t\t\t\t\t\terrorMessage={\"Only alphanumeric allowed\"}\n\t\t\t\t\t\tvalue={this.alphanumeric}\n\t\t\t\t\t\tonSmoothlyInput={e => (this.alphanumeric = e.detail.alphanumeric)}>\n\t\t\t\t\t\tAlphanumeric\n\t\t\t\t\t</smoothly-input>\n\n\t\t\t\t\t<h2>Identifiers</h2>\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\t<h2>Input Alternatives</h2>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.last\">\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\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\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input type=\"text\" name=\"name.first\" placeholder=\"Smith\">\n\t\t\t\t\t\tLast Name\n\t\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-input placeholder=\"test\" />\n\t\t\t\t\t<smoothly-input-submit slot=\"submit\" fill=\"solid\" onSubmit={(e: Event) => alert(e)} color=\"success\" />\n\t\t\t\t\t<h4>Smoothly checkboxes</h4>\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</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\t<h4>Smoothly Radio Buttons</h4>\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<label slot=\"label\">Clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected 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 value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\" />\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<label slot=\"label\">Not clearable</label>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"second\"}>Label 2</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"fourth\"}>Label 4</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"fifth\"}>Label 5</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"sixth\"}>Label 6</smoothly-input-radio-item>\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<smoothly-input-range-demo />\n\t\t\t\t\t<smoothly-input-color-demo />\n\t\t\t\t\t<smoothly-input-price-demo />\n\t\t\t\t\t<smoothly-back-to-top />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));\n\tmax-width: min(56rem, 100%);\n\tmargin: auto;\n\tflex-direction: column;\n\tgap: 0.5rem;\n}\n\n:host :not(smoothly-input-date):not(smoothly-input-date-range) {\n\tgrid-column: 1 / -1;\n}\n","import { Component, h, Host, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-input-demo-radio\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemoRadio {\n\t@State() selected: string\n\n\t@Watch(\"selected\")\n\tselectedChange() {\n\t\tconsole.log(\"selected\", this.selected)\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>radio input - column direction</h2>\n\t\t\t\t<smoothly-input-radio\n\t\t\t\t\tname=\"radio\"\n\t\t\t\t\tdirection=\"column\"\n\t\t\t\t\tonSmoothlyInput={e => (this.selected = e.detail.radio as string)}>\n\t\t\t\t\t<smoothly-input-radio-item value=\"1\">\n\t\t\t\t\t\t<span>Option 1</span>\n\n\t\t\t\t\t\t<span slot=\"detail\">\n\t\t\t\t\t\t\tLorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et\n\t\t\t\t\t\t\tdolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex\n\t\t\t\t\t\t\tea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu\n\t\t\t\t\t\t\tfugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt\n\t\t\t\t\t\t\tmollit anim id est laborum.\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t<smoothly-input-radio-item value=\"2\" selected>\n\t\t\t\t\t\t<span>Option 2</span>\n\t\t\t\t\t\t<div slot=\"detail\">\n\t\t\t\t\t\t\t<smoothly-tabs>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"Dog\" name=\"dog\" open>\n\t\t\t\t\t\t\t\t\t🐕\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"Cat\" name=\"cat\">\n\t\t\t\t\t\t\t\t\t🐈\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t\t<smoothly-tab label=\"Rat\" name=\"rat\">\n\t\t\t\t\t\t\t\t\t🐀\n\t\t\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t\t\t</smoothly-tabs>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t</smoothly-input-radio>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tmax-width: min(calc(100% - 0.5rem), 48rem);\n\tmargin: auto;\n}\n\n:host h2,\n:host p {\n\tmargin: .5rem 0;\n}\n:host > .description {\n\t--smoothly-form-input-min-width: 18rem;\n}\n:host smoothly-input-range[name=borderRadius] {\n\tflex-basis: 100%;\n}\ndiv.input-wrapper {\n\tdisplay: grid;\n\tmargin-top: 1rem;\n\tgrid-template-columns: 1fr 9rem;\n\tgap: 1rem;\n\tposition: relative;\n\tjustify-content: space-around;\n}\ndiv.input-wrapper > [name] {\n\tgrid-column: 1 / 2;\n}\ndiv.input-wrapper > .width {\n\twidth: 100%;\n\ttext-align: center;\n\tborder-bottom: 1px dashed black;\n}\ndiv.input-wrapper > .height {\n\talign-content: center;\n\tgrid-column: 2 / 3;\n\tborder-left: 1px dashed black;\n\tpadding-left: 1rem;\n\tcontent: \"hello\";\n}\ndiv.input-wrapper > .left-padding {\n\twidth: 0.5rem;\n\tgrid-column: 1 / 2;\n\twhite-space: nowrap;\n\toverflow: visible;\n\tposition: relative;\n\tcursor: default;\n}\ndiv.input-wrapper > .left-padding::before {\n\tcontent: \"\";\n\tposition: absolute;\n\twidth: 100%;\n\ttop: 1.5rem;\n\tbottom: -1rem;\n\tborder: 1px dashed black;\n\tz-index: 2;\n}\ndiv.input-wrapper > .left-padding:hover::before { \n\tbottom: -100vh;\n}\n","import { Component, Element, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\nimport { Color } from \"../../../../model\"\nimport { Looks } from \"../../Looks\"\n\ntype Options = {\n\tcolor?: Color\n\tlooks?: Looks\n\tborderRadius?: number\n\treadonly?: boolean\n\tdisabled?: boolean\n\tinvalid?: boolean\n\terrorMessage?: string\n\tshowLabel?: boolean\n\tplaceholder?: string\n\talwaysShowGuide?: boolean\n}\n\n@Component({\n\ttag: \"smoothly-input-demo-standard\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemoStandard {\n\t@Element() element: HTMLElement\n\t@State() duration: isoly.TimeSpan = { hours: 8 }\n\t@State() options: Options = {}\n\n\tconnectedCallback() {\n\t\tthis.updateInputHeightText()\n\t}\n\tcomponentDidRender() {\n\t\tthis.updateInputHeightText()\n\t}\n\n\tupdateInputHeightText() {\n\t\tconst rootFontSize = Number(getComputedStyle(document.documentElement).fontSize.replace(\"px\", \"\"))\n\t\tthis.element.querySelectorAll(\".height\").forEach((el: HTMLDivElement) => {\n\t\t\tconst height = el.clientHeight\n\t\t\tel.innerHTML = `<b>${height / rootFontSize}rem</b> (${height}pixels)`\n\t\t})\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div class=\"description\">\n\t\t\t\t\t<h2>Input Standard</h2>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tHeight of input should be <code>3rem</code> including border. This is should result in a 48 pixel height at\n\t\t\t\t\t\t100% zoom, assuming a root font-size of 16 pixels.\n\t\t\t\t\t</p>\n\t\t\t\t\t<smoothly-form looks={\"grid\"} onSmoothlyFormInput={(e: CustomEvent<Options>) => (this.options = e.detail)}>\n\t\t\t\t\t\t<smoothly-input-select name=\"color\">\n\t\t\t\t\t\t\t<span slot=\"label\">Color</span>\n\t\t\t\t\t\t\t{Color.values.map(c => (\n\t\t\t\t\t\t\t\t<smoothly-item value={c}>\n\t\t\t\t\t\t\t\t\t<span color={c}>{c}</span>\n\t\t\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-select name=\"looks\">\n\t\t\t\t\t\t\t<span slot=\"label\">Looks</span>\n\t\t\t\t\t\t\t{Looks.values.map(l => (\n\t\t\t\t\t\t\t\t<smoothly-item value={l}>{l}</smoothly-item>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t\t<smoothly-input-range label={\"Border Radius (rem)\"} name={\"borderRadius\"} min={0} max={2} step={0.25} />\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"readonly\">Readonly</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"disabled\">Disabled</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"invalid\">Invalid</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input name=\"errorMessage\" value=\"This is not a valid value\">\n\t\t\t\t\t\t\tError Message\n\t\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"showLabel\" checked>\n\t\t\t\t\t\t\tShow Label\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t\t<smoothly-input name=\"placeholder\">Placeholder</smoothly-input>\n\t\t\t\t\t\t<smoothly-input-checkbox name=\"alwaysShowGuide\">\n\t\t\t\t\t\t\tAlways Show Guide (for date inputs)\n\t\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t</smoothly-form>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"input-wrapper\" style={{ \"--smoothly-input-border-radius\": `${this.options.borderRadius}rem` }}>\n\t\t\t\t\t<div class=\"width\">width: 100%</div>\n\t\t\t\t\t<div class=\"left-padding\">padding-left: 0.5rem</div>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tname=\"text\"\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tinvalid={this.options.invalid}\n\t\t\t\t\t\terrorMessage={this.options.errorMessage}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}\n\t\t\t\t\t\tplaceholder={this.options.placeholder}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Text</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-select\n\t\t\t\t\t\tname=\"month\"\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\tmenuHeight=\"6.7items\"\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tinvalid={this.options.invalid}\n\t\t\t\t\t\terrorMessage={this.options.errorMessage}\n\t\t\t\t\t\tplaceholder={this.options.placeholder}>\n\t\t\t\t\t\t{this.options.showLabel && <label slot=\"label\">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\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-select>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\t\tname={\"checkbox\"}\n\t\t\t\t\t\tchecked\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}>\n\t\t\t\t\t\tCheck\n\t\t\t\t\t\t<smoothly-input-reset slot=\"end\" />\n\t\t\t\t\t</smoothly-input-checkbox>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-radio\n\t\t\t\t\t\tname={\"radio\"}\n\t\t\t\t\t\tclearable\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <label slot=\"label\">Radio</label>}\n\t\t\t\t\t\t<smoothly-input-radio-item value={\"first\"}>Label 1</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-radio-item selected 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 value={\"third\"}>Label 3</smoothly-input-radio-item>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-radio>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-file\n\t\t\t\t\t\tname={\"file\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\t// TODO - invalid\n\t\t\t\t\t\t// TODO - errorMessage\n\t\t\t\t\t\tshowLabel={this.options.showLabel}\n\t\t\t\t\t\tplaceholder={this.options.placeholder}>\n\t\t\t\t\t\t{this.options.showLabel && <span slot={\"label\"}>File</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-file>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-range\n\t\t\t\t\t\tname={\"range\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\t// TODO - invalid\n\t\t\t\t\t\t// TODO - errorMessage\n\t\t\t\t\t\tlabel={this.options.showLabel ? \"Range\" : undefined}\n\t\t\t\t\t\t// TODO - disabled\n\t\t\t\t\t\t// TODO - placeholder\n\t\t\t\t\t>\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-range>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-color\n\t\t\t\t\t\tname={\"color\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\t// TODO - invalid\n\t\t\t\t\t\t// TODO - errorMessage\n\t\t\t\t\t\tshowLabel={this.options.showLabel}\n\t\t\t\t\t\t// TODO - placeholder\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.options.showLabel && <span>Color</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-color>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-date\n\t\t\t\t\t\tname={\"date\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tinvalid={this.options.invalid}\n\t\t\t\t\t\terrorMessage={this.options.errorMessage}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}\n\t\t\t\t\t\tplaceholder={this.options.placeholder}\n\t\t\t\t\t\talwaysShowGuide={this.options.alwaysShowGuide}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Date</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-date>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-date-time\n\t\t\t\t\t\tname={\"dateTime\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tinvalid={this.options.invalid}\n\t\t\t\t\t\terrorMessage={this.options.errorMessage}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}\n\t\t\t\t\t\t// TODO - placeholder\n\t\t\t\t\t>\n\t\t\t\t\t\tDateTime\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-date-time>\n\t\t\t\t\t<div class=\"height\" />\n\n\t\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\t\tname={\"dateRange\"}\n\t\t\t\t\t\tcolor={this.options.color}\n\t\t\t\t\t\tlooks={this.options.looks}\n\t\t\t\t\t\treadonly={this.options.readonly}\n\t\t\t\t\t\tdisabled={this.options.disabled}\n\t\t\t\t\t\tinvalid={this.options.invalid}\n\t\t\t\t\t\terrorMessage={this.options.errorMessage}\n\t\t\t\t\t\tplaceholder={this.options.placeholder}\n\t\t\t\t\t\talwaysShowGuide={this.options.alwaysShowGuide}\n\t\t\t\t\t\tshowLabel={this.options.showLabel}>\n\t\t\t\t\t\t{this.options.showLabel && <span>Date Range</span>}\n\t\t\t\t\t\t<smoothly-input-clear slot=\"end\" />\n\t\t\t\t\t</smoothly-input-date-range>\n\t\t\t\t\t<div class=\"height\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tmax-width: min(100%, 56rem);\n\tmargin-inline: auto;\n\tdisplay: grid;\n\tgrid-template-columns: 12rem 1fr;\n\tgap: 1rem;\n}\n:host > div {\n\tgrid-column: 1 / -1;\n}\n\n\n/* Mobile */\n@media (max-width: 48rem) {\n\t:host {\n\t\tgrid-template-columns: 1fr;\n\t}\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-demo-user-input\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputDemoUserInput {\n\tprivate readonly values = [\"zero\", \"one\", \"two\", \"three\", \"four\", \"five\"]\n\t@State() textIndex?: number\n\t@State() selectIndex?: number\n\t@State() checkboxChecked: boolean\n\t@State() radioIndex?: number\n\t@State() rangeValue?: number\n\tprivate readonly colors = [\"#ff0000\", \"#00ff00\", \"#0000ff\", \"#ffff00\", \"#00ffff\", \"#ff00ff\"]\n\t@State() colorIndex?: number\n\t@State() dateValue?: isoly.Date\n\t@State() datetimeValue?: isoly.DateTime\n\t@State() dateRangeValue?: isoly.DateRange\n\n\tincrement(index?: number): number {\n\t\treturn index === undefined ? 0 : (index + 1) % this.values.length\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<h2>User Input Event</h2>\n\t\t\t\t\t<p>\n\t\t\t\t\t\tThese inputs demonstrate how user input is handled. The <code>smoothlyUserInput</code> event fires only when\n\t\t\t\t\t\tthe user interacts with an input, not when its value is changed programmatically (such as by clicking the\n\t\t\t\t\t\tbuttons above).\n\t\t\t\t\t\t<br />\n\t\t\t\t\t\tCheck the console to see the details of each <code>smoothlyUserInput</code> event.\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t<smoothly-button color=\"tertiary\" onClick={() => (this.textIndex = this.increment(this.textIndex))}>\n\t\t\t\t\tChange text\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-text\"\n\t\t\t\t\tvalue={this.textIndex === undefined ? \"\" : this.values[this.textIndex]}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tText input\n\t\t\t\t</smoothly-input>\n\n\t\t\t\t<smoothly-button onClick={() => (this.selectIndex = this.increment(this.selectIndex))} color=\"tertiary\">\n\t\t\t\t\tNext select item\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-select\"\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\t<span slot=\"label\">Select input</span>\n\t\t\t\t\t{this.values.map((value, index) => (\n\t\t\t\t\t\t<smoothly-item value={index} selected={index == this.selectIndex}>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\n\t\t\t\t<smoothly-button color=\"tertiary\" onClick={() => (this.checkboxChecked = !this.checkboxChecked)}>\n\t\t\t\t\tToggle checkbox\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-checkbox\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-checkbox\"\n\t\t\t\t\tchecked={this.checkboxChecked}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tCheckbox input\n\t\t\t\t</smoothly-input-checkbox>\n\n\t\t\t\t<smoothly-button color=\"tertiary\" onClick={() => (this.radioIndex = this.increment(this.radioIndex))}>\n\t\t\t\t\tNext radio item\n\t\t\t\t</smoothly-button>\n\t\t\t\t{/* Bug: radio has bugs when changing programmatically - TODO: consider changing to using a regular radio input as underlying controls */}\n\t\t\t\t<smoothly-input-radio\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-radio\"\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\t<span slot=\"label\">Radio input</span>\n\t\t\t\t\t{this.values.map((value, index) => (\n\t\t\t\t\t\t<smoothly-input-radio-item value={value} selected={index == this.radioIndex}>\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-radio>\n\n\t\t\t\t{/* Not sure how to test smoothly-input-file */}\n\n\t\t\t\t<smoothly-button color=\"tertiary\" onClick={() => (this.rangeValue = this.increment(this.rangeValue))}>\n\t\t\t\t\tNext range value\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-range\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-range\"\n\t\t\t\t\tstep={1}\n\t\t\t\t\tmin={0}\n\t\t\t\t\tmax={this.values.length}\n\t\t\t\t\tvalue={this.rangeValue}\n\t\t\t\t\tlabel={\"Range Input\"}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}\n\t\t\t\t/>\n\n\t\t\t\t<smoothly-button color=\"tertiary\" onClick={() => (this.colorIndex = this.increment(this.colorIndex))}>\n\t\t\t\t\tNext color\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-color\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-color\"\n\t\t\t\t\tvalue={typeof this.colorIndex == \"number\" ? this.colors[this.colorIndex] : undefined}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tColor input\n\t\t\t\t</smoothly-input-color>\n\n\t\t\t\t<smoothly-button\n\t\t\t\t\tcolor=\"tertiary\"\n\t\t\t\t\tonClick={() => (this.dateValue = this.dateValue ? isoly.Date.next(this.dateValue) : isoly.Date.now())}>\n\t\t\t\t\tNext day\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-date\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-date\"\n\t\t\t\t\tvalue={this.dateValue}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tDate input\n\t\t\t\t</smoothly-input-date>\n\n\t\t\t\t<smoothly-button\n\t\t\t\t\tcolor=\"tertiary\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t(this.datetimeValue = this.datetimeValue\n\t\t\t\t\t\t\t? isoly.DateTime.nextDay(this.datetimeValue)\n\t\t\t\t\t\t\t: isoly.DateTime.now())\n\t\t\t\t\t}>\n\t\t\t\t\tNext date time\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-date-time\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-datetime\"\n\t\t\t\t\tvalue={this.datetimeValue}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tDate time input\n\t\t\t\t</smoothly-input-date-time>\n\n\t\t\t\t<smoothly-button\n\t\t\t\t\tcolor=\"tertiary\"\n\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t(this.dateRangeValue = this.dateRangeValue\n\t\t\t\t\t\t\t? { start: isoly.Date.next(this.dateRangeValue.start), end: isoly.Date.next(this.dateRangeValue.end) }\n\t\t\t\t\t\t\t: { start: isoly.Date.now(), end: isoly.Date.next(isoly.Date.now(), 10) })\n\t\t\t\t\t}>\n\t\t\t\t\tNext date range\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-input-date-range\n\t\t\t\t\tlooks=\"border\"\n\t\t\t\t\tname=\"demo-user-input-daterange\"\n\t\t\t\t\tstart={this.dateRangeValue?.start}\n\t\t\t\t\tend={this.dateRangeValue?.end}\n\t\t\t\t\tonSmoothlyUserInput={e => console.debug(e.type, e.detail.name, e.detail.value)}>\n\t\t\t\t\tDate range input\n\t\t\t\t</smoothly-input-date-range>\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([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\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 { 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() 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: \"form\" | \"input\" = \"input\"\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\"\n\t@Prop() tooltip = \"Edit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => 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(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<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon class=\"default\" name=\"create-outline\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n:host {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tflex-wrap: wrap;\n\toverflow: hidden;\n\tposition: relative;\n\twidth: 100%;\n\tpadding-left: var(--input-padding-side);\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tbox-sizing: border-box;\n}\n\n:host>div>div.drag-overlay {\n\tposition: absolute;\n\tinset: 0;\n\tbackground-color: rgb(var(--smoothly-input-hover-background), 0.6);\n\tborder-radius: var(--smoothly-input-border-radius);\n\tborder: 0.25rem dashed rgb(var(--smoothly-input-hover-foreground));\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n}\n:host>div>div.drag-overlay>smoothly-icon {\n\tcolor: rgb(var(--smoothly-input-hover-foreground));\n}\n\n:host:not(.dragging)>div>div.drag-overlay {\n\tdisplay: none;\n}\n\n:host>div.input>input {\n\toverflow: hidden;\n\theight: 0;\n\twidth: 0;\n\tpadding: 0;\n}\n\n:host:not([show-label])>div.input {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-bottom: 0.2rem;\n}\n\n:host:not([show-label])>smoothly-button:not(:empty) {\n\tmargin-right: 1ch;\n}\n\n:host([show-label]) > div.input {\n\tdisplay: flex;\n\tpadding-block: var(--input-value-padding-top) var(--input-value-padding-bottom);\n\theight: 100%;\n\tbox-sizing: border-box;\n\tflex-grow: 1;\n}\n\n:host>div>smoothly-button {\n\t--smoothly-button-height: 1.4rem;\n\tmargin: 0;\n\tborder: none;\n}\n\n:host>label {\n\tleft: var(--input-padding-side);\n}\n\n:host:not([readonly]),\n:host:not([readonly]) * {\n\tcursor: pointer;\n}\n\n:host[disabled],\n:host[disabled] * {\n\tcursor: not-allowed;\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 } 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-file\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputFile implements ComponentWillLoad, Input, Clearable, Editable {\n\t@Element() element: HTMLSmoothlyInputFileElement\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop() accept?: string\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\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@State() dragging = false\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate observer = Editable.Observer.create(this)\n\tprivate transfer: DataTransfer = new DataTransfer()\n\tprivate input?: HTMLInputElement\n\tprivate initialValue: SmoothlyInputFile[\"value\"]\n\n\tprivate get files(): FileList {\n\t\tthis.transfer.items.clear()\n\t\tthis.value && this.transfer.items.add(this.value)\n\t\treturn this.transfer.files\n\t}\n\n\tasync componentWillLoad(): Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<File | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputFile) => void>): void {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\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@Method()\n\tasync binary(): Promise<boolean> {\n\t\treturn true\n\t}\n\n\t@Watch(\"value\")\n\tasync valueChanged(): Promise<void> {\n\t\tthis.isDifferentFromInitial = this.initialValue !== this.value\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.observer.publish()\n\t}\n\n\tinputHandler(event: Event): void {\n\t\tevent.stopPropagation()\n\t\tif (this.input?.files?.length) {\n\t\t\tthis.value = this.input?.files[0]\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.value })\n\t\t}\n\t}\n\tdropHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t\tif (event.dataTransfer?.files.length) {\n\t\t\tthis.value = event.dataTransfer.files[0]\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.value })\n\t\t}\n\t}\n\tclickHandler(event: MouseEvent): void {\n\t\tif (!this.readonly && !this.disabled && !event.composedPath().find(target => target == this.input)) {\n\t\t\tthis.input?.click()\n\t\t}\n\t}\n\tdragOverHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\tevent.stopPropagation()\n\t}\n\tdragEnterHandler(event: DragEvent): void {\n\t\tevent.preventDefault()\n\t\t!this.readonly && !this.disabled && (this.dragging = true)\n\t}\n\tdragLeaveHandler(event: DragEvent): void {\n\t\tevent.stopPropagation()\n\t\tthis.dragging = false\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ dragging: this.dragging, \"has-value\": !!this.value }}\n\t\t\t\ttabindex={this.disabled ? undefined : 0}\n\t\t\t\tonClick={(e: MouseEvent) => this.clickHandler(e)}\n\t\t\t\tonDragOver={(e: DragEvent) => this.dragOverHandler(e)}\n\t\t\t\tonDragEnter={(e: DragEvent) => this.dragEnterHandler(e)}>\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 disabled={this.disabled} type={\"button\"} color={this.color} fill={\"clear\"} size=\"flexible\">\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>{this.value?.name ?? this.placeholder}</span>\n\t\t\t\t\t<div class={\"drag-overlay\"} onDrop={e => this.dropHandler(e)} onDragLeave={e => this.dragLeaveHandler(e)}>\n\t\t\t\t\t\t<smoothly-icon name={\"document-attach-outline\"} />\n\t\t\t\t\t</div>\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\tdisabled={this.disabled}\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={this.files}\n\t\t\t\t\t\tonInput={e => this.inputHandler(e)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<span onClick={(e: MouseEvent) => e.stopPropagation()}>\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t</span>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\tbackground-color: rgb(var(--smoothly-input-background));\n}\n\n:host:not([in-calendar])>smoothly-input-select {\n\tdisplay: flex;\n\tflex: 1;\n}\n\n:host[looks=line],\n:host[looks=border],\n:host[looks=transparent] {\n\tgap: 2em;\n}\n\n:host:not([previous])>smoothly-icon:first-of-type,\n:host:not([next])>smoothly-icon:last-of-type {\n\tdisplay: none;\n}\n:host>smoothly-icon {\n\tdisplay: flex;\n\talign-self: center;\n\tcursor: pointer;\n}\n:host>smoothly-icon.disabled {\n\topacity: 0.5;\n\tcursor: not-allowed;\n}\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 { isoly } from \"isoly\"\nimport { Data } from \"../../../model\"\nimport { Color } from \"../../../model\"\nimport * as generate from \"../../calendar/generate\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\n\n@Component({\n\ttag: \"smoothly-input-month\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputMonth implements ComponentWillLoad, Input, Editable {\n\tisDifferentFromInitial: boolean\n\tparent: Editable | undefined\n\t@Element() element: HTMLSmoothlyInputMonthElement\n\t@Prop({ reflect: true, mutable: true }) readonly: boolean\n\t@Prop({ reflect: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ mutable: true }) value?: isoly.Date = isoly.Date.now()\n\t@Prop({ mutable: true }) max?: isoly.Date\n\t@Prop({ mutable: true }) min?: isoly.Date\n\t@Prop({ reflect: true }) next = false\n\t@Prop({ reflect: true }) previous = false\n\t@Prop({ reflect: true }) inCalendar = false\n\t@Prop({ reflect: true }) showLabel = true\n\t@State() allowPreviousMonth = true\n\t@State() allowNextMonth = true\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\tprivate year?: HTMLSmoothlyInputSelectElement\n\tprivate month?: HTMLSmoothlyInputSelectElement\n\tprivate observer = Editable.Observer.create(this)\n\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLooks.emit(looks => (this.looks = this.looks ?? looks))\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\tprivate adjustMonth(delta: number): void {\n\t\tif (!this.readonly) {\n\t\t\tconst date = isoly.Date.parse(this.value ?? isoly.Date.now())\n\t\t\tdate.setMonth(date.getMonth() + delta)\n\t\t\tthis.value = isoly.Date.create(date)\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"value\")\n\t@Watch(\"min\")\n\tsetAllowPreviousMonth() {\n\t\tconst previousMonth = isoly.Date.previousMonth(this.value ?? isoly.Date.now()).substring(0, 7)\n\t\tconst minMonth = this.min?.substring(0, 7)\n\t\tthis.allowPreviousMonth = !minMonth || previousMonth >= minMonth\n\t}\n\t@Watch(\"value\")\n\t@Watch(\"max\")\n\tsetAllowNextMonth() {\n\t\tconst nextMonth = isoly.Date.nextMonth(this.value ?? isoly.Date.now()).substring(0, 7)\n\t\tconst maxMonth = this.max?.substring(0, 7)\n\t\tthis.allowNextMonth = !maxMonth || nextMonth <= maxMonth\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<isoly.Date | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.year?.clear()\n\t\tthis.month?.clear()\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\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.year?.reset()\n\t\tthis.month?.reset()\n\t}\n\t@Method()\n\tasync setInitialValue(): Promise<void> {\n\t\tthis.year?.setInitialValue()\n\t\tthis.month?.setInitialValue()\n\t}\n\tinputHandler(event: CustomEvent<Record<string, any>>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tconst year = event.detail[`${this.name}-year`]\n\t\t\tconst month = event.detail[`${this.name}-month`]\n\t\t\tif (month && isoly.Date.is(month)) {\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(month)\n\t\t\t} else if (year && isoly.Date.is(year)) {\n\t\t\t\tthis.value = isoly.Date.firstOfMonth(year)\n\t\t\t}\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLooks\")\n\tsmoothlyInputLooksHandler(event: CustomEvent<(looks?: Looks, color?: Color) => void>): void {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.detail(this.looks, this.color)\n\t\t}\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: Editable) => void>): Promise<void> {\n\t\tif (event.target != this.element) {\n\t\t\tevent.stopPropagation()\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"caret-back-outline\"}\n\t\t\t\t\tsize={\"tiny\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={\"default\"}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\tdisabled: this.readonly || !this.allowPreviousMonth,\n\t\t\t\t\t}}\n\t\t\t\t\tonClick={() => this.allowPreviousMonth && this.adjustMonth(-1)}\n\t\t\t\t/>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.year = e)}\n\t\t\t\t\tname={`${this.name}-year`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tordered\n\t\t\t\t\tinCalendar={this.inCalendar}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tonSmoothlyUserInput={e => {\n\t\t\t\t\t\tconst month = e.detail.value\n\t\t\t\t\t\tif (month && isoly.Date.is(month)) {\n\t\t\t\t\t\t\tconst value = isoly.Date.firstOfMonth(month)\n\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value })\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"year-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.years(this.value ?? isoly.Date.now(), this.min, this.max).map(year => (\n\t\t\t\t\t\t<smoothly-item key={year.date} value={year.date} selected={year.selected || this.value == year.date}>\n\t\t\t\t\t\t\t{year.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-input-select\n\t\t\t\t\tref={e => (this.month = e)}\n\t\t\t\t\tname={`${this.name}-month`}\n\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tlooks={this.looks}\n\t\t\t\t\tmenuHeight=\"5.5items\"\n\t\t\t\t\trequired\n\t\t\t\t\tordered\n\t\t\t\t\tinCalendar={this.inCalendar}\n\t\t\t\t\tshowLabel={this.showLabel}\n\t\t\t\t\tonSmoothlyInput={e => this.inputHandler(e)}\n\t\t\t\t\tonSmoothlyUserInput={e => {\n\t\t\t\t\t\tconst year = e.detail.value\n\t\t\t\t\t\tif (year && isoly.Date.is(year)) {\n\t\t\t\t\t\t\tconst value = isoly.Date.firstOfMonth(year)\n\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value })\n\t\t\t\t\t\t}\n\t\t\t\t\t}}\n\t\t\t\t\tsearchDisabled>\n\t\t\t\t\t<div slot={\"label\"}>\n\t\t\t\t\t\t<slot name={\"month-label\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t{generate.months(this.value ?? isoly.Date.now()).map(month => (\n\t\t\t\t\t\t<smoothly-item key={month.date} value={month.date} selected={month.selected || this.value == month.date}>\n\t\t\t\t\t\t\t{month.name}\n\t\t\t\t\t\t</smoothly-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-select>\n\t\t\t\t<smoothly-icon\n\t\t\t\t\tname={\"caret-forward-outline\"}\n\t\t\t\t\tsize={\"tiny\"}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={\"default\"}\n\t\t\t\t\tclass={{ disabled: this.readonly || !this.allowNextMonth }}\n\t\t\t\t\tonClick={() => this.allowNextMonth && this.adjustMonth(1)}\n\t\t\t\t/>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, h, Host, State, VNode } from \"@stencil/core\"\nimport { isoly } from \"isoly\"\n\n@Component({\n\ttag: \"smoothly-input-price-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputPriceDemo {\n\t@State() currencies: isoly.Currency[] = [\"EUR\", \"USD\", \"GBP\"]\n\t@State() currency?: isoly.Currency = \"USD\"\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>State demo on smoothly-input</h2>\n\t\t\t\t<p>This demo/test the internal state of the smoothly-input component.</p>\n\t\t\t\t<p>The currency of the price should update when switching between the currencies.</p>\n\t\t\t\t<smoothly-input-radio\n\t\t\t\t\tname={\"currency\"}\n\t\t\t\t\tonSmoothlyInput={e => (this.currency = isoly.Currency.is(e.detail.currency) ? e.detail.currency : undefined)}>\n\t\t\t\t\t{this.currencies.map(currency => (\n\t\t\t\t\t\t<smoothly-input-radio-item key={currency} selected={currency == this.currency} value={currency}>\n\t\t\t\t\t\t\t{currency}\n\t\t\t\t\t\t</smoothly-input-radio-item>\n\t\t\t\t\t))}\n\t\t\t\t</smoothly-input-radio>\n\t\t\t\t<smoothly-input type={\"price\"} currency={this.currency}>\n\t\t\t\t\tprice\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\tbackground-color: rgb(var(--smoothly-input-background));\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-left: var(--input-padding-side);\n\tbox-sizing: border-box;\n}\n:host[show-label]>div {\n\tposition: relative;\n\tpadding-block: var(--input-value-padding-top) var(--input-value-padding-bottom);\n}\n:host>div,\n:host>div>div.options {\n\tdisplay: flex;\n\tgap: 1.5rem;\n\twidth: 100%;\n}\n:host[direction=column]>div>div.options {\n\tflex-direction: column;\n}\n:host::slotted([slot=end]) {\n\tmargin-right: 0;\n\tmargin-left: auto;\n}\n\n:host[disabled] smoothly-input-radio-item * {\n\tcursor: not-allowed;\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 { Color, Data } from \"../../../model\"\nimport { Clearable } from \"../Clearable\"\nimport { Editable } from \"../Editable\"\nimport { Input } from \"../Input\"\nimport { Looks } from \"../Looks\"\nimport { RadioItemSelect } from \"./RadioItemSelect\"\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\t@Element() element: HTMLSmoothlyInputRadioElement\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate active?: RadioItemSelect\n\tprivate valueReceivedOnLoad = false\n\tprivate observer = Editable.Observer.create(this)\n\tinitialValue?: RadioItemSelect\n\t@Prop({ mutable: true }) value: any = undefined\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true }) direction?: \"row\" | \"column\"\n\t@Prop() clearable?: boolean\n\t@Prop({ mutable: true, reflect: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop({ reflect: true }) name: string\n\t@Prop({ reflect: true }) showLabel = true\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\t!this.valueReceivedOnLoad && this.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\tthis.initialValue = this.active\n\t}\n\t@Listen(\"smoothlyRadioItemRegister\")\n\thandleRegister(event: CustomEvent<(parent: SmoothlyInputRadio) => void>) {\n\t\tevent.stopPropagation()\n\t\tevent.detail(this)\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputRadio) => void>): void {\n\t\tInput.registerSubAction(this, event)\n\t}\n\t@Listen(\"smoothlyRadioItemSelect\")\n\tsmoothlyRadioInputHandler(event: CustomEvent<RadioItemSelect>): void {\n\t\tevent.stopPropagation()\n\t\tif ((!this.readonly && !this.disabled) || !this.valueReceivedOnLoad) {\n\t\t\tif (this.clearable && this.active?.value === event.detail.value) {\n\t\t\t\tthis.clear()\n\t\t\t} else 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\tif (event.detail.userInitiated) {\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.value })\n\t\t}\n\t\t!this.valueReceivedOnLoad && (this.valueReceivedOnLoad = !this.valueReceivedOnLoad)\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<any | undefined> {\n\t\treturn this.value\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\tasync valueChanged(): Promise<void> {\n\t\tthis.valueReceivedOnLoad && (this.isDifferentFromInitial = this.initialValue?.value !== this.value)\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class=\"floating-label\">\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<slot name=\"label\" />\n\t\t\t\t\t<div class=\"options\">\n\t\t\t\t\t\t<slot />\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\tflex-wrap: wrap;\n\talign-items: center;\n\tposition: relative;\n}\nsmoothly-input-radio:not([disabled]):not([readonly]) :host>* {\n\tcursor: pointer;\n}\nsmoothly-input-radio[disabled] :host>* {\n\tcursor: not-allowed;\n}\n\n:host>input:focus-visible+smoothly-icon {\n\toutline: 2px solid rgb(var(--smoothly-primary-color));\n\tborder-radius: 1px;\n}\n:host>smoothly-icon {\n\t--smoothly-color-contrast: var(--smoothly-input-foreground);\n}\nsmoothly-input-radio:not([disabled]):not([readonly]) :host>smoothly-icon[name=checkmark-circle] {\n\t--smoothly-color-contrast: var(--smoothly-success-color);\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:host>label {\n\tpadding: 0 .3em;\n\twhite-space: nowrap;\n}\n\n:host[selected] ::slotted([slot=\"detail\"]) { \n\tdisplay: block; \n\twidth: 100%; \n} \n:host ::slotted([slot=\"detail\"]) { \n\tdisplay: none; \n}\n\n","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Input } from \"../../Input\"\nimport { Looks } from \"../../Looks\"\nimport { SmoothlyInputRadio } from \"../index\"\nimport { RadioItemSelect } from \"../RadioItemSelect\"\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, reflect: true }) selected = false\n\t@Prop({ mutable: true, reflect: true }) looks?: Looks\n\t@Prop({ mutable: true }) name: string\n\t@State() disabled?: boolean\n\t@Event() smoothlyRadioItemSelect: EventEmitter<RadioItemSelect>\n\t@Event() smoothlyRadioItemRegister: EventEmitter<(parent: SmoothlyInputRadio) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyRadioItemRegister.emit(parent => {\n\t\t\tthis.name = parent.name\n\t\t\tparent.listen(async p => {\n\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\tthis.disabled = p.disabled\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t\tthis.selected && this.inputHandler(false)\n\t}\n\tinputHandler(userInitiated: boolean): void {\n\t\tthis.smoothlyRadioItemSelect.emit({\n\t\t\tvalue: this.value,\n\t\t\tselected: this.selected,\n\t\t\tselect: s => (this.selected = s),\n\t\t\tuserInitiated,\n\t\t})\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={() => this.inputHandler(true)}>\n\t\t\t\t<input name={this.name} type=\"radio\" checked={this.selected} disabled={this.disabled} />\n\t\t\t\t<smoothly-icon name={this.selected ? \"checkmark-circle\" : \"ellipse-outline\"} size=\"small\" tooltip=\"Select\" />\n\t\t\t\t<label>\n\t\t\t\t\t<slot />\n\t\t\t\t</label>\n\t\t\t\t<slot name=\"detail\" />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../shared.css\";\n\n* {\n\tbox-sizing: border-box;\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(--smoothly-input-background));\n\tbox-sizing: border-box;\n}\n:host>div:not([slot]) {\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\twidth: 100%;\n\tpadding-right: var(--input-padding-side);\n}\n:host>div>smoothly-input {\n\twidth: 12em;\n\t--input-min-height: calc(3rem - 2px);\n\t--smoothly-input-border-focus: none;\n}\n:host>div>smoothly-input label {\n\twhite-space: nowrap;\n}\n:host.output-side-right>div {\n\tpadding: 0;\n}\n:host.output-side-right>div>smoothly-input {\n\ttext-align: center;\n\tmargin-left: var(--input-padding-side);\n\tborder: none;\n\tbox-sizing: border-box;\n\twidth: 5em;\n\torder: 3;\n\tmargin: 0;\n}\n:host.output-side-right>div>smoothly-display,\n:host:not(.output-side-right)>div>label {\n\tdisplay: none;\n}\n:host.output-side-right>div>smoothly-input input {\n\tpadding: 0;\n\ttext-align: center;\n}\n:host.output-side-right>div>smoothly-input label {\n\twidth: 100%;\n}\n:host.output-side-right>div>label {\n\tposition: static;\n\tfont-size: inherit;\n\ttext-align: center;\n\tmargin: 0 var(--input-padding-side);\n}\n\n/*--------------------Reset browserspecific CSS------------------ */\n:host>div>input[type=range] {\n\t-webkit-appearance: none;\n\t/* Hides the slider so that custom slider can be made */\n\twidth: 100%;\n\t/* Specific width is required for Firefox. */\n\tbackground: transparent;\n\t/* Otherwise white in Chrome */\n\theight: 1.5em;\n\tpadding: 0 .4em;\n}\n\n/*--------------------THUMB------------------ */\n/* WebKit/Blink */\n:host>div>input[type=range]::-webkit-slider-thumb {\n\t-webkit-appearance: none;\n\theight: 0.8em;\n\twidth: 0.8em;\n\tborder-radius: 100%;\n\tmargin-top: -.25em;\n\tborder: none;\n\t/* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */\n}\n:host:not([disabled]):not([readonly])>div>input[type=range]::-webkit-slider-thumb {\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n}\n\n/* Firefox */\n:host>div>input[type=range]::-moz-range-thumb {\n\theight: 0.8em;\n\twidth: 0.8em;\n\tborder-radius: 100%;\n\tborder: none;\n\tbackground-color: rgb(var(--smoothly-input-foreground));\n}\n:host:not([disabled]):not([readonly])>div>input[type=range]::-moz-range-thumb {\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n}\n\n/*--------------------SLIDER TRACK------------------ */\n:host>div>input[type=range]::-webkit-slider-runnable-track {\n\theight: .3rem;\n\tborder-radius: 20px;\n\tbackground-color: rgb(var(--smoothly-input-foreground));\n}\n:host:not([disabled]):not([readonly])>div>input[type=range]::-webkit-slider-runnable-track {\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n}\n\n:host>div>input[type=range]::-moz-range-track {\n\twidth: 100%;\n\theight: .3rem;\n\tborder-radius: 20px;\n\tbackground-color: rgb(var(--smoothly-input-foreground));\n}\n:host:not([disabled]):not([readonly])>div>input[type=range]::-moz-range-track {\n\tbackground-color: rgb(var(--smoothly-primary-color));\n\tcursor: pointer;\n}\n\n:host:not([value]):not([disabled]):not([readonly])>div>input[type=range]::-webkit-slider-runnable-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host:not([value]):not([disabled]):not([readonly])>div>input[type=range]::-moz-range-track {\n\tbackground-color: rgb(var(--smoothly-primary-tint));\n}\n\n:host[disabled]>div>input[type=range]::-webkit-slider-thumb,\n:host[disabled]>div>input[type=range]::-moz-range-thumb,\n:host[disabled]>div>input[type=range]::-webkit-slider-runnable-track,\n:host[disabled]>div>input[type=range]::-moz-range-track,\n:host[disabled],\n:host[disabled] * {\n\tcursor: not-allowed\n}\n\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\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 { 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-range\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputRange implements Input, Clearable, Editable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate observer = Editable.Observer.create(this)\n\tprivate input?: HTMLSmoothlyInputElement\n\tprivate initialValue: number | undefined = undefined\n\t@Element() element: HTMLSmoothlyInputRangeElement\n\t@Prop({ mutable: true }) value: number | undefined = undefined\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ mutable: true }) defined = false\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled?: boolean\n\t@Prop() type: Extract<tidily.Type, \"text\" | \"percent\"> = \"text\"\n\t@Prop() min = 0\n\t@Prop() max = 100\n\t@Prop({ reflect: true }) name = \"range\"\n\t@Prop() step?: number\n\t@Prop() outputSide: \"right\" | \"left\" = \"left\"\n\t@Prop() label: string\n\t@State() showInput = false\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInput: EventEmitter<Record<string, any>>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit((looks, color) => ((this.looks = this.looks ?? looks), (this.color = color)))\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.value && (this.initialValue = this.value)\n\t\tthis.valueChanged()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tsmoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputRange) => void>) {\n\t\tInput.registerSubAction(this, event)\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\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<number | undefined> {\n\t\treturn this.value\n\t}\n\t@Method()\n\tasync clear(): Promise<void> {\n\t\tthis.value = undefined\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\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.isDifferentFromInitial = false\n\t\tthis.valueChanged()\n\t}\n\t@Watch(\"value\")\n\tvalueChanged(): void {\n\t\tconst decimals = !this.step ? undefined : (this.step.toString().split(\".\")[1]?.length ?? 0)\n\t\tthis.value = Number.isNaN(this.value) || this.value == undefined ? undefined : +this.value.toFixed(decimals)\n\t\tthis.isDifferentFromInitial = this.initialValue != this.value\n\t\tthis.defined = typeof this.value == \"number\"\n\t\tthis.observer.publish()\n\t\tthis.smoothlyInput.emit({ [this.name]: this.value })\n\t}\n\t@Watch(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\n\t}\n\tsetValue(value: number | undefined): void {\n\t\tif (value == undefined) {\n\t\t\tthis.value = undefined\n\t\t} else if (value < this.min) {\n\t\t\tthis.value = this.min\n\t\t} else if (value > this.max) {\n\t\t\tthis.value = this.max\n\t\t} else {\n\t\t\tthis.value = value\n\t\t}\n\t\tthis.input && (this.input.value = this.type == \"text\" ? this.value?.toString() : this.value)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{\n\t\t\t\t\t\"output-side-right\": this.outputSide === \"right\",\n\t\t\t\t\t\"show-label\": this.outputSide === \"left\" && !!this.label,\n\t\t\t\t}}>\n\t\t\t\t<slot name=\"start\" />\n\t\t\t\t<div>\n\t\t\t\t\t<label htmlFor={this.name}>{this.label}</label>\n\t\t\t\t\t<smoothly-input\n\t\t\t\t\t\tref={e => (this.input = e)}\n\t\t\t\t\t\tlooks={undefined}\n\t\t\t\t\t\tcolor={this.color}\n\t\t\t\t\t\tname={this.name}\n\t\t\t\t\t\tshowLabel={this.outputSide === \"left\" && !!this.label}\n\t\t\t\t\t\ttype={this.type}\n\t\t\t\t\t\tonSmoothlyInputLoad={async e => (\n\t\t\t\t\t\t\te.stopPropagation(),\n\t\t\t\t\t\t\tthis.setValue(Input.Element.is(e.target) ? Number(await e.target.getValue()) : undefined)\n\t\t\t\t\t\t)}\n\t\t\t\t\t\tonSmoothlyBlur={e => e.stopPropagation()}\n\t\t\t\t\t\tonSmoothlyInput={async e => {\n\t\t\t\t\t\t\te.stopPropagation()\n\t\t\t\t\t\t\tthis.setValue(Input.Element.is(e.target) ? Number(await e.target.getValue()) : undefined)\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvalue={this.type == \"percent\" ? this.value : this.value?.toString()}\n\t\t\t\t\t\tplaceholder={this.outputSide === \"right\" ? \"-\" : undefined}\n\t\t\t\t\t\treadonly={this.readonly}\n\t\t\t\t\t\tdisabled={this.disabled}>\n\t\t\t\t\t\t{this.label}\n\t\t\t\t\t</smoothly-input>\n\t\t\t\t\t<smoothly-display label={(this.type == \"percent\" ? this.min * 100 : this.min).toString()} />\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 ?? \"any\"}\n\t\t\t\t\t\tdisabled={this.readonly || this.disabled}\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.setValue((event.target as HTMLInputElement).valueAsNumber)\n\t\t\t\t\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: this.value })\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tvalue={this.value ?? this.min}\n\t\t\t\t\t/>\n\t\t\t\t\t<smoothly-display label={(this.type == \"percent\" ? this.max * 100 : this.max).toString()} />\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 { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-input-range-demo\",\n})\nexport class SmoothlyInputRangeDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Range</h2>\n\t\t\t\t<h3>Phone Number</h3>\n\t\t\t\t<smoothly-input-range min={700000000} max={799999999} step={1} label={\"Phone Number\"} />\n\t\t\t\t<h3>Stars out of ten</h3>\n\t\t\t\t<smoothly-input-range max={10} step={1} label={\"Stars\"} />\n\t\t\t\t<h3>Percent</h3>\n\t\t\t\t<smoothly-input-range type=\"percent\" max={1} step={0.01} label={\"Percent\"} />\n\t\t\t\t<h3>With icon at start and clear button</h3>\n\t\t\t\t<smoothly-input-range step={1} name=\"range2\" label=\"Select\">\n\t\t\t\t\t<smoothly-icon name=\"checkmark-circle\" slot=\"start\" />\n\t\t\t\t\t<smoothly-input-clear size=\"icon\" slot=\"end\" />\n\t\t\t\t</smoothly-input-range>\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([type=\"input\"])::slotted(smoothly-button>button) {\n\tcursor: pointer;\n\tfilter: opacity(60%);\n\t--smoothly-button-foreground: var(--smoothly-input-foreground);\n\tbackground-color: transparent;\n}\n\n:host::slotted(smoothly-button>button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n\n:host([type=\"input\"]):hover ::slotted(smoothly-icon) {\n\tcursor: pointer;\n\tfilter: opacity(100%);\n}\n","import { Component, Event, EventEmitter, h, Host, Listen, Prop } from \"@stencil/core\"\nimport { Color, Fill } from \"../../../model\"\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() 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?: boolean\n\t@Prop({ reflect: true }) size: \"flexible\" | \"small\" | \"large\" | \"icon\" = \"icon\"\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: Editable) => 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\tparent.listen(async p => {\n\t\t\t\t\tif (Input.is(p)) {\n\t\t\t\t\t\tconst defined = typeof p.defined == \"boolean\" ? p.defined : Boolean(await p.getValue())\n\t\t\t\t\t\tthis.display = p.readonly || !defined ? false : p.isDifferentFromInitial\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}\n\t\t\t\t})\n\t\t\t\tif (typeof this.disabled !== \"boolean\") {\n\t\t\t\t\tthis.readonlyAtLoad = parent.readonly\n\t\t\t\t\tparent.listen(async p => {\n\t\t\t\t\t\tif (p instanceof SmoothlyForm) {\n\t\t\t\t\t\t\tthis.disabled = !this.readonlyAtLoad && !p.isDifferentFromInitial\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(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<smoothly-button\n\t\t\t\t\tdisabled={this.disabled}\n\t\t\t\t\tsize={this.size}\n\t\t\t\t\ttype={\"button\"}\n\t\t\t\t\tshape={this.shape}\n\t\t\t\t\texpand={this.expand}\n\t\t\t\t\tcolor={this.color}\n\t\t\t\t\tfill={this.fill ?? (this.type == \"input\" ? \"clear\" : undefined)}\n\t\t\t\t\tonClick={event => this.clickHandler(event)}>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<smoothly-icon flip=\"x\" name=\"refresh-outline\" size=\"tiny\" />\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","import { isly } from \"isly\"\n\nexport interface Item extends Item.Element {}\n\nexport namespace Item {\n\texport interface Element {\n\t\tvalue: any\n\t\tselected?: boolean\n\t\tdeselectable: boolean\n\t\tfilter: (filter: string) => Promise<void>\n\t}\n\texport namespace Element {\n\t\texport const type = isly.object<Element>({\n\t\t\tvalue: isly.any(),\n\t\t\tdeselectable: isly.boolean(),\n\t\t\tselected: isly.boolean().optional(),\n\t\t\tfilter: isly.function(),\n\t\t})\n\t\texport const is = type.is\n\t}\n\texport const type = Element.type.extend<Item>({})\n\texport const is = type.is\n}\n","export namespace layout {\n\texport function firstItemHeight(items: HTMLSmoothlyItemElement[]): number | undefined {\n\t\treturn items.find(item => item.clientHeight > 0)?.clientHeight\n\t}\n\texport function applyMenuHeight(element: HTMLElement, itemHeight: number, menuHeight: MenuHeight): void {\n\t\tconst height = menuHeight.endsWith(\"items\")\n\t\t\t? `${itemHeight * +(menuHeight.match(/^(\\d+(\\.\\d+)?|\\.\\d+)/g)?.[0] ?? \"10\")}px`\n\t\t\t: menuHeight\n\t\telement.style.setProperty(\"--menu-height\", height)\n\t}\n\texport function applyElementHeight(element: HTMLElement) {\n\t\telement?.style.setProperty(\"--element-height\", `${element.clientHeight}px`)\n\t}\n\texport type MenuHeight = `${number}${\"items\" | \"rem\" | \"px\" | \"vh\"}`\n}\n","export namespace menu {\n\texport function next(\n\t\titems: HTMLSmoothlyItemElement[],\n\t\tdirection: -1 | 1\n\t): { current?: HTMLSmoothlyItemElement; next: HTMLSmoothlyItemElement } {\n\t\tconst selectable = items.filter(item => !item.hidden && !item.disabled)\n\t\tconst currentIndex = selectable.findIndex(item => item.marked)\n\t\tlet index: number\n\t\tif (currentIndex == -1) {\n\t\t\tindex = 0\n\t\t} else {\n\t\t\tindex = (currentIndex + direction + selectable.length) % selectable.length\n\t\t}\n\t\treturn { current: selectable[currentIndex], next: selectable[index] }\n\t}\n\texport function hasVisibleItems(items: HTMLSmoothlyItemElement[]): boolean {\n\t\treturn items.some(item => !item.getAttribute(\"hidden\"))\n\t}\n\texport function markOnly(items: HTMLSmoothlyItemElement[], item: HTMLSmoothlyItemElement): void {\n\t\titems.map(i => (i.marked = i === item))\n\t}\n\texport function findFirstSelected(items: HTMLSmoothlyItemElement[]): HTMLSmoothlyItemElement | undefined {\n\t\treturn items.find(item => item.selected)\n\t}\n\texport function findFirstMarked(items: HTMLSmoothlyItemElement[]): HTMLSmoothlyItemElement | undefined {\n\t\treturn items.find(item => item.marked)\n\t}\n}\n","export namespace scroll {\n\texport function centerInView(container?: HTMLElement, item?: HTMLElement, behavior: ScrollBehavior = \"smooth\") {\n\t\tif (item && container) {\n\t\t\tcontainer.scrollTo({\n\t\t\t\ttop: item.offsetTop + item.offsetHeight / 2 - (container.clientHeight ?? 0) / 2,\n\t\t\t\tbehavior,\n\t\t\t})\n\t\t}\n\t}\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-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n\tpadding-left: var(--input-padding-side);\n}\n\n:host.open {\n\tborder-radius: var(--smoothly-input-border-radius) var(--smoothly-input-border-radius) 0 0;\n}\n\n\n:host>.select-display {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tpadding: var(--input-value-padding-top) .8rem var(--input-value-padding-bottom) 0;\n\toverflow: hidden;\n\twidth: 100%;\n\twhite-space: nowrap;\n\tgap: 1rem;\n\ttext-overflow: ellipsis;\n}\n:host:not([readonly]):not([disabled])>.select-display {\n\tcursor: pointer;\n}\n\n:host:not(:has([slot=label]))>.select-display,\n:host:not([show-label])>.select-display {\n\tpadding: .6rem .8rem .6rem 0;\n\talign-items: center;\n}\n\n:host>.select-display smoothly-icon {\n\tcolor: rgb(var(--smoothly-input-foreground));\n\tfill: rgb(var(--smoothly-input-foreground));\n\tstroke: rgb(var(--smoothly-input-foreground));\n}\n\n:host>div.icons {\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n}\n\n:host:hover>div.icons::slotted(smoothly-icon) {\n\tfilter: opacity(100%);\n}\n\n:host>div.icons>smoothly-icon[name=caret-down-outline],\n:host>div.icons>smoothly-icon[name=caret-forward-outline] {\n\topacity: .7;\n\theight: 100%;\n\tpadding-inline: var(--input-padding-side);\n}\n:host:not([readonly]):not([disabled])>div.icons>smoothly-icon[name=caret-down-outline],\n:host:not([readonly]):not([disabled])>div.icons>smoothly-icon[name=caret-forward-outline] {\n\tcursor: pointer;\n}\n\n:host[invalid]>div>smoothly-icon.smoothly-invalid {\n\tdisplay: block;\n\tpadding: 0.5rem;\n}\n\n:host>div>smoothly-icon.smoothly-invalid {\n\tdisplay: none\n}\n\n\n:host.has-value:has([slot=label]:not(:empty))>.select-display,\n:host:not(.has-value)[placeholder]>.select-display {\n\toverflow: hidden;\n\twidth: 100%;\n}\n\n\n:host>.dropdown {\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: absolute;\n\ttop: var(--element-height);\n\tz-index: 20;\n\tmax-height: var(--menu-height, unset);\n\toverflow-x: hidden;\n\toverflow-y: auto;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tinset-inline: 0;\n\tborder-radius: 0 0 var(--smoothly-input-border-radius) var(--smoothly-input-border-radius);\n\tborder: rgb(var(--smoothly-input-border, var(--smoothly-color-contrast))) solid 1px;\n\tborder-top: rgba(var(--smoothly-input-border, var(--smoothly-color-contrast)), .4) solid 1px;\n}\n:host:not(.open)>.dropdown {\n\tborder: 0;\n}\n:host[looks=\"grid\"]>.dropdown,\n:host[looks=border]>.dropdown,\n:host[looks=\"transparent\"]>.dropdown {\n\tinset-inline: -1px;\n}\n\n:host>.dropdown>.search {\n\tdisplay: flex;\n\tposition: sticky;\n\talign-items: center;\n\ttop: 0;\n\tgap: 1rem;\n\tpadding: .7rem .7rem .7rem .25rem;\n\tbackground-color: rgb(var(--smoothly-input-background));\n\tcolor: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n\tfill: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n\tstroke: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n}\n:host:not(.has-filter)>.dropdown>.search {\n\t/* hide search */\n\t/* search cant be display: none, since it is the focus element */\n\theight: 0;\n\tpadding: 0;\n\toverflow: hidden;\n\tpointer-events: none;\n}\n:host>.dropdown>.search::before {\n\t/* search have opacity without showing what is underneath */\n\tcontent: \"\";\n\tposition: absolute;\n\tinset: 0;\n\tbackground-color: rgba(var(--smoothly-primary-tint), 0.5);\n\tz-index: -1;\n}\n:host>.dropdown>.search>.search-input {\n\twidth: 100%;\n\tbackground-color: transparent;\n\tborder: none;\n\toutline: none;\n}\n:host>.dropdown>.search>smoothly-icon[name=\"search-outline\"],\n:host>.dropdown>.search>smoothly-icon[name=\"backspace-outline\"] {\n\tcolor: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n\tfill: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n\tstroke: rgb(var(--smoothly-input-foreground, var(--smoothly-color-contrast)));\n}\n\n\n/* --- multiple options --- */\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item) {\n\tposition: relative;\n}\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item::before) {\n\tcontent: \"\";\n\tdisplay: inline-block;\n\twidth: 1rem;\n\theight: 1rem;\n\tmargin-right: 0.5rem;\n\tborder: 1px solid rgb(var(--smoothly-input-foreground));\n\tborder-radius: 0.15rem;\n\tvertical-align: middle;\n}\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item[selected]::before) {\n\tborder-color: rgb(var(--smoothly-item-selected-foreground));\n}\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item:hover::before) {\n\tborder: 1px solid rgb(var(--smoothly-item-hover-foreground));\n}\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item[selected]::after) {\n\tcontent: \"✔\";\n\tposition: absolute;\n\tleft: 0.65rem; \n\tcolor: rgb(var(--smoothly-item-selected-foreground));\n}\n:host([multiple])::slotted(.dropdown>.menu>smoothly-item:hover::after) {\n\tcolor: rgb(var(--smoothly-item-hover-foreground));\n}\n:host>.dropdown {\n\tmin-width: fit-content;\n}\n:host>.dropdown>.menu[hidden] {\n\tdisplay: none;\n}\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\"\nimport { layout } from \"./layout\"\nimport { menu } from \"./menu\"\nimport { scroll } from \"./scroll\"\n\n@Component({\n\ttag: \"smoothly-input-select\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyInputSelect implements Input, Editable, Clearable, ComponentWillLoad {\n\tparent: Editable | undefined\n\tisDifferentFromInitial = false\n\tprivate initialValue: HTMLSmoothlyItemElement[] = []\n\tprivate initialValueHandled = false\n\tprivate observer = Editable.Observer.create(this)\n\tprivate displayElement?: HTMLElement\n\tprivate iconsElement?: HTMLElement\n\tprivate toggleElement?: HTMLElement\n\tprivate dropdownElement?: HTMLElement\n\tprivate searchElement?: HTMLInputElement\n\tprivate items: HTMLSmoothlyItemElement[] = []\n\tprivate itemHeight: number | undefined\n\t@Element() element: HTMLSmoothlyInputSelectElement\n\t@Prop({ reflect: true }) invalid?: boolean = false\n\t@Prop({ reflect: true }) errorMessage?: string\n\t@Prop({ reflect: true }) name = \"selected\"\n\t@Prop({ reflect: true, mutable: true }) color?: Color\n\t@Prop({ reflect: true, mutable: true }) looks?: Looks\n\t@Prop({ reflect: true }) showLabel = true\n\t@Prop({ reflect: true, mutable: true }) showSelected?: boolean = true\n\t@Prop({ reflect: true, mutable: true }) readonly = false\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop({ reflect: true }) inCalendar = false\n\t@Prop({ reflect: true }) ordered?: boolean\n\t@Prop({ reflect: true }) multiple = false\n\t@Prop() clearable = true\n\t@Prop({ mutable: true }) defined = false\n\t@Prop({ reflect: true }) placeholder?: string | any\n\t@Prop() menuHeight?: layout.MenuHeight\n\t@Prop() required = false\n\t@Prop() searchDisabled = false\n\t@Prop() mutable = false\n\tprivate lastOpen = false\n\t@State() open = false\n\t@State() selected: HTMLSmoothlyItemElement[] = []\n\t@State() filter = \"\"\n\t@State() addedItems: HTMLSmoothlyItemElement[] = []\n\t@Event() smoothlyInput: EventEmitter<Data>\n\t@Event() smoothlyUserInput: EventEmitter<Input.UserInput>\n\t@Event() smoothlyInputLooks: EventEmitter<(looks?: Looks, color?: Color) => void>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyFormDisable: EventEmitter<(disabled: boolean) => void>\n\t@Event() smoothlyItemSelect: EventEmitter<HTMLSmoothlyItemElement>\n\t@Event() smoothlySelectOpen: EventEmitter<boolean>\n\n\tcomponentWillLoad(): void | Promise<void> {\n\t\tthis.smoothlyInputLooks.emit(\n\t\t\t(looks, color) => ((this.looks = this.looks ?? looks), !this.color && (this.color = color))\n\t\t)\n\t\tthis.smoothlyInputLoad.emit(parent => (this.parent = parent))\n\t\t!this.readonly && this.smoothlyFormDisable.emit(readonly => (this.readonly = readonly))\n\t\tthis.observer.publish()\n\t}\n\tcomponentDidLoad(): void | Promise<void> {\n\t\tthis.selected && !this.initialValueHandled && (this.initialValue = [...this.selected])\n\t\tthis.initialValueHandled = true\n\t\tthis.onSelectedChange()\n\t}\n\tcomponentDidRender(): void | Promise<void> {\n\t\tthis.itemHeight ??= layout.firstItemHeight(this.items)\n\t\tif (this.menuHeight && this.itemHeight) {\n\t\t\tlayout.applyMenuHeight(this.element, this.itemHeight, this.menuHeight)\n\t\t}\n\t\tlayout.applyElementHeight(this.element)\n\n\t\tconst justOpened = this.open && !this.lastOpen\n\t\tif (justOpened && this.ordered) {\n\t\t\tthis.scrollToSelected()\n\t\t}\n\t}\n\tprivate scrollToSelected() {\n\t\tconst selectedItem = menu.findFirstSelected(this.items)\n\t\tif (selectedItem) {\n\t\t\tmenu.markOnly(this.items, selectedItem)\n\t\t\tscroll.centerInView(this.dropdownElement, selectedItem, \"instant\")\n\t\t}\n\t}\n\tasync disconnectedCallback() {\n\t\tif (!this.element.isConnected) {\n\t\t\tawait this.unregister()\n\t\t}\n\t}\n\t@Watch(\"name\")\n\tnameChange(_: string | undefined, oldName: string | undefined) {\n\t\tInput.formRename(this, oldName)\n\t}\n\t@Method()\n\tasync register() {\n\t\tInput.formAdd(this)\n\t}\n\t@Method()\n\tasync unregister() {\n\t\tInput.formRemove(this)\n\t}\n\t@Method()\n\tasync getValue(): Promise<any | any[] | undefined> {\n\t\treturn !this.multiple && this.selected[0]\n\t\t\t? this.selected[0].value\n\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}\n\t@Method()\n\tasync getItems(): Promise<HTMLSmoothlyItemElement[]> {\n\t\treturn this.items\n\t}\n\t@Method()\n\tasync listen(listener: Editable.Observer.Listener): Promise<void> {\n\t\tthis.observer.subscribe(listener)\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.isDifferentFromInitial = false\n\t\tthis.closeMenu()\n\t}\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.displayElement) {\n\t\t\t\tthis.displayElement.innerHTML = this.placeholder ?? \"\"\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.isDifferentFromInitial = false\n\t\tthis.initialValue = [...this.selected]\n\t}\n\t@Watch(\"selected\")\n\tasync onSelectedChange() {\n\t\tthis.initialValueHandled && (this.isDifferentFromInitial = !this.areValuesEqual(this.selected, this.initialValue))\n\t\tthis.defined = this.selected.length > 0\n\t\tthis.smoothlyInput.emit({ [this.name]: await this.getValue() })\n\t\tthis.observer.publish()\n\t}\n\t@Watch(\"required\")\n\tonRequiredChange(): void {\n\t\tthis.items.forEach(item => (item.deselectable = !this.required))\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(\"disabled\")\n\t@Watch(\"readonly\")\n\twatchingReadonly(): void {\n\t\tthis.observer.publish()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\tasync smoothlyInputLoadHandler(event: CustomEvent<(parent: SmoothlyInputSelect) => void>): Promise<void> {\n\t\tconst fromSelf = event.target && \"name\" in event.target && event.target.name !== this.name\n\t\tconst fromEndSlot = event.composedPath().some(e => e == this.iconsElement)\n\t\tif (fromSelf || fromEndSlot) {\n\t\t\tevent.stopPropagation()\n\t\t} else if (Item.Element.is(event.target)) {\n\t\t\tevent.stopPropagation()\n\t\t\tevent.target.deselectable = !this.required\n\t\t\tthis.items.push(event.target as HTMLSmoothlyItemElement)\n\t\t}\n\t\tInput.registerSubAction(this, event)\n\t\tthis.displaySelected()\n\t}\n\t@Listen(\"click\", { target: \"window\" })\n\tonWindowClick(event: MouseEvent): void {\n\t\tif (this.open && !event.composedPath().includes(this.element)) {\n\t\t\tthis.closeMenu()\n\t\t}\n\t}\n\t@Listen(\"smoothlyItemDOMChange\")\n\tonItemDomChange(e: CustomEvent) {\n\t\te.stopPropagation()\n\t\tconst item = e.target as HTMLSmoothlyItemElement\n\t\tif (item.selected) {\n\t\t\tthis.displaySelected()\n\t\t}\n\t}\n\t@Listen(\"smoothlyItemSelect\")\n\tasync onItemSelect(event: CustomEvent<{ userInitiated: boolean; item: HTMLSmoothlyItemElement }>): Promise<void> {\n\t\tevent.stopPropagation()\n\t\tconst item = event.detail.item\n\t\tif (this.multiple) {\n\t\t\tthis.selected = item.selected ? [...this.selected, item] : this.selected.filter(item => item.selected)\n\t\t} else if (item.selected || !this.items.some(e => e.selected)) {\n\t\t\tthis.selected[0] && (this.selected[0].hidden = this.selected[0].selected = false)\n\t\t\tthis.selected = !item.selected ? this.selected.filter(item => item.selected) : [item]\n\t\t\t!this.showSelected && item.selected && (item.hidden = true)\n\t\t}\n\t\tthis.displaySelected()\n\t\tif (event.detail.userInitiated) {\n\t\t\tthis.smoothlyUserInput.emit({ name: this.name, value: await this.getValue() })\n\t\t}\n\t}\n\t@Watch(\"open\")\n\tonClosed(open: boolean, before: boolean): void {\n\t\tthis.lastOpen = before\n\t\tif (!open) {\n\t\t\tconst markedItem = menu.findFirstMarked(this.items)\n\t\t\tif (markedItem) {\n\t\t\t\tmarkedItem.marked = false\n\t\t\t}\n\t\t}\n\t\tthis.smoothlySelectOpen.emit(open)\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 = this.selected.map(option => `<div>${option.innerHTML}</div>`).join(\"\")\n\t\tthis.displayElement &&\n\t\t\t(this.displayElement.innerHTML = this.selected.length > 0 ? displayString : (this.placeholder ?? \"\"))\n\t}\n\tonKeyDown(event: KeyboardEvent) {\n\t\tevent.stopPropagation()\n\t\tconst key = event.key\n\t\tif (key == \"ArrowUp\" || key == \"ArrowDown\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.handlerNavigate(key)\n\t\t} else if (key == \"Escape\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.handleEscape()\n\t\t} else if (key == \"Enter\") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.handleEnter()\n\t\t} else if (key == \" \") {\n\t\t\tevent.preventDefault()\n\t\t\tthis.openMenu()\n\t\t} else if (this.open && key == \"Tab\") {\n\t\t\tthis.closeMenu()\n\t\t}\n\t}\n\tprivate handlerNavigate(key: \"ArrowUp\" | \"ArrowDown\") {\n\t\tif (menu.hasVisibleItems(this.items)) {\n\t\t\tthis.move(key == \"ArrowUp\" ? -1 : 1)\n\t\t}\n\t\tthis.openMenu()\n\t}\n\tprivate handleEscape() {\n\t\tif (this.filter) {\n\t\t\tthis.resetFilter()\n\t\t} else {\n\t\t\tthis.closeMenu()\n\t\t}\n\t}\n\tprivate handleEnter() {\n\t\tconst item = menu.findFirstMarked(this.items)\n\t\tif (item?.value) {\n\t\t\titem.selected = !item.selected\n\t\t}\n\t\tif (!this.multiple) {\n\t\t\tthis.closeMenu()\n\t\t\tthis.resetFilter()\n\t\t}\n\t}\n\tprivate move(direction: -1 | 1): void {\n\t\tconst { current, next } = menu.next(this.items, direction)\n\t\tcurrent && (current.marked = false)\n\t\tnext.marked = true\n\t\tscroll.centerInView(this.dropdownElement, next, \"smooth\")\n\t}\n\tprivate addItem() {\n\t\tthis.addedItems = this.addedItems.concat(\n\t\t\t<smoothly-item value={this.filter} selected>\n\t\t\t\t{this.filter}\n\t\t\t</smoothly-item>\n\t\t)\n\t}\n\tprivate resetFilter() {\n\t\tthis.searchElement && (this.searchElement.value = \"\")\n\t\tthis.filter = \"\"\n\t}\n\tprivate setFilter(filter: string) {\n\t\tif (filter) {\n\t\t\tthis.filter = filter\n\t\t\tthis.openMenu()\n\t\t} else {\n\t\t\tthis.resetFilter()\n\t\t}\n\t}\n\tprivate openMenu({ focus }: { focus?: boolean } = {}) {\n\t\tthis.open = true\n\t\tfocus && queueMicrotask(() => this.searchElement?.focus())\n\t}\n\tprivate closeMenu() {\n\t\tthis.open = false\n\t\tthis.resetFilter()\n\t}\n\tprivate toggleMenu() {\n\t\tif (!this.readonly && !this.disabled) {\n\t\t\tthis.open ? this.closeMenu() : this.openMenu({ focus: true })\n\t\t}\n\t}\n\tprivate onClick(e: MouseEvent) {\n\t\tconst wasIconsClicked =\n\t\t\te.composedPath().includes(this.iconsElement!) && !e.composedPath().includes(this.toggleElement!)\n\t\tconst wasSearchClicked = e.composedPath().includes(this.searchElement!)\n\t\tconst wasItemClicked = e\n\t\t\t.composedPath()\n\t\t\t.find(element => element instanceof HTMLElement && element.tagName === \"SMOOTHLY-ITEM\")\n\t\tif (!wasIconsClicked && !wasSearchClicked && !(wasItemClicked && this.multiple)) {\n\t\t\tthis.toggleMenu()\n\t\t}\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ \"has-value\": this.selected.length !== 0, open: this.open, \"has-filter\": this.filter !== \"\" }}\n\t\t\t\tonClick={(e: MouseEvent) => this.onClick(e)}>\n\t\t\t\t<div class=\"select-display\" ref={element => (this.displayElement = element)}>\n\t\t\t\t\t{this.placeholder}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"icons\" ref={element => (this.iconsElement = element)}>\n\t\t\t\t\t<smoothly-icon class=\"smoothly-invalid\" name=\"alert-circle\" size=\"small\" tooltip={this.errorMessage} />\n\t\t\t\t\t<slot name=\"end\" />\n\t\t\t\t\t{this.looks == \"border\" && !this.readonly && (\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tref={element => (this.toggleElement = element)}\n\t\t\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\t\t\tname={this.open ? \"caret-down-outline\" : \"caret-forward-outline\"}\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 name=\"label\" />\n\t\t\t\t<div class=\"dropdown\" ref={(el: HTMLDivElement) => (this.dropdownElement = el)}>\n\t\t\t\t\t<div class=\"search\">\n\t\t\t\t\t\t<smoothly-icon name=\"search-outline\" size=\"small\" />\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tclass=\"search-input\"\n\t\t\t\t\t\t\tref={el => (this.searchElement = el)}\n\t\t\t\t\t\t\tdisabled={this.searchDisabled}\n\t\t\t\t\t\t\tonKeyDown={e => this.onKeyDown(e)}\n\t\t\t\t\t\t\tonInput={e => (e.stopPropagation(), this.setFilter(this.searchElement?.value ?? \"\"))}\n\t\t\t\t\t\t\tonPaste={e => (e.stopPropagation(), this.setFilter(this.searchElement?.value ?? \"\"))}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<smoothly-icon\n\t\t\t\t\t\t\tname=\"backspace-outline\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tthis.resetFilter()\n\t\t\t\t\t\t\t\tthis.searchElement?.focus()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{this.mutable && <smoothly-icon name=\"add\" size=\"small\" onClick={() => this.addItem()} />}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"menu\" hidden={!this.open}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t{this.addedItems}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@import \"../../button/style.css\"; \n\n:host {\n\tdisplay: flex;\n}\n\n:host(:not([display])) {\n\tdisplay: none;\n}\n\n:host::slotted(smoothly-button button > * > * + smoothly-icon),\n:host::slotted(smoothly-button-confirm button > * > * + smoothly-icon) {\n\tdisplay: none;\n}\n\n:host([disabled]) {\n\tcursor: not-allowed\n}\n","import { Component, ComponentWillLoad, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\nimport { isly } from \"isly\"\nimport { Color, Data, Fill, Icon } 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({ reflect: true }) delete = false\n\t@Prop() color?: Color\n\t@Prop() icon: Icon | false = \"checkmark-outline\"\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 }) size: \"flexible\" | \"small\" | \"large\" | \"icon\" = \"icon\"\n\t@Prop() tooltip = this.delete ? \"Remove\" : \"Submit\"\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => 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(async p => {\n\t\t\t\t\tthis.display = !p.readonly\n\t\t\t\t})\n\t\t\t\tif (typeof this.disabled !== \"boolean\") {\n\t\t\t\t\tparent.listen(async p => {\n\t\t\t\t\t\tthis.disabled =\n\t\t\t\t\t\t\t!this.delete &&\n\t\t\t\t\t\t\t(p.readonly ||\n\t\t\t\t\t\t\t\t(\"validator\" in p &&\n\t\t\t\t\t\t\t\t\tp.validator instanceof isly.Type &&\n\t\t\t\t\t\t\t\t\t!p.validator?.is(Data.convertArrays(p.value))) ||\n\t\t\t\t\t\t\t\t!p.isDifferentFromInitial)\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t}\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\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\tcolor={this.color ?? \"danger\"}\n\t\t\t\t\t\tfill={this.fill}\n\t\t\t\t\t\tonSmoothlyConfirm={() => this.clickHandler()}>\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={\"button\"}\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\tonClick={() => this.clickHandler()}>\n\t\t\t\t\t\t<slot />\n\t\t\t\t\t\t{this.icon && <smoothly-icon name={this.icon} fill=\"solid\" size=\"tiny\" />}\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-item-selected-background));\n\tcolor: rgb(var(--smoothly-item-selected-foreground));\n\tborder-left: .3em solid rgb(var(--smoothly-item-selected-border));\n}\n\n:host([disabled]),\n:host([disabled])::slotted(*) {\n\tbackground-color: rgb(var(--smoothly-item-disabled-background));\n\tcolor: rgb(var(--smoothly-item-disabled-foreground));\n\topacity: var(--smoothly-item-disabled-opacity);\n\tcursor: not-allowed;\n}\n\n:host:not([hidden]) {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding: 0.5em;\n\tcursor: pointer;\n\tborder-left: .3em solid transparent;\n\tcolor: rgb(var(--smoothly-item-foreground));\n\tfill: rgb(var(--smoothly-item-foreground));\n\tstroke: rgb(var(--smoothly-item-foreground));\n\tbox-sizing: border-box;\n\tmin-height: 3rem;\n}\n\n:host::slotted(*) {\n\tcolor: rgb(var(--smoothly-item-foreground));\n\tfill: rgb(var(--smoothly-item-foreground));\n\tstroke: rgb(var(--smoothly-item-foreground));\n}\n\n:host:not([disabled])[marked],\n:host:not([disabled]):hover,\n:host:not([disabled])[marked]::slotted(*),\n:host:not([disabled]):hover::slotted(*) {\n\tbackground-color: rgb(var(--smoothly-item-hover-background));\n\tcolor: rgb(var(--smoothly-item-hover-foreground));\n\tfill: rgb(var(--smoothly-item-hover-foreground));\n\tstroke: rgb(var(--smoothly-item-hover-foreground));\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\tVNode,\n\tWatch,\n} from \"@stencil/core\"\nimport { Editable } from \"../input/Editable\"\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\tprivate mutationObserver: MutationObserver\n\tprivate userInitiated = false\n\t@Element() element: HTMLSmoothlyItemElement\n\t@Prop() value: any\n\t@Prop({ reflect: true, mutable: true }) selected: boolean = false\n\t@Prop({ reflect: true, mutable: true }) marked: boolean\n\t@Prop({ reflect: true }) disabled = false\n\t@Prop() deselectable = true\n\t@Event() smoothlyItemSelect: EventEmitter<{ userInitiated: boolean; item: HTMLSmoothlyItemElement }>\n\t@Event() smoothlyInputLoad: EventEmitter<(parent: Editable) => void>\n\t@Event() smoothlyItemDOMChange: EventEmitter<void>\n\n\t@Listen(\"click\")\n\tclickHandler(): void {\n\t\tif (!this.disabled && (!this.selected || this.deselectable)) {\n\t\t\tthis.userInitiated = true\n\t\t\tthis.selected = !this.selected\n\t\t}\n\t}\n\t@Watch(\"selected\")\n\tselectedWatcher(): void {\n\t\tthis.smoothlyItemSelect.emit({ userInitiated: this.userInitiated, item: this.element })\n\t\tthis.userInitiated = false\n\t}\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyInputLoad.emit(() => {})\n\t}\n\tcomponentDidLoad(): void {\n\t\tthis.mutationObserver = new MutationObserver(() => this.smoothlyItemDOMChange.emit())\n\t\tthis.mutationObserver.observe(this.element, { childList: true, subtree: true, characterData: true })\n\n\t\tif (this.selected && !this.disabled) {\n\t\t\tthis.smoothlyItemSelect.emit({ userInitiated: false, item: this.element })\n\t\t}\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 = filter\n\t\t\t? !(value.includes(filter) || this.element.innerText.toLowerCase().includes(filter))\n\t\t\t: false\n\t}\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host tabIndex={-1}>\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 />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n","import { Component, FunctionalComponent, h, Host, 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?: VNode | 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","import { Component, Element, Event, EventEmitter, h, Host, Prop, State, VNode } from \"@stencil/core\"\nimport { Scrollable } from \"../../model/Scrollable\"\n\n@Component({\n\ttag: \"smoothly-load-more\",\n\tscoped: true,\n})\nexport class LoadMore {\n\tprivate observer: IntersectionObserver\n\tprivate scrollableParent?: HTMLElement\n\t@Element() element: HTMLSmoothlyLoadMoreElement\n\t@Prop() triggerMode: \"scroll\" | \"intersection\" = \"intersection\"\n\t@Prop() name = \"\"\n\t@Prop() multiple = false\n\t@State() inView: boolean\n\t@Event() smoothlyLoadMore: EventEmitter<string>\n\n\tcheckInView() {\n\t\tif (this.inView) {\n\t\t\tthis.smoothlyLoadMore.emit(this.name)\n\t\t}\n\t}\n\n\tconnectedCallback() {\n\t\tthis.observer = new IntersectionObserver((entries, observer) => this.observationHandler(observer, entries))\n\t\tthis.observer.observe(this.element)\n\t\tif (this.triggerMode == \"scroll\") {\n\t\t\tthis.inView && this.smoothlyLoadMore.emit(this.name)\n\t\t\tif (this.multiple || (!this.multiple && !this.inView)) {\n\t\t\t\tthis.scrollableParent = Scrollable.findParent(this.element)\n\t\t\t\tthis.scrollableParent?.addEventListener(\"scroll\", this.checkInView.bind(this), { once: !this.multiple })\n\t\t\t}\n\t\t}\n\t}\n\n\tdisconnectedCallback() {\n\t\tthis.scrollableParent?.removeEventListener(\"scroll\", this.checkInView.bind(this))\n\t\tthis.observer.disconnect()\n\t}\n\n\tobservationHandler(observer: IntersectionObserver, entries: IntersectionObserverEntry[]): void {\n\t\tthis.inView = (entries.find(entry => entry.target == this.element)?.intersectionRatio ?? 0) > 0\n\t\tif (this.inView) {\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 />\n\t}\n}\n",":host {\n\tposition: fixed;\n\tdisplay: flex;\n\tjustify-content: center;\n\ttop: 0;\n left: 0;\n width: 100%;\n height: 100%;\n\tbackground-color: rgba(var(--smoothly-modal-backdrop));\n\tcolor: rgb(var(--smoothly-modal-foreground));\n\tz-index: 20;\n}\n:host:not([open]),\n:host[hidden] {\n\tdisplay: none;\n}\n:host[align=center] {\n\talign-items: center;\n}\n:host[align=top]>div.modal{\n\tmargin-top: calc((100dvh - var(--smoothly-modal-max-height)) / 2);\n}\n\n:host>div.modal {\n\tdisplay: flex;\n\tflex-direction: column;\n\tpadding: 2rem;\n\tgap: 1.5rem;\n\twidth: var(--smoothly-modal-width, 40rem);\n\tmax-width: calc(100dvw - 1rem);\n\theight: fit-content;\n\tmax-height: min(var(--smoothly-modal-max-height), 100dvh);\n\tbackground: rgb(var(--smoothly-modal-background, var(--smoothly-color)));\n\tborder: 1px solid rgb(var(--smoothly-modal-border));\n\tborder-radius: var(--smoothly-modal-border-radius);\n\tbox-shadow: var(--smoothly-modal-shadow);\n\tbox-sizing: border-box;\n}\n:host > div.modal > div.header:empty,\n:host > div.modal > div.actions:empty {\n\tdisplay: none;\n}\n:host > div.modal > div.header {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n}\n:host > div.modal > *,\n:host > div.modal > div.header > * {\n\tmargin-block: 0;\n}\n:host > div.modal > *:not(.header):not(.actions) {\n\toverflow-y: auto;\n}\n:host > div.modal > div.header:not(:has([slot=\"header\"])) {\n\tjustify-content: end;\n}\n:host > div.modal > div.header > smoothly-icon:not([slot=\"header\"]) {\n\tcursor: pointer;\n\topacity: 0.7;\n\tcolor: rgb(var(--smoothly-default-contrast));\n}\n:host > div.modal > div.header > smoothly-icon:not([slot=\"header\"]):hover {\n\topacity: 1;\n}\n:host > div.modal > div.actions {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-items: center;\n\tgap: 1rem;\n\tflex-wrap: wrap;\n}\n\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-modal\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyModal {\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Prop({ reflect: true }) closable = false\n\t@Prop({ reflect: true }) align: \"top\" | \"center\" = \"center\"\n\t@Event() smoothlyModalChange: EventEmitter<boolean>\n\n\t@Watch(\"open\")\n\topenChanged() {\n\t\tthis.smoothlyModalChange.emit(this.open)\n\t}\n\t@Method()\n\tasync closeModal() {\n\t\tthis.open = false\n\t}\n\t@Method()\n\tasync openModal() {\n\t\tthis.open = true\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\trole=\"alertdialog\"\n\t\t\t\tonClick={(e: any) => {\n\t\t\t\t\tthis.closable && !e.composedPath().some((el: any) => el.classList?.contains(\"modal\")) && this.closeModal()\n\t\t\t\t}}>\n\t\t\t\t<div class=\"modal\">\n\t\t\t\t\t<div class=\"header\">\n\t\t\t\t\t\t<slot name=\"header\" />\n\t\t\t\t\t\t{this.closable && <smoothly-icon name=\"close-outline\" fill=\"solid\" onClick={() => this.closeModal()} />}\n\t\t\t\t\t</div>\n\t\t\t\t\t<slot />\n\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t<slot name=\"actions\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tposition: relative;\n\tmin-width: min(calc(100% - 1rem), 30rem);\n\tmin-height: 3rem;\n\tborder-radius: 5px;\n\tmargin: 0.5rem;\n}\n:host > span.icon > smoothly-icon,\n:host > span.clean {\n\tdisplay: flex;\n\tjustify-content: center;\n\talign-self: center;\n}\n:host > span {\n\tmargin-inline: 1rem 2rem;\n}\n:host > span.icon {\n\tdisplay: flex;\n\twidth: 100%;\n\tjustify-content: center;\n}\n:host > span.icon > p {\n\tpadding-right: 1em;\n}\n:host > span > p {\n\ttext-align: left;\n}\n:host[hidden] {\n\tdisplay: none;\n}\n:host > span.icon > smoothly-icon {\n\tmargin: 0 0.5rem;\n}\n:host > smoothly-trigger {\n\t--smoothly-icon-size: 1.6rem;\n\tposition: absolute;\n\tright: 0;\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: boolean\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\t} else {\n\t\t\tthis.tick = {}\n\t\t}\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\t}\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\" />\n\t\t\t\t\t</smoothly-trigger>\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]} />}\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 > .smoothly-notifier-wrapper {\n\tpointer-events: none;\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\n:host > .smoothly-notifier-wrapper > smoothly-notification {\n\tpointer-events: all;\n}\n","import { Component, h, Host, Listen, Prop, 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@Prop() icon = false\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<Host>\n\t\t\t\t<slot />\n\t\t\t\t<div class=\"smoothly-notifier-wrapper\">\n\t\t\t\t\t{this.notices.map(n => (\n\t\t\t\t\t\t<smoothly-notification notice={n} icon={this.icon} />\n\t\t\t\t\t))}\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host[hidden] {\n\tdisplay: none;\n}\n\n:host {\n\tcursor: wait;\n\t--spinner-time: 1.4s;\n\t--spinner-color: var(--smoothly-color-contrast);\n\t--spinner-background: var(--smoothly-color);\n\t--spinner-background-opacity: var(--smoothly-semitransparent, 0.8);\n\tdisplay: block;\n\tstroke: rgb(var(--spinner-color));\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n\n:host:not([overlay]) {\n\twidth: var(--spinner-size);\n\theight: var(--spinner-size);\n}\n\n:host[overlay] {\n\tposition: absolute;\n\tinset: 0;\n\twidth: 100%;\n\theight: 100%;\n\tz-index: 4;\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n}\n\n:host[color]:not([overlay]),\n:host[color][overlay] {\n\tbackground-color: rgba(var(--spinner-background), var(--spinner-background-opacity));\n\tstroke: rgb(var(--spinner-color));\n}\n\n:host[overlay]>svg {\n\tposition: absolute;\n\twidth: var(--spinner-size);\n\tleft: calc(50% - var(--spinner-size) / 2);\n\ttop: calc(50% - var(--spinner-size) / 2);\n}\n\n:host>svg {\n\tanimation: SPIN-SVG var(--spinner-time) linear infinite;\n}\n\n:host>svg>circle {\n\ttransform-origin: center;\n\tanimation: SPIN-CIRCLE var(--spinner-time) ease-in-out infinite;\n\tstroke-dasharray: 187;\n\tstroke-dashoffset: 0;\n}\n\n@keyframes SPIN-SVG {\n\t0% {\n\t\ttransform: rotate(0deg);\n\t}\n\n\t100% {\n\t\ttransform: rotate(270deg);\n\t}\n}\n\n@keyframes SPIN-CIRCLE {\n\t0% {\n\t\tstroke-dashoffset: 187;\n\t}\n\n\t50% {\n\t\tstroke-dashoffset: 46.75;\n\t\ttransform: rotate(135deg);\n\t}\n\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.css\",\n\tscoped: true,\n})\nexport class SmoothlySpinner {\n\t@Prop({ reflect: true }) size: \"small\" | \"icon\" | \"medium\" | \"large\" = \"large\"\n\t@Prop({ reflect: true }) overlay: boolean\n\n\trender() {\n\t\tconst strokeWidth = this.size == \"large\" ? 6 : this.size == \"medium\" ? 8 : this.size == \"icon\" ? 8 : 12\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{\n\t\t\t\t\t\"--spinner-size\":\n\t\t\t\t\t\tthis.size == \"large\" ? \"5em\" : this.size == \"medium\" ? \"3em\" : this.size == \"icon\" ? \"1.8em\" : \"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\"\n\t\t\t\t\t/>\n\t\t\t\t</svg>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n\n:host>details>summary {\n\tdisplay: flex;\n\tcolumn-gap: 0.25rem;\n\twidth: fit-content;\n\tlist-style: none;\n\talign-items: center;\n\tcursor: pointer;\n}\n\n:host>details>summary>smoothly-icon {\n\ttransition: transform 0.2s, opacity 0.1s;\n\topacity: 0.3;\n}\n\n:host>details>summary:hover>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\tmargin-left: var(--smoothly-summary-content-indent, 1.5rem);\n}\n\n@media (prefers-reduced-motion) { \n\t:host>details>summary>smoothly-icon {\n\t\ttransition: none;\n\t}\n}\n","import { Component, Event, EventEmitter, h, Prop } from \"@stencil/core\"\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@Event() smoothlySummaryOpen: EventEmitter<boolean>\n\n\tasync toggleHandler(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\" fill=\"solid\" size=\"tiny\" />\n\t\t\t\t\t<slot name=\"summary\" />\n\t\t\t\t</summary>\n\t\t\t\t<slot name=\"content\" />\n\t\t\t</details>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: contents;\n\t--smoothly-tab-line-width: 2px;\n\t--smoothly-tab-line-width-active: 5px;\n}\n:host > div:first-child {\n\tgrid-column: span 1;\n\tbackground-color: transparent;\n\tborder-bottom-color: rgb(var(--smoothly-default-shade));\n\tborder-bottom-width: var(--smoothly-tab-line-width);\n\tborder-bottom-style: solid;\n}\n:host([disabled]) > div:first-child {\n\tcolor: rgba(var(--smoothly-default-contrast), 0.6);\n}\n:host([disabled]) > div:first-child > label {\n\tcursor: not-allowed;\n}\n:host > div:first-child > label {\n\tdisplay: flex;\n\tjustify-content: center;\n\tpadding: 0.5rem 1rem;\n\twidth: fit-content;\n\tborder-radius: 0.5rem 0.5rem 0 0;\n margin: auto;\n\tcursor: pointer;\n\tposition: relative;\n}\n:host:not([disabled]) > div:first-child > label:hover {\n\tbackground-color: rgb(var(--smoothly-tab-hover-background, var(--smoothly-default-shade)));\n}\n:host([open]) > div:first-child > label {\n\t\n\tfont-weight: bold;\n}\n:host([open]) > div:first-child > label::before {\n\tcontent: '';\n\tposition: absolute;\n\theight: var(--smoothly-tab-line-width-active);\n\tbackground-color: rgb(var(--smoothly-tab-active-line, var(--smoothly-primary-color)));\n\tinset-inline: 0;\n\tbottom: calc(-1 * var(--smoothly-tab-line-width));\n}\n:host > div:first-child > label[data-smoothly-tooltip]:hover::after {\n\tcontent: attr(data-smoothly-tooltip);\n\tfont-size: 0.9rem;\n\tposition: absolute;\n\ttop: calc(100% + 0.25rem);\n\tpadding: 0.5rem 0.75rem;\n\tborder-radius: 0.5rem;\n\tbackground-color: rgb(var(--smoothly-medium-color));\n\tcolor: rgb(var(--smoothly-medium-contrast));\n\twhite-space: nowrap;\n\tz-index: 1;\n}\n\n:host > div:nth-child(2) {\n\tgrid-row: 2 / 3;\n\tgrid-column: 1 / -1;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Prop, Watch } from \"@stencil/core\"\nimport { Input } from \"../../input/Input\"\nimport { SmoothlyTabs } from \"..\"\n\n@Component({\n\ttag: \"smoothly-tab\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTab {\n\tprivate inputs: Record<string, Input.Element> = {}\n\tprivate smoothlyTabs?: SmoothlyTabs\n\t@Element() element: HTMLSmoothlyTabElement\n\t@Prop() label: string\n\t@Prop() name: string\n\t@Prop() tooltip: string\n\t@Prop({ mutable: true, reflect: true }) open: boolean\n\t@Prop({ reflect: true }) disabled: boolean\n\t@Event() smoothlyTabOpen: EventEmitter<string>\n\t@Event() smoothlyTabLoad: EventEmitter<(smoothlyTabs: SmoothlyTabs) => void>\n\n\t@Watch(\"open\")\n\tasync openHandler() {\n\t\tif (this.open) {\n\t\t\tthis.smoothlyTabOpen.emit(this.name)\n\t\t}\n\t\tthis.open\n\t\t\t? await Promise.all(Object.values(this.inputs).map(input => input.register()))\n\t\t\t: await Promise.all(Object.values(this.inputs).map(input => input.unregister()))\n\t}\n\tconnectedCallback() {\n\t\tthis.smoothlyTabLoad.emit((smoothlyTabs: SmoothlyTabs) => {\n\t\t\tthis.smoothlyTabs?.removeTab(this.element)\n\t\t\tthis.smoothlyTabs = smoothlyTabs\n\t\t})\n\t}\n\tdisconnectedCallback() {\n\t\tthis.smoothlyTabs?.removeTab(this.element)\n\t}\n\tasync componentDidLoad() {\n\t\tawait this.openHandler()\n\t}\n\t@Listen(\"smoothlyInputLoad\")\n\t@Listen(\"smoothlyInput\")\n\tonInputLoad(event: CustomEvent) {\n\t\tif (Input.Element.is(event.target)) {\n\t\t\tthis.inputs[event.target.name] = event.target\n\t\t\tif (!this.open) {\n\t\t\t\tevent.stopPropagation()\n\t\t\t}\n\t\t}\n\t}\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => !this.disabled && (this.open = true)}>\n\t\t\t\t\t<label data-smoothly-tooltip={this.tooltip}>{this.label}</label>\n\t\t\t\t</div>\n\t\t\t\t<div hidden={!this.open}>\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",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(var(--columns), auto);\n\tcolor: rgb(var(--smoothly-table-foreground));\n\tstroke: rgb(var(--smoothly-table-foreground));\n\tfill: rgb(var(--smoothly-table-foreground));\n}\n","import { Component, h, Host, Listen, Prop, VNode } from \"@stencil/core\"\nimport { SmoothlyTableExpandableCellCustomEvent } from \"../../components\"\n\n@Component({\n\ttag: \"smoothly-table\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTable {\n\t@Prop() columns = 1\n\n\t@Listen(\"smoothlyTableExpandableRowChange\")\n\tsmoothlyTableExpandableRowChange(event: SmoothlyTableExpandableCellCustomEvent<boolean>): void {\n\t\tevent.stopPropagation()\n\t}\n\n\t@Listen(\"smoothlyTableExpandableCellChange\")\n\tsmoothlyTableExpandableCellChange(event: SmoothlyTableExpandableCellCustomEvent<boolean>): void {\n\t\tevent.stopPropagation()\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host style={{ \"--columns\": this.columns.toString() }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tcolor: rgb(var(--smoothly-table-foreground));\n\tbackground-color: rgb(var(--smoothly-table-background));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-body\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableBody {\n\trender(): VNode | VNode[] {\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\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n\twhite-space: nowrap;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableCell {\n\t@Prop({ reflect: true }) span?: number = 1\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host class=\"smoothly-table-cell\" style={{ \"--smoothly-table-cell-span\": this.span?.toString(10) }}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: grid;\n\tgap: 5rem;\n\tbox-sizing: border-box;\n\tmax-width: 80rem;\n\twidth: 100%;\n\tmargin: auto;\n\tpadding: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemo {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table-demo-filler-row />\n\t\t\t\t<smoothly-table-demo-group />\n\t\t\t\t<smoothly-table-demo-colspan />\n\t\t\t\t<smoothly-table-demo-simple />\n\t\t\t\t<smoothly-table-demo-nested-no-cell />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host smoothly-display {\n\tdisplay: inline;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo-colspan\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoColspan {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table columns={3}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Date</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Skip</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Total</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-01\"} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell span={2}>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={<smoothly-display type={\"date-time\"} value={\"2024-01-02T13:37:00.000Z\"} />}\n\t\t\t\t\t\t\t\t/>\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<smoothly-display type={\"price\"} value={220} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={120} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t{\" + \"}\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={100} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t</span>\n\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</smoothly-table-expandable-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Not Skipped</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={320} currency={\"EUR\"} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-body>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host>smoothly-display {\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n","import { Component, h, Host, State, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo-filler-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoFillerRow {\n\t@State() cats?: Cat[] = []\n\n\tasync componentDidLoad(): Promise<void> {\n\t\twindow.setTimeout(() => {\n\t\t\tthis.cats = undefined\n\t\t}, 3000)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Filler row\" />\n\t\t\t\t<smoothly-table color=\"primary\" columns={4}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Breed</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Country</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Coat</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Origin</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\n\t\t\t\t\t\t{this.cats === undefined ? (\n\t\t\t\t\t\t\t<smoothly-table-filler-row>No data to display</smoothly-table-filler-row>\n\t\t\t\t\t\t) : this.cats.length === 0 ? (\n\t\t\t\t\t\t\t<smoothly-table-filler-row>\n\t\t\t\t\t\t\t\t<smoothly-spinner style={{ margin: \"auto\" }} color=\"default\" size=\"small\" />\n\t\t\t\t\t\t\t</smoothly-table-filler-row>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\tthis.cats.map(a => (\n\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{a.breed}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{a.country}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{a.coat}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{a.origin}</div>\n\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t))\n\t\t\t\t\t\t)}\n\t\t\t\t\t</smoothly-table-body>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\nexport interface Cat {\n\tbreed: string\n\tcountry: string\n\torigin: string\n\tcoat: string\n\tpattern: string\n}\n",":host {\n\tdisplay: block;\n}\n:host smoothly-display {\n\tdisplay: inline;\n}\n:host fake-cell-wrapper.span-2 {\n\tgrid-column: span 2;\n}\n:host>smoothly-display {\n\tdisplay: inherit;\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n/* Apply these styles to your element that is \n * wrapping one of these table components\n*/\n:host fake-group-wrapper,\n:host fake-row-wrapper,\n:host fake-expandable-row-wrapper {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n:host fake-cell-wrapper {\n\t/* ↓ This is the column span. only needed if span != 1 */\n\tgrid-column: span 1;\n\t/* it can be any display that is not contents */\n\tdisplay: block;\n}\n:host fake-expandable-cell-wrapper {\n\tdisplay: contents;\n}\n","import { Component, Fragment, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo-group\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoGroup {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Group\" />\n\t\t\t\t<smoothly-table color=\"primary\" columns={2}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Date</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Total</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\n\t\t\t\t\t\t<smoothly-table-row-group align>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type=\"date\" value={\"2024-01-01\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={510} />\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-01T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={250} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-01T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={260} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-01T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} currency={\"EUR\"} value={130} />\n\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t<smoothly-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-03\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-03T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-03T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-03T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t\t<smoothly-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-04\"} />\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-04T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-04T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-04T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t\t<smoothly-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-05T01:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={320} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T01:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\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={\"date-time\"} value={\"2024-01-05T13:37:00.000Z\"} />\n\t\t\t\t\t\t\t\t</smoothly-table-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\"} currency={\"EUR\"} value={400} />\n\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t<smoothly-lazy slot={\"detail\"} content={<Fragment>Details of 2024-01-05T13:37:00.000Z</Fragment>} />\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t\t<fake-group-wrapper>\n\t\t\t\t\t\t\t<smoothly-table-row-group>\n\t\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-06\"} />\n\t\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t\t\t<fake-row-wrapper>\n\t\t\t\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t\t\t\t<fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-02\"} />\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t<fake-expandable-cell-wrapper>\n\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<smoothly-display type={\"price\"} currency={\"EUR\"} value={130} />\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\t\t\t\t\tcontent={\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t<span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={100} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\" + \"}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"price\"} value={30} currency={\"EUR\"} />\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\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</smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-expandable-cell-wrapper>\n\t\t\t\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t\t\t\t</fake-row-wrapper>\n\t\t\t\t\t\t\t\t<fake-expandable-row-wrapper>\n\t\t\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t\t\t<fake-cell-wrapper class=\"span-2\">\n\t\t\t\t\t\t\t\t\t\t\t<smoothly-table-cell span={2}>\n\t\t\t\t\t\t\t\t\t\t\t\t<smoothly-display type={\"date\"} value={\"2024-01-07\"} />\n\t\t\t\t\t\t\t\t\t\t\t</smoothly-table-cell>\n\t\t\t\t\t\t\t\t\t\t</fake-cell-wrapper>\n\t\t\t\t\t\t\t\t\t\t<smoothly-lazy\n\t\t\t\t\t\t\t\t\t\t\tslot={\"detail\"}\n\t\t\t\t\t\t\t\t\t\t\tcontent={<smoothly-display type={\"date-time\"} value={\"2024-01-07T13:37:00.000Z\"} />}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t</fake-expandable-row-wrapper>\n\t\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t\t</fake-group-wrapper>\n\t\t\t\t\t\t<smoothly-table-row-group>\n\t\t\t\t\t\t\t<smoothly-display slot={\"start\"} type={\"date\"} value={\"2024-01-08\"} />\n\t\t\t\t\t\t\t<smoothly-display slot={\"end\"} type={\"price\"} currency={\"EUR\"} value={720} />\n\t\t\t\t\t\t</smoothly-table-row-group>\n\t\t\t\t\t</smoothly-table-body>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","export const data = [\n\t{\n\t\tid: \"667d329f9f4934ecdc4bf9eb\",\n\t\tbalance: 1450.03,\n\t\tage: 35,\n\t\teyeColor: \"blue\",\n\t\tname: \"Glenda Ballard\",\n\t\tgender: \"female\",\n\t\tcompany: \"ZENTIA\",\n\t\tregistered: \"2022-06-13T12:39:15.908\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Manning Hunter\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1922.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Mcmillan Oliver\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 2440.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Graham Garza\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3712.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Gabrielle Neal\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 2519.25,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Dotson Duncan\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3274.11,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4e07097167ef92a2\",\n\t\tbalance: 2488.91,\n\t\tage: 21,\n\t\teyeColor: \"blue\",\n\t\tname: \"Delaney Haley\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMTOURS\",\n\t\tregistered: \"2018-05-11T08:58:36.197\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Elsa Cochran\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2009.45,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Willis Acevedo\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 2198.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Slater Fowler\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2888.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Ashley Wilkerson\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1863.65,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Ola Lynch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3649.29,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f14a0aeea0d70d5e7\",\n\t\tbalance: 1660.91,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Riddle Reilly\",\n\t\tgender: \"male\",\n\t\tcompany: \"OPTIQUE\",\n\t\tregistered: \"2016-09-15T09:46:07.962\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Hazel Steele\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3129.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Golden Chapman\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2491,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Solomon Lopez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1382.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Castro Booth\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1991.6,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Hernandez Bartlett\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2842.85,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Lindsay Wagner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3636.6,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f953aaaba19bea98b\",\n\t\tbalance: 1381.34,\n\t\tage: 24,\n\t\teyeColor: \"brown\",\n\t\tname: \"Diana Burns\",\n\t\tgender: \"female\",\n\t\tcompany: \"CODACT\",\n\t\tregistered: \"2023-06-02T09:07:46.478\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Tamika Merritt\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2401.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Ballard Buckner\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1986.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Stokes Ramirez\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 3521.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Wood Aguirre\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1186.13,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Sophia Bowen\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2750.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Wilkinson Gordon\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3864.91,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6a753976e21e23b5\",\n\t\tbalance: 3054.74,\n\t\tage: 22,\n\t\teyeColor: \"brown\",\n\t\tname: \"Jackson Burnett\",\n\t\tgender: \"male\",\n\t\tcompany: \"COMCUR\",\n\t\tregistered: \"2019-06-05T09:17:31.312\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Atkinson Alston\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1025.72,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Delia Ford\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3061.87,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Marylou Hanson\",\n\t\t\t\tage: 33,\n\t\t\t\tbalance: 3255.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Kelly Ray\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3671.73,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Valdez Weeks\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 3911.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Hayes Crawford\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3194.97,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329fc4805cafac37861e\",\n\t\tbalance: 1173.94,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Stephenson Mcleod\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARAX\",\n\t\tregistered: \"2015-12-10T07:36:10.267\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Kristine Newton\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2713.9,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Craft Patel\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3822.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Cochran French\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 1535.91,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Bowen Vinson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2787.01,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Adrian Ewing\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2319.14,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Jimmie Mathews\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2869.09,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Dixon Daugherty\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1496.25,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f76318162fe27b208\",\n\t\tbalance: 2977.01,\n\t\tage: 24,\n\t\teyeColor: \"blue\",\n\t\tname: \"Claudette Christensen\",\n\t\tgender: \"female\",\n\t\tcompany: \"PIVITOL\",\n\t\tregistered: \"2021-08-08T07:08:00.936\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Parker Lamb\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3409.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kennedy Bryan\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 3904.27,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Johanna Barton\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 3613.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vazquez Melendez\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3692.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mendoza Wooten\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2175.64,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Kelli Hicks\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1326.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Jill Sanchez\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3214.36,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff80a953b7f0a73d2\",\n\t\tbalance: 1993.09,\n\t\tage: 20,\n\t\teyeColor: \"green\",\n\t\tname: \"Buckley Gutierrez\",\n\t\tgender: \"male\",\n\t\tcompany: \"HOUSEDOWN\",\n\t\tregistered: \"2015-04-02T04:53:42.985\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Leanne Pennington\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 3111.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Juarez Hoover\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2000.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Navarro Mccormick\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3083.93,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Berry Curry\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3181.41,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Josefa Howard\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3744.56,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4f53eb59f0512361\",\n\t\tbalance: 2374.56,\n\t\tage: 34,\n\t\teyeColor: \"brown\",\n\t\tname: \"Sallie Mccoy\",\n\t\tgender: \"female\",\n\t\tcompany: \"REALYSIS\",\n\t\tregistered: \"2018-05-11T05:26:36.604\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Martina Kirby\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1278.07,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Macias Lyons\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2991.44,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Alta Chaney\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1032.71,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"White Manning\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3103.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Mason Rosa\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1384.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Meghan Martin\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 1982.09,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8a6cf9319bfdbd30\",\n\t\tbalance: 3220.94,\n\t\tage: 23,\n\t\teyeColor: \"blue\",\n\t\tname: \"Huff Hull\",\n\t\tgender: \"male\",\n\t\tcompany: \"GADTRON\",\n\t\tregistered: \"2023-02-14T01:58:56.938\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Rochelle Maldonado\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 1548.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Diann Conrad\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 1721.33,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hope Jarvis\",\n\t\t\t\tage: 38,\n\t\t\t\tbalance: 1265.24,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Dixie Huffman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3764.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Erickson Porter\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2958.59,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Christensen Thomas\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1233.2,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f1415ecb1efb216cc\",\n\t\tbalance: 2907.83,\n\t\tage: 26,\n\t\teyeColor: \"brown\",\n\t\tname: \"Hancock Eaton\",\n\t\tgender: \"male\",\n\t\tcompany: \"POLARIUM\",\n\t\tregistered: \"2018-02-25T01:03:11.860\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Flynn Gilmore\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 2582.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Kline Hickman\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 3853.99,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Hatfield Owens\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 2016.57,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Michael Carson\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1293.03,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Strickland Lowery\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1367.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Georgia Chavez\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 2957.48,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Alma Berry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2357.01,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f722eb89c82b56dec\",\n\t\tbalance: 1602.02,\n\t\tage: 35,\n\t\teyeColor: \"brown\",\n\t\tname: \"Lorrie Mcpherson\",\n\t\tgender: \"female\",\n\t\tcompany: \"PYRAMIA\",\n\t\tregistered: \"2018-12-07T05:18:34.223\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Bridgett Everett\",\n\t\t\t\tage: 37,\n\t\t\t\tbalance: 1438.53,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Carlene Farley\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1410.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Phoebe Mendez\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1979.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Louella Cox\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 3430.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Velez Pugh\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 3436.5,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329ff853efe8c4e0a454\",\n\t\tbalance: 2654.19,\n\t\tage: 36,\n\t\teyeColor: \"brown\",\n\t\tname: \"Luann Jennings\",\n\t\tgender: \"female\",\n\t\tcompany: \"NAXDIS\",\n\t\tregistered: \"2014-02-18T04:25:50.302\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Walton Gentry\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1328.43,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Lucy Koch\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2134.54,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Toni Meyers\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 2572.29,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Vicki Frost\",\n\t\t\t\tage: 39,\n\t\t\t\tbalance: 3299.36,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Meadows Baker\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2323.75,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f84f3bfbfcc763674\",\n\t\tbalance: 2528.48,\n\t\tage: 28,\n\t\teyeColor: \"brown\",\n\t\tname: \"Michelle Carey\",\n\t\tgender: \"female\",\n\t\tcompany: \"IDEGO\",\n\t\tregistered: \"2016-10-01T04:25:07.187\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Roman Sanders\",\n\t\t\t\tage: 40,\n\t\t\t\tbalance: 3551.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Amanda Herman\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 3928.02,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Kay Montgomery\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3241.16,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Valentine Wilder\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 1413.31,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Brigitte Nixon\",\n\t\t\t\tage: 32,\n\t\t\t\tbalance: 3113.39,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f4359ec766055a765\",\n\t\tbalance: 3732.65,\n\t\tage: 30,\n\t\teyeColor: \"brown\",\n\t\tname: \"Beach Maddox\",\n\t\tgender: \"male\",\n\t\tcompany: \"GEEKETRON\",\n\t\tregistered: \"2021-03-24T11:55:31.135\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Candy Gibbs\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2602.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Alissa Rosario\",\n\t\t\t\tage: 36,\n\t\t\t\tbalance: 1958.84,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Imelda Harmon\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3817.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Addie Serrano\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 3154.77,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Jordan Shields\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 3566.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9ef3817d307e2583\",\n\t\tbalance: 2151.52,\n\t\tage: 32,\n\t\teyeColor: \"brown\",\n\t\tname: \"Whitney Hood\",\n\t\tgender: \"male\",\n\t\tcompany: \"EVENTAGE\",\n\t\tregistered: \"2021-06-17T12:11:56.473\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Noel Walsh\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 2790.49,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Barlow Rodriquez\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1664.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Nash Keith\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2285.17,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Chavez Webster\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3381.55,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Herminia Chen\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1064.96,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Susana Glass\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 2749.35,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f9bd581700cac2dbc\",\n\t\tbalance: 2209.77,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Tasha Mosley\",\n\t\tgender: \"female\",\n\t\tcompany: \"QUIZKA\",\n\t\tregistered: \"2014-05-11T11:44:55.071\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Larsen Wall\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1523.28,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Holmes Hopkins\",\n\t\t\t\tage: 35,\n\t\t\t\tbalance: 1112.68,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Giles Espinoza\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 2550.95,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Aimee Rosales\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 2195.06,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Karin Little\",\n\t\t\t\tage: 28,\n\t\t\t\tbalance: 2896.23,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Angelita Mcfadden\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 1051.15,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6e2dbb2002be4b9e\",\n\t\tbalance: 3298.23,\n\t\tage: 31,\n\t\teyeColor: \"brown\",\n\t\tname: \"Schneider Walker\",\n\t\tgender: \"male\",\n\t\tcompany: \"BLEENDOT\",\n\t\tregistered: \"2020-02-11T08:57:29.025\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Helena William\",\n\t\t\t\tage: 34,\n\t\t\t\tbalance: 2579.69,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Silva Ware\",\n\t\t\t\tage: 30,\n\t\t\t\tbalance: 2683.79,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Enid Oconnor\",\n\t\t\t\tage: 22,\n\t\t\t\tbalance: 1816.46,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Knowles Goff\",\n\t\t\t\tage: 24,\n\t\t\t\tbalance: 1675.75,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Carolina Greer\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3337.27,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f8c548510c5d4f5ce\",\n\t\tbalance: 2823.51,\n\t\tage: 35,\n\t\teyeColor: \"green\",\n\t\tname: \"Mayo Shepard\",\n\t\tgender: \"male\",\n\t\tcompany: \"KIOSK\",\n\t\tregistered: \"2024-02-24T12:45:57.463\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Olga Hester\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 3878.21,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Rogers Sampson\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 2669.62,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Myra Johnson\",\n\t\t\t\tage: 27,\n\t\t\t\tbalance: 3489.32,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Mcfadden Phillips\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2758.8,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Park Moody\",\n\t\t\t\tage: 23,\n\t\t\t\tbalance: 3519.08,\n\t\t\t},\n\t\t],\n\t},\n\t{\n\t\tid: \"667d329f6574ada6f090fd54\",\n\t\tbalance: 2631.69,\n\t\tage: 40,\n\t\teyeColor: \"blue\",\n\t\tname: \"Avis Carlson\",\n\t\tgender: \"female\",\n\t\tcompany: \"LINGOAGE\",\n\t\tregistered: \"2016-08-08T08:59:54.752\",\n\t\tfriends: [\n\t\t\t{\n\t\t\t\tid: 0,\n\t\t\t\tname: \"Mcdonald Dyer\",\n\t\t\t\tage: 25,\n\t\t\t\tbalance: 2262.39,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 1,\n\t\t\t\tname: \"Irene Baldwin\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 1291.1,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 2,\n\t\t\t\tname: \"Rollins Anderson\",\n\t\t\t\tage: 26,\n\t\t\t\tbalance: 1437.04,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 3,\n\t\t\t\tname: \"Juliana Larson\",\n\t\t\t\tage: 29,\n\t\t\t\tbalance: 3492.22,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 4,\n\t\t\t\tname: \"Michele Gardner\",\n\t\t\t\tage: 20,\n\t\t\t\tbalance: 2003.15,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 5,\n\t\t\t\tname: \"Vang Cardenas\",\n\t\t\t\tage: 31,\n\t\t\t\tbalance: 1855.52,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 6,\n\t\t\t\tname: \"Puckett Hubbard\",\n\t\t\t\tage: 21,\n\t\t\t\tbalance: 1659.92,\n\t\t\t},\n\t\t],\n\t},\n]\n",":host {\n\tdisplay: block;\n}\n:host>smoothly-display {\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n:host smoothly-table-expandable-row {\n\tposition: relative;\n}\n","import { Component, h, Host, State, VNode } from \"@stencil/core\"\nimport { data } from \"./data\"\n\n@Component({\n\ttag: \"smoothly-table-demo-nested-no-cell\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoNestedNoCell {\n\t// Simulate loading state\n\t@State() loadingIndex?: number\n\t@State() loadedRows: number[] = []\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Nested\" />\n\t\t\t\t<smoothly-table color=\"primary\" columns={8}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Id</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Registered</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Name</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Age</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Balance</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">EyeColor</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Gender</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Company</div>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\n\t\t\t\t\t\t{data.map((entry, index) => (\n\t\t\t\t\t\t\t<smoothly-table-expandable-row\n\t\t\t\t\t\t\t\tonSmoothlyTableExpandableRowChange={event => {\n\t\t\t\t\t\t\t\t\tif (event.detail) {\n\t\t\t\t\t\t\t\t\t\tthis.loadingIndex = index\n\t\t\t\t\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\t\t\t\t\tthis.loadingIndex = undefined\n\t\t\t\t\t\t\t\t\t\t\tthis.loadedRows = [...this.loadedRows, index]\n\t\t\t\t\t\t\t\t\t\t}, 1500)\n\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\t{this.loadingIndex === index && <smoothly-spinner overlay size=\"small\" />}\n\t\t\t\t\t\t\t\t{this.loadedRows.includes(index) && (\n\t\t\t\t\t\t\t\t\t<smoothly-table-demo-nested-no-cell-inner color=\"secondary\" data={entry.friends} slot={\"detail\"} />\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.id}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.registered}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.name}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.age}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.balance}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.eyeColor}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.gender}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.company}</div>\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-table-body>\n\t\t\t\t\t<smoothly-table-foot>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Footer Cell</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Footer Cell</div>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-foot>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n\tmargin: 1em auto;\n\twidth: 60%;\n}\n","import { Component, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo-nested-no-cell-inner\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoNestedNoCellInner {\n\t@Prop() data?: {\n\t\tid: number\n\t\tname: string\n\t\tage: number\n\t\tbalance: number\n\t}[]\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-table columns={4}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Id</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Name</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Age</div>\n\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">Balance</div>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\n\t\t\t\t\t\t{this.data?.map(entry => (\n\t\t\t\t\t\t\t<smoothly-table-expandable-row>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.id}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.name}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.age}</div>\n\t\t\t\t\t\t\t\t<div class=\"smoothly-table-cell\">{entry.balance}</div>\n\t\t\t\t\t\t\t</smoothly-table-expandable-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</smoothly-table-body>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host>smoothly-display {\n\tfont-size: 2em;\n}\n:host>* {\n\tmargin-bottom: 2rem;\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-demo-simple\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableDemoSimple {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<smoothly-display type=\"text\" value=\"Simple\" />\n\t\t\t\t<smoothly-table color=\"primary\" columns={2}>\n\t\t\t\t\t<smoothly-table-head>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Breed</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Coat</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-head>\n\t\t\t\t\t<smoothly-table-body>\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-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\">\n\t\t\t\t\t\t\t\t\t\tCountry:\n\t\t\t\t\t\t\t\t\t\t<br />\n\t\t\t\t\t\t\t\t\t\t{cat.country}\n\t\t\t\t\t\t\t\t\t</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</smoothly-table-row>\n\t\t\t\t\t\t))}\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Cell5</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell\n\t\t\t\t\t\t\t\t<div slot={\"detail\"}>Content of the expandable cell</div>\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\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-expandable-cell>\n\t\t\t\t\t\t\t\tExpandable Cell 1<div slot={\"detail\"}>Content of the expandable cell 1</div>\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\tExpandable Cell 2<div slot={\"detail\"}>Content of the expandable cell 2</div>\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</smoothly-table-body>\n\t\t\t\t\t<smoothly-table-foot>\n\t\t\t\t\t\t<smoothly-table-row>\n\t\t\t\t\t\t\t<smoothly-table-cell>Footer Cell</smoothly-table-cell>\n\t\t\t\t\t\t\t<smoothly-table-cell>Footer Cell</smoothly-table-cell>\n\t\t\t\t\t\t</smoothly-table-row>\n\t\t\t\t\t</smoothly-table-foot>\n\t\t\t\t</smoothly-table>\n\t\t\t</Host>\n\t\t)\n\t}\n}\nexport interface Cat {\n\tbreed: string\n\tcountry: string\n\torigin: string\n\tcoat: string\n\tpattern: string\n}\nconst cats: Cat[] = [\n\t{\n\t\tbreed: \"Abyssinian\",\n\t\tcountry: \"Ethiopia\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Ticked\",\n\t},\n\t{\n\t\tbreed: \"Aegean\",\n\t\tcountry: \"Greece\",\n\t\torigin: \"Natural/Standard\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Bi- or tri-colored\",\n\t},\n\t{\n\t\tbreed: \"American Curl\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Bobtail\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Short/Long\",\n\t\tpattern: \"All\",\n\t},\n\t{\n\t\tbreed: \"American Shorthair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"American Wirehair\",\n\t\tcountry: \"United States\",\n\t\torigin: \"Mutation\",\n\t\tcoat: \"Rex\",\n\t\tpattern: \"All but colorpoint\",\n\t},\n\t{\n\t\tbreed: \"Arabian Mau\",\n\t\tcountry: \"Arabian Peninsula\",\n\t\torigin: \"Natural\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"\",\n\t},\n\t{\n\t\tbreed: \"Australian Mist\",\n\t\tcountry: \"Australia\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Spotted and Classic tabby\",\n\t},\n\t{\n\t\tbreed: \"Asian\",\n\t\tcountry: \"developed in the United Kingdom (founding stock from Asia)\",\n\t\torigin: \"\",\n\t\tcoat: \"Short\",\n\t\tpattern: \"Evenly solid\",\n\t},\n\t{\n\t\tbreed: \"Asian Semi-longhair\",\n\t\tcountry: \"United Kingdom\",\n\t\torigin: \"Crossbreed\",\n\t\tcoat: \"Semi-long\",\n\t\tpattern: \"Solid\",\n\t},\n]\n","@use \"../arrow.scss\";\n\n:host {\n\tdisplay: contents;\n}\n\n:host > div.content {\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n\tbox-sizing: border-box;\n\talign-items: center;\n\twhite-space: nowrap;\n\t@include arrow.arrow;\n\n\t&:hover {\n\t\t@include arrow.arrow-hover;\n\t\tbackground-color: rgb(var(--smoothly-table-hover-background));\n\t\tcolor: rgb(var(--smoothly-table-hover-foreground));\n\t\tstroke: rgb(var(--smoothly-table-hover-foreground));\n\t\tfill: rgb(var(--smoothly-table-hover-foreground));\n\t}\n}\n\n:host[open] > div.content {\n\t@include arrow.arrow-open;\n}\n\n:host > div:first-child {\n\tcursor: pointer;\n}\n\n:host > div.smoothly-table-detail {\n\tgrid-column: 1 / -1;\n\tgrid-row: 2;\n\tposition: relative;\n\tpadding-block: var(--smoothly-table-detail-padding-block, 0.5rem);\n\tpadding-inline: var(--smoothly-table-detail-padding-inline, 1.1rem);\n}\n\n:host[open] > div.content {\n\tbox-shadow: 1px 1px 1px -1px rgb(var(--smoothly-table-border)) inset,\n\t\t-3px -1px 1px -3px rgb(var(--smoothly-table-border)) inset;\n}\n\n:host[open] > div {\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n\tstroke: rgb(var(--smoothly-table-expanded-foreground));\n\tfill: rgb(var(--smoothly-table-expanded-foreground));\n}\n\n:host:not([open]) > div.smoothly-table-detail {\n\tdisplay: none;\n}\n\n:host > div.smoothly-table-detail::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\tbox-sizing: border-box;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tborder-left: 0.3em solid rgb(var(--smoothly-table-detail-border, var(--smoothly-table-border)));\n\tbox-shadow: 2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n\n:host > div.smoothly-table-detail::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tbox-shadow: -2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n","import { Component, Event, EventEmitter, h, Host, Method, Prop, VNode, Watch } from \"@stencil/core\"\n@Component({\n\ttag: \"smoothly-table-expandable-cell\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyTableExpandableCell {\n\tprivate detailElement?: HTMLDivElement\n\t@Prop({ reflect: true }) span?: number = 1\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Event() smoothlyTableExpandableCellChange: EventEmitter<boolean>\n\t@Event() smoothlyTableExpandableCellRegister: EventEmitter<void>\n\tcomponentWillLoad(): void {\n\t\tthis.smoothlyTableExpandableCellRegister.emit()\n\t}\n\t@Method()\n\tasync close(): Promise<void> {\n\t\tthis.open = false\n\t}\n\tclickHandler(event: MouseEvent): void {\n\t\tconst clickedOnDetail = this.detailElement && event.composedPath().includes(this.detailElement)\n\t\tif (!clickedOnDetail) {\n\t\t\tconst selection = window.getSelection()?.toString().trim()\n\t\t\tif ((selection?.length ?? 0) == 0) {\n\t\t\t\tthis.open = !this.open\n\t\t\t}\n\t\t}\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tthis.smoothlyTableExpandableCellChange.emit(this.open)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tstyle={{ \"--smoothly-table-cell-span\": this.span?.toString(10) }}\n\t\t\t\tonClick={(e: MouseEvent) => this.clickHandler(e)}>\n\t\t\t\t<div class={\"content\"}>\n\t\t\t\t\t<slot />\n\t\t\t\t</div>\n\t\t\t\t<div class={\"smoothly-table-detail\"} ref={(el: HTMLDivElement) => (this.detailElement = el)}>\n\t\t\t\t\t<slot name={\"detail\"} />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n","@use \"../arrow.scss\";\n\n:host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tgrid-template-rows: auto 0fr;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border));\n}\n\n:host::slotted(.smoothly-table-cell) {\n\tgrid: subgrid;\n\tcursor: pointer;\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n\twhite-space: nowrap;\n}\n\n:host:has(>.smoothly-table-cell:hover) {\n\tbackground-color: rgb(var(--smoothly-table-hover-background));\n\tcolor: rgb(var(--smoothly-table-hover-foreground));\n}\n\n:host[open] {\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n\tgrid-template-rows: auto 1fr;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border)),\n\t\t0px 0px 1px rgb(var(--smoothly-table-border)) inset;\n\tgrid-template-rows: 0fr 1fr;\n}\n\n:host(:not([open])) > div.smoothly-table-detail {\n\tdisplay: none;\n}\n\n:host > div.smoothly-table-detail {\n\tgrid-column: 1 / -1;\n\tcursor: default;\n\tposition: relative;\n\toverflow: hidden;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tcolor: rgb(var(--smoothly-table-expanded-foreground));\n}\n\n:host > .smoothly-table-cell:first-of-type {\n\t@include arrow.arrow;\n}\n\n:host:has(>.smoothly-table-cell:hover) > .smoothly-table-cell:first-of-type {\n\t@include arrow.arrow-hover;\n}\n\n:host[open] > .smoothly-table-cell:first-of-type {\n\t@include arrow.arrow-open;\n}\n\n:host[open] > div.smoothly-table-detail {\n\toverflow: visible;\n\tpadding-block: var(--smoothly-table-detail-padding-block, 0.5rem);\n\tpadding-inline: var(--smoothly-table-detail-padding-inline, 1.1rem);\n}\n\n:host > div.smoothly-table-detail::before {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\tbox-sizing: border-box;\n\ttop: 0;\n\tbottom: 0;\n\tleft: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tborder-left: 0.3em solid rgb(var(--smoothly-table-detail-border, var(--smoothly-table-border)));\n\tbox-shadow: 2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n\n:host > div.smoothly-table-detail::after {\n\tcontent: \"\";\n\tposition: absolute;\n\tdisplay: flex;\n\ttop: 0;\n\tbottom: 0;\n\tright: -1em;\n\twidth: 1em;\n\tbackground-color: rgb(var(--smoothly-table-expanded-background));\n\tbox-shadow: -2px 0px 0px 0px rgb(var(--smoothly-table-expanded-background)),\n\t\t0px 0px 1px 0px rgb(var(--smoothly-table-border));\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, VNode, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-expandable-row\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyTableExpandableRow {\n\tprivate div?: HTMLDivElement\n\t@Prop({ mutable: true, reflect: true }) open = false\n\t@Event() smoothlyTableExpandableRowChange: EventEmitter<boolean>\n\n\tclickHandler(event: MouseEvent): void {\n\t\tconst clickedOnDetail = this.div && event.composedPath().includes(this.div)\n\t\tif (!clickedOnDetail) {\n\t\t\tconst selection = window.getSelection()?.toString().trim()\n\t\t\tif ((selection?.length ?? 0) == 0) {\n\t\t\t\tthis.open = !this.open\n\t\t\t}\n\t\t}\n\t}\n\t@Watch(\"open\")\n\topenChange() {\n\t\tthis.smoothlyTableExpandableRowChange.emit(this.open)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host onClick={(e: MouseEvent) => this.clickHandler(e)}>\n\t\t\t\t<slot />\n\t\t\t\t<div class={\"smoothly-table-detail\"} ref={e => (this.div = e)}>\n\t\t\t\t\t<slot name=\"detail\" />\n\t\t\t\t</div>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n}\n","import { Component, h, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-filler-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableFillerRow {\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<smoothly-table-row>\n\t\t\t\t<smoothly-table-cell>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-table-cell>\n\t\t\t</smoothly-table-row>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tposition: sticky;\n\tz-index: 1;\n\tbottom: 0;\n\tbackground-color: rgb(var(--smoothly-table-footer-background));\n\tcolor: rgb(var(--smoothly-table-footer-foreground));\n\tstroke: rgb(var(--smoothly-table-footer-foreground));\n\tfill: rgb(var(--smoothly-table-footer-foreground));\n}\n","import { Component, h, Host, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-foot\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableFoot {\n\trender(): VNode | VNode[] {\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\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\ttop: var(--top);\n\tposition: sticky;\n\tz-index: var(--z-index);\n\t--smoothly-color: var(--smoothly-table-header-background);\n\t--smoothly-color-contrast: var(--smoothly-table-header-foreground);\n\tbackground-color: rgb(var(--smoothly-table-header-background));\n\tcolor: rgb(var(--smoothly-table-header-foreground));\n\tstroke: rgb(var(--smoothly-table-header-foreground));\n\tfill: rgb(var(--smoothly-table-header-foreground));\n\tfont-weight: bold;\n\ttransition: box-shadow 0.3s ease;\n}\n\n:host.scrolled {\n\tbox-shadow: var(--smoothly-table-header-shadow);\n}\n","import { Component, Element, h, Host, State, VNode } from \"@stencil/core\"\nimport { Scrollable } from \"../../../model\"\n\n@Component({\n\ttag: \"smoothly-table-head\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableHead {\n\t@Element() element: HTMLSmoothlyTableHeadElement\n\t@State() scrolled?: boolean\n\t@State() depth = 0\n\tprivate scrollParent?: HTMLElement\n\tprivate onScroll = (event: Event) => {\n\t\tif (event.target instanceof HTMLElement) {\n\t\t\tthis.scrollParent = event.target\n\t\t\tconst parentRect = this.scrollParent.getBoundingClientRect()\n\t\t\tconst elementRect = this.element.getBoundingClientRect()\n\t\t\tthis.scrolled = parentRect.top == elementRect.top\n\t\t}\n\t}\n\tgetTopOffset() {\n\t\tlet depth = 0\n\t\tlet currentElement: HTMLElement | null = this.element\n\t\twhile (currentElement) {\n\t\t\tif (currentElement.tagName.toLowerCase() === \"smoothly-table\") {\n\t\t\t\tconst head = currentElement.querySelector(\"smoothly-table-head\") as HTMLSmoothlyTableHeadElement\n\t\t\t\tif (head !== this.element) {\n\t\t\t\t\tconst rows = Array.from(head.querySelectorAll(\":scope > smoothly-table-row\"))\n\t\t\t\t\tdepth += rows.length\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrentElement = currentElement.parentElement as HTMLSmoothlyTableHeadElement\n\t\t}\n\t\tthis.depth = depth\n\t}\n\tconnectedCallback() {\n\t\tthis.scrollParent = Scrollable.findParent(this.element)\n\t\tthis.scrollParent?.addEventListener(\"scroll\", this.onScroll)\n\t\tthis.getTopOffset()\n\t}\n\tdisconnectedCallback() {\n\t\tthis.scrollParent?.removeEventListener(\"scroll\", this.onScroll)\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ scrolled: !!this.scrolled }}\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--top\": `calc(${this.depth} * var(--smoothly-table-cell-min-height))`,\n\t\t\t\t\t\t\"--z-index\": `${10 - this.depth}`,\n\t\t\t\t\t} as any\n\t\t\t\t}>\n\t\t\t\t<slot />\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tbox-sizing: border-box;\n\tbox-shadow: 0px 1px 1px -1px rgb(var(--smoothly-table-border));\n}\n\n:host .smoothly-table-cell,\n:host::slotted(.smoothly-table-cell) {\n\tdisplay: flex;\n\tgrid-column: span var(--smoothly-table-cell-span, 1);\n\talign-items: center;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n\twhite-space: nowrap;\n}\n\n:host:has(smoothly-table-expandable-cell) {\n\tgrid-template-rows: auto 0fr 0fr;\n}\n\n:host:has(smoothly-table-expandable-cell[open]) {\n\tgrid-template-rows: auto 1fr 0fr;\n}\n\n","import { Component, h, Host, Listen, VNode } from \"@stencil/core\"\nimport { SmoothlyTableExpandableCellCustomEvent } from \"../../../components\"\n\n@Component({\n\ttag: \"smoothly-table-row\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTableRow {\n\tprivate expandableCells = new Set<HTMLSmoothlyTableExpandableCellElement>()\n\t@Listen(\"smoothlyTableExpandableCellRegister\")\n\tsmoothlyTableExpandableCellRegisterHandler(event: SmoothlyTableExpandableCellCustomEvent<void>): void {\n\t\tevent.stopPropagation()\n\t\tthis.expandableCells.add(event.target)\n\t}\n\t@Listen(\"smoothlyTableExpandableCellChange\")\n\tsmoothlyTableExpandableCellChangeHandler(event: SmoothlyTableExpandableCellCustomEvent<boolean>): void {\n\t\tif (event.detail) {\n\t\t\tfor (const cell of this.expandableCells) {\n\t\t\t\tevent.target != cell && cell.close()\n\t\t\t}\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\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","@use \"../expandable/arrow.scss\";\n\n:host {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n\tmargin-top: 1px;\n}\n\n:host > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tposition: relative;\n\tcursor: pointer;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n\tbackground-color: rgb(var(--smoothly-default-tint));\n\tborder-bottom: 1px solid rgb(var(--smoothly-default-shade));\n\t@include arrow.arrow;\n}\n\n:host > div:first-child:hover {\n\t@include arrow.arrow-hover;\n\tcolor: rgb(var(--smoothly-table-hover-foreground));\n\tbackground-color: rgb(var(--smoothly-table-hover-background));\n}\n\n:host[open] > div:first-child {\n\t@include arrow.arrow-open;\n}\n\n:host > div:last-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\tgrid-template-columns: subgrid;\n}\n\n:host[align] > div:first-child {\n\tgrid-template-columns: subgrid;\n}\n\n:host[align] > div:first-child > div {\n\tdisplay: contents;\n}\n\n:host[align] > div:first-child > div > * {\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-inline: var(--smoothly-table-cell-padding-inline, 1.1rem);\n\tmin-height: var(--smoothly-table-cell-min-height, 2.75rem);\n}\n\n:host:not([align]) > div:first-child {\n\tgrid-column: 1 / -1;\n\tdisplay: grid;\n\talign-items: center;\n\tgrid-template-columns: repeat(2, auto);\n\tjustify-content: space-between;\n}\n\n:host:not([align]) > div:first-child > div:first-child {\n\tjustify-self: start;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n\n:host:not([align]) > div:first-child > div:last-child {\n\tjustify-self: end;\n\tdisplay: flex;\n\tgap: 1rem;\n}\n\n:host:not([open]) {\n\tgrid-template-rows: auto 0fr;\n}\n\n:host:not([open]) > div:last-child {\n\tgrid-row: 2;\n\toverflow: hidden;\n}\n","import { Component, Event, EventEmitter, h, Host, Prop, VNode } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-table-row-group\",\n\tstyleUrl: \"style.scss\",\n\tscoped: true,\n})\nexport class SmoothlyTableRowGroup {\n\t@Prop({ reflect: true }) align = false\n\t@Prop({ reflect: true, mutable: true }) open = false\n\t@Event() smoothlyTableRowGroupChange: EventEmitter<boolean>\n\n\tclickHandler(): void {\n\t\tconst selection = window.getSelection()?.toString().trim()\n\t\tif ((selection?.length ?? 0) == 0) {\n\t\t\tthis.open = !this.open\n\t\t\tthis.smoothlyTableRowGroupChange.emit(this.open)\n\t\t}\n\t}\n\n\trender(): VNode | VNode[] {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div onClick={() => this.clickHandler()}>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"start\"} />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<slot name={\"end\"} />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div>\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",":host {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(var(--tabs), auto);\n\tgrid-template-rows: auto auto;\n}\n:host.hide-tabs::slotted(smoothly-tab>div:first-child) {\n\tdisplay: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Listen, Method, Prop, State, Watch } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tabs\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabs {\n\t@Element() element: HTMLSmoothlyTabsElement\n\t@Prop({ reflect: true }) tabs: \"always\" | \"multiple\" = \"always\"\n\t@Prop() numberOfTabs: number\n\t@State() tabElements: HTMLSmoothlyTabElement[] = []\n\t@State() selectedElement: HTMLSmoothlyTabElement\n\t@Event() smoothlyTabOpen: EventEmitter<string>\n\n\t@Method()\n\tasync removeTab(tab: HTMLSmoothlyTabElement) {\n\t\tif (this.element.isConnected) {\n\t\t\tthis.tabElements = this.tabElements.filter(element => element !== tab)\n\t\t\tif (tab.open) {\n\t\t\t\tconst firstOpenableTab = this.tabElements.find(element => !element.disabled)\n\t\t\t\tfirstOpenableTab && (firstOpenableTab.open = true)\n\t\t\t}\n\t\t}\n\t}\n\n\t@Listen(\"smoothlyTabLoad\")\n\tonInputLoad(event: CustomEvent<(smoothlyTabs: SmoothlyTabs) => void>) {\n\t\tevent.stopPropagation()\n\t\tif (\n\t\t\tthis.isSmoothlyTabElement(event.target) &&\n\t\t\tevent.target.parentElement == this.element &&\n\t\t\t!this.tabElements.includes(event.target)\n\t\t) {\n\t\t\tevent.detail(this)\n\t\t\tthis.tabElements = [...this.tabElements, event.target]\n\t\t}\n\t}\n\n\tprivate isSmoothlyTabElement(element: any): element is HTMLSmoothlyTabElement {\n\t\treturn element?.tagName == \"SMOOTHLY-TAB\"\n\t}\n\n\t@Listen(\"smoothlyTabOpen\")\n\topenChanged(event: CustomEvent) {\n\t\tconst target = event.target\n\t\tif (this.isSmoothlyTabElement(target)) {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.selectedElement = target\n\t\t\tthis.smoothlyTabOpen.emit(event.detail)\n\t\t}\n\t}\n\t@Watch(\"selectedElement\")\n\tonSelectedChange(value: HTMLSmoothlyTabElement, old: HTMLSmoothlyTabElement) {\n\t\tif (old) {\n\t\t\told.open = false\n\t\t}\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host\n\t\t\t\tclass={{ \"hide-tabs\": this.tabs == \"multiple\" && this.tabElements.length == 1 }}\n\t\t\t\tstyle={{ \"--tabs\": `${this.numberOfTabs ?? this.tabElements.length}` }}>\n\t\t\t\t<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}\n:host > * {\n\tmargin: auto;\n\tmax-width: 1200px;\n\twidth: 100%;\n\tmargin-block: 5rem;\n}\n:host code {\n\tcolor: rgb(var(--smoothly-medium-contrast));\n\tbackground-color: rgb(var(--smoothly-medium-color));\n\tpadding-inline: 0.25rem;\n\tborder-radius: 0.25rem;\n}\n","import { Component, h, Host, State } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-tabs-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyTabsDemo {\n\t@State() extraTab1: boolean\n\t@State() extraTab2: boolean\n\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button color=\"primary\" onClick={() => (this.extraTab1 = !this.extraTab1)}>\n\t\t\t\t\t\t{this.extraTab1 ? \"Remove\" : \"Add\"} tab\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<smoothly-tabs tabs=\"multiple\">\n\t\t\t\t\t<smoothly-tab label=\"Single Tab\" open>\n\t\t\t\t\t\t<strong>Single Tab content here.</strong> If only one tab is available setting <code>tabs</code> to{\" \"}\n\t\t\t\t\t\t<code>\"multiple\"</code> will hide the tab navigation and display the single tab's content directly.\n\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t{this.extraTab1 && (\n\t\t\t\t\t\t<smoothly-tab label=\"Extra tab\">\n\t\t\t\t\t\t\tWhen there are more then one tab, the tab navigation will show.\n\t\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t)}\n\t\t\t\t</smoothly-tabs>\n\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-button color=\"primary\" onClick={() => (this.extraTab2 = !this.extraTab2)}>\n\t\t\t\t\t\t{this.extraTab2 ? \"Remove\" : \"Add\"} tab\n\t\t\t\t\t</smoothly-button>\n\t\t\t\t</div>\n\t\t\t\t<smoothly-tabs>\n\t\t\t\t\t<smoothly-tab label=\"Disabled tab\" tooltip=\"Tooltip for test3\" disabled>\n\t\t\t\t\t\tthis is a test message again!\n\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t<smoothly-tab label=\"test1\" tooltip=\"Tooltip for test1\" open>\n\t\t\t\t\t\tHello world!\n\t\t\t\t\t</smoothly-tab>\n\t\t\t\t\t<smoothly-tab label=\"test2\">this is a test message!</smoothly-tab>\n\t\t\t\t\t{this.extraTab2 && <smoothly-tab label=\"test-extra\">this is a test message!</smoothly-tab>}\n\t\t\t\t</smoothly-tabs>\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 title={`${this.color} ${variant}`} color={this.color} variant={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: 1rem;\n\tcolumn-gap: 0.5rem;\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} />)\n\t}\n}\n",":host {\n\tmax-width: min(calc(100% - 2rem), 56rem);\n\tmargin: auto;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2em;\n\tmargin-top: 2em;\n}\n\n:host>smoothly-theme-picker {\n\twidth: 20em;\n}\n\n:host>div {\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n\tgap: 1rem;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h2>Theme</h2>\n\t\t\t\t<smoothly-theme-picker>\n\t\t\t\t\t<smoothly-item selected value=\"assets/style/smoothly.css\">\n\t\t\t\t\t\tSmoothly\n\t\t\t\t\t</smoothly-item>\n\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<smoothly-item value=\"https://app.proquse.com/assets/style/index.css\">Proquse</smoothly-item>\n\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<smoothly-item value=\"https://test.dash.pax2pay.app/p2pdash.css\">Pax2Pay Dashboard</smoothly-item>\n\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<smoothly-item value=\"https://theme.payfunc.com/intergiro/index.css\">Intergiro Monitor</smoothly-item>\n\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<smoothly-item value=\"https://theme.payfunc.com/dark/index.css\">Payfunc Dark</smoothly-item>\n\t\t\t\t</smoothly-theme-picker>\n\t\t\t\t<div>\n\t\t\t\t\t<smoothly-theme-colors />\n\t\t\t\t\t<smoothly-theme-guide />\n\t\t\t\t</div>\n\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\tTo redirect\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link=\"/redirect\">\n\t\t\t\t\tTo /redirect\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link={new URL(\"/redirect\", window.location.origin).href}>\n\t\t\t\t\tTo new URL(\"redirect\")\n\t\t\t\t</smoothly-button>\n\t\t\t\t<smoothly-button type=\"link\" link=\"redirect/nested\">\n\t\t\t\t\tTo redirect nested\n\t\t\t\t</smoothly-button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tmax-width: 50ch;\n}\n","import { Component, h } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-theme-guide\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyThemeColors {\n\trender() {\n\t\treturn [\n\t\t\t<smoothly-display>\n\t\t\t\tTint is used as background to highlight, for example hovering an item in the select menu.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tColor is used as a normal background or as a background to show that something is selected, for example a\n\t\t\t\tselected item in the select menu.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tShade is used as border and for symbols in buttons. It works as a semi-low contrast against color and tint.\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t\t<smoothly-display>\n\t\t\t\tOne can use the {\"<smoothly-color>\"} component to switch between what color set is used.{\" \"}\n\t\t\t</smoothly-display>,\n\t\t\t<br />,\n\t\t]\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\tlooks=\"border\"\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\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t<label slot=\"label\">Select theme</label>\n\t\t\t\t\t<slot />\n\t\t\t\t</smoothly-input-select>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host {\n\tdisplay: block;\n}\n:host > button {\n\twidth: 100%;\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n\tpadding-inline: 0;\n\tcursor: pointer;\n\tborder: none;\n\tborder-radius: 3em;\n\tbackground-color: rgb(var(--smoothly-color));\n}\n:host > button:hover {\n\tbackground-color: rgb(var(--smoothly-color-tint));\n}\n:host > button > smoothly-icon {\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\talign-items: center;\n\tfill: rgb(var(--smoothly-color-contrast));\n\tstroke: rgb(var(--smoothly-color-contrast));\n\ttransition: 100ms ease-in-out;\n}\n:host([selected][checkmark]) > button > smoothly-icon{\n\tfill: rgb(var(--smoothly-success-contrast));\n\tstroke: rgb(var(--smoothly-success-contrast));\n}\n:host([selected][checkmark]) > button {\n\tbackground-color: rgb(var(--smoothly-success-color));\n}\n:host([selected][checkmark]) > button:hover{\n\tbackground-color: rgb(var(--smoothly-success-tint));\n}\n:host([selected]) > button > smoothly-icon {\n\ttransform: translateX(100%);\n}\n:host([size=tiny]) {\n\t--height: 1.25rem;\n}\n:host([size=small]) {\n\t--height: 1.5rem;\n}\n:host([size=default]) {\n\t--height: 2rem;\n}\n:host([size=large]) {\n\t--height: 2.5rem;\n}\n:host {\n\theight: var(--height);\n\twidth: calc(var(--height) * 2);\n}\n:host > button > smoothly-icon {\n\t--smoothly-icon-size: var(--height);\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\tscoped: 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: \"tiny\" | \"small\" | \"default\" | \"large\" = \"default\"\n\t@Prop({ reflect: true }) color: Color = \"medium\"\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 type=\"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 }}\n\t\t\t\t\t/>\n\t\t\t\t</button>\n\t\t\t</Host>\n\t\t)\n\t}\n}\n",":host>div {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(5, max-content);\n\tgap: 1em;\n}\n\n:host>div>span>p {\n\tmargin: 0;\n}\n","import { Component, h, Host } from \"@stencil/core\"\n\n@Component({\n\ttag: \"smoothly-toggle-switch-demo\",\n\tstyleUrl: \"style.css\",\n\tscoped: true,\n})\nexport class SmoothlyToggleSwitchDemo {\n\trender() {\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<h4>Toggle switches</h4>\n\t\t\t\t<div>\n\t\t\t\t\t<p>Checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Tiny</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"tiny\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Small</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Standard</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Large</p>\n\t\t\t\t\t\t<smoothly-toggle-switch disabled={false} size=\"large\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<p>Colors checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Danger</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"danger\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Primary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"primary\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Secondary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch color=\"secondary\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<p></p>\n\t\t\t\t\t<p>Colors no checkmark</p>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Danger</p>\n\t\t\t\t\t\t<smoothly-toggle-switch checkmark={false} color=\"danger\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Primary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch checkmark={false} color=\"primary\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t\t<span>\n\t\t\t\t\t\t<p>Secondary color</p>\n\t\t\t\t\t\t<smoothly-toggle-switch checkmark={false} color=\"secondary\" disabled={false} size=\"small\" />\n\t\t\t\t\t</span>\n\t\t\t\t</div>\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}\n:host > button {\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 />\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 />\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 />\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"],"mappings":"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A,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,OAC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","ignoreList":[]}