@rpcbase/ui 0.223.0 → 0.225.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 (700) hide show
  1. package/dist/components/DayPickerField/index.d.ts.map +1 -1
  2. package/dist/components/Dialog/index.d.ts +13 -9
  3. package/dist/components/Dialog/index.d.ts.map +1 -1
  4. package/dist/components/FilesUploadField/index.d.ts.map +1 -1
  5. package/dist/components/HourPickerField/index.d.ts.map +1 -1
  6. package/dist/components/I18nField/index.d.ts +7 -2
  7. package/dist/components/I18nField/index.d.ts.map +1 -1
  8. package/dist/components/Select/index.d.ts +16 -10
  9. package/dist/components/Select/index.d.ts.map +1 -1
  10. package/dist/index10.js +102 -103
  11. package/dist/index10.js.map +1 -1
  12. package/dist/index106.js +36 -36
  13. package/dist/index107.js +1 -1
  14. package/dist/index11.js +139 -132
  15. package/dist/index11.js.map +1 -1
  16. package/dist/index118.js +6 -6
  17. package/dist/index12.js +1 -1
  18. package/dist/index121.js +10 -10
  19. package/dist/index123.js +2 -2
  20. package/dist/index124.js +3 -3
  21. package/dist/index125.js +1 -1
  22. package/dist/index127.js +2 -2
  23. package/dist/index129.js +2 -2
  24. package/dist/index150.js +5 -46
  25. package/dist/index150.js.map +1 -1
  26. package/dist/index151.js +68 -5
  27. package/dist/index151.js.map +1 -1
  28. package/dist/index152.js +2 -69
  29. package/dist/index152.js.map +1 -1
  30. package/dist/index153.js +364 -2
  31. package/dist/index153.js.map +1 -1
  32. package/dist/index154.js +201 -303
  33. package/dist/index154.js.map +1 -1
  34. package/dist/index155.js +46 -247
  35. package/dist/index155.js.map +1 -1
  36. package/dist/index156.js +42 -56
  37. package/dist/index156.js.map +1 -1
  38. package/dist/index157.js +169 -46
  39. package/dist/index157.js.map +1 -1
  40. package/dist/index158.js +96 -156
  41. package/dist/index158.js.map +1 -1
  42. package/dist/index159.js +24 -109
  43. package/dist/index159.js.map +1 -1
  44. package/dist/index16.js +77 -72
  45. package/dist/index16.js.map +1 -1
  46. package/dist/index160.js +8 -25
  47. package/dist/index160.js.map +1 -1
  48. package/dist/index161.js +5 -8
  49. package/dist/index161.js.map +1 -1
  50. package/dist/index162.js +5 -4
  51. package/dist/index162.js.map +1 -1
  52. package/dist/index163.js +4 -5
  53. package/dist/index163.js.map +1 -1
  54. package/dist/index164.js +466 -4
  55. package/dist/index164.js.map +1 -1
  56. package/dist/index165.js +139 -420
  57. package/dist/index165.js.map +1 -1
  58. package/dist/index166.js +71 -149
  59. package/dist/index166.js.map +1 -1
  60. package/dist/index167.js +229 -74
  61. package/dist/index167.js.map +1 -1
  62. package/dist/index168.js +9 -262
  63. package/dist/index168.js.map +1 -1
  64. package/dist/index169.js +42 -9
  65. package/dist/index169.js.map +1 -1
  66. package/dist/index170.js +4 -42
  67. package/dist/index170.js.map +1 -1
  68. package/dist/index171.js +11 -4
  69. package/dist/index171.js.map +1 -1
  70. package/dist/index172.js +63 -41
  71. package/dist/index172.js.map +1 -1
  72. package/dist/index173.js +35 -227
  73. package/dist/index173.js.map +1 -1
  74. package/dist/index174.js +14 -22
  75. package/dist/index174.js.map +1 -1
  76. package/dist/index175.js +23 -24
  77. package/dist/index175.js.map +1 -1
  78. package/dist/index176.js +104 -394
  79. package/dist/index176.js.map +1 -1
  80. package/dist/index177.js +13 -59
  81. package/dist/index177.js.map +1 -1
  82. package/dist/index178.js +4 -8
  83. package/dist/index178.js.map +1 -1
  84. package/dist/index179.js +4 -67
  85. package/dist/index179.js.map +1 -1
  86. package/dist/index18.js +6 -6
  87. package/dist/index180.js +5 -20
  88. package/dist/index180.js.map +1 -1
  89. package/dist/index181.js +11 -16
  90. package/dist/index181.js.map +1 -1
  91. package/dist/index182.js +19 -5
  92. package/dist/index182.js.map +1 -1
  93. package/dist/index183.js +13 -6
  94. package/dist/index183.js.map +1 -1
  95. package/dist/index184.js +261 -6
  96. package/dist/index184.js.map +1 -1
  97. package/dist/index185.js +4 -4
  98. package/dist/index185.js.map +1 -1
  99. package/dist/index186.js +28 -7
  100. package/dist/index186.js.map +1 -1
  101. package/dist/index187.js +126 -16
  102. package/dist/index187.js.map +1 -1
  103. package/dist/index188.js +5 -4
  104. package/dist/index188.js.map +1 -1
  105. package/dist/index189.js +78 -4
  106. package/dist/index189.js.map +1 -1
  107. package/dist/index19.js +280 -208
  108. package/dist/index19.js.map +1 -1
  109. package/dist/index190.js +66 -12
  110. package/dist/index190.js.map +1 -1
  111. package/dist/index191.js +8 -9
  112. package/dist/index191.js.map +1 -1
  113. package/dist/index192.js +16 -14
  114. package/dist/index192.js.map +1 -1
  115. package/dist/index193.js +92 -13
  116. package/dist/index193.js.map +1 -1
  117. package/dist/index194.js +65 -4
  118. package/dist/index194.js.map +1 -1
  119. package/dist/index195.js +45 -5
  120. package/dist/index195.js.map +1 -1
  121. package/dist/index196.js +58 -6
  122. package/dist/index196.js.map +1 -1
  123. package/dist/index197.js +8 -5
  124. package/dist/index197.js.map +1 -1
  125. package/dist/index198.js +65 -53
  126. package/dist/index198.js.map +1 -1
  127. package/dist/index199.js +19 -8
  128. package/dist/index199.js.map +1 -1
  129. package/dist/index200.js +16 -4
  130. package/dist/index200.js.map +1 -1
  131. package/dist/index201.js +5 -4
  132. package/dist/index201.js.map +1 -1
  133. package/dist/index202.js +5 -8
  134. package/dist/index202.js.map +1 -1
  135. package/dist/index203.js +6 -4
  136. package/dist/index203.js.map +1 -1
  137. package/dist/index204.js +4 -4
  138. package/dist/index204.js.map +1 -1
  139. package/dist/index205.js +6 -3
  140. package/dist/index205.js.map +1 -1
  141. package/dist/index206.js +16 -10
  142. package/dist/index206.js.map +1 -1
  143. package/dist/index207.js +4 -9
  144. package/dist/index207.js.map +1 -1
  145. package/dist/index208.js +4 -9
  146. package/dist/index208.js.map +1 -1
  147. package/dist/index209.js +12 -10
  148. package/dist/index209.js.map +1 -1
  149. package/dist/index210.js +9 -10
  150. package/dist/index210.js.map +1 -1
  151. package/dist/index211.js +13 -9
  152. package/dist/index211.js.map +1 -1
  153. package/dist/index212.js +13 -6
  154. package/dist/index212.js.map +1 -1
  155. package/dist/index213.js +4 -5
  156. package/dist/index213.js.map +1 -1
  157. package/dist/index214.js +5 -4
  158. package/dist/index214.js.map +1 -1
  159. package/dist/index215.js +6 -5
  160. package/dist/index215.js.map +1 -1
  161. package/dist/index216.js +5 -6
  162. package/dist/index216.js.map +1 -1
  163. package/dist/index217.js +54 -5
  164. package/dist/index217.js.map +1 -1
  165. package/dist/index218.js +8 -16
  166. package/dist/index218.js.map +1 -1
  167. package/dist/index219.js +4 -7
  168. package/dist/index219.js.map +1 -1
  169. package/dist/index220.js +4 -10
  170. package/dist/index220.js.map +1 -1
  171. package/dist/index221.js +8 -10
  172. package/dist/index221.js.map +1 -1
  173. package/dist/index222.js +4 -21
  174. package/dist/index222.js.map +1 -1
  175. package/dist/index223.js +4 -10
  176. package/dist/index223.js.map +1 -1
  177. package/dist/index224.js +3 -9
  178. package/dist/index224.js.map +1 -1
  179. package/dist/index225.js +10 -9
  180. package/dist/index225.js.map +1 -1
  181. package/dist/index226.js +9 -4
  182. package/dist/index226.js.map +1 -1
  183. package/dist/index227.js +9 -5
  184. package/dist/index227.js.map +1 -1
  185. package/dist/index228.js +10 -16
  186. package/dist/index228.js.map +1 -1
  187. package/dist/index229.js +10 -9
  188. package/dist/index229.js.map +1 -1
  189. package/dist/index230.js +9 -18
  190. package/dist/index230.js.map +1 -1
  191. package/dist/index231.js +6 -15
  192. package/dist/index231.js.map +1 -1
  193. package/dist/index232.js +5 -12
  194. package/dist/index232.js.map +1 -1
  195. package/dist/index233.js +4 -29
  196. package/dist/index233.js.map +1 -1
  197. package/dist/index234.js +5 -12
  198. package/dist/index234.js.map +1 -1
  199. package/dist/index235.js +6 -25
  200. package/dist/index235.js.map +1 -1
  201. package/dist/index236.js +5 -5
  202. package/dist/index236.js.map +1 -1
  203. package/dist/index237.js +29 -13
  204. package/dist/index237.js.map +1 -1
  205. package/dist/index238.js +11 -153
  206. package/dist/index238.js.map +1 -1
  207. package/dist/index239.js +23 -28
  208. package/dist/index239.js.map +1 -1
  209. package/dist/index240.js +5 -9
  210. package/dist/index240.js.map +1 -1
  211. package/dist/index241.js +13 -45
  212. package/dist/index241.js.map +1 -1
  213. package/dist/index242.js +7 -11
  214. package/dist/index242.js.map +1 -1
  215. package/dist/index243.js +9 -43
  216. package/dist/index243.js.map +1 -1
  217. package/dist/index244.js +9 -94
  218. package/dist/index244.js.map +1 -1
  219. package/dist/index245.js +20 -85
  220. package/dist/index245.js.map +1 -1
  221. package/dist/index246.js +10 -105
  222. package/dist/index246.js.map +1 -1
  223. package/dist/index247.js +9 -52
  224. package/dist/index247.js.map +1 -1
  225. package/dist/index248.js +9 -11
  226. package/dist/index248.js.map +1 -1
  227. package/dist/index249.js +4 -37
  228. package/dist/index249.js.map +1 -1
  229. package/dist/index250.js +5 -8
  230. package/dist/index250.js.map +1 -1
  231. package/dist/index251.js +14 -114
  232. package/dist/index251.js.map +1 -1
  233. package/dist/index252.js +9 -17
  234. package/dist/index252.js.map +1 -1
  235. package/dist/index253.js +18 -15
  236. package/dist/index253.js.map +1 -1
  237. package/dist/index254.js +15 -3
  238. package/dist/index254.js.map +1 -1
  239. package/dist/index255.js +10 -34
  240. package/dist/index255.js.map +1 -1
  241. package/dist/index256.js +13 -20
  242. package/dist/index256.js.map +1 -1
  243. package/dist/index257.js +154 -9
  244. package/dist/index257.js.map +1 -1
  245. package/dist/index258.js +30 -8
  246. package/dist/index258.js.map +1 -1
  247. package/dist/index259.js +9 -19
  248. package/dist/index259.js.map +1 -1
  249. package/dist/index260.js +45 -25
  250. package/dist/index260.js.map +1 -1
  251. package/dist/index261.js +11 -16
  252. package/dist/index261.js.map +1 -1
  253. package/dist/index262.js +43 -23
  254. package/dist/index262.js.map +1 -1
  255. package/dist/index263.js +95 -28
  256. package/dist/index263.js.map +1 -1
  257. package/dist/index264.js +87 -5
  258. package/dist/index264.js.map +1 -1
  259. package/dist/index265.js +105 -4
  260. package/dist/index265.js.map +1 -1
  261. package/dist/index266.js +52 -17
  262. package/dist/index266.js.map +1 -1
  263. package/dist/index267.js +11 -12
  264. package/dist/index267.js.map +1 -1
  265. package/dist/index268.js +36 -19
  266. package/dist/index268.js.map +1 -1
  267. package/dist/index269.js +9 -5
  268. package/dist/index269.js.map +1 -1
  269. package/dist/index270.js +117 -3
  270. package/dist/index270.js.map +1 -1
  271. package/dist/index271.js +17 -23
  272. package/dist/index271.js.map +1 -1
  273. package/dist/index272.js +14 -111
  274. package/dist/index272.js.map +1 -1
  275. package/dist/index273.js +3 -15
  276. package/dist/index273.js.map +1 -1
  277. package/dist/index274.js +29 -522
  278. package/dist/index274.js.map +1 -1
  279. package/dist/index275.js +19 -124
  280. package/dist/index275.js.map +1 -1
  281. package/dist/index276.js +9 -133
  282. package/dist/index276.js.map +1 -1
  283. package/dist/index277.js +8 -4
  284. package/dist/index277.js.map +1 -1
  285. package/dist/index278.js +19 -4
  286. package/dist/index278.js.map +1 -1
  287. package/dist/index279.js +29 -4
  288. package/dist/index279.js.map +1 -1
  289. package/dist/index28.js +1 -1
  290. package/dist/index280.js +16 -15
  291. package/dist/index280.js.map +1 -1
  292. package/dist/index281.js +66 -8
  293. package/dist/index281.js.map +1 -1
  294. package/dist/index282.js +8 -5
  295. package/dist/index282.js.map +1 -1
  296. package/dist/index283.js +11 -4
  297. package/dist/index283.js.map +1 -1
  298. package/dist/index284.js +7 -544
  299. package/dist/index284.js.map +1 -1
  300. package/dist/index285.js +6 -47
  301. package/dist/index285.js.map +1 -1
  302. package/dist/index286.js +13 -17
  303. package/dist/index286.js.map +1 -1
  304. package/dist/index287.js +3 -5
  305. package/dist/index287.js.map +1 -1
  306. package/dist/index288.js +3 -7
  307. package/dist/index288.js.map +1 -1
  308. package/dist/index289.js +99 -6
  309. package/dist/index289.js.map +1 -1
  310. package/dist/index290.js +17 -7
  311. package/dist/index290.js.map +1 -1
  312. package/dist/index291.js +5 -11
  313. package/dist/index291.js.map +1 -1
  314. package/dist/index292.js +29 -8
  315. package/dist/index292.js.map +1 -1
  316. package/dist/index293.js +51 -12
  317. package/dist/index293.js.map +1 -1
  318. package/dist/index294.js +131 -62
  319. package/dist/index294.js.map +1 -1
  320. package/dist/index295.js +9 -69
  321. package/dist/index295.js.map +1 -1
  322. package/dist/index296.js +4 -8
  323. package/dist/index296.js.map +1 -1
  324. package/dist/index297.js +4 -14
  325. package/dist/index297.js.map +1 -1
  326. package/dist/index298.js +12 -66
  327. package/dist/index298.js.map +1 -1
  328. package/dist/index299.js +21 -4
  329. package/dist/index299.js.map +1 -1
  330. package/dist/index30.js +1 -1
  331. package/dist/index300.js +121 -54
  332. package/dist/index300.js.map +1 -1
  333. package/dist/index301.js +28 -68
  334. package/dist/index301.js.map +1 -1
  335. package/dist/index302.js +33 -31
  336. package/dist/index302.js.map +1 -1
  337. package/dist/index303.js +74 -9
  338. package/dist/index303.js.map +1 -1
  339. package/dist/index304.js +262 -152
  340. package/dist/index304.js.map +1 -1
  341. package/dist/index305.js +28 -107
  342. package/dist/index305.js.map +1 -1
  343. package/dist/index306.js +6 -3
  344. package/dist/index306.js.map +1 -1
  345. package/dist/index307.js +141 -21
  346. package/dist/index307.js.map +1 -1
  347. package/dist/index308.js +61 -15
  348. package/dist/index308.js.map +1 -1
  349. package/dist/index309.js +48 -27
  350. package/dist/index309.js.map +1 -1
  351. package/dist/index31.js +227 -120
  352. package/dist/index31.js.map +1 -1
  353. package/dist/index310.js +15 -13
  354. package/dist/index310.js.map +1 -1
  355. package/dist/index311.js +20 -7
  356. package/dist/index311.js.map +1 -1
  357. package/dist/index312.js +12 -23
  358. package/dist/index312.js.map +1 -1
  359. package/dist/index313.js +51 -13
  360. package/dist/index313.js.map +1 -1
  361. package/dist/index314.js +14 -25
  362. package/dist/index314.js.map +1 -1
  363. package/dist/index315.js +22 -5
  364. package/dist/index315.js.map +1 -1
  365. package/dist/index316.js +55 -0
  366. package/dist/index316.js.map +1 -0
  367. package/dist/index317.js +29 -0
  368. package/dist/index317.js.map +1 -0
  369. package/dist/index318.js +45 -0
  370. package/dist/index318.js.map +1 -0
  371. package/dist/index319.js +43 -0
  372. package/dist/index319.js.map +1 -0
  373. package/dist/index32.js +21 -229
  374. package/dist/index32.js.map +1 -1
  375. package/dist/index320.js +48 -0
  376. package/dist/index320.js.map +1 -0
  377. package/dist/index321.js +24 -0
  378. package/dist/index321.js.map +1 -0
  379. package/dist/index322.js +74 -0
  380. package/dist/index322.js.map +1 -0
  381. package/dist/index323.js +21 -0
  382. package/dist/index323.js.map +1 -0
  383. package/dist/index324.js +15 -0
  384. package/dist/index324.js.map +1 -0
  385. package/dist/index325.js +17 -0
  386. package/dist/index325.js.map +1 -0
  387. package/dist/index326.js +22 -0
  388. package/dist/index326.js.map +1 -0
  389. package/dist/index327.js +40 -0
  390. package/dist/index327.js.map +1 -0
  391. package/dist/index328.js +282 -0
  392. package/dist/index328.js.map +1 -0
  393. package/dist/index329.js +72 -0
  394. package/dist/index329.js.map +1 -0
  395. package/dist/index33.js +4 -23
  396. package/dist/index33.js.map +1 -1
  397. package/dist/index330.js +87 -0
  398. package/dist/index330.js.map +1 -0
  399. package/dist/index331.js +7 -0
  400. package/dist/index331.js.map +1 -0
  401. package/dist/index332.js +33 -0
  402. package/dist/index332.js.map +1 -0
  403. package/dist/index333.js +20 -0
  404. package/dist/index333.js.map +1 -0
  405. package/dist/index334.js +38 -0
  406. package/dist/index334.js.map +1 -0
  407. package/dist/index335.js +20 -0
  408. package/dist/index335.js.map +1 -0
  409. package/dist/index336.js +7 -0
  410. package/dist/index336.js.map +1 -0
  411. package/dist/index337.js +30 -0
  412. package/dist/index337.js.map +1 -0
  413. package/dist/index338.js +7 -0
  414. package/dist/index338.js.map +1 -0
  415. package/dist/index339.js +82 -0
  416. package/dist/index339.js.map +1 -0
  417. package/dist/index34.js +62 -51
  418. package/dist/index34.js.map +1 -1
  419. package/dist/index340.js +273 -0
  420. package/dist/index340.js.map +1 -0
  421. package/dist/index341.js +15 -0
  422. package/dist/index341.js.map +1 -0
  423. package/dist/index342.js +14 -0
  424. package/dist/index342.js.map +1 -0
  425. package/dist/index343.js +29 -0
  426. package/dist/index343.js.map +1 -0
  427. package/dist/index344.js +20 -0
  428. package/dist/index344.js.map +1 -0
  429. package/dist/index345.js +129 -0
  430. package/dist/index345.js.map +1 -0
  431. package/dist/index346.js +9 -0
  432. package/dist/index346.js.map +1 -0
  433. package/dist/index347.js +44 -0
  434. package/dist/index347.js.map +1 -0
  435. package/dist/index348.js +69 -0
  436. package/dist/index348.js.map +1 -0
  437. package/dist/index349.js +17 -0
  438. package/dist/index349.js.map +1 -0
  439. package/dist/index35.js +38 -21
  440. package/dist/index35.js.map +1 -1
  441. package/dist/index350.js +11 -0
  442. package/dist/index350.js.map +1 -0
  443. package/dist/index351.js +9 -0
  444. package/dist/index351.js.map +1 -0
  445. package/dist/index352.js +7 -0
  446. package/dist/index352.js.map +1 -0
  447. package/dist/index353.js +14 -0
  448. package/dist/index353.js.map +1 -0
  449. package/dist/index354.js +11 -0
  450. package/dist/index354.js.map +1 -0
  451. package/dist/index355.js +403 -0
  452. package/dist/index355.js.map +1 -0
  453. package/dist/index356.js +56 -0
  454. package/dist/index356.js.map +1 -0
  455. package/dist/index357.js +15 -0
  456. package/dist/index357.js.map +1 -0
  457. package/dist/index358.js +15 -0
  458. package/dist/index358.js.map +1 -0
  459. package/dist/index359.js +8 -0
  460. package/dist/index359.js.map +1 -0
  461. package/dist/index36.js +75 -127
  462. package/dist/index36.js.map +1 -1
  463. package/dist/index360.js +21 -0
  464. package/dist/index360.js.map +1 -0
  465. package/dist/index361.js +16 -0
  466. package/dist/index361.js.map +1 -0
  467. package/dist/index362.js +24 -0
  468. package/dist/index362.js.map +1 -0
  469. package/dist/index363.js +12 -0
  470. package/dist/index363.js.map +1 -0
  471. package/dist/index364.js +29 -0
  472. package/dist/index364.js.map +1 -0
  473. package/dist/index365.js +30 -0
  474. package/dist/index365.js.map +1 -0
  475. package/dist/index366.js +141 -0
  476. package/dist/index366.js.map +1 -0
  477. package/dist/index367.js +16 -0
  478. package/dist/index367.js.map +1 -0
  479. package/dist/index368.js +230 -0
  480. package/dist/index368.js.map +1 -0
  481. package/dist/index369.js +7 -0
  482. package/dist/index369.js.map +1 -0
  483. package/dist/index37.js +22 -221
  484. package/dist/index37.js.map +1 -1
  485. package/dist/index370.js +23 -0
  486. package/dist/index370.js.map +1 -0
  487. package/dist/index371.js +81 -0
  488. package/dist/index371.js.map +1 -0
  489. package/dist/index372.js +15 -0
  490. package/dist/index372.js.map +1 -0
  491. package/dist/index373.js +7 -0
  492. package/dist/index373.js.map +1 -0
  493. package/dist/index374.js +81 -0
  494. package/dist/index374.js.map +1 -0
  495. package/dist/index375.js +204 -0
  496. package/dist/index375.js.map +1 -0
  497. package/dist/index376.js +75 -0
  498. package/dist/index376.js.map +1 -0
  499. package/dist/index377.js +12 -0
  500. package/dist/index377.js.map +1 -0
  501. package/dist/index378.js +19 -0
  502. package/dist/index378.js.map +1 -0
  503. package/dist/index379.js +20 -0
  504. package/dist/index379.js.map +1 -0
  505. package/dist/index38.js +37 -90
  506. package/dist/index38.js.map +1 -1
  507. package/dist/index380.js +7 -0
  508. package/dist/index380.js.map +1 -0
  509. package/dist/index381.js +15 -0
  510. package/dist/index381.js.map +1 -0
  511. package/dist/index382.js +9 -0
  512. package/dist/index382.js.map +1 -0
  513. package/dist/index383.js +24 -0
  514. package/dist/index383.js.map +1 -0
  515. package/dist/index384.js +48 -0
  516. package/dist/index384.js.map +1 -0
  517. package/dist/index385.js +21 -0
  518. package/dist/index385.js.map +1 -0
  519. package/dist/index386.js +8 -0
  520. package/dist/index386.js.map +1 -0
  521. package/dist/index387.js +8 -0
  522. package/dist/index387.js.map +1 -0
  523. package/dist/index388.js +8 -0
  524. package/dist/index388.js.map +1 -0
  525. package/dist/index389.js +7 -0
  526. package/dist/index389.js.map +1 -0
  527. package/dist/index39.js +28 -119
  528. package/dist/index39.js.map +1 -1
  529. package/dist/index390.js +19 -0
  530. package/dist/index390.js.map +1 -0
  531. package/dist/index391.js +12 -0
  532. package/dist/index391.js.map +1 -0
  533. package/dist/index392.js +9 -0
  534. package/dist/index392.js.map +1 -0
  535. package/dist/index393.js +8 -0
  536. package/dist/index393.js.map +1 -0
  537. package/dist/index394.js +549 -0
  538. package/dist/index394.js.map +1 -0
  539. package/dist/index395.js +50 -0
  540. package/dist/index395.js.map +1 -0
  541. package/dist/index396.js +21 -0
  542. package/dist/index396.js.map +1 -0
  543. package/dist/index397.js +9 -0
  544. package/dist/index397.js.map +1 -0
  545. package/dist/index398.js +11 -0
  546. package/dist/index398.js.map +1 -0
  547. package/dist/index399.js +10 -0
  548. package/dist/index399.js.map +1 -0
  549. package/dist/index40.js +23 -6
  550. package/dist/index40.js.map +1 -1
  551. package/dist/index400.js +11 -0
  552. package/dist/index400.js.map +1 -0
  553. package/dist/index401.js +15 -0
  554. package/dist/index401.js.map +1 -0
  555. package/dist/index402.js +12 -0
  556. package/dist/index402.js.map +1 -0
  557. package/dist/index403.js +16 -0
  558. package/dist/index403.js.map +1 -0
  559. package/dist/index404.js +18 -0
  560. package/dist/index404.js.map +1 -0
  561. package/dist/index405.js +495 -0
  562. package/dist/index405.js.map +1 -0
  563. package/dist/index406.js +6 -0
  564. package/dist/index406.js.map +1 -0
  565. package/dist/index407.js +6 -0
  566. package/dist/index407.js.map +1 -0
  567. package/dist/index408.js +8 -0
  568. package/dist/index408.js.map +1 -0
  569. package/dist/index409.js +59 -0
  570. package/dist/index409.js.map +1 -0
  571. package/dist/index41.js +51 -817
  572. package/dist/index41.js.map +1 -1
  573. package/dist/index410.js +71 -0
  574. package/dist/index410.js.map +1 -0
  575. package/dist/index411.js +34 -0
  576. package/dist/index411.js.map +1 -0
  577. package/dist/index412.js +12 -0
  578. package/dist/index412.js.map +1 -0
  579. package/dist/index413.js +156 -0
  580. package/dist/index413.js.map +1 -0
  581. package/dist/index414.js +111 -0
  582. package/dist/index414.js.map +1 -0
  583. package/dist/index415.js +11 -0
  584. package/dist/index415.js.map +1 -0
  585. package/dist/index416.js +5 -0
  586. package/dist/index416.js.map +1 -0
  587. package/dist/index417.js +47 -0
  588. package/dist/index417.js.map +1 -0
  589. package/dist/index418.js +59 -0
  590. package/dist/index418.js.map +1 -0
  591. package/dist/index419.js +11 -0
  592. package/dist/index419.js.map +1 -0
  593. package/dist/index42.js +51 -57
  594. package/dist/index42.js.map +1 -1
  595. package/dist/index420.js +5 -0
  596. package/dist/index420.js.map +1 -0
  597. package/dist/index421.js +58 -0
  598. package/dist/index421.js.map +1 -0
  599. package/dist/index422.js +59 -0
  600. package/dist/index422.js.map +1 -0
  601. package/dist/index423.js +19 -0
  602. package/dist/index423.js.map +1 -0
  603. package/dist/index424.js +32 -0
  604. package/dist/index424.js.map +1 -0
  605. package/dist/index425.js +16 -0
  606. package/dist/index425.js.map +1 -0
  607. package/dist/index426.js +10 -0
  608. package/dist/index426.js.map +1 -0
  609. package/dist/index427.js +5 -0
  610. package/dist/index427.js.map +1 -0
  611. package/dist/index428.js +5 -0
  612. package/dist/index428.js.map +1 -0
  613. package/dist/index429.js +5 -0
  614. package/dist/index429.js.map +1 -0
  615. package/dist/index43.js +21 -7
  616. package/dist/index43.js.map +1 -1
  617. package/dist/index430.js +5 -0
  618. package/dist/index430.js.map +1 -0
  619. package/dist/index44.js +130 -2
  620. package/dist/index44.js.map +1 -1
  621. package/dist/index45.js +221 -11
  622. package/dist/index45.js.map +1 -1
  623. package/dist/index46.js +90 -18
  624. package/dist/index46.js.map +1 -1
  625. package/dist/index47.js +118 -7
  626. package/dist/index47.js.map +1 -1
  627. package/dist/index48.js +6 -2
  628. package/dist/index48.js.map +1 -1
  629. package/dist/index49.js +326 -23
  630. package/dist/index49.js.map +1 -1
  631. package/dist/index50.js +247 -221
  632. package/dist/index50.js.map +1 -1
  633. package/dist/index51.js +27 -2
  634. package/dist/index51.js.map +1 -1
  635. package/dist/index52.js +129 -2
  636. package/dist/index52.js.map +1 -1
  637. package/dist/index53.js +26 -7
  638. package/dist/index53.js.map +1 -1
  639. package/dist/index54.js +22 -33
  640. package/dist/index54.js.map +1 -1
  641. package/dist/index55.js +143 -46
  642. package/dist/index55.js.map +1 -1
  643. package/dist/index56.js +35 -8
  644. package/dist/index56.js.map +1 -1
  645. package/dist/index57.js +29 -12
  646. package/dist/index57.js.map +1 -1
  647. package/dist/index58.js +41 -2
  648. package/dist/index58.js.map +1 -1
  649. package/dist/index59.js +21 -2
  650. package/dist/index59.js.map +1 -1
  651. package/dist/index6.js +84 -85
  652. package/dist/index6.js.map +1 -1
  653. package/dist/index60.js +132 -6
  654. package/dist/index60.js.map +1 -1
  655. package/dist/index61.js +51 -8
  656. package/dist/index61.js.map +1 -1
  657. package/dist/index62.js +30 -6
  658. package/dist/index62.js.map +1 -1
  659. package/dist/index63.js +57 -4
  660. package/dist/index63.js.map +1 -1
  661. package/dist/index64.js +7 -47
  662. package/dist/index64.js.map +1 -1
  663. package/dist/index65.js +2 -51
  664. package/dist/index65.js.map +1 -1
  665. package/dist/index66.js +11 -7
  666. package/dist/index66.js.map +1 -1
  667. package/dist/index67.js +17 -13
  668. package/dist/index67.js.map +1 -1
  669. package/dist/index68.js +7 -133
  670. package/dist/index68.js.map +1 -1
  671. package/dist/index69.js +2 -11
  672. package/dist/index69.js.map +1 -1
  673. package/dist/index7.js +123 -98
  674. package/dist/index7.js.map +1 -1
  675. package/dist/index70.js +22 -215
  676. package/dist/index70.js.map +1 -1
  677. package/dist/index71.js +234 -13
  678. package/dist/index71.js.map +1 -1
  679. package/dist/index72.js +2 -47
  680. package/dist/index72.js.map +1 -1
  681. package/dist/index73.js +2 -50
  682. package/dist/index73.js.map +1 -1
  683. package/dist/index74.js +2 -4
  684. package/dist/index74.js.map +1 -1
  685. package/dist/index75.js +2 -6
  686. package/dist/index75.js.map +1 -1
  687. package/dist/index76.js +6 -28
  688. package/dist/index76.js.map +1 -1
  689. package/dist/index77.js +8 -50
  690. package/dist/index77.js.map +1 -1
  691. package/dist/index78.js +6 -9
  692. package/dist/index78.js.map +1 -1
  693. package/dist/index8.js +53 -54
  694. package/dist/index8.js.map +1 -1
  695. package/dist/index9.js +1 -1
  696. package/dist/lib/render-as-child.d.ts +5 -0
  697. package/dist/lib/render-as-child.d.ts.map +1 -0
  698. package/package.json +3 -6
  699. package/dist/lib/react-compose-refs.d.ts +0 -5
  700. package/dist/lib/react-compose-refs.d.ts.map +0 -1
package/dist/index16.js CHANGED
@@ -1,22 +1,27 @@
1
1
  import { j as t } from "./index30.js";
2
- import { c as H } from "./index28.js";
3
- import { useContext as Q, useState as T, useMemo as K, useCallback as W, useEffect as G, createContext as Z, useRef as J } from "react";
4
- import * as P from "@radix-ui/react-dialog";
5
- import { X as _, Loader2 as ee, MoreVertical as te } from "lucide-react";
6
- import { cn as Y } from "./index2.js";
7
- const q = (s) => {
2
+ import { c as q } from "./index28.js";
3
+ import { useContext as H, useState as T, useMemo as B, useCallback as Q, useEffect as Y, createContext as W, useRef as G } from "react";
4
+ import { X as Z, Loader2 as _, MoreVertical as ee } from "lucide-react";
5
+ import { cn as K } from "./index2.js";
6
+ import { DialogRoot as te } from "./index34.js";
7
+ import { DialogPortal as ne } from "./index39.js";
8
+ import { DialogBackdrop as re } from "./index38.js";
9
+ import { DialogPopup as oe } from "./index36.js";
10
+ import { DialogTitle as se } from "./index40.js";
11
+ import { DialogClose as ie } from "./index35.js";
12
+ const X = (s) => {
8
13
  const e = Date.parse(s);
9
14
  return Number.isFinite(e) ? e : 0;
10
- }, ne = (s) => {
11
- const e = new Date(q(s));
15
+ }, ae = (s) => {
16
+ const e = new Date(X(s));
12
17
  if (!Number.isFinite(e.getTime())) return "unknown";
13
18
  const n = e.getFullYear(), i = String(e.getMonth() + 1).padStart(2, "0"), a = String(e.getDate()).padStart(2, "0");
14
19
  return `${n}-${i}-${a}`;
15
- }, re = (s) => {
20
+ }, le = (s) => {
16
21
  if (s === "unknown") return "Unknown date";
17
- const [e, n, i] = s.split("-"), a = Number(e), c = Number(n), o = Number(i);
18
- if (!Number.isFinite(a) || !Number.isFinite(c) || !Number.isFinite(o)) return "Unknown date";
19
- const U = new Date(a, c - 1, o);
22
+ const [e, n, i] = s.split("-"), a = Number(e), l = Number(n), o = Number(i);
23
+ if (!Number.isFinite(a) || !Number.isFinite(l) || !Number.isFinite(o)) return "Unknown date";
24
+ const U = new Date(a, l - 1, o);
20
25
  if (!Number.isFinite(U.getTime())) return "Unknown date";
21
26
  const f = (/* @__PURE__ */ new Date()).getFullYear() !== a;
22
27
  return U.toLocaleDateString(void 0, f ? {
@@ -29,28 +34,28 @@ const q = (s) => {
29
34
  month: "short",
30
35
  day: "numeric"
31
36
  });
32
- }, V = (s) => {
37
+ }, J = (s) => {
33
38
  const e = [];
34
39
  let n = null;
35
40
  for (const i of s) {
36
- const a = ne(i.createdAt);
41
+ const a = ae(i.createdAt);
37
42
  a !== n && (n = a, e.push({
38
43
  key: a,
39
- label: re(a),
44
+ label: le(a),
40
45
  items: []
41
46
  })), e[e.length - 1].items.push(i);
42
47
  }
43
48
  return e;
44
- }, oe = Z(null);
45
- function ue({
49
+ }, ce = W(null);
50
+ function Ne({
46
51
  open: s,
47
52
  onOpenChange: e,
48
53
  className: n,
49
54
  limit: i = 50,
50
55
  defaultUnreadOnly: a = !1,
51
- realtimeContext: c
56
+ realtimeContext: l
52
57
  }) {
53
- const o = Q(c ?? oe), [U, A] = T([]), [f, g] = T(0), [F, S] = T(0), [L, $] = T(!1), [M, h] = T(null), [l, R] = T(a), y = o?.notifications ?? U, v = o?.unreadCount ?? f, j = o?.unseenCount ?? F, D = o?.loading ?? L, O = o?.error ? o.error instanceof Error ? o.error.message : String(o.error) : M, p = K(() => y.slice(0, i), [i, y]), N = K(() => p.filter((r) => !r.readAt), [p]), w = K(() => p.filter((r) => !!r.readAt), [p]), k = K(() => V(N), [N]), E = K(() => V(w), [w]), b = W(async ({
58
+ const o = H(l ?? ce), [U, A] = T([]), [f, g] = T(0), [F, D] = T(0), [L, $] = T(!1), [S, h] = T(null), [c, M] = T(a), y = o?.notifications ?? U, v = o?.unreadCount ?? f, j = o?.unseenCount ?? F, R = o?.loading ?? L, O = o?.error ? o.error instanceof Error ? o.error.message : String(o.error) : S, p = B(() => y.slice(0, i), [i, y]), N = B(() => p.filter((r) => !r.readAt), [p]), w = B(() => p.filter((r) => !!r.readAt), [p]), k = B(() => J(N), [N]), E = B(() => J(w), [w]), b = Q(async ({
54
59
  unreadOnly: r,
55
60
  markSeen: u
56
61
  }) => {
@@ -73,14 +78,14 @@ function ue({
73
78
  return;
74
79
  }
75
80
  const C = Array.isArray(d.notifications) ? d.notifications : [];
76
- A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), S(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
81
+ A(C), g(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), D(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
77
82
  } catch {
78
83
  h("Unable to load notifications.");
79
84
  } finally {
80
85
  $(!1);
81
86
  }
82
87
  }, [i]);
83
- G(() => {
88
+ Y(() => {
84
89
  if (s) {
85
90
  if (o) {
86
91
  (async () => {
@@ -104,17 +109,17 @@ function ue({
104
109
  return;
105
110
  }
106
111
  b({
107
- unreadOnly: l,
112
+ unreadOnly: c,
108
113
  markSeen: !0
109
114
  });
110
115
  }
111
- }, [s, o, b, l]), G(() => {
116
+ }, [s, o, b, c]), Y(() => {
112
117
  s && (o || b({
113
- unreadOnly: l,
118
+ unreadOnly: c,
114
119
  markSeen: !1
115
120
  }));
116
- }, [s, o, b, l]);
117
- const B = async (r) => {
121
+ }, [s, o, b, c]);
122
+ const P = async (r) => {
118
123
  try {
119
124
  const u = await fetch(`/api/rb/notifications/${encodeURIComponent(r)}/read`, {
120
125
  method: "POST",
@@ -130,7 +135,7 @@ function ue({
130
135
  if (o) return;
131
136
  A((C) => {
132
137
  const m = C.find((x) => x.id === r);
133
- return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt && S((x) => Math.max(0, x - 1)), C.map((x) => x.id === r && !x.readAt ? {
138
+ return m && !m.readAt && g((x) => Math.max(0, x - 1)), m && !m.seenAt && D((x) => Math.max(0, x - 1)), C.map((x) => x.id === r && !x.readAt ? {
134
139
  ...x,
135
140
  readAt: d,
136
141
  ...x.seenAt ? {} : {
@@ -154,54 +159,54 @@ function ue({
154
159
  if (!u.ok || !I?.ok || o) return;
155
160
  A((d) => {
156
161
  const C = d.find((m) => m.id === r);
157
- return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt && S((m) => Math.max(0, m - 1)), d.filter((m) => m.id !== r);
162
+ return C && !C.readAt && g((m) => Math.max(0, m - 1)), C && !C.seenAt && D((m) => Math.max(0, m - 1)), d.filter((m) => m.id !== r);
158
163
  });
159
164
  } catch {
160
165
  return;
161
166
  }
162
167
  };
163
- return /* @__PURE__ */ t.jsx(P.Root, { open: s, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(P.Portal, { children: [
164
- /* @__PURE__ */ t.jsx(P.Overlay, { className: "fixed inset-0 z-50 bg-black/50" }),
165
- /* @__PURE__ */ t.jsxs(P.Content, { className: Y("fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none", n), children: [
168
+ return /* @__PURE__ */ t.jsx(te, { open: s, onOpenChange: e, children: /* @__PURE__ */ t.jsxs(ne, { children: [
169
+ /* @__PURE__ */ t.jsx(re, { className: "fixed inset-0 z-50 bg-black/50" }),
170
+ /* @__PURE__ */ t.jsxs(oe, { className: K("fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none", n), children: [
166
171
  /* @__PURE__ */ t.jsxs("header", { className: "flex items-center justify-between gap-2 border-b px-4 py-3", children: [
167
172
  /* @__PURE__ */ t.jsxs("div", { className: "flex min-w-0 flex-col", children: [
168
- /* @__PURE__ */ t.jsx(P.Title, { className: "text-sm font-semibold", children: "Notifications" }),
173
+ /* @__PURE__ */ t.jsx(se, { className: "text-sm font-semibold", children: "Notifications" }),
169
174
  /* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children: v > 0 ? `${v} unread` : j > 0 ? `${j} new` : "All caught up" })
170
175
  ] }),
171
176
  /* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
172
- /* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => R((r) => !r), className: Y("rounded-md border px-2 py-1 text-xs", l ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: l ? "Unread" : "All" }),
173
- /* @__PURE__ */ t.jsx(P.Close, { asChild: !0, children: /* @__PURE__ */ t.jsx("button", { type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", children: /* @__PURE__ */ t.jsx(_, { className: "h-4 w-4" }) }) })
177
+ /* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => M((r) => !r), className: K("rounded-md border px-2 py-1 text-xs", c ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: c ? "Unread" : "All" }),
178
+ /* @__PURE__ */ t.jsx(ie, { render: /* @__PURE__ */ t.jsx("button", { type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent" }), children: /* @__PURE__ */ t.jsx(Z, { className: "h-4 w-4" }) })
174
179
  ] })
175
180
  ] }),
176
- /* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: D ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(ee, { className: "h-4 w-4 animate-spin" }) }) : O ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: O }) : p.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: "No notifications." }) : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-4", children: [
181
+ /* @__PURE__ */ t.jsx("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: R ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(_, { className: "h-4 w-4 animate-spin" }) }) : O ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: O }) : p.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: "No notifications." }) : /* @__PURE__ */ t.jsxs("div", { className: "flex flex-col gap-4", children: [
177
182
  /* @__PURE__ */ t.jsxs("div", { children: [
178
183
  /* @__PURE__ */ t.jsx("div", { className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground", children: "Unread notifications" }),
179
184
  k.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No unread notifications." }) : k.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
180
185
  /* @__PURE__ */ t.jsx("div", { className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground", children: r.label }),
181
- /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(X, { notification: u, onMarkRead: B, onArchive: z }, u.id)) })
186
+ /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
182
187
  ] }, `unread:${r.key}`))
183
188
  ] }),
184
- l ? null : /* @__PURE__ */ t.jsxs("div", { children: [
189
+ c ? null : /* @__PURE__ */ t.jsxs("div", { children: [
185
190
  /* @__PURE__ */ t.jsx("div", { className: "sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground", children: "Previous notifications" }),
186
191
  E.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No previous notifications." }) : E.map((r) => /* @__PURE__ */ t.jsxs("div", { children: [
187
192
  /* @__PURE__ */ t.jsx("div", { className: "sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground", children: r.label }),
188
- /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(X, { notification: u, onMarkRead: B, onArchive: z }, u.id)) })
193
+ /* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: r.items.map((u) => /* @__PURE__ */ t.jsx(V, { notification: u, onMarkRead: P, onArchive: z }, u.id)) })
189
194
  ] }, `previous:${r.key}`))
190
195
  ] })
191
196
  ] }) })
192
197
  ] })
193
198
  ] }) });
194
199
  }
195
- function X(s) {
196
- const e = H.c(45), {
200
+ function V(s) {
201
+ const e = q.c(45), {
197
202
  notification: n,
198
203
  onMarkRead: i,
199
204
  onArchive: a
200
- } = s, [c, o] = T(!1), U = J(null), A = J(null), f = !n.readAt;
205
+ } = s, [l, o] = T(!1), U = G(null), A = G(null), f = !n.readAt;
201
206
  let g;
202
207
  if (e[0] !== n.createdAt) {
203
208
  e: {
204
- const b = new Date(q(n.createdAt));
209
+ const b = new Date(X(n.createdAt));
205
210
  if (!Number.isFinite(b.getTime())) {
206
211
  g = "";
207
212
  break e;
@@ -212,76 +217,76 @@ function X(s) {
212
217
  } else
213
218
  g = e[1];
214
219
  const F = g;
215
- let S, L;
216
- e[2] !== c ? (S = () => {
217
- if (!c)
220
+ let D, L;
221
+ e[2] !== l ? (D = () => {
222
+ if (!l)
218
223
  return;
219
224
  const b = (z) => {
220
225
  const r = z.target;
221
226
  r instanceof Node && (U.current?.contains(r) || A.current?.contains(r) || o(!1));
222
- }, B = (z) => {
227
+ }, P = (z) => {
223
228
  z.key === "Escape" && (o(!1), A.current?.focus());
224
229
  };
225
- return document.addEventListener("pointerdown", b), document.addEventListener("keydown", B), () => {
226
- document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", B);
230
+ return document.addEventListener("pointerdown", b), document.addEventListener("keydown", P), () => {
231
+ document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", P);
227
232
  };
228
- }, L = [c], e[2] = c, e[3] = S, e[4] = L) : (S = e[3], L = e[4]), G(S, L);
233
+ }, L = [l], e[2] = l, e[3] = D, e[4] = L) : (D = e[3], L = e[4]), Y(D, L);
229
234
  const $ = f ? "bg-primary/5" : "bg-background";
230
- let M;
231
- e[5] !== $ ? (M = Y("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", $), e[5] = $, e[6] = M) : M = e[6];
235
+ let S;
236
+ e[5] !== $ ? (S = K("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", $), e[5] = $, e[6] = S) : S = e[6];
232
237
  let h;
233
238
  e[7] !== f || e[8] !== n.id || e[9] !== n.url || e[10] !== i ? (h = () => {
234
239
  f && i(n.id), n.url && (window.location.href = n.url);
235
240
  }, e[7] = f, e[8] = n.id, e[9] = n.url, e[10] = i, e[11] = h) : h = e[11];
236
- let l;
237
- e[12] !== n.title ? (l = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[12] = n.title, e[13] = l) : l = e[13];
238
- let R;
239
- e[14] !== n.body ? (R = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[14] = n.body, e[15] = R) : R = e[15];
241
+ let c;
242
+ e[12] !== n.title ? (c = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[12] = n.title, e[13] = c) : c = e[13];
243
+ let M;
244
+ e[14] !== n.body ? (M = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[14] = n.body, e[15] = M) : M = e[15];
240
245
  let y;
241
- e[16] !== l || e[17] !== R ? (y = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
242
- l,
243
- R
244
- ] }), e[16] = l, e[17] = R, e[18] = y) : y = e[18];
246
+ e[16] !== c || e[17] !== M ? (y = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
247
+ c,
248
+ M
249
+ ] }), e[16] = c, e[17] = M, e[18] = y) : y = e[18];
245
250
  let v;
246
251
  e[19] !== n.url ? (v = n.url ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 truncate text-xs text-primary", children: n.url }) : null, e[19] = n.url, e[20] = v) : v = e[20];
247
252
  let j;
248
253
  e[21] !== F ? (j = F ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 text-[11px] text-muted-foreground", children: F }) : null, e[21] = F, e[22] = j) : j = e[22];
249
- let D;
250
- e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (D = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
254
+ let R;
255
+ e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (R = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: h, children: [
251
256
  y,
252
257
  v,
253
258
  j
254
- ] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] = D) : D = e[27];
259
+ ] }), e[23] = v, e[24] = j, e[25] = h, e[26] = y, e[27] = R) : R = e[27];
255
260
  let O, p;
256
261
  e[28] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (O = () => {
257
- o(se);
258
- }, p = /* @__PURE__ */ t.jsx(te, { className: "h-4 w-4" }), e[28] = O, e[29] = p) : (O = e[28], p = e[29]);
262
+ o(de);
263
+ }, p = /* @__PURE__ */ t.jsx(ee, { className: "h-4 w-4" }), e[28] = O, e[29] = p) : (O = e[28], p = e[29]);
259
264
  let N;
260
- e[30] !== c ? (N = /* @__PURE__ */ t.jsx("button", { ref: A, type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", "aria-label": "Notification options", "aria-haspopup": "menu", "aria-expanded": c, onClick: O, children: p }), e[30] = c, e[31] = N) : N = e[31];
265
+ e[30] !== l ? (N = /* @__PURE__ */ t.jsx("button", { ref: A, type: "button", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", "aria-label": "Notification options", "aria-haspopup": "menu", "aria-expanded": l, onClick: O, children: p }), e[30] = l, e[31] = N) : N = e[31];
261
266
  let w;
262
- e[32] !== f || e[33] !== c || e[34] !== n.id || e[35] !== a || e[36] !== i ? (w = c ? /* @__PURE__ */ t.jsxs("div", { ref: U, role: "menu", className: Y("absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95"), children: [
267
+ e[32] !== f || e[33] !== l || e[34] !== n.id || e[35] !== a || e[36] !== i ? (w = l ? /* @__PURE__ */ t.jsxs("div", { ref: U, role: "menu", className: K("absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md", "animate-in fade-in-0 zoom-in-95"), children: [
263
268
  /* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground", onClick: () => {
264
269
  o(!1), a(n.id);
265
270
  }, children: "Archive" }),
266
271
  /* @__PURE__ */ t.jsx("button", { type: "button", role: "menuitem", className: "relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50", disabled: !f, onClick: () => {
267
272
  o(!1), i(n.id);
268
273
  }, children: "Mark as read" })
269
- ] }) : null, e[32] = f, e[33] = c, e[34] = n.id, e[35] = a, e[36] = i, e[37] = w) : w = e[37];
274
+ ] }) : null, e[32] = f, e[33] = l, e[34] = n.id, e[35] = a, e[36] = i, e[37] = w) : w = e[37];
270
275
  let k;
271
276
  e[38] !== N || e[39] !== w ? (k = /* @__PURE__ */ t.jsxs("div", { className: "relative flex items-start", children: [
272
277
  N,
273
278
  w
274
279
  ] }), e[38] = N, e[39] = w, e[40] = k) : k = e[40];
275
280
  let E;
276
- return e[41] !== D || e[42] !== k || e[43] !== M ? (E = /* @__PURE__ */ t.jsxs("div", { className: M, children: [
277
- D,
281
+ return e[41] !== R || e[42] !== k || e[43] !== S ? (E = /* @__PURE__ */ t.jsxs("div", { className: S, children: [
282
+ R,
278
283
  k
279
- ] }), e[41] = D, e[42] = k, e[43] = M, e[44] = E) : E = e[44], E;
284
+ ] }), e[41] = R, e[42] = k, e[43] = S, e[44] = E) : E = e[44], E;
280
285
  }
281
- function se(s) {
286
+ function de(s) {
282
287
  return !s;
283
288
  }
284
289
  export {
285
- ue as NotificationsDrawer
290
+ Ne as NotificationsDrawer
286
291
  };
287
292
  //# sourceMappingURL=index16.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close asChild>\n <button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\">\n <X className=\"h-4 w-4\" />\n </button>\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive","jsxs","cn","v","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
1
+ {"version":3,"file":"index16.js","sources":["../src/components/Notifications/NotificationsDrawer.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState, type Context } from \"react\"\nimport { Dialog as DialogPrimitive } from \"@base-ui/react/dialog\"\nimport { Loader2, MoreVertical, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nimport type { NotificationItem, NotificationsRealtimeState } from \"./types\"\n\n\ntype ListResponse = {\n ok?: boolean\n error?: string\n notifications?: NotificationItem[]\n unreadCount?: number\n unseenCount?: number\n}\n\ntype DayGroup = {\n key: string\n label: string\n items: NotificationItem[]\n}\n\nconst toMs = (iso: string): number => {\n const ms = Date.parse(iso)\n return Number.isFinite(ms) ? ms : 0\n}\n\nconst getDayKey = (iso: string): string => {\n const date = new Date(toMs(iso))\n if (!Number.isFinite(date.getTime())) return \"unknown\"\n\n const year = date.getFullYear()\n const month = String(date.getMonth() + 1).padStart(2, \"0\")\n const day = String(date.getDate()).padStart(2, \"0\")\n\n return `${year}-${month}-${day}`\n}\n\nconst formatDayLabel = (key: string): string => {\n if (key === \"unknown\") return \"Unknown date\"\n const [yearRaw, monthRaw, dayRaw] = key.split(\"-\")\n const year = Number(yearRaw)\n const month = Number(monthRaw)\n const day = Number(dayRaw)\n\n if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) return \"Unknown date\"\n\n const date = new Date(year, month - 1, day)\n if (!Number.isFinite(date.getTime())) return \"Unknown date\"\n\n const now = new Date()\n const includeYear = now.getFullYear() !== year\n return date.toLocaleDateString(undefined, includeYear\n ? { weekday: \"short\", month: \"short\", day: \"numeric\", year: \"numeric\" }\n : { weekday: \"short\", month: \"short\", day: \"numeric\" })\n}\n\nconst groupByDay = (items: NotificationItem[]): DayGroup[] => {\n const groups: DayGroup[] = []\n let currentKey: string | null = null\n\n for (const item of items) {\n const key = getDayKey(item.createdAt)\n if (key !== currentKey) {\n currentKey = key\n groups.push({ key, label: formatDayLabel(key), items: [] })\n }\n groups[groups.length - 1]!.items.push(item)\n }\n\n return groups\n}\n\nconst EmptyRealtimeContext = createContext<NotificationsRealtimeState | null>(null)\n\nexport function NotificationsDrawer({\n open,\n onOpenChange,\n className,\n limit = 50,\n defaultUnreadOnly = false,\n realtimeContext,\n}: {\n open: boolean\n onOpenChange: (open: boolean) => void\n className?: string\n limit?: number\n defaultUnreadOnly?: boolean\n realtimeContext?: Context<NotificationsRealtimeState | null>\n}) {\n const realtime = useContext(realtimeContext ?? EmptyRealtimeContext)\n\n const [items, setItems] = useState<NotificationItem[]>([])\n const [unreadCount, setUnreadCount] = useState<number>(0)\n const [unseenCount, setUnseenCount] = useState<number>(0)\n const [loading, setLoading] = useState(false)\n const [error, setError] = useState<string | null>(null)\n const [unreadOnly, setUnreadOnly] = useState<boolean>(defaultUnreadOnly)\n\n const mergedItems = realtime?.notifications ?? items\n const mergedUnreadCount = realtime?.unreadCount ?? unreadCount\n const mergedUnseenCount = realtime?.unseenCount ?? unseenCount\n const mergedLoading = realtime?.loading ?? loading\n const mergedError = realtime?.error\n ? (realtime.error instanceof Error ? realtime.error.message : String(realtime.error))\n : error\n\n const visibleItems = useMemo(() => mergedItems.slice(0, limit), [limit, mergedItems])\n\n const unread = useMemo(() => visibleItems.filter((n) => !n.readAt), [visibleItems])\n const read = useMemo(() => visibleItems.filter((n) => Boolean(n.readAt)), [visibleItems])\n const unreadGroups = useMemo(() => groupByDay(unread), [unread])\n const readGroups = useMemo(() => groupByDay(read), [read])\n\n const refresh = useCallback(async ({ unreadOnly, markSeen }: { unreadOnly: boolean; markSeen: boolean }) => {\n setLoading(true)\n setError(null)\n\n try {\n const res = await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: JSON.stringify({ limit, unreadOnly, markSeen }),\n })\n\n const json = (await res.json().catch(() => null)) as ListResponse | null\n if (!res.ok || !json?.ok) {\n setError(json?.error || \"Unable to load notifications.\")\n return\n }\n\n const nextItems = Array.isArray(json.notifications) ? json.notifications : []\n setItems(nextItems)\n setUnreadCount(Number.isFinite(json.unreadCount) ? Math.max(0, Math.floor(json.unreadCount ?? 0)) : 0)\n setUnseenCount(Number.isFinite(json.unseenCount) ? Math.max(0, Math.floor(json.unseenCount ?? 0)) : 0)\n } catch {\n setError(\"Unable to load notifications.\")\n } finally {\n setLoading(false)\n }\n }, [limit])\n\n useEffect(() => {\n if (!open) return\n if (realtime) {\n void (async () => {\n try {\n await fetch(\"/api/rb/notifications\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: JSON.stringify({ limit: 1, markSeen: true }),\n })\n } catch {\n return\n }\n })()\n return\n }\n void refresh({ unreadOnly, markSeen: true })\n }, [open, realtime, refresh, unreadOnly])\n\n useEffect(() => {\n if (!open) return\n if (realtime) return\n void refresh({ unreadOnly, markSeen: false })\n }, [open, realtime, refresh, unreadOnly])\n\n const markAsRead = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/read`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n keepalive: true,\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n const nowIso = new Date().toISOString()\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.map((n) => (n.id === id && !n.readAt ? { ...n, readAt: nowIso, ...(n.seenAt ? {} : { seenAt: nowIso }) } : n))\n })\n } catch {\n return\n }\n }\n\n const archive = async (id: string) => {\n try {\n const res = await fetch(`/api/rb/notifications/${encodeURIComponent(id)}/archive`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n credentials: \"include\",\n body: \"{}\",\n })\n\n const json = (await res.json().catch(() => null)) as { ok?: boolean } | null\n if (!res.ok || !json?.ok) return\n\n if (realtime) return\n setItems((current) => {\n const target = current.find((n) => n.id === id)\n if (target && !target.readAt) {\n setUnreadCount((count) => Math.max(0, count - 1))\n }\n if (target && !target.seenAt) {\n setUnseenCount((count) => Math.max(0, count - 1))\n }\n return current.filter((n) => n.id !== id)\n })\n } catch {\n return\n }\n }\n\n return (\n <DialogPrimitive.Root open={open} onOpenChange={onOpenChange}>\n <DialogPrimitive.Portal>\n <DialogPrimitive.Backdrop className=\"fixed inset-0 z-50 bg-black/50\" />\n <DialogPrimitive.Popup\n className={cn(\n \"fixed right-0 top-0 z-50 flex h-full w-full max-w-md flex-col border-l bg-background shadow-xl outline-none\",\n className,\n )}\n >\n <header className=\"flex items-center justify-between gap-2 border-b px-4 py-3\">\n <div className=\"flex min-w-0 flex-col\">\n <DialogPrimitive.Title className=\"text-sm font-semibold\">Notifications</DialogPrimitive.Title>\n <span className=\"text-xs text-muted-foreground\">\n {mergedUnreadCount > 0 ? `${mergedUnreadCount} unread` : mergedUnseenCount > 0 ? `${mergedUnseenCount} new` : \"All caught up\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <button\n type=\"button\"\n onClick={() => setUnreadOnly((v) => !v)}\n className={cn(\n \"rounded-md border px-2 py-1 text-xs\",\n unreadOnly ? \"bg-accent text-foreground\" : \"bg-background text-muted-foreground hover:bg-accent\",\n )}\n >\n {unreadOnly ? \"Unread\" : \"All\"}\n </button>\n <DialogPrimitive.Close\n render={<button type=\"button\" className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\" />}\n >\n <X className=\"h-4 w-4\" />\n </DialogPrimitive.Close>\n </div>\n </header>\n\n <div className=\"flex-1 overflow-y-auto px-4 pb-3\">\n {mergedLoading ? (\n <div className=\"flex items-center justify-center py-10 text-muted-foreground\">\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n </div>\n ) : mergedError ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">{mergedError}</div>\n ) : visibleItems.length === 0 ? (\n <div className=\"py-10 text-center text-sm text-muted-foreground\">No notifications.</div>\n ) : (\n <div className=\"flex flex-col gap-4\">\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Unread notifications\n </div>\n {unreadGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No unread notifications.</div>\n ) : (\n unreadGroups.map((group) => (\n <div key={`unread:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n\n {unreadOnly ? null : (\n <div>\n <div className=\"sticky top-0 z-20 -mx-4 flex h-8 items-center border-b bg-background px-4 text-xs font-semibold text-muted-foreground\">\n Previous notifications\n </div>\n {readGroups.length === 0 ? (\n <div className=\"py-6 text-center text-sm text-muted-foreground\">No previous notifications.</div>\n ) : (\n readGroups.map((group) => (\n <div key={`previous:${group.key}`}>\n <div className=\"sticky top-8 z-10 -mx-4 flex h-7 items-center bg-background px-4 text-[11px] font-semibold text-muted-foreground\">\n {group.label}\n </div>\n <div className=\"-mx-4 flex flex-col divide-y divide-border\">\n {group.items.map((n) => (\n <NotificationRow\n key={n.id}\n notification={n}\n onMarkRead={markAsRead}\n onArchive={archive}\n />\n ))}\n </div>\n </div>\n ))\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </DialogPrimitive.Popup>\n </DialogPrimitive.Portal>\n </DialogPrimitive.Root>\n )\n}\n\nfunction NotificationRow({\n notification,\n onMarkRead,\n onArchive,\n}: {\n notification: NotificationItem\n onMarkRead: (id: string) => void\n onArchive: (id: string) => void\n}) {\n const [menuOpen, setMenuOpen] = useState(false)\n const menuRef = useRef<HTMLDivElement | null>(null)\n const menuButtonRef = useRef<HTMLButtonElement | null>(null)\n const isUnread = !notification.readAt\n const createdAtLabel = (() => {\n const date = new Date(toMs(notification.createdAt))\n if (!Number.isFinite(date.getTime())) return \"\"\n return date.toLocaleString()\n })()\n\n useEffect(() => {\n if (!menuOpen) return\n\n const handlePointerDown = (event: PointerEvent) => {\n const target = event.target\n if (!(target instanceof Node)) return\n if (menuRef.current?.contains(target) || menuButtonRef.current?.contains(target)) return\n setMenuOpen(false)\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key !== \"Escape\") return\n setMenuOpen(false)\n menuButtonRef.current?.focus()\n }\n\n document.addEventListener(\"pointerdown\", handlePointerDown)\n document.addEventListener(\"keydown\", handleKeyDown)\n\n return () => {\n document.removeEventListener(\"pointerdown\", handlePointerDown)\n document.removeEventListener(\"keydown\", handleKeyDown)\n }\n }, [menuOpen])\n\n return (\n <div\n className={cn(\n \"group flex w-full gap-3 px-4 py-3 hover:bg-accent/40\",\n isUnread ? \"bg-primary/5\" : \"bg-background\",\n )}\n >\n <button\n type=\"button\"\n className=\"min-w-0 flex-1 text-left\"\n onClick={() => {\n if (isUnread) {\n void onMarkRead(notification.id)\n }\n if (notification.url) {\n window.location.href = notification.url\n }\n }}\n >\n <div className=\"min-w-0\">\n <div className=\"truncate text-sm font-semibold\">{notification.title}</div>\n {notification.body ? (\n <div className=\"mt-0.5 line-clamp-2 text-xs text-muted-foreground\">{notification.body}</div>\n ) : null}\n </div>\n {notification.url ? <div className=\"mt-2 truncate text-xs text-primary\">{notification.url}</div> : null}\n {createdAtLabel ? (\n <div className=\"mt-2 text-[11px] text-muted-foreground\">{createdAtLabel}</div>\n ) : null}\n </button>\n <div className=\"relative flex items-start\">\n <button\n ref={menuButtonRef}\n type=\"button\"\n className=\"inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent\"\n aria-label=\"Notification options\"\n aria-haspopup=\"menu\"\n aria-expanded={menuOpen}\n onClick={() => {\n setMenuOpen((open) => !open)\n }}\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n {menuOpen ? (\n <div\n ref={menuRef}\n role=\"menu\"\n className={cn(\n \"absolute right-0 top-full z-50 mt-1 min-w-[10rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"animate-in fade-in-0 zoom-in-95\",\n )}\n >\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground\"\n onClick={() => {\n setMenuOpen(false)\n onArchive(notification.id)\n }}\n >\n Archive\n </button>\n <button\n type=\"button\"\n role=\"menuitem\"\n className=\"relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-left text-sm outline-none transition-colors hover:bg-accent focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50\"\n disabled={!isUnread}\n onClick={() => {\n setMenuOpen(false)\n onMarkRead(notification.id)\n }}\n >\n Mark as read\n </button>\n </div>\n ) : null}\n </div>\n </div>\n )\n}\n"],"names":["toMs","iso","ms","Date","parse","Number","isFinite","getDayKey","date","getTime","year","getFullYear","month","String","getMonth","padStart","day","getDate","formatDayLabel","key","yearRaw","monthRaw","dayRaw","split","includeYear","toLocaleDateString","undefined","weekday","groupByDay","items","groups","currentKey","item","createdAt","push","label","length","EmptyRealtimeContext","createContext","NotificationsDrawer","open","onOpenChange","className","limit","defaultUnreadOnly","realtimeContext","realtime","useContext","setItems","useState","unreadCount","setUnreadCount","unseenCount","setUnseenCount","loading","setLoading","error","setError","unreadOnly","setUnreadOnly","mergedItems","notifications","mergedUnreadCount","mergedUnseenCount","mergedLoading","mergedError","Error","message","visibleItems","useMemo","slice","unread","filter","n","readAt","read","Boolean","unreadGroups","readGroups","refresh","useCallback","markSeen","res","fetch","method","headers","credentials","body","JSON","stringify","json","catch","ok","nextItems","Array","isArray","Math","max","floor","useEffect","keepalive","markAsRead","id","encodeURIComponent","nowIso","toISOString","current","target","find","count","seenAt","map","archive","jsx","DialogPrimitive.Root","jsxs","DialogPrimitive.Portal","DialogPrimitive.Backdrop","DialogPrimitive.Popup","cn","DialogPrimitive.Title","v","DialogPrimitive.Close","X","Loader2","group","NotificationRow","t0","$","_c","notification","onMarkRead","onArchive","menuOpen","setMenuOpen","menuRef","useRef","menuButtonRef","isUnread","t1","bb0","toLocaleString","createdAtLabel","t2","t3","handlePointerDown","event","Node","contains","handleKeyDown","event_0","focus","document","addEventListener","removeEventListener","t4","t5","t6","url","window","location","href","t7","title","t8","t9","t10","t11","t12","t13","t14","Symbol","for","_temp","MoreVertical","t15","t16","t17","t18"],"mappings":"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"}
package/dist/index160.js CHANGED
@@ -1,28 +1,11 @@
1
- import o from "./index162.js";
2
- var l = /(\$\d)/;
3
- function u(n, a, t) {
4
- var r = t.useInternationalFormat, i = t.withNationalPrefix;
5
- t.carrierCode, t.metadata;
6
- var e = n.replace(new RegExp(a.pattern()), r ? a.internationalFormat() : (
7
- // This library doesn't use `domestic_carrier_code_formatting_rule`,
8
- // because that one is only used when formatting phone numbers
9
- // for dialing from a mobile phone, and this is not a dialing library.
10
- // carrierCode && format.domesticCarrierCodeFormattingRule()
11
- // // First, replace the $CC in the formatting rule with the desired carrier code.
12
- // // Then, replace the $FG in the formatting rule with the first group
13
- // // and the carrier code combined in the appropriate way.
14
- // ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))
15
- // : (
16
- // withNationalPrefix && format.nationalPrefixFormattingRule()
17
- // ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())
18
- // : format.format()
19
- // )
20
- i && a.nationalPrefixFormattingRule() ? a.format().replace(l, a.nationalPrefixFormattingRule()) : a.format()
21
- ));
22
- return r ? o(e) : e;
23
- }
1
+ var v = 2, A = 17, E = 3, _ = "0-90-9٠-٩۰-۹", F = "-‐-―−ー-", u = "//", a = "..", S = "  ­​⁠ ", r = "()()[]\\[\\]", c = "~⁓∼~", N = "".concat(F).concat(u).concat(a).concat(S).concat(r).concat(c), T = "++";
24
2
  export {
25
- l as FIRST_GROUP_PATTERN,
26
- u as default
3
+ E as MAX_LENGTH_COUNTRY_CODE,
4
+ A as MAX_LENGTH_FOR_NSN,
5
+ v as MIN_LENGTH_FOR_NSN,
6
+ T as PLUS_CHARS,
7
+ _ as VALID_DIGITS,
8
+ N as VALID_PUNCTUATION,
9
+ S as WHITESPACE
27
10
  };
28
11
  //# sourceMappingURL=index160.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index160.js","sources":["../../../node_modules/libphonenumber-js/es6/helpers/formatNationalNumberUsingFormat.js"],"sourcesContent":["import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js';\n\n// This was originally set to $1 but there are some countries for which the\n// first group is not used in the national pattern (e.g. Argentina) so the $1\n// group does not match correctly. Therefore, we use `\\d`, so that the first\n// group actually used in the pattern will be matched.\nexport var FIRST_GROUP_PATTERN = /(\\$\\d)/;\nexport default function formatNationalNumberUsingFormat(number, format, _ref) {\n var useInternationalFormat = _ref.useInternationalFormat,\n withNationalPrefix = _ref.withNationalPrefix,\n carrierCode = _ref.carrierCode,\n metadata = _ref.metadata;\n var formattedNumber = number.replace(new RegExp(format.pattern()), useInternationalFormat ? format.internationalFormat() :\n // This library doesn't use `domestic_carrier_code_formatting_rule`,\n // because that one is only used when formatting phone numbers\n // for dialing from a mobile phone, and this is not a dialing library.\n // carrierCode && format.domesticCarrierCodeFormattingRule()\n // \t// First, replace the $CC in the formatting rule with the desired carrier code.\n // \t// Then, replace the $FG in the formatting rule with the first group\n // \t// and the carrier code combined in the appropriate way.\n // \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\n // \t: (\n // \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\n // \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\n // \t\t\t: format.format()\n // \t)\n withNationalPrefix && format.nationalPrefixFormattingRule() ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule()) : format.format());\n if (useInternationalFormat) {\n return applyInternationalSeparatorStyle(formattedNumber);\n }\n return formattedNumber;\n}\n//# sourceMappingURL=formatNationalNumberUsingFormat.js.map"],"names":["FIRST_GROUP_PATTERN","formatNationalNumberUsingFormat","number","format","_ref","useInternationalFormat","withNationalPrefix","formattedNumber","applyInternationalSeparatorStyle"],"mappings":";AAMU,IAACA,IAAsB;AAClB,SAASC,EAAgCC,GAAQC,GAAQC,GAAM;AACzE,MAACC,IAAyBD,EAAK,wBAChCE,IAAqBF,EAAK;AACZ,EAAAA,EAAK,aACRA,EAAK;AAClB,MAAIG,IAAkBL,EAAO,QAAQ,IAAI,OAAOC,EAAO,SAAS,GAAGE,IAAyBF,EAAO,oBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IActHG,KAAsBH,EAAO,6BAA4B,IAAKA,EAAO,OAAM,EAAG,QAAQH,GAAqBG,EAAO,6BAA4B,CAAE,IAAIA,EAAO,OAAM;AAAA,GAAE;AACnK,SAAIE,IACKG,EAAiCD,CAAe,IAElDA;AACT;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index160.js","sources":["../../../node_modules/libphonenumber-js/es6/constants.js"],"sourcesContent":["// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2;\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport var MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nexport var MAX_LENGTH_COUNTRY_CODE = 3;\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\";\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\";\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\";\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\";\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map"],"names":["MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS"],"mappings":"AACU,IAACA,IAAqB,GAIrBC,IAAqB,IAGrBC,IAA0B,GAI1BC,IAAe,gBAGtBC,IAAS,WACTC,IAAU,MACVC,IAAO,MACAC,IAAa,UACpBC,IAAW,gBAEXC,IAAS,QAMFC,IAAoB,GAAG,OAAON,CAAM,EAAE,OAAOC,CAAO,EAAE,OAAOC,CAAI,EAAE,OAAOC,CAAU,EAAE,OAAOC,CAAQ,EAAE,OAAOC,CAAM,GACpHE,IAAa;","x_google_ignoreList":[0]}
package/dist/index161.js CHANGED
@@ -1,11 +1,8 @@
1
- var v = 2, A = 17, E = 3, _ = "0-90-9٠-٩۰-۹", F = "-‐-―−ー-", u = "//", a = "..", S = "  ­​⁠ ", r = "()()[]\\[\\]", c = "~⁓∼~", N = "".concat(F).concat(u).concat(a).concat(S).concat(r).concat(c), T = "++";
1
+ import { VALID_PUNCTUATION as e } from "./index160.js";
2
+ function a(t) {
3
+ return t.replace(new RegExp("[".concat(e, "]+"), "g"), " ").trim();
4
+ }
2
5
  export {
3
- E as MAX_LENGTH_COUNTRY_CODE,
4
- A as MAX_LENGTH_FOR_NSN,
5
- v as MIN_LENGTH_FOR_NSN,
6
- T as PLUS_CHARS,
7
- _ as VALID_DIGITS,
8
- N as VALID_PUNCTUATION,
9
- S as WHITESPACE
6
+ a as default
10
7
  };
11
8
  //# sourceMappingURL=index161.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index161.js","sources":["../../../node_modules/libphonenumber-js/es6/constants.js"],"sourcesContent":["// The minimum length of the national significant number.\nexport var MIN_LENGTH_FOR_NSN = 2;\n\n// The ITU says the maximum length should be 15,\n// but one can find longer numbers in Germany.\nexport var MAX_LENGTH_FOR_NSN = 17;\n\n// The maximum length of the country calling code.\nexport var MAX_LENGTH_COUNTRY_CODE = 3;\n\n// Digits accepted in phone numbers\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\nexport var VALID_DIGITS = \"0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9\";\n\n// `DASHES` will be right after the opening square bracket of the \"character class\"\nvar DASHES = \"-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D\";\nvar SLASHES = \"\\uFF0F/\";\nvar DOTS = \"\\uFF0E.\";\nexport var WHITESPACE = \" \\xA0\\xAD\\u200B\\u2060\\u3000\";\nvar BRACKETS = \"()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]\";\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\nvar TILDES = \"~\\u2053\\u223C\\uFF5E\";\n\n// Regular expression of acceptable punctuation found in phone numbers. This\n// excludes punctuation found as a leading character only. This consists of dash\n// characters, white space characters, full stops, slashes, square brackets,\n// parentheses and tildes. Full-width variants are also present.\nexport var VALID_PUNCTUATION = \"\".concat(DASHES).concat(SLASHES).concat(DOTS).concat(WHITESPACE).concat(BRACKETS).concat(TILDES);\nexport var PLUS_CHARS = \"+\\uFF0B\";\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')\n//# sourceMappingURL=constants.js.map"],"names":["MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS"],"mappings":"AACU,IAACA,IAAqB,GAIrBC,IAAqB,IAGrBC,IAA0B,GAI1BC,IAAe,gBAGtBC,IAAS,WACTC,IAAU,MACVC,IAAO,MACAC,IAAa,UACpBC,IAAW,gBAEXC,IAAS,QAMFC,IAAoB,GAAG,OAAON,CAAM,EAAE,OAAOC,CAAO,EAAE,OAAOC,CAAI,EAAE,OAAOC,CAAU,EAAE,OAAOC,CAAQ,EAAE,OAAOC,CAAM,GACpHE,IAAa;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index161.js","sources":["../../../node_modules/libphonenumber-js/es6/helpers/applyInternationalSeparatorStyle.js"],"sourcesContent":["import { VALID_PUNCTUATION } from '../constants.js';\n\n// Removes brackets and replaces dashes with spaces.\n//\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\n//\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\n//\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\n//\n// \"The country calling code for all countries participating in the NANP is 1.\n// In international format, an NANP number should be listed as +1 301 555 01 00,\n// where 301 is an area code (Maryland).\"\n//\n// I personally prefer the international format without any punctuation.\n// For example, brackets are remnants of the old age, meaning that the\n// phone number part in brackets (so called \"area code\") can be omitted\n// if dialing within the same \"area\".\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\n// He has a couple of seconds to memorize that number until it passes by.\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\n// but with hyphens instead of spaces the grouping is more explicit.\n// I personally think that hyphens introduce visual clutter,\n// so I prefer replacing them with spaces in international numbers.\n// In the modern age all output is done on displays where spaces are clearly distinguishable\n// so hyphens can be safely replaced with spaces without losing any legibility.\n//\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\n return formattedNumber.replace(new RegExp(\"[\".concat(VALID_PUNCTUATION, \"]+\"), 'g'), ' ').trim();\n}\n//# sourceMappingURL=applyInternationalSeparatorStyle.js.map"],"names":["applyInternationalSeparatorStyle","formattedNumber","VALID_PUNCTUATION"],"mappings":";AAgCe,SAASA,EAAiCC,GAAiB;AACxE,SAAOA,EAAgB,QAAQ,IAAI,OAAO,IAAI,OAAOC,GAAmB,IAAI,GAAG,GAAG,GAAG,GAAG,EAAE,KAAI;AAChG;","x_google_ignoreList":[0]}
package/dist/index162.js CHANGED
@@ -1,8 +1,9 @@
1
- import { VALID_PUNCTUATION as e } from "./index161.js";
2
- function a(t) {
3
- return t.replace(new RegExp("[".concat(e, "]+"), "g"), " ").trim();
1
+ import t from "./index150.js";
2
+ import r from "./index163.js";
3
+ function n() {
4
+ return t(r, arguments);
4
5
  }
5
6
  export {
6
- a as default
7
+ n as getCountries
7
8
  };
8
9
  //# sourceMappingURL=index162.js.map