sea-react-components 1.3.34 → 1.3.36
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/HOC/with-authorization/index.d.ts +1 -1
- package/dist/HOC/with-authorization/index.d.ts.map +1 -1
- package/dist/components/toaster/index.d.ts +11 -0
- package/dist/components/toaster/index.d.ts.map +1 -0
- package/dist/components/toaster/index.js +159 -0
- package/dist/components/toaster/toaster-actions/index.d.ts +5 -0
- package/dist/components/toaster/toaster-actions/index.d.ts.map +1 -0
- package/dist/components/toaster/toaster-actions/index.js +26 -0
- package/dist/components/toaster/toaster-card/index.d.ts +24 -0
- package/dist/components/toaster/toaster-card/index.d.ts.map +1 -0
- package/dist/components/toaster/toaster-card/index.js +56 -0
- package/dist/components/toaster/toaster-hook/index.d.ts +2 -0
- package/dist/components/toaster/toaster-hook/index.d.ts.map +1 -0
- package/dist/components/toaster/toaster-hook/index.js +5 -0
- package/dist/components/toaster/toaster-store/index.d.ts +23 -0
- package/dist/components/toaster/toaster-store/index.d.ts.map +1 -0
- package/dist/components/toaster/toaster-store/index.js +15 -0
- package/dist/hooks/use-translation/index.d.ts +7 -0
- package/dist/hooks/use-translation/index.d.ts.map +1 -1
- package/dist/hooks/use-translation/index.js +14 -2
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/providers/socket-provider/index.d.ts +17 -0
- package/dist/providers/socket-provider/index.d.ts.map +1 -0
- package/dist/providers/socket-provider/index.js +60 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/axios/index.js +1 -1
- package/package.json +3 -2
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { CONSTANTS } from "sea-platform-helpers";
|
|
3
3
|
type ValidationStrategy = "all" | "some" | "one";
|
|
4
4
|
export interface Props {
|
|
5
|
-
requiredPermissions:
|
|
5
|
+
requiredPermissions: CONSTANTS.Permission.PermissionKeys[];
|
|
6
6
|
strategy?: ValidationStrategy;
|
|
7
7
|
fallback?: React.ReactNode;
|
|
8
8
|
hasPermission: (key: CONSTANTS.Permission.PermissionKeys) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HOC/with-authorization/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,KAAK,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,KAAK;IACpB,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/HOC/with-authorization/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,KAAK,kBAAkB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAEjD,MAAM,WAAW,KAAK;IACpB,mBAAmB,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC;IAC3D,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,aAAa,EAAE,CAAC,GAAG,EAAE,SAAS,CAAC,UAAU,CAAC,cAAc,KAAK,OAAO,CAAC;CACtE;AAED,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,CAAC,EACzC,gBAAgB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EACxC,EACE,mBAAmB,EACnB,QAAgB,EAChB,QAA4B,EAC5B,aAAa,GACd,EAAE,KAAK,IAEA,OAAO,CAAC,6CAWjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ToastPosition, ToastSize } from "./toaster-store";
|
|
2
|
+
type ToasterProps = {
|
|
3
|
+
timeout?: number;
|
|
4
|
+
position?: ToastPosition;
|
|
5
|
+
size?: ToastSize;
|
|
6
|
+
className?: string;
|
|
7
|
+
showIcon?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export default function Toaster({ timeout, position, size, className, showIcon, }: ToasterProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toaster/index.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGV,aAAa,EACb,SAAS,EAEV,MAAM,iBAAiB,CAAC;AAGzB,KAAK,YAAY,GAAG;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAeF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC9B,OAAc,EACd,QAAsB,EACtB,IAAW,EACX,SAAS,EACT,QAAe,GAChB,EAAE,YAAY,2CA6Ld"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState, } from "react";
|
|
3
|
+
import { removeToast } from "./toaster-actions";
|
|
4
|
+
import ToastCard from "./toaster-card";
|
|
5
|
+
import { useStore } from "./toaster-hook";
|
|
6
|
+
import { colors as toastColors, icons as toastIcons } from "./toaster-card";
|
|
7
|
+
const POSITION_CLASSES = {
|
|
8
|
+
"top-left": "top-4 left-4 items-start",
|
|
9
|
+
"top-right": "top-4 right-4 items-end",
|
|
10
|
+
"bottom-left": "bottom-4 left-4 items-start",
|
|
11
|
+
"bottom-right": "bottom-4 right-4 items-end",
|
|
12
|
+
};
|
|
13
|
+
const SIZE_CLASSES = {
|
|
14
|
+
sm: "text-sm",
|
|
15
|
+
md: "text-base",
|
|
16
|
+
lg: "text-lg",
|
|
17
|
+
};
|
|
18
|
+
export default function Toaster({ timeout = 5000, position = "top-right", size = "sm", className, showIcon = true, }) {
|
|
19
|
+
const toasts = useStore((state) => state.toasts);
|
|
20
|
+
const timersRef = useRef(new Map());
|
|
21
|
+
const closeTimersRef = useRef(new Map());
|
|
22
|
+
const nodesRef = useRef(new Map());
|
|
23
|
+
const positionsRef = useRef(new Map());
|
|
24
|
+
const [closingIds, setClosingIds] = useState(new Set());
|
|
25
|
+
const exitDuration = 200;
|
|
26
|
+
const layoutDuration = 200;
|
|
27
|
+
const requestClose = useCallback((id) => {
|
|
28
|
+
setClosingIds((prev) => {
|
|
29
|
+
if (prev.has(id)) {
|
|
30
|
+
return prev;
|
|
31
|
+
}
|
|
32
|
+
const next = new Set(prev);
|
|
33
|
+
next.add(id);
|
|
34
|
+
return next;
|
|
35
|
+
});
|
|
36
|
+
if (closeTimersRef.current.has(id)) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const timer = setTimeout(() => {
|
|
40
|
+
removeToast(id);
|
|
41
|
+
setClosingIds((prev) => {
|
|
42
|
+
const next = new Set(prev);
|
|
43
|
+
next.delete(id);
|
|
44
|
+
return next;
|
|
45
|
+
});
|
|
46
|
+
closeTimersRef.current.delete(id);
|
|
47
|
+
}, exitDuration);
|
|
48
|
+
closeTimersRef.current.set(id, timer);
|
|
49
|
+
}, [exitDuration]);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const timers = timersRef.current;
|
|
52
|
+
toasts.forEach((toast) => {
|
|
53
|
+
var _a;
|
|
54
|
+
const toastTimeout = (_a = toast.timeout) !== null && _a !== void 0 ? _a : timeout;
|
|
55
|
+
if (toastTimeout <= 0) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (!timers.has(toast.id)) {
|
|
59
|
+
const timer = setTimeout(() => requestClose(toast.id), toastTimeout);
|
|
60
|
+
timers.set(toast.id, timer);
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
for (const [id, timer] of timers.entries()) {
|
|
64
|
+
if (!toasts.some((toast) => toast.id === id)) {
|
|
65
|
+
clearTimeout(timer);
|
|
66
|
+
timers.delete(id);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (closingIds.size > 0) {
|
|
70
|
+
const toastIds = new Set(toasts.map((toast) => toast.id));
|
|
71
|
+
setClosingIds((prev) => {
|
|
72
|
+
if ([...prev].every((id) => toastIds.has(id))) {
|
|
73
|
+
return prev;
|
|
74
|
+
}
|
|
75
|
+
return new Set([...prev].filter((id) => toastIds.has(id)));
|
|
76
|
+
});
|
|
77
|
+
for (const [id, timer] of closeTimersRef.current.entries()) {
|
|
78
|
+
if (!toastIds.has(id)) {
|
|
79
|
+
clearTimeout(timer);
|
|
80
|
+
closeTimersRef.current.delete(id);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}, [toasts, timeout, requestClose, closingIds.size]);
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
const timers = timersRef.current;
|
|
87
|
+
return () => {
|
|
88
|
+
for (const timer of timers.values()) {
|
|
89
|
+
clearTimeout(timer);
|
|
90
|
+
}
|
|
91
|
+
timers.clear();
|
|
92
|
+
for (const timer of closeTimersRef.current.values()) {
|
|
93
|
+
clearTimeout(timer);
|
|
94
|
+
}
|
|
95
|
+
closeTimersRef.current.clear();
|
|
96
|
+
};
|
|
97
|
+
}, []);
|
|
98
|
+
useLayoutEffect(() => {
|
|
99
|
+
const nextPositions = new Map();
|
|
100
|
+
toasts.forEach((toast) => {
|
|
101
|
+
const node = nodesRef.current.get(toast.id);
|
|
102
|
+
if (node) {
|
|
103
|
+
nextPositions.set(toast.id, node.getBoundingClientRect());
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
nextPositions.forEach((nextRect, id) => {
|
|
107
|
+
const prevRect = positionsRef.current.get(id);
|
|
108
|
+
if (!prevRect) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
const deltaX = prevRect.left - nextRect.left;
|
|
112
|
+
const deltaY = prevRect.top - nextRect.top;
|
|
113
|
+
if (deltaX === 0 && deltaY === 0) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const node = nodesRef.current.get(id);
|
|
117
|
+
if (!node) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
node.style.transition = "transform 0ms";
|
|
121
|
+
node.style.transform = `translate(${deltaX}px, ${deltaY}px)`;
|
|
122
|
+
node.getBoundingClientRect();
|
|
123
|
+
node.style.transition = `transform ${layoutDuration}ms ease`;
|
|
124
|
+
node.style.transform = "translate(0px, 0px)";
|
|
125
|
+
const handleTransitionEnd = (event) => {
|
|
126
|
+
if (event.propertyName !== "transform") {
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
node.style.transition = "";
|
|
130
|
+
node.removeEventListener("transitionend", handleTransitionEnd);
|
|
131
|
+
};
|
|
132
|
+
node.addEventListener("transitionend", handleTransitionEnd);
|
|
133
|
+
});
|
|
134
|
+
positionsRef.current = nextPositions;
|
|
135
|
+
}, [toasts, layoutDuration]);
|
|
136
|
+
const positionClasses = POSITION_CLASSES[position];
|
|
137
|
+
const containerClassName = useMemo(() => {
|
|
138
|
+
const base = "fixed z-50 flex w-full max-w-sm flex-col gap-3 pointer-events-none";
|
|
139
|
+
return className
|
|
140
|
+
? `${base} ${positionClasses} ${className}`
|
|
141
|
+
: `${base} ${positionClasses}`;
|
|
142
|
+
}, [className, positionClasses]);
|
|
143
|
+
const enterOffset = position.startsWith("bottom") ? 12 : -12;
|
|
144
|
+
return (_jsx("div", { className: containerClassName, children: toasts.map((toast) => {
|
|
145
|
+
var _a, _b;
|
|
146
|
+
const toastSize = (_a = toast.size) !== null && _a !== void 0 ? _a : size;
|
|
147
|
+
const toastType = (_b = toast.type) !== null && _b !== void 0 ? _b : "primary";
|
|
148
|
+
const color = toastColors[toastType];
|
|
149
|
+
const icon = toastIcons[toastType];
|
|
150
|
+
return (_jsx("div", { ref: (node) => {
|
|
151
|
+
if (node) {
|
|
152
|
+
nodesRef.current.set(toast.id, node);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
nodesRef.current.delete(toast.id);
|
|
156
|
+
}
|
|
157
|
+
}, children: _jsx(ToastCard, { toast: toast, sizeClass: SIZE_CLASSES[toastSize], type: toastType, color: color, icon: icon, enterOffset: enterOffset, onClose: requestClose, showIcon: showIcon, isClosing: closingIds.has(toast.id) }) }, toast.id));
|
|
158
|
+
}) }));
|
|
159
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/toaster/toaster-actions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,kBAAkB,CAAC;AAK1B,eAAO,MAAM,SAAS,GAAI,OAAO,UAAU,KAAG,MAiB7C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,KAAG,IAKxC,CAAC;AAEF,eAAO,MAAM,WAAW,QAAO,IAE9B,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { toasterStore, } from "../toaster-store";
|
|
2
|
+
const createToastId = () => `toast_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
|
|
3
|
+
export const pushToast = (input) => {
|
|
4
|
+
const { toasts } = toasterStore.getState();
|
|
5
|
+
if (toasts.some((toast) => toast.message === input.message)) {
|
|
6
|
+
return "";
|
|
7
|
+
}
|
|
8
|
+
const toast = {
|
|
9
|
+
id: createToastId(),
|
|
10
|
+
createdAt: Date.now(),
|
|
11
|
+
...input,
|
|
12
|
+
};
|
|
13
|
+
toasterStore.setState({
|
|
14
|
+
toasts: [...toasts, toast],
|
|
15
|
+
});
|
|
16
|
+
return toast.id;
|
|
17
|
+
};
|
|
18
|
+
export const removeToast = (id) => {
|
|
19
|
+
const { toasts } = toasterStore.getState();
|
|
20
|
+
toasterStore.setState({
|
|
21
|
+
toasts: toasts.filter((toast) => toast.id !== id),
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
export const clearToasts = () => {
|
|
25
|
+
toasterStore.setState({ toasts: [] });
|
|
26
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ToastItem, Types } from "../toaster-store";
|
|
2
|
+
type ToastCardProps = {
|
|
3
|
+
toast: ToastItem;
|
|
4
|
+
sizeClass: string;
|
|
5
|
+
type: Types;
|
|
6
|
+
color: {
|
|
7
|
+
bg: string;
|
|
8
|
+
text: string;
|
|
9
|
+
};
|
|
10
|
+
icon: string;
|
|
11
|
+
enterOffset: number;
|
|
12
|
+
onClose: (id: string) => void;
|
|
13
|
+
showIcon: boolean;
|
|
14
|
+
theme?: "default";
|
|
15
|
+
isClosing: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare const colors: Record<Types, {
|
|
18
|
+
bg: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const icons: Record<Types, string>;
|
|
22
|
+
export default function ToastCard({ toast, sizeClass, type, icon, enterOffset, onClose, showIcon, theme, isClosing, }: ToastCardProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/toaster/toaster-card/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzD,KAAK,cAAc,GAAG;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,CAAC;IACZ,KAAK,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,MAAM,CACzB,KAAK,EACL;IACE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd,CA0BF,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAOvC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,KAAK,EACL,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,OAAO,EACP,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,cAAc,2CAmDhB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import Icon from "../../icon";
|
|
3
|
+
import clsx from "clsx";
|
|
4
|
+
import { useEffect, useState } from "react";
|
|
5
|
+
export const colors = {
|
|
6
|
+
primary: {
|
|
7
|
+
bg: "bg-primary",
|
|
8
|
+
text: "text-white",
|
|
9
|
+
},
|
|
10
|
+
secondary: {
|
|
11
|
+
bg: "bg-secondary",
|
|
12
|
+
text: "text-secondary",
|
|
13
|
+
},
|
|
14
|
+
success: {
|
|
15
|
+
bg: "bg-success",
|
|
16
|
+
text: "text-success",
|
|
17
|
+
},
|
|
18
|
+
info: {
|
|
19
|
+
bg: "bg-info",
|
|
20
|
+
text: "text-info",
|
|
21
|
+
},
|
|
22
|
+
warning: {
|
|
23
|
+
bg: "bg-warning",
|
|
24
|
+
text: "text-warning",
|
|
25
|
+
},
|
|
26
|
+
error: {
|
|
27
|
+
bg: "bg-error",
|
|
28
|
+
text: "text-error",
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
export const icons = {
|
|
32
|
+
primary: "gg:info",
|
|
33
|
+
secondary: "gg:info",
|
|
34
|
+
success: "qlementine-icons:success-16",
|
|
35
|
+
info: "gg:info",
|
|
36
|
+
warning: "mi:warning",
|
|
37
|
+
error: "material-symbols:error-outline",
|
|
38
|
+
};
|
|
39
|
+
export default function ToastCard({ toast, sizeClass, type, icon, enterOffset, onClose, showIcon, theme, isClosing, }) {
|
|
40
|
+
const [mounted, setMounted] = useState(false);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
const id = requestAnimationFrame(() => setMounted(true));
|
|
43
|
+
return () => cancelAnimationFrame(id);
|
|
44
|
+
}, []);
|
|
45
|
+
let className = clsx(theme === "default"
|
|
46
|
+
? "text-white"
|
|
47
|
+
: `${colors[type].text} ${colors[type].bg} bg-opacity-20`);
|
|
48
|
+
const isVisible = mounted && !isClosing;
|
|
49
|
+
const translateY = isVisible ? 0 : enterOffset;
|
|
50
|
+
const scale = isVisible ? 1 : 0.98;
|
|
51
|
+
const opacity = isVisible ? 1 : 0;
|
|
52
|
+
return (_jsx("div", { className: clsx("pointer-events-auto w-full rounded-lg transition-all duration-200 ease-out", className), style: {
|
|
53
|
+
opacity,
|
|
54
|
+
transform: `translateY(${translateY}px) scale(${scale})`,
|
|
55
|
+
}, "data-toast-type": type, children: _jsxs("div", { className: clsx("flex items-center gap-3 rounded-lg p-2", sizeClass), children: [showIcon ? _jsx(Icon, { icon: icon, className: "h-5 w-5" }) : null, _jsx("div", { className: "flex-1", children: _jsx("p", { className: "text-sm md:text-base ", children: toast.message }) }), _jsx("button", { type: "button", onClick: () => onClose(toast.id), "aria-label": "Close notification", children: _jsx(Icon, { icon: "line-md:close-small", className: "h-5 w-5 transition-all duration-300 ease-in-out hover:scale-110" }) })] }) }));
|
|
56
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/toaster/toaster-hook/index.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,EACjD,QAAQ,GAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAA4C,GACxE,SAAS,CAIX"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export type ToastSize = "sm" | "md" | "lg";
|
|
2
|
+
export type Types = "primary" | "secondary" | "success" | "info" | "warning" | "error";
|
|
3
|
+
export type ToastPosition = "top-left" | "top-right" | "bottom-left" | "bottom-right";
|
|
4
|
+
export type ToastItem = {
|
|
5
|
+
id: string;
|
|
6
|
+
message: string;
|
|
7
|
+
type?: Types;
|
|
8
|
+
size?: ToastSize;
|
|
9
|
+
timeout?: number;
|
|
10
|
+
createdAt: number;
|
|
11
|
+
};
|
|
12
|
+
export type ToastInput = Omit<ToastItem, "id" | "createdAt">;
|
|
13
|
+
export type ToasterState = {
|
|
14
|
+
toasts: ToastItem[];
|
|
15
|
+
};
|
|
16
|
+
type Listener = (state: ToasterState) => void;
|
|
17
|
+
export declare const toasterStore: {
|
|
18
|
+
getState: () => ToasterState;
|
|
19
|
+
setState: (partial: Partial<ToasterState>) => void;
|
|
20
|
+
subscribe: (listener: Listener) => (() => void);
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/toaster/toaster-store/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,KAAK,GACb,SAAS,GACT,WAAW,GACX,SAAS,GACT,MAAM,GACN,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,WAAW,GACX,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,MAAM,SAAS,GAAG;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;AAE7D,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB,CAAC;AAEF,KAAK,QAAQ,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;AAQ9C,eAAO,MAAM,YAAY;oBACT,YAAY;wBAEN,OAAO,CAAC,YAAY,CAAC,KAAG,IAAI;0BAK1B,QAAQ,KAAG,CAAC,MAAM,IAAI,CAAC;CAI9C,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
let state = {
|
|
2
|
+
toasts: [],
|
|
3
|
+
};
|
|
4
|
+
const listeners = new Set();
|
|
5
|
+
export const toasterStore = {
|
|
6
|
+
getState: () => state,
|
|
7
|
+
setState: (partial) => {
|
|
8
|
+
state = { ...state, ...partial };
|
|
9
|
+
listeners.forEach((l) => l(state));
|
|
10
|
+
},
|
|
11
|
+
subscribe: (listener) => {
|
|
12
|
+
listeners.add(listener);
|
|
13
|
+
return () => listeners.delete(listener);
|
|
14
|
+
},
|
|
15
|
+
};
|
|
@@ -680,6 +680,7 @@ export declare const DEFAULT_TRANSLATIONS_MAP: {
|
|
|
680
680
|
excused: string;
|
|
681
681
|
totalClasses: string;
|
|
682
682
|
tip: string;
|
|
683
|
+
delete: string;
|
|
683
684
|
scanTipMessage: string;
|
|
684
685
|
markYourAttendance: string;
|
|
685
686
|
scanQRCodeDescription: string;
|
|
@@ -784,5 +785,11 @@ type TranslationKeysMap = {
|
|
|
784
785
|
export declare function useSeaTranslation<K extends keyof TranslationKeysMap>(applicationKey: K, fetchTranslation: () => Promise<Record<keyof TranslationKeysMap[K], string>>, selectedLanguageCode?: string): {
|
|
785
786
|
t: (key: keyof TranslationKeysMap[K], params?: Record<string, string | number>) => string;
|
|
786
787
|
};
|
|
788
|
+
export declare function t<K extends keyof TranslationKeysMap>(props: {
|
|
789
|
+
applicationKey: K;
|
|
790
|
+
key: keyof TranslationKeysMap[K];
|
|
791
|
+
params?: Record<string, string | number>;
|
|
792
|
+
selectedLanguageCode: string;
|
|
793
|
+
}): string;
|
|
787
794
|
export {};
|
|
788
795
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-translation/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAGjD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,iCAAiC,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IAClJ,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,mBAAmB,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACtH,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe;SACnC,4BAA4B,CAAC,EAAE,CAAC,OAAO,wBAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,eAAe,CAAC,4BAA4B,CAAC,CAAC;CACzI,CAAC;AAWF,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAClE,cAAc,EAAE,CAAC,EACjB,gBAAgB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,kBAAkB,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,EAC5E,oBAAoB,CAAC,EAAE,MAAM;aA8CtB,MAAM,kBAAkB,CAAC,CAAC,CAAC,WACvB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KACvC,MAAM;EAoBV;AAED,wBAAgB,CAAC,CAAC,CAAC,SAAS,MAAM,kBAAkB,EAAE,KAAK,EAAE;IAC3D,cAAc,EAAE,CAAC,CAAC;IAClB,GAAG,EAAE,MAAM,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACzC,oBAAoB,EAAE,MAAM,CAAC;CAC9B,GAAG,MAAM,CAeT"}
|
|
@@ -8,6 +8,7 @@ export const DEFAULT_TRANSLATIONS_MAP = {
|
|
|
8
8
|
};
|
|
9
9
|
let json = {};
|
|
10
10
|
let isFetching = false;
|
|
11
|
+
let translation;
|
|
11
12
|
const _refreshLanguage = "refreshLanguage";
|
|
12
13
|
const refreshLanguageEvent = new Event(_refreshLanguage);
|
|
13
14
|
// Generic version that preserves the type relationship
|
|
@@ -18,7 +19,6 @@ export function useSeaTranslation(applicationKey, fetchTranslation, selectedLang
|
|
|
18
19
|
if (!json[selectedLanguageCode] &&
|
|
19
20
|
isFetching == false &&
|
|
20
21
|
!!selectedLanguageCode) {
|
|
21
|
-
console.log({ selectedLanguageCode });
|
|
22
22
|
try {
|
|
23
23
|
isFetching = true;
|
|
24
24
|
const languageResponse = await fetchTranslation();
|
|
@@ -51,7 +51,6 @@ export function useSeaTranslation(applicationKey, fetchTranslation, selectedLang
|
|
|
51
51
|
}, []);
|
|
52
52
|
const t = (key, params) => {
|
|
53
53
|
var _a;
|
|
54
|
-
let translation;
|
|
55
54
|
if ((_a = json[selectedLanguageCode]) === null || _a === void 0 ? void 0 : _a[key]) {
|
|
56
55
|
translation = json[selectedLanguageCode][key];
|
|
57
56
|
}
|
|
@@ -70,3 +69,16 @@ export function useSeaTranslation(applicationKey, fetchTranslation, selectedLang
|
|
|
70
69
|
};
|
|
71
70
|
return { t };
|
|
72
71
|
}
|
|
72
|
+
export function t(props) {
|
|
73
|
+
const { applicationKey, key, params, selectedLanguageCode } = props;
|
|
74
|
+
const translationMap = json[selectedLanguageCode] || DEFAULT_TRANSLATIONS_MAP[applicationKey];
|
|
75
|
+
let translation = translationMap[key];
|
|
76
|
+
// Replace placeholders like {{ name }}, {{ count }}, etc.
|
|
77
|
+
if (params) {
|
|
78
|
+
Object.entries(params).forEach(([paramKey, paramValue]) => {
|
|
79
|
+
const placeholder = new RegExp(`{{\\s*${paramKey}\\s*}}`, "g");
|
|
80
|
+
translation = translation.replace(placeholder, String(paramValue));
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return translation;
|
|
84
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,12 +9,15 @@ export * as FirebaseUtils from "./utils/firebase-client";
|
|
|
9
9
|
export * as DeviceUtils from "./utils/device";
|
|
10
10
|
export * as Services from "./services";
|
|
11
11
|
export { default as MustAuth } from "./middleware/must-auth";
|
|
12
|
+
export { default as SocketProvider, useSocket, SocketProviderProps, } from "./providers/socket-provider";
|
|
12
13
|
export { useHasApplicationAccess } from "./hooks/user-has-application-access";
|
|
13
14
|
export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
|
|
14
|
-
export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, } from "./hooks/use-translation";
|
|
15
|
+
export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, t, } from "./hooks/use-translation";
|
|
15
16
|
export { default as Icon, Props as IconProps } from "./components/icon";
|
|
16
17
|
export { default as Button, Props as ButtonProps } from "./components/button";
|
|
17
18
|
export { default as Alert, Props as AlertProps, Types as AlertTypes, Themes as AlertThemes, } from "./components/alert";
|
|
19
|
+
export { default as Toaster } from "./components/toaster";
|
|
20
|
+
export { clearToasts, pushToast, removeToast, } from "./components/toaster/toaster-actions";
|
|
18
21
|
export { default as Badge, Props as BadgeProps, Types as BudgeTypes, } from "./components/badge";
|
|
19
22
|
export { default as Modal, ModalPosition, ModalSize, Props as ModalProps, } from "./components/modal";
|
|
20
23
|
export { default as Menu, Props as MenuProps } from "./components/menu";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,QAAQ,MAAM,aAAa,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,UAAU,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,aAAa,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG7D,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,SAAS,EACT,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EACL,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,CAAC,GACF,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,EACnB,MAAM,IAAI,WAAW,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EACL,WAAW,EACX,SAAS,EACT,WAAW,GACZ,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,aAAa,EACb,SAAS,EACT,KAAK,IAAI,UAAU,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,YAAY,GACb,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,gBAAgB,EAC3B,KAAK,IAAI,qBAAqB,GAC/B,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,kCAAkC,CAAC;AAE1C,cAAc,4BAA4B,CAAC;AAE3C,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,OAAO,EAClB,KAAK,IAAI,YAAY,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,gBAAgB,MAAM,+BAA+B,CAAC;AAElE,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,wCAAwC,GACzC,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,KAAK,EAChB,KAAK,IAAI,UAAU,EACnB,WAAW,EACX,mCAAmC,GACpC,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,KAAK,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,KAAK,IAAI,WAAW,EACpB,SAAS,IAAI,eAAe,GAC7B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,EAC1B,QAAQ,IAAI,gBAAgB,EAC5B,aAAa,IAAI,yBAAyB,EAC1C,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,EACvB,aAAa,IAAI,sBAAsB,EACvC,SAAS,IAAI,kBAAkB,EAC/B,cAAc,IAAI,uBAAuB,GAC1C,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,OAAO,IAAI,UAAU,EACrB,KAAK,IAAI,eAAe,GACzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,QAAQ,EACnB,KAAK,IAAI,aAAa,GACvB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,OAAO,IAAI,aAAa,EACxB,KAAK,IAAI,kBAAkB,GAC5B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,IAAI,WAAW,EACtB,KAAK,IAAI,gBAAgB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,IAAI,cAAc,GACxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,IAAI,mBAAmB,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,OAAO,IAAI,YAAY,EACvB,KAAK,IAAI,iBAAiB,GAC3B,MAAM,6BAA6B,CAAC;AAErC,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,OAAO,IAAI,sBAAsB,EACjC,KAAK,IAAI,2BAA2B,GACrC,MAAM,uCAAuC,CAAC;AAE/C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAExE,OAAO,EACL,OAAO,IAAI,iBAAiB,EAC5B,KAAK,IAAI,sBAAsB,GAChC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,IAAI,yBAAyB,GACnC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,14 +13,18 @@ export * as DeviceUtils from "./utils/device";
|
|
|
13
13
|
export * as Services from "./services";
|
|
14
14
|
// middleware
|
|
15
15
|
export { default as MustAuth } from "./middleware/must-auth";
|
|
16
|
+
// providers
|
|
17
|
+
export { default as SocketProvider, useSocket, } from "./providers/socket-provider";
|
|
16
18
|
// hooks
|
|
17
19
|
export { useHasApplicationAccess } from "./hooks/user-has-application-access";
|
|
18
20
|
export { useHasOneOfPermissions, useHasPermission, } from "./hooks/use-has-permission-access";
|
|
19
|
-
export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, } from "./hooks/use-translation";
|
|
21
|
+
export { useSeaTranslation, DEFAULT_TRANSLATIONS_MAP, t, } from "./hooks/use-translation";
|
|
20
22
|
// components
|
|
21
23
|
export { default as Icon } from "./components/icon";
|
|
22
24
|
export { default as Button } from "./components/button";
|
|
23
25
|
export { default as Alert, } from "./components/alert";
|
|
26
|
+
export { default as Toaster } from "./components/toaster";
|
|
27
|
+
export { clearToasts, pushToast, removeToast, } from "./components/toaster/toaster-actions";
|
|
24
28
|
export { default as Badge, } from "./components/badge";
|
|
25
29
|
export { default as Modal, } from "./components/modal";
|
|
26
30
|
export { default as Menu } from "./components/menu";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { io, Socket } from "socket.io-client";
|
|
3
|
+
export type SocketStatus = "idle" | "connecting" | "connected" | "disconnected" | "error";
|
|
4
|
+
export type SocketContextValue = {
|
|
5
|
+
socket: Socket | null;
|
|
6
|
+
status: SocketStatus;
|
|
7
|
+
error: Error | null;
|
|
8
|
+
};
|
|
9
|
+
export type SocketProviderProps = {
|
|
10
|
+
children: React.ReactNode;
|
|
11
|
+
link: string;
|
|
12
|
+
autoConnect?: boolean;
|
|
13
|
+
options?: Parameters<typeof io>[1];
|
|
14
|
+
};
|
|
15
|
+
export default function SocketProvider({ children, link, autoConnect, options, }: Readonly<SocketProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
export declare function useSocket(): SocketContextValue;
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/socket-provider/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAON,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAI9C,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,YAAY,GACZ,WAAW,GACX,cAAc,GACd,OAAO,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB,CAAC;AAIF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,QAAQ,EACR,IAAI,EACJ,WAAkB,EAClB,OAAO,GACR,EAAE,QAAQ,CAAC,mBAAmB,CAAC,2CA4D/B;AAED,wBAAgB,SAAS,uBAMxB"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useState, } from "react";
|
|
4
|
+
import { io } from "socket.io-client";
|
|
5
|
+
import { getCookie } from "../../utils/cookie";
|
|
6
|
+
import { CONSTANTS } from "sea-platform-helpers";
|
|
7
|
+
const SocketContext = createContext(null);
|
|
8
|
+
export default function SocketProvider({ children, link, autoConnect = true, options, }) {
|
|
9
|
+
const accessToken = getCookie(CONSTANTS.JWT.JWTCookieKey);
|
|
10
|
+
const [socket, setSocket] = useState(null);
|
|
11
|
+
const [status, setStatus] = useState("idle");
|
|
12
|
+
const [error, setError] = useState(null);
|
|
13
|
+
const connect = useCallback(() => {
|
|
14
|
+
setStatus("connecting");
|
|
15
|
+
const created = io(link, {
|
|
16
|
+
autoConnect,
|
|
17
|
+
auth: {
|
|
18
|
+
token: accessToken,
|
|
19
|
+
},
|
|
20
|
+
...options,
|
|
21
|
+
});
|
|
22
|
+
created.on("connect", () => {
|
|
23
|
+
setStatus("connected");
|
|
24
|
+
setError(null);
|
|
25
|
+
});
|
|
26
|
+
created.on("disconnect", () => {
|
|
27
|
+
setStatus("disconnected");
|
|
28
|
+
});
|
|
29
|
+
created.on("connect_error", (err) => {
|
|
30
|
+
setStatus("error");
|
|
31
|
+
setError(err instanceof Error ? err : new Error("Socket connect error"));
|
|
32
|
+
});
|
|
33
|
+
setSocket(created);
|
|
34
|
+
return created;
|
|
35
|
+
}, [autoConnect, link, options]);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (!link) {
|
|
38
|
+
setStatus("error");
|
|
39
|
+
setError(new Error("Socket link is required"));
|
|
40
|
+
setSocket(null);
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const created = connect();
|
|
44
|
+
return () => {
|
|
45
|
+
created.removeAllListeners();
|
|
46
|
+
created.disconnect();
|
|
47
|
+
setSocket(null);
|
|
48
|
+
setStatus("disconnected");
|
|
49
|
+
};
|
|
50
|
+
}, [connect, link]);
|
|
51
|
+
const value = useMemo(() => ({ socket, status, error }), [socket, status, error]);
|
|
52
|
+
return (_jsx(SocketContext.Provider, { value: value, children: children }));
|
|
53
|
+
}
|
|
54
|
+
export function useSocket() {
|
|
55
|
+
const context = useContext(SocketContext);
|
|
56
|
+
if (!context) {
|
|
57
|
+
throw new Error("useSocket must be used within SocketProvider");
|
|
58
|
+
}
|
|
59
|
+
return context;
|
|
60
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/hoc/can-access-application/index.tsx","../src/hoc/with-authorization/index.tsx","../src/components/accordion/index.tsx","../src/components/alert/index.tsx","../src/components/auto-complete/auto-complete-context.tsx","../src/components/auto-complete/auto-complete-dropdown.tsx","../src/components/auto-complete/auto-complete-input.tsx","../src/components/auto-complete/auto-complete-selected.tsx","../src/components/auto-complete/auto-complete.tsx","../src/components/auto-complete/index.tsx","../src/components/auto-complete/use-autocomplete.ts","../src/components/auto-complete-input/index.tsx","../src/components/avatar/index.tsx","../src/components/badge/index.tsx","../src/components/breadcrumb/index.tsx","../src/components/break-line/index.tsx","../src/components/button/index.tsx","../src/components/calendar/index.tsx","../src/components/cards-list/index.tsx","../src/components/carousel/index.tsx","../src/components/checkbox/index.tsx","../src/components/color-picker/index.tsx","../src/components/comments-container/index.tsx","../src/components/comments-container/comment-event-bus/index.ts","../src/components/comments-container/comment-form/index.tsx","../src/components/comments-container/comment-item/index.tsx","../src/components/comments-container/comments-list/index.tsx","../src/components/comments-container/constants/index.ts","../src/components/comments-container/use-comments/index.tsx","../src/components/confirm/index.tsx","../src/components/count-down/index.tsx","../src/components/day-calendar/index.tsx","../src/components/drawer/index.tsx","../src/components/editable-text/index.tsx","../src/components/expandable-text/index.tsx","../src/components/file-input/index.tsx","../src/components/file-input/components/file-item/index.tsx","../src/components/firebase-token-handler/index.tsx","../src/components/form/index.tsx","../src/components/icon/index.tsx","../src/components/input/index.tsx","../src/components/item-not-found/index.tsx","../src/components/list-item/index.tsx","../src/components/list-item/components/page-button/index.tsx","../src/components/list-item/components/pagination/index.tsx","../src/components/loader/index.tsx","../src/components/log-activities-container/index.tsx","../src/components/log-activities-container/log-activities-list/index.tsx","../src/components/log-activities-container/log-activity-item/index.tsx","../src/components/log-activities-container/use-log-activities/index.tsx","../src/components/menu/index.tsx","../src/components/menu/menu-item/index.tsx","../src/components/modal/index.tsx","../src/components/month-calendar/index.tsx","../src/components/native-menu/index.tsx","../src/components/native-menu/native-menu-item/index.tsx","../src/components/not-authorized/index.tsx","../src/components/notifications-menu/index.tsx","../src/components/otp-input/index.tsx","../src/components/paper/index.tsx","../src/components/progress-bar/index.tsx","../src/components/radio-button/index.tsx","../src/components/search-input/index.tsx","../src/components/searchable-select/index.tsx","../src/components/select/selectchips.tsx","../src/components/select/selectcontrol.tsx","../src/components/select/selectdropdowncontent.tsx","../src/components/select/selectplaceholder.tsx","../src/components/select/selecttypes.ts","../src/components/select/selectview.tsx","../src/components/select/index.tsx","../src/components/select/useselectportal.ts","../src/components/skeleton/index.tsx","../src/components/stacked-avatars/index.tsx","../src/components/tab/index.tsx","../src/components/table/index.tsx","../src/components/text-editor/index.tsx","../src/components/text-editor/components/toolbar/index.tsx","../src/components/text-editor/utils/index.ts","../src/components/textarea/index.tsx","../src/components/toggle/index.tsx","../src/components/tooltip/index.tsx","../src/components/tree-checkbox/index.tsx","../src/components/tree-checkbox/components/tree-checkbox-item/index.tsx","../src/components/tree-checkbox/utils/index.ts","../src/components/week-calendar/index.tsx","../src/constants/index.ts","../src/hooks/list-items-hook/types.ts","../src/hooks/list-items-hook/usebulkactions.ts","../src/hooks/list-items-hook/usefilters.ts","../src/hooks/list-items-hook/usepagination.ts","../src/hooks/use-has-permission-access/index.ts","../src/hooks/use-translation/index.ts","../src/hooks/user-has-application-access/index.ts","../src/middleware/must-auth/index.tsx","../src/services/index.ts","../src/services/remote-service/index.ts","../src/utils/auth-axios/index.ts","../src/utils/axios/index.ts","../src/utils/color/index.ts","../src/utils/cookie/index.ts","../src/utils/device/index.ts","../src/utils/file/index.ts","../src/utils/firebase-client/firebase.ts","../src/utils/firebase-client/index.ts","../src/utils/firebase-client/types.ts","../src/utils/jwt/index.ts","../src/utils/notification-localstorage/index.ts","../src/utils/validation/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/index.ts","../src/hoc/can-access-application/index.tsx","../src/hoc/with-authorization/index.tsx","../src/components/accordion/index.tsx","../src/components/alert/index.tsx","../src/components/auto-complete/auto-complete-context.tsx","../src/components/auto-complete/auto-complete-dropdown.tsx","../src/components/auto-complete/auto-complete-input.tsx","../src/components/auto-complete/auto-complete-selected.tsx","../src/components/auto-complete/auto-complete.tsx","../src/components/auto-complete/index.tsx","../src/components/auto-complete/use-autocomplete.ts","../src/components/auto-complete-input/index.tsx","../src/components/avatar/index.tsx","../src/components/badge/index.tsx","../src/components/breadcrumb/index.tsx","../src/components/break-line/index.tsx","../src/components/button/index.tsx","../src/components/calendar/index.tsx","../src/components/cards-list/index.tsx","../src/components/carousel/index.tsx","../src/components/checkbox/index.tsx","../src/components/color-picker/index.tsx","../src/components/comments-container/index.tsx","../src/components/comments-container/comment-event-bus/index.ts","../src/components/comments-container/comment-form/index.tsx","../src/components/comments-container/comment-item/index.tsx","../src/components/comments-container/comments-list/index.tsx","../src/components/comments-container/constants/index.ts","../src/components/comments-container/use-comments/index.tsx","../src/components/confirm/index.tsx","../src/components/count-down/index.tsx","../src/components/day-calendar/index.tsx","../src/components/drawer/index.tsx","../src/components/editable-text/index.tsx","../src/components/expandable-text/index.tsx","../src/components/file-input/index.tsx","../src/components/file-input/components/file-item/index.tsx","../src/components/firebase-token-handler/index.tsx","../src/components/form/index.tsx","../src/components/icon/index.tsx","../src/components/input/index.tsx","../src/components/item-not-found/index.tsx","../src/components/list-item/index.tsx","../src/components/list-item/components/page-button/index.tsx","../src/components/list-item/components/pagination/index.tsx","../src/components/loader/index.tsx","../src/components/log-activities-container/index.tsx","../src/components/log-activities-container/log-activities-list/index.tsx","../src/components/log-activities-container/log-activity-item/index.tsx","../src/components/log-activities-container/use-log-activities/index.tsx","../src/components/menu/index.tsx","../src/components/menu/menu-item/index.tsx","../src/components/modal/index.tsx","../src/components/month-calendar/index.tsx","../src/components/native-menu/index.tsx","../src/components/native-menu/native-menu-item/index.tsx","../src/components/not-authorized/index.tsx","../src/components/notifications-menu/index.tsx","../src/components/otp-input/index.tsx","../src/components/paper/index.tsx","../src/components/progress-bar/index.tsx","../src/components/radio-button/index.tsx","../src/components/search-input/index.tsx","../src/components/searchable-select/index.tsx","../src/components/select/selectchips.tsx","../src/components/select/selectcontrol.tsx","../src/components/select/selectdropdowncontent.tsx","../src/components/select/selectplaceholder.tsx","../src/components/select/selecttypes.ts","../src/components/select/selectview.tsx","../src/components/select/index.tsx","../src/components/select/useselectportal.ts","../src/components/skeleton/index.tsx","../src/components/stacked-avatars/index.tsx","../src/components/tab/index.tsx","../src/components/table/index.tsx","../src/components/text-editor/index.tsx","../src/components/text-editor/components/toolbar/index.tsx","../src/components/text-editor/utils/index.ts","../src/components/textarea/index.tsx","../src/components/toaster/index.tsx","../src/components/toaster/toaster-actions/index.ts","../src/components/toaster/toaster-card/index.tsx","../src/components/toaster/toaster-hook/index.ts","../src/components/toaster/toaster-store/index.ts","../src/components/toggle/index.tsx","../src/components/tooltip/index.tsx","../src/components/tree-checkbox/index.tsx","../src/components/tree-checkbox/components/tree-checkbox-item/index.tsx","../src/components/tree-checkbox/utils/index.ts","../src/components/week-calendar/index.tsx","../src/constants/index.ts","../src/hooks/list-items-hook/types.ts","../src/hooks/list-items-hook/usebulkactions.ts","../src/hooks/list-items-hook/usefilters.ts","../src/hooks/list-items-hook/usepagination.ts","../src/hooks/use-has-permission-access/index.ts","../src/hooks/use-translation/index.ts","../src/hooks/user-has-application-access/index.ts","../src/middleware/must-auth/index.tsx","../src/providers/socket-provider/index.tsx","../src/services/index.ts","../src/services/remote-service/index.ts","../src/utils/auth-axios/index.ts","../src/utils/axios/index.ts","../src/utils/color/index.ts","../src/utils/cookie/index.ts","../src/utils/device/index.ts","../src/utils/file/index.ts","../src/utils/firebase-client/firebase.ts","../src/utils/firebase-client/index.ts","../src/utils/firebase-client/types.ts","../src/utils/jwt/index.ts","../src/utils/notification-localstorage/index.ts","../src/utils/validation/index.ts"],"version":"5.9.3"}
|
|
@@ -31,7 +31,7 @@ export const createInstance = (baseURL, options = {
|
|
|
31
31
|
config.headers[(_a = options.deviceIdKey) !== null && _a !== void 0 ? _a : CONSTANTS.Server.DEVICE_ID_HEADER_KEY] = deviceId;
|
|
32
32
|
if (options.withTimeZone) {
|
|
33
33
|
const timeZone = Utils.Moment.moment.tz.guess();
|
|
34
|
-
config.headers[
|
|
34
|
+
config.headers[CONSTANTS.Server.TIMEZONE_HEADER_KEY] = timeZone;
|
|
35
35
|
}
|
|
36
36
|
return config;
|
|
37
37
|
}, (error) => {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sea-react-components",
|
|
3
3
|
"description": "SEA react components library",
|
|
4
|
-
"version": "1.3.
|
|
4
|
+
"version": "1.3.36",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"build": "tsc --build && npx postcss src/styles.css -o dist/styles.css && npx postcss src/components/text-editor/style.css -o dist/components/text-editor/style.css",
|
|
@@ -48,8 +48,9 @@
|
|
|
48
48
|
"jwt-decode": "^4.0.0",
|
|
49
49
|
"lowlight": "^3.3.0",
|
|
50
50
|
"react-dom": "^19.2.3",
|
|
51
|
-
"sea-platform-helpers": "^1.5.
|
|
51
|
+
"sea-platform-helpers": "^1.5.30",
|
|
52
52
|
"sea-react-components": "file:",
|
|
53
|
+
"socket.io-client": "^4.8.3",
|
|
53
54
|
"uuid": "^13.0.0",
|
|
54
55
|
"yup": "^1.5.0"
|
|
55
56
|
},
|