@rpcbase/ui 0.166.0 → 0.167.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 (679) hide show
  1. package/dist/index100.js +318 -8
  2. package/dist/index100.js.map +1 -1
  3. package/dist/index101.js +126 -38
  4. package/dist/index101.js.map +1 -1
  5. package/dist/index102.js +20 -4
  6. package/dist/index102.js.map +1 -1
  7. package/dist/index103.js +76 -52
  8. package/dist/index103.js.map +1 -1
  9. package/dist/index104.js +18 -4
  10. package/dist/index104.js.map +1 -1
  11. package/dist/index105.js +101 -4
  12. package/dist/index105.js.map +1 -1
  13. package/dist/index106.js +5 -16
  14. package/dist/index106.js.map +1 -1
  15. package/dist/index107.js +14 -5
  16. package/dist/index107.js.map +1 -1
  17. package/dist/index108.js +2 -8
  18. package/dist/index108.js.map +1 -1
  19. package/dist/index109.js +7 -16
  20. package/dist/index109.js.map +1 -1
  21. package/dist/index11.js +13 -4
  22. package/dist/index11.js.map +1 -1
  23. package/dist/index110.js +326 -4
  24. package/dist/index110.js.map +1 -1
  25. package/dist/index111.js +49 -4
  26. package/dist/index111.js.map +1 -1
  27. package/dist/index112.js +52 -6
  28. package/dist/index112.js.map +1 -1
  29. package/dist/index113.js +4 -5
  30. package/dist/index113.js.map +1 -1
  31. package/dist/index114.js +4 -4
  32. package/dist/index114.js.map +1 -1
  33. package/dist/index115.js +14 -3
  34. package/dist/index115.js.map +1 -1
  35. package/dist/index116.js +5 -6
  36. package/dist/index116.js.map +1 -1
  37. package/dist/index117.js +7 -24
  38. package/dist/index117.js.map +1 -1
  39. package/dist/index118.js +16 -6
  40. package/dist/index118.js.map +1 -1
  41. package/dist/index119.js +4 -4
  42. package/dist/index119.js.map +1 -1
  43. package/dist/index120.js +4 -6
  44. package/dist/index120.js.map +1 -1
  45. package/dist/index121.js +5 -5
  46. package/dist/index121.js.map +1 -1
  47. package/dist/index122.js +5 -4
  48. package/dist/index122.js.map +1 -1
  49. package/dist/index123.js +4 -5
  50. package/dist/index123.js.map +1 -1
  51. package/dist/index124.js +4 -4
  52. package/dist/index124.js.map +1 -1
  53. package/dist/index125.js +5 -7
  54. package/dist/index125.js.map +1 -1
  55. package/dist/index126.js +24 -5
  56. package/dist/index126.js.map +1 -1
  57. package/dist/index127.js +6 -4
  58. package/dist/index127.js.map +1 -1
  59. package/dist/index128.js +4 -4
  60. package/dist/index128.js.map +1 -1
  61. package/dist/index129.js +6 -6
  62. package/dist/index129.js.map +1 -1
  63. package/dist/index13.js +1 -1
  64. package/dist/index130.js +5 -145
  65. package/dist/index130.js.map +1 -1
  66. package/dist/index131.js +4 -39
  67. package/dist/index131.js.map +1 -1
  68. package/dist/index132.js +5 -4
  69. package/dist/index132.js.map +1 -1
  70. package/dist/index133.js +4 -7
  71. package/dist/index133.js.map +1 -1
  72. package/dist/index134.js +8 -13
  73. package/dist/index134.js.map +1 -1
  74. package/dist/index135.js +5 -13
  75. package/dist/index135.js.map +1 -1
  76. package/dist/index136.js +4 -7
  77. package/dist/index136.js.map +1 -1
  78. package/dist/index137.js +4 -31
  79. package/dist/index137.js.map +1 -1
  80. package/dist/index138.js +6 -10
  81. package/dist/index138.js.map +1 -1
  82. package/dist/index139.js +145 -10
  83. package/dist/index139.js.map +1 -1
  84. package/dist/index14.js +3 -3
  85. package/dist/index140.js +38 -7
  86. package/dist/index140.js.map +1 -1
  87. package/dist/index141.js +4 -13
  88. package/dist/index141.js.map +1 -1
  89. package/dist/index142.js +5 -99
  90. package/dist/index142.js.map +1 -1
  91. package/dist/index143.js +14 -20
  92. package/dist/index143.js.map +1 -1
  93. package/dist/index144.js +13 -53
  94. package/dist/index144.js.map +1 -1
  95. package/dist/index145.js +6 -71
  96. package/dist/index145.js.map +1 -1
  97. package/dist/index146.js +31 -9
  98. package/dist/index146.js.map +1 -1
  99. package/dist/index147.js +10 -20
  100. package/dist/index147.js.map +1 -1
  101. package/dist/index148.js +10 -16
  102. package/dist/index148.js.map +1 -1
  103. package/dist/index149.js +8 -23
  104. package/dist/index149.js.map +1 -1
  105. package/dist/index150.js +13 -6
  106. package/dist/index150.js.map +1 -1
  107. package/dist/index151.js +101 -5
  108. package/dist/index151.js.map +1 -1
  109. package/dist/index152.js +20 -24
  110. package/dist/index152.js.map +1 -1
  111. package/dist/index153.js +53 -34
  112. package/dist/index153.js.map +1 -1
  113. package/dist/index154.js +73 -16
  114. package/dist/index154.js.map +1 -1
  115. package/dist/index155.js +9 -6
  116. package/dist/index155.js.map +1 -1
  117. package/dist/index156.js +20 -4
  118. package/dist/index156.js.map +1 -1
  119. package/dist/index157.js +16 -4
  120. package/dist/index157.js.map +1 -1
  121. package/dist/index158.js +23 -4
  122. package/dist/index158.js.map +1 -1
  123. package/dist/index159.js +6 -4
  124. package/dist/index159.js.map +1 -1
  125. package/dist/index160.js +5 -3
  126. package/dist/index160.js.map +1 -1
  127. package/dist/index161.js +23 -6
  128. package/dist/index161.js.map +1 -1
  129. package/dist/index162.js +35 -24
  130. package/dist/index162.js.map +1 -1
  131. package/dist/index163.js +16 -8
  132. package/dist/index163.js.map +1 -1
  133. package/dist/index164.js +5 -5
  134. package/dist/index164.js.map +1 -1
  135. package/dist/index165.js +4 -5
  136. package/dist/index165.js.map +1 -1
  137. package/dist/index166.js +4 -3
  138. package/dist/index166.js.map +1 -1
  139. package/dist/index167.js +4 -3
  140. package/dist/index167.js.map +1 -1
  141. package/dist/index168.js +4 -4
  142. package/dist/index168.js.map +1 -1
  143. package/dist/index169.js +3 -3
  144. package/dist/index169.js.map +1 -1
  145. package/dist/index170.js +6 -4
  146. package/dist/index170.js.map +1 -1
  147. package/dist/index171.js +24 -4
  148. package/dist/index171.js.map +1 -1
  149. package/dist/index172.js +7 -3
  150. package/dist/index172.js.map +1 -1
  151. package/dist/index173.js +6 -3
  152. package/dist/index173.js.map +1 -1
  153. package/dist/index174.js +5 -24
  154. package/dist/index174.js.map +1 -1
  155. package/dist/index175.js +4 -29
  156. package/dist/index175.js.map +1 -1
  157. package/dist/index176.js +4 -5
  158. package/dist/index176.js.map +1 -1
  159. package/dist/index177.js +4 -67
  160. package/dist/index177.js.map +1 -1
  161. package/dist/index178.js +3 -180
  162. package/dist/index178.js.map +1 -1
  163. package/dist/index179.js +4 -46
  164. package/dist/index179.js.map +1 -1
  165. package/dist/index18.js +10 -1
  166. package/dist/index18.js.map +1 -1
  167. package/dist/index180.js +3 -13
  168. package/dist/index180.js.map +1 -1
  169. package/dist/index181.js +3 -154
  170. package/dist/index181.js.map +1 -1
  171. package/dist/index182.js +3 -30
  172. package/dist/index182.js.map +1 -1
  173. package/dist/index183.js +3 -9
  174. package/dist/index183.js.map +1 -1
  175. package/dist/index184.js +2 -48
  176. package/dist/index184.js.map +1 -1
  177. package/dist/index185.js +67 -11
  178. package/dist/index185.js.map +1 -1
  179. package/dist/index186.js +83 -43
  180. package/dist/index186.js.map +1 -1
  181. package/dist/index187.js +41 -90
  182. package/dist/index187.js.map +1 -1
  183. package/dist/index188.js +7 -86
  184. package/dist/index188.js.map +1 -1
  185. package/dist/index189.js +4 -105
  186. package/dist/index189.js.map +1 -1
  187. package/dist/index19.js +6 -6
  188. package/dist/index190.js +49 -50
  189. package/dist/index190.js.map +1 -1
  190. package/dist/index191.js +24 -11
  191. package/dist/index191.js.map +1 -1
  192. package/dist/index192.js +29 -38
  193. package/dist/index192.js.map +1 -1
  194. package/dist/index193.js +5 -9
  195. package/dist/index193.js.map +1 -1
  196. package/dist/index194.js +5 -116
  197. package/dist/index194.js.map +1 -1
  198. package/dist/index195.js +67 -16
  199. package/dist/index195.js.map +1 -1
  200. package/dist/index196.js +2 -16
  201. package/dist/index196.js.map +1 -1
  202. package/dist/index197.js +363 -3
  203. package/dist/index197.js.map +1 -1
  204. package/dist/index198.js +259 -34
  205. package/dist/index198.js.map +1 -1
  206. package/dist/index199.js +59 -19
  207. package/dist/index199.js.map +1 -1
  208. package/dist/index20.js +1 -1
  209. package/dist/index200.js +46 -9
  210. package/dist/index200.js.map +1 -1
  211. package/dist/index201.js +169 -8
  212. package/dist/index201.js.map +1 -1
  213. package/dist/index202.js +108 -18
  214. package/dist/index202.js.map +1 -1
  215. package/dist/index203.js +24 -28
  216. package/dist/index203.js.map +1 -1
  217. package/dist/index204.js +8 -17
  218. package/dist/index204.js.map +1 -1
  219. package/dist/index205.js +4 -58
  220. package/dist/index205.js.map +1 -1
  221. package/dist/index206.js +5 -8
  222. package/dist/index206.js.map +1 -1
  223. package/dist/index207.js +4 -66
  224. package/dist/index207.js.map +1 -1
  225. package/dist/index208.js +464 -17
  226. package/dist/index208.js.map +1 -1
  227. package/dist/index209.js +183 -14
  228. package/dist/index209.js.map +1 -1
  229. package/dist/index21.js +1 -1
  230. package/dist/index210.js +106 -4
  231. package/dist/index210.js.map +1 -1
  232. package/dist/index211.js +261 -4
  233. package/dist/index211.js.map +1 -1
  234. package/dist/index212.js +9 -6
  235. package/dist/index212.js.map +1 -1
  236. package/dist/index213.js +42 -4
  237. package/dist/index213.js.map +1 -1
  238. package/dist/index214.js +4 -7
  239. package/dist/index214.js.map +1 -1
  240. package/dist/index215.js +64 -17
  241. package/dist/index215.js.map +1 -1
  242. package/dist/index216.js +47 -4
  243. package/dist/index216.js.map +1 -1
  244. package/dist/index217.js +67 -5
  245. package/dist/index217.js.map +1 -1
  246. package/dist/index218.js +180 -13
  247. package/dist/index218.js.map +1 -1
  248. package/dist/index219.js +46 -10
  249. package/dist/index219.js.map +1 -1
  250. package/dist/index220.js +39 -14
  251. package/dist/index220.js.map +1 -1
  252. package/dist/index221.js +100 -14
  253. package/dist/index221.js.map +1 -1
  254. package/dist/index222.js +97 -5
  255. package/dist/index222.js.map +1 -1
  256. package/dist/index223.js +99 -6
  257. package/dist/index223.js.map +1 -1
  258. package/dist/index224.js +58 -7
  259. package/dist/index224.js.map +1 -1
  260. package/dist/index225.js +8 -6
  261. package/dist/index225.js.map +1 -1
  262. package/dist/index226.js +66 -9
  263. package/dist/index226.js.map +1 -1
  264. package/dist/index227.js +19 -5
  265. package/dist/index227.js.map +1 -1
  266. package/dist/index228.js +16 -5
  267. package/dist/index228.js.map +1 -1
  268. package/dist/index229.js +5 -9
  269. package/dist/index229.js.map +1 -1
  270. package/dist/index23.js +1 -1
  271. package/dist/index230.js +5 -5
  272. package/dist/index230.js.map +1 -1
  273. package/dist/index231.js +6 -5
  274. package/dist/index231.js.map +1 -1
  275. package/dist/index232.js +4 -4
  276. package/dist/index232.js.map +1 -1
  277. package/dist/index233.js +7 -11
  278. package/dist/index233.js.map +1 -1
  279. package/dist/index234.js +16 -9
  280. package/dist/index234.js.map +1 -1
  281. package/dist/index235.js +5 -10
  282. package/dist/index235.js.map +1 -1
  283. package/dist/index236.js +5 -11
  284. package/dist/index236.js.map +1 -1
  285. package/dist/index237.js +13 -11
  286. package/dist/index237.js.map +1 -1
  287. package/dist/index238.js +10 -10
  288. package/dist/index238.js.map +1 -1
  289. package/dist/index239.js +13 -6
  290. package/dist/index239.js.map +1 -1
  291. package/dist/index240.js +14 -6
  292. package/dist/index240.js.map +1 -1
  293. package/dist/index241.js +4 -4
  294. package/dist/index241.js.map +1 -1
  295. package/dist/index242.js +6 -6
  296. package/dist/index242.js.map +1 -1
  297. package/dist/index243.js +6 -6
  298. package/dist/index243.js.map +1 -1
  299. package/dist/index244.js +5 -5
  300. package/dist/index244.js.map +1 -1
  301. package/dist/index245.js +9 -55
  302. package/dist/index245.js.map +1 -1
  303. package/dist/index246.js +5 -23
  304. package/dist/index246.js.map +1 -1
  305. package/dist/index247.js +5 -16
  306. package/dist/index247.js.map +1 -1
  307. package/dist/index248.js +9 -7
  308. package/dist/index248.js.map +1 -1
  309. package/dist/index249.js +5 -10
  310. package/dist/index249.js.map +1 -1
  311. package/dist/index250.js +5 -10
  312. package/dist/index250.js.map +1 -1
  313. package/dist/index251.js +4 -21
  314. package/dist/index251.js.map +1 -1
  315. package/dist/index252.js +11 -10
  316. package/dist/index252.js.map +1 -1
  317. package/dist/index253.js +10 -9
  318. package/dist/index253.js.map +1 -1
  319. package/dist/index254.js +10 -9
  320. package/dist/index254.js.map +1 -1
  321. package/dist/index255.js +11 -4
  322. package/dist/index255.js.map +1 -1
  323. package/dist/index256.js +11 -5
  324. package/dist/index256.js.map +1 -1
  325. package/dist/index257.js +10 -16
  326. package/dist/index257.js.map +1 -1
  327. package/dist/index258.js +7 -9
  328. package/dist/index258.js.map +1 -1
  329. package/dist/index259.js +6 -18
  330. package/dist/index259.js.map +1 -1
  331. package/dist/index260.js +5 -15
  332. package/dist/index260.js.map +1 -1
  333. package/dist/index261.js +6 -12
  334. package/dist/index261.js.map +1 -1
  335. package/dist/index262.js +7 -29
  336. package/dist/index262.js.map +1 -1
  337. package/dist/index263.js +6 -12
  338. package/dist/index263.js.map +1 -1
  339. package/dist/index264.js +54 -24
  340. package/dist/index264.js.map +1 -1
  341. package/dist/index265.js +23 -5
  342. package/dist/index265.js.map +1 -1
  343. package/dist/index266.js +17 -5
  344. package/dist/index266.js.map +1 -1
  345. package/dist/index267.js +8 -3
  346. package/dist/index267.js.map +1 -1
  347. package/dist/index268.js +10 -23
  348. package/dist/index268.js.map +1 -1
  349. package/dist/index269.js +10 -112
  350. package/dist/index269.js.map +1 -1
  351. package/dist/index270.js +21 -15
  352. package/dist/index270.js.map +1 -1
  353. package/dist/index271.js +10 -524
  354. package/dist/index271.js.map +1 -1
  355. package/dist/index272.js +9 -127
  356. package/dist/index272.js.map +1 -1
  357. package/dist/index273.js +9 -133
  358. package/dist/index273.js.map +1 -1
  359. package/dist/index274.js +4 -20
  360. package/dist/index274.js.map +1 -1
  361. package/dist/index275.js +5 -4
  362. package/dist/index275.js.map +1 -1
  363. package/dist/index276.js +16 -18
  364. package/dist/index276.js.map +1 -1
  365. package/dist/index277.js +9 -12
  366. package/dist/index277.js.map +1 -1
  367. package/dist/index278.js +19 -69
  368. package/dist/index278.js.map +1 -1
  369. package/dist/index279.js +15 -8
  370. package/dist/index279.js.map +1 -1
  371. package/dist/index28.js +1 -1
  372. package/dist/index280.js +13 -14
  373. package/dist/index280.js.map +1 -1
  374. package/dist/index281.js +30 -66
  375. package/dist/index281.js.map +1 -1
  376. package/dist/index282.js +12 -64
  377. package/dist/index282.js.map +1 -1
  378. package/dist/index283.js +25 -5
  379. package/dist/index283.js.map +1 -1
  380. package/dist/index284.js +5 -5
  381. package/dist/index284.js.map +1 -1
  382. package/dist/index285.js +2 -4
  383. package/dist/index285.js.map +1 -1
  384. package/dist/index286.js +2 -16
  385. package/dist/index286.js.map +1 -1
  386. package/dist/index287.js +5 -9
  387. package/dist/index287.js.map +1 -1
  388. package/dist/index288.js +3 -6
  389. package/dist/index288.js.map +1 -1
  390. package/dist/index289.js +23 -4
  391. package/dist/index289.js.map +1 -1
  392. package/dist/index29.js +5 -5
  393. package/dist/index290.js +111 -544
  394. package/dist/index290.js.map +1 -1
  395. package/dist/index291.js +15 -46
  396. package/dist/index291.js.map +1 -1
  397. package/dist/index292.js +521 -14
  398. package/dist/index292.js.map +1 -1
  399. package/dist/index293.js +127 -6
  400. package/dist/index293.js.map +1 -1
  401. package/dist/index294.js +133 -8
  402. package/dist/index294.js.map +1 -1
  403. package/dist/index295.js +13 -7
  404. package/dist/index295.js.map +1 -1
  405. package/dist/index296.js +154 -8
  406. package/dist/index296.js.map +1 -1
  407. package/dist/index297.js +30 -12
  408. package/dist/index297.js.map +1 -1
  409. package/dist/index298.js +9 -9
  410. package/dist/index298.js.map +1 -1
  411. package/dist/index299.js +47 -13
  412. package/dist/index299.js.map +1 -1
  413. package/dist/index30.js +47 -231
  414. package/dist/index30.js.map +1 -1
  415. package/dist/index300.js +11 -3
  416. package/dist/index300.js.map +1 -1
  417. package/dist/index301.js +43 -21
  418. package/dist/index301.js.map +1 -1
  419. package/dist/index302.js +95 -4
  420. package/dist/index302.js.map +1 -1
  421. package/dist/index303.js +85 -54
  422. package/dist/index303.js.map +1 -1
  423. package/dist/index304.js +105 -67
  424. package/dist/index304.js.map +1 -1
  425. package/dist/index305.js +53 -31
  426. package/dist/index305.js.map +1 -1
  427. package/dist/index306.js +12 -9
  428. package/dist/index306.js.map +1 -1
  429. package/dist/index307.js +36 -151
  430. package/dist/index307.js.map +1 -1
  431. package/dist/index308.js +9 -108
  432. package/dist/index308.js.map +1 -1
  433. package/dist/index309.js +4 -23
  434. package/dist/index309.js.map +1 -1
  435. package/dist/index31.js +218 -49
  436. package/dist/index31.js.map +1 -1
  437. package/dist/index310.js +10 -13
  438. package/dist/index310.js.map +1 -1
  439. package/dist/index311.js +113 -24
  440. package/dist/index311.js.map +1 -1
  441. package/dist/index312.js +18 -5
  442. package/dist/index312.js.map +1 -1
  443. package/dist/index313.js +15 -15
  444. package/dist/index313.js.map +1 -1
  445. package/dist/index314.js +33 -25
  446. package/dist/index314.js.map +1 -1
  447. package/dist/index315.js +20 -12
  448. package/dist/index315.js.map +1 -1
  449. package/dist/index316.js +8 -6
  450. package/dist/index316.js.map +1 -1
  451. package/dist/index317.js +23 -0
  452. package/dist/index317.js.map +1 -0
  453. package/dist/index318.js +32 -0
  454. package/dist/index318.js.map +1 -0
  455. package/dist/index319.js +20 -0
  456. package/dist/index319.js.map +1 -0
  457. package/dist/index32.js +36 -2633
  458. package/dist/index32.js.map +1 -1
  459. package/dist/index320.js +8 -0
  460. package/dist/index320.js.map +1 -0
  461. package/dist/index321.js +22 -0
  462. package/dist/index321.js.map +1 -0
  463. package/dist/index322.js +16 -0
  464. package/dist/index322.js.map +1 -0
  465. package/dist/index323.js +72 -0
  466. package/dist/index323.js.map +1 -0
  467. package/dist/index324.js +12 -0
  468. package/dist/index324.js.map +1 -0
  469. package/dist/index325.js +17 -0
  470. package/dist/index325.js.map +1 -0
  471. package/dist/index326.js +69 -0
  472. package/dist/index326.js.map +1 -0
  473. package/dist/index327.js +68 -0
  474. package/dist/index327.js.map +1 -0
  475. package/dist/index328.js +24 -0
  476. package/dist/index328.js.map +1 -0
  477. package/dist/index329.js +9 -0
  478. package/dist/index329.js.map +1 -0
  479. package/dist/index33.js +35 -388
  480. package/dist/index33.js.map +1 -1
  481. package/dist/index330.js +9 -0
  482. package/dist/index330.js.map +1 -0
  483. package/dist/index331.js +7 -0
  484. package/dist/index331.js.map +1 -0
  485. package/dist/index332.js +19 -0
  486. package/dist/index332.js.map +1 -0
  487. package/dist/index333.js +12 -0
  488. package/dist/index333.js.map +1 -0
  489. package/dist/index334.js +9 -0
  490. package/dist/index334.js.map +1 -0
  491. package/dist/index335.js +8 -0
  492. package/dist/index335.js.map +1 -0
  493. package/dist/index336.js +549 -0
  494. package/dist/index336.js.map +1 -0
  495. package/dist/index337.js +50 -0
  496. package/dist/index337.js.map +1 -0
  497. package/dist/index338.js +21 -0
  498. package/dist/index338.js.map +1 -0
  499. package/dist/index339.js +10 -0
  500. package/dist/index339.js.map +1 -0
  501. package/dist/index34.js +26 -230
  502. package/dist/index34.js.map +1 -1
  503. package/dist/index340.js +12 -0
  504. package/dist/index340.js.map +1 -0
  505. package/dist/index341.js +11 -0
  506. package/dist/index341.js.map +1 -0
  507. package/dist/index342.js +12 -0
  508. package/dist/index342.js.map +1 -0
  509. package/dist/index343.js +16 -0
  510. package/dist/index343.js.map +1 -0
  511. package/dist/index344.js +13 -0
  512. package/dist/index344.js.map +1 -0
  513. package/dist/index345.js +17 -0
  514. package/dist/index345.js.map +1 -0
  515. package/dist/index346.js +7 -0
  516. package/dist/index346.js.map +1 -0
  517. package/dist/index347.js +26 -0
  518. package/dist/index347.js.map +1 -0
  519. package/dist/index348.js +8 -0
  520. package/dist/index348.js.map +1 -0
  521. package/dist/index349.js +59 -0
  522. package/dist/index349.js.map +1 -0
  523. package/dist/index35.js +44 -20
  524. package/dist/index35.js.map +1 -1
  525. package/dist/index350.js +71 -0
  526. package/dist/index350.js.map +1 -0
  527. package/dist/index351.js +34 -0
  528. package/dist/index351.js.map +1 -0
  529. package/dist/index352.js +12 -0
  530. package/dist/index352.js.map +1 -0
  531. package/dist/index353.js +156 -0
  532. package/dist/index353.js.map +1 -0
  533. package/dist/index354.js +111 -0
  534. package/dist/index354.js.map +1 -0
  535. package/dist/index355.js +26 -0
  536. package/dist/index355.js.map +1 -0
  537. package/dist/index356.js +16 -0
  538. package/dist/index356.js.map +1 -0
  539. package/dist/index357.js +31 -0
  540. package/dist/index357.js.map +1 -0
  541. package/dist/index358.js +8 -0
  542. package/dist/index358.js.map +1 -0
  543. package/dist/index359.js +19 -0
  544. package/dist/index359.js.map +1 -0
  545. package/dist/index36.js +27 -137
  546. package/dist/index36.js.map +1 -1
  547. package/dist/index360.js +32 -0
  548. package/dist/index360.js.map +1 -0
  549. package/dist/index361.js +16 -0
  550. package/dist/index361.js.map +1 -0
  551. package/dist/index362.js +10 -0
  552. package/dist/index362.js.map +1 -0
  553. package/dist/index37.js +22 -181
  554. package/dist/index37.js.map +1 -1
  555. package/dist/index38.js +23 -77
  556. package/dist/index38.js.map +1 -1
  557. package/dist/index39.js +127 -89
  558. package/dist/index39.js.map +1 -1
  559. package/dist/index40.js +231 -5
  560. package/dist/index40.js.map +1 -1
  561. package/dist/index41.js +51 -844
  562. package/dist/index41.js.map +1 -1
  563. package/dist/index42.js +2636 -61
  564. package/dist/index42.js.map +1 -1
  565. package/dist/index43.js +393 -7
  566. package/dist/index43.js.map +1 -1
  567. package/dist/index44.js +233 -2
  568. package/dist/index44.js.map +1 -1
  569. package/dist/index45.js +20 -22
  570. package/dist/index45.js.map +1 -1
  571. package/dist/index46.js +140 -232
  572. package/dist/index46.js.map +1 -1
  573. package/dist/index47.js +180 -198
  574. package/dist/index47.js.map +1 -1
  575. package/dist/index48.js +76 -3
  576. package/dist/index48.js.map +1 -1
  577. package/dist/index49.js +89 -5
  578. package/dist/index49.js.map +1 -1
  579. package/dist/index50.js +5 -47
  580. package/dist/index50.js.map +1 -1
  581. package/dist/index51.js +840 -23
  582. package/dist/index51.js.map +1 -1
  583. package/dist/index52.js +65 -50
  584. package/dist/index52.js.map +1 -1
  585. package/dist/index53.js +7 -7
  586. package/dist/index53.js.map +1 -1
  587. package/dist/index54.js +2 -15
  588. package/dist/index54.js.map +1 -1
  589. package/dist/index55.js +22 -132
  590. package/dist/index55.js.map +1 -1
  591. package/dist/index56.js +233 -10
  592. package/dist/index56.js.map +1 -1
  593. package/dist/index57.js +191 -203
  594. package/dist/index57.js.map +1 -1
  595. package/dist/index58.js +4 -13
  596. package/dist/index58.js.map +1 -1
  597. package/dist/index59.js +6 -33
  598. package/dist/index59.js.map +1 -1
  599. package/dist/index60.js +44 -43
  600. package/dist/index60.js.map +1 -1
  601. package/dist/index61.js +26 -7
  602. package/dist/index61.js.map +1 -1
  603. package/dist/index62.js +48 -47
  604. package/dist/index62.js.map +1 -1
  605. package/dist/index63.js +7 -3
  606. package/dist/index63.js.map +1 -1
  607. package/dist/index64.js +14 -5
  608. package/dist/index64.js.map +1 -1
  609. package/dist/index65.js +133 -27
  610. package/dist/index65.js.map +1 -1
  611. package/dist/index66.js +11 -50
  612. package/dist/index66.js.map +1 -1
  613. package/dist/index67.js +216 -8
  614. package/dist/index67.js.map +1 -1
  615. package/dist/index68.js +13 -2
  616. package/dist/index68.js.map +1 -1
  617. package/dist/index69.js +34 -2
  618. package/dist/index69.js.map +1 -1
  619. package/dist/index70.js +46 -11
  620. package/dist/index70.js.map +1 -1
  621. package/dist/index71.js +7 -53
  622. package/dist/index71.js.map +1 -1
  623. package/dist/index72.js +49 -5
  624. package/dist/index72.js.map +1 -1
  625. package/dist/index73.js +4 -8
  626. package/dist/index73.js.map +1 -1
  627. package/dist/index74.js +5 -5
  628. package/dist/index74.js.map +1 -1
  629. package/dist/index75.js +27 -46
  630. package/dist/index75.js.map +1 -1
  631. package/dist/index76.js +48 -204
  632. package/dist/index76.js.map +1 -1
  633. package/dist/index77.js +8 -21
  634. package/dist/index77.js.map +1 -1
  635. package/dist/index78.js +11 -24
  636. package/dist/index78.js.map +1 -1
  637. package/dist/index79.js +2 -400
  638. package/dist/index79.js.map +1 -1
  639. package/dist/index80.js +2 -47
  640. package/dist/index80.js.map +1 -1
  641. package/dist/index81.js +52 -604
  642. package/dist/index81.js.map +1 -1
  643. package/dist/index82.js +46 -5
  644. package/dist/index82.js.map +1 -1
  645. package/dist/index83.js +199 -62
  646. package/dist/index83.js.map +1 -1
  647. package/dist/index84.js +22 -2
  648. package/dist/index84.js.map +1 -1
  649. package/dist/index85.js +24 -363
  650. package/dist/index85.js.map +1 -1
  651. package/dist/index86.js +381 -243
  652. package/dist/index86.js.map +1 -1
  653. package/dist/index87.js +41 -55
  654. package/dist/index87.js.map +1 -1
  655. package/dist/index88.js +5 -46
  656. package/dist/index88.js.map +1 -1
  657. package/dist/index89.js +7 -169
  658. package/dist/index89.js.map +1 -1
  659. package/dist/index90.js +5 -109
  660. package/dist/index90.js.map +1 -1
  661. package/dist/index91.js +605 -24
  662. package/dist/index91.js.map +1 -1
  663. package/dist/index92.js +4 -8
  664. package/dist/index92.js.map +1 -1
  665. package/dist/index93.js +33 -4
  666. package/dist/index93.js.map +1 -1
  667. package/dist/index94.js +249 -5
  668. package/dist/index94.js.map +1 -1
  669. package/dist/index95.js +114 -4
  670. package/dist/index95.js.map +1 -1
  671. package/dist/index96.js +214 -461
  672. package/dist/index96.js.map +1 -1
  673. package/dist/index97.js +60 -179
  674. package/dist/index97.js.map +1 -1
  675. package/dist/index98.js +18 -105
  676. package/dist/index98.js.map +1 -1
  677. package/dist/index99.js +197 -250
  678. package/dist/index99.js.map +1 -1
  679. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index18.js","sources":["../src/components/HourPickerField/index.tsx"],"sourcesContent":["import { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport { createPortal } from \"react-dom\"\nimport { IMaskInput } from \"react-imask\"\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/Select\"\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\nexport type HourPickerOption = {\n value: string\n label: string\n disabled?: boolean\n description?: React.ReactNode\n}\n\nfunction pad2(value: number) {\n return String(value).padStart(2, \"0\")\n}\n\nfunction parseTimeInput(raw: string) {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(trimmed)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) {\n return null\n }\n\n return `${pad2(hours)}:${pad2(minutes)}`\n}\n\ntype ParsedTimeInputResult = {\n parsed: string\n selectableValue: string | null\n}\n\nfunction parseTimeInputWithSelectableOption(raw: string, options: HourPickerOption[]): ParsedTimeInputResult | null {\n const parsed = parseTimeInput(raw)\n if (!parsed) return null\n\n const parsedOption = options.find((option) => option.value === parsed)\n if (isOptionSelectable(parsedOption)) {\n return { parsed, selectableValue: parsed }\n }\n\n return { parsed, selectableValue: null }\n}\n\nfunction timeStringToMinutes(value: string) {\n const match = /^(\\d{2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n return hours * 60 + minutes\n}\n\nfunction isOptionSelectable(option: HourPickerOption | undefined) {\n if (!option) return false\n return !option.disabled\n}\n\nfunction findClosestSelectableOption(targetMinutes: number, options: HourPickerOption[]) {\n let bestOption: HourPickerOption | null = null\n let bestDiff = Number.POSITIVE_INFINITY\n let bestMinutes = Number.NEGATIVE_INFINITY\n\n for (const option of options) {\n if (!isOptionSelectable(option)) continue\n const optionMinutes = timeStringToMinutes(option.value)\n if (optionMinutes == null) continue\n\n const diff = Math.abs(optionMinutes - targetMinutes)\n if (diff < bestDiff || (diff === bestDiff && optionMinutes > bestMinutes)) {\n bestOption = option\n bestDiff = diff\n bestMinutes = optionMinutes\n }\n }\n\n return bestOption\n}\n\ntype HourPickerScrollButtonDirection = \"up\" | \"down\"\n\ntype HourPickerScrollButtonProps = {\n direction: HourPickerScrollButtonDirection\n viewportRef: React.RefObject<HTMLElement | null>\n speed?: number\n className?: string\n}\n\nfunction HourPickerScrollButton({\n direction,\n viewportRef,\n speed = 400,\n className,\n}: HourPickerScrollButtonProps) {\n const [disabled, setDisabled] = React.useState(true)\n const animationRef = React.useRef<number | undefined>(undefined)\n const lastTimeRef = React.useRef<number | undefined>(undefined)\n const isScrollingRef = React.useRef(false)\n\n const checkScrollability = React.useCallback(() => {\n const viewport = viewportRef.current\n if (!viewport) {\n setDisabled(true)\n return\n }\n\n const { scrollTop, scrollHeight, clientHeight } = viewport\n const tolerance = 2\n\n const canScrollUp = scrollTop > tolerance\n const canScrollDown = scrollTop < (scrollHeight - clientHeight - tolerance)\n const hasScrollableContent = scrollHeight > clientHeight + tolerance\n\n if (!hasScrollableContent) {\n setDisabled(true)\n return\n }\n\n const shouldDisable = direction === \"up\" ? !canScrollUp : !canScrollDown\n setDisabled(shouldDisable)\n }, [direction, viewportRef])\n\n React.useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n checkScrollability()\n\n const handleScroll = () => checkScrollability()\n const handleResize = () => checkScrollability()\n\n viewport.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(viewport)\n\n const mutationObserver = new MutationObserver(handleResize)\n mutationObserver.observe(viewport, { childList: true, subtree: true })\n\n return () => {\n viewport.removeEventListener(\"scroll\", handleScroll)\n resizeObserver.disconnect()\n mutationObserver.disconnect()\n }\n }, [viewportRef, checkScrollability])\n\n const stopScrolling = React.useCallback(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = undefined\n }\n isScrollingRef.current = false\n lastTimeRef.current = undefined\n }, [])\n\n const smoothScroll = React.useCallback(\n (currentTime: number) => {\n const viewport = viewportRef.current\n if (!viewport || disabled || !isScrollingRef.current) {\n stopScrolling()\n return\n }\n\n if (!lastTimeRef.current) {\n lastTimeRef.current = currentTime\n }\n\n const deltaTime = currentTime - lastTimeRef.current\n const distance = (speed * deltaTime) / 1000\n\n if (distance < 0.1) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n return\n }\n\n const oldScrollTop = viewport.scrollTop\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n\n let newScrollTop: number\n if (direction === \"up\") {\n newScrollTop = Math.max(0, oldScrollTop - distance)\n } else {\n newScrollTop = Math.min(maxScroll, oldScrollTop + distance)\n }\n\n viewport.scrollTop = newScrollTop\n\n lastTimeRef.current = currentTime\n\n const tolerance = 1\n const canContinue =\n direction === \"up\"\n ? newScrollTop > tolerance\n : newScrollTop < (maxScroll - tolerance)\n\n if (canContinue && Math.abs(newScrollTop - oldScrollTop) > 0.01) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n } else {\n stopScrolling()\n setTimeout(checkScrollability, 16)\n }\n },\n [checkScrollability, direction, disabled, speed, stopScrolling, viewportRef],\n )\n\n const startScrolling = React.useCallback(() => {\n if (disabled || !viewportRef.current || isScrollingRef.current) return\n\n isScrollingRef.current = true\n lastTimeRef.current = undefined\n animationRef.current = requestAnimationFrame(smoothScroll)\n }, [disabled, smoothScroll, viewportRef])\n\n React.useEffect(() => stopScrolling, [stopScrolling])\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center py-1 select-none\",\n disabled ? \"cursor-default opacity-40\" : \"cursor-pointer opacity-100 hover:bg-accent/20\",\n className\n )}\n onPointerEnter={() => {\n if (!disabled) startScrolling()\n }}\n onPointerMove={() => {\n if (!disabled && !isScrollingRef.current) startScrolling()\n }}\n onPointerLeave={() => {\n stopScrolling()\n }}\n >\n {direction === \"up\"\n ? <ChevronUp aria-hidden className=\"h-4 w-4 opacity-50\" />\n : <ChevronDown aria-hidden className=\"h-4 w-4 opacity-50\" />}\n </div>\n )\n}\n\nexport type HourPickerInputProps = {\n id?: string\n value: string | null\n onChange: (value: string | null) => void\n onValueUpdate?: (value: string | null) => void\n options: HourPickerOption[]\n placeholder?: string\n className?: string\n inputClassName?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n triggerTestId?: string\n contentTestId?: string\n isHydrated?: boolean\n}\n\nexport function HourPickerInput({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerInputProps) {\n const reactId = React.useId()\n const triggerId = id ?? `hours-picker-${reactId}`\n const triggerInputRef = React.useRef<HTMLInputElement | null>(null)\n const setTriggerDraftValueRef = React.useRef<((value: string) => void) | null>(null)\n const highlightedValueRef = React.useRef<string | null>(null)\n const keyboardNavigationActiveRef = React.useRef(false)\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const desktopPopoverRef = React.useRef<HTMLDivElement | null>(null)\n const desktopContentRef = React.useRef<HTMLDivElement | null>(null)\n const [desktopPopoverPosition, setDesktopPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n width: 0,\n }))\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n\n const useIsomorphicLayoutEffect = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect\n\n const updateHighlightedValue = React.useCallback((next: string | null) => {\n highlightedValueRef.current = next\n setHighlightedValue(next)\n }, [])\n\n const markKeyboardNavigation = React.useCallback(() => {\n keyboardNavigationActiveRef.current = true\n }, [])\n\n React.useEffect(() => {\n if (!open) return\n\n const currentOption = options.find((option) => option.value === value)\n if (currentOption && isOptionSelectable(currentOption)) {\n updateHighlightedValue(currentOption.value)\n return\n }\n\n const firstEnabled = options.find((option) => isOptionSelectable(option))\n updateHighlightedValue(firstEnabled?.value ?? null)\n }, [open, options, updateHighlightedValue, value])\n\n const updateValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n return\n }\n\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n return\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n const commitValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n React.useEffect(() => {\n if (!open) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) {\n return\n }\n\n const container = containerRef.current\n if (!container) {\n return\n }\n\n if (container.contains(target)) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (popover?.contains(target)) {\n return\n }\n\n setOpen(false)\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown, true)\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown, true)\n }\n }, [open, setOpen])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (!popover) {\n return\n }\n\n const handleWheel = (event: WheelEvent) => {\n const viewport = desktopContentRef.current\n if (!viewport) {\n return\n }\n\n const deltaY = event.deltaY\n if (deltaY === 0) {\n return\n }\n\n const maxScrollTop = Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n const atTop = viewport.scrollTop <= 0\n const atBottom = viewport.scrollTop >= maxScrollTop\n\n const target = event.target\n const isWheelOverViewport = target instanceof Node && viewport.contains(target)\n\n if (isWheelOverViewport) {\n if ((deltaY < 0 && atTop) || (deltaY > 0 && atBottom)) {\n event.preventDefault()\n }\n return\n }\n\n event.preventDefault()\n const nextScrollTop = Math.min(maxScrollTop, Math.max(0, viewport.scrollTop + deltaY))\n viewport.scrollTop = nextScrollTop\n }\n\n popover.addEventListener(\"wheel\", handleWheel, { passive: false })\n return () => {\n popover.removeEventListener(\"wheel\", handleWheel)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (openProp !== undefined && !onOpenChange) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const trigger = triggerInputRef.current\n if (!(trigger instanceof HTMLElement)) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(trigger)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [onOpenChange, open, openProp, setOpen])\n\n const updateDesktopPopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n\n const trigger = triggerInputRef.current\n const popover = desktopPopoverRef.current\n if (!(trigger instanceof HTMLElement) || !popover) return\n\n const rect = trigger.getBoundingClientRect()\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n const width = rect.width\n\n let left = rect.left\n if (left + width > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - width - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setDesktopPopoverPosition({ left, top, width })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updateDesktopPopoverPosition()\n const rafId = window.requestAnimationFrame(updateDesktopPopoverPosition)\n\n window.addEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.addEventListener(\"resize\", updateDesktopPopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.removeEventListener(\"resize\", updateDesktopPopoverPosition)\n }\n }, [disabled, open, updateDesktopPopoverPosition])\n\n React.useEffect(() => {\n if (!open) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const run = () => {\n const selected = viewport.querySelector(\"[role=\\\"option\\\"][data-state=\\\"checked\\\"]\")\n if (selected instanceof HTMLElement) {\n const padding = 8\n const targetTop = selected.offsetTop - padding\n const targetBottom = selected.offsetTop + selected.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n return\n }\n\n const all = Array.from(viewport.querySelectorAll(\"[role=\\\"option\\\"]\")) as HTMLElement[]\n if (!all.length) return\n\n let firstEnabled: HTMLElement | undefined\n let lastDisabledBefore: HTMLElement | undefined\n\n for (const el of all) {\n const isDisabled = el.hasAttribute(\"data-disabled\")\n if (!isDisabled) {\n firstEnabled = el\n break\n }\n lastDisabledBefore = el\n }\n\n if (!firstEnabled) return\n\n const target = lastDisabledBefore ? lastDisabledBefore : firstEnabled\n\n const offset = Math.max(0, target.offsetTop - 8)\n viewport.scrollTop = offset\n }\n\n const raf = requestAnimationFrame(run)\n return () => cancelAnimationFrame(raf)\n }, [open, options])\n\n React.useEffect(() => {\n if (!open) return\n if (!highlightedValue) return\n if (!keyboardNavigationActiveRef.current) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const target = viewport.querySelector(`[role=\"option\"][data-value=\"${highlightedValue}\"]`)\n if (!(target instanceof HTMLElement)) return\n\n const padding = 8\n const targetTop = target.offsetTop - padding\n const targetBottom = target.offsetTop + target.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n }, [highlightedValue, open])\n\n return (\n <div\n data-slot=\"hours-picker-input\"\n className={cn(\"w-[150px]\", className)}\n ref={containerRef}\n >\n <div className=\"relative\">\n <HourPickerMaskedSelectTrigger\n id={triggerId}\n placeholder={placeholder}\n value={value}\n onValueUpdate={updateValue}\n onCommit={commitValue}\n options={options}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n setOpen={setOpen}\n inputClassName={inputClassName}\n triggerTestId={triggerTestId}\n isHydrated={isHydrated}\n highlightedValueRef={highlightedValueRef}\n setHighlightedValue={updateHighlightedValue}\n markKeyboardNavigation={markKeyboardNavigation}\n inputRef={(node) => {\n triggerInputRef.current = node\n }}\n setDraftValueRef={setTriggerDraftValueRef}\n />\n\n {open ? (() => {\n const popover = (\n <DismissableLayerBranch>\n <div\n ref={desktopPopoverRef}\n data-testid={contentTestId}\n data-state=\"open\"\n className={cn(\n \"pointer-events-auto fixed z-[60] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n )}\n style={{\n left: desktopPopoverPosition.left,\n top: desktopPopoverPosition.top,\n width: desktopPopoverPosition.width,\n }}\n >\n <HourPickerScrollButton\n direction=\"up\"\n viewportRef={desktopContentRef}\n />\n\n <div\n ref={desktopContentRef}\n role=\"listbox\"\n className=\"max-h-64 overflow-y-auto p-1 [overscroll-behavior:contain] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\"\n >\n {options.map((option) => {\n const isChecked = option.value === value\n\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isChecked}\n data-value={option.value}\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n data-disabled={option.disabled ? \"\" : undefined}\n className={cn(\n \"relative flex w-full select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none cursor-pointer\",\n option.disabled && \"pointer-events-none opacity-50\",\n highlightedValue === option.value && \"bg-accent text-accent-foreground\",\n )}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (option.disabled) return\n\n setTriggerDraftValueRef.current?.(option.value)\n updateHighlightedValue(option.value)\n triggerInputRef.current?.focus({ preventScroll: true })\n commitValue(option.value)\n setOpen(false)\n }}\n onPointerEnter={() => {\n if (keyboardNavigationActiveRef.current) return\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n onPointerMove={(event) => {\n if (keyboardNavigationActiveRef.current && event.movementX === 0 && event.movementY === 0) {\n return\n }\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {isChecked ? <Check aria-hidden className=\"h-4 w-4\" /> : null}\n </span>\n\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n\n <HourPickerScrollButton\n direction=\"down\"\n viewportRef={desktopContentRef}\n />\n </div>\n </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })() : null}\n </div>\n </div>\n )\n}\n\nHourPickerInput.displayName = \"HourPickerInput\"\n\nexport type HourPickerFieldProps = HourPickerInputProps\n\nfunction HourPickerSelectField({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n open,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerFieldProps) {\n const commitValue = React.useCallback(\n (next: string) => {\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n return (\n <div data-slot=\"hours-picker-field\" className={cn(\"w-[150px]\", className)}>\n <Select\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n value={value ?? \"\"}\n onValueChange={(next) => commitValue(next)}\n >\n <SelectTrigger\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n className={cn(\n \"transition-colors hover:bg-accent hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n\n <SelectContent\n data-testid={contentTestId}\n autoScroll={\"firstEnabledWithContext\"}\n className=\"max-h-64 overflow-y-auto\"\n >\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"block text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )\n}\n\nexport function HourPickerField(props: HourPickerFieldProps) {\n const isTouchDevice = useIsTouchDevice()\n\n if (isTouchDevice) {\n return <HourPickerSelectField {...props} />\n }\n\n return <HourPickerInput {...props} />\n}\n\nHourPickerField.displayName = \"HourPickerField\"\n\ntype HourPickerMaskedSelectTriggerProps = {\n id: string\n placeholder: string\n value: string | null\n onValueUpdate: (value: string | null) => void\n onCommit: (value: string | null) => void\n options: HourPickerOption[]\n disabled?: boolean\n readOnly?: boolean\n open: boolean\n setOpen: (open: boolean) => void\n inputClassName?: string\n triggerTestId?: string\n isHydrated?: boolean\n highlightedValueRef: React.MutableRefObject<string | null>\n setHighlightedValue: (value: string | null) => void\n markKeyboardNavigation: () => void\n inputRef: (node: HTMLInputElement | null) => void\n setDraftValueRef: React.MutableRefObject<((value: string) => void) | null>\n}\n\nfunction HourPickerMaskedSelectTrigger({\n id,\n placeholder,\n value,\n onValueUpdate,\n onCommit,\n options,\n disabled,\n readOnly,\n open,\n setOpen,\n inputClassName,\n triggerTestId,\n isHydrated,\n highlightedValueRef,\n setHighlightedValue,\n markKeyboardNavigation,\n inputRef,\n setDraftValueRef,\n}: HourPickerMaskedSelectTriggerProps) {\n const isEditingRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const ignoreNextMaskCommitValueRef = React.useRef<string | null>(null)\n\n const [draft, setDraft] = React.useState(() => (value ? value : \"\"))\n\n React.useEffect(() => {\n setDraftValueRef.current = (nextValue) => {\n setDraft(nextValue)\n }\n return () => {\n setDraftValueRef.current = null\n }\n }, [setDraftValueRef])\n\n const moveSelection = React.useCallback(\n (direction: -1 | 1) => {\n const base = highlightedValueRef.current ?? value ?? \"\"\n\n let baseIndex = options.findIndex((option) => option.value === base)\n if (baseIndex === -1) {\n baseIndex = direction === 1 ? -1 : options.length\n }\n\n for (let nextIndex = baseIndex + direction; nextIndex >= 0 && nextIndex < options.length; nextIndex += direction) {\n const nextOption = options[nextIndex]\n if (!isOptionSelectable(nextOption)) continue\n\n setHighlightedValue(nextOption.value)\n ignoreNextMaskCommitValueRef.current = nextOption.value\n setDraft(nextOption.value)\n onValueUpdate(nextOption.value)\n return\n }\n },\n [highlightedValueRef, onValueUpdate, options, setHighlightedValue, value],\n )\n\n React.useEffect(() => {\n if (isEditingRef.current) return\n setDraft(value ? value : \"\")\n }, [value])\n\n const triggerClassName = cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 pr-10 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n !draft && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )\n\n return (\n <div className=\"relative group\">\n <IMaskInput\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n type=\"text\"\n disabled={disabled}\n readOnly={readOnly}\n inputRef={inputRef}\n autoComplete={\"off\"}\n mask={[\n { mask: \"00:00\", lazy: true },\n { mask: \"0:00\", lazy: true },\n ]}\n dispatch={(appended, dynamicMasked) => {\n const digits = (dynamicMasked.value + appended).replace(/\\D/g, \"\")\n if (digits.length <= 2) return dynamicMasked.compiledMasks[0]\n if (digits.length >= 4) return dynamicMasked.compiledMasks[0]\n\n const hourPrefix = pad2(Number(digits.slice(0, 2)))\n const hasTwoDigitHour = options.some((option) => option.value.startsWith(`${hourPrefix}:`))\n if (hasTwoDigitHour) return dynamicMasked.compiledMasks[0]\n\n return dynamicMasked.compiledMasks[1]\n }}\n placeholder={placeholder}\n value={draft}\n className={triggerClassName}\n onAccept={(accepted) => {\n const nextText = typeof accepted === \"string\" ? accepted : String(accepted ?? \"\")\n setDraft(nextText)\n\n if (nextText.replace(/\\D/g, \"\").length !== 0) {\n return\n }\n\n if (value) {\n onCommit(null)\n }\n }}\n onComplete={(completed) => {\n const nextText = typeof completed === \"string\" ? completed : String(completed ?? \"\")\n if (ignoreNextMaskCommitValueRef.current === nextText) {\n ignoreNextMaskCommitValueRef.current = null\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(nextText, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n\n if (value === resolved.selectableValue) {\n return\n }\n\n onCommit(resolved.selectableValue)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n setHighlightedValue(closestOption.value)\n }}\n onPointerDown={() => {\n pointerDownOnInputRef.current = true\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current = typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onClick={() => {\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n if (disabled) {\n return\n }\n\n if (event.key === \"Tab\" && open && !event.defaultPrevented) {\n setOpen(false)\n return\n }\n\n if (event.key === \"Escape\") {\n if (!open) {\n return\n }\n event.preventDefault()\n setOpen(false)\n return\n }\n\n if (!open && !event.defaultPrevented) {\n const shouldReopen =\n (event.key.length === 1 || event.key === \"Backspace\" || event.key === \"Delete\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n markKeyboardNavigation()\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n return\n }\n\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1)\n return\n }\n\n if (event.key === \"Enter\") {\n markKeyboardNavigation()\n const resolved = parseTimeInputWithSelectableOption(draft, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n setOpen(false)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(closestOption.value)\n setDraft(closestOption.value)\n if (value !== closestOption.value) {\n onCommit(closestOption.value)\n }\n setOpen(false)\n return\n }\n }}\n onFocus={(event) => {\n const shouldSelectAll = !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isEditingRef.current = true\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n\n if (disabled) {\n return\n }\n\n if (open) {\n return\n }\n\n setOpen(true)\n }}\n onBlur={() => {\n isEditingRef.current = false\n\n const trimmed = draft.trim()\n if (!trimmed) {\n setDraft(value ? value : \"\")\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(trimmed, options)\n if (!resolved) {\n setDraft(value ? value : \"\")\n return\n }\n\n if (!resolved.selectableValue) {\n setDraft(value ? value : \"\")\n return\n }\n\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n }}\n />\n\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n data-slot=\"hours-picker-input-toggle\"\n className={cn(\n \"absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n )}\n aria-label={open ? \"Close time picker\" : \"Open time picker\"}\n onPointerDown={(event) => {\n event.preventDefault()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (disabled) return\n setOpen(!open)\n }}\n >\n <ChevronDown aria-hidden className=\"size-4\" />\n </button>\n </div>\n )\n}\n"],"names":["pad2","value","parseTimeInput","raw","trimmed","match","hours","minutes","parseTimeInputWithSelectableOption","options","parsed","parsedOption","option","isOptionSelectable","timeStringToMinutes","findClosestSelectableOption","targetMinutes","bestOption","bestDiff","bestMinutes","optionMinutes","diff","HourPickerScrollButton","direction","viewportRef","speed","className","disabled","setDisabled","React","animationRef","lastTimeRef","isScrollingRef","checkScrollability","viewport","scrollTop","scrollHeight","clientHeight","tolerance","canScrollUp","canScrollDown","handleScroll","handleResize","resizeObserver","mutationObserver","stopScrolling","smoothScroll","currentTime","deltaTime","distance","oldScrollTop","maxScroll","newScrollTop","startScrolling","jsx","cn","ChevronUp","ChevronDown","HourPickerInput","id","onChange","onValueUpdate","placeholder","inputClassName","readOnly","openProp","onOpenChange","triggerTestId","contentTestId","isHydrated","reactId","triggerId","triggerInputRef","setTriggerDraftValueRef","highlightedValueRef","keyboardNavigationActiveRef","highlightedValue","setHighlightedValue","containerRef","desktopPopoverRef","desktopContentRef","desktopPopoverPosition","setDesktopPopoverPosition","uncontrolledOpen","setUncontrolledOpen","open","setOpen","useIsomorphicLayoutEffect","updateHighlightedValue","next","markKeyboardNavigation","currentOption","firstEnabled","updateValue","matchingOption","commitValue","handlePointerDown","event","target","container","popover","handleWheel","deltaY","maxScrollTop","atTop","atBottom","nextScrollTop","trigger","isActive","observer","entries","entry","updateDesktopPopoverPosition","rect","popoverHeight","viewportWidth","viewportHeight","padding","width","left","top","overflowBottom","aboveTop","rafId","raf","selected","targetTop","targetBottom","viewportBottom","all","lastDisabledBefore","el","offset","jsxs","HourPickerMaskedSelectTrigger","node","DismissableLayerBranch","isChecked","Check","createPortal","HourPickerSelectField","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","HourPickerField","props","useIsTouchDevice","onCommit","inputRef","setDraftValueRef","isEditingRef","pointerDownOnInputRef","inputWasFocusedOnPointerDownRef","ignoreNextMaskCommitValueRef","draft","setDraft","nextValue","moveSelection","base","baseIndex","nextIndex","nextOption","triggerClassName","IMaskInput","appended","dynamicMasked","digits","hourPrefix","accepted","nextText","completed","resolved","closestOption","shouldSelectAll","element"],"mappings":"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"}
1
+ {"version":3,"file":"index18.js","sources":["../src/components/HourPickerField/index.tsx"],"sourcesContent":["import { Check, ChevronDown, ChevronUp } from \"lucide-react\"\nimport * as React from \"react\"\nimport { DismissableLayerBranch } from \"@radix-ui/react-dismissable-layer\"\nimport { createPortal } from \"react-dom\"\nimport { IMaskInput } from \"react-imask/esm\"\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/components/Select\"\nimport { useIsTouchDevice } from \"@/helpers/useIsTouchDevice\"\nimport { cn } from \"@/lib/utils\"\n\n\nexport type HourPickerOption = {\n value: string\n label: string\n disabled?: boolean\n description?: React.ReactNode\n}\n\nfunction pad2(value: number) {\n return String(value).padStart(2, \"0\")\n}\n\nfunction parseTimeInput(raw: string) {\n const trimmed = raw.trim()\n if (!trimmed) return null\n\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(trimmed)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n if (hours < 0 || hours > 23 || minutes < 0 || minutes > 59) {\n return null\n }\n\n return `${pad2(hours)}:${pad2(minutes)}`\n}\n\ntype ParsedTimeInputResult = {\n parsed: string\n selectableValue: string | null\n}\n\nfunction parseTimeInputWithSelectableOption(raw: string, options: HourPickerOption[]): ParsedTimeInputResult | null {\n const parsed = parseTimeInput(raw)\n if (!parsed) return null\n\n const parsedOption = options.find((option) => option.value === parsed)\n if (isOptionSelectable(parsedOption)) {\n return { parsed, selectableValue: parsed }\n }\n\n return { parsed, selectableValue: null }\n}\n\nfunction timeStringToMinutes(value: string) {\n const match = /^(\\d{2}):(\\d{2})$/.exec(value)\n if (!match) {\n return null\n }\n\n const hours = Number(match[1])\n const minutes = Number(match[2])\n\n if (!Number.isFinite(hours) || !Number.isFinite(minutes)) {\n return null\n }\n\n return hours * 60 + minutes\n}\n\nfunction isOptionSelectable(option: HourPickerOption | undefined) {\n if (!option) return false\n return !option.disabled\n}\n\nfunction findClosestSelectableOption(targetMinutes: number, options: HourPickerOption[]) {\n let bestOption: HourPickerOption | null = null\n let bestDiff = Number.POSITIVE_INFINITY\n let bestMinutes = Number.NEGATIVE_INFINITY\n\n for (const option of options) {\n if (!isOptionSelectable(option)) continue\n const optionMinutes = timeStringToMinutes(option.value)\n if (optionMinutes == null) continue\n\n const diff = Math.abs(optionMinutes - targetMinutes)\n if (diff < bestDiff || (diff === bestDiff && optionMinutes > bestMinutes)) {\n bestOption = option\n bestDiff = diff\n bestMinutes = optionMinutes\n }\n }\n\n return bestOption\n}\n\ntype HourPickerScrollButtonDirection = \"up\" | \"down\"\n\ntype HourPickerScrollButtonProps = {\n direction: HourPickerScrollButtonDirection\n viewportRef: React.RefObject<HTMLElement | null>\n speed?: number\n className?: string\n}\n\nfunction HourPickerScrollButton({\n direction,\n viewportRef,\n speed = 400,\n className,\n}: HourPickerScrollButtonProps) {\n const [disabled, setDisabled] = React.useState(true)\n const animationRef = React.useRef<number | undefined>(undefined)\n const lastTimeRef = React.useRef<number | undefined>(undefined)\n const isScrollingRef = React.useRef(false)\n\n const checkScrollability = React.useCallback(() => {\n const viewport = viewportRef.current\n if (!viewport) {\n setDisabled(true)\n return\n }\n\n const { scrollTop, scrollHeight, clientHeight } = viewport\n const tolerance = 2\n\n const canScrollUp = scrollTop > tolerance\n const canScrollDown = scrollTop < (scrollHeight - clientHeight - tolerance)\n const hasScrollableContent = scrollHeight > clientHeight + tolerance\n\n if (!hasScrollableContent) {\n setDisabled(true)\n return\n }\n\n const shouldDisable = direction === \"up\" ? !canScrollUp : !canScrollDown\n setDisabled(shouldDisable)\n }, [direction, viewportRef])\n\n React.useEffect(() => {\n const viewport = viewportRef.current\n if (!viewport) return\n\n checkScrollability()\n\n const handleScroll = () => checkScrollability()\n const handleResize = () => checkScrollability()\n\n viewport.addEventListener(\"scroll\", handleScroll, { passive: true })\n\n const resizeObserver = new ResizeObserver(handleResize)\n resizeObserver.observe(viewport)\n\n const mutationObserver = new MutationObserver(handleResize)\n mutationObserver.observe(viewport, { childList: true, subtree: true })\n\n return () => {\n viewport.removeEventListener(\"scroll\", handleScroll)\n resizeObserver.disconnect()\n mutationObserver.disconnect()\n }\n }, [viewportRef, checkScrollability])\n\n const stopScrolling = React.useCallback(() => {\n if (animationRef.current) {\n cancelAnimationFrame(animationRef.current)\n animationRef.current = undefined\n }\n isScrollingRef.current = false\n lastTimeRef.current = undefined\n }, [])\n\n const smoothScroll = React.useCallback(\n (currentTime: number) => {\n const viewport = viewportRef.current\n if (!viewport || disabled || !isScrollingRef.current) {\n stopScrolling()\n return\n }\n\n if (!lastTimeRef.current) {\n lastTimeRef.current = currentTime\n }\n\n const deltaTime = currentTime - lastTimeRef.current\n const distance = (speed * deltaTime) / 1000\n\n if (distance < 0.1) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n return\n }\n\n const oldScrollTop = viewport.scrollTop\n const maxScroll = viewport.scrollHeight - viewport.clientHeight\n\n let newScrollTop: number\n if (direction === \"up\") {\n newScrollTop = Math.max(0, oldScrollTop - distance)\n } else {\n newScrollTop = Math.min(maxScroll, oldScrollTop + distance)\n }\n\n viewport.scrollTop = newScrollTop\n\n lastTimeRef.current = currentTime\n\n const tolerance = 1\n const canContinue =\n direction === \"up\"\n ? newScrollTop > tolerance\n : newScrollTop < (maxScroll - tolerance)\n\n if (canContinue && Math.abs(newScrollTop - oldScrollTop) > 0.01) {\n animationRef.current = requestAnimationFrame(smoothScroll)\n } else {\n stopScrolling()\n setTimeout(checkScrollability, 16)\n }\n },\n [checkScrollability, direction, disabled, speed, stopScrolling, viewportRef],\n )\n\n const startScrolling = React.useCallback(() => {\n if (disabled || !viewportRef.current || isScrollingRef.current) return\n\n isScrollingRef.current = true\n lastTimeRef.current = undefined\n animationRef.current = requestAnimationFrame(smoothScroll)\n }, [disabled, smoothScroll, viewportRef])\n\n React.useEffect(() => stopScrolling, [stopScrolling])\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center py-1 select-none\",\n disabled ? \"cursor-default opacity-40\" : \"cursor-pointer opacity-100 hover:bg-accent/20\",\n className\n )}\n onPointerEnter={() => {\n if (!disabled) startScrolling()\n }}\n onPointerMove={() => {\n if (!disabled && !isScrollingRef.current) startScrolling()\n }}\n onPointerLeave={() => {\n stopScrolling()\n }}\n >\n {direction === \"up\"\n ? <ChevronUp aria-hidden className=\"h-4 w-4 opacity-50\" />\n : <ChevronDown aria-hidden className=\"h-4 w-4 opacity-50\" />}\n </div>\n )\n}\n\nexport type HourPickerInputProps = {\n id?: string\n value: string | null\n onChange: (value: string | null) => void\n onValueUpdate?: (value: string | null) => void\n options: HourPickerOption[]\n placeholder?: string\n className?: string\n inputClassName?: string\n disabled?: boolean\n readOnly?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n triggerTestId?: string\n contentTestId?: string\n isHydrated?: boolean\n}\n\nexport function HourPickerInput({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n readOnly,\n open: openProp,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerInputProps) {\n const reactId = React.useId()\n const triggerId = id ?? `hours-picker-${reactId}`\n const triggerInputRef = React.useRef<HTMLInputElement | null>(null)\n const setTriggerDraftValueRef = React.useRef<((value: string) => void) | null>(null)\n const highlightedValueRef = React.useRef<string | null>(null)\n const keyboardNavigationActiveRef = React.useRef(false)\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null)\n const containerRef = React.useRef<HTMLDivElement | null>(null)\n const desktopPopoverRef = React.useRef<HTMLDivElement | null>(null)\n const desktopContentRef = React.useRef<HTMLDivElement | null>(null)\n const [desktopPopoverPosition, setDesktopPopoverPosition] = React.useState(() => ({\n left: 0,\n top: 0,\n width: 0,\n }))\n\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(false)\n const open = openProp ?? uncontrolledOpen\n const setOpen = onOpenChange ?? setUncontrolledOpen\n\n const useIsomorphicLayoutEffect = typeof window === \"undefined\" ? React.useEffect : React.useLayoutEffect\n\n const updateHighlightedValue = React.useCallback((next: string | null) => {\n highlightedValueRef.current = next\n setHighlightedValue(next)\n }, [])\n\n const markKeyboardNavigation = React.useCallback(() => {\n keyboardNavigationActiveRef.current = true\n }, [])\n\n React.useEffect(() => {\n if (!open) return\n\n const currentOption = options.find((option) => option.value === value)\n if (currentOption && isOptionSelectable(currentOption)) {\n updateHighlightedValue(currentOption.value)\n return\n }\n\n const firstEnabled = options.find((option) => isOptionSelectable(option))\n updateHighlightedValue(firstEnabled?.value ?? null)\n }, [open, options, updateHighlightedValue, value])\n\n const updateValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n return\n }\n\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n return\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n const commitValue = React.useCallback(\n (next: string | null) => {\n if (next === null) {\n if (onValueUpdate) {\n onValueUpdate(null)\n }\n onChange(null)\n return\n }\n\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n React.useEffect(() => {\n if (!open) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) {\n return\n }\n\n const container = containerRef.current\n if (!container) {\n return\n }\n\n if (container.contains(target)) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (popover?.contains(target)) {\n return\n }\n\n setOpen(false)\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown, true)\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown, true)\n }\n }, [open, setOpen])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n\n const popover = desktopPopoverRef.current\n if (!popover) {\n return\n }\n\n const handleWheel = (event: WheelEvent) => {\n const viewport = desktopContentRef.current\n if (!viewport) {\n return\n }\n\n const deltaY = event.deltaY\n if (deltaY === 0) {\n return\n }\n\n const maxScrollTop = Math.max(0, viewport.scrollHeight - viewport.clientHeight)\n const atTop = viewport.scrollTop <= 0\n const atBottom = viewport.scrollTop >= maxScrollTop\n\n const target = event.target\n const isWheelOverViewport = target instanceof Node && viewport.contains(target)\n\n if (isWheelOverViewport) {\n if ((deltaY < 0 && atTop) || (deltaY > 0 && atBottom)) {\n event.preventDefault()\n }\n return\n }\n\n event.preventDefault()\n const nextScrollTop = Math.min(maxScrollTop, Math.max(0, viewport.scrollTop + deltaY))\n viewport.scrollTop = nextScrollTop\n }\n\n popover.addEventListener(\"wheel\", handleWheel, { passive: false })\n return () => {\n popover.removeEventListener(\"wheel\", handleWheel)\n }\n }, [open])\n\n React.useEffect(() => {\n if (!open) {\n return\n }\n if (openProp !== undefined && !onOpenChange) {\n return\n }\n if (typeof window === \"undefined\") {\n return\n }\n if (!(\"IntersectionObserver\" in window)) {\n return\n }\n\n const trigger = triggerInputRef.current\n if (!(trigger instanceof HTMLElement)) {\n return\n }\n\n let isActive = true\n const observer = new IntersectionObserver(entries => {\n if (!isActive) {\n return\n }\n const entry = entries[0]\n if (entry && !entry.isIntersecting) {\n setOpen(false)\n }\n })\n observer.observe(trigger)\n return () => {\n isActive = false\n observer.disconnect()\n }\n }, [onOpenChange, open, openProp, setOpen])\n\n const updateDesktopPopoverPosition = React.useCallback(() => {\n if (typeof window === \"undefined\") return\n\n const trigger = triggerInputRef.current\n const popover = desktopPopoverRef.current\n if (!(trigger instanceof HTMLElement) || !popover) return\n\n const rect = trigger.getBoundingClientRect()\n const popoverHeight = popover.offsetHeight\n const viewportWidth = window.innerWidth ?? 0\n const viewportHeight = window.innerHeight ?? 0\n const padding = 8\n\n const width = rect.width\n\n let left = rect.left\n if (left + width > viewportWidth - padding) {\n left = Math.max(padding, viewportWidth - width - padding)\n }\n if (left < padding) {\n left = padding\n }\n\n let top = rect.bottom + padding\n const overflowBottom = top + popoverHeight > viewportHeight - padding\n const aboveTop = rect.top - popoverHeight - padding\n if (overflowBottom && aboveTop >= padding) {\n top = aboveTop\n }\n\n if (top < padding) {\n top = padding\n }\n if (top + popoverHeight > viewportHeight - padding) {\n top = Math.max(padding, viewportHeight - popoverHeight - padding)\n }\n\n setDesktopPopoverPosition({ left, top, width })\n }, [])\n\n useIsomorphicLayoutEffect(() => {\n if (!open || disabled) return\n if (typeof window === \"undefined\") return\n\n updateDesktopPopoverPosition()\n const rafId = window.requestAnimationFrame(updateDesktopPopoverPosition)\n\n window.addEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.addEventListener(\"resize\", updateDesktopPopoverPosition)\n return () => {\n window.cancelAnimationFrame(rafId)\n window.removeEventListener(\"scroll\", updateDesktopPopoverPosition, true)\n window.removeEventListener(\"resize\", updateDesktopPopoverPosition)\n }\n }, [disabled, open, updateDesktopPopoverPosition])\n\n React.useEffect(() => {\n if (!open) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const run = () => {\n const selected = viewport.querySelector(\"[role=\\\"option\\\"][data-state=\\\"checked\\\"]\")\n if (selected instanceof HTMLElement) {\n const padding = 8\n const targetTop = selected.offsetTop - padding\n const targetBottom = selected.offsetTop + selected.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n return\n }\n\n const all = Array.from(viewport.querySelectorAll(\"[role=\\\"option\\\"]\")) as HTMLElement[]\n if (!all.length) return\n\n let firstEnabled: HTMLElement | undefined\n let lastDisabledBefore: HTMLElement | undefined\n\n for (const el of all) {\n const isDisabled = el.hasAttribute(\"data-disabled\")\n if (!isDisabled) {\n firstEnabled = el\n break\n }\n lastDisabledBefore = el\n }\n\n if (!firstEnabled) return\n\n const target = lastDisabledBefore ? lastDisabledBefore : firstEnabled\n\n const offset = Math.max(0, target.offsetTop - 8)\n viewport.scrollTop = offset\n }\n\n const raf = requestAnimationFrame(run)\n return () => cancelAnimationFrame(raf)\n }, [open, options])\n\n React.useEffect(() => {\n if (!open) return\n if (!highlightedValue) return\n if (!keyboardNavigationActiveRef.current) return\n\n const viewport = desktopContentRef.current\n if (!viewport) return\n\n const target = viewport.querySelector(`[role=\"option\"][data-value=\"${highlightedValue}\"]`)\n if (!(target instanceof HTMLElement)) return\n\n const padding = 8\n const targetTop = target.offsetTop - padding\n const targetBottom = target.offsetTop + target.offsetHeight + padding\n\n if (targetTop < viewport.scrollTop) {\n viewport.scrollTop = Math.max(0, targetTop)\n return\n }\n\n const viewportBottom = viewport.scrollTop + viewport.clientHeight\n if (targetBottom > viewportBottom) {\n viewport.scrollTop = Math.max(0, targetBottom - viewport.clientHeight)\n }\n }, [highlightedValue, open])\n\n return (\n <div\n data-slot=\"hours-picker-input\"\n className={cn(\"w-[150px]\", className)}\n ref={containerRef}\n >\n <div className=\"relative\">\n <HourPickerMaskedSelectTrigger\n id={triggerId}\n placeholder={placeholder}\n value={value}\n onValueUpdate={updateValue}\n onCommit={commitValue}\n options={options}\n disabled={disabled}\n readOnly={readOnly}\n open={open}\n setOpen={setOpen}\n inputClassName={inputClassName}\n triggerTestId={triggerTestId}\n isHydrated={isHydrated}\n highlightedValueRef={highlightedValueRef}\n setHighlightedValue={updateHighlightedValue}\n markKeyboardNavigation={markKeyboardNavigation}\n inputRef={(node) => {\n triggerInputRef.current = node\n }}\n setDraftValueRef={setTriggerDraftValueRef}\n />\n\n {open ? (() => {\n const popover = (\n <DismissableLayerBranch>\n <div\n ref={desktopPopoverRef}\n data-testid={contentTestId}\n data-state=\"open\"\n className={cn(\n \"pointer-events-auto fixed z-[60] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95\",\n )}\n style={{\n left: desktopPopoverPosition.left,\n top: desktopPopoverPosition.top,\n width: desktopPopoverPosition.width,\n }}\n >\n <HourPickerScrollButton\n direction=\"up\"\n viewportRef={desktopContentRef}\n />\n\n <div\n ref={desktopContentRef}\n role=\"listbox\"\n className=\"max-h-64 overflow-y-auto p-1 [overscroll-behavior:contain] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden\"\n >\n {options.map((option) => {\n const isChecked = option.value === value\n\n return (\n <div\n key={option.value}\n role=\"option\"\n aria-selected={isChecked}\n data-value={option.value}\n data-state={isChecked ? \"checked\" : \"unchecked\"}\n data-disabled={option.disabled ? \"\" : undefined}\n className={cn(\n \"relative flex w-full select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none cursor-pointer\",\n option.disabled && \"pointer-events-none opacity-50\",\n highlightedValue === option.value && \"bg-accent text-accent-foreground\",\n )}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (option.disabled) return\n\n setTriggerDraftValueRef.current?.(option.value)\n updateHighlightedValue(option.value)\n triggerInputRef.current?.focus({ preventScroll: true })\n commitValue(option.value)\n setOpen(false)\n }}\n onPointerEnter={() => {\n if (keyboardNavigationActiveRef.current) return\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n onPointerMove={(event) => {\n if (keyboardNavigationActiveRef.current && event.movementX === 0 && event.movementY === 0) {\n return\n }\n keyboardNavigationActiveRef.current = false\n updateHighlightedValue(option.value)\n }}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n {isChecked ? <Check aria-hidden className=\"h-4 w-4\" /> : null}\n </span>\n\n <div className=\"flex flex-col\">\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </div>\n </div>\n )\n })}\n </div>\n\n <HourPickerScrollButton\n direction=\"down\"\n viewportRef={desktopContentRef}\n />\n </div>\n </DismissableLayerBranch>\n )\n\n if (typeof document === \"undefined\") return popover\n return createPortal(popover, document.body)\n })() : null}\n </div>\n </div>\n )\n}\n\nHourPickerInput.displayName = \"HourPickerInput\"\n\nexport type HourPickerFieldProps = HourPickerInputProps\n\nfunction HourPickerSelectField({\n id,\n value,\n onChange,\n onValueUpdate,\n options,\n placeholder = \"Select time\",\n className,\n inputClassName,\n disabled,\n open,\n onOpenChange,\n triggerTestId,\n contentTestId,\n isHydrated,\n}: HourPickerFieldProps) {\n const commitValue = React.useCallback(\n (next: string) => {\n const matchingOption = options.find((option) => option.value === next)\n if (!isOptionSelectable(matchingOption)) {\n return\n }\n\n if (onValueUpdate) {\n onValueUpdate(next)\n }\n onChange(next)\n },\n [onChange, onValueUpdate, options],\n )\n\n return (\n <div data-slot=\"hours-picker-field\" className={cn(\"w-[150px]\", className)}>\n <Select\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n value={value ?? \"\"}\n onValueChange={(next) => commitValue(next)}\n >\n <SelectTrigger\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n className={cn(\n \"transition-colors hover:bg-accent hover:text-accent-foreground\",\n !value && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n\n <SelectContent\n data-testid={contentTestId}\n autoScroll={\"firstEnabledWithContext\"}\n className=\"max-h-64 overflow-y-auto\"\n >\n {options.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n <span>{option.label}</span>\n {option.description != null ? (\n <span data-slot=\"description\" className=\"block text-xs text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )\n}\n\nexport function HourPickerField(props: HourPickerFieldProps) {\n const isTouchDevice = useIsTouchDevice()\n\n if (isTouchDevice) {\n return <HourPickerSelectField {...props} />\n }\n\n return <HourPickerInput {...props} />\n}\n\nHourPickerField.displayName = \"HourPickerField\"\n\ntype HourPickerMaskedSelectTriggerProps = {\n id: string\n placeholder: string\n value: string | null\n onValueUpdate: (value: string | null) => void\n onCommit: (value: string | null) => void\n options: HourPickerOption[]\n disabled?: boolean\n readOnly?: boolean\n open: boolean\n setOpen: (open: boolean) => void\n inputClassName?: string\n triggerTestId?: string\n isHydrated?: boolean\n highlightedValueRef: React.MutableRefObject<string | null>\n setHighlightedValue: (value: string | null) => void\n markKeyboardNavigation: () => void\n inputRef: (node: HTMLInputElement | null) => void\n setDraftValueRef: React.MutableRefObject<((value: string) => void) | null>\n}\n\nfunction HourPickerMaskedSelectTrigger({\n id,\n placeholder,\n value,\n onValueUpdate,\n onCommit,\n options,\n disabled,\n readOnly,\n open,\n setOpen,\n inputClassName,\n triggerTestId,\n isHydrated,\n highlightedValueRef,\n setHighlightedValue,\n markKeyboardNavigation,\n inputRef,\n setDraftValueRef,\n}: HourPickerMaskedSelectTriggerProps) {\n const isEditingRef = React.useRef(false)\n const pointerDownOnInputRef = React.useRef(false)\n const inputWasFocusedOnPointerDownRef = React.useRef(false)\n const ignoreNextMaskCommitValueRef = React.useRef<string | null>(null)\n\n const [draft, setDraft] = React.useState(() => (value ? value : \"\"))\n\n React.useEffect(() => {\n setDraftValueRef.current = (nextValue) => {\n setDraft(nextValue)\n }\n return () => {\n setDraftValueRef.current = null\n }\n }, [setDraftValueRef])\n\n const moveSelection = React.useCallback(\n (direction: -1 | 1) => {\n const base = highlightedValueRef.current ?? value ?? \"\"\n\n let baseIndex = options.findIndex((option) => option.value === base)\n if (baseIndex === -1) {\n baseIndex = direction === 1 ? -1 : options.length\n }\n\n for (let nextIndex = baseIndex + direction; nextIndex >= 0 && nextIndex < options.length; nextIndex += direction) {\n const nextOption = options[nextIndex]\n if (!isOptionSelectable(nextOption)) continue\n\n setHighlightedValue(nextOption.value)\n ignoreNextMaskCommitValueRef.current = nextOption.value\n setDraft(nextOption.value)\n onValueUpdate(nextOption.value)\n return\n }\n },\n [highlightedValueRef, onValueUpdate, options, setHighlightedValue, value],\n )\n\n React.useEffect(() => {\n if (isEditingRef.current) return\n setDraft(value ? value : \"\")\n }, [value])\n\n const triggerClassName = cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 pr-10 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"transition-colors group-hover:bg-accent group-hover:text-accent-foreground\",\n !draft && \"text-muted-foreground\",\n open && \"ring-2 ring-primary ring-offset-2\",\n \"[&_[data-slot='description']]:hidden\",\n inputClassName,\n )\n\n return (\n <div className=\"relative group\">\n <IMaskInput\n id={id}\n data-testid={triggerTestId}\n data-hydrated={isHydrated ? \"true\" : undefined}\n type=\"text\"\n disabled={disabled}\n readOnly={readOnly}\n inputRef={inputRef}\n autoComplete={\"off\"}\n mask={[\n { mask: \"00:00\", lazy: true },\n { mask: \"0:00\", lazy: true },\n ]}\n dispatch={(appended, dynamicMasked) => {\n const digits = (dynamicMasked.value + appended).replace(/\\D/g, \"\")\n if (digits.length <= 2) return dynamicMasked.compiledMasks[0]\n if (digits.length >= 4) return dynamicMasked.compiledMasks[0]\n\n const hourPrefix = pad2(Number(digits.slice(0, 2)))\n const hasTwoDigitHour = options.some((option) => option.value.startsWith(`${hourPrefix}:`))\n if (hasTwoDigitHour) return dynamicMasked.compiledMasks[0]\n\n return dynamicMasked.compiledMasks[1]\n }}\n placeholder={placeholder}\n value={draft}\n className={triggerClassName}\n onAccept={(accepted) => {\n const nextText = typeof accepted === \"string\" ? accepted : String(accepted ?? \"\")\n setDraft(nextText)\n\n if (nextText.replace(/\\D/g, \"\").length !== 0) {\n return\n }\n\n if (value) {\n onCommit(null)\n }\n }}\n onComplete={(completed) => {\n const nextText = typeof completed === \"string\" ? completed : String(completed ?? \"\")\n if (ignoreNextMaskCommitValueRef.current === nextText) {\n ignoreNextMaskCommitValueRef.current = null\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(nextText, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n\n if (value === resolved.selectableValue) {\n return\n }\n\n onCommit(resolved.selectableValue)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n setHighlightedValue(closestOption.value)\n }}\n onPointerDown={() => {\n pointerDownOnInputRef.current = true\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onMouseDown={(event) => {\n pointerDownOnInputRef.current = true\n inputWasFocusedOnPointerDownRef.current = typeof document !== \"undefined\" && document.activeElement === event.currentTarget\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onClick={() => {\n if (disabled) return\n if (!open) {\n setOpen(true)\n }\n }}\n onKeyDown={(event) => {\n if (disabled) {\n return\n }\n\n if (event.key === \"Tab\" && open && !event.defaultPrevented) {\n setOpen(false)\n return\n }\n\n if (event.key === \"Escape\") {\n if (!open) {\n return\n }\n event.preventDefault()\n setOpen(false)\n return\n }\n\n if (!open && !event.defaultPrevented) {\n const shouldReopen =\n (event.key.length === 1 || event.key === \"Backspace\" || event.key === \"Delete\") &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey\n\n if (shouldReopen) {\n setOpen(true)\n }\n }\n\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n markKeyboardNavigation()\n event.preventDefault()\n\n if (!open) {\n setOpen(true)\n return\n }\n\n moveSelection(event.key === \"ArrowDown\" ? 1 : -1)\n return\n }\n\n if (event.key === \"Enter\") {\n markKeyboardNavigation()\n const resolved = parseTimeInputWithSelectableOption(draft, options)\n if (!resolved) {\n return\n }\n\n if (resolved.selectableValue) {\n event.preventDefault()\n setHighlightedValue(resolved.selectableValue)\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n setOpen(false)\n return\n }\n\n const targetMinutes = timeStringToMinutes(resolved.parsed)\n if (targetMinutes == null) {\n return\n }\n\n const closestOption = findClosestSelectableOption(targetMinutes, options)\n if (!closestOption) {\n return\n }\n\n event.preventDefault()\n setHighlightedValue(closestOption.value)\n setDraft(closestOption.value)\n if (value !== closestOption.value) {\n onCommit(closestOption.value)\n }\n setOpen(false)\n return\n }\n }}\n onFocus={(event) => {\n const shouldSelectAll = !pointerDownOnInputRef.current || !inputWasFocusedOnPointerDownRef.current\n pointerDownOnInputRef.current = false\n inputWasFocusedOnPointerDownRef.current = false\n isEditingRef.current = true\n if (shouldSelectAll) {\n const element = event.currentTarget\n requestAnimationFrame(() => element.select())\n }\n\n if (disabled) {\n return\n }\n\n if (open) {\n return\n }\n\n setOpen(true)\n }}\n onBlur={() => {\n isEditingRef.current = false\n\n const trimmed = draft.trim()\n if (!trimmed) {\n setDraft(value ? value : \"\")\n return\n }\n\n const resolved = parseTimeInputWithSelectableOption(trimmed, options)\n if (!resolved) {\n setDraft(value ? value : \"\")\n return\n }\n\n if (!resolved.selectableValue) {\n setDraft(value ? value : \"\")\n return\n }\n\n setDraft(resolved.selectableValue)\n if (value !== resolved.selectableValue) {\n onCommit(resolved.selectableValue)\n }\n }}\n />\n\n <button\n type=\"button\"\n tabIndex={-1}\n disabled={disabled}\n data-slot=\"hours-picker-input-toggle\"\n className={cn(\n \"absolute right-1 top-1/2 inline-flex size-8 -translate-y-1/2 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n )}\n aria-label={open ? \"Close time picker\" : \"Open time picker\"}\n onPointerDown={(event) => {\n event.preventDefault()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n onClick={() => {\n if (disabled) return\n setOpen(!open)\n }}\n >\n <ChevronDown aria-hidden className=\"size-4\" />\n </button>\n </div>\n )\n}\n"],"names":["pad2","value","parseTimeInput","raw","trimmed","match","hours","minutes","parseTimeInputWithSelectableOption","options","parsed","parsedOption","option","isOptionSelectable","timeStringToMinutes","findClosestSelectableOption","targetMinutes","bestOption","bestDiff","bestMinutes","optionMinutes","diff","HourPickerScrollButton","direction","viewportRef","speed","className","disabled","setDisabled","React","animationRef","lastTimeRef","isScrollingRef","checkScrollability","viewport","scrollTop","scrollHeight","clientHeight","tolerance","canScrollUp","canScrollDown","handleScroll","handleResize","resizeObserver","mutationObserver","stopScrolling","smoothScroll","currentTime","deltaTime","distance","oldScrollTop","maxScroll","newScrollTop","startScrolling","jsx","cn","ChevronUp","ChevronDown","HourPickerInput","id","onChange","onValueUpdate","placeholder","inputClassName","readOnly","openProp","onOpenChange","triggerTestId","contentTestId","isHydrated","reactId","triggerId","triggerInputRef","setTriggerDraftValueRef","highlightedValueRef","keyboardNavigationActiveRef","highlightedValue","setHighlightedValue","containerRef","desktopPopoverRef","desktopContentRef","desktopPopoverPosition","setDesktopPopoverPosition","uncontrolledOpen","setUncontrolledOpen","open","setOpen","useIsomorphicLayoutEffect","updateHighlightedValue","next","markKeyboardNavigation","currentOption","firstEnabled","updateValue","matchingOption","commitValue","handlePointerDown","event","target","container","popover","handleWheel","deltaY","maxScrollTop","atTop","atBottom","nextScrollTop","trigger","isActive","observer","entries","entry","updateDesktopPopoverPosition","rect","popoverHeight","viewportWidth","viewportHeight","padding","width","left","top","overflowBottom","aboveTop","rafId","raf","selected","targetTop","targetBottom","viewportBottom","all","lastDisabledBefore","el","offset","jsxs","HourPickerMaskedSelectTrigger","node","DismissableLayerBranch","isChecked","Check","createPortal","HourPickerSelectField","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","HourPickerField","props","useIsTouchDevice","onCommit","inputRef","setDraftValueRef","isEditingRef","pointerDownOnInputRef","inputWasFocusedOnPointerDownRef","ignoreNextMaskCommitValueRef","draft","setDraft","nextValue","moveSelection","base","baseIndex","nextIndex","nextOption","triggerClassName","IMaskInput","appended","dynamicMasked","digits","hourPrefix","accepted","nextText","completed","resolved","closestOption","shouldSelectAll","element"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,SAASA,EAAKC,GAAe;AAC3B,SAAO,OAAOA,CAAK,EAAE,SAAS,GAAG,GAAG;AACtC;AAEA,SAASC,GAAeC,GAAa;AACnC,QAAMC,IAAUD,EAAI,KAAA;AACpB,MAAI,CAACC,EAAS,QAAO;AAErB,QAAMC,IAAQ,sBAAsB,KAAKD,CAAO;AAChD,MAAI,CAACC;AACH,WAAO;AAGT,QAAMC,IAAQ,OAAOD,EAAM,CAAC,CAAC,GACvBE,IAAU,OAAOF,EAAM,CAAC,CAAC;AAK/B,SAJI,CAAC,OAAO,SAASC,CAAK,KAAK,CAAC,OAAO,SAASC,CAAO,KAInDD,IAAQ,KAAKA,IAAQ,MAAMC,IAAU,KAAKA,IAAU,KAC/C,OAGF,GAAGP,EAAKM,CAAK,CAAC,IAAIN,EAAKO,CAAO,CAAC;AACxC;AAOA,SAASC,EAAmCL,GAAaM,GAA2D;AAClH,QAAMC,IAASR,GAAeC,CAAG;AACjC,MAAI,CAACO,EAAQ,QAAO;AAEpB,QAAMC,IAAeF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUF,CAAM;AACrE,SAAIG,EAAmBF,CAAY,IAC1B,EAAE,QAAAD,GAAQ,iBAAiBA,EAAA,IAG7B,EAAE,QAAAA,GAAQ,iBAAiB,KAAA;AACpC;AAEA,SAASI,EAAoBb,GAAe;AAC1C,QAAMI,IAAQ,oBAAoB,KAAKJ,CAAK;AAC5C,MAAI,CAACI;AACH,WAAO;AAGT,QAAMC,IAAQ,OAAOD,EAAM,CAAC,CAAC,GACvBE,IAAU,OAAOF,EAAM,CAAC,CAAC;AAE/B,SAAI,CAAC,OAAO,SAASC,CAAK,KAAK,CAAC,OAAO,SAASC,CAAO,IAC9C,OAGFD,IAAQ,KAAKC;AACtB;AAEA,SAASM,EAAmBD,GAAsC;AAChE,SAAKA,IACE,CAACA,EAAO,WADK;AAEtB;AAEA,SAASG,GAA4BC,GAAuBP,GAA6B;AACvF,MAAIQ,IAAsC,MACtCC,IAAW,OAAO,mBAClBC,IAAc,OAAO;AAEzB,aAAWP,KAAUH,GAAS;AAC5B,QAAI,CAACI,EAAmBD,CAAM,EAAG;AACjC,UAAMQ,IAAgBN,EAAoBF,EAAO,KAAK;AACtD,QAAIQ,KAAiB,KAAM;AAE3B,UAAMC,IAAO,KAAK,IAAID,IAAgBJ,CAAa;AACnD,KAAIK,IAAOH,KAAaG,MAASH,KAAYE,IAAgBD,OAC3DF,IAAaL,GACbM,IAAWG,GACXF,IAAcC;AAAA,EAElB;AAEA,SAAOH;AACT;AAWA,SAASK,GAAuB;AAAA,EAC9B,WAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,WAAAC;AACF,GAAgC;AAC9B,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAM,SAAS,EAAI,GAC7CC,IAAeD,EAAM,OAA2B,MAAS,GACzDE,IAAcF,EAAM,OAA2B,MAAS,GACxDG,IAAiBH,EAAM,OAAO,EAAK,GAEnCI,IAAqBJ,EAAM,YAAY,MAAM;AACjD,UAAMK,IAAWV,EAAY;AAC7B,QAAI,CAACU,GAAU;AACb,MAAAN,EAAY,EAAI;AAChB;AAAA,IACF;AAEA,UAAM,EAAE,WAAAO,GAAW,cAAAC,GAAc,cAAAC,EAAA,IAAiBH,GAC5CI,IAAY,GAEZC,IAAcJ,IAAYG,GAC1BE,IAAgBL,IAAaC,IAAeC,IAAeC;AAGjE,QAAI,EAFyBF,IAAeC,IAAeC,IAEhC;AACzB,MAAAV,EAAY,EAAI;AAChB;AAAA,IACF;AAGA,IAAAA,EADsBL,MAAc,OAAO,CAACgB,IAAc,CAACC,CAClC;AAAA,EAC3B,GAAG,CAACjB,GAAWC,CAAW,CAAC;AAE3B,EAAAK,EAAM,UAAU,MAAM;AACpB,UAAMK,IAAWV,EAAY;AAC7B,QAAI,CAACU,EAAU;AAEf,IAAAD,EAAA;AAEA,UAAMQ,IAAe,MAAMR,EAAA,GACrBS,IAAe,MAAMT,EAAA;AAE3B,IAAAC,EAAS,iBAAiB,UAAUO,GAAc,EAAE,SAAS,IAAM;AAEnE,UAAME,IAAiB,IAAI,eAAeD,CAAY;AACtD,IAAAC,EAAe,QAAQT,CAAQ;AAE/B,UAAMU,IAAmB,IAAI,iBAAiBF,CAAY;AAC1D,WAAAE,EAAiB,QAAQV,GAAU,EAAE,WAAW,IAAM,SAAS,IAAM,GAE9D,MAAM;AACX,MAAAA,EAAS,oBAAoB,UAAUO,CAAY,GACnDE,EAAe,WAAA,GACfC,EAAiB,WAAA;AAAA,IACnB;AAAA,EACF,GAAG,CAACpB,GAAaS,CAAkB,CAAC;AAEpC,QAAMY,IAAgBhB,EAAM,YAAY,MAAM;AAC5C,IAAIC,EAAa,YACf,qBAAqBA,EAAa,OAAO,GACzCA,EAAa,UAAU,SAEzBE,EAAe,UAAU,IACzBD,EAAY,UAAU;AAAA,EACxB,GAAG,CAAA,CAAE,GAECe,IAAejB,EAAM;AAAA,IACzB,CAACkB,MAAwB;AACvB,YAAMb,IAAWV,EAAY;AAC7B,UAAI,CAACU,KAAYP,KAAY,CAACK,EAAe,SAAS;AACpD,QAAAa,EAAA;AACA;AAAA,MACF;AAEA,MAAKd,EAAY,YACfA,EAAY,UAAUgB;AAGxB,YAAMC,IAAYD,IAAchB,EAAY,SACtCkB,IAAYxB,IAAQuB,IAAa;AAEvC,UAAIC,IAAW,KAAK;AAClB,QAAAnB,EAAa,UAAU,sBAAsBgB,CAAY;AACzD;AAAA,MACF;AAEA,YAAMI,IAAehB,EAAS,WACxBiB,IAAYjB,EAAS,eAAeA,EAAS;AAEnD,UAAIkB;AACJ,MAAI7B,MAAc,OAChB6B,IAAe,KAAK,IAAI,GAAGF,IAAeD,CAAQ,IAElDG,IAAe,KAAK,IAAID,GAAWD,IAAeD,CAAQ,GAG5Df,EAAS,YAAYkB,GAErBrB,EAAY,UAAUgB;AAEtB,YAAMT,IAAY;AAMlB,OAJEf,MAAc,OACV6B,IAAed,IACfc,IAAgBD,IAAYb,MAEf,KAAK,IAAIc,IAAeF,CAAY,IAAI,OACzDpB,EAAa,UAAU,sBAAsBgB,CAAY,KAEzDD,EAAA,GACA,WAAWZ,GAAoB,EAAE;AAAA,IAErC;AAAA,IACA,CAACA,GAAoBV,GAAWI,GAAUF,GAAOoB,GAAerB,CAAW;AAAA,EAAA,GAGvE6B,IAAiBxB,EAAM,YAAY,MAAM;AAC7C,IAAIF,KAAY,CAACH,EAAY,WAAWQ,EAAe,YAEvDA,EAAe,UAAU,IACzBD,EAAY,UAAU,QACtBD,EAAa,UAAU,sBAAsBgB,CAAY;AAAA,EAC3D,GAAG,CAACnB,GAAUmB,GAActB,CAAW,CAAC;AAExC,SAAAK,EAAM,UAAU,MAAMgB,GAAe,CAACA,CAAa,CAAC,GAGlDS,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAWC;AAAA,QACT;AAAA,QACA5B,IAAW,8BAA8B;AAAA,QACzCD;AAAA,MAAA;AAAA,MAEF,gBAAgB,MAAM;AACpB,QAAKC,KAAU0B,EAAA;AAAA,MACjB;AAAA,MACA,eAAe,MAAM;AACnB,QAAI,CAAC1B,KAAY,CAACK,EAAe,WAASqB,EAAA;AAAA,MAC5C;AAAA,MACA,gBAAgB,MAAM;AACpB,QAAAR,EAAA;AAAA,MACF;AAAA,MAEC,UAAAtB,MAAc,OACX+B,gBAAAA,EAAAA,IAACE,IAAA,EAAU,eAAW,IAAC,WAAU,qBAAA,CAAqB,IACtDF,gBAAAA,EAAAA,IAACG,IAAA,EAAY,eAAW,IAAC,WAAU,qBAAA,CAAqB;AAAA,IAAA;AAAA,EAAA;AAGlE;AAoBO,SAASC,GAAgB;AAAA,EAC9B,IAAAC;AAAA,EACA,OAAA1D;AAAA,EACA,UAAA2D;AAAA,EACA,eAAAC;AAAA,EACA,SAAApD;AAAA,EACA,aAAAqD,IAAc;AAAA,EACd,WAAApC;AAAA,EACA,gBAAAqC;AAAA,EACA,UAAApC;AAAA,EACA,UAAAqC;AAAA,EACA,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AACF,GAAyB;AACvB,QAAMC,IAAUzC,EAAM,MAAA,GAChB0C,IAAYZ,KAAM,gBAAgBW,CAAO,IACzCE,IAAkB3C,EAAM,OAAgC,IAAI,GAC5D4C,IAA0B5C,EAAM,OAAyC,IAAI,GAC7E6C,IAAsB7C,EAAM,OAAsB,IAAI,GACtD8C,IAA8B9C,EAAM,OAAO,EAAK,GAChD,CAAC+C,GAAkBC,CAAmB,IAAIhD,EAAM,SAAwB,IAAI,GAC5EiD,IAAejD,EAAM,OAA8B,IAAI,GACvDkD,IAAoBlD,EAAM,OAA8B,IAAI,GAC5DmD,IAAoBnD,EAAM,OAA8B,IAAI,GAC5D,CAACoD,GAAwBC,CAAyB,IAAIrD,EAAM,SAAS,OAAO;AAAA,IAChF,MAAM;AAAA,IACN,KAAK;AAAA,IACL,OAAO;AAAA,EAAA,EACP,GAEI,CAACsD,GAAkBC,CAAmB,IAAIvD,EAAM,SAAS,EAAK,GAC9DwD,IAAOpB,KAAYkB,GACnBG,IAAUpB,KAAgBkB,GAE1BG,KAA4B,OAAO,SAAW,MAAc1D,EAAM,YAAYA,EAAM,iBAEpF2D,IAAyB3D,EAAM,YAAY,CAAC4D,MAAwB;AACxE,IAAAf,EAAoB,UAAUe,GAC9BZ,EAAoBY,CAAI;AAAA,EAC1B,GAAG,CAAA,CAAE,GAECC,KAAyB7D,EAAM,YAAY,MAAM;AACrD,IAAA8C,EAA4B,UAAU;AAAA,EACxC,GAAG,CAAA,CAAE;AAEL,EAAA9C,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,EAAM;AAEX,UAAMM,IAAgBlF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAUX,CAAK;AACrE,QAAI0F,KAAiB9E,EAAmB8E,CAAa,GAAG;AACtD,MAAAH,EAAuBG,EAAc,KAAK;AAC1C;AAAA,IACF;AAEA,UAAMC,IAAenF,EAAQ,KAAK,CAACG,MAAWC,EAAmBD,CAAM,CAAC;AACxE,IAAA4E,EAAuBI,GAAc,SAAS,IAAI;AAAA,EACpD,GAAG,CAACP,GAAM5E,GAAS+E,GAAwBvF,CAAK,CAAC;AAEjD,QAAM4F,KAAchE,EAAM;AAAA,IACxB,CAAC4D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,YAAI5B,GAAe;AACjB,UAAAA,EAAc,IAAI;AAClB;AAAA,QACF;AAEA,QAAAD,EAAS,IAAI;AACb;AAAA,MACF;AAEA,YAAMkC,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,UAAK5E,EAAmBiF,CAAc,GAItC;AAAA,YAAIjC,GAAe;AACjB,UAAAA,EAAc4B,CAAI;AAClB;AAAA,QACF;AAEA,QAAA7B,EAAS6B,CAAI;AAAA;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA,GAG7BsF,IAAclE,EAAM;AAAA,IACxB,CAAC4D,MAAwB;AACvB,UAAIA,MAAS,MAAM;AACjB,QAAI5B,KACFA,EAAc,IAAI,GAEpBD,EAAS,IAAI;AACb;AAAA,MACF;AAEA,YAAMkC,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,MAAK5E,EAAmBiF,CAAc,MAIlCjC,KACFA,EAAc4B,CAAI,GAGpB7B,EAAS6B,CAAI;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,EAAAoB,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,EAAM;AAEX,UAAMW,IAAoB,CAACC,MAAwB;AACjD,YAAMC,IAASD,EAAM;AACrB,UAAI,EAAEC,aAAkB;AACtB;AAGF,YAAMC,IAAYrB,EAAa;AAU/B,MATI,CAACqB,KAIDA,EAAU,SAASD,CAAM,KAIbnB,EAAkB,SACrB,SAASmB,CAAM,KAI5BZ,EAAQ,EAAK;AAAA,IACf;AAEA,oBAAS,iBAAiB,eAAeU,GAAmB,EAAI,GACzD,MAAM;AACX,eAAS,oBAAoB,eAAeA,GAAmB,EAAI;AAAA,IACrE;AAAA,EACF,GAAG,CAACX,GAAMC,CAAO,CAAC,GAElBzD,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD;AACH;AAGF,UAAMe,IAAUrB,EAAkB;AAClC,QAAI,CAACqB;AACH;AAGF,UAAMC,IAAc,CAACJ,MAAsB;AACzC,YAAM/D,IAAW8C,EAAkB;AACnC,UAAI,CAAC9C;AACH;AAGF,YAAMoE,IAASL,EAAM;AACrB,UAAIK,MAAW;AACb;AAGF,YAAMC,IAAe,KAAK,IAAI,GAAGrE,EAAS,eAAeA,EAAS,YAAY,GACxEsE,IAAQtE,EAAS,aAAa,GAC9BuE,IAAWvE,EAAS,aAAaqE,GAEjCL,IAASD,EAAM;AAGrB,UAF4BC,aAAkB,QAAQhE,EAAS,SAASgE,CAAM,GAErD;AACvB,SAAKI,IAAS,KAAKE,KAAWF,IAAS,KAAKG,MAC1CR,EAAM,eAAA;AAER;AAAA,MACF;AAEA,MAAAA,EAAM,eAAA;AACN,YAAMS,IAAgB,KAAK,IAAIH,GAAc,KAAK,IAAI,GAAGrE,EAAS,YAAYoE,CAAM,CAAC;AACrF,MAAApE,EAAS,YAAYwE;AAAA,IACvB;AAEA,WAAAN,EAAQ,iBAAiB,SAASC,GAAa,EAAE,SAAS,IAAO,GAC1D,MAAM;AACX,MAAAD,EAAQ,oBAAoB,SAASC,CAAW;AAAA,IAClD;AAAA,EACF,GAAG,CAAChB,CAAI,CAAC,GAETxD,EAAM,UAAU,MAAM;AAUpB,QATI,CAACwD,KAGDpB,MAAa,UAAa,CAACC,KAG3B,OAAO,SAAW,OAGlB,EAAE,0BAA0B;AAC9B;AAGF,UAAMyC,IAAUnC,EAAgB;AAChC,QAAI,EAAEmC,aAAmB;AACvB;AAGF,QAAIC,IAAW;AACf,UAAMC,IAAW,IAAI,qBAAqB,CAAAC,MAAW;AACnD,UAAI,CAACF;AACH;AAEF,YAAMG,IAAQD,EAAQ,CAAC;AACvB,MAAIC,KAAS,CAACA,EAAM,kBAClBzB,EAAQ,EAAK;AAAA,IAEjB,CAAC;AACD,WAAAuB,EAAS,QAAQF,CAAO,GACjB,MAAM;AACX,MAAAC,IAAW,IACXC,EAAS,WAAA;AAAA,IACX;AAAA,EACF,GAAG,CAAC3C,GAAcmB,GAAMpB,GAAUqB,CAAO,CAAC;AAE1C,QAAM0B,IAA+BnF,EAAM,YAAY,MAAM;AAC3D,QAAI,OAAO,SAAW,IAAa;AAEnC,UAAM8E,IAAUnC,EAAgB,SAC1B4B,IAAUrB,EAAkB;AAClC,QAAI,EAAE4B,aAAmB,gBAAgB,CAACP,EAAS;AAEnD,UAAMa,IAAON,EAAQ,sBAAA,GACfO,IAAgBd,EAAQ,cACxBe,IAAgB,OAAO,cAAc,GACrCC,IAAiB,OAAO,eAAe,GACvCC,IAAU,GAEVC,IAAQL,EAAK;AAEnB,QAAIM,IAAON,EAAK;AAChB,IAAIM,IAAOD,IAAQH,IAAgBE,MACjCE,IAAO,KAAK,IAAIF,GAASF,IAAgBG,IAAQD,CAAO,IAEtDE,IAAOF,MACTE,IAAOF;AAGT,QAAIG,IAAMP,EAAK,SAASI;AACxB,UAAMI,IAAiBD,IAAMN,IAAgBE,IAAiBC,GACxDK,IAAWT,EAAK,MAAMC,IAAgBG;AAC5C,IAAII,KAAkBC,KAAYL,MAChCG,IAAME,IAGJF,IAAMH,MACRG,IAAMH,IAEJG,IAAMN,IAAgBE,IAAiBC,MACzCG,IAAM,KAAK,IAAIH,GAASD,IAAiBF,IAAgBG,CAAO,IAGlEnC,EAA0B,EAAE,MAAAqC,GAAM,KAAAC,GAAK,OAAAF,EAAA,CAAO;AAAA,EAChD,GAAG,CAAA,CAAE;AAEL,SAAA/B,GAA0B,MAAM;AAE9B,QADI,CAACF,KAAQ1D,KACT,OAAO,SAAW,IAAa;AAEnC,IAAAqF,EAAA;AACA,UAAMW,IAAQ,OAAO,sBAAsBX,CAA4B;AAEvE,kBAAO,iBAAiB,UAAUA,GAA8B,EAAI,GACpE,OAAO,iBAAiB,UAAUA,CAA4B,GACvD,MAAM;AACX,aAAO,qBAAqBW,CAAK,GACjC,OAAO,oBAAoB,UAAUX,GAA8B,EAAI,GACvE,OAAO,oBAAoB,UAAUA,CAA4B;AAAA,IACnE;AAAA,EACF,GAAG,CAACrF,GAAU0D,GAAM2B,CAA4B,CAAC,GAEjDnF,EAAM,UAAU,MAAM;AACpB,QAAI,CAACwD,EAAM;AAEX,UAAMnD,IAAW8C,EAAkB;AACnC,QAAI,CAAC9C,EAAU;AA4Cf,UAAM0F,IAAM,sBA1CA,MAAM;AAChB,YAAMC,IAAW3F,EAAS,cAAc,uCAA2C;AACnF,UAAI2F,aAAoB,aAAa;AAEnC,cAAMC,IAAYD,EAAS,YAAY,GACjCE,IAAeF,EAAS,YAAYA,EAAS,eAAe;AAElE,YAAIC,IAAY5F,EAAS,WAAW;AAClC,UAAAA,EAAS,YAAY,KAAK,IAAI,GAAG4F,CAAS;AAC1C;AAAA,QACF;AAEA,cAAME,KAAiB9F,EAAS,YAAYA,EAAS;AACrD,QAAI6F,IAAeC,OACjB9F,EAAS,YAAY,KAAK,IAAI,GAAG6F,IAAe7F,EAAS,YAAY;AAEvE;AAAA,MACF;AAEA,YAAM+F,IAAM,MAAM,KAAK/F,EAAS,iBAAiB,iBAAmB,CAAC;AACrE,UAAI,CAAC+F,EAAI,OAAQ;AAEjB,UAAIrC,GACAsC;AAEJ,iBAAWC,KAAMF,GAAK;AAEpB,YAAI,CADeE,EAAG,aAAa,eAAe,GACjC;AACf,UAAAvC,IAAeuC;AACf;AAAA,QACF;AACA,QAAAD,IAAqBC;AAAA,MACvB;AAEA,UAAI,CAACvC,EAAc;AAInB,YAAMwC,IAAS,KAAK,IAAI,IAFTF,KAA0CtC,GAEvB,YAAY,CAAC;AAC/C,MAAA1D,EAAS,YAAYkG;AAAA,IACvB,CAEqC;AACrC,WAAO,MAAM,qBAAqBR,CAAG;AAAA,EACvC,GAAG,CAACvC,GAAM5E,CAAO,CAAC,GAElBoB,EAAM,UAAU,MAAM;AAGpB,QAFI,CAACwD,KACD,CAACT,KACD,CAACD,EAA4B,QAAS;AAE1C,UAAMzC,IAAW8C,EAAkB;AACnC,QAAI,CAAC9C,EAAU;AAEf,UAAMgE,IAAShE,EAAS,cAAc,+BAA+B0C,CAAgB,IAAI;AACzF,QAAI,EAAEsB,aAAkB,aAAc;AAEtC,UAAMmB,IAAU,GACVS,IAAY5B,EAAO,YAAYmB,GAC/BU,IAAe7B,EAAO,YAAYA,EAAO,eAAemB;AAE9D,QAAIS,IAAY5F,EAAS,WAAW;AAClC,MAAAA,EAAS,YAAY,KAAK,IAAI,GAAG4F,CAAS;AAC1C;AAAA,IACF;AAEA,UAAME,IAAiB9F,EAAS,YAAYA,EAAS;AACrD,IAAI6F,IAAeC,MACjB9F,EAAS,YAAY,KAAK,IAAI,GAAG6F,IAAe7F,EAAS,YAAY;AAAA,EAEzE,GAAG,CAAC0C,GAAkBS,CAAI,CAAC,GAGzB/B,gBAAAA,EAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAU;AAAA,MACV,WAAWC,EAAG,aAAa7B,CAAS;AAAA,MACpC,KAAKoD;AAAA,MAEL,UAAAuD,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,YACb,UAAA;AAAA,QAAA/E,gBAAAA,EAAAA;AAAAA,UAACgF;AAAA,UAAA;AAAA,YACC,IAAI/D;AAAA,YACJ,aAAAT;AAAA,YACA,OAAA7D;AAAA,YACA,eAAe4F;AAAA,YACf,UAAUE;AAAA,YACV,SAAAtF;AAAA,YACA,UAAAkB;AAAA,YACA,UAAAqC;AAAA,YACA,MAAAqB;AAAA,YACA,SAAAC;AAAA,YACA,gBAAAvB;AAAA,YACA,eAAAI;AAAA,YACA,YAAAE;AAAA,YACA,qBAAAK;AAAA,YACA,qBAAqBc;AAAA,YACrB,wBAAAE;AAAA,YACA,UAAU,CAAC6C,MAAS;AAClB,cAAA/D,EAAgB,UAAU+D;AAAA,YAC5B;AAAA,YACA,kBAAkB9D;AAAA,UAAA;AAAA,QAAA;AAAA,QAGnBY,KAAQ,MAAM;AACb,gBAAMe,0BACHoC,IAAA,EACC,UAAAH,gBAAAA,EAAAA;AAAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKtD;AAAA,cACL,eAAaX;AAAA,cACb,cAAW;AAAA,cACX,WAAWb;AAAA,gBACT;AAAA,gBACA;AAAA,cAAA;AAAA,cAEF,OAAO;AAAA,gBACL,MAAM0B,EAAuB;AAAA,gBAC7B,KAAKA,EAAuB;AAAA,gBAC5B,OAAOA,EAAuB;AAAA,cAAA;AAAA,cAGhC,UAAA;AAAA,gBAAA3B,gBAAAA,EAAAA;AAAAA,kBAAChC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa0D;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGf1B,gBAAAA,EAAAA;AAAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAK0B;AAAA,oBACL,MAAK;AAAA,oBACL,WAAU;AAAA,oBAET,UAAAvE,EAAQ,IAAI,CAACG,MAAW;AACvB,4BAAM6H,IAAY7H,EAAO,UAAUX;AAEnC,6BACEoI,gBAAAA,EAAAA;AAAAA,wBAAC;AAAA,wBAAA;AAAA,0BAEC,MAAK;AAAA,0BACL,iBAAeI;AAAA,0BACf,cAAY7H,EAAO;AAAA,0BACnB,cAAY6H,IAAY,YAAY;AAAA,0BACpC,iBAAe7H,EAAO,WAAW,KAAK;AAAA,0BACtC,WAAW2C;AAAA,4BACT;AAAA,4BACA3C,EAAO,YAAY;AAAA,4BACnBgE,MAAqBhE,EAAO,SAAS;AAAA,0BAAA;AAAA,0BAEvC,aAAa,CAACqF,MAAU;AACtB,4BAAAA,EAAM,eAAA;AAAA,0BACR;AAAA,0BACA,SAAS,MAAM;AACb,4BAAIrF,EAAO,aAEX6D,EAAwB,UAAU7D,EAAO,KAAK,GAC9C4E,EAAuB5E,EAAO,KAAK,GACnC4D,EAAgB,SAAS,MAAM,EAAE,eAAe,IAAM,GACtDuB,EAAYnF,EAAO,KAAK,GACxB0E,EAAQ,EAAK;AAAA,0BACf;AAAA,0BACA,gBAAgB,MAAM;AACpB,4BAAIX,EAA4B,YAChCA,EAA4B,UAAU,IACtCa,EAAuB5E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BACA,eAAe,CAACqF,MAAU;AACxB,4BAAItB,EAA4B,WAAWsB,EAAM,cAAc,KAAKA,EAAM,cAAc,MAGxFtB,EAA4B,UAAU,IACtCa,EAAuB5E,EAAO,KAAK;AAAA,0BACrC;AAAA,0BAEA,UAAA;AAAA,4BAAA0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,WAAU,gEACb,UAAAmF,IAAYnF,gBAAAA,EAAAA,IAACoF,IAAA,EAAM,eAAW,IAAC,WAAU,UAAA,CAAU,IAAK,MAC3D;AAAA,4BAEAL,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,8BAAA/E,gBAAAA,EAAAA,IAAC,QAAA,EAAM,YAAO,MAAA,CAAM;AAAA,8BACnB1C,EAAO,eAAe,OACrB0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,aAAU,eAAc,WAAU,iCACrC,UAAA1C,EAAO,YAAA,CACV,IACE;AAAA,4BAAA,EAAA,CACN;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBA/CKA,EAAO;AAAA,sBAAA;AAAA,oBAkDlB,CAAC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGH0C,gBAAAA,EAAAA;AAAAA,kBAAChC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAa0D;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACf;AAAA,YAAA;AAAA,UAAA,GAEJ;AAGF,iBAAI,OAAO,WAAa,MAAoBoB,IACrCuC,GAAavC,GAAS,SAAS,IAAI;AAAA,QAC5C,OAAO;AAAA,MAAA,EAAA,CACT;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA1C,GAAgB,cAAc;AAI9B,SAASkF,GAAsB;AAAA,EAC7B,IAAAjF;AAAA,EACA,OAAA1D;AAAA,EACA,UAAA2D;AAAA,EACA,eAAAC;AAAA,EACA,SAAApD;AAAA,EACA,aAAAqD,IAAc;AAAA,EACd,WAAApC;AAAA,EACA,gBAAAqC;AAAA,EACA,UAAApC;AAAA,EACA,MAAA0D;AAAA,EACA,cAAAnB;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,YAAAC;AACF,GAAyB;AACvB,QAAM0B,IAAclE,EAAM;AAAA,IACxB,CAAC4D,MAAiB;AAChB,YAAMK,IAAiBrF,EAAQ,KAAK,CAACG,MAAWA,EAAO,UAAU6E,CAAI;AACrE,MAAK5E,EAAmBiF,CAAc,MAIlCjC,KACFA,EAAc4B,CAAI,GAEpB7B,EAAS6B,CAAI;AAAA,IACf;AAAA,IACA,CAAC7B,GAAUC,GAAepD,CAAO;AAAA,EAAA;AAGnC,SACE6C,gBAAAA,MAAC,SAAI,aAAU,sBAAqB,WAAWC,EAAG,aAAa7B,CAAS,GACtE,UAAA2G,gBAAAA,EAAAA;AAAAA,IAACQ;AAAA,IAAA;AAAA,MACC,UAAAlH;AAAA,MACA,MAAA0D;AAAA,MACA,cAAAnB;AAAA,MACA,OAAOjE,KAAS;AAAA,MAChB,eAAe,CAACwF,MAASM,EAAYN,CAAI;AAAA,MAEzC,UAAA;AAAA,QAAAnC,gBAAAA,EAAAA;AAAAA,UAACwF;AAAA,UAAA;AAAA,YACC,IAAAnF;AAAA,YACA,eAAaQ;AAAA,YACb,iBAAeE,IAAa,SAAS;AAAA,YACrC,WAAWd;AAAA,cACT;AAAA,cACA,CAACtD,KAAS;AAAA,cACVoF,KAAQ;AAAA,cACR;AAAA,cACAtB;AAAA,YAAA;AAAA,YAGF,UAAAT,gBAAAA,EAAAA,IAACyF,MAAY,aAAAjF,EAAA,CAA0B;AAAA,UAAA;AAAA,QAAA;AAAA,QAGzCR,gBAAAA,EAAAA;AAAAA,UAAC0F;AAAA,UAAA;AAAA,YACC,eAAa5E;AAAA,YACb,YAAY;AAAA,YACZ,WAAU;AAAA,YAET,UAAA3D,EAAQ,IAAI,CAACG,MACZyH,gBAAAA,EAAAA;AAAAA,cAACY;AAAA,cAAA;AAAA,gBAEC,OAAOrI,EAAO;AAAA,gBACd,UAAUA,EAAO;AAAA,gBAEjB,UAAA;AAAA,kBAAA0C,gBAAAA,EAAAA,IAAC,QAAA,EAAM,YAAO,MAAA,CAAM;AAAA,kBACnB1C,EAAO,eAAe,OACrB0C,gBAAAA,EAAAA,IAAC,QAAA,EAAK,aAAU,eAAc,WAAU,uCACrC,UAAA1C,EAAO,YAAA,CACV,IACE;AAAA,gBAAA;AAAA,cAAA;AAAA,cATCA,EAAO;AAAA,YAAA,CAWf;AAAA,UAAA;AAAA,QAAA;AAAA,MACH;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;AAEO,SAASsI,GAAgBC,GAA6B;AAG3D,SAFsBC,GAAA,IAGb9F,gBAAAA,MAACsF,IAAA,EAAuB,GAAGO,EAAA,CAAO,IAGpC7F,gBAAAA,MAACI,IAAA,EAAiB,GAAGyF,EAAA,CAAO;AACrC;AAEAD,GAAgB,cAAc;AAuB9B,SAASZ,GAA8B;AAAA,EACrC,IAAA3E;AAAA,EACA,aAAAG;AAAA,EACA,OAAA7D;AAAA,EACA,eAAA4D;AAAA,EACA,UAAAwF;AAAA,EACA,SAAA5I;AAAA,EACA,UAAAkB;AAAA,EACA,UAAAqC;AAAA,EACA,MAAAqB;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAvB;AAAA,EACA,eAAAI;AAAA,EACA,YAAAE;AAAA,EACA,qBAAAK;AAAA,EACA,qBAAAG;AAAA,EACA,wBAAAa;AAAA,EACA,UAAA4D;AAAA,EACA,kBAAAC;AACF,GAAuC;AACrC,QAAMC,IAAe3H,EAAM,OAAO,EAAK,GACjC4H,IAAwB5H,EAAM,OAAO,EAAK,GAC1C6H,IAAkC7H,EAAM,OAAO,EAAK,GACpD8H,IAA+B9H,EAAM,OAAsB,IAAI,GAE/D,CAAC+H,GAAOC,CAAQ,IAAIhI,EAAM,SAAS,MAAO5B,KAAgB,EAAG;AAEnE,EAAA4B,EAAM,UAAU,OACd0H,EAAiB,UAAU,CAACO,MAAc;AACxC,IAAAD,EAASC,CAAS;AAAA,EACpB,GACO,MAAM;AACX,IAAAP,EAAiB,UAAU;AAAA,EAC7B,IACC,CAACA,CAAgB,CAAC;AAErB,QAAMQ,IAAgBlI,EAAM;AAAA,IAC1B,CAACN,MAAsB;AACrB,YAAMyI,IAAOtF,EAAoB,WAAWzE,KAAS;AAErD,UAAIgK,IAAYxJ,EAAQ,UAAU,CAACG,MAAWA,EAAO,UAAUoJ,CAAI;AACnE,MAAIC,MAAc,OAChBA,IAAY1I,MAAc,IAAI,KAAKd,EAAQ;AAG7C,eAASyJ,IAAYD,IAAY1I,GAAW2I,KAAa,KAAKA,IAAYzJ,EAAQ,QAAQyJ,KAAa3I,GAAW;AAChH,cAAM4I,IAAa1J,EAAQyJ,CAAS;AACpC,YAAKrJ,EAAmBsJ,CAAU,GAElC;AAAA,UAAAtF,EAAoBsF,EAAW,KAAK,GACpCR,EAA6B,UAAUQ,EAAW,OAClDN,EAASM,EAAW,KAAK,GACzBtG,EAAcsG,EAAW,KAAK;AAC9B;AAAA;AAAA,MACF;AAAA,IACF;AAAA,IACA,CAACzF,GAAqBb,GAAepD,GAASoE,GAAqB5E,CAAK;AAAA,EAAA;AAG1E,EAAA4B,EAAM,UAAU,MAAM;AACpB,IAAI2H,EAAa,WACjBK,EAAS5J,KAAgB,EAAE;AAAA,EAC7B,GAAG,CAACA,CAAK,CAAC;AAEV,QAAMmK,IAAmB7G;AAAA,IACvB;AAAA,IACA;AAAA,IACA,CAACqG,KAAS;AAAA,IACVvE,KAAQ;AAAA,IACR;AAAA,IACAtB;AAAA,EAAA;AAGF,SACEsE,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,IAAA/E,gBAAAA,EAAAA;AAAAA,MAAC+G;AAAA,MAAA;AAAA,QACC,IAAA1G;AAAA,QACA,eAAaQ;AAAA,QACb,iBAAeE,IAAa,SAAS;AAAA,QACrC,MAAK;AAAA,QACL,UAAA1C;AAAA,QACA,UAAAqC;AAAA,QACA,UAAAsF;AAAA,QACA,cAAc;AAAA,QACd,MAAM;AAAA,UACJ,EAAE,MAAM,SAAS,MAAM,GAAA;AAAA,UACvB,EAAE,MAAM,QAAQ,MAAM,GAAA;AAAA,QAAK;AAAA,QAE7B,UAAU,CAACgB,GAAUC,MAAkB;AACrC,gBAAMC,KAAUD,EAAc,QAAQD,GAAU,QAAQ,OAAO,EAAE;AAEjE,cADIE,EAAO,UAAU,KACjBA,EAAO,UAAU,EAAG,QAAOD,EAAc,cAAc,CAAC;AAE5D,gBAAME,IAAazK,EAAK,OAAOwK,EAAO,MAAM,GAAG,CAAC,CAAC,CAAC;AAElD,iBADwB/J,EAAQ,KAAK,CAACG,MAAWA,EAAO,MAAM,WAAW,GAAG6J,CAAU,GAAG,CAAC,IAC9DF,EAAc,cAAc,CAAC,IAElDA,EAAc,cAAc,CAAC;AAAA,QACtC;AAAA,QACA,aAAAzG;AAAA,QACA,OAAO8F;AAAA,QACP,WAAWQ;AAAA,QACX,UAAU,CAACM,MAAa;AACtB,gBAAMC,IAAW,OAAOD,KAAa,WAAWA,IAAW,OAAOA,KAAY,EAAE;AAGhF,UAFAb,EAASc,CAAQ,GAEbA,EAAS,QAAQ,OAAO,EAAE,EAAE,WAAW,KAIvC1K,KACFoJ,EAAS,IAAI;AAAA,QAEjB;AAAA,QACA,YAAY,CAACuB,MAAc;AACzB,gBAAMD,IAAW,OAAOC,KAAc,WAAWA,IAAY,OAAOA,KAAa,EAAE;AACnF,cAAIjB,EAA6B,YAAYgB,GAAU;AACrD,YAAAhB,EAA6B,UAAU;AACvC;AAAA,UACF;AAEA,gBAAMkB,IAAWrK,EAAmCmK,GAAUlK,CAAO;AACrE,cAAI,CAACoK;AACH;AAGF,cAAIA,EAAS,iBAAiB;AAI5B,gBAHAhG,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GAE7B5K,MAAU4K,EAAS;AACrB;AAGF,YAAAxB,EAASwB,EAAS,eAAe;AACjC;AAAA,UACF;AAEA,gBAAM7J,IAAgBF,EAAoB+J,EAAS,MAAM;AACzD,cAAI7J,KAAiB;AACnB;AAGF,gBAAM8J,IAAgB/J,GAA4BC,GAAeP,CAAO;AACxE,UAAKqK,KAILjG,EAAoBiG,EAAc,KAAK;AAAA,QACzC;AAAA,QACA,eAAe,MAAM;AAEnB,UADArB,EAAsB,UAAU,IAC5B,CAAA9H,MACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,aAAa,CAACW,MAAU;AAGtB,UAFAwD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,OAAO,WAAa,OAAe,SAAS,kBAAkBzD,EAAM,eAC1G,CAAAtE,MACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,SAAS,MAAM;AACb,UAAI3D,KACC0D,KACHC,EAAQ,EAAI;AAAA,QAEhB;AAAA,QACA,WAAW,CAACW,MAAU;AACpB,cAAI,CAAAtE,GAIJ;AAAA,gBAAIsE,EAAM,QAAQ,SAASZ,KAAQ,CAACY,EAAM,kBAAkB;AAC1D,cAAAX,EAAQ,EAAK;AACb;AAAA,YACF;AAEA,gBAAIW,EAAM,QAAQ,UAAU;AAC1B,kBAAI,CAACZ;AACH;AAEF,cAAAY,EAAM,eAAA,GACNX,EAAQ,EAAK;AACb;AAAA,YACF;AAcA,gBAZI,CAACD,KAAQ,CAACY,EAAM,qBAEfA,EAAM,IAAI,WAAW,KAAKA,EAAM,QAAQ,eAAeA,EAAM,QAAQ,aACtE,CAACA,EAAM,WACP,CAACA,EAAM,WACP,CAACA,EAAM,UAGPX,EAAQ,EAAI,GAIZW,EAAM,QAAQ,eAAeA,EAAM,QAAQ,WAAW;AAIxD,kBAHAP,EAAA,GACAO,EAAM,eAAA,GAEF,CAACZ,GAAM;AACT,gBAAAC,EAAQ,EAAI;AACZ;AAAA,cACF;AAEA,cAAAyE,EAAc9D,EAAM,QAAQ,cAAc,IAAI,EAAE;AAChD;AAAA,YACF;AAEA,gBAAIA,EAAM,QAAQ,SAAS;AACzB,cAAAP,EAAA;AACA,oBAAMmF,IAAWrK,EAAmCoJ,GAAOnJ,CAAO;AAClE,kBAAI,CAACoK;AACH;AAGF,kBAAIA,EAAS,iBAAiB;AAC5B,gBAAA5E,EAAM,eAAA,GACNpB,EAAoBgG,EAAS,eAAe,GAC5ChB,EAASgB,EAAS,eAAe,GAC7B5K,MAAU4K,EAAS,mBACrBxB,EAASwB,EAAS,eAAe,GAEnCvF,EAAQ,EAAK;AACb;AAAA,cACF;AAEA,oBAAMtE,IAAgBF,EAAoB+J,EAAS,MAAM;AACzD,kBAAI7J,KAAiB;AACnB;AAGF,oBAAM8J,IAAgB/J,GAA4BC,GAAeP,CAAO;AACxE,kBAAI,CAACqK;AACH;AAGF,cAAA7E,EAAM,eAAA,GACNpB,EAAoBiG,EAAc,KAAK,GACvCjB,EAASiB,EAAc,KAAK,GACxB7K,MAAU6K,EAAc,SAC1BzB,EAASyB,EAAc,KAAK,GAE9BxF,EAAQ,EAAK;AACb;AAAA,YACF;AAAA;AAAA,QACF;AAAA,QACA,SAAS,CAACW,MAAU;AAClB,gBAAM8E,IAAkB,CAACtB,EAAsB,WAAW,CAACC,EAAgC;AAI3F,cAHAD,EAAsB,UAAU,IAChCC,EAAgC,UAAU,IAC1CF,EAAa,UAAU,IACnBuB,GAAiB;AACnB,kBAAMC,IAAU/E,EAAM;AACtB,kCAAsB,MAAM+E,EAAQ,QAAQ;AAAA,UAC9C;AAEA,UAAIrJ,KAIA0D,KAIJC,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,QAAQ,MAAM;AACZ,UAAAkE,EAAa,UAAU;AAEvB,gBAAMpJ,IAAUwJ,EAAM,KAAA;AACtB,cAAI,CAACxJ,GAAS;AACZ,YAAAyJ,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,gBAAM4K,IAAWrK,EAAmCJ,GAASK,CAAO;AACpE,cAAI,CAACoK,GAAU;AACb,YAAAhB,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,cAAI,CAAC4K,EAAS,iBAAiB;AAC7B,YAAAhB,EAAS5J,KAAgB,EAAE;AAC3B;AAAA,UACF;AAEA,UAAA4J,EAASgB,EAAS,eAAe,GAC7B5K,MAAU4K,EAAS,mBACrBxB,EAASwB,EAAS,eAAe;AAAA,QAErC;AAAA,MAAA;AAAA,IAAA;AAAA,IAGFvH,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,UAAU;AAAA,QACV,UAAA3B;AAAA,QACA,aAAU;AAAA,QACV,WAAW4B;AAAA,UACT;AAAA,QAAA;AAAA,QAEF,cAAY8B,IAAO,sBAAsB;AAAA,QACzC,eAAe,CAACY,MAAU;AACxB,UAAAA,EAAM,eAAA;AAAA,QACR;AAAA,QACA,aAAa,CAACA,MAAU;AACtB,UAAAA,EAAM,eAAA;AAAA,QACR;AAAA,QACA,SAAS,MAAM;AACb,UAAItE,KACJ2D,EAAQ,CAACD,CAAI;AAAA,QACf;AAAA,QAEA,UAAA/B,gBAAAA,EAAAA,IAACG,IAAA,EAAY,eAAW,IAAC,WAAU,SAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAC9C,GACF;AAEJ;"}
package/dist/index180.js CHANGED
@@ -1,17 +1,7 @@
1
- import h from "./index96.js";
2
- function L(i, r, u) {
3
- return s(i, r, void 0, u);
4
- }
5
- function s(i, r, u, e) {
6
- r && (e = new h(e.metadata), e.selectNumberingPlan(r));
7
- var f = e.type(u), n = f && f.possibleLengths() || e.possibleLengths();
8
- if (!n)
9
- return "IS_POSSIBLE";
10
- var t = i.length, l = n[0];
11
- return l === t ? "IS_POSSIBLE" : l > t ? "TOO_SHORT" : n[n.length - 1] < t ? "TOO_LONG" : n.indexOf(t, 1) >= 0 ? "IS_POSSIBLE" : "INVALID_LENGTH";
1
+ function o(e, n) {
2
+ return `Week ${e}`;
12
3
  }
13
4
  export {
14
- s as checkNumberLengthForType,
15
- L as default
5
+ o as labelWeekNumber
16
6
  };
17
7
  //# sourceMappingURL=index180.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index180.js","sources":["../../../node_modules/libphonenumber-js/es6/helpers/checkNumberLength.js"],"sourcesContent":["import Metadata from '../metadata.js';\nimport mergeArrays from './mergeArrays.js';\nexport default function checkNumberLength(nationalNumber, country, metadata) {\n return checkNumberLengthForType(nationalNumber, country, undefined, metadata);\n}\n\n// Checks whether a number is possible for a certain `country` based on the number length.\n//\n// This function is not supported by metadata generated with ancient versions of\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\n//\n// There was also a known issue with `checkNumberLength()` function:\n// if a number is possible only in a certain `country` among several `countries`\n// that share the same \"country calling code\", that function would check\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\n// and would not check if it's actually be possible in the speciifc `country`.\n//\n// For example, \"+1310xxxx\" numbers are valid in Canada.\n// However, they are not possible in the US due to being too short.\n// Since Canada and the US share the same country calling code — \"+1\" —\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\n//\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\n// but at the same time `isPossible()` could output `false`, which was contradictory.\n//\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\n//\n// The solution suggested by Google was implemented: an optional `country` argument\n// was added to `checkNumberLength()` function. If present, that `country` will be used\n// to check phone number length for that specific `country` rather than the \"main\" country\n// for the shared \"country calling code\".\n//\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\n // If the exact `country` is specified, it's no necessarily already selected in `metadata`.\n // Most likely, in cases when there're multiple countries corresponding to the same\n // \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\n if (country) {\n metadata = new Metadata(metadata.metadata);\n metadata.selectNumberingPlan(country);\n }\n var type_info = metadata.type(type);\n\n // There should always be \"<possiblePengths/>\" set for every type element.\n // This is declared in the XML schema.\n // For size efficiency, where a sub-description (e.g. fixed-line)\n // has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\n // so we fall back to the \"general description\". Where no numbers of the type\n // exist at all, there is one possible length (-1) which is guaranteed\n // not to match the length of any real phone number.\n var possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths();\n // let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\n\n // Metadata before version `1.0.18` didn't contain `possible_lengths`.\n if (!possible_lengths) {\n return 'IS_POSSIBLE';\n }\n if (type === 'FIXED_LINE_OR_MOBILE') {\n // No such country in metadata.\n /* istanbul ignore next */\n if (!metadata.type('FIXED_LINE')) {\n // The rare case has been encountered where no fixedLine data is available\n // (true for some non-geographic entities), so we just check mobile.\n return checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata);\n }\n var mobile_type = metadata.type('MOBILE');\n if (mobile_type) {\n // Merge the mobile data in if there was any. \"Concat\" creates a new\n // array, it doesn't edit possible_lengths in place, so we don't need a copy.\n // Note that when adding the possible lengths from mobile, we have\n // to again check they aren't empty since if they are this indicates\n // they are the same as the general desc and should be obtained from there.\n possible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths());\n // The current list is sorted; we need to merge in the new list and\n // re-sort (duplicates are okay). Sorting isn't so expensive because\n // the lists are very small.\n\n // if (local_lengths) {\n // \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\n // } else {\n // \tlocal_lengths = mobile_type.possibleLengthsLocal()\n // }\n }\n }\n // If the type doesn't exist then return 'INVALID_LENGTH'.\n else if (type && !type_info) {\n return 'INVALID_LENGTH';\n }\n var actual_length = nationalNumber.length;\n\n // In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\n // // This is safe because there is never an overlap beween the possible lengths\n // // and the local-only lengths; this is checked at build time.\n // if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\n // {\n // \treturn 'IS_POSSIBLE_LOCAL_ONLY'\n // }\n\n var minimum_length = possible_lengths[0];\n if (minimum_length === actual_length) {\n return 'IS_POSSIBLE';\n }\n if (minimum_length > actual_length) {\n return 'TOO_SHORT';\n }\n if (possible_lengths[possible_lengths.length - 1] < actual_length) {\n return 'TOO_LONG';\n }\n\n // We skip the first element since we've already checked it.\n return possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH';\n}\n//# sourceMappingURL=checkNumberLength.js.map"],"names":["checkNumberLength","nationalNumber","country","metadata","checkNumberLengthForType","type","Metadata","type_info","possible_lengths","actual_length","minimum_length"],"mappings":";AAEe,SAASA,EAAkBC,GAAgBC,GAASC,GAAU;AAC3E,SAAOC,EAAyBH,GAAgBC,GAAS,QAAWC,CAAQ;AAC9E;AA4BO,SAASC,EAAyBH,GAAgBC,GAASG,GAAMF,GAAU;AAIhF,EAAID,MACFC,IAAW,IAAIG,EAASH,EAAS,QAAQ,GACzCA,EAAS,oBAAoBD,CAAO;AAEtC,MAAIK,IAAYJ,EAAS,KAAKE,CAAI,GAS9BG,IAAmBD,KAAaA,EAAU,gBAAe,KAAMJ,EAAS,gBAAe;AAI3F,MAAI,CAACK;AACH,WAAO;AAiCT,MAAIC,IAAgBR,EAAe,QAU/BS,IAAiBF,EAAiB,CAAC;AACvC,SAAIE,MAAmBD,IACd,gBAELC,IAAiBD,IACZ,cAELD,EAAiBA,EAAiB,SAAS,CAAC,IAAIC,IAC3C,aAIFD,EAAiB,QAAQC,GAAe,CAAC,KAAK,IAAI,gBAAgB;AAC3E;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index180.js","sources":["../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumber.js"],"sourcesContent":["/**\n * Generates the ARIA label for the week number cell (the first cell in a row).\n *\n * @defaultValue `Week ${weekNumber}`\n * @param weekNumber - The number of the week.\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number cell.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumber(weekNumber, _options) {\n return `Week ${weekNumber}`;\n}\n"],"names":["labelWeekNumber","weekNumber","_options"],"mappings":"AAUO,SAASA,EAAgBC,GAAYC,GAAU;AAClD,SAAO,QAAQD,CAAU;AAC7B;","x_google_ignoreList":[0]}
package/dist/index181.js CHANGED
@@ -1,158 +1,7 @@
1
- function s(t) {
2
- "@babel/helpers - typeof";
3
- return s = typeof Symbol == "function" && typeof Symbol.iterator == "symbol" ? function(e) {
4
- return typeof e;
5
- } : function(e) {
6
- return e && typeof Symbol == "function" && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e;
7
- }, s(t);
8
- }
9
- function f(t, e) {
10
- if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function");
11
- }
12
- function l(t, e) {
13
- for (var r = 0; r < e.length; r++) {
14
- var n = e[r];
15
- n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(t, g(n.key), n);
16
- }
17
- }
18
- function p(t, e, r) {
19
- return e && l(t.prototype, e), Object.defineProperty(t, "prototype", { writable: !1 }), t;
20
- }
21
- function g(t) {
22
- var e = x(t, "string");
23
- return s(e) == "symbol" ? e : e + "";
24
- }
25
- function x(t, e) {
26
- if (s(t) != "object" || !t) return t;
27
- var r = t[Symbol.toPrimitive];
28
- if (r !== void 0) {
29
- var n = r.call(t, e);
30
- if (s(n) != "object") return n;
31
- throw new TypeError("@@toPrimitive must return a primitive value.");
32
- }
33
- return String(t);
34
- }
35
- var y = /* @__PURE__ */ (function() {
36
- function t() {
37
- f(this, t);
38
- }
39
- return p(t, [{
40
- key: "parse",
41
- value: function(r) {
42
- if (this.context = [{
43
- or: !0,
44
- instructions: []
45
- }], this.parsePattern(r), this.context.length !== 1)
46
- throw new Error("Non-finalized contexts left when pattern parse ended");
47
- var n = this.context[0], i = n.branches, o = n.instructions;
48
- if (i)
49
- return {
50
- op: "|",
51
- args: i.concat([a(o)])
52
- };
53
- if (o.length === 0)
54
- throw new Error("Pattern is required");
55
- return o.length === 1 ? o[0] : o;
56
- }
57
- }, {
58
- key: "startContext",
59
- value: function(r) {
60
- this.context.push(r);
61
- }
62
- }, {
63
- key: "endContext",
64
- value: function() {
65
- this.context.pop();
66
- }
67
- }, {
68
- key: "getContext",
69
- value: function() {
70
- return this.context[this.context.length - 1];
71
- }
72
- }, {
73
- key: "parsePattern",
74
- value: function(r) {
75
- if (!r)
76
- throw new Error("Pattern is required");
77
- var n = r.match(w);
78
- if (!n) {
79
- if (C.test(r))
80
- throw new Error("Illegal characters found in a pattern: ".concat(r));
81
- this.getContext().instructions = this.getContext().instructions.concat(r.split(""));
82
- return;
83
- }
84
- var i = n[1], o = r.slice(0, n.index), c = r.slice(n.index + i.length);
85
- switch (i) {
86
- case "(?:":
87
- o && this.parsePattern(o), this.startContext({
88
- or: !0,
89
- instructions: [],
90
- branches: []
91
- });
92
- break;
93
- case ")":
94
- if (!this.getContext().or)
95
- throw new Error('")" operator must be preceded by "(?:" operator');
96
- if (o && this.parsePattern(o), this.getContext().instructions.length === 0)
97
- throw new Error('No instructions found after "|" operator in an "or" group');
98
- var h = this.getContext(), u = h.branches;
99
- u.push(a(this.getContext().instructions)), this.endContext(), this.getContext().instructions.push({
100
- op: "|",
101
- args: u
102
- });
103
- break;
104
- case "|":
105
- if (!this.getContext().or)
106
- throw new Error('"|" operator can only be used inside "or" groups');
107
- if (o && this.parsePattern(o), !this.getContext().branches)
108
- if (this.context.length === 1)
109
- this.getContext().branches = [];
110
- else
111
- throw new Error('"branches" not found in an "or" group context');
112
- this.getContext().branches.push(a(this.getContext().instructions)), this.getContext().instructions = [];
113
- break;
114
- case "[":
115
- o && this.parsePattern(o), this.startContext({
116
- oneOfSet: !0
117
- });
118
- break;
119
- case "]":
120
- if (!this.getContext().oneOfSet)
121
- throw new Error('"]" operator must be preceded by "[" operator');
122
- this.endContext(), this.getContext().instructions.push({
123
- op: "[]",
124
- args: b(o)
125
- });
126
- break;
127
- /* istanbul ignore next */
128
- default:
129
- throw new Error("Unknown operator: ".concat(i));
130
- }
131
- c && this.parsePattern(c);
132
- }
133
- }]);
134
- })();
135
- function b(t) {
136
- for (var e = [], r = 0; r < t.length; ) {
137
- if (t[r] === "-") {
138
- if (r === 0 || r === t.length - 1)
139
- throw new Error("Couldn't parse a one-of set pattern: ".concat(t));
140
- for (var n = t[r - 1].charCodeAt(0) + 1, i = t[r + 1].charCodeAt(0) - 1, o = n; o <= i; )
141
- e.push(String.fromCharCode(o)), o++;
142
- } else
143
- e.push(t[r]);
144
- r++;
145
- }
146
- return e;
147
- }
148
- var C = /[\(\)\[\]\?\:\|]/, w = new RegExp(
149
- // any of:
150
- "(\\||\\(\\?\\:|\\)|\\[|\\])"
151
- );
152
- function a(t) {
153
- return t.length === 1 ? t[0] : t;
1
+ function r(e) {
2
+ return "Week Number";
154
3
  }
155
4
  export {
156
- y as default
5
+ r as labelWeekNumberHeader
157
6
  };
158
7
  //# sourceMappingURL=index181.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index181.js","sources":["../../../node_modules/libphonenumber-js/es6/AsYouTypeFormatter.PatternParser.js"],"sourcesContent":["function _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nvar PatternParser = /*#__PURE__*/function () {\n function PatternParser() {\n _classCallCheck(this, PatternParser);\n }\n return _createClass(PatternParser, [{\n key: \"parse\",\n value: function parse(pattern) {\n this.context = [{\n or: true,\n instructions: []\n }];\n this.parsePattern(pattern);\n if (this.context.length !== 1) {\n throw new Error('Non-finalized contexts left when pattern parse ended');\n }\n var _this$context$ = this.context[0],\n branches = _this$context$.branches,\n instructions = _this$context$.instructions;\n if (branches) {\n return {\n op: '|',\n args: branches.concat([expandSingleElementArray(instructions)])\n };\n }\n\n /* istanbul ignore if */\n if (instructions.length === 0) {\n throw new Error('Pattern is required');\n }\n if (instructions.length === 1) {\n return instructions[0];\n }\n return instructions;\n }\n }, {\n key: \"startContext\",\n value: function startContext(context) {\n this.context.push(context);\n }\n }, {\n key: \"endContext\",\n value: function endContext() {\n this.context.pop();\n }\n }, {\n key: \"getContext\",\n value: function getContext() {\n return this.context[this.context.length - 1];\n }\n }, {\n key: \"parsePattern\",\n value: function parsePattern(pattern) {\n if (!pattern) {\n throw new Error('Pattern is required');\n }\n var match = pattern.match(OPERATOR);\n if (!match) {\n if (ILLEGAL_CHARACTER_REGEXP.test(pattern)) {\n throw new Error(\"Illegal characters found in a pattern: \".concat(pattern));\n }\n this.getContext().instructions = this.getContext().instructions.concat(pattern.split(''));\n return;\n }\n var operator = match[1];\n var before = pattern.slice(0, match.index);\n var rightPart = pattern.slice(match.index + operator.length);\n switch (operator) {\n case '(?:':\n if (before) {\n this.parsePattern(before);\n }\n this.startContext({\n or: true,\n instructions: [],\n branches: []\n });\n break;\n case ')':\n if (!this.getContext().or) {\n throw new Error('\")\" operator must be preceded by \"(?:\" operator');\n }\n if (before) {\n this.parsePattern(before);\n }\n if (this.getContext().instructions.length === 0) {\n throw new Error('No instructions found after \"|\" operator in an \"or\" group');\n }\n var _this$getContext = this.getContext(),\n branches = _this$getContext.branches;\n branches.push(expandSingleElementArray(this.getContext().instructions));\n this.endContext();\n this.getContext().instructions.push({\n op: '|',\n args: branches\n });\n break;\n case '|':\n if (!this.getContext().or) {\n throw new Error('\"|\" operator can only be used inside \"or\" groups');\n }\n if (before) {\n this.parsePattern(before);\n }\n // The top-level is an implicit \"or\" group, if required.\n if (!this.getContext().branches) {\n // `branches` are not defined only for the root implicit \"or\" operator.\n /* istanbul ignore else */\n if (this.context.length === 1) {\n this.getContext().branches = [];\n } else {\n throw new Error('\"branches\" not found in an \"or\" group context');\n }\n }\n this.getContext().branches.push(expandSingleElementArray(this.getContext().instructions));\n this.getContext().instructions = [];\n break;\n case '[':\n if (before) {\n this.parsePattern(before);\n }\n this.startContext({\n oneOfSet: true\n });\n break;\n case ']':\n if (!this.getContext().oneOfSet) {\n throw new Error('\"]\" operator must be preceded by \"[\" operator');\n }\n this.endContext();\n this.getContext().instructions.push({\n op: '[]',\n args: parseOneOfSet(before)\n });\n break;\n\n /* istanbul ignore next */\n default:\n throw new Error(\"Unknown operator: \".concat(operator));\n }\n if (rightPart) {\n this.parsePattern(rightPart);\n }\n }\n }]);\n}();\nexport { PatternParser as default };\nfunction parseOneOfSet(pattern) {\n var values = [];\n var i = 0;\n while (i < pattern.length) {\n if (pattern[i] === '-') {\n if (i === 0 || i === pattern.length - 1) {\n throw new Error(\"Couldn't parse a one-of set pattern: \".concat(pattern));\n }\n var prevValue = pattern[i - 1].charCodeAt(0) + 1;\n var nextValue = pattern[i + 1].charCodeAt(0) - 1;\n var value = prevValue;\n while (value <= nextValue) {\n values.push(String.fromCharCode(value));\n value++;\n }\n } else {\n values.push(pattern[i]);\n }\n i++;\n }\n return values;\n}\nvar ILLEGAL_CHARACTER_REGEXP = /[\\(\\)\\[\\]\\?\\:\\|]/;\nvar OPERATOR = new RegExp(\n// any of:\n'(' +\n// or operator\n'\\\\|' +\n// or\n'|' +\n// or group start\n'\\\\(\\\\?\\\\:' +\n// or\n'|' +\n// or group end\n'\\\\)' +\n// or\n'|' +\n// one-of set start\n'\\\\[' +\n// or\n'|' +\n// one-of set end\n'\\\\]' + ')');\nfunction expandSingleElementArray(array) {\n if (array.length === 1) {\n return array[0];\n }\n return array;\n}\n//# sourceMappingURL=AsYouTypeFormatter.PatternParser.js.map"],"names":["_typeof","o","_classCallCheck","a","n","_defineProperties","e","r","t","_toPropertyKey","_createClass","i","_toPrimitive","PatternParser","pattern","_this$context$","branches","instructions","expandSingleElementArray","context","match","OPERATOR","ILLEGAL_CHARACTER_REGEXP","operator","before","rightPart","_this$getContext","parseOneOfSet","values","prevValue","nextValue","value","array"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index181.js","sources":["../../../node_modules/react-day-picker/dist/esm/labels/labelWeekNumberHeader.js"],"sourcesContent":["/**\n * Generates the ARIA label for the week number header element.\n *\n * @defaultValue `\"Week Number\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the week number header.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelWeekNumberHeader(_options) {\n return \"Week Number\";\n}\n"],"names":["labelWeekNumberHeader","_options"],"mappings":"AASO,SAASA,EAAsBC,GAAU;AAC5C,SAAO;AACX;","x_google_ignoreList":[0]}
package/dist/index182.js CHANGED
@@ -1,34 +1,7 @@
1
- import o from "./index96.js";
2
- import l from "./index180.js";
3
- function u(e, n, r) {
4
- if (n === void 0 && (n = {}), r = new o(r), n.v2) {
5
- if (!e.countryCallingCode)
6
- throw new Error("Invalid phone number object passed");
7
- r.selectNumberingPlan(e.countryCallingCode);
8
- } else {
9
- if (!e.phone)
10
- return !1;
11
- if (e.country) {
12
- if (!r.hasCountry(e.country))
13
- throw new Error("Unknown country: ".concat(e.country));
14
- r.selectNumberingPlan(e.country);
15
- } else {
16
- if (!e.countryCallingCode)
17
- throw new Error("Invalid phone number object passed");
18
- r.selectNumberingPlan(e.countryCallingCode);
19
- }
20
- }
21
- if (r.possibleLengths())
22
- return s(e.phone || e.nationalNumber, e.country, r);
23
- if (e.countryCallingCode && r.isNonGeographicCallingCode(e.countryCallingCode))
24
- return !0;
25
- throw new Error('Missing "possibleLengths" in metadata. Perhaps the metadata has been generated before v1.0.18.');
26
- }
27
- function s(e, n, r) {
28
- return l(e, n, r) === "IS_POSSIBLE";
1
+ function e(o) {
2
+ return "Choose the Year";
29
3
  }
30
4
  export {
31
- u as default,
32
- s as isPossibleNumber
5
+ e as labelYearDropdown
33
6
  };
34
7
  //# sourceMappingURL=index182.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index182.js","sources":["../../../node_modules/libphonenumber-js/es6/isPossible.js"],"sourcesContent":["import Metadata from './metadata.js';\nimport checkNumberLength from './helpers/checkNumberLength.js';\n\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\nexport default function isPossiblePhoneNumber(input, options, metadata) {\n /* istanbul ignore if */\n if (options === undefined) {\n options = {};\n }\n metadata = new Metadata(metadata);\n if (options.v2) {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n } else {\n if (!input.phone) {\n return false;\n }\n if (input.country) {\n if (!metadata.hasCountry(input.country)) {\n throw new Error(\"Unknown country: \".concat(input.country));\n }\n metadata.selectNumberingPlan(input.country);\n } else {\n if (!input.countryCallingCode) {\n throw new Error('Invalid phone number object passed');\n }\n metadata.selectNumberingPlan(input.countryCallingCode);\n }\n }\n\n // Old metadata (< 1.0.18) had no \"possible length\" data.\n if (metadata.possibleLengths()) {\n return isPossibleNumber(input.phone || input.nationalNumber, input.country, metadata);\n } else {\n // There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\n // were missing for \"non-geographical\" numbering plans.\n // Just assume the number is possible in such cases:\n // it's unlikely that anyone generated their custom metadata\n // in that short period of time (one day).\n // This code can be removed in some future major version update.\n if (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\n // \"Non-geographic entities\" did't have `possibleLengths`\n // due to a bug in metadata generation process.\n return true;\n } else {\n throw new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\n }\n }\n}\nexport function isPossibleNumber(nationalNumber, country, metadata) {\n //, isInternational) {\n switch (checkNumberLength(nationalNumber, country, metadata)) {\n case 'IS_POSSIBLE':\n return true;\n // This library ignores \"local-only\" phone numbers (for simplicity).\n // See the readme for more info on what are \"local-only\" phone numbers.\n // case 'IS_POSSIBLE_LOCAL_ONLY':\n // \treturn !isInternational\n default:\n return false;\n }\n}\n//# sourceMappingURL=isPossible.js.map"],"names":["isPossiblePhoneNumber","input","options","metadata","Metadata","isPossibleNumber","nationalNumber","country","checkNumberLength"],"mappings":";;AAgBe,SAASA,EAAsBC,GAAOC,GAASC,GAAU;AAMtE,MAJID,MAAY,WACdA,IAAU,CAAA,IAEZC,IAAW,IAAIC,EAASD,CAAQ,GAC5BD,EAAQ,IAAI;AACd,QAAI,CAACD,EAAM;AACT,YAAM,IAAI,MAAM,oCAAoC;AAEtD,IAAAE,EAAS,oBAAoBF,EAAM,kBAAkB;AAAA,EACvD,OAAO;AACL,QAAI,CAACA,EAAM;AACT,aAAO;AAET,QAAIA,EAAM,SAAS;AACjB,UAAI,CAACE,EAAS,WAAWF,EAAM,OAAO;AACpC,cAAM,IAAI,MAAM,oBAAoB,OAAOA,EAAM,OAAO,CAAC;AAE3D,MAAAE,EAAS,oBAAoBF,EAAM,OAAO;AAAA,IAC5C,OAAO;AACL,UAAI,CAACA,EAAM;AACT,cAAM,IAAI,MAAM,oCAAoC;AAEtD,MAAAE,EAAS,oBAAoBF,EAAM,kBAAkB;AAAA,IACvD;AAAA,EACF;AAGA,MAAIE,EAAS;AACX,WAAOE,EAAiBJ,EAAM,SAASA,EAAM,gBAAgBA,EAAM,SAASE,CAAQ;AAQpF,MAAIF,EAAM,sBAAsBE,EAAS,2BAA2BF,EAAM,kBAAkB;AAG1F,WAAO;AAEP,QAAM,IAAI,MAAM,gGAAgG;AAGtH;AACO,SAASI,EAAiBC,GAAgBC,GAASJ,GAAU;AAElE,SAAQK,EAAkBF,GAAgBC,GAASJ,CAAQ,MACpD;AAST;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index182.js","sources":["../../../node_modules/react-day-picker/dist/esm/labels/labelYearDropdown.js"],"sourcesContent":["/**\n * Generates the ARIA label for the years dropdown.\n *\n * @defaultValue `\"Choose the Year\"`\n * @param options - Optional configuration for the date formatting library.\n * @returns The ARIA label for the years dropdown.\n * @group Labels\n * @see https://daypicker.dev/docs/translation#aria-labels\n */\nexport function labelYearDropdown(_options) {\n return \"Choose the Year\";\n}\n"],"names":["labelYearDropdown","_options"],"mappings":"AASO,SAASA,EAAkBC,GAAU;AACxC,SAAO;AACX;","x_google_ignoreList":[0]}
package/dist/index183.js CHANGED
@@ -1,13 +1,7 @@
1
- import m from "./index96.js";
2
- import o from "./index197.js";
3
- import u from "./index184.js";
4
- function b(e, n, r) {
5
- if (n = n || {}, r = new m(r), r.selectNumberingPlan(e.country, e.countryCallingCode), r.hasTypes())
6
- return u(e, n, r.metadata) !== void 0;
7
- var l = n.v2 ? e.nationalNumber : e.phone;
8
- return o(l, r.nationalNumberPattern());
1
+ function e(t) {
2
+ return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
9
3
  }
10
4
  export {
11
- b as default
5
+ e as getDefaultExportFromCjs
12
6
  };
13
7
  //# sourceMappingURL=index183.js.map