@rpcbase/ui 0.246.0 → 0.248.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/Notifications/NotificationsDrawer.d.ts.map +1 -1
- package/dist/index10.js +2 -2
- package/dist/index106.js +1 -1
- package/dist/index11.js +2 -2
- package/dist/index12.js +3 -3
- package/dist/index13.js +2 -2
- package/dist/index14.js +2 -2
- package/dist/index15.js +2 -2
- package/dist/index16.js +158 -158
- package/dist/index16.js.map +1 -1
- package/dist/index167.js +3 -3
- package/dist/index17.js +1 -1
- package/dist/index172.js +6 -6
- package/dist/index178.js +1 -1
- package/dist/index18.js +7 -7
- package/dist/index184.js +1 -1
- package/dist/index185.js +1 -1
- package/dist/index186.js +1 -1
- package/dist/index187.js +1 -1
- package/dist/index188.js +2 -2
- package/dist/index189.js +3 -3
- package/dist/index19.js +16 -16
- package/dist/index21.js +1 -1
- package/dist/index22.js +2 -2
- package/dist/index23.js +1 -1
- package/dist/index24.js +1 -1
- package/dist/index246.js +1 -1
- package/dist/index25.js +1 -1
- package/dist/index252.js +1 -1
- package/dist/index272.js +2 -2
- package/dist/index277.js +1 -1
- package/dist/index278.js +1 -1
- package/dist/index28.js +2 -2
- package/dist/index282.js +1 -1
- package/dist/index287.js +1 -1
- package/dist/index29.js +56 -3
- package/dist/index29.js.map +1 -1
- package/dist/index293.js +1 -1
- package/dist/index3.js +2 -2
- package/dist/index30.js +3 -242
- package/dist/index30.js.map +1 -1
- package/dist/index302.js +1 -1
- package/dist/index31.js +239 -21
- package/dist/index31.js.map +1 -1
- package/dist/index32.js +23 -4
- package/dist/index32.js.map +1 -1
- package/dist/index321.js +2 -2
- package/dist/index33.js +3 -6
- package/dist/index33.js.map +1 -1
- package/dist/index334.js +1 -1
- package/dist/index338.js +8 -24
- package/dist/index338.js.map +1 -1
- package/dist/index339.js +11 -28
- package/dist/index339.js.map +1 -1
- package/dist/index34.js +8 -38
- package/dist/index34.js.map +1 -1
- package/dist/index340.js +7 -15
- package/dist/index340.js.map +1 -1
- package/dist/index341.js +13 -8
- package/dist/index341.js.map +1 -1
- package/dist/index342.js +3 -11
- package/dist/index342.js.map +1 -1
- package/dist/index343.js +3 -8
- package/dist/index343.js.map +1 -1
- package/dist/index344.js +16 -12
- package/dist/index344.js.map +1 -1
- package/dist/index345.js +24 -3
- package/dist/index345.js.map +1 -1
- package/dist/index346.js +28 -3
- package/dist/index346.js.map +1 -1
- package/dist/index347.js +15 -16
- package/dist/index347.js.map +1 -1
- package/dist/index349.js +61 -5
- package/dist/index349.js.map +1 -1
- package/dist/index35.js +35 -74
- package/dist/index35.js.map +1 -1
- package/dist/index350.js +65 -60
- package/dist/index350.js.map +1 -1
- package/dist/index351.js +5 -66
- package/dist/index351.js.map +1 -1
- package/dist/index36.js +74 -20
- package/dist/index36.js.map +1 -1
- package/dist/index365.js +4 -12
- package/dist/index365.js.map +1 -1
- package/dist/index366.js +12 -4
- package/dist/index366.js.map +1 -1
- package/dist/index37.js +18 -33
- package/dist/index37.js.map +1 -1
- package/dist/index379.js +2 -2
- package/dist/index38.js +36 -26
- package/dist/index38.js.map +1 -1
- package/dist/index386.js +1 -1
- package/dist/index388.js +1 -1
- package/dist/index39.js +26 -21
- package/dist/index39.js.map +1 -1
- package/dist/index4.js +2 -2
- package/dist/index40.js +20 -56
- package/dist/index40.js.map +1 -1
- package/dist/index41.js +59 -51
- package/dist/index41.js.map +1 -1
- package/dist/index411.js +15 -3
- package/dist/index411.js.map +1 -1
- package/dist/index412.js +3 -15
- package/dist/index412.js.map +1 -1
- package/dist/index417.js +1 -1
- package/dist/index419.js +1 -1
- package/dist/index42.js +50 -21
- package/dist/index42.js.map +1 -1
- package/dist/index420.js +2 -2
- package/dist/index423.js +1 -1
- package/dist/index424.js +1 -1
- package/dist/index427.js +1 -1
- package/dist/index428.js +1 -1
- package/dist/index43.js +18 -127
- package/dist/index43.js.map +1 -1
- package/dist/index430.js +16 -2
- package/dist/index430.js.map +1 -1
- package/dist/index431.js +29 -2
- package/dist/index431.js.map +1 -1
- package/dist/index432.js +13 -2
- package/dist/index432.js.map +1 -1
- package/dist/index433.js +7 -2
- package/dist/index433.js.map +1 -1
- package/dist/index434.js +2 -16
- package/dist/index434.js.map +1 -1
- package/dist/index435.js +2 -29
- package/dist/index435.js.map +1 -1
- package/dist/index436.js +2 -13
- package/dist/index436.js.map +1 -1
- package/dist/index437.js +2 -7
- package/dist/index437.js.map +1 -1
- package/dist/index44.js +122 -39
- package/dist/index44.js.map +1 -1
- package/dist/index45.js +42 -85
- package/dist/index45.js.map +1 -1
- package/dist/index46.js +87 -123
- package/dist/index46.js.map +1 -1
- package/dist/index47.js +126 -5
- package/dist/index47.js.map +1 -1
- package/dist/index48.js +5 -332
- package/dist/index48.js.map +1 -1
- package/dist/index49.js +320 -245
- package/dist/index49.js.map +1 -1
- package/dist/index5.js +2 -2
- package/dist/index50.js +254 -23
- package/dist/index50.js.map +1 -1
- package/dist/index51.js +25 -129
- package/dist/index51.js.map +1 -1
- package/dist/index52.js +129 -24
- package/dist/index52.js.map +1 -1
- package/dist/index53.js +22 -19
- package/dist/index53.js.map +1 -1
- package/dist/index54.js +19 -134
- package/dist/index54.js.map +1 -1
- package/dist/index55.js +133 -30
- package/dist/index55.js.map +1 -1
- package/dist/index56.js +30 -24
- package/dist/index56.js.map +1 -1
- package/dist/index57.js +26 -38
- package/dist/index57.js.map +1 -1
- package/dist/index58.js +38 -18
- package/dist/index58.js.map +1 -1
- package/dist/index59.js +17 -132
- package/dist/index59.js.map +1 -1
- package/dist/index6.js +4 -4
- package/dist/index60.js +134 -49
- package/dist/index60.js.map +1 -1
- package/dist/index61.js +48 -25
- package/dist/index61.js.map +1 -1
- package/dist/index62.js +28 -57
- package/dist/index62.js.map +1 -1
- package/dist/index63.js +57 -56
- package/dist/index63.js.map +1 -1
- package/dist/index7.js +11 -11
- package/dist/index8.js +2 -2
- package/dist/index9.js +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NotificationsDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/Notifications/NotificationsDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgF,KAAK,OAAO,EAAE,MAAM,OAAO,CAAA;AAMlH,OAAO,KAAK,EAAoB,0BAA0B,EAAE,MAAM,SAAS,CAAA;AA0I3E,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,KAAU,EACV,iBAAyB,EACzB,eAAe,GAChB,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;CAC7D,
|
|
1
|
+
{"version":3,"file":"NotificationsDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/Notifications/NotificationsDrawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgF,KAAK,OAAO,EAAE,MAAM,OAAO,CAAA;AAMlH,OAAO,KAAK,EAAoB,0BAA0B,EAAE,MAAM,SAAS,CAAA;AA0I3E,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,YAAY,EACZ,SAAS,EACT,KAAU,EACV,iBAAyB,EACzB,eAAe,GAChB,EAAE;IACD,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC,0BAA0B,GAAG,IAAI,CAAC,CAAA;CAC7D,2CAoUA"}
|
package/dist/index10.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as u } from "./
|
|
2
|
-
import { c as Te } from "./
|
|
1
|
+
import { j as u } from "./index30.js";
|
|
2
|
+
import { c as Te } from "./index28.js";
|
|
3
3
|
import { Check as Re, ChevronDown as ye, ChevronUp as Me } from "lucide-react";
|
|
4
4
|
import * as r from "react";
|
|
5
5
|
import { createPortal as Se } from "react-dom";
|
package/dist/index106.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DayFlag as e } from "./index118.js";
|
|
2
|
-
import { dateMatchModifiers as u } from "./
|
|
2
|
+
import { dateMatchModifiers as u } from "./index32.js";
|
|
3
3
|
function V(b, S, h, M, a) {
|
|
4
4
|
const { disabled: m, hidden: p, modifiers: r, showOutsideDays: y, broadcastCalendar: B, today: g = a.today() } = S, { isSameDay: v, isSameMonth: A, startOfMonth: E, isBefore: F, endOfMonth: j, isAfter: k } = a, O = h && E(h), D = M && j(M), i = {
|
|
5
5
|
[e.focused]: [],
|
package/dist/index11.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as d } from "./
|
|
2
|
-
import { c as ot } from "./
|
|
1
|
+
import { j as d } from "./index30.js";
|
|
2
|
+
import { c as ot } from "./index28.js";
|
|
3
3
|
import * as u from "react";
|
|
4
4
|
import Kt, { components as Ut } from "react-select";
|
|
5
5
|
import { cn as lt } from "./index2.js";
|
package/dist/index12.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { j as T } from "./
|
|
2
|
-
import { c as ne } from "./
|
|
1
|
+
import { j as T } from "./index30.js";
|
|
2
|
+
import { c as ne } from "./index28.js";
|
|
3
3
|
import { useState as Z, useRef as ae, useEffect as ee } from "react";
|
|
4
|
-
import { decode as ce } from "./
|
|
4
|
+
import { decode as ce } from "./index42.js";
|
|
5
5
|
const se = [320, 640, 960, 1600], te = /^\/api\/rb\/files\/[^/?#]+/, me = (s) => [...new Set(s.map((e) => Math.floor(e)).filter((e) => Number.isFinite(e) && e > 0))].sort((e, t) => e - t), le = (s) => {
|
|
6
6
|
if (te.test(s)) return !0;
|
|
7
7
|
try {
|
package/dist/index13.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as g } from "./
|
|
2
|
-
import { c as f } from "./
|
|
1
|
+
import { j as g } from "./index30.js";
|
|
2
|
+
import { c as f } from "./index28.js";
|
|
3
3
|
import { FilesUploadField as h } from "./index8.js";
|
|
4
4
|
const v = ["image/*", ".heic", ".heif", "image/heic", "image/heif", "image/heic-sequence", "image/heif-sequence"];
|
|
5
5
|
function j(r) {
|
package/dist/index14.js
CHANGED
package/dist/index15.js
CHANGED
package/dist/index16.js
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
import { j as t } from "./
|
|
2
|
-
import { c as
|
|
3
|
-
import { useContext as
|
|
4
|
-
import { X as
|
|
5
|
-
import { cn as
|
|
6
|
-
import { DialogRoot as
|
|
7
|
-
import { DialogPortal as
|
|
8
|
-
import { DialogBackdrop as
|
|
9
|
-
import { DialogPopup as
|
|
10
|
-
import { DialogTitle as
|
|
11
|
-
import { DialogClose as
|
|
12
|
-
const
|
|
1
|
+
import { j as t } from "./index30.js";
|
|
2
|
+
import { c as ee } from "./index28.js";
|
|
3
|
+
import { useContext as oe, useState as L, useMemo as G, useCallback as ie, useEffect as V, createContext as re, useRef as H } from "react";
|
|
4
|
+
import { X as se, Loader2 as ae, MoreVertical as ce } from "lucide-react";
|
|
5
|
+
import { cn as X } from "./index2.js";
|
|
6
|
+
import { DialogRoot as le } from "./index34.js";
|
|
7
|
+
import { DialogPortal as de } from "./index39.js";
|
|
8
|
+
import { DialogBackdrop as ue } from "./index38.js";
|
|
9
|
+
import { DialogPopup as me } from "./index36.js";
|
|
10
|
+
import { DialogTitle as fe } from "./index40.js";
|
|
11
|
+
import { DialogClose as xe } from "./index35.js";
|
|
12
|
+
const te = (o) => {
|
|
13
13
|
const e = Date.parse(o);
|
|
14
14
|
return Number.isFinite(e) ? e : 0;
|
|
15
|
-
},
|
|
16
|
-
const e = new Date(
|
|
15
|
+
}, he = (o) => {
|
|
16
|
+
const e = new Date(te(o));
|
|
17
17
|
if (!Number.isFinite(e.getTime())) return "unknown";
|
|
18
18
|
const n = e.getFullYear(), r = String(e.getMonth() + 1).padStart(2, "0"), a = String(e.getDate()).padStart(2, "0");
|
|
19
19
|
return `${n}-${r}-${a}`;
|
|
20
|
-
},
|
|
20
|
+
}, pe = (o) => {
|
|
21
21
|
if (o === "unknown") return "Unknown date";
|
|
22
|
-
const [e, n, r] = o.split("-"), a = Number(e),
|
|
23
|
-
if (!Number.isFinite(a) || !Number.isFinite(
|
|
24
|
-
const c = new Date(a,
|
|
22
|
+
const [e, n, r] = o.split("-"), a = Number(e), g = Number(n), i = Number(r);
|
|
23
|
+
if (!Number.isFinite(a) || !Number.isFinite(g) || !Number.isFinite(i)) return "Unknown date";
|
|
24
|
+
const c = new Date(a, g - 1, i);
|
|
25
25
|
if (!Number.isFinite(c.getTime())) return "Unknown date";
|
|
26
26
|
const f = (/* @__PURE__ */ new Date()).getFullYear() !== a;
|
|
27
27
|
return c.toLocaleDateString(void 0, f ? {
|
|
@@ -34,7 +34,7 @@ const ne = (o) => {
|
|
|
34
34
|
month: "short",
|
|
35
35
|
day: "numeric"
|
|
36
36
|
});
|
|
37
|
-
},
|
|
37
|
+
}, be = (o) => {
|
|
38
38
|
const e = o.data?.link?.trim();
|
|
39
39
|
if (e) return e;
|
|
40
40
|
const n = o.platform?.webpush;
|
|
@@ -43,53 +43,53 @@ const ne = (o) => {
|
|
|
43
43
|
if (!r || typeof r != "object" || Array.isArray(r)) return "";
|
|
44
44
|
const a = r.link;
|
|
45
45
|
return typeof a == "string" ? a.trim() : "";
|
|
46
|
-
},
|
|
47
|
-
const e =
|
|
46
|
+
}, ge = (o) => o.data?.linkMode === "merge_current_search" ? "merge_current_search" : "navigate", ye = (o) => {
|
|
47
|
+
const e = be(o);
|
|
48
48
|
return e ? {
|
|
49
49
|
link: e,
|
|
50
|
-
mode:
|
|
50
|
+
mode: ge(o)
|
|
51
51
|
} : null;
|
|
52
|
-
},
|
|
52
|
+
}, we = (o) => o ? o.mode === "merge_current_search" ? "Open" : o.link : "", ve = (o) => {
|
|
53
53
|
window.history.pushState(window.history.state, "", o), window.dispatchEvent(new PopStateEvent("popstate", {
|
|
54
54
|
state: window.history.state
|
|
55
55
|
}));
|
|
56
|
-
},
|
|
56
|
+
}, Ne = (o) => {
|
|
57
57
|
if (o.mode === "merge_current_search") {
|
|
58
58
|
const e = new URL(window.location.href), n = new URL(o.link, e);
|
|
59
59
|
n.searchParams.forEach((r, a) => {
|
|
60
60
|
e.searchParams.set(a, r);
|
|
61
|
-
}), n.hash && (e.hash = n.hash),
|
|
61
|
+
}), n.hash && (e.hash = n.hash), ve(`${e.pathname}${e.search}${e.hash}`);
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
64
|
window.location.href = o.link;
|
|
65
|
-
},
|
|
65
|
+
}, Q = (o) => {
|
|
66
66
|
const e = [];
|
|
67
67
|
let n = null;
|
|
68
68
|
for (const r of o) {
|
|
69
|
-
const a =
|
|
69
|
+
const a = he(r.createdAt);
|
|
70
70
|
a !== n && (n = a, e.push({
|
|
71
71
|
key: a,
|
|
72
|
-
label:
|
|
72
|
+
label: pe(a),
|
|
73
73
|
items: []
|
|
74
74
|
})), e[e.length - 1].items.push(r);
|
|
75
75
|
}
|
|
76
76
|
return e;
|
|
77
|
-
},
|
|
78
|
-
function
|
|
77
|
+
}, W = () => typeof window > "u" || !("Notification" in window) ? "unsupported" : window.Notification.permission, je = re(null);
|
|
78
|
+
function Be({
|
|
79
79
|
open: o,
|
|
80
80
|
onOpenChange: e,
|
|
81
81
|
className: n,
|
|
82
82
|
limit: r = 50,
|
|
83
83
|
defaultUnreadOnly: a = !1,
|
|
84
|
-
realtimeContext:
|
|
84
|
+
realtimeContext: g
|
|
85
85
|
}) {
|
|
86
|
-
const i =
|
|
86
|
+
const i = oe(g ?? je), [c, y] = L([]), [f, m] = L(0), [l, x] = L(0), [w, M] = L(!1), [z, O] = L(null), [h, K] = L(a), [$, p] = L(() => W()), [B, A] = L(!1), C = i?.notifications ?? c, S = i?.unreadCount ?? f, E = i?.unseenCount ?? l, T = i?.loading ?? w, F = i?.error ? i.error instanceof Error ? i.error.message : String(i.error) : z, N = G(() => C.slice(0, r), [r, C]), R = G(() => N.filter((s) => !s.readAt), [N]), D = G(() => N.filter((s) => !!s.readAt), [N]), P = G(() => Q(R), [R]), q = G(() => Q(D), [D]), j = ie(async ({
|
|
87
87
|
unreadOnly: s,
|
|
88
88
|
markSeen: u
|
|
89
89
|
}) => {
|
|
90
|
-
|
|
90
|
+
M(!0), O(null);
|
|
91
91
|
try {
|
|
92
|
-
const
|
|
92
|
+
const k = await fetch("/api/rb/notifications", {
|
|
93
93
|
method: "POST",
|
|
94
94
|
headers: {
|
|
95
95
|
"Content-Type": "application/json"
|
|
@@ -100,20 +100,20 @@ function Te({
|
|
|
100
100
|
unreadOnly: s,
|
|
101
101
|
markSeen: u
|
|
102
102
|
})
|
|
103
|
-
}), d = await
|
|
104
|
-
if (!
|
|
105
|
-
|
|
103
|
+
}), d = await k.json().catch(() => null);
|
|
104
|
+
if (!k.ok || !d?.ok) {
|
|
105
|
+
O(d?.error || "Unable to load notifications.");
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
const
|
|
109
|
-
|
|
108
|
+
const U = Array.isArray(d.notifications) ? d.notifications : [];
|
|
109
|
+
y(U), m(Number.isFinite(d.unreadCount) ? Math.max(0, Math.floor(d.unreadCount ?? 0)) : 0), x(Number.isFinite(d.unseenCount) ? Math.max(0, Math.floor(d.unseenCount ?? 0)) : 0);
|
|
110
110
|
} catch {
|
|
111
|
-
|
|
111
|
+
O("Unable to load notifications.");
|
|
112
112
|
} finally {
|
|
113
|
-
|
|
113
|
+
M(!1);
|
|
114
114
|
}
|
|
115
115
|
}, [r]);
|
|
116
|
-
|
|
116
|
+
V(() => {
|
|
117
117
|
if (o) {
|
|
118
118
|
if (i) {
|
|
119
119
|
(async () => {
|
|
@@ -136,51 +136,51 @@ function Te({
|
|
|
136
136
|
})();
|
|
137
137
|
return;
|
|
138
138
|
}
|
|
139
|
-
|
|
139
|
+
j({
|
|
140
140
|
unreadOnly: h,
|
|
141
141
|
markSeen: !0
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
}, [o, i,
|
|
145
|
-
o && (i ||
|
|
144
|
+
}, [o, i, j, h]), V(() => {
|
|
145
|
+
o && (i || j({
|
|
146
146
|
unreadOnly: h,
|
|
147
147
|
markSeen: !1
|
|
148
148
|
}));
|
|
149
|
-
}, [o, i,
|
|
150
|
-
if (!o || (p(
|
|
149
|
+
}, [o, i, j, h]), V(() => {
|
|
150
|
+
if (!o || (p(W()), typeof navigator > "u" || !navigator.permissions?.query)) return;
|
|
151
151
|
let s = null, u = !1;
|
|
152
|
-
const
|
|
153
|
-
p(
|
|
152
|
+
const k = () => {
|
|
153
|
+
p(W());
|
|
154
154
|
};
|
|
155
155
|
try {
|
|
156
156
|
navigator.permissions.query({
|
|
157
157
|
name: "notifications"
|
|
158
158
|
}).then((d) => {
|
|
159
|
-
u || (s = d,
|
|
159
|
+
u || (s = d, k(), d.addEventListener("change", k));
|
|
160
160
|
}).catch(() => {
|
|
161
161
|
});
|
|
162
162
|
} catch {
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
return () => {
|
|
166
|
-
u = !0, s?.removeEventListener("change",
|
|
166
|
+
u = !0, s?.removeEventListener("change", k);
|
|
167
167
|
};
|
|
168
168
|
}, [o]);
|
|
169
|
-
const
|
|
169
|
+
const J = async () => {
|
|
170
170
|
if (typeof window > "u" || !("Notification" in window)) {
|
|
171
171
|
p("unsupported");
|
|
172
172
|
return;
|
|
173
173
|
}
|
|
174
|
-
|
|
174
|
+
A(!0);
|
|
175
175
|
try {
|
|
176
176
|
const s = await window.Notification.requestPermission();
|
|
177
177
|
p(s);
|
|
178
178
|
} catch {
|
|
179
|
-
p(
|
|
179
|
+
p(W());
|
|
180
180
|
} finally {
|
|
181
|
-
|
|
181
|
+
A(!1);
|
|
182
182
|
}
|
|
183
|
-
},
|
|
183
|
+
}, I = async (s) => {
|
|
184
184
|
try {
|
|
185
185
|
const u = await fetch(`/api/rb/notifications/${encodeURIComponent(s)}/read`, {
|
|
186
186
|
method: "POST",
|
|
@@ -190,24 +190,24 @@ function Te({
|
|
|
190
190
|
credentials: "include",
|
|
191
191
|
keepalive: !0,
|
|
192
192
|
body: "{}"
|
|
193
|
-
}),
|
|
194
|
-
if (!u.ok || !
|
|
193
|
+
}), k = await u.json().catch(() => null);
|
|
194
|
+
if (!u.ok || !k?.ok) return;
|
|
195
195
|
const d = (/* @__PURE__ */ new Date()).toISOString();
|
|
196
196
|
if (i) return;
|
|
197
|
-
|
|
198
|
-
const
|
|
199
|
-
return
|
|
200
|
-
...
|
|
197
|
+
y((U) => {
|
|
198
|
+
const b = U.find((v) => v.id === s);
|
|
199
|
+
return b && !b.readAt && m((v) => Math.max(0, v - 1)), b && !b.seenAt && x((v) => Math.max(0, v - 1)), U.map((v) => v.id === s && !v.readAt ? {
|
|
200
|
+
...v,
|
|
201
201
|
readAt: d,
|
|
202
|
-
...
|
|
202
|
+
...v.seenAt ? {} : {
|
|
203
203
|
seenAt: d
|
|
204
204
|
}
|
|
205
|
-
} :
|
|
205
|
+
} : v);
|
|
206
206
|
});
|
|
207
207
|
} catch {
|
|
208
208
|
return;
|
|
209
209
|
}
|
|
210
|
-
},
|
|
210
|
+
}, _ = async (s) => {
|
|
211
211
|
try {
|
|
212
212
|
const u = await fetch(`/api/rb/notifications/${encodeURIComponent(s)}/archive`, {
|
|
213
213
|
method: "POST",
|
|
@@ -216,52 +216,52 @@ function Te({
|
|
|
216
216
|
},
|
|
217
217
|
credentials: "include",
|
|
218
218
|
body: "{}"
|
|
219
|
-
}),
|
|
220
|
-
if (!u.ok || !
|
|
221
|
-
|
|
222
|
-
const
|
|
223
|
-
return
|
|
219
|
+
}), k = await u.json().catch(() => null);
|
|
220
|
+
if (!u.ok || !k?.ok || i) return;
|
|
221
|
+
y((d) => {
|
|
222
|
+
const U = d.find((b) => b.id === s);
|
|
223
|
+
return U && !U.readAt && m((b) => Math.max(0, b - 1)), U && !U.seenAt && x((b) => Math.max(0, b - 1)), d.filter((b) => b.id !== s);
|
|
224
224
|
});
|
|
225
225
|
} catch {
|
|
226
226
|
return;
|
|
227
227
|
}
|
|
228
|
-
},
|
|
229
|
-
e(!1)
|
|
230
|
-
},
|
|
228
|
+
}, Y = () => {
|
|
229
|
+
e(!1);
|
|
230
|
+
}, ne = (s) => {
|
|
231
231
|
if (s) {
|
|
232
232
|
e(!0);
|
|
233
233
|
return;
|
|
234
234
|
}
|
|
235
|
-
|
|
235
|
+
Y();
|
|
236
236
|
};
|
|
237
|
-
return /* @__PURE__ */ t.jsx(
|
|
238
|
-
/* @__PURE__ */ t.jsx(
|
|
239
|
-
/* @__PURE__ */ t.jsxs(
|
|
237
|
+
return /* @__PURE__ */ t.jsx(le, { open: o, onOpenChange: ne, children: /* @__PURE__ */ t.jsxs(de, { children: [
|
|
238
|
+
/* @__PURE__ */ t.jsx(ue, { className: "fixed inset-0 z-50 bg-black/50", onClick: Y }),
|
|
239
|
+
/* @__PURE__ */ t.jsxs(me, { className: X("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: [
|
|
240
240
|
/* @__PURE__ */ t.jsxs("header", { className: "flex items-center justify-between gap-2 border-b px-4 py-3", children: [
|
|
241
241
|
/* @__PURE__ */ t.jsxs("div", { className: "flex min-w-0 flex-col", children: [
|
|
242
|
-
/* @__PURE__ */ t.jsx(
|
|
243
|
-
/* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children:
|
|
242
|
+
/* @__PURE__ */ t.jsx(fe, { className: "text-sm font-semibold", children: "Notifications" }),
|
|
243
|
+
/* @__PURE__ */ t.jsx("span", { className: "text-xs text-muted-foreground", children: S > 0 ? `${S} unread` : E > 0 ? `${E} new` : "All caught up" })
|
|
244
244
|
] }),
|
|
245
245
|
/* @__PURE__ */ t.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
246
|
-
/* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => K((s) => !s), className:
|
|
247
|
-
/* @__PURE__ */ t.jsx(
|
|
246
|
+
/* @__PURE__ */ t.jsx("button", { type: "button", onClick: () => K((s) => !s), className: X("rounded-md border px-2 py-1 text-xs", h ? "bg-accent text-foreground" : "bg-background text-muted-foreground hover:bg-accent"), children: h ? "Unread" : "All" }),
|
|
247
|
+
/* @__PURE__ */ t.jsx(xe, { type: "button", "aria-label": "Close notifications", className: "inline-flex h-8 w-8 items-center justify-center rounded-md hover:bg-accent", onClick: Y, children: /* @__PURE__ */ t.jsx(se, { className: "h-4 w-4" }) })
|
|
248
248
|
] })
|
|
249
249
|
] }),
|
|
250
250
|
/* @__PURE__ */ t.jsxs("div", { className: "flex-1 overflow-y-auto px-4 pb-3", children: [
|
|
251
|
-
/* @__PURE__ */ t.jsx(
|
|
252
|
-
|
|
251
|
+
/* @__PURE__ */ t.jsx(ke, { permission: $, requesting: B, onEnable: J }),
|
|
252
|
+
T ? /* @__PURE__ */ t.jsx("div", { className: "flex items-center justify-center py-10 text-muted-foreground", children: /* @__PURE__ */ t.jsx(ae, { className: "h-4 w-4 animate-spin" }) }) : F ? /* @__PURE__ */ t.jsx("div", { className: "py-10 text-center text-sm text-muted-foreground", children: F }) : N.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: [
|
|
253
253
|
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
254
254
|
/* @__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" }),
|
|
255
|
-
|
|
255
|
+
P.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No unread notifications." }) : P.map((s) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
256
256
|
/* @__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: s.label }),
|
|
257
|
-
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: s.items.map((u) => /* @__PURE__ */ t.jsx(
|
|
257
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: s.items.map((u) => /* @__PURE__ */ t.jsx(Z, { notification: u, onMarkRead: I, onArchive: _, onAction: Y }, u.id)) })
|
|
258
258
|
] }, `unread:${s.key}`))
|
|
259
259
|
] }),
|
|
260
260
|
h ? null : /* @__PURE__ */ t.jsxs("div", { children: [
|
|
261
261
|
/* @__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" }),
|
|
262
|
-
|
|
262
|
+
q.length === 0 ? /* @__PURE__ */ t.jsx("div", { className: "py-6 text-center text-sm text-muted-foreground", children: "No previous notifications." }) : q.map((s) => /* @__PURE__ */ t.jsxs("div", { children: [
|
|
263
263
|
/* @__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: s.label }),
|
|
264
|
-
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: s.items.map((u) => /* @__PURE__ */ t.jsx(
|
|
264
|
+
/* @__PURE__ */ t.jsx("div", { className: "-mx-4 flex flex-col divide-y divide-border", children: s.items.map((u) => /* @__PURE__ */ t.jsx(Z, { notification: u, onMarkRead: I, onArchive: _, onAction: Y }, u.id)) })
|
|
265
265
|
] }, `previous:${s.key}`))
|
|
266
266
|
] })
|
|
267
267
|
] })
|
|
@@ -269,8 +269,8 @@ function Te({
|
|
|
269
269
|
] })
|
|
270
270
|
] }) });
|
|
271
271
|
}
|
|
272
|
-
function
|
|
273
|
-
const e =
|
|
272
|
+
function ke(o) {
|
|
273
|
+
const e = ee.c(13), {
|
|
274
274
|
permission: n,
|
|
275
275
|
requesting: r,
|
|
276
276
|
onEnable: a
|
|
@@ -278,15 +278,15 @@ function Ae(o) {
|
|
|
278
278
|
if (n === "granted")
|
|
279
279
|
return null;
|
|
280
280
|
if (n === "unsupported") {
|
|
281
|
-
let
|
|
282
|
-
return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (
|
|
281
|
+
let w;
|
|
282
|
+
return e[0] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (w = /* @__PURE__ */ t.jsx("div", { className: "mt-3 rounded-md border bg-muted/40 p-3 text-sm text-muted-foreground", children: "Browser notifications are not supported by this browser." }), e[0] = w) : w = e[0], w;
|
|
283
283
|
}
|
|
284
|
-
const
|
|
284
|
+
const g = n === "denied", i = g ? "Browser notifications are blocked." : "Browser notifications are not enabled.";
|
|
285
285
|
let c;
|
|
286
286
|
e[1] !== i ? (c = /* @__PURE__ */ t.jsx("div", { className: "text-sm font-medium", children: i }), e[1] = i, e[2] = c) : c = e[2];
|
|
287
|
-
const
|
|
287
|
+
const y = g ? "Enable notifications for this site in your browser settings, then click again." : "Enable browser notifications to receive important alerts.";
|
|
288
288
|
let f;
|
|
289
|
-
e[3] !==
|
|
289
|
+
e[3] !== y ? (f = /* @__PURE__ */ t.jsx("div", { className: "mt-1 text-xs text-muted-foreground", children: y }), e[3] = y, e[4] = f) : f = e[4];
|
|
290
290
|
const m = r ? "Enabling..." : "Enable browser notifications";
|
|
291
291
|
let l;
|
|
292
292
|
e[5] !== a || e[6] !== r || e[7] !== m ? (l = /* @__PURE__ */ t.jsx("button", { type: "button", className: "mt-3 inline-flex h-8 items-center rounded-md border bg-background px-2.5 text-xs font-medium hover:bg-accent disabled:pointer-events-none disabled:opacity-50", disabled: r, onClick: a, children: m }), e[5] = a, e[6] = r, e[7] = m, e[8] = l) : l = e[8];
|
|
@@ -297,100 +297,100 @@ function Ae(o) {
|
|
|
297
297
|
l
|
|
298
298
|
] }), e[9] = c, e[10] = f, e[11] = l, e[12] = x) : x = e[12], x;
|
|
299
299
|
}
|
|
300
|
-
function
|
|
301
|
-
const e =
|
|
300
|
+
function Z(o) {
|
|
301
|
+
const e = ee.c(49), {
|
|
302
302
|
notification: n,
|
|
303
303
|
onMarkRead: r,
|
|
304
304
|
onArchive: a,
|
|
305
|
-
onAction:
|
|
306
|
-
} = o, [i, c] =
|
|
305
|
+
onAction: g
|
|
306
|
+
} = o, [i, c] = L(!1), y = H(null), f = H(null), m = !n.readAt;
|
|
307
307
|
let l, x;
|
|
308
|
-
e[0] !== n ? (l =
|
|
309
|
-
const
|
|
310
|
-
let
|
|
308
|
+
e[0] !== n ? (l = ye(n), x = we(l), e[0] = n, e[1] = l, e[2] = x) : (l = e[1], x = e[2]);
|
|
309
|
+
const w = x;
|
|
310
|
+
let M;
|
|
311
311
|
if (e[3] !== n.createdAt) {
|
|
312
312
|
e: {
|
|
313
|
-
const
|
|
314
|
-
if (!Number.isFinite(
|
|
315
|
-
|
|
313
|
+
const j = new Date(te(n.createdAt));
|
|
314
|
+
if (!Number.isFinite(j.getTime())) {
|
|
315
|
+
M = "";
|
|
316
316
|
break e;
|
|
317
317
|
}
|
|
318
|
-
|
|
318
|
+
M = j.toLocaleString();
|
|
319
319
|
}
|
|
320
|
-
e[3] = n.createdAt, e[4] =
|
|
320
|
+
e[3] = n.createdAt, e[4] = M;
|
|
321
321
|
} else
|
|
322
|
-
|
|
323
|
-
const
|
|
324
|
-
let
|
|
325
|
-
e[5] !== i ? (
|
|
322
|
+
M = e[4];
|
|
323
|
+
const z = M;
|
|
324
|
+
let O, h;
|
|
325
|
+
e[5] !== i ? (O = () => {
|
|
326
326
|
if (!i)
|
|
327
327
|
return;
|
|
328
|
-
const
|
|
329
|
-
const _ =
|
|
330
|
-
_ instanceof Node && (
|
|
331
|
-
},
|
|
332
|
-
|
|
328
|
+
const j = (I) => {
|
|
329
|
+
const _ = I.target;
|
|
330
|
+
_ instanceof Node && (y.current?.contains(_) || f.current?.contains(_) || c(!1));
|
|
331
|
+
}, J = (I) => {
|
|
332
|
+
I.key === "Escape" && (c(!1), f.current?.focus());
|
|
333
333
|
};
|
|
334
|
-
return document.addEventListener("pointerdown",
|
|
335
|
-
document.removeEventListener("pointerdown",
|
|
334
|
+
return document.addEventListener("pointerdown", j), document.addEventListener("keydown", J), () => {
|
|
335
|
+
document.removeEventListener("pointerdown", j), document.removeEventListener("keydown", J);
|
|
336
336
|
};
|
|
337
|
-
}, h = [i], e[5] = i, e[6] =
|
|
337
|
+
}, h = [i], e[5] = i, e[6] = O, e[7] = h) : (O = e[6], h = e[7]), V(O, h);
|
|
338
338
|
const K = m ? "bg-primary/5" : "bg-background";
|
|
339
|
-
let O;
|
|
340
|
-
e[8] !== K ? (O = V("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", K), e[8] = K, e[9] = O) : O = e[9];
|
|
341
|
-
let p;
|
|
342
|
-
e[10] !== l || e[11] !== m || e[12] !== n.id || e[13] !== y || e[14] !== r ? (p = () => {
|
|
343
|
-
m && r(n.id), l && (y(), je(l));
|
|
344
|
-
}, e[10] = l, e[11] = m, e[12] = n.id, e[13] = y, e[14] = r, e[15] = p) : p = e[15];
|
|
345
339
|
let $;
|
|
346
|
-
e[
|
|
347
|
-
let
|
|
348
|
-
e[
|
|
340
|
+
e[8] !== K ? ($ = X("group flex w-full gap-3 px-4 py-3 hover:bg-accent/40", K), e[8] = K, e[9] = $) : $ = e[9];
|
|
341
|
+
let p;
|
|
342
|
+
e[10] !== l || e[11] !== m || e[12] !== n.id || e[13] !== g || e[14] !== r ? (p = () => {
|
|
343
|
+
m && r(n.id), l && (g(), Ne(l));
|
|
344
|
+
}, e[10] = l, e[11] = m, e[12] = n.id, e[13] = g, e[14] = r, e[15] = p) : p = e[15];
|
|
345
|
+
let B;
|
|
346
|
+
e[16] !== n.title ? (B = /* @__PURE__ */ t.jsx("div", { className: "truncate text-sm font-semibold", children: n.title }), e[16] = n.title, e[17] = B) : B = e[17];
|
|
349
347
|
let A;
|
|
350
|
-
e[
|
|
351
|
-
$,
|
|
352
|
-
k
|
|
353
|
-
] }), e[20] = $, e[21] = k, e[22] = A) : A = e[22];
|
|
348
|
+
e[18] !== n.body ? (A = n.body ? /* @__PURE__ */ t.jsx("div", { className: "mt-0.5 line-clamp-2 text-xs text-muted-foreground", children: n.body }) : null, e[18] = n.body, e[19] = A) : A = e[19];
|
|
354
349
|
let C;
|
|
355
|
-
e[
|
|
356
|
-
|
|
357
|
-
|
|
350
|
+
e[20] !== B || e[21] !== A ? (C = /* @__PURE__ */ t.jsxs("div", { className: "min-w-0", children: [
|
|
351
|
+
B,
|
|
352
|
+
A
|
|
353
|
+
] }), e[20] = B, e[21] = A, e[22] = C) : C = e[22];
|
|
358
354
|
let S;
|
|
359
|
-
e[
|
|
360
|
-
A,
|
|
361
|
-
C,
|
|
362
|
-
R
|
|
363
|
-
] }), e[27] = A, e[28] = C, e[29] = R, e[30] = p, e[31] = S) : S = e[31];
|
|
364
|
-
let z, T;
|
|
365
|
-
e[32] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (z = () => {
|
|
366
|
-
c(Ce);
|
|
367
|
-
}, T = /* @__PURE__ */ t.jsx(le, { className: "h-4 w-4" }), e[32] = z, e[33] = T) : (z = e[32], T = e[33]);
|
|
368
|
-
let b;
|
|
369
|
-
e[34] !== i ? (b = /* @__PURE__ */ t.jsx("button", { ref: f, 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": i, onClick: z, children: T }), e[34] = i, e[35] = b) : b = e[35];
|
|
355
|
+
e[23] !== w ? (S = w ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 truncate text-xs text-primary", children: w }) : null, e[23] = w, e[24] = S) : S = e[24];
|
|
370
356
|
let E;
|
|
371
|
-
e[
|
|
357
|
+
e[25] !== z ? (E = z ? /* @__PURE__ */ t.jsx("div", { className: "mt-2 text-[11px] text-muted-foreground", children: z }) : null, e[25] = z, e[26] = E) : E = e[26];
|
|
358
|
+
let T;
|
|
359
|
+
e[27] !== C || e[28] !== S || e[29] !== E || e[30] !== p ? (T = /* @__PURE__ */ t.jsxs("button", { type: "button", className: "min-w-0 flex-1 text-left", onClick: p, children: [
|
|
360
|
+
C,
|
|
361
|
+
S,
|
|
362
|
+
E
|
|
363
|
+
] }), e[27] = C, e[28] = S, e[29] = E, e[30] = p, e[31] = T) : T = e[31];
|
|
364
|
+
let F, N;
|
|
365
|
+
e[32] === /* @__PURE__ */ Symbol.for("react.memo_cache_sentinel") ? (F = () => {
|
|
366
|
+
c(Ae);
|
|
367
|
+
}, N = /* @__PURE__ */ t.jsx(ce, { className: "h-4 w-4" }), e[32] = F, e[33] = N) : (F = e[32], N = e[33]);
|
|
368
|
+
let R;
|
|
369
|
+
e[34] !== i ? (R = /* @__PURE__ */ t.jsx("button", { ref: f, 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": i, onClick: F, children: N }), e[34] = i, e[35] = R) : R = e[35];
|
|
370
|
+
let D;
|
|
371
|
+
e[36] !== m || e[37] !== i || e[38] !== n.id || e[39] !== a || e[40] !== r ? (D = i ? /* @__PURE__ */ t.jsxs("div", { ref: y, role: "menu", className: X("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: [
|
|
372
372
|
/* @__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: () => {
|
|
373
373
|
c(!1), a(n.id);
|
|
374
374
|
}, children: "Archive" }),
|
|
375
375
|
/* @__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: !m, onClick: () => {
|
|
376
376
|
c(!1), r(n.id);
|
|
377
377
|
}, children: "Mark as read" })
|
|
378
|
-
] }) : null, e[36] = m, e[37] = i, e[38] = n.id, e[39] = a, e[40] = r, e[41] =
|
|
379
|
-
let
|
|
380
|
-
e[42] !==
|
|
381
|
-
|
|
382
|
-
E
|
|
383
|
-
] }), e[42] = b, e[43] = E, e[44] = D) : D = e[44];
|
|
384
|
-
let F;
|
|
385
|
-
return e[45] !== S || e[46] !== D || e[47] !== O ? (F = /* @__PURE__ */ t.jsxs("div", { className: O, children: [
|
|
386
|
-
S,
|
|
378
|
+
] }) : null, e[36] = m, e[37] = i, e[38] = n.id, e[39] = a, e[40] = r, e[41] = D) : D = e[41];
|
|
379
|
+
let P;
|
|
380
|
+
e[42] !== R || e[43] !== D ? (P = /* @__PURE__ */ t.jsxs("div", { className: "relative flex items-start", children: [
|
|
381
|
+
R,
|
|
387
382
|
D
|
|
388
|
-
] }), e[
|
|
383
|
+
] }), e[42] = R, e[43] = D, e[44] = P) : P = e[44];
|
|
384
|
+
let q;
|
|
385
|
+
return e[45] !== T || e[46] !== P || e[47] !== $ ? (q = /* @__PURE__ */ t.jsxs("div", { className: $, children: [
|
|
386
|
+
T,
|
|
387
|
+
P
|
|
388
|
+
] }), e[45] = T, e[46] = P, e[47] = $, e[48] = q) : q = e[48], q;
|
|
389
389
|
}
|
|
390
|
-
function
|
|
390
|
+
function Ae(o) {
|
|
391
391
|
return !o;
|
|
392
392
|
}
|
|
393
393
|
export {
|
|
394
|
-
|
|
394
|
+
Be as NotificationsDrawer
|
|
395
395
|
};
|
|
396
396
|
//# sourceMappingURL=index16.js.map
|