@rpcbase/ui 0.224.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.
- package/dist/components/DayPickerField/index.d.ts.map +1 -1
- package/dist/components/Dialog/index.d.ts +13 -9
- package/dist/components/Dialog/index.d.ts.map +1 -1
- package/dist/components/FilesUploadField/index.d.ts.map +1 -1
- package/dist/components/HourPickerField/index.d.ts.map +1 -1
- package/dist/components/Select/index.d.ts +16 -10
- package/dist/components/Select/index.d.ts.map +1 -1
- package/dist/index10.js +102 -103
- package/dist/index10.js.map +1 -1
- package/dist/index100.js +4 -4
- package/dist/index100.js.map +1 -1
- package/dist/index101.js +9 -52
- package/dist/index101.js.map +1 -1
- package/dist/index102.js +5 -4
- package/dist/index102.js.map +1 -1
- package/dist/index103.js +3 -3
- package/dist/index103.js.map +1 -1
- package/dist/index104.js +4 -15
- package/dist/index104.js.map +1 -1
- package/dist/index105.js +5 -4
- package/dist/index105.js.map +1 -1
- package/dist/index106.js +145 -7
- package/dist/index106.js.map +1 -1
- package/dist/index107.js +39 -16
- package/dist/index107.js.map +1 -1
- package/dist/index108.js +4 -4
- package/dist/index108.js.map +1 -1
- package/dist/index109.js +7 -4
- package/dist/index109.js.map +1 -1
- package/dist/index110.js +13 -5
- package/dist/index110.js.map +1 -1
- package/dist/index111.js +13 -5
- package/dist/index111.js.map +1 -1
- package/dist/index112.js +7 -4
- package/dist/index112.js.map +1 -1
- package/dist/index113.js +31 -4
- package/dist/index113.js.map +1 -1
- package/dist/index114.js +10 -6
- package/dist/index114.js.map +1 -1
- package/dist/index115.js +10 -24
- package/dist/index115.js.map +1 -1
- package/dist/index116.js +8 -6
- package/dist/index116.js.map +1 -1
- package/dist/index117.js +13 -4
- package/dist/index117.js.map +1 -1
- package/dist/index118.js +101 -6
- package/dist/index118.js.map +1 -1
- package/dist/index119.js +20 -6
- package/dist/index119.js.map +1 -1
- package/dist/index12.js +1 -1
- package/dist/index120.js +53 -4
- package/dist/index120.js.map +1 -1
- package/dist/index121.js +72 -5
- package/dist/index121.js.map +1 -1
- package/dist/index122.js +9 -4
- package/dist/index122.js.map +1 -1
- package/dist/index123.js +20 -8
- package/dist/index123.js.map +1 -1
- package/dist/index124.js +16 -5
- package/dist/index124.js.map +1 -1
- package/dist/index125.js +23 -4
- package/dist/index125.js.map +1 -1
- package/dist/index126.js +6 -4
- package/dist/index126.js.map +1 -1
- package/dist/index127.js +5 -6
- package/dist/index127.js.map +1 -1
- package/dist/index128.js +23 -145
- package/dist/index128.js.map +1 -1
- package/dist/index129.js +34 -39
- package/dist/index129.js.map +1 -1
- package/dist/index130.js +16 -5
- package/dist/index130.js.map +1 -1
- package/dist/index131.js +6 -7
- package/dist/index131.js.map +1 -1
- package/dist/index132.js +4 -13
- package/dist/index132.js.map +1 -1
- package/dist/index133.js +4 -13
- package/dist/index133.js.map +1 -1
- package/dist/index134.js +4 -7
- package/dist/index134.js.map +1 -1
- package/dist/index135.js +4 -31
- package/dist/index135.js.map +1 -1
- package/dist/index136.js +3 -10
- package/dist/index136.js.map +1 -1
- package/dist/index137.js +6 -10
- package/dist/index137.js.map +1 -1
- package/dist/index138.js +24 -9
- package/dist/index138.js.map +1 -1
- package/dist/index139.js +7 -13
- package/dist/index139.js.map +1 -1
- package/dist/index140.js +6 -101
- package/dist/index140.js.map +1 -1
- package/dist/index141.js +6 -20
- package/dist/index141.js.map +1 -1
- package/dist/index142.js +3 -53
- package/dist/index142.js.map +1 -1
- package/dist/index143.js +3 -72
- package/dist/index143.js.map +1 -1
- package/dist/index144.js +4 -9
- package/dist/index144.js.map +1 -1
- package/dist/index145.js +3 -20
- package/dist/index145.js.map +1 -1
- package/dist/index146.js +4 -16
- package/dist/index146.js.map +1 -1
- package/dist/index147.js +3 -23
- package/dist/index147.js.map +1 -1
- package/dist/index148.js +3 -6
- package/dist/index148.js.map +1 -1
- package/dist/index149.js +3 -5
- package/dist/index149.js.map +1 -1
- package/dist/index150.js +5 -23
- package/dist/index150.js.map +1 -1
- package/dist/index151.js +68 -34
- package/dist/index151.js.map +1 -1
- package/dist/index152.js +2 -16
- package/dist/index152.js.map +1 -1
- package/dist/index153.js +363 -6
- package/dist/index153.js.map +1 -1
- package/dist/index154.js +261 -4
- package/dist/index154.js.map +1 -1
- package/dist/index155.js +60 -4
- package/dist/index155.js.map +1 -1
- package/dist/index156.js +46 -4
- package/dist/index156.js.map +1 -1
- package/dist/index157.js +169 -4
- package/dist/index157.js.map +1 -1
- package/dist/index158.js +109 -3
- package/dist/index158.js.map +1 -1
- package/dist/index159.js +24 -6
- package/dist/index159.js.map +1 -1
- package/dist/index16.js +77 -72
- package/dist/index16.js.map +1 -1
- package/dist/index160.js +8 -24
- package/dist/index160.js.map +1 -1
- package/dist/index161.js +4 -7
- package/dist/index161.js.map +1 -1
- package/dist/index162.js +5 -6
- package/dist/index162.js.map +1 -1
- package/dist/index163.js +4 -5
- package/dist/index163.js.map +1 -1
- package/dist/index164.js +466 -3
- package/dist/index164.js.map +1 -1
- package/dist/index165.js +185 -3
- package/dist/index165.js.map +1 -1
- package/dist/index166.js +107 -4
- package/dist/index166.js.map +1 -1
- package/dist/index167.js +262 -3
- package/dist/index167.js.map +1 -1
- package/dist/index168.js +9 -4
- package/dist/index168.js.map +1 -1
- package/dist/index169.js +42 -3
- package/dist/index169.js.map +1 -1
- package/dist/index170.js +4 -3
- package/dist/index170.js.map +1 -1
- package/dist/index171.js +11 -3
- package/dist/index171.js.map +1 -1
- package/dist/index172.js +63 -41
- package/dist/index172.js.map +1 -1
- package/dist/index173.js +35 -227
- package/dist/index173.js.map +1 -1
- package/dist/index174.js +14 -22
- package/dist/index174.js.map +1 -1
- package/dist/index175.js +23 -24
- package/dist/index175.js.map +1 -1
- package/dist/index176.js +104 -394
- package/dist/index176.js.map +1 -1
- package/dist/index177.js +13 -14
- package/dist/index177.js.map +1 -1
- package/dist/index178.js +4 -154
- package/dist/index178.js.map +1 -1
- package/dist/index179.js +4 -31
- package/dist/index179.js.map +1 -1
- package/dist/index18.js +6 -6
- package/dist/index180.js +5 -10
- package/dist/index180.js.map +1 -1
- package/dist/index181.js +11 -48
- package/dist/index181.js.map +1 -1
- package/dist/index182.js +19 -11
- package/dist/index182.js.map +1 -1
- package/dist/index183.js +13 -45
- package/dist/index183.js.map +1 -1
- package/dist/index184.js +255 -89
- package/dist/index184.js.map +1 -1
- package/dist/index185.js +4 -86
- package/dist/index185.js.map +1 -1
- package/dist/index186.js +26 -104
- package/dist/index186.js.map +1 -1
- package/dist/index187.js +126 -52
- package/dist/index187.js.map +1 -1
- package/dist/index188.js +5 -11
- package/dist/index188.js.map +1 -1
- package/dist/index189.js +78 -37
- package/dist/index189.js.map +1 -1
- package/dist/index19.js +280 -208
- package/dist/index19.js.map +1 -1
- package/dist/index190.js +66 -8
- package/dist/index190.js.map +1 -1
- package/dist/index191.js +7 -115
- package/dist/index191.js.map +1 -1
- package/dist/index192.js +16 -18
- package/dist/index192.js.map +1 -1
- package/dist/index193.js +92 -15
- package/dist/index193.js.map +1 -1
- package/dist/index194.js +65 -3
- package/dist/index194.js.map +1 -1
- package/dist/index195.js +42 -33
- package/dist/index195.js.map +1 -1
- package/dist/index196.js +58 -20
- package/dist/index196.js.map +1 -1
- package/dist/index197.js +8 -9
- package/dist/index197.js.map +1 -1
- package/dist/index198.js +66 -8
- package/dist/index198.js.map +1 -1
- package/dist/index199.js +18 -18
- package/dist/index199.js.map +1 -1
- package/dist/index200.js +15 -27
- package/dist/index200.js.map +1 -1
- package/dist/index201.js +4 -15
- package/dist/index201.js.map +1 -1
- package/dist/index202.js +4 -57
- package/dist/index202.js.map +1 -1
- package/dist/index203.js +6 -8
- package/dist/index203.js.map +1 -1
- package/dist/index204.js +4 -66
- package/dist/index204.js.map +1 -1
- package/dist/index205.js +6 -19
- package/dist/index205.js.map +1 -1
- package/dist/index206.js +16 -16
- package/dist/index206.js.map +1 -1
- package/dist/index207.js +4 -5
- package/dist/index207.js.map +1 -1
- package/dist/index208.js +4 -5
- package/dist/index208.js.map +1 -1
- package/dist/index209.js +12 -6
- package/dist/index209.js.map +1 -1
- package/dist/index210.js +9 -4
- package/dist/index210.js.map +1 -1
- package/dist/index211.js +13 -6
- package/dist/index211.js.map +1 -1
- package/dist/index212.js +13 -16
- package/dist/index212.js.map +1 -1
- package/dist/index213.js +4 -4
- package/dist/index213.js.map +1 -1
- package/dist/index214.js +5 -4
- package/dist/index214.js.map +1 -1
- package/dist/index215.js +6 -12
- package/dist/index215.js.map +1 -1
- package/dist/index216.js +5 -9
- package/dist/index216.js.map +1 -1
- package/dist/index217.js +54 -13
- package/dist/index217.js.map +1 -1
- package/dist/index218.js +8 -13
- package/dist/index218.js.map +1 -1
- package/dist/index219.js +4 -4
- package/dist/index219.js.map +1 -1
- package/dist/index220.js +4 -5
- package/dist/index220.js.map +1 -1
- package/dist/index221.js +8 -6
- package/dist/index221.js.map +1 -1
- package/dist/index222.js +4 -5
- package/dist/index222.js.map +1 -1
- package/dist/index223.js +4 -54
- package/dist/index223.js.map +1 -1
- package/dist/index224.js +3 -8
- package/dist/index224.js.map +1 -1
- package/dist/index225.js +10 -4
- package/dist/index225.js.map +1 -1
- package/dist/index226.js +9 -4
- package/dist/index226.js.map +1 -1
- package/dist/index227.js +9 -8
- package/dist/index227.js.map +1 -1
- package/dist/index228.js +10 -4
- package/dist/index228.js.map +1 -1
- package/dist/index229.js +10 -4
- package/dist/index229.js.map +1 -1
- package/dist/index230.js +9 -3
- package/dist/index230.js.map +1 -1
- package/dist/index231.js +6 -10
- package/dist/index231.js.map +1 -1
- package/dist/index232.js +5 -9
- package/dist/index232.js.map +1 -1
- package/dist/index233.js +4 -9
- package/dist/index233.js.map +1 -1
- package/dist/index234.js +5 -10
- package/dist/index234.js.map +1 -1
- package/dist/index235.js +6 -10
- package/dist/index235.js.map +1 -1
- package/dist/index236.js +5 -9
- package/dist/index236.js.map +1 -1
- package/dist/index237.js +29 -6
- package/dist/index237.js.map +1 -1
- package/dist/index238.js +12 -5
- package/dist/index238.js.map +1 -1
- package/dist/index239.js +25 -4
- package/dist/index239.js.map +1 -1
- package/dist/index240.js +5 -5
- package/dist/index240.js.map +1 -1
- package/dist/index241.js +16 -6
- package/dist/index241.js.map +1 -1
- package/dist/index242.js +7 -5
- package/dist/index242.js.map +1 -1
- package/dist/index243.js +9 -15
- package/dist/index243.js.map +1 -1
- package/dist/index244.js +10 -7
- package/dist/index244.js.map +1 -1
- package/dist/index245.js +21 -10
- package/dist/index245.js.map +1 -1
- package/dist/index246.js +10 -10
- package/dist/index246.js.map +1 -1
- package/dist/index247.js +9 -21
- package/dist/index247.js.map +1 -1
- package/dist/index248.js +9 -10
- package/dist/index248.js.map +1 -1
- package/dist/index249.js +4 -9
- package/dist/index249.js.map +1 -1
- package/dist/index250.js +5 -9
- package/dist/index250.js.map +1 -1
- package/dist/index251.js +16 -4
- package/dist/index251.js.map +1 -1
- package/dist/index252.js +9 -5
- package/dist/index252.js.map +1 -1
- package/dist/index253.js +18 -16
- package/dist/index253.js.map +1 -1
- package/dist/index254.js +15 -9
- package/dist/index254.js.map +1 -1
- package/dist/index255.js +8 -14
- package/dist/index255.js.map +1 -1
- package/dist/index256.js +13 -15
- package/dist/index256.js.map +1 -1
- package/dist/index257.js +154 -12
- package/dist/index257.js.map +1 -1
- package/dist/index258.js +29 -28
- package/dist/index258.js.map +1 -1
- package/dist/index259.js +9 -12
- package/dist/index259.js.map +1 -1
- package/dist/index260.js +46 -23
- package/dist/index260.js.map +1 -1
- package/dist/index261.js +11 -5
- package/dist/index261.js.map +1 -1
- package/dist/index262.js +43 -23
- package/dist/index262.js.map +1 -1
- package/dist/index263.js +95 -28
- package/dist/index263.js.map +1 -1
- package/dist/index264.js +87 -5
- package/dist/index264.js.map +1 -1
- package/dist/index265.js +105 -20
- package/dist/index265.js.map +1 -1
- package/dist/index266.js +52 -4
- package/dist/index266.js.map +1 -1
- package/dist/index267.js +11 -17
- package/dist/index267.js.map +1 -1
- package/dist/index268.js +37 -12
- package/dist/index268.js.map +1 -1
- package/dist/index269.js +9 -5
- package/dist/index269.js.map +1 -1
- package/dist/index270.js +117 -3
- package/dist/index270.js.map +1 -1
- package/dist/index271.js +17 -23
- package/dist/index271.js.map +1 -1
- package/dist/index272.js +14 -111
- package/dist/index272.js.map +1 -1
- package/dist/index273.js +3 -15
- package/dist/index273.js.map +1 -1
- package/dist/index274.js +29 -522
- package/dist/index274.js.map +1 -1
- package/dist/index275.js +19 -124
- package/dist/index275.js.map +1 -1
- package/dist/index276.js +9 -133
- package/dist/index276.js.map +1 -1
- package/dist/index277.js +8 -4
- package/dist/index277.js.map +1 -1
- package/dist/index278.js +19 -4
- package/dist/index278.js.map +1 -1
- package/dist/index279.js +29 -4
- package/dist/index279.js.map +1 -1
- package/dist/index28.js +1 -1
- package/dist/index280.js +16 -15
- package/dist/index280.js.map +1 -1
- package/dist/index281.js +66 -8
- package/dist/index281.js.map +1 -1
- package/dist/index282.js +8 -5
- package/dist/index282.js.map +1 -1
- package/dist/index283.js +11 -4
- package/dist/index283.js.map +1 -1
- package/dist/index284.js +7 -544
- package/dist/index284.js.map +1 -1
- package/dist/index285.js +6 -47
- package/dist/index285.js.map +1 -1
- package/dist/index286.js +13 -17
- package/dist/index286.js.map +1 -1
- package/dist/index287.js +3 -5
- package/dist/index287.js.map +1 -1
- package/dist/index288.js +3 -7
- package/dist/index288.js.map +1 -1
- package/dist/index289.js +99 -6
- package/dist/index289.js.map +1 -1
- package/dist/index290.js +17 -7
- package/dist/index290.js.map +1 -1
- package/dist/index291.js +5 -11
- package/dist/index291.js.map +1 -1
- package/dist/index292.js +29 -8
- package/dist/index292.js.map +1 -1
- package/dist/index293.js +51 -12
- package/dist/index293.js.map +1 -1
- package/dist/index294.js +131 -66
- package/dist/index294.js.map +1 -1
- package/dist/index295.js +9 -9
- package/dist/index295.js.map +1 -1
- package/dist/index296.js +5 -14
- package/dist/index296.js.map +1 -1
- package/dist/index297.js +4 -66
- package/dist/index297.js.map +1 -1
- package/dist/index298.js +11 -64
- package/dist/index298.js.map +1 -1
- package/dist/index299.js +21 -4
- package/dist/index299.js.map +1 -1
- package/dist/index30.js +1 -1
- package/dist/index300.js +121 -54
- package/dist/index300.js.map +1 -1
- package/dist/index301.js +28 -68
- package/dist/index301.js.map +1 -1
- package/dist/index302.js +33 -31
- package/dist/index302.js.map +1 -1
- package/dist/index303.js +74 -9
- package/dist/index303.js.map +1 -1
- package/dist/index304.js +262 -152
- package/dist/index304.js.map +1 -1
- package/dist/index305.js +28 -107
- package/dist/index305.js.map +1 -1
- package/dist/index306.js +6 -3
- package/dist/index306.js.map +1 -1
- package/dist/index307.js +141 -21
- package/dist/index307.js.map +1 -1
- package/dist/index308.js +61 -15
- package/dist/index308.js.map +1 -1
- package/dist/index309.js +48 -27
- package/dist/index309.js.map +1 -1
- package/dist/index31.js +227 -120
- package/dist/index31.js.map +1 -1
- package/dist/index310.js +15 -13
- package/dist/index310.js.map +1 -1
- package/dist/index311.js +20 -7
- package/dist/index311.js.map +1 -1
- package/dist/index312.js +12 -23
- package/dist/index312.js.map +1 -1
- package/dist/index313.js +51 -13
- package/dist/index313.js.map +1 -1
- package/dist/index314.js +14 -25
- package/dist/index314.js.map +1 -1
- package/dist/index315.js +22 -5
- package/dist/index315.js.map +1 -1
- package/dist/index316.js +55 -0
- package/dist/index316.js.map +1 -0
- package/dist/index317.js +29 -0
- package/dist/index317.js.map +1 -0
- package/dist/index318.js +45 -0
- package/dist/index318.js.map +1 -0
- package/dist/index319.js +43 -0
- package/dist/index319.js.map +1 -0
- package/dist/index32.js +21 -229
- package/dist/index32.js.map +1 -1
- package/dist/index320.js +48 -0
- package/dist/index320.js.map +1 -0
- package/dist/index321.js +24 -0
- package/dist/index321.js.map +1 -0
- package/dist/index322.js +74 -0
- package/dist/index322.js.map +1 -0
- package/dist/index323.js +21 -0
- package/dist/index323.js.map +1 -0
- package/dist/index324.js +15 -0
- package/dist/index324.js.map +1 -0
- package/dist/index325.js +17 -0
- package/dist/index325.js.map +1 -0
- package/dist/index326.js +22 -0
- package/dist/index326.js.map +1 -0
- package/dist/index327.js +40 -0
- package/dist/index327.js.map +1 -0
- package/dist/index328.js +282 -0
- package/dist/index328.js.map +1 -0
- package/dist/index329.js +72 -0
- package/dist/index329.js.map +1 -0
- package/dist/index33.js +4 -23
- package/dist/index33.js.map +1 -1
- package/dist/index330.js +87 -0
- package/dist/index330.js.map +1 -0
- package/dist/index331.js +7 -0
- package/dist/index331.js.map +1 -0
- package/dist/index332.js +33 -0
- package/dist/index332.js.map +1 -0
- package/dist/index333.js +20 -0
- package/dist/index333.js.map +1 -0
- package/dist/index334.js +38 -0
- package/dist/index334.js.map +1 -0
- package/dist/index335.js +20 -0
- package/dist/index335.js.map +1 -0
- package/dist/index336.js +7 -0
- package/dist/index336.js.map +1 -0
- package/dist/index337.js +30 -0
- package/dist/index337.js.map +1 -0
- package/dist/index338.js +7 -0
- package/dist/index338.js.map +1 -0
- package/dist/index339.js +82 -0
- package/dist/index339.js.map +1 -0
- package/dist/index34.js +62 -51
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +273 -0
- package/dist/index340.js.map +1 -0
- package/dist/index341.js +15 -0
- package/dist/index341.js.map +1 -0
- package/dist/index342.js +14 -0
- package/dist/index342.js.map +1 -0
- package/dist/index343.js +29 -0
- package/dist/index343.js.map +1 -0
- package/dist/index344.js +20 -0
- package/dist/index344.js.map +1 -0
- package/dist/index345.js +129 -0
- package/dist/index345.js.map +1 -0
- package/dist/index346.js +9 -0
- package/dist/index346.js.map +1 -0
- package/dist/index347.js +44 -0
- package/dist/index347.js.map +1 -0
- package/dist/index348.js +69 -0
- package/dist/index348.js.map +1 -0
- package/dist/index349.js +17 -0
- package/dist/index349.js.map +1 -0
- package/dist/index35.js +38 -21
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +11 -0
- package/dist/index350.js.map +1 -0
- package/dist/index351.js +9 -0
- package/dist/index351.js.map +1 -0
- package/dist/index352.js +7 -0
- package/dist/index352.js.map +1 -0
- package/dist/index353.js +14 -0
- package/dist/index353.js.map +1 -0
- package/dist/index354.js +11 -0
- package/dist/index354.js.map +1 -0
- package/dist/index355.js +403 -0
- package/dist/index355.js.map +1 -0
- package/dist/index356.js +56 -0
- package/dist/index356.js.map +1 -0
- package/dist/index357.js +15 -0
- package/dist/index357.js.map +1 -0
- package/dist/index358.js +15 -0
- package/dist/index358.js.map +1 -0
- package/dist/index359.js +8 -0
- package/dist/index359.js.map +1 -0
- package/dist/index36.js +75 -127
- package/dist/index36.js.map +1 -1
- package/dist/index360.js +21 -0
- package/dist/index360.js.map +1 -0
- package/dist/index361.js +16 -0
- package/dist/index361.js.map +1 -0
- package/dist/index362.js +24 -0
- package/dist/index362.js.map +1 -0
- package/dist/index363.js +12 -0
- package/dist/index363.js.map +1 -0
- package/dist/index364.js +29 -0
- package/dist/index364.js.map +1 -0
- package/dist/index365.js +30 -0
- package/dist/index365.js.map +1 -0
- package/dist/index366.js +141 -0
- package/dist/index366.js.map +1 -0
- package/dist/index367.js +16 -0
- package/dist/index367.js.map +1 -0
- package/dist/index368.js +230 -0
- package/dist/index368.js.map +1 -0
- package/dist/index369.js +7 -0
- package/dist/index369.js.map +1 -0
- package/dist/index37.js +22 -221
- package/dist/index37.js.map +1 -1
- package/dist/index370.js +23 -0
- package/dist/index370.js.map +1 -0
- package/dist/index371.js +81 -0
- package/dist/index371.js.map +1 -0
- package/dist/index372.js +15 -0
- package/dist/index372.js.map +1 -0
- package/dist/index373.js +7 -0
- package/dist/index373.js.map +1 -0
- package/dist/index374.js +81 -0
- package/dist/index374.js.map +1 -0
- package/dist/index375.js +204 -0
- package/dist/index375.js.map +1 -0
- package/dist/index376.js +75 -0
- package/dist/index376.js.map +1 -0
- package/dist/index377.js +12 -0
- package/dist/index377.js.map +1 -0
- package/dist/index378.js +19 -0
- package/dist/index378.js.map +1 -0
- package/dist/index379.js +20 -0
- package/dist/index379.js.map +1 -0
- package/dist/index38.js +37 -90
- package/dist/index38.js.map +1 -1
- package/dist/index380.js +7 -0
- package/dist/index380.js.map +1 -0
- package/dist/index381.js +15 -0
- package/dist/index381.js.map +1 -0
- package/dist/index382.js +9 -0
- package/dist/index382.js.map +1 -0
- package/dist/index383.js +24 -0
- package/dist/index383.js.map +1 -0
- package/dist/index384.js +48 -0
- package/dist/index384.js.map +1 -0
- package/dist/index385.js +21 -0
- package/dist/index385.js.map +1 -0
- package/dist/index386.js +8 -0
- package/dist/index386.js.map +1 -0
- package/dist/index387.js +8 -0
- package/dist/index387.js.map +1 -0
- package/dist/index388.js +8 -0
- package/dist/index388.js.map +1 -0
- package/dist/index389.js +7 -0
- package/dist/index389.js.map +1 -0
- package/dist/index39.js +28 -119
- package/dist/index39.js.map +1 -1
- package/dist/index390.js +19 -0
- package/dist/index390.js.map +1 -0
- package/dist/index391.js +12 -0
- package/dist/index391.js.map +1 -0
- package/dist/index392.js +9 -0
- package/dist/index392.js.map +1 -0
- package/dist/index393.js +8 -0
- package/dist/index393.js.map +1 -0
- package/dist/index394.js +549 -0
- package/dist/index394.js.map +1 -0
- package/dist/index395.js +50 -0
- package/dist/index395.js.map +1 -0
- package/dist/index396.js +21 -0
- package/dist/index396.js.map +1 -0
- package/dist/index397.js +9 -0
- package/dist/index397.js.map +1 -0
- package/dist/index398.js +11 -0
- package/dist/index398.js.map +1 -0
- package/dist/index399.js +10 -0
- package/dist/index399.js.map +1 -0
- package/dist/index40.js +23 -6
- package/dist/index40.js.map +1 -1
- package/dist/index400.js +11 -0
- package/dist/index400.js.map +1 -0
- package/dist/index401.js +15 -0
- package/dist/index401.js.map +1 -0
- package/dist/index402.js +12 -0
- package/dist/index402.js.map +1 -0
- package/dist/index403.js +16 -0
- package/dist/index403.js.map +1 -0
- package/dist/index404.js +18 -0
- package/dist/index404.js.map +1 -0
- package/dist/index405.js +495 -0
- package/dist/index405.js.map +1 -0
- package/dist/index406.js +6 -0
- package/dist/index406.js.map +1 -0
- package/dist/index407.js +6 -0
- package/dist/index407.js.map +1 -0
- package/dist/index408.js +8 -0
- package/dist/index408.js.map +1 -0
- package/dist/index409.js +59 -0
- package/dist/index409.js.map +1 -0
- package/dist/index41.js +51 -817
- package/dist/index41.js.map +1 -1
- package/dist/index410.js +71 -0
- package/dist/index410.js.map +1 -0
- package/dist/index411.js +34 -0
- package/dist/index411.js.map +1 -0
- package/dist/index412.js +12 -0
- package/dist/index412.js.map +1 -0
- package/dist/index413.js +156 -0
- package/dist/index413.js.map +1 -0
- package/dist/index414.js +111 -0
- package/dist/index414.js.map +1 -0
- package/dist/index415.js +11 -0
- package/dist/index415.js.map +1 -0
- package/dist/index416.js +5 -0
- package/dist/index416.js.map +1 -0
- package/dist/index417.js +47 -0
- package/dist/index417.js.map +1 -0
- package/dist/index418.js +59 -0
- package/dist/index418.js.map +1 -0
- package/dist/index419.js +11 -0
- package/dist/index419.js.map +1 -0
- package/dist/index42.js +51 -57
- package/dist/index42.js.map +1 -1
- package/dist/index420.js +5 -0
- package/dist/index420.js.map +1 -0
- package/dist/index421.js +58 -0
- package/dist/index421.js.map +1 -0
- package/dist/index422.js +59 -0
- package/dist/index422.js.map +1 -0
- package/dist/index423.js +19 -0
- package/dist/index423.js.map +1 -0
- package/dist/index424.js +32 -0
- package/dist/index424.js.map +1 -0
- package/dist/index425.js +16 -0
- package/dist/index425.js.map +1 -0
- package/dist/index426.js +10 -0
- package/dist/index426.js.map +1 -0
- package/dist/index427.js +5 -0
- package/dist/index427.js.map +1 -0
- package/dist/index428.js +5 -0
- package/dist/index428.js.map +1 -0
- package/dist/index429.js +5 -0
- package/dist/index429.js.map +1 -0
- package/dist/index43.js +21 -7
- package/dist/index43.js.map +1 -1
- package/dist/index430.js +5 -0
- package/dist/index430.js.map +1 -0
- package/dist/index44.js +130 -2
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +221 -11
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +90 -18
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +118 -7
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +6 -2
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +326 -23
- package/dist/index49.js.map +1 -1
- package/dist/index50.js +247 -221
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +27 -2
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +129 -2
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +26 -2
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +23 -2
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +145 -6
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +34 -33
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +28 -48
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +41 -8
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +21 -12
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +84 -85
- package/dist/index6.js.map +1 -1
- package/dist/index60.js +132 -6
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +51 -8
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +30 -6
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +57 -4
- package/dist/index63.js.map +1 -1
- package/dist/index64.js +7 -47
- package/dist/index64.js.map +1 -1
- package/dist/index65.js +2 -51
- package/dist/index65.js.map +1 -1
- package/dist/index66.js +11 -7
- package/dist/index66.js.map +1 -1
- package/dist/index67.js +17 -13
- package/dist/index67.js.map +1 -1
- package/dist/index68.js +7 -133
- package/dist/index68.js.map +1 -1
- package/dist/index69.js +2 -11
- package/dist/index69.js.map +1 -1
- package/dist/index7.js +123 -98
- package/dist/index7.js.map +1 -1
- package/dist/index70.js +22 -215
- package/dist/index70.js.map +1 -1
- package/dist/index71.js +234 -13
- package/dist/index71.js.map +1 -1
- package/dist/index72.js +2 -47
- package/dist/index72.js.map +1 -1
- package/dist/index73.js +2 -50
- package/dist/index73.js.map +1 -1
- package/dist/index74.js +2 -4
- package/dist/index74.js.map +1 -1
- package/dist/index75.js +2 -6
- package/dist/index75.js.map +1 -1
- package/dist/index76.js +6 -28
- package/dist/index76.js.map +1 -1
- package/dist/index77.js +8 -50
- package/dist/index77.js.map +1 -1
- package/dist/index78.js +6 -9
- package/dist/index78.js.map +1 -1
- package/dist/index79.js +52 -47
- package/dist/index79.js.map +1 -1
- package/dist/index8.js +53 -54
- package/dist/index8.js.map +1 -1
- package/dist/index80.js +4 -5
- package/dist/index80.js.map +1 -1
- package/dist/index81.js +4 -68
- package/dist/index81.js.map +1 -1
- package/dist/index82.js +16 -2
- package/dist/index82.js.map +1 -1
- package/dist/index83.js +5 -363
- package/dist/index83.js.map +1 -1
- package/dist/index84.js +7 -261
- package/dist/index84.js.map +1 -1
- package/dist/index85.js +16 -60
- package/dist/index85.js.map +1 -1
- package/dist/index86.js +4 -46
- package/dist/index86.js.map +1 -1
- package/dist/index87.js +4 -169
- package/dist/index87.js.map +1 -1
- package/dist/index88.js +5 -109
- package/dist/index88.js.map +1 -1
- package/dist/index89.js +5 -24
- package/dist/index89.js.map +1 -1
- package/dist/index9.js +1 -1
- package/dist/index90.js +5 -8
- package/dist/index90.js.map +1 -1
- package/dist/index91.js +4 -4
- package/dist/index91.js.map +1 -1
- package/dist/index92.js +6 -5
- package/dist/index92.js.map +1 -1
- package/dist/index93.js +24 -4
- package/dist/index93.js.map +1 -1
- package/dist/index94.js +6 -466
- package/dist/index94.js.map +1 -1
- package/dist/index95.js +4 -185
- package/dist/index95.js.map +1 -1
- package/dist/index96.js +6 -107
- package/dist/index96.js.map +1 -1
- package/dist/index97.js +5 -262
- package/dist/index97.js.map +1 -1
- package/dist/index98.js +4 -9
- package/dist/index98.js.map +1 -1
- package/dist/index99.js +5 -42
- package/dist/index99.js.map +1 -1
- package/dist/lib/render-as-child.d.ts +5 -0
- package/dist/lib/render-as-child.d.ts.map +1 -0
- package/package.json +3 -6
- package/dist/lib/react-compose-refs.d.ts +0 -5
- 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
|
|
3
|
-
import { useContext as
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
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
|
-
},
|
|
11
|
-
const e = new Date(
|
|
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
|
-
},
|
|
20
|
+
}, le = (s) => {
|
|
16
21
|
if (s === "unknown") return "Unknown date";
|
|
17
|
-
const [e, n, i] = s.split("-"), a = Number(e),
|
|
18
|
-
if (!Number.isFinite(a) || !Number.isFinite(
|
|
19
|
-
const U = new Date(a,
|
|
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
|
-
},
|
|
37
|
+
}, J = (s) => {
|
|
33
38
|
const e = [];
|
|
34
39
|
let n = null;
|
|
35
40
|
for (const i of s) {
|
|
36
|
-
const a =
|
|
41
|
+
const a = ae(i.createdAt);
|
|
37
42
|
a !== n && (n = a, e.push({
|
|
38
43
|
key: a,
|
|
39
|
-
label:
|
|
44
|
+
label: le(a),
|
|
40
45
|
items: []
|
|
41
46
|
})), e[e.length - 1].items.push(i);
|
|
42
47
|
}
|
|
43
48
|
return e;
|
|
44
|
-
},
|
|
45
|
-
function
|
|
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:
|
|
56
|
+
realtimeContext: l
|
|
52
57
|
}) {
|
|
53
|
-
const o =
|
|
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),
|
|
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
|
-
|
|
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:
|
|
112
|
+
unreadOnly: c,
|
|
108
113
|
markSeen: !0
|
|
109
114
|
});
|
|
110
115
|
}
|
|
111
|
-
}, [s, o, b,
|
|
116
|
+
}, [s, o, b, c]), Y(() => {
|
|
112
117
|
s && (o || b({
|
|
113
|
-
unreadOnly:
|
|
118
|
+
unreadOnly: c,
|
|
114
119
|
markSeen: !1
|
|
115
120
|
}));
|
|
116
|
-
}, [s, o, b,
|
|
117
|
-
const
|
|
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 &&
|
|
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 &&
|
|
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(
|
|
164
|
-
/* @__PURE__ */ t.jsx(
|
|
165
|
-
/* @__PURE__ */ t.jsxs(
|
|
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(
|
|
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: () =>
|
|
173
|
-
/* @__PURE__ */ t.jsx(
|
|
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:
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
|
196
|
-
const e =
|
|
200
|
+
function V(s) {
|
|
201
|
+
const e = q.c(45), {
|
|
197
202
|
notification: n,
|
|
198
203
|
onMarkRead: i,
|
|
199
204
|
onArchive: a
|
|
200
|
-
} = s, [
|
|
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(
|
|
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
|
|
216
|
-
e[2] !==
|
|
217
|
-
if (!
|
|
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
|
-
},
|
|
227
|
+
}, P = (z) => {
|
|
223
228
|
z.key === "Escape" && (o(!1), A.current?.focus());
|
|
224
229
|
};
|
|
225
|
-
return document.addEventListener("pointerdown", b), document.addEventListener("keydown",
|
|
226
|
-
document.removeEventListener("pointerdown", b), document.removeEventListener("keydown",
|
|
230
|
+
return document.addEventListener("pointerdown", b), document.addEventListener("keydown", P), () => {
|
|
231
|
+
document.removeEventListener("pointerdown", b), document.removeEventListener("keydown", P);
|
|
227
232
|
};
|
|
228
|
-
}, 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
|
|
231
|
-
e[5] !== $ ? (
|
|
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
|
|
237
|
-
e[12] !== n.title ? (
|
|
238
|
-
let
|
|
239
|
-
e[14] !== n.body ? (
|
|
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] !==
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
] }), e[16] =
|
|
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
|
|
250
|
-
e[23] !== v || e[24] !== j || e[25] !== h || e[26] !== y ? (
|
|
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] =
|
|
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(
|
|
258
|
-
}, p = /* @__PURE__ */ t.jsx(
|
|
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] !==
|
|
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] !==
|
|
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] =
|
|
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] !==
|
|
277
|
-
|
|
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] =
|
|
284
|
+
] }), e[41] = R, e[42] = k, e[43] = S, e[44] = E) : E = e[44], E;
|
|
280
285
|
}
|
|
281
|
-
function
|
|
286
|
+
function de(s) {
|
|
282
287
|
return !s;
|
|
283
288
|
}
|
|
284
289
|
export {
|
|
285
|
-
|
|
290
|
+
Ne as NotificationsDrawer
|
|
286
291
|
};
|
|
287
292
|
//# sourceMappingURL=index16.js.map
|
package/dist/index16.js.map
CHANGED
|
@@ -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,27 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import { labelCaption as t, labelGrid as b } from "./index162.js";
|
|
3
|
-
import { labelGridcell as m } from "./index163.js";
|
|
4
|
-
import { labelMonthDropdown as f } from "./index164.js";
|
|
5
|
-
import { labelNav as n } from "./index165.js";
|
|
6
|
-
import { labelNext as u } from "./index166.js";
|
|
7
|
-
import { labelPrevious as N } from "./index167.js";
|
|
8
|
-
import { labelWeekday as y } from "./index168.js";
|
|
9
|
-
import { labelWeekNumber as v } from "./index169.js";
|
|
10
|
-
import { labelWeekNumberHeader as G } from "./index170.js";
|
|
11
|
-
import { labelYearDropdown as h } from "./index171.js";
|
|
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 = "++";
|
|
12
2
|
export {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
u as labelNext,
|
|
21
|
-
N as labelPrevious,
|
|
22
|
-
v as labelWeekNumber,
|
|
23
|
-
G as labelWeekNumberHeader,
|
|
24
|
-
y as labelWeekday,
|
|
25
|
-
h as labelYearDropdown
|
|
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
|
|
26
10
|
};
|
|
27
11
|
//# sourceMappingURL=index160.js.map
|
package/dist/index160.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index160.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
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
|
-
import {
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
return t.today && (e = `Today, ${e}`), t.selected && (e = `${e}, selected`), e;
|
|
1
|
+
import { VALID_PUNCTUATION as e } from "./index160.js";
|
|
2
|
+
function a(t) {
|
|
3
|
+
return t.replace(new RegExp("[".concat(e, "]+"), "g"), " ").trim();
|
|
5
4
|
}
|
|
6
|
-
const c = r;
|
|
7
5
|
export {
|
|
8
|
-
|
|
9
|
-
r as labelDayButton
|
|
6
|
+
a as default
|
|
10
7
|
};
|
|
11
8
|
//# sourceMappingURL=index161.js.map
|
package/dist/index161.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index161.js","sources":["../../../node_modules/
|
|
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,10 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import t from "./index150.js";
|
|
2
|
+
import r from "./index163.js";
|
|
3
|
+
function n() {
|
|
4
|
+
return t(r, arguments);
|
|
4
5
|
}
|
|
5
|
-
const l = e;
|
|
6
6
|
export {
|
|
7
|
-
|
|
8
|
-
e as labelGrid
|
|
7
|
+
n as getCountries
|
|
9
8
|
};
|
|
10
9
|
//# sourceMappingURL=index162.js.map
|
package/dist/index162.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index162.js","sources":["../../../node_modules/
|
|
1
|
+
{"version":3,"file":"index162.js","sources":["../../../node_modules/libphonenumber-js/min/exports/getCountries.js"],"sourcesContent":["import withMetadataArgument from './withMetadataArgument.js'\r\nimport { getCountries as _getCountries } from '../../core/index.js'\r\n\r\nexport function getCountries() {\r\n\treturn withMetadataArgument(_getCountries, arguments)\r\n}"],"names":["getCountries","withMetadataArgument","_getCountries"],"mappings":";;AAGO,SAASA,IAAe;AAC9B,SAAOC,EAAqBC,GAAe,SAAS;AACrD;","x_google_ignoreList":[0]}
|
package/dist/index163.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
function
|
|
3
|
-
|
|
4
|
-
return l?.today && (e = `Today, ${e}`), e;
|
|
1
|
+
import e from "./index164.js";
|
|
2
|
+
function n(t) {
|
|
3
|
+
return new e(t).getCountries();
|
|
5
4
|
}
|
|
6
5
|
export {
|
|
7
|
-
|
|
6
|
+
n as default
|
|
8
7
|
};
|
|
9
8
|
//# sourceMappingURL=index163.js.map
|