@nova-design-system/nova-webcomponents 3.6.0 → 3.7.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 (291) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/native.cjs.js +1 -1
  3. package/dist/cjs/nv-accordion-item.cjs.entry.js +2 -2
  4. package/dist/cjs/nv-accordion-item.cjs.entry.js.map +1 -1
  5. package/dist/cjs/nv-accordion.cjs.entry.js +16 -43
  6. package/dist/cjs/nv-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
  8. package/dist/cjs/nv-badge_2.cjs.entry.js.map +1 -1
  9. package/dist/cjs/nv-calendar.cjs.entry.js +96 -75
  10. package/dist/cjs/nv-calendar.cjs.entry.js.map +1 -1
  11. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +4 -4
  12. package/dist/cjs/nv-fieldcheckbox.cjs.entry.js.map +1 -1
  13. package/dist/cjs/nv-fielddate.cjs.entry.js +26 -5
  14. package/dist/cjs/nv-fielddate.cjs.entry.js.map +1 -1
  15. package/dist/cjs/nv-fielddaterange.cjs.entry.js +32 -4
  16. package/dist/cjs/nv-fielddaterange.cjs.entry.js.map +1 -1
  17. package/dist/cjs/nv-fielddropdown.cjs.entry.js +3 -3
  18. package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +1 -1
  19. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +14 -6
  20. package/dist/cjs/nv-fieldmultiselect.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-fieldnumber.cjs.entry.js +3 -3
  22. package/dist/cjs/nv-fieldpassword.cjs.entry.js +3 -3
  23. package/dist/cjs/nv-fieldradio.cjs.entry.js +3 -3
  24. package/dist/cjs/nv-fieldselect.cjs.entry.js +5 -5
  25. package/dist/cjs/nv-fieldslider.cjs.entry.js +3 -3
  26. package/dist/cjs/nv-fieldtext.cjs.entry.js +3 -3
  27. package/dist/cjs/nv-fieldtextarea.cjs.entry.js +3 -3
  28. package/dist/cjs/nv-fieldtime.cjs.entry.js +10 -10
  29. package/dist/cjs/nv-fieldtime.cjs.entry.js.map +1 -1
  30. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  31. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +2 -2
  32. package/dist/cjs/nv-menu.cjs.entry.js +1 -1
  33. package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
  34. package/dist/cjs/nv-popover.cjs.entry.js +1 -1
  35. package/dist/cjs/nv-row.cjs.entry.js +1 -1
  36. package/dist/cjs/nv-stack.cjs.entry.js +1 -1
  37. package/dist/cjs/nv-table.cjs.entry.js +2 -2
  38. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  39. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  40. package/dist/collection/components/nv-accordion/nv-accordion.docs.js +17 -10
  41. package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
  42. package/dist/collection/components/nv-accordion/nv-accordion.js +23 -55
  43. package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
  44. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js +5 -5
  45. package/dist/collection/components/nv-accordion-item/nv-accordion-item.js.map +1 -1
  46. package/dist/collection/components/nv-calendar/nv-calendar.css +5 -0
  47. package/dist/collection/components/nv-calendar/nv-calendar.js +113 -74
  48. package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
  49. package/dist/collection/components/nv-calendar/partials/calendar-grid.js +3 -0
  50. package/dist/collection/components/nv-calendar/partials/calendar-grid.js.map +1 -1
  51. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -4
  52. package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
  53. package/dist/collection/components/nv-fielddate/nv-fielddate.js +51 -5
  54. package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
  55. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +61 -4
  56. package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
  57. package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +3 -3
  58. package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +1 -1
  59. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +7 -1
  60. package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js.map +1 -1
  61. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +8 -8
  62. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
  63. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +14 -6
  64. package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
  65. package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +3 -3
  66. package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +3 -3
  67. package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +3 -3
  68. package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +5 -5
  69. package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
  70. package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +3 -3
  71. package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +3 -3
  72. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +9 -9
  73. package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
  74. package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +11 -13
  75. package/dist/collection/components/nv-icon/nv-icon.js +1 -1
  76. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +1 -1
  77. package/dist/collection/components/nv-loader/nv-loader.js +1 -1
  78. package/dist/collection/components/nv-menu/nv-menu.js +1 -1
  79. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  80. package/dist/collection/components/nv-popover/nv-popover.js +1 -1
  81. package/dist/collection/components/nv-row/nv-row.js +1 -1
  82. package/dist/collection/components/nv-stack/nv-stack.js +1 -1
  83. package/dist/collection/components/nv-table/nv-table.js +2 -2
  84. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  85. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  86. package/dist/components/nv-accordion-item.js +1 -1
  87. package/dist/components/nv-accordion.js +22 -52
  88. package/dist/components/nv-accordion.js.map +1 -1
  89. package/dist/components/nv-alert.js +1 -1
  90. package/dist/components/nv-avatar.js +1 -1
  91. package/dist/components/nv-badge.js +1 -1
  92. package/dist/components/nv-breadcrumb.js +2 -2
  93. package/dist/components/nv-button.js +1 -1
  94. package/dist/components/nv-calendar.js +1 -1
  95. package/dist/components/nv-datagrid.js +2 -2
  96. package/dist/components/nv-dialog.js +4 -4
  97. package/dist/components/nv-dialogfooter.js +1 -1
  98. package/dist/components/nv-fieldcheckbox.js +1 -1
  99. package/dist/components/nv-fielddate.js +34 -12
  100. package/dist/components/nv-fielddate.js.map +1 -1
  101. package/dist/components/nv-fielddaterange.js +40 -11
  102. package/dist/components/nv-fielddaterange.js.map +1 -1
  103. package/dist/components/nv-fielddropdown.js +8 -8
  104. package/dist/components/nv-fielddropdownitem.js +1 -1
  105. package/dist/components/nv-fielddropdownitemcheck.js +1 -1
  106. package/dist/components/nv-fieldmultiselect.js +21 -13
  107. package/dist/components/nv-fieldmultiselect.js.map +1 -1
  108. package/dist/components/nv-fieldnumber.js +1 -1
  109. package/dist/components/nv-fieldpassword.js +6 -6
  110. package/dist/components/nv-fieldradio.js +3 -3
  111. package/dist/components/nv-fieldselect.js +8 -8
  112. package/dist/components/nv-fieldslider.js +7 -7
  113. package/dist/components/nv-fieldtext.js +1 -1
  114. package/dist/components/nv-fieldtextarea.js +3 -3
  115. package/dist/components/nv-fieldtime.js +14 -14
  116. package/dist/components/nv-fieldtime.js.map +1 -1
  117. package/dist/components/nv-icon.js +1 -1
  118. package/dist/components/nv-iconbutton.js +1 -1
  119. package/dist/components/nv-loader.js +1 -1
  120. package/dist/components/nv-menu.js +4 -4
  121. package/dist/components/nv-menuitem.js +1 -1
  122. package/dist/components/nv-popover.js +1 -1
  123. package/dist/components/nv-row.js +1 -1
  124. package/dist/components/nv-stack.js +1 -1
  125. package/dist/components/nv-table.js +2 -2
  126. package/dist/components/nv-toggle.js +2 -2
  127. package/dist/components/nv-tooltip.js +1 -1
  128. package/dist/components/{p-9ed7a440.js → p-0143cee0.js} +5 -5
  129. package/dist/components/p-0143cee0.js.map +1 -0
  130. package/dist/components/{p-d2b4441a.js → p-07550eac.js} +3 -3
  131. package/dist/components/{p-d2b4441a.js.map → p-07550eac.js.map} +1 -1
  132. package/dist/components/{p-f266b533.js → p-12258eef.js} +5 -5
  133. package/dist/components/{p-f266b533.js.map → p-12258eef.js.map} +1 -1
  134. package/dist/components/{p-316ae8e3.js → p-144e80f0.js} +4 -4
  135. package/dist/components/{p-316ae8e3.js.map → p-144e80f0.js.map} +1 -1
  136. package/dist/components/{p-230ad6c5.js → p-44df0d22.js} +7 -7
  137. package/dist/components/p-44df0d22.js.map +1 -0
  138. package/dist/components/{p-8a5b0f74.js → p-5d5668f0.js} +2 -2
  139. package/dist/components/{p-8a5b0f74.js.map → p-5d5668f0.js.map} +1 -1
  140. package/dist/components/{p-618ae85a.js → p-8067d283.js} +2 -2
  141. package/dist/components/{p-618ae85a.js.map → p-8067d283.js.map} +1 -1
  142. package/dist/components/{p-5e89eb9d.js → p-8b82a6f4.js} +7 -7
  143. package/dist/components/{p-5e89eb9d.js.map → p-8b82a6f4.js.map} +1 -1
  144. package/dist/components/{p-9cff2fd1.js → p-91a558eb.js} +2 -2
  145. package/dist/components/{p-9cff2fd1.js.map → p-91a558eb.js.map} +1 -1
  146. package/dist/components/{p-436a0f99.js → p-ba87d9d5.js} +3 -3
  147. package/dist/components/{p-436a0f99.js.map → p-ba87d9d5.js.map} +1 -1
  148. package/dist/components/{p-840858ed.js → p-d32b75ac.js} +99 -77
  149. package/dist/components/p-d32b75ac.js.map +1 -0
  150. package/dist/components/{p-ac76a11c.js → p-d576d64f.js} +4 -4
  151. package/dist/components/{p-ac76a11c.js.map → p-d576d64f.js.map} +1 -1
  152. package/dist/components/{p-f1bbb9e8.js → p-dd7ff995.js} +2 -2
  153. package/dist/components/{p-f1bbb9e8.js.map → p-dd7ff995.js.map} +1 -1
  154. package/dist/components/{p-4864a690.js → p-dfd2d4f0.js} +2 -2
  155. package/dist/components/{p-4864a690.js.map → p-dfd2d4f0.js.map} +1 -1
  156. package/dist/components/{p-190c8f60.js → p-e104c58a.js} +4 -4
  157. package/dist/components/p-e104c58a.js.map +1 -0
  158. package/dist/components/{p-4069966e.js → p-e8e6f88a.js} +2 -2
  159. package/dist/components/{p-4069966e.js.map → p-e8e6f88a.js.map} +1 -1
  160. package/dist/components/{p-79b38dfb.js → p-f97d1cb1.js} +3 -3
  161. package/dist/components/{p-79b38dfb.js.map → p-f97d1cb1.js.map} +1 -1
  162. package/dist/esm/loader.js +1 -1
  163. package/dist/esm/native.js +1 -1
  164. package/dist/esm/nv-accordion-item.entry.js +2 -2
  165. package/dist/esm/nv-accordion-item.entry.js.map +1 -1
  166. package/dist/esm/nv-accordion.entry.js +16 -43
  167. package/dist/esm/nv-accordion.entry.js.map +1 -1
  168. package/dist/esm/nv-badge_2.entry.js +1 -1
  169. package/dist/esm/nv-badge_2.entry.js.map +1 -1
  170. package/dist/esm/nv-calendar.entry.js +96 -75
  171. package/dist/esm/nv-calendar.entry.js.map +1 -1
  172. package/dist/esm/nv-fieldcheckbox.entry.js +4 -4
  173. package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
  174. package/dist/esm/nv-fielddate.entry.js +26 -5
  175. package/dist/esm/nv-fielddate.entry.js.map +1 -1
  176. package/dist/esm/nv-fielddaterange.entry.js +32 -4
  177. package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
  178. package/dist/esm/nv-fielddropdown.entry.js +3 -3
  179. package/dist/esm/nv-fielddropdownitem.entry.js +1 -1
  180. package/dist/esm/nv-fieldmultiselect.entry.js +14 -6
  181. package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
  182. package/dist/esm/nv-fieldnumber.entry.js +3 -3
  183. package/dist/esm/nv-fieldpassword.entry.js +3 -3
  184. package/dist/esm/nv-fieldradio.entry.js +3 -3
  185. package/dist/esm/nv-fieldselect.entry.js +5 -5
  186. package/dist/esm/nv-fieldslider.entry.js +3 -3
  187. package/dist/esm/nv-fieldtext.entry.js +3 -3
  188. package/dist/esm/nv-fieldtextarea.entry.js +3 -3
  189. package/dist/esm/nv-fieldtime.entry.js +10 -10
  190. package/dist/esm/nv-fieldtime.entry.js.map +1 -1
  191. package/dist/esm/nv-icon.entry.js +1 -1
  192. package/dist/esm/nv-iconbutton_2.entry.js +2 -2
  193. package/dist/esm/nv-menu.entry.js +1 -1
  194. package/dist/esm/nv-menuitem.entry.js +1 -1
  195. package/dist/esm/nv-popover.entry.js +1 -1
  196. package/dist/esm/nv-row.entry.js +1 -1
  197. package/dist/esm/nv-stack.entry.js +1 -1
  198. package/dist/esm/nv-table.entry.js +2 -2
  199. package/dist/esm/nv-toggle.entry.js +2 -2
  200. package/dist/esm/nv-tooltip.entry.js +1 -1
  201. package/dist/native/native.css +1 -1
  202. package/dist/native/native.esm.js +1 -1
  203. package/dist/native/native.esm.js.map +1 -1
  204. package/dist/native/p-051db87c.entry.js +2 -0
  205. package/dist/native/p-051db87c.entry.js.map +1 -0
  206. package/dist/native/{p-c9cde996.entry.js → p-0e005d95.entry.js} +2 -2
  207. package/dist/native/{p-33e5037d.entry.js → p-10ce53ea.entry.js} +2 -2
  208. package/dist/native/{p-cf468c67.entry.js → p-12039da4.entry.js} +2 -2
  209. package/dist/native/{p-b829383a.entry.js → p-16ef7dd4.entry.js} +2 -2
  210. package/dist/native/{p-0ada0382.entry.js → p-2a6783ca.entry.js} +2 -2
  211. package/dist/native/p-2a6783ca.entry.js.map +1 -0
  212. package/dist/native/{p-ddb0b9f6.entry.js → p-34bf336f.entry.js} +2 -2
  213. package/dist/native/{p-625be06b.entry.js → p-3f139780.entry.js} +2 -2
  214. package/dist/native/{p-c2826f22.entry.js → p-40fa3328.entry.js} +2 -2
  215. package/dist/native/{p-8030c16b.entry.js → p-4b15cff3.entry.js} +2 -2
  216. package/dist/native/{p-0ac03708.entry.js → p-516da423.entry.js} +2 -2
  217. package/dist/native/p-516da423.entry.js.map +1 -0
  218. package/dist/native/{p-f9aa4900.entry.js → p-64cb38e6.entry.js} +2 -2
  219. package/dist/native/{p-bab6d0a5.entry.js → p-67c34b8c.entry.js} +2 -2
  220. package/dist/native/{p-31e72603.entry.js → p-68edb2e8.entry.js} +2 -2
  221. package/dist/native/p-73c08f3b.entry.js +2 -0
  222. package/dist/native/p-73c08f3b.entry.js.map +1 -0
  223. package/dist/native/p-7703c736.entry.js +2 -0
  224. package/dist/native/p-7703c736.entry.js.map +1 -0
  225. package/dist/native/{p-1cce9b24.entry.js → p-916acbd3.entry.js} +2 -2
  226. package/dist/native/p-a50f3850.entry.js +2 -0
  227. package/dist/native/{p-2d23fcea.entry.js → p-a73fa60a.entry.js} +2 -2
  228. package/dist/native/{p-5eca22c7.entry.js → p-b3f9db23.entry.js} +2 -2
  229. package/dist/native/{p-5eca22c7.entry.js.map → p-b3f9db23.entry.js.map} +1 -1
  230. package/dist/native/{p-be67545e.entry.js → p-bba5cc9b.entry.js} +2 -2
  231. package/dist/native/{p-e802fbb8.entry.js → p-bee62b2b.entry.js} +2 -2
  232. package/dist/native/p-dc34da69.entry.js +2 -0
  233. package/dist/native/p-dc34da69.entry.js.map +1 -0
  234. package/dist/native/{p-2576c1a0.entry.js → p-f00a4552.entry.js} +2 -2
  235. package/dist/native/{p-609b3822.entry.js → p-f540db71.entry.js} +2 -2
  236. package/dist/native/{p-fca3e27d.entry.js → p-f687e05c.entry.js} +2 -2
  237. package/dist/native/p-f687e05c.entry.js.map +1 -0
  238. package/dist/native/{p-18831490.entry.js → p-fa81b77f.entry.js} +2 -2
  239. package/dist/native/p-fa81b77f.entry.js.map +1 -0
  240. package/dist/native/{p-e19a8885.entry.js → p-fcd52432.entry.js} +2 -2
  241. package/dist/types/components/nv-accordion/nv-accordion.d.ts +16 -49
  242. package/dist/types/components/nv-accordion-item/nv-accordion-item.d.ts +2 -2
  243. package/dist/types/components/nv-calendar/nv-calendar.d.ts +7 -1
  244. package/dist/types/components/nv-calendar/partials/calendar-grid.d.ts +2 -0
  245. package/dist/types/components/nv-fieldcheckbox/nv-fieldcheckbox.d.ts +2 -0
  246. package/dist/types/components/nv-fielddate/nv-fielddate.d.ts +5 -0
  247. package/dist/types/components/nv-fielddaterange/nv-fielddaterange.d.ts +5 -0
  248. package/dist/types/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.d.ts +6 -0
  249. package/dist/types/components/nv-fieldmultiselect/nv-fieldmultiselect.d.ts +4 -0
  250. package/dist/types/components.d.ts +56 -10
  251. package/dist/vscode-data.json +1 -5
  252. package/hydrate/index.js +261 -200
  253. package/hydrate/index.mjs +261 -200
  254. package/package.json +1 -1
  255. package/readme.md +6 -0
  256. package/dist/components/p-190c8f60.js.map +0 -1
  257. package/dist/components/p-230ad6c5.js.map +0 -1
  258. package/dist/components/p-840858ed.js.map +0 -1
  259. package/dist/components/p-9ed7a440.js.map +0 -1
  260. package/dist/native/p-0ac03708.entry.js.map +0 -1
  261. package/dist/native/p-0ada0382.entry.js.map +0 -1
  262. package/dist/native/p-12963ae4.entry.js +0 -2
  263. package/dist/native/p-12963ae4.entry.js.map +0 -1
  264. package/dist/native/p-18831490.entry.js.map +0 -1
  265. package/dist/native/p-4cf00884.entry.js +0 -2
  266. package/dist/native/p-4cf00884.entry.js.map +0 -1
  267. package/dist/native/p-5172f17a.entry.js +0 -2
  268. package/dist/native/p-a6dc9b59.entry.js +0 -2
  269. package/dist/native/p-a6dc9b59.entry.js.map +0 -1
  270. package/dist/native/p-fca3e27d.entry.js.map +0 -1
  271. package/dist/native/p-fe4e516b.entry.js +0 -2
  272. package/dist/native/p-fe4e516b.entry.js.map +0 -1
  273. /package/dist/native/{p-c9cde996.entry.js.map → p-0e005d95.entry.js.map} +0 -0
  274. /package/dist/native/{p-33e5037d.entry.js.map → p-10ce53ea.entry.js.map} +0 -0
  275. /package/dist/native/{p-cf468c67.entry.js.map → p-12039da4.entry.js.map} +0 -0
  276. /package/dist/native/{p-b829383a.entry.js.map → p-16ef7dd4.entry.js.map} +0 -0
  277. /package/dist/native/{p-ddb0b9f6.entry.js.map → p-34bf336f.entry.js.map} +0 -0
  278. /package/dist/native/{p-625be06b.entry.js.map → p-3f139780.entry.js.map} +0 -0
  279. /package/dist/native/{p-c2826f22.entry.js.map → p-40fa3328.entry.js.map} +0 -0
  280. /package/dist/native/{p-8030c16b.entry.js.map → p-4b15cff3.entry.js.map} +0 -0
  281. /package/dist/native/{p-f9aa4900.entry.js.map → p-64cb38e6.entry.js.map} +0 -0
  282. /package/dist/native/{p-bab6d0a5.entry.js.map → p-67c34b8c.entry.js.map} +0 -0
  283. /package/dist/native/{p-31e72603.entry.js.map → p-68edb2e8.entry.js.map} +0 -0
  284. /package/dist/native/{p-1cce9b24.entry.js.map → p-916acbd3.entry.js.map} +0 -0
  285. /package/dist/native/{p-5172f17a.entry.js.map → p-a50f3850.entry.js.map} +0 -0
  286. /package/dist/native/{p-2d23fcea.entry.js.map → p-a73fa60a.entry.js.map} +0 -0
  287. /package/dist/native/{p-be67545e.entry.js.map → p-bba5cc9b.entry.js.map} +0 -0
  288. /package/dist/native/{p-e802fbb8.entry.js.map → p-bee62b2b.entry.js.map} +0 -0
  289. /package/dist/native/{p-2576c1a0.entry.js.map → p-f00a4552.entry.js.map} +0 -0
  290. /package/dist/native/{p-609b3822.entry.js.map → p-f540db71.entry.js.map} +0 -0
  291. /package/dist/native/{p-e19a8885.entry.js.map → p-fcd52432.entry.js.map} +0 -0
@@ -3,7 +3,7 @@ import { a as startsWithIgnoreCase } from './string.utils-16aed4a7.js';
3
3
  import { T as TimeType } from './constants-4faa1fae.js';
4
4
  import { v as v4 } from './v4-a79185f4.js';
5
5
 
6
- const nvFieldtimeCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldtime{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldtime[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldtime[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldtime[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fieldtime[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fieldtime label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldtime nv-popover{width:100%;display:block}nv-fieldtime nv-popover [data-scope=popover]{padding:var(--list-dropdown-padding);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border);width:100%}nv-fieldtime .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldtime .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%;min-height:40px;gap:0;padding-left:var(--form-field-padding-x)}nv-fieldtime .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fieldtime .input-container:focus-within,nv-fieldtime .input-container:focus-within:hover,nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldtime .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldtime .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldtime .input-container input.time-input{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;min-width:24px;flex:0 0 24px;text-align:center;padding:0;margin:0}nv-fieldtime .input-container input.time-input:focus{outline:none}nv-fieldtime .input-container input.time-input::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldtime .input-container input.time-input[type=password]::-ms-clear,nv-fieldtime .input-container input.time-input[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldtime .input-container input.time-input::-webkit-inner-spin-button,nv-fieldtime .input-container input.time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}nv-fieldtime .input-container span{width:100%;text-align:center;min-width:24px;flex:0 0 24px;padding:0 4px;color:var(--components-form-field-content-text)}nv-fieldtime .input-container>nv-iconbutton{border:0px;border-radius:0px;margin-left:auto}nv-fieldtime .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldtime .input-container nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px;top:50%;transform:translateY(-50%)}nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus-within{border-color:var(--color-focus-brand);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--color-focus-brand)}nv-fieldtime .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldtime .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldtime hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}nv-fieldtime .time-dropdown{width:100%}nv-fieldtime .time-dropdown .time-columns{display:flex;justify-content:flex-start;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column{flex:1;text-align:center;padding-right:2px;max-height:200px;overflow-y:auto;scroll-behavior:smooth;scrollbar-gutter:stable both-edges}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar{width:6px;height:6px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column:last-child{border-right:none}nv-fieldtime .time-dropdown .time-columns .time-column .time-option{padding:var(--list-dropdown-item-padding-y) var(--list-dropdown-item-padding-x);text-align:center;cursor:pointer;transition:background-color 0.2s;height:40px;border-radius:var(--list-dropdown-item-radius);display:flex;justify-content:center;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:hover{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-list-dropdown-item-label-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus,nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus-within{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-list-dropdown-item-label-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.selected{background-color:var(--components-list-dropdown-item-background-active);color:var(--components-list-dropdown-item-label-active);border-width:1px;border-style:solid;border-color:var(--components-list-dropdown-item-border-active)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.highlighted{background-color:var(--components-list-dropdown-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}";
6
+ const nvFieldtimeCss = "nv-fieldslider .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-hover)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .track-range{background:var(--components-slider-track-filled-focus)}nv-fieldslider .slider-container .track-container:has(.thumb:focus) .thumb{border-color:var(--components-slider-track-filled-focus)}nv-fieldslider[error] .slider-container .track-container .track .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:hover{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-handler-background-error)}nv-fieldslider[error] .slider-container .track-container .track .thumb:focus{border-color:var(--components-slider-track-filled-error);outline:calc(var(--focus-outline-stroke) * 1) solid var(--components-slider-track-filled-error);outline-offset:calc(var(--focus-outline-offset) * 1);background-color:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .track-range{background:var(--components-slider-track-filled-error)}nv-fieldslider[error] .slider-container .track-container:has(.thumb:hover) .thumb{border-color:var(--components-slider-track-filled-error)}nv-fieldtime{--nv-field-border-default:var(--components-form-field-border-default);--nv-field-border-hover:var(--components-form-field-border-hover);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--components-form-field-border-default);--nv-field-border-readonly:var(--components-form-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-brand);--nv-field-background:var(--components-form-field-background-default);display:flex;flex-direction:column;align-items:flex-start;gap:var(--form-gap-y);box-sizing:border-box;max-width:480px}nv-fieldtime[readonly]:not([readonly=false]){--nv-field-border-default:var(--components-form-field-border-readonly);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--components-form-field-border-focus);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-background:var(--components-form-field-background-readonly)}nv-fieldtime[error]:not([error=false]){--nv-field-border-default:var(--components-form-field-border-error);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-destructive-in-field)}nv-fieldtime[success]:not([success=false]){--nv-field-border-default:var(--components-form-field-border-success);--nv-field-border-hover:var(--nv-field-border-default);--nv-field-border-focus:var(--nv-field-border-default);--nv-field-border-disabled:var(--nv-field-border-default);--nv-field-border-readonly:var(--nv-field-border-default);--nv-field-focus-box-shadow:var(--color-focus-success)}nv-fieldtime[required]:not([required=false]) label::after{content:\"*\";color:var(--components-form-text-required);font-weight:700}nv-fieldtime label{display:flex;align-items:center;gap:var(--form-label-gap);align-self:stretch;color:var(--components-form-text-label-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-label-font-size);font-style:normal;font-weight:500;line-height:var(--form-label-line-height)}nv-fieldtime nv-popover{width:100%;display:block}nv-fieldtime nv-popover [data-scope=popover]{padding:var(--list-dropdown-padding);background-color:var(--components-list-dropdown-background);border:1px solid var(--components-list-dropdown-border);width:100%}nv-fieldtime .input-wrapper{display:flex;flex-wrap:wrap;gap:var(--form-gap-x);align-items:stretch;align-self:stretch;width:100%}nv-fieldtime .input-container{display:flex;flex-grow:1;justify-content:center;align-items:center;align-self:stretch;border-radius:var(--form-field-radius);border-width:1px;border-style:solid;border-color:var(--nv-field-border-default);opacity:var(--components-form-opacity-default, 1);background:var(--nv-field-background);transition:all 150ms ease-out;display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%;min-height:40px;gap:0;padding-left:var(--form-field-padding-x)}nv-fieldtime .input-container:hover{border-color:var(--nv-field-border-hover)}nv-fieldtime .input-container:focus-within,nv-fieldtime .input-container:focus-within:hover,nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus:hover{border-color:var(--nv-field-border-focus);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--nv-field-focus-box-shadow)}nv-fieldtime .input-container:has(input:read-only){opacity:0.5;background-color:var(--components-form-field-background-readonly);border-color:var(--nv-field-border-readonly)}nv-fieldtime .input-container:has(input:disabled){opacity:0.5;background-color:var(--components-form-field-background-disabled);border-color:var(--nv-field-border-disabled)}nv-fieldtime .input-container input.time-input{display:flex;align-items:center;flex:1 0 0;overflow:hidden;background-color:transparent;color:var(--components-form-field-content-text);padding:var(--form-field-padding-y) var(--form-field-padding-x);font-size:var(--form-field-font-size);font-style:normal;font-weight:500;line-height:var(--form-field-line-height);width:100%;width:100%;min-width:24px;flex:0 0 24px;text-align:center;padding:0;margin:0}nv-fieldtime .input-container input.time-input:focus{outline:none}nv-fieldtime .input-container input.time-input::placeholder{overflow:hidden;color:var(--components-form-field-content-placeholder);text-overflow:ellipsis;font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-field-font-size);font-style:normal;font-weight:400;line-height:var(--form-field-line-height)}nv-fieldtime .input-container input.time-input[type=password]::-ms-clear,nv-fieldtime .input-container input.time-input[type=password]::-ms-reveal{display:none;width:0;height:0}nv-fieldtime .input-container input.time-input::-webkit-inner-spin-button,nv-fieldtime .input-container input.time-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}nv-fieldtime .input-container span{width:100%;text-align:center;min-width:24px;flex:0 0 24px;padding:0 4px;color:var(--components-form-field-content-text)}nv-fieldtime .input-container>nv-iconbutton{border:0px;border-radius:0px;margin-left:auto}nv-fieldtime .input-container>nv-iconbutton:focus-visible{border-radius:var(--button-md-border-radius);outline-offset:-3px}nv-fieldtime .input-container nv-icon.validation{color:var(--nv-field-border-default);position:absolute;right:50px;top:50%;transform:translateY(-50%)}nv-fieldtime .input-container:focus,nv-fieldtime .input-container:focus-within{border-color:var(--color-focus-brand);box-shadow:0px 0px 0px var(--focus-field-stroke) var(--color-focus-brand)}nv-fieldtime .description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height)}nv-fieldtime .error-description{display:flex;align-items:center;align-self:stretch;gap:var(--spacing-1);color:var(--components-form-text-description-default);font-family:\"TT Norms Pro\", sans-serif;font-size:var(--form-description-font-size);font-style:normal;line-height:var(--form-description-line-height);color:var(--components-form-text-description-error)}nv-fieldtime hr{border:none;border-top:1px solid var(--dropdown-divider-color, #ccc);margin:0.5rem 0}nv-fieldtime .time-dropdown{width:100%}nv-fieldtime .time-dropdown .time-columns{display:flex;justify-content:flex-start;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column{flex:1;text-align:center;max-height:200px;overflow-y:auto;scroll-behavior:smooth;scrollbar-gutter:stable both-edges;scrollbar-gutter:auto}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar{width:6px;height:6px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-track{background-color:var(--color-level-10-background);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column::-webkit-scrollbar-thumb{background-color:var(--color-gray-200);border-radius:9999px}nv-fieldtime .time-dropdown .time-columns .time-column:last-child{border-right:none}nv-fieldtime .time-dropdown .time-columns .time-column .time-option{padding:var(--calendar-padding);text-align:center;cursor:pointer;transition:background-color 0.2s;border-radius:var(--list-dropdown-item-radius);color:var(--components-calendar-cell-text);font-size:var(--font-size-sm);display:flex;justify-content:center;align-items:center}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:hover{background-color:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus,nv-fieldtime .time-dropdown .time-columns .time-column .time-option:focus-within{background-color:var(--components-calendar-cell-background-hover);color:var(--components-calendar-cell-text-hover)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.selected{background-color:var(--components-calendar-cell-background-selected);color:var(--components-calendar-cell-text-selected)}nv-fieldtime .time-dropdown .time-columns .time-column .time-option.highlighted{background-color:var(--components-calendar-cell-background-hover);color:var(--components-menu-contextual-item-content-hover)}";
7
7
  const NvFieldtimeStyle0 = nvFieldtimeCss;
8
8
 
9
9
  const NvFieldtime = class {
@@ -967,26 +967,26 @@ const NvFieldtime = class {
967
967
  }, key: `${option}-${index}`, onClick: e => this.handleTimeOptionClick(e, type) }, option)))));
968
968
  }
969
969
  render() {
970
- return (h(Host, { key: '9779298ba2b38f3987af0cfa03250f0e9a99b9f8', onclick: e => this.handleHostClick(e) }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'e2a9108cbc9d28d14aad58dc2e857e54ae39f09f', htmlFor: this.inputId }, h("slot", { key: '94e26cbf12ac61bc32de87a32a91eca65da6461c', name: "label" }, this.label))), h("nv-popover", { key: '9d3b59e19a11a7cdebfc03eef6278f87f6f440e4', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: '2651f57c27384c367d29543f390ace075a08225f', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '2df5c90ff04b28ab426929729e94948aa6491b2a', name: "before-input" }), h("div", { key: 'bb490ebb175df4e579f0add8113e28dd7c29e866', class: "input-container" }, h("slot", { key: 'b09f37a743d0b3dc12a8de0d39641571e9d7090b', name: "leading-input" }), startsWithIgnoreCase(this.format, 'HH') && [
971
- h("input", { key: 'bd97f546da7231ad6ae40799a797da2368e89213', ref: el => (this.inputElements[TimeType.Hours] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.hours, onInput: e => this.handleInputChange(e, TimeType.Hours), placeholder: this.format.includes('hh') ? 'hh' : 'HH', inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Hours), name: this.name
970
+ return (h(Host, { key: 'a8d08a4dac97430398e3f769f353e91ef08de9c0', onclick: e => this.handleHostClick(e) }, (this.label || this.el.querySelector('[slot="label"]')) && (h("label", { key: 'e7d4a858f6194f085144fd59894ad54220a17a03', htmlFor: this.inputId }, h("slot", { key: '69901d62cdd32e3d7d1efe14066ef5ab42eed0d5', name: "label" }, this.label))), h("nv-popover", { key: '2541a920b4ce7b98515c58867ab1ab25d9cace9d', ref: el => (this.popoverElement = el), triggerMode: "controlled", placement: "bottom-start", open: this.open }, h("div", { key: '2f501df272714fd912b0d0981c27db89b46ae424', class: "input-wrapper", slot: "trigger" }, h("slot", { key: '41ee670692e5facaa0ddd065a2a79a66825d207b', name: "before-input" }), h("div", { key: '24e41277073946b78ae4d1f8f38173045e699845', class: "input-container" }, h("slot", { key: '6db3ce5df588697b9183225be3b603a3b51a156f', name: "leading-input" }), startsWithIgnoreCase(this.format, 'HH') && [
971
+ h("input", { key: 'ee093f322342ac3572ad76c48ebc2ecbed63ac01', ref: el => (this.inputElements[TimeType.Hours] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.hours, onInput: e => this.handleInputChange(e, TimeType.Hours), placeholder: this.format.includes('hh') ? 'hh' : 'HH', inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Hours), name: this.name
972
972
  ? `${TimeType.Hours}-${this.name}`
973
973
  : TimeType.Hours, id: this.inputId, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
974
974
  ], this.format.includes('mm') && [
975
- h("span", { key: 'd1e8a8938b214717f178d462976afd91f582eb50' }, ":"),
976
- h("input", { key: '720445f3892535abd7d81fdbf38f7941a66a01a5', ref: el => (this.inputElements[TimeType.Minutes] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.minutes, onInput: e => this.handleInputChange(e, TimeType.Minutes), placeholder: "mm", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Minutes), name: this.name
975
+ h("span", { key: '9cec44d707277c298ba7a70934e1593a12207799' }, ":"),
976
+ h("input", { key: '2acaf3b143f0f5e9e04005213bdfe9ea5334bf53', ref: el => (this.inputElements[TimeType.Minutes] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.minutes, onInput: e => this.handleInputChange(e, TimeType.Minutes), placeholder: "mm", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Minutes), name: this.name
977
977
  ? `${TimeType.Minutes}-${this.name}`
978
978
  : TimeType.Minutes, id: `${this.inputId}-minutes`, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
979
979
  ], this.format.includes('ss') && [
980
- h("span", { key: 'e8b19bdd054f792a48df56a2ad884d9ec3f96dc0' }, ":"),
981
- h("input", { key: 'd2020d37b004a15912791d804daeeee2aadadb70', ref: el => (this.inputElements[TimeType.Seconds] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.seconds, onInput: e => this.handleInputChange(e, TimeType.Seconds), placeholder: "ss", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Seconds), name: this.name
980
+ h("span", { key: '07e0b374bdcad92339c4ddc10d71cc963a8a71ff' }, ":"),
981
+ h("input", { key: '84838544717af0bc967258d91fbee2748072be4f', ref: el => (this.inputElements[TimeType.Seconds] = el), type: "number", autofocus: this.autofocus, class: "time-input", pattern: "[0-9]*", maxlength: "3", value: this.seconds, onInput: e => this.handleInputChange(e, TimeType.Seconds), placeholder: "ss", inputMode: "numeric", onFocus: () => this.handleFocus(TimeType.Seconds), name: this.name
982
982
  ? `${TimeType.Seconds}-${this.name}`
983
983
  : TimeType.Seconds, id: `${this.inputId}-seconds`, readonly: this.readonly, disabled: this.disabled, required: this.required, onKeyDown: e => this.handleKeyDown(e), onBlur: () => this.handleInputBlur() }),
984
- ], h("nv-iconbutton", { key: '96e3cbee01387385f1ed16bd5e7a1b639fae592f', name: this.open ? 'chevron-top' : 'chevron-down', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide time picker' : 'Show time picker', "aria-pressed": this.open.toString(), onClick: () => this.HandleDropdownIconClick() }), this.error && (h("nv-icon", { key: '6ef9a8a535914394e7a8a9e82f55e9ac82655161', name: "alert-circle", class: "validation", size: "sm" })), this.success && (h("nv-icon", { key: 'ab1313914251a15de716d60a4f60afe91c949d7a', name: "circle-check", class: "validation", size: "sm" }))), h("slot", { key: 'cf346d219445fc595419e834302d03d30a5dcf97', name: "after-input" })), h("div", { key: '8cfe562d283109f305db84b843c68ad1535fed6b', class: "time-dropdown", slot: "content" }, h("div", { key: '9690c5733e3fcd0ae22743e4c572d9a5ff2d1bff', class: "time-columns" }, startsWithIgnoreCase(this.format, 'HH') &&
984
+ ], h("nv-iconbutton", { key: 'ec8d0d5c7eb9aa720deef07f23c712287246f3a8', name: 'clock', size: "md", emphasis: "lower", "aria-label": this.open ? 'Hide time picker' : 'Show time picker', "aria-pressed": this.open.toString(), onClick: () => this.HandleDropdownIconClick() }), this.error && (h("nv-icon", { key: 'dbef458469153ef93ad94903a2bcf439f6243d40', name: "alert-circle", class: "validation", size: "sm" })), this.success && (h("nv-icon", { key: '3dfb5e5b32dc91ebe53502f9117f628ae79bf57c', name: "circle-check", class: "validation", size: "sm" }))), h("slot", { key: '744e72f9c7828f8487f58265dac564670ba26329', name: "after-input" })), h("div", { key: '72dc9823125b9109bc27e049936007e796a97a06', class: "time-dropdown", slot: "content" }, h("div", { key: '1b1f8241a25500cf9ce22ebea20becd6882760cc', class: "time-columns" }, startsWithIgnoreCase(this.format, 'HH') &&
985
985
  this.RenderTimeOptionsColumn(TimeType.Hours), this.format.includes('mm') &&
986
986
  this.RenderTimeOptionsColumn(TimeType.Minutes), this.format.includes('ss') &&
987
987
  this.RenderTimeOptionsColumn(TimeType.Seconds)))), (this.description ||
988
- this.el.querySelector('[slot="description"]')) && (h("div", { key: '6671a07feeac69f2d9374dd25b00c6d7a7258bbd', class: "description" }, h("slot", { key: '2ebc81fa182462a44a62d075c187b94bfe16ad96', name: "description" }, this.description))), (this.errorDescription ||
989
- this.el.querySelector('[slot="error-description"]')) && (h("div", { key: 'f1815ed7f65eaf25fd69d56de613c01be842d147', hidden: !this.error, class: "error-description" }, h("slot", { key: '028896c0e9bffa83f2429a77e1dfaace6f8a07d8', name: "error-description" }, this.errorDescription)))));
988
+ this.el.querySelector('[slot="description"]')) && (h("div", { key: '57985d7f2626853a24db80d56607b5453b00b6c9', class: "description" }, h("slot", { key: 'ba3383c066c6bcac3b1e6183b84528723de9cddc', name: "description" }, this.description))), (this.errorDescription ||
989
+ this.el.querySelector('[slot="error-description"]')) && (h("div", { key: '6f02373e082fcc7e34e0d35441783122cd7c0266', hidden: !this.error, class: "error-description" }, h("slot", { key: '43508d63829f53f5b5c718f1a112abbe5919b900', name: "error-description" }, this.errorDescription)))));
990
990
  }
991
991
  static get formAssociated() { return true; }
992
992
  get el() { return getElement(this); }
@@ -1 +1 @@
1
- {"file":"nv-fieldtime.entry.js","mappings":"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","names":["uuidv4"],"sources":["src/components/nv-fieldtime/styles/nv-fieldtime.scss?tag=nv-fieldtime","src/components/nv-fieldtime/nv-fieldtime.tsx"],"sourcesContent":["@use './mixins' as *;\n@import '../../../styles/form-field';\n\nnv-fieldtime {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[success]:not([success='false']) {\n @include form-field-success-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include apply-popover-style;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n @include flex-container(flex-start);\n position: relative;\n width: 100%;\n min-height: 40px;\n gap: 0;\n padding-left: var(--form-field-padding-x);\n\n input.time-input {\n @include form-field-input();\n @include apply-input-styles();\n }\n\n span {\n width: 100%;\n text-align: center;\n min-width: 24px;\n flex: 0 0 24px;\n padding: 0 4px;\n color: var(--components-form-field-content-text);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n margin-left: auto;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n @include icon-position(50px);\n }\n\n &:focus,\n &:focus-within {\n @include apply-focus-styles;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n\n .time-dropdown {\n width: 100%;\n\n .time-columns {\n @include flex-container;\n\n .time-column {\n flex: 1;\n text-align: center;\n padding-right: 2px;\n @include scrollable(200px);\n\n &:last-child {\n border-right: none;\n }\n\n .time-option {\n padding: var(--list-dropdown-item-padding-y)\n var(--list-dropdown-item-padding-x);\n text-align: center;\n cursor: pointer;\n transition: background-color 0.2s;\n height: 40px;\n border-radius: var(--list-dropdown-item-radius);\n @include flex-container(center);\n\n &:hover {\n background-color: var(\n --components-list-dropdown-item-background-hover\n );\n color: var(--components-list-dropdown-item-label-hover);\n }\n\n @include state-focus(\n var(--components-list-dropdown-item-background-hover),\n var(--components-list-dropdown-item-label-hover)\n );\n\n &.selected {\n background-color: var(\n --components-list-dropdown-item-background-active\n );\n color: var(--components-list-dropdown-item-label-active);\n @include bordered-element(\n 1px,\n var(--components-list-dropdown-item-border-active)\n );\n }\n\n &.highlighted {\n background-color: var(\n --components-list-dropdown-item-background-hover\n );\n color: var(--components-menu-contextual-item-content-hover);\n }\n }\n }\n }\n }\n}\n","/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'styles/nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n // Update `open` based on the popover state\n this.open = event.detail;\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected':\n (type === TimeType.Hours && option === this.hours) ||\n (type === TimeType.Minutes && option === this.minutes) ||\n (type === TimeType.Seconds && option === this.seconds),\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n name={this.open ? 'chevron-top' : 'chevron-down'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n aria-pressed={this.open.toString()}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
1
+ {"file":"nv-fieldtime.entry.js","mappings":";;;;;AAAA,MAAM,cAAc,GAAG,ojUAAojU,CAAC;AAC5kU,0BAAe,cAAc;;MC8BhB,WAAW;IANxB;;;;QAUU,kBAAa,GAAwC,EAAE,CAAC;QAExD,mBAAc,GAA+B,EAAE,CAAC;QAIhD,gBAAW,GAAa,QAAQ,CAAC,KAAK,CAAC;;;QAM/C,UAAK,GAAW,IAAI,CAAC;QAErB,YAAO,GAAW,IAAI,CAAC;QAEvB,YAAO,GAAW,IAAI,CAAC;;;;;;;QA2Bd,YAAO,GAAWA,EAAM,EAAE,CAAC;;;;;;QAQ3B,aAAQ,GAAY,KAAK,CAAC;;;;;;QAQ1B,aAAQ,GAAY,KAAK,CAAC;;;;;QAO1B,aAAQ,GAAY,KAAK,CAAC;;;;;QAe1B,YAAO,GAAY,KAAK,CAAC;;;;;;QAQzB,UAAK,GAAY,KAAK,CAAC;;;;;;;;;;;QAqBvB,WAAM,GACb,UAAU,CAAC;;;;QAcb,SAAI,GAAY,KAAK,CAAC;;;;;QAOb,SAAI,GAAW,KAAK,CAAC;;;;;;QAqBrB,cAAS,GAAY,KAAK,CAAC;KAmlCrC;;;;IAjkCC,iBAAiB,CAAC,KAA2B;;QAE3C,KAAK,CAAC,eAAe,EAAE,CAAC;;QAGxB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;IAGD,aAAa,CAAC,KAAoB;;QAChC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;gBAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;gBAEjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YACD,OAAO;SACR;;QAGD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;YAC/D,OAAO;SACR;QAED,MAAM,cAAc,GAAG,4BAA4B,IAAI,CAAC,WAAW,MAAM,CAAC;QAC1E,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAc,cAAc,CAAC,CACtD,CAAC;;QAGF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,OAAO,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACpE,OAAO;SACR;QAED,IAAI,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,IACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CACvC,CAAC;QAEF,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;YACjD,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;YAClC,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,YAAY,GAAG,CAAC,YAAY,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YAChE,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;SACjD;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,YAAY,IAAI,CAAC,EAAE;YACrD,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;YAE5B,IAAI,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,KAAK,EAAE;gBACvC,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;gBAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;aAChD;iBAAM,IACL,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,OAAO;gBACrC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,OAAO,EACrC;gBACA,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;gBAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;aAChD;SACF;aAAM,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;YACjC,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;gBACtC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;aAC3C;SACF;KACF;;;;IAOD,iBAAiB,CAAC,QAAgB;QAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;;;;IAMO,iBAAiB,CAAC,CAAa,EAAE,IAAc;QACrD,MAAM,YAAY,GAAG,CAAC,CAAC,MAA0B,CAAC;QAClD,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;;QAG7D,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;gBACjB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC3C,MAAM;YACR,KAAK,QAAQ,CAAC,OAAO;gBACnB,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBAC3C,MAAM;SACT;;QAGD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAE5C,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;KAC3B;IAEO,iBAAiB,CAAC,UAAkB,EAAE,IAAc;;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,OAAO,GACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAE9D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAEjC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAElD,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;gBAClE,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;iBAC5B;aACF;SACF;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAElC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,QAAQ,EAAE;gBACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAClB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;qBAC5B;iBACF;aACF;SACF;aAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACjC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAE9D,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAClB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;qBAC5B;iBACF;aACF;iBAAM;gBACL,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE7D,IAAI,mBAAmB,IAAI,QAAQ,EAAE;oBACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;wBACrB,aAAa,GAAG,IAAI,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBAClB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,OAAO,IAAI,mBAAmB,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAC1D,IACE,OAAO;4BACP,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EACnD;4BACA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;yBACtB;6BAAM;4BACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;4BAClB,aAAa,GAAG,IAAI,CAAC;yBACtB;qBACF;yBAAM;wBACL,IAAI,OAAO,IAAI,mBAAmB,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;4BAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;yBACtB;6BAAM;4BACL,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;yBAC7C;qBACF;iBACF;aACF;SACF;aAAM;YACL,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,QAAQ,EAAE;gBACnC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAClE,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;iBACtB;qBAAM;oBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,OAAO,IAAI,mBAAmB,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;oBAC1D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;oBAClB,aAAa,GAAG,IAAI,CAAC;iBACtB;qBAAM;oBACL,IAAI,OAAO,IAAI,mBAAmB,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;wBAC1D,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;qBACtB;yBAAM;wBACL,IAAI,CAAC,KAAK,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;qBAC7C;iBACF;aACF;SACF;QAED,IACE,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC1B,CAAC,aAAa,EACd;YACA,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;aAAM,IAAI,aAAa,EAAE;YACxB,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC5C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;SAC9C;KACF;IAEO,mBAAmB,CAAC,UAAkB,EAAE,IAAc;;QAC5D,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QAEnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAEjC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAElD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;gBACxD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;iBAC9B;aACF;SACF;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAElC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;oBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;qBAC9B;iBACF;aACF;SACF;aAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;gBACjC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAE9D,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;qBAC9B;iBACF;aACF;iBAAM;gBACL,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;oBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;4BACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;yBACtD;6BAAM;4BACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;4BACpB,aAAa,GAAG,IAAI,CAAC;yBACtB;qBACF;yBAAM;wBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;4BAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;yBACtD;6BAAM;4BACL,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;yBAC/C;qBACF;iBACF;aACF;SACF;aAAM;YACL,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;oBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;qBAC/C;iBACF;aACF;SACF;QAED,IACE,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACzB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAC1B,CAAC,aAAa,EACd;YACA,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;aAAM,IAAI,aAAa,EAAE;YACxB,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;KACF;IAEO,mBAAmB,CAAC,UAAkB,EAAE,IAAc;;QAC5D,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QAEnD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YACjC,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAElD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;gBACxD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;iBAC9B;aACF;SACF;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;YAClC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;oBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;qBAC9B;iBACF;aACF;SACF;aAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC9D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;oBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;qBAC/C;iBACF;aACF;SACF;aAAM;YACL,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClD,MAAM,mBAAmB,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAE7D,IAAI,mBAAmB,IAAI,UAAU,EAAE;gBACrC,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;oBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;iBACtD;qBAAM;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,aAAa,GAAG,IAAI,CAAC;iBACtB;aACF;iBAAM;gBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;oBAChD,IAAI,SAAS,IAAI,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,GAAG,SAAS,EAAE;wBACxD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;wBACpB,aAAa,GAAG,IAAI,CAAC;qBACtB;iBACF;qBAAM;oBACL,IAAI,SAAS,IAAI,mBAAmB,GAAG,SAAS,EAAE;wBAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;qBACtD;yBAAM;wBACL,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,QAAQ,EAAE,CAAC;qBAC/C;iBACF;aACF;SACF;QAED,IAAI,aAAa,EAAE;YACjB,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;KACF;;IAGO,SAAS,CAAC,UAAkB;QAClC,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QAED,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;QAEvD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACtD;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YAChD,OAAO,IAAI,CAAC,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;YAC7D,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;SACxC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACnE,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;SACxD;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;SACxD;KACF;IAEO,WAAW,CAAC,IAAc;;QAChC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;SAClB;;QAGD,IACE,CAAA,MAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0CAAE,KAAK,CAAC,MAAM,MAAK,CAAC;YAC5C,CAAA,MAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0CAAE,KAAK,MAAK,IAAI,EACxC;YACA,MAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0CAAE,KAAK,EAAE,CAAC;YAClC,MAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,0CAAE,MAAM,EAAE,CAAC;SACpC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;IAEO,uBAAuB;;QAC7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC5D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC5D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC3D,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC5C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;SAC9C;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;aAAM,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE;YAC7D,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,KAAK,EAAE,CAAC;YAC9C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,0CAAE,MAAM,EAAE,CAAC;SAChD;aAAM;YACL,OAAO,CAAC,IAAI,CACV,6DAA6D,CAC9D,CAAC;SACH;KACF;IAEO,qBAAqB,CAAC,KAAoB,EAAE,KAAa;QAC/D,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;gBACnC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;aAC3C;iBAAM;gBACL,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACrC;SACF,CAAC,CAAC;KACJ;IAEO,qBAAqB,CAAC,KAAiB,EAAE,IAAc;QAC7D,MAAM,MAAM,GAAG,QAAQ,CACpB,KAAK,CAAC,MAAsB,CAAC,WAAW,IAAI,GAAG,EAChD,EAAE,CACH,CAAC;QAEF,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE;YAC3B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD;aAAM,IAAI,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACnD;aAAM,IAAI,IAAI,KAAK,QAAQ,CAAC,OAAO,EAAE;YACpC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACnD;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC/C,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC;KAC9B;IAEO,eAAe;;QAErB,UAAU,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;gBAC7C,IAAI,IAAI,CAAC,IAAI,EAAE;oBACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;iBACnB;aACF;SACF,EAAE,GAAG,CAAC,CAAC;KACT;IAEO,kBAAkB,CAAC,KAAiB;QAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc,CAAC;;QAGpC,IACE,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;YACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EACvE;YACA,OAAO;SACR;QAED,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;SACnB;KACF;IAEO,YAAY,CAAC,CAAQ,EAAE,IAAc;QAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAqB,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,CAAC;QAC5C,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;;QAGzC,MAAM,UAAU,GAAG,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;;QAGpD,IACE,SAAS,GAAG,eAAe,IAAI,YAAY,GAAG,UAAU;YACxD,SAAS,IAAI,CAAC,EACd;YACA,MAAM,CAAC,SAAS,GAAG,eAAe,CAAC;SACpC;KACF;IAEO,mBAAmB,CAAC,IAAc;;QAExC,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;QAGvC,IAAI,aAAa,KAAK,CAAC,EAAE;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;;QAGD,QAAQ,IAAI;YACV,KAAK,QAAQ,CAAC,KAAK;gBACjB,OAAO,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;YAEjD,KAAK,QAAQ,CAAC,OAAO;gBACnB,OAAO,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAEnD,KAAK,QAAQ,CAAC,OAAO;gBACnB,OAAO,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAEnD;gBACE,OAAO,EAAE,CAAC;SACb;KACF;IAEO,mBAAmB,CAAC,aAAqB;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAE9D,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,QAAQ,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,MAAM,CAAC;KACf;IAEO,SAAS,CAAC,KAAoB,EAAE,MAAc;QACpD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC7B,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;YACzB,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QAClE,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;KAClE;IAEO,qBAAqB,CAAC,aAAqB;;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QAEnD,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,UAAU,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,MAAM,CAAC;KACf;IAEO,WAAW,CAAC,KAAoB;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;KACpE;IAEO,qBAAqB,CAAC,aAAqB;;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC;QACnD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;QAEnD,IAAI,SAAS,KAAK,CAAC,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAEtD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,IAAI,UAAU,EAAE;YACvD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;SAC5C;QAED,OAAO,MAAM,CAAC;KACf;IAEO,WAAW,CAAC,KAAoB;QACtC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAClC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC;KACpE;IAEO,2BAA2B,CAAC,IAAc;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;;QAGpC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;KAChD;IAEO,cAAc;QACpB,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,OAAO,WAAW,CAAC,kBAAkB,EAAE,CAAC;KACzC;IAEO,qBAAqB,CAAC,QAAQ,EAAE,KAAK;QAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAc,QAAQ,CAAC,CAAC,CAAC;QAE1E,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC1C;IAEO,eAAe,CAAC,KAAiB;;QACvC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EAAE;YAClC,OAAO;SACR;QAED,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;;QAGlD,IAAI,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YAC1C,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,KAAK,EAAE,CAAC;gBAC5C,MAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAAE,MAAM,EAAE,CAAC;aAC9C;YAED,KAAK,CAAC,cAAc,EAAE,CAAC;SACxB;KACF;;;;IAMD,iBAAiB;QACf,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;;QAGvE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5B;aAAM;YACL,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAElD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACtD;KACF;IAED,iBAAiB;QACf,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACxE;IAED,oBAAoB;QAClB,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC3E;IAED,gBAAgB;QACd,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;;;YAI1C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxD,IAAI,MAAM,EAAE,IAAI,CAAC;;YAGjB,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC5B,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACxC;iBAAM;gBACL,MAAM,GAAG,UAAU,CAAC;aACrB;;YAGD,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;;YAGpC,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,KAAK,IAAI,IAAI,UAAU,GAAG,EAAE,EAAE;oBACpC,UAAU,IAAI,EAAE,CAAC;iBAClB;qBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE,EAAE;oBAC7C,UAAU,GAAG,CAAC,CAAC;iBAChB;aACF;;YAGD,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBAChC,IAAI,UAAU,KAAK,CAAC,EAAE;oBACpB,IAAI,GAAG,IAAI,CAAC;iBACb;qBAAM,IAAI,UAAU,GAAG,EAAE,EAAE;oBAC1B,IAAI,GAAG,CAAC,UAAU,GAAG,EAAE,EAAE,QAAQ,EAAE,CAAC;iBACrC;qBAAM;oBACL,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;iBAC9B;aACF;iBAAM;gBACL,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;aAC9B;;YAGD,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC7B,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACjC,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;;YAGjC,MAAM,YAAY,GAAG,oCAAoC,CAAC;YAC1D,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;;YAG/C,MAAM,cAAc,GAAG,sCAAsC,CAAC;YAC9D,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;;YAGnD,MAAM,cAAc,GAAG,sCAAsC,CAAC;YAC9D,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;SACpD;KACF;;;;IAMO,uBAAuB,CAAC,IAAc;QAC5C,QACE,WACE,KAAK,EAAE,2BAA2B,IAAI,EAAE,EACxC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,IAGxC,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,MACxD,WACE,KAAK,EAAE;gBACL,aAAa,EAAE,IAAI;gBACnB,UAAU,EACR,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,MAAM,KAAK,IAAI,CAAC,KAAK;qBAChD,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC;qBACrD,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC;aACzD,EACD,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,EACzB,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,IAAI,CAAC,IAEhD,MAAM,CACH,CACP,CAAC,CACE,EACN;KACH;IAED,MAAM;QACJ,QACE,EAAC,IAAI,qDAAC,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IACxC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,MACrD,8DAAO,OAAO,EAAE,IAAI,CAAC,OAAO,IAC1B,6DAAM,IAAI,EAAC,OAAO,IAAE,IAAI,CAAC,KAAK,CAAQ,CAChC,CACT,EAED,mEACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAA0B,CAAC,EAC7D,WAAW,EAAC,YAAY,EACxB,SAAS,EAAC,cAAc,EACxB,IAAI,EAAE,IAAI,CAAC,IAAI,IAEf,4DAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,IACvC,6DAAM,IAAI,EAAC,cAAc,GAAQ,EAEjC,4DAAK,KAAK,EAAC,iBAAiB,IAC1B,6DAAM,IAAI,EAAC,eAAe,GAAQ,EAGjC,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI;YAC1C,8DACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EACpD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,CAAC,EACvD,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,EACrD,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC/C,IAAI,EACF,IAAI,CAAC,IAAI;sBACL,GAAG,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;sBAChC,QAAQ,CAAC,KAAK,EAEpB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,GACpC;SACH,EAEA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;YAC7B,mEAAc;YACd,8DACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EACtD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,OAAO,EACnB,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzD,WAAW,EAAC,IAAI,EAChB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EACjD,IAAI,EACF,IAAI,CAAC,IAAI;sBACL,GAAG,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;sBAClC,QAAQ,CAAC,OAAO,EAEtB,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,UAAU,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,GACpC;SACH,EAEA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;YAC7B,mEAAc;YAEd,8DACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EACtD,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAC,YAAY,EAClB,OAAO,EAAC,QAAQ,EAChB,SAAS,EAAC,GAAG,EACb,KAAK,EAAE,IAAI,CAAC,OAAO,EACnB,OAAO,EAAE,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EACzD,WAAW,EAAC,IAAI,EAChB,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EACjD,IAAI,EACF,IAAI,CAAC,IAAI;sBACL,GAAG,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;sBAClC,QAAQ,CAAC,OAAO,EAEtB,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,UAAU,EAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,SAAS,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACrC,MAAM,EAAE,MAAM,IAAI,CAAC,eAAe,EAAE,GACpC;SACH,EAED,sEACE,IAAI,EAAE,OAAO,EACb,IAAI,EAAC,IAAI,EACT,QAAQ,EAAC,OAAO,gBACJ,IAAI,CAAC,IAAI,GAAG,kBAAkB,GAAG,kBAAkB,kBACjD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAClC,OAAO,EAAE,MAAM,IAAI,CAAC,uBAAuB,EAAE,GAC7C,EAED,IAAI,CAAC,KAAK,KACT,gEAAS,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,GAAG,CAC7D,EACA,IAAI,CAAC,OAAO,KACX,gEAAS,IAAI,EAAC,cAAc,EAAC,KAAK,EAAC,YAAY,EAAC,IAAI,EAAC,IAAI,GAAG,CAC7D,CACG,EAEN,6DAAM,IAAI,EAAC,aAAa,GAAQ,CAC5B,EAEN,4DAAK,KAAK,EAAC,eAAe,EAAC,IAAI,EAAC,SAAS,IACvC,4DAAK,KAAK,EAAC,cAAc,IACtB,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;YACtC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC5C,CACF,CACK,EAEZ,CAAC,IAAI,CAAC,WAAW;YAChB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,sBAAsB,CAAC,MAC7C,4DAAK,KAAK,EAAC,aAAa,IACtB,6DAAM,IAAI,EAAC,aAAa,IAAE,IAAI,CAAC,WAAW,CAAQ,CAC9C,CACP,EAEA,CAAC,IAAI,CAAC,gBAAgB;YACrB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,4BAA4B,CAAC,MACnD,4DAAK,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAC,mBAAmB,IACjD,6DAAM,IAAI,EAAC,mBAAmB,IAAE,IAAI,CAAC,gBAAgB,CAAQ,CACzD,CACP,CACI,EACP;KACH;;;;;;;;;;;","names":["uuidv4"],"sources":["src/components/nv-fieldtime/styles/nv-fieldtime.scss?tag=nv-fieldtime","src/components/nv-fieldtime/nv-fieldtime.tsx"],"sourcesContent":["@use './mixins' as *;\n@import '../../../styles/form-field';\n\nnv-fieldtime {\n @include form-field-variables();\n @include form-field-root();\n\n &[readonly]:not([readonly='false']) {\n @include form-field-readonly-variables();\n }\n\n &[error]:not([error='false']) {\n @include form-field-error-variables();\n }\n\n &[success]:not([success='false']) {\n @include form-field-success-variables();\n }\n\n &[required]:not([required='false']) label {\n @include form-field-label-required();\n }\n\n label {\n @include form-field-label();\n }\n\n nv-popover {\n @include apply-popover-style;\n }\n\n .input-wrapper {\n @include form-field-input-wrapper();\n width: 100%;\n }\n\n .input-container {\n @include form-field-input-container();\n @include flex-container(flex-start);\n position: relative;\n width: 100%;\n min-height: 40px;\n gap: 0;\n padding-left: var(--form-field-padding-x);\n\n input.time-input {\n @include form-field-input();\n @include apply-input-styles();\n }\n\n span {\n width: 100%;\n text-align: center;\n min-width: 24px;\n flex: 0 0 24px;\n padding: 0 4px;\n color: var(--components-form-field-content-text);\n }\n\n > nv-iconbutton {\n @include form-field-action();\n margin-left: auto;\n }\n\n nv-icon.validation {\n @include form-field-icon();\n @include icon-position(50px);\n }\n\n &:focus,\n &:focus-within {\n @include apply-focus-styles;\n }\n }\n\n .description {\n @include form-field-description();\n }\n\n .error-description {\n @include form-field-error-description();\n }\n\n hr {\n border: none;\n border-top: 1px solid var(--dropdown-divider-color, #ccc);\n margin: 0.5rem 0;\n }\n\n .time-dropdown {\n width: 100%;\n\n .time-columns {\n @include flex-container;\n\n .time-column {\n flex: 1;\n text-align: center;\n @include scrollable(200px);\n scrollbar-gutter: auto; // Prevents scrollbar from shifting content\n\n &:last-child {\n border-right: none;\n }\n\n .time-option {\n padding: var(--calendar-padding);\n text-align: center;\n cursor: pointer;\n transition: background-color 0.2s;\n //height: 40px;\n border-radius: var(--list-dropdown-item-radius);\n color: var(--components-calendar-cell-text);\n font-size: var(--font-size-sm);\n @include flex-container(center);\n\n &:hover {\n background-color: var(\n --components-calendar-cell-background-hover\n );\n color: var(--components-calendar-cell-text-hover);\n }\n\n @include state-focus(\n var(--components-calendar-cell-background-hover),\n var(--components-calendar-cell-text-hover)\n );\n\n &.selected {\n background-color: var(\n --components-calendar-cell-background-selected\n );\n color: var(--components-calendar-cell-text-selected);\n \n }\n\n &.highlighted {\n background-color: var(\n --components-calendar-cell-background-hover\n );\n color: var(--components-menu-contextual-item-content-hover);\n }\n }\n }\n }\n }\n}\n","/* eslint-disable react/jsx-no-bind */\nimport {\n Component,\n Host,\n h,\n State,\n Element,\n Event,\n EventEmitter,\n Prop,\n Watch,\n Listen,\n} from '@stencil/core';\nimport { v4 as uuidv4 } from 'uuid';\nimport { startsWithIgnoreCase } from '../../utils/string.utils';\nimport { TimeType } from '../../utils/constants';\n\n/**\n * @slot label - Content to be placed as the label, will override the label prop.\n * @slot before-input - Content to be placed before the input text, outside the input container.\n * @slot after-input - Content to be placed after the input text, outside the input container.\n * @slot leading-input - Content to be placed before the input text, within the input container.\n * @slot error-description - Content to be placed as the error description, will override the errorDescription prop.\n * @slot description - Content to be placed as the description, will override the description prop.\n */\n@Component({\n tag: 'nv-fieldtime',\n styleUrl: 'styles/nv-fieldtime.scss',\n shadow: false,\n formAssociated: true,\n})\nexport class NvFieldtime {\n @Element() el: HTMLNvFieldtimeElement;\n\n // Input elements for hours, minutes, and seconds\n private inputElements: { [key: string]: HTMLInputElement } = {};\n\n private inputZeroAdded: { [key: string]: boolean } = {};\n\n private popoverElement!: HTMLNvPopoverElement;\n\n private typeFocused: TimeType = TimeType.Hours;\n\n /****************************************************************************/\n //#region STATES\n\n @State()\n hours: string = '00';\n @State()\n minutes: string = '00';\n @State()\n seconds: string = '00';\n\n //#endregion STATES\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * The current value of the time input in the specified format.\n */\n @Prop({ reflect: true, mutable: true })\n value: string;\n\n /**\n * Lets you define the text that explains what users should enter in the time\n * input field. It's a crucial element for making forms clear and\n * user-friendly.\n */\n @Prop({ reflect: true })\n readonly label: string;\n\n /**\n * Sets the ID for the input element and the for attribute of the associated\n * label. If no ID is provided, a random one will be automatically generated\n * to ensure unique identification, facilitating proper label association and\n * accessibility.\n */\n @Prop({ reflect: true })\n readonly inputId: string = uuidv4();\n\n /**\n * Display the input field's content without allowing users to change it.\n * Users can still click on it, select, and copy the text, but they won't be\n * able to type or delete anything.\n */\n @Prop({ reflect: true })\n readonly readonly: boolean = false;\n\n /**\n * The disabled prop lets you turn off the input field so that users can't\n * interact with it. When disabled, the field is grayed out and won't respond to\n * clicks or touches.\n */\n @Prop({ reflect: true })\n readonly disabled: boolean = false;\n\n /**\n * Marks the input field as required, ensuring that the user must fill it out\n * before submitting the form.\n */\n @Prop({ reflect: true })\n readonly required: boolean = false;\n\n /**\n * Defines the name attribute of the input field, which is crucial for form\n * submission. This value is used as the key in the key-value pair sent to\n * the server, representing the input's data in form submissions.\n */\n @Prop({ reflect: true })\n readonly name: string;\n\n /**\n * Changes the input field’s appearance to indicate successful input or\n * validation.\n */\n @Prop({ reflect: true })\n readonly success: boolean = false;\n\n /**\n * Alters the input field's appearance to indicate an error, helping users\n * identify fields that need correction.\n * @validator error\n */\n @Prop({ reflect: true })\n readonly error: boolean = false;\n\n /**\n * A description that appears when there is an error related to the time\n * field.\n * @validator message\n */\n @Prop({ reflect: true })\n readonly errorDescription: string;\n\n /**\n * Specifies the time format to be used.\n * Available formats:\n * - HH: 24-hour format (00-23)\n * - HH:mm: 24-hour format with minutes (00:00-23:59)\n * - HH:mm:ss: 24-hour format with minutes and seconds (00:00:00-23:59:59)\n * - hh: 12-hour format (01-12)\n * - hh:mm: 12-hour format with minutes (01:00-12:59)\n * - hh:mm:ss: 12-hour format with minutes and seconds (01:00:00-12:59:59)\n */\n @Prop({ reflect: true })\n readonly format: 'HH' | 'HH:mm' | 'HH:mm:ss' | 'hh' | 'hh:mm' | 'hh:mm:ss' =\n 'HH:mm:ss';\n\n /**\n * Add helpful hints or extra information under the time input field. This is\n * where you can clarify what users should enter or provide additional\n * instructions.\n */\n @Prop({ reflect: true })\n readonly description: string;\n\n /**\n * State of the time picker popover.\n */\n @Prop({ reflect: true, mutable: true })\n open: boolean = false;\n\n /**\n * The step interval in milliseconds for time increments/decrements.\n * This affects how the time changes when using arrow keys or spinners.\n */\n @Prop({ reflect: true })\n readonly step: number = 60000; // In secondes\n\n /**\n * The maximum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly max: string;\n\n /**\n * The minimum time value that can be selected.\n */\n @Prop({ reflect: true })\n readonly min: string;\n\n /**\n * Applies focus to the input field as soon as the component is mounted. This\n * is equivalent to setting the native autofocus attribute on an <input>\n * element.\n */\n @Prop({ reflect: true })\n // eslint-disable-next-line @stencil-community/reserved-member-names\n readonly autofocus: boolean = false;\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region EVENTS\n\n /**\n * Emit an event when the time value changes.\n * The event detail contains the new time value (HH, HH:mm or HH:mm:ss).\n */\n @Event()\n valueChanged: EventEmitter<string>;\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LISTENERS\n\n @Listen('openChanged')\n handleOpenChanged(event: CustomEvent<boolean>) {\n // Stop propagation to prevent the event from affecting parent components like dialogs\n event.stopPropagation();\n\n // Update `open` based on the popover state\n this.open = event.detail;\n }\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (!this.open) {\n if (event.key === 'ArrowDown') {\n this.open = true;\n\n event.preventDefault();\n return;\n }\n return;\n }\n\n // Verify if the popover element is defined\n if (!this.popoverElement) {\n console.warn('nv-fieldtime -> Popover element is not defined');\n return;\n }\n\n const stringSelector = `.time-column.time-column-${this.typeFocused} div`;\n const items = Array.from(\n this.el.querySelectorAll<HTMLElement>(stringSelector),\n );\n\n // Verify if there are items to navigate\n if (items.length === 0) {\n console.warn('nv-fieldtime -> No dropdown items found to navigate');\n return;\n }\n\n let currentIndex = items.findIndex(item =>\n item.classList.contains('highlighted'),\n );\n\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n currentIndex = (currentIndex + 1) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n currentIndex = (currentIndex - 1 + items.length) % items.length;\n this.updateHighlightedItem(items, currentIndex);\n } else if (event.key === 'Enter' && currentIndex >= 0) {\n event.preventDefault();\n items[currentIndex].click();\n\n if (this.typeFocused === TimeType.Hours) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (\n this.typeFocused === TimeType.Minutes ||\n this.typeFocused === TimeType.Seconds\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n\n if (this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours].blur();\n }\n }\n }\n\n //#endregion LISTENERS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('value')\n handleValueChange(newValue: string) {\n this.valueChanged.emit(newValue);\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region METHODS\n\n private handleInputChange(e: InputEvent, type: TimeType): void {\n const inputElement = e.target as HTMLInputElement;\n const inputValue = inputElement.value.replace(/[^0-9]/g, ''); // Only keep numeric input\n\n // Update the time value based on the type\n switch (type) {\n case TimeType.Hours:\n this.handleHoursChange(inputValue, type);\n break;\n case TimeType.Minutes:\n this.handleMinutesChange(inputValue, type);\n break;\n case TimeType.Seconds:\n this.handleSecondsChange(inputValue, type);\n break;\n }\n\n // Reconstruct time from inputs\n const currentValue = this.reconstructTime();\n\n this.value = currentValue;\n }\n\n private handleHoursChange(inputValue: string, type: TimeType): void {\n const isHHFormat = this.format.startsWith('HH');\n const maxHours = isHHFormat ? 24 : 12;\n let reputedToZero = false;\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxHour && parseInt(newInputValue, 10) > parseInt(maxHour, 10)) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n reputedToZero = true;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n if (\n minHour &&\n parseInt(newInputValue, 10) < parseInt(minHour, 10)\n ) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxHours) {\n if (minHour && parseInt(newInputValue, 10) < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = '00';\n reputedToZero = true;\n }\n } else {\n if (maxHour && parsedNewInputValue > parseInt(maxHour, 10)) {\n this.hours = '00';\n reputedToZero = true;\n } else {\n if (minHour && parsedNewInputValue < parseInt(minHour, 10)) {\n this.hours = minHour;\n } else {\n this.hours = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.hours.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n }\n\n private handleMinutesChange(inputValue: string, type: TimeType): void {\n const maxMinutes = 60;\n let reputedToZero = false;\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n if (inputValue.startsWith('00')) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n\n if (maxMinute && parseInt(newInputValue, 10) > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = newInputValue;\n }\n }\n } else {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxMinutes) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (maxMinute && parsedNewInputValue > maxMinute) {\n if (minMinute && parseInt(newInputValue, 10) < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = '00';\n reputedToZero = true;\n }\n } else {\n if (minMinute && parsedNewInputValue < minMinute) {\n this.minutes = minMinute.toString().padStart(2, '0');\n } else {\n this.minutes = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (\n this.minutes.length === 2 &&\n !this.inputZeroAdded[type] &&\n !reputedToZero\n ) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n } else if (reputedToZero) {\n this.inputElements[TimeType.Minutes]?.focus();\n this.inputElements[TimeType.Minutes]?.select();\n }\n }\n\n private handleSecondsChange(inputValue: string, type: TimeType): void {\n const maxSeconds = 60;\n let reputedToZero = false;\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (inputValue.length === 1) {\n this.inputZeroAdded[type] = true;\n const newInputValue = inputValue.padStart(2, '0');\n\n if (maxSecond && parseInt(newInputValue, 10) > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n } else if (this.inputZeroAdded[type]) {\n this.inputZeroAdded[type] = false;\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = newInputValue;\n }\n }\n }\n } else if (inputValue.length > 2) {\n const newInputValue = inputValue.slice(1, 3).padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n } else {\n const newInputValue = inputValue.padStart(2, '0');\n const parsedNewInputValue = parseInt(newInputValue, 10) || 0;\n\n if (parsedNewInputValue >= maxSeconds) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (maxSecond && parsedNewInputValue > maxSecond) {\n if (minSecond && parseInt(newInputValue, 10) < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = '00';\n reputedToZero = true;\n }\n } else {\n if (minSecond && parsedNewInputValue < minSecond) {\n this.seconds = minSecond.toString().padStart(2, '0');\n } else {\n this.seconds = parsedNewInputValue.toString();\n }\n }\n }\n }\n\n if (reputedToZero) {\n this.inputElements[TimeType.Seconds]?.focus();\n this.inputElements[TimeType.Seconds]?.select();\n }\n }\n\n // Parse a continuous time string (e.g., \"123456\") into hours, minutes, and seconds\n private parseTime(timeString: string): void {\n if (!timeString) {\n return;\n }\n\n const cleanedTime = timeString.replace(/[^0-9]/g, '').padStart(6, '0');\n const hour = cleanedTime.slice(0, 2);\n const minute = cleanedTime.slice(2, 4);\n const second = cleanedTime.slice(4, 6);\n\n const minHour = this.parseHour(this.min, this.format) || hour;\n const minMinute = this.parseMinute(this.min) || minute;\n const minSecond = this.parseSecond(this.min) || second;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n\n private reconstructTime(): string {\n if (this.format === 'HH' || this.format === 'hh') {\n return this.hours;\n } else if (this.format === 'HH:mm' || this.format === 'hh:mm') {\n return `${this.hours}:${this.minutes}`;\n } else if (this.format === 'HH:mm:ss' || this.format === 'hh:mm:ss') {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n } else {\n return `${this.hours}:${this.minutes}:${this.seconds}`;\n }\n }\n\n private handleFocus(type: TimeType): void {\n if (this.readonly || this.disabled) {\n return;\n }\n\n if (!this.open) {\n this.open = true; // Force the popover to open\n }\n\n // Refocus on the input if it loses focus and is empty\n if (\n this.inputElements[type]?.value.length === 0 ||\n this.inputElements[type]?.value === '00'\n ) {\n this.inputElements[type]?.focus();\n this.inputElements[type]?.select();\n }\n\n this.typeFocused = type;\n }\n\n private HandleDropdownIconClick(): void {\n if (this.disabled || this.readonly) {\n return; // Do not toggle if disabled or read-only\n }\n\n if (this.open && this.inputElements[TimeType.Hours]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Minutes]) {\n this.open = false; // Close the popover if it is open\n } else if (this.open && this.inputElements[TimeType.Seconds]) {\n this.open = false; // Close the popover if it is open\n } else if (!this.open && this.inputElements[TimeType.Hours]) {\n this.inputElements[TimeType.Hours]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Hours]?.select();\n } else if (!this.open && this.inputElements[TimeType.Minutes]) {\n this.inputElements[TimeType.Minutes]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Minutes]?.select();\n } else if (!this.open && this.inputElements[TimeType.Seconds]) {\n this.inputElements[TimeType.Seconds]?.focus(); // Focus will open the popover\n this.inputElements[TimeType.Seconds]?.select();\n } else {\n console.warn(\n 'nv-fieldtime -> No input elements found to focus or to blur',\n );\n }\n }\n\n private updateHighlightedItem(items: HTMLElement[], index: number) {\n items.forEach((item, i) => {\n if (i === index) {\n item.classList.add('highlighted');\n item.setAttribute('tabindex', '0');\n item.focus(); // Forcer le focus ici\n item.scrollIntoView({ block: 'nearest' });\n } else {\n item.classList.remove('highlighted');\n item.setAttribute('tabindex', '-1');\n }\n });\n }\n\n private handleTimeOptionClick(event: MouseEvent, type: TimeType): void {\n const option = parseInt(\n (event.target as HTMLElement).textContent || '0',\n 10,\n );\n\n if (type === TimeType.Hours) {\n this.hours = option.toString().padStart(2, '0');\n } else if (type === TimeType.Minutes) {\n this.minutes = option.toString().padStart(2, '0');\n } else if (type === TimeType.Seconds) {\n this.seconds = option.toString().padStart(2, '0');\n }\n\n const reconstructTime = this.reconstructTime();\n this.value = reconstructTime;\n }\n\n private handleInputBlur(): void {\n // Use a delay to check if the focus is still within the popover\n setTimeout(() => {\n if (!this.el.contains(document.activeElement)) {\n if (this.open) {\n this.open = false; // Close the popover if the focus is outside the component\n }\n }\n }, 150);\n }\n\n private handleClickOutside(event: MouseEvent) {\n const target = event.target as Node;\n\n // Check if the click is inside the component or any of the input elements\n if (\n this.el.contains(target) ||\n Object.values(this.inputElements).some(input => input.contains(target))\n ) {\n return;\n }\n\n if (this.open) {\n this.open = false; // Close the popover if the click is outside\n }\n }\n\n private handleScroll(e: Event, type: TimeType): void {\n const target = e.target as HTMLElement;\n const scrollTop = target.scrollTop;\n const containerHeight = target.clientHeight;\n const scrollHeight = target.scrollHeight;\n\n // Define the height of each item, this could be dynamic if the height varies\n const itemHeight = 40; // Consider making this configurable or dynamic\n const options = this.generateTimeOptions(type); // Generates the list of time options\n const singleSetHeight = options.length * itemHeight;\n\n // Check if the scroll is near the bottom or top and reset to the first set\n if (\n scrollTop + containerHeight >= scrollHeight - itemHeight ||\n scrollTop <= 0\n ) {\n target.scrollTop = singleSetHeight; // Reset to the first set from the bottom\n }\n }\n\n private generateTimeOptions(type: TimeType) {\n // Convert the step in seconds\n const stepInSeconds = this.step / 1000;\n\n // Handle edge case for zero step\n if (stepInSeconds === 0) {\n return ['00']; // Just return the default value\n }\n\n // Generate the time options based on the type\n switch (type) {\n case TimeType.Hours:\n return this.generateHourOptions(stepInSeconds);\n\n case TimeType.Minutes:\n return this.generateMinuteOptions(stepInSeconds);\n\n case TimeType.Seconds:\n return this.generateSecondOptions(stepInSeconds);\n\n default:\n return [];\n }\n }\n\n private generateHourOptions(stepInSeconds: number): string[] {\n const hourStep = Math.max(1, Math.floor(stepInSeconds / 3600)); // Prevent step < 1\n const maxHour =\n this.parseHour(this.max, this.format) ||\n (this.format.startsWith('hh') ? '12' : '24');\n const minHour = this.parseHour(this.min, this.format) || '00';\n\n const maxHourValue = parseInt(maxHour, 10);\n const minHourValue = parseInt(minHour, 10);\n const values: string[] = [];\n\n for (let i = minHourValue; i < maxHourValue; i += hourStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseHour(value: string | null, format: string): string | null {\n if (!value) return null;\n const [hourStr] = value.split(':');\n const hour = parseInt(hourStr, 10);\n if (isNaN(hour)) return null;\n if (format.startsWith('hh'))\n return hour > 0 && hour <= 12 ? hourStr.padStart(2, '0') : null;\n return hour >= 0 && hour <= 24 ? hourStr.padStart(2, '0') : null;\n }\n\n private generateMinuteOptions(stepInSeconds: number): string[] {\n const minuteStep = Math.max(1, Math.floor((stepInSeconds % 3600) / 60)); // Ensure step >= 1\n const minMinute = this.parseMinute(this.min) ?? 0;\n const maxMinute = this.parseMinute(this.max) ?? 59;\n\n if (minMinute === 0 && maxMinute === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minMinute; i <= maxMinute; i += minuteStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseMinute(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 2) return null; // Expect at least \"hh:mm\"\n const minute = parseInt(parts[1], 10);\n return isNaN(minute) || minute < 0 || minute >= 60 ? null : minute;\n }\n\n private generateSecondOptions(stepInSeconds: number): string[] {\n const secondStep = Math.max(1, stepInSeconds % 60); // Ensure step >= 1\n const minSecond = this.parseSecond(this.min) ?? 0;\n const maxSecond = this.parseSecond(this.max) ?? 59;\n\n if (minSecond === 0 && maxSecond === 0) return ['00']; // Handle edge case for zero seconds\n\n const values: string[] = [];\n\n for (let i = minSecond; i <= maxSecond; i += secondStep) {\n values.push(i.toString().padStart(2, '0'));\n }\n\n return values;\n }\n\n private parseSecond(value: string | null): number | null {\n if (!value) return null;\n const parts = value.split(':');\n if (parts.length < 3) return null; // Expect \"hh:mm:ss\" or \"HH:mm:ss\"\n const second = parseInt(parts[2], 10);\n return isNaN(second) || second < 0 || second >= 60 ? null : second;\n }\n\n private generateInfiniteTimeOptions(type: TimeType): string[] {\n const options = this.generateTimeOptions(type);\n const totalOptions = options.length;\n\n // Dynamically calculate repetitions based on a target number of items (e.g., 300 items)\n const repetitions = Math.ceil(300 / totalOptions);\n return Array(repetitions).fill(options).flat();\n }\n\n private getCurrentTime(): string {\n const currentTime = new Date();\n return currentTime.toLocaleTimeString(); // Returns the time in the locale's format\n }\n\n private updateColumnHighlight(selector, value): void {\n const items = Array.from(this.el.querySelectorAll<HTMLElement>(selector));\n\n const index = items.findIndex(x => x.textContent === value);\n this.updateHighlightedItem(items, index);\n }\n\n private handleHostClick(event: MouseEvent): void {\n if (this.disabled || this.readonly) {\n return;\n }\n\n const targetElement = event.target as HTMLElement;\n\n // Check if the click target or its ancestors are inside an nv-iconbutton element\n if (targetElement.closest('nv-iconbutton')) {\n return; // Handle icon button click separately\n }\n\n if (!this.open) {\n if (this.inputElements) {\n this.inputElements[TimeType.Hours]?.focus();\n this.inputElements[TimeType.Hours]?.select();\n }\n\n event.preventDefault();\n }\n }\n\n //#endregion METHODS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n\n // If an initial value is passed, parse it\n if (this.value) {\n this.parseTime(this.value);\n } else {\n const minHour = this.parseHour(this.min, this.format) || '00';\n const minMinute = this.parseMinute(this.min) || 0;\n const minSecond = this.parseSecond(this.min) || 0;\n\n this.hours = minHour.padStart(2, '0');\n this.minutes = minMinute.toString().padStart(2, '0');\n this.seconds = minSecond.toString().padStart(2, '0');\n }\n }\n\n connectedCallback() {\n document.addEventListener('click', this.handleClickOutside.bind(this));\n }\n\n disconnectedCallback() {\n document.removeEventListener('click', this.handleClickOutside.bind(this));\n }\n\n componentDidLoad() {\n if (!this.value) {\n const currentTime = this.getCurrentTime();\n\n // Split time into components\n // eslint-disable-next-line prefer-const\n let [hour, minute, secondAmPm] = currentTime.split(':');\n let second, amPm;\n\n // Check if AM/PM is present and split accordingly\n if (secondAmPm.includes(' ')) {\n [second, amPm] = secondAmPm.split(' ');\n } else {\n second = secondAmPm;\n }\n\n // Parse hour as integer for calculations\n let parsedHour = parseInt(hour, 10);\n\n // Convert hour to 24-hour format based on AM/PM (if present)\n if (amPm) {\n if (amPm === 'PM' && parsedHour < 12) {\n parsedHour += 12; // Convert PM to 24-hour\n } else if (amPm === 'AM' && parsedHour === 12) {\n parsedHour = 0; // Midnight in 24-hour format\n }\n }\n\n // Adjust for 12-hour format if necessary\n if (this.format.startsWith('hh')) {\n if (parsedHour === 0) {\n hour = '12'; // Midnight in 12-hour format\n } else if (parsedHour > 12) {\n hour = (parsedHour - 12).toString(); // Convert 24-hour to 12-hour\n } else {\n hour = parsedHour.toString();\n }\n } else {\n hour = parsedHour.toString(); // Use 24-hour format directly\n }\n\n // Pad hour, minute, and second to ensure two digits\n hour = hour.padStart(2, '0');\n minute = minute.padStart(2, '0');\n second = second.padStart(2, '0');\n\n // Update highlighted items for hours\n const hourSelector = `.time-column.time-column-hours div`;\n this.updateColumnHighlight(hourSelector, hour);\n\n // Update highlighted items for minutes\n const minuteSelector = `.time-column.time-column-minutes div`;\n this.updateColumnHighlight(minuteSelector, minute);\n\n // Update highlighted items for seconds\n const secondSelector = `.time-column.time-column-seconds div`;\n this.updateColumnHighlight(secondSelector, second);\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n private RenderTimeOptionsColumn(type: TimeType): HTMLElement {\n return (\n <div\n class={`time-column time-column-${type}`}\n onScroll={e => this.handleScroll(e, type)}\n >\n {/* Hours */}\n {this.generateInfiniteTimeOptions(type).map((option, index) => (\n <div\n class={{\n 'time-option': true,\n 'selected':\n (type === TimeType.Hours && option === this.hours) ||\n (type === TimeType.Minutes && option === this.minutes) ||\n (type === TimeType.Seconds && option === this.seconds),\n }}\n key={`${option}-${index}`}\n onClick={e => this.handleTimeOptionClick(e, type)}\n >\n {option}\n </div>\n ))}\n </div>\n );\n }\n\n render() {\n return (\n <Host onclick={e => this.handleHostClick(e)}>\n {(this.label || this.el.querySelector('[slot=\"label\"]')) && (\n <label htmlFor={this.inputId}>\n <slot name=\"label\">{this.label}</slot>\n </label>\n )}\n\n <nv-popover\n ref={el => (this.popoverElement = el as HTMLNvPopoverElement)}\n triggerMode=\"controlled\"\n placement=\"bottom-start\"\n open={this.open}\n >\n <div class=\"input-wrapper\" slot=\"trigger\">\n <slot name=\"before-input\"></slot>\n\n <div class=\"input-container\">\n <slot name=\"leading-input\"></slot>\n {/* Input fields for hours, minutes, and seconds */}\n {/* Hours */}\n {startsWithIgnoreCase(this.format, 'HH') && [\n <input\n ref={el => (this.inputElements[TimeType.Hours] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.hours}\n onInput={e => this.handleInputChange(e, TimeType.Hours)}\n placeholder={this.format.includes('hh') ? 'hh' : 'HH'}\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Hours)}\n name={\n this.name\n ? `${TimeType.Hours}-${this.name}`\n : TimeType.Hours\n }\n id={this.inputId}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Minutes */}\n {this.format.includes('mm') && [\n <span>:</span>,\n <input\n ref={el => (this.inputElements[TimeType.Minutes] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.minutes}\n onInput={e => this.handleInputChange(e, TimeType.Minutes)}\n placeholder=\"mm\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Minutes)}\n name={\n this.name\n ? `${TimeType.Minutes}-${this.name}`\n : TimeType.Minutes\n }\n id={`${this.inputId}-minutes`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n {/* Seconds */}\n {this.format.includes('ss') && [\n <span>:</span>,\n\n <input\n ref={el => (this.inputElements[TimeType.Seconds] = el)}\n type=\"number\"\n autofocus={this.autofocus}\n class=\"time-input\"\n pattern=\"[0-9]*\"\n maxlength=\"3\"\n value={this.seconds}\n onInput={e => this.handleInputChange(e, TimeType.Seconds)}\n placeholder=\"ss\"\n inputMode=\"numeric\"\n onFocus={() => this.handleFocus(TimeType.Seconds)}\n name={\n this.name\n ? `${TimeType.Seconds}-${this.name}`\n : TimeType.Seconds\n }\n id={`${this.inputId}-seconds`}\n readonly={this.readonly}\n disabled={this.disabled}\n required={this.required}\n onKeyDown={e => this.handleKeyDown(e)} // Handle arrow keys\n onBlur={() => this.handleInputBlur()}\n />,\n ]}\n\n <nv-iconbutton\n name={'clock'}\n size=\"md\"\n emphasis=\"lower\"\n aria-label={this.open ? 'Hide time picker' : 'Show time picker'}\n aria-pressed={this.open.toString()}\n onClick={() => this.HandleDropdownIconClick()}\n />\n\n {this.error && (\n <nv-icon name=\"alert-circle\" class=\"validation\" size=\"sm\" />\n )}\n {this.success && (\n <nv-icon name=\"circle-check\" class=\"validation\" size=\"sm\" />\n )}\n </div>\n\n <slot name=\"after-input\"></slot>\n </div>\n\n <div class=\"time-dropdown\" slot=\"content\">\n <div class=\"time-columns\">\n {startsWithIgnoreCase(this.format, 'HH') &&\n this.RenderTimeOptionsColumn(TimeType.Hours)}\n {this.format.includes('mm') &&\n this.RenderTimeOptionsColumn(TimeType.Minutes)}\n {this.format.includes('ss') &&\n this.RenderTimeOptionsColumn(TimeType.Seconds)}\n </div>\n </div>\n </nv-popover>\n\n {(this.description ||\n this.el.querySelector('[slot=\"description\"]')) && (\n <div class=\"description\">\n <slot name=\"description\">{this.description}</slot>\n </div>\n )}\n\n {(this.errorDescription ||\n this.el.querySelector('[slot=\"error-description\"]')) && (\n <div hidden={!this.error} class=\"error-description\">\n <slot name=\"error-description\">{this.errorDescription}</slot>\n </div>\n )}\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}
@@ -54,7 +54,7 @@ const NvIcon = class {
54
54
  /****************************************************************************/
55
55
  //#region RENDER
56
56
  render() {
57
- return (h(Host, { key: 'a3219e9be865e466fef36c8135ab14604e20fe40', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, h("svg", { key: '29cfc530d71369210b1bbd896760e19f7811c557', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, h("use", { key: 'f601f44101684971c1286b9f6214d5dcdaa7e66e', href: `#${this.name}` }))));
57
+ return (h(Host, { key: '8cb4ada2454c7e9676cd088397eb4416ccab2d82', class: clsx(this.color && `${this.color}`), role: "img", "aria-label": `${this.name}-icon` }, h("svg", { key: '4934c79fa096935be509ff6a641361dac44a4a9f', stroke: "currentColor", width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", class: `nv-icon-${this.size}` }, h("use", { key: '54e429910d5f9916f98e4cdef0be5f2f620df51e', href: `#${this.name}` }))));
58
58
  }
59
59
  };
60
60
  NvIcon.style = NvIconStyle0;
@@ -120,7 +120,7 @@ const NvIconbutton = class {
120
120
  /****************************************************************************/
121
121
  //#region RENDER
122
122
  render() {
123
- return (h(Host, { key: '789d2f8b19178efb5e2998386670cfcbe239efed', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && h("nv-loader", { key: '4f09a5b6fee239e01856aa7ed90e9af0f13a69dc', size: this.size }), !this.loading && h("nv-icon", { key: '44649863d33226aafad217dfbaba4cd56865b86d', name: this.name, size: this.size }), h("slot", { key: 'e5483a758287d3e3843774a0581cd1db6da172e3' })));
123
+ return (h(Host, { key: 'a59a26804e97dfbacf40fae6678b3b3ba66440a9', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && h("nv-loader", { key: '7cbe3502ff1c6fd76f7a9ab68128f5d5a0bbf7fa', size: this.size }), !this.loading && h("nv-icon", { key: '46cbb9c609991ea27316b8909551d303559652fc', name: this.name, size: this.size }), h("slot", { key: 'd2ca8959b7be7600e56fe23437e5da07d58985c2' })));
124
124
  }
125
125
  static get formAssociated() { return true; }
126
126
  get el() { return getElement(this); }
@@ -151,7 +151,7 @@ const NvLoader = class {
151
151
  //#region RENDER
152
152
  /* <slot> empty to force rendering change */
153
153
  render() {
154
- return (h(Host, { key: 'dad18e0ecc71ae0305fa1f287a336e8fa0da6889', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
154
+ return (h(Host, { key: '049afa243c1ce99643408d86afa99e69c5468b8b', class: clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
155
155
  }
156
156
  };
157
157
  NvLoader.style = NvLoaderStyle0;
@@ -191,7 +191,7 @@ const NvMenu = class {
191
191
  });
192
192
  }
193
193
  render() {
194
- return (h(Host, { key: '287ae16bc4971d1d7811bd80384e93b8b7017945' }, h("slot", { key: 'f09fa7b923d4f66e7fb8bebcfd943daf843eec38', name: "trigger" }), h("nv-popover", { key: '757ff04ef461eb60c061bd28914f82fc59437e82', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.items ? (h("ul", { slot: "content" }, this.renderMenuItems())) : (h("slot", { name: "content" })))));
194
+ return (h(Host, { key: '25e38953e8d6e4c591087f3964822eed76cd3775' }, h("slot", { key: 'f6ad4e16d740129dc296a3e0b2c5dffdd063b182', name: "trigger" }), h("nv-popover", { key: 'c355356a877bb0cedfd69bfaf4e724c06612c1e5', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.items ? (h("ul", { slot: "content" }, this.renderMenuItems())) : (h("slot", { name: "content" })))));
195
195
  }
196
196
  get el() { return getElement(this); }
197
197
  };
@@ -46,7 +46,7 @@ const NvMenuitem = class {
46
46
  /****************************************************************************/
47
47
  //#region RENDER
48
48
  render() {
49
- return (h(Host, { key: 'c008da503776b85bec237b25e321e4bba02d153f', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && h("nv-icon", { key: '66341d40e68409b4c0ab6595a67eed1e4354d6ba', name: this.icon }), h("slot", { key: 'e3960af26ffbc703a5702981e948013179b1a83b' }), this.label && h("span", { key: '9633388dcbad3080b54b83845ced54f9b9d05061', "data-scope": "text" }, this.label), this.shortcut && !this.hasSubmenu && h("kbd", { key: 'da358858336a86a7a49bbd4a52b5f628aadc1c29' }, this.shortcut), this.hasSubmenu && h("nv-icon", { key: '36a85c271a5dbe2c41eefac33209e5d9a909ae04', name: "chevron-right" })));
49
+ return (h(Host, { key: '327165c89f4e5decf8dc4b7b28e18562e528056d', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && h("nv-icon", { key: '4247d922bca3797dc3f2917218749a8d3c038df1', name: this.icon }), h("slot", { key: '1f81464ccf47a5bd918873ef70d3d3385e870638' }), this.label && h("span", { key: '113358a0cacfa53710ec0049a8e1c5e981de5b15', "data-scope": "text" }, this.label), this.shortcut && !this.hasSubmenu && h("kbd", { key: 'ee7c773b89bf1f55876cf297600247883cd54937' }, this.shortcut), this.hasSubmenu && h("nv-icon", { key: '70cbe2df51d9fbffe3b474b54e87aa06801acef7', name: "chevron-right" })));
50
50
  }
51
51
  get el() { return getElement(this); }
52
52
  };
@@ -2364,7 +2364,7 @@ const NvPopover = class {
2364
2364
  /****************************************************************************/
2365
2365
  //#region RENDER
2366
2366
  render() {
2367
- return (h(Host, { key: '843ac572358b402d6338945d671446fec1c51a6d' }, h("slot", { key: '090f01aea3932cb95357985766a20112c63c4992', name: "trigger" }), h("div", { key: '737822dd1539381bb485a389670f09a071441365', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: '9d268df3f0e1df7b2a2264154143c3db14619661', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '432aae053b25d2e7d6594203ad0ff3ecee26c059', name: "content" }))));
2367
+ return (h(Host, { key: '27f6f8acc148b3dc2b16a391c54a4a1de0637a57' }, h("slot", { key: 'd25614b3bfc5565d3729da11f6f83b4d92e83e19', name: "trigger" }), h("div", { key: '3b777862573405b2bb2a377750d9bb859a4bb20b', "data-scope": "popover", hidden: true, ref: el => (this.popoverElement = el) }, this.hasArrow && (h("div", { key: 'dda88155630bca69ec06a766e2999ed369d5d6c6', "data-scope": "arrow", ref: el => (this.arrowElement = el) })), h("slot", { key: '51eaf873fe239d3c4106e997f6cdd37b1bb29074', name: "content" }))));
2368
2368
  }
2369
2369
  get el() { return getElement(this); }
2370
2370
  static get watchers() { return {