react-luminus-components 1.3.202 → 1.3.204
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/.vite/manifest.json +58 -58
- package/dist/{Loading-CgVipx1p.cjs → Loading-74l0p5M0.cjs} +1 -1
- package/dist/{Loading-xjqgdxQw.js → Loading-CTiNUYCJ.js} +1 -1
- package/dist/{ShortcutLinksContext-CtT9qbGN.cjs → ShortcutLinksContext-D6SOjqrB.cjs} +23 -23
- package/dist/{ShortcutLinksContext-CDA4_y4H.js → ShortcutLinksContext-DjWgKFrF.js} +102 -98
- package/dist/components/common/PhotoLibrary/PhotoLibrary.d.ts +2 -1
- package/dist/components/common/PhotoLightbox/PhotoLightbox.d.ts +2 -1
- package/dist/components/common/StrictModeDroppable/StrictModeDroppable.d.ts +5 -0
- package/dist/components/common/index.d.ts +1 -0
- package/dist/contexts.cjs.js +1 -1
- package/dist/contexts.es.js +57 -56
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useRenderDraggableInPortal/useRenderDraggableInPortal.d.ts +2 -0
- package/dist/hooks.cjs.js +1 -1
- package/dist/hooks.es.js +62 -60
- package/dist/layout.cjs.js +1 -1
- package/dist/layout.es.js +10 -9
- package/dist/main.cjs.js +184 -7
- package/dist/main.es.js +9314 -3070
- package/dist/models/types/PhotoAction.d.ts +1 -1
- package/dist/{searchUtils-B6MFKz3h.cjs → searchUtils-D1Q5ffaA.cjs} +1 -1
- package/dist/{searchUtils-CmuWMIMp.js → searchUtils-Dn39KADP.js} +1 -1
- package/dist/style.css +1 -1
- package/dist/useGetApiData-BiGeqiNF.cjs +1 -0
- package/dist/{useGetApiData-yPRYMljx.js → useGetApiData-Dng3v-c1.js} +14 -13
- package/dist/{usePermissions-BJHLPP0j.js → usePermissions-DH1EcMcR.js} +4 -3
- package/dist/usePermissions-DpJaM3Pd.cjs +1 -0
- package/dist/useRenderDraggableInPortal-DIQFNh3P.cjs +1 -0
- package/dist/useRenderDraggableInPortal-DhdgZl3K.js +99 -0
- package/dist/utils.cjs.js +1 -1
- package/dist/utils.es.js +52 -51
- package/package.json +4 -1
- package/dist/useClipboard-B6o3_c4j.js +0 -86
- package/dist/useClipboard-BDAZwNR9.cjs +0 -1
- package/dist/useGetApiData-CRj_Oj2M.cjs +0 -1
- package/dist/usePermissions-BND9X9_G.cjs +0 -1
package/dist/contexts.es.js
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
var Se = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var A = (e, t, r) =>
|
|
4
|
-
import { t as N,
|
|
5
|
-
import
|
|
2
|
+
var Oe = (e, t, r) => t in e ? Se(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r;
|
|
3
|
+
var A = (e, t, r) => Oe(e, typeof t != "symbol" ? t + "" : t, r);
|
|
4
|
+
import { t as N, bq as Ee, j as f, br as we, $ as z, bb as Ie, bs as fe, ad as S, ba as je, a0 as G, bt as Pe, a_ as De, au as ke, aH as de, bu as me, aI as Le, aK as D, aJ as He, bv as _e, aY as se, bw as $e, ay as pe, bx as oe, by as Me, b0 as Re } from "./ShortcutLinksContext-DjWgKFrF.js";
|
|
5
|
+
import E, { useState as C, useCallback as p, useMemo as b, useContext as _, useEffect as P, useRef as he, Component as te } from "react";
|
|
6
6
|
import { EventType as W } from "@azure/msal-browser";
|
|
7
7
|
import { MsalProvider as Ue } from "@azure/msal-react";
|
|
8
8
|
import "react-router-dom";
|
|
9
|
+
import "react-dom";
|
|
9
10
|
import "react-hook-form";
|
|
10
11
|
import "react-flexmonster";
|
|
11
|
-
import { L as Ne } from "./Loading-
|
|
12
|
-
import { u as Fe } from "./useGetApiData-
|
|
12
|
+
import { L as Ne } from "./Loading-CTiNUYCJ.js";
|
|
13
|
+
import { u as Fe } from "./useGetApiData-Dng3v-c1.js";
|
|
13
14
|
import { u as qe } from "./useLocalStorageState-Bt99kkCr.js";
|
|
14
15
|
function Ge(e) {
|
|
15
16
|
const t = N(e);
|
|
@@ -26,7 +27,7 @@ function Ke(e, t) {
|
|
|
26
27
|
return r >= n && r <= s;
|
|
27
28
|
}
|
|
28
29
|
function Ve() {
|
|
29
|
-
return
|
|
30
|
+
return Ee(Date.now());
|
|
30
31
|
}
|
|
31
32
|
const Be = ({ children: e }) => {
|
|
32
33
|
const [t, r] = C(!1), [n, s] = C(""), o = p((c) => {
|
|
@@ -39,12 +40,12 @@ const Be = ({ children: e }) => {
|
|
|
39
40
|
e
|
|
40
41
|
] });
|
|
41
42
|
}, Ye = () => {
|
|
42
|
-
const { texts: { confirm: e } } =
|
|
43
|
+
const { texts: { confirm: e } } = _(z), { isShown: t, text: r, onFinish: n } = Ie(), { options: s } = _(fe), [o, l] = C(s.defaultValue ?? ""), a = p(() => {
|
|
43
44
|
n(null);
|
|
44
45
|
}, [n]), c = p((u) => {
|
|
45
46
|
u.preventDefault(), !(s.required && !o) && n(o);
|
|
46
47
|
}, [n, s.required, o]);
|
|
47
|
-
|
|
48
|
+
P(() => {
|
|
48
49
|
t === !0 && l(s.defaultValue ?? "");
|
|
49
50
|
}, [t, s.defaultValue]);
|
|
50
51
|
const i = b(() => ({
|
|
@@ -105,34 +106,34 @@ const Be = ({ children: e }) => {
|
|
|
105
106
|
l
|
|
106
107
|
]);
|
|
107
108
|
return /* @__PURE__ */ f.jsx(z.Provider, { value: c, children: /* @__PURE__ */ f.jsx(Be, { children: /* @__PURE__ */ f.jsxs(Je, { children: [
|
|
108
|
-
/* @__PURE__ */ f.jsx(
|
|
109
|
+
/* @__PURE__ */ f.jsx(Pe, {}),
|
|
109
110
|
a
|
|
110
111
|
] }) }) });
|
|
111
|
-
},
|
|
112
|
+
}, Mt = ({ children: e }) => {
|
|
112
113
|
const [t, r] = C(!1), [n] = C(/* @__PURE__ */ new Set()), s = p((a) => {
|
|
113
114
|
n.add(a), r(!0);
|
|
114
115
|
}, [n]), o = p((a) => {
|
|
115
116
|
n.delete(a), n.size === 0 && r(!1);
|
|
116
117
|
}, [n]), l = b(() => ({ isLoading: t, startLoading: s, stopLoading: o }), [t, s, o]);
|
|
117
|
-
return /* @__PURE__ */ f.jsxs(
|
|
118
|
+
return /* @__PURE__ */ f.jsxs(De.Provider, { value: l, children: [
|
|
118
119
|
t && /* @__PURE__ */ f.jsx(Ne, {}),
|
|
119
120
|
e
|
|
120
121
|
] });
|
|
121
|
-
},
|
|
122
|
-
const t = ke(), { msalInstance: r } =
|
|
122
|
+
}, Rt = ({ children: e }) => {
|
|
123
|
+
const t = ke(), { msalInstance: r } = _(de), { delegation: n, setDelegation: s, setAvailableDelegations: o, refreshAvailableDelegations: l } = _(me), { getToken: a } = Le(), [c, i] = C(null), u = p(async () => {
|
|
123
124
|
const y = await a();
|
|
124
125
|
y && i(y.token);
|
|
125
126
|
}, [a]);
|
|
126
|
-
|
|
127
|
+
P(() => {
|
|
127
128
|
u();
|
|
128
129
|
}, [u]);
|
|
129
130
|
const h = p(() => {
|
|
130
131
|
const y = localStorage.getItem("user") ?? null;
|
|
131
132
|
return y ? JSON.parse(y ?? "") : null;
|
|
132
133
|
}, [])(), [m, g] = C({
|
|
133
|
-
state: h ?
|
|
134
|
+
state: h ? D.LOGGED_IN : D.LOGGING_IN,
|
|
134
135
|
user: h
|
|
135
|
-
}),
|
|
136
|
+
}), $ = p(async (y) => {
|
|
136
137
|
let v = null;
|
|
137
138
|
return await t.get("/user/detail", y ? { headers: { Authorization: `Bearer ${y}` } } : void 0).then((K) => {
|
|
138
139
|
v = K.data;
|
|
@@ -141,26 +142,26 @@ const Be = ({ children: e }) => {
|
|
|
141
142
|
}), v;
|
|
142
143
|
}, [t]), w = p(() => {
|
|
143
144
|
localStorage.removeItem("user"), g({
|
|
144
|
-
state:
|
|
145
|
+
state: D.LOGGED_OUT,
|
|
145
146
|
user: null
|
|
146
147
|
}), s(null), o(null);
|
|
147
|
-
}, [o, s]),
|
|
148
|
+
}, [o, s]), O = p(async (y) => {
|
|
148
149
|
g({
|
|
149
|
-
state:
|
|
150
|
+
state: D.LOGGING_IN,
|
|
150
151
|
user: null
|
|
151
152
|
});
|
|
152
|
-
const v = await
|
|
153
|
+
const v = await $(y);
|
|
153
154
|
return v ? (g({
|
|
154
|
-
state:
|
|
155
|
+
state: D.LOGGED_IN,
|
|
155
156
|
user: v
|
|
156
157
|
}), localStorage.setItem("user", JSON.stringify(v)), await l(), !0) : (g({
|
|
157
|
-
state:
|
|
158
|
+
state: D.LOGIN_FAILED,
|
|
158
159
|
user: null
|
|
159
160
|
}), !1);
|
|
160
|
-
}, [
|
|
161
|
+
}, [$, l]), I = p(() => {
|
|
161
162
|
w();
|
|
162
163
|
}, [w]);
|
|
163
|
-
|
|
164
|
+
P(() => {
|
|
164
165
|
if (r) {
|
|
165
166
|
const y = r.addEventCallback((v) => {
|
|
166
167
|
if (v.eventType === W.LOGIN_SUCCESS && v.payload) {
|
|
@@ -174,30 +175,30 @@ const Be = ({ children: e }) => {
|
|
|
174
175
|
}
|
|
175
176
|
return () => {
|
|
176
177
|
};
|
|
177
|
-
}, [r,
|
|
178
|
+
}, [r, O, I]);
|
|
178
179
|
const ne = p(async (y) => {
|
|
179
|
-
y && await
|
|
180
|
+
y && await O(y).catch(() => {
|
|
180
181
|
I(), s(null);
|
|
181
182
|
});
|
|
182
|
-
}, [
|
|
183
|
-
|
|
183
|
+
}, [O, I, s]);
|
|
184
|
+
P(() => {
|
|
184
185
|
ne(c);
|
|
185
186
|
}, [c, n == null ? void 0 : n.id, ne]);
|
|
186
187
|
const Ae = b(() => ({
|
|
187
188
|
user: m.user,
|
|
188
189
|
userLoginState: m,
|
|
189
|
-
loginUser:
|
|
190
|
+
loginUser: O,
|
|
190
191
|
logoutUser: I
|
|
191
|
-
}), [m,
|
|
192
|
+
}), [m, O, I]);
|
|
192
193
|
return /* @__PURE__ */ f.jsx(He.Provider, { value: Ae, children: e });
|
|
193
|
-
},
|
|
194
|
-
const { cookieDomain: t } =
|
|
194
|
+
}, Ut = ({ ...e }) => {
|
|
195
|
+
const { cookieDomain: t } = _(z), [, r] = _e(["Authorization"]), n = b(() => ({
|
|
195
196
|
useMsal: e.useMsal ?? !1,
|
|
196
197
|
msalInstance: e.useMsal ? e.msalInstance ?? null : null,
|
|
197
198
|
msalScopes: e.useMsal ? e.msalScopes ?? [] : [],
|
|
198
199
|
msalExtraScopes: e.useMsal ? e.msalExtraScopes ?? [] : []
|
|
199
200
|
}), [e]);
|
|
200
|
-
return
|
|
201
|
+
return P(() => {
|
|
201
202
|
if (e.useMsal) {
|
|
202
203
|
const s = e.msalInstance.addEventCallback((o) => {
|
|
203
204
|
if (o.eventType === W.LOGIN_SUCCESS || o.eventType === W.ACQUIRE_TOKEN_SUCCESS && o.payload) {
|
|
@@ -221,7 +222,7 @@ const Be = ({ children: e }) => {
|
|
|
221
222
|
return () => {
|
|
222
223
|
};
|
|
223
224
|
}, [e, r, t]), /* @__PURE__ */ f.jsx(de.Provider, { value: n, children: e.useMsal ? /* @__PURE__ */ f.jsx(Ue, { instance: e.msalInstance, children: e.children }) : e.children });
|
|
224
|
-
},
|
|
225
|
+
}, Nt = ({ children: e, relativeEndpoint: t }) => {
|
|
225
226
|
const [r, n, s] = qe("user-delegation", null), o = b(() => {
|
|
226
227
|
if (!r)
|
|
227
228
|
return null;
|
|
@@ -231,14 +232,14 @@ const Be = ({ children: e }) => {
|
|
|
231
232
|
nullStateBeforeLoad: !1,
|
|
232
233
|
nullStateOnFail: !0
|
|
233
234
|
}), i = he(null);
|
|
234
|
-
|
|
235
|
+
P(() => {
|
|
235
236
|
const d = () => {
|
|
236
|
-
c(), i.current = window.setTimeout(d,
|
|
237
|
+
c(), i.current = window.setTimeout(d, $e() + 5e3);
|
|
237
238
|
};
|
|
238
239
|
return d(), () => {
|
|
239
240
|
i.current !== null && window.clearTimeout(i.current);
|
|
240
241
|
};
|
|
241
|
-
}, [c]),
|
|
242
|
+
}, [c]), P(() => {
|
|
242
243
|
const d = () => {
|
|
243
244
|
s();
|
|
244
245
|
};
|
|
@@ -541,7 +542,7 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
541
542
|
key: t,
|
|
542
543
|
[x]: !0
|
|
543
544
|
}, s = ve(r, n);
|
|
544
|
-
return [
|
|
545
|
+
return [E.createElement("title", s, t)];
|
|
545
546
|
}, q = (e, t) => t.map((r, n) => {
|
|
546
547
|
const s = {
|
|
547
548
|
key: n,
|
|
@@ -554,7 +555,7 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
554
555
|
s.dangerouslySetInnerHTML = { __html: c };
|
|
555
556
|
} else
|
|
556
557
|
s[a] = r[o];
|
|
557
|
-
}),
|
|
558
|
+
}), E.createElement(e, s);
|
|
558
559
|
}), T = (e, t, r = !0) => {
|
|
559
560
|
switch (e) {
|
|
560
561
|
case "title":
|
|
@@ -659,14 +660,14 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
659
660
|
titleAttributes: {}
|
|
660
661
|
}));
|
|
661
662
|
}
|
|
662
|
-
}, Tt = {}, Ce =
|
|
663
|
+
}, Tt = {}, Ce = E.createContext(Tt), j, be = (j = class extends te {
|
|
663
664
|
constructor(r) {
|
|
664
665
|
super(r);
|
|
665
666
|
A(this, "helmetData");
|
|
666
667
|
this.helmetData = new X(this.props.context || {}, j.canUseDOM);
|
|
667
668
|
}
|
|
668
669
|
render() {
|
|
669
|
-
return /* @__PURE__ */
|
|
670
|
+
return /* @__PURE__ */ E.createElement(Ce.Provider, { value: this.helmetData.value }, this.props.children);
|
|
670
671
|
}
|
|
671
672
|
}, A(j, "canUseDOM", xe), j), k = (e, t) => {
|
|
672
673
|
const r = document.head || document.querySelector(
|
|
@@ -732,11 +733,11 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
732
733
|
noscriptTags: k("noscript", a),
|
|
733
734
|
scriptTags: k("script", i),
|
|
734
735
|
styleTags: k("style", u)
|
|
735
|
-
}, g = {},
|
|
736
|
+
}, g = {}, $ = {};
|
|
736
737
|
Object.keys(m).forEach((w) => {
|
|
737
|
-
const { newTags:
|
|
738
|
-
|
|
739
|
-
}), t && t(), c(e, g,
|
|
738
|
+
const { newTags: O, oldTags: I } = m[w];
|
|
739
|
+
O.length && (g[w] = O), I.length && ($[w] = m[w].oldTags);
|
|
740
|
+
}), t && t(), c(e, g, $);
|
|
740
741
|
}, R = null, xt = (e) => {
|
|
741
742
|
R && cancelAnimationFrame(R), e.defer ? R = requestAnimationFrame(() => {
|
|
742
743
|
le(e, () => {
|
|
@@ -864,7 +865,7 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
864
865
|
}
|
|
865
866
|
mapChildrenToProps(e, t) {
|
|
866
867
|
let r = {};
|
|
867
|
-
return
|
|
868
|
+
return E.Children.forEach(e, (n) => {
|
|
868
869
|
if (!n || !n.props)
|
|
869
870
|
return;
|
|
870
871
|
const { children: s, ...o } = n.props, l = Object.keys(o).reduce((c, i) => (c[st[i] || i] = o[i], c), {});
|
|
@@ -898,14 +899,14 @@ var ye = /* @__PURE__ */ ((e) => (e.BASE = "base", e.BODY = "body", e.HEAD = "he
|
|
|
898
899
|
const s = n;
|
|
899
900
|
n = new X(s.context, !0), delete r.helmetData;
|
|
900
901
|
}
|
|
901
|
-
return n ? /* @__PURE__ */
|
|
902
|
+
return n ? /* @__PURE__ */ E.createElement(ce, { ...r, context: n.value }) : /* @__PURE__ */ E.createElement(Ce.Consumer, null, (s) => /* @__PURE__ */ E.createElement(ce, { ...r, context: s }));
|
|
902
903
|
}
|
|
903
904
|
}, A(J, "defaultProps", {
|
|
904
905
|
defer: !0,
|
|
905
906
|
encodeSpecialCharacters: !0,
|
|
906
907
|
prioritizeSeoTags: !1
|
|
907
908
|
}), J);
|
|
908
|
-
const ue = (e, t) => e ? `${e} | ${t}` : t,
|
|
909
|
+
const ue = (e, t) => e ? `${e} | ${t}` : t, Ft = ({ defaultHelmet: e, children: t, helmetPrefix: r }) => {
|
|
909
910
|
const [n, s] = C([
|
|
910
911
|
ue(r ?? "", e)
|
|
911
912
|
]), o = p((i) => {
|
|
@@ -918,7 +919,7 @@ const ue = (e, t) => e ? `${e} | ${t}` : t, Nt = ({ defaultHelmet: e, children:
|
|
|
918
919
|
t
|
|
919
920
|
] }) });
|
|
920
921
|
}, At = () => {
|
|
921
|
-
const { texts: { confirm: e } } =
|
|
922
|
+
const { texts: { confirm: e } } = _(z), { onConfirm: t, onCancel: r, text: n, show: s } = Re();
|
|
922
923
|
return /* @__PURE__ */ f.jsxs(S, { show: s, size: "sm", centered: !0, onHide: r, children: [
|
|
923
924
|
/* @__PURE__ */ f.jsx(S.Header, { className: "justify-content-center", children: /* @__PURE__ */ f.jsx(S.Title, { children: n }) }),
|
|
924
925
|
/* @__PURE__ */ f.jsx(S.Body, { children: /* @__PURE__ */ f.jsxs("div", { className: "w-100 d-flex gap-5", children: [
|
|
@@ -929,15 +930,15 @@ const ue = (e, t) => e ? `${e} | ${t}` : t, Nt = ({ defaultHelmet: e, children:
|
|
|
929
930
|
};
|
|
930
931
|
export {
|
|
931
932
|
de as AuthContext,
|
|
932
|
-
|
|
933
|
+
Ut as AuthProvider,
|
|
933
934
|
me as DelegationContext,
|
|
934
|
-
|
|
935
|
+
Nt as DelegationProvider,
|
|
935
936
|
Me as HelmetContext,
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
937
|
+
Ft as HelmetProvider,
|
|
938
|
+
De as LoadingContext,
|
|
939
|
+
Mt as LoadingProvider,
|
|
939
940
|
z as LuminusComponentsContext,
|
|
940
941
|
$t as LuminusComponentsProvider,
|
|
941
942
|
He as UserContext,
|
|
942
|
-
|
|
943
|
+
Rt as UserProvider
|
|
943
944
|
};
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -17,3 +17,4 @@ export { default as useEmployeePhotoPath } from './useEmployeePhotoPath/useEmplo
|
|
|
17
17
|
export { default as useClipboard } from './useClipboard/useClipboard';
|
|
18
18
|
export { default as useGetApiDataBound } from './useGetApiDataBound/useGetApiDataBound';
|
|
19
19
|
export { default as useWindowSize } from './useWindowSize/useWindowSize';
|
|
20
|
+
export { default as useRenderDraggableInPortal } from './useRenderDraggableInPortal/useRenderDraggableInPortal';
|
package/dist/hooks.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./ShortcutLinksContext-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./ShortcutLinksContext-D6SOjqrB.cjs"),C=require("./useWindowSize-CE6DJWzn.cjs"),x=require("./usePermissions-DpJaM3Pd.cjs"),l=require("./useRenderDraggableInPortal-DIQFNh3P.cjs"),T=require("./useGetApiData-BiGeqiNF.cjs"),c=require("react"),L=require("./useLocalStorageState-BFc8Gc8H.cjs");require("react-router-dom");require("react-dom");require("react-hook-form");require("react-flexmonster");require("@azure/msal-browser");require("@azure/msal-react");const G=r=>{let e="pending",a;const t=r.then(s=>{e="success",a=s},s=>{e="error",a=s});return()=>{switch(e){case"pending":throw t;case"success":return a;case"error":throw a;default:throw new Error("Unknown status")}}};function B(r,e){const a=u.useAxios({silent:!0,differentBaseUrl:e==null?void 0:e.customBaseUrl,customToken:e==null?void 0:e.customToken}),[t,s]=c.useState(null);return c.useEffect(()=>{(async()=>{const n=a.get(r).then(o=>o.data);s(G(n))})()},[a,r]),t}const E=(r,e,a)=>{let t="pending",s;const d=r.then(n=>{t="success",s=n},n=>{const o=n==null?void 0:n.response;(o==null?void 0:o.status)===404&&a?(t="error-404",s=n):(t="error",s=n)});return()=>{switch(t){case"pending":throw d;case"success":return s;case"error":return null;case"error-404":throw new Error("404");default:throw new Error("Unknown status")}}},i={loadOnInit:!0,silent:!1,enabled:!0,nullStateBeforeLoad:!0,nullStateOnFail:!1},O=(r,{loadOnInit:e=i.loadOnInit,enabled:a=i.enabled,silent:t=i.silent,nullStateBeforeLoad:s=i.nullStateBeforeLoad,nullStateOnFail:d=i.nullStateOnFail,customApiUrl:n,customBearerToken:o,dataTransformer:h,errorBoundaryOn404:S}=i)=>{const p=u.useAxios({silent:t,customToken:o,differentBaseUrl:n,noToastOnStatus:S?[404]:void 0}),{startLoading:D,stopLoading:w}=c.useContext(u.LoadingContext),q=c.useRef(0),{isAuthenticated:P}=u.useAuth(),[b,g]=c.useState(null),m=c.useCallback(async(f,y)=>{if(!P()||a===!1)return;!t&&D(`loadData-${r}-${y}`),s&&g(null);const k=p.get(r,{signal:f}).then(A=>h?h(A.data):A.data).finally(()=>!t&&w(`loadData-${r}-${y}`));g(E(k,d??!1,S??!1))},[P,a,t,D,r,s,p,h,w,d,S]);return c.useEffect(()=>{if(e===!1)return;const f=new AbortController;return m(f.signal,++q.current),()=>{f.abort()}},[m,e]),{data:b,setData:g,reloadData:m}};exports.cancelToken=u.cancelToken;exports.useAuth=u.useAuth;exports.useAxios=u.useAxios;exports.useConfirm=u.useConfirm;exports.useFormControlType=u.useFormControlType;exports.useNotifications=u.useNotifications;exports.usePrompt=u.usePrompt;exports.useZodSchemaTypes=u.useZodSchemaTypes;exports.useClickOutside=C.useClickOutside;exports.useWindowSize=C.useWindowSize;exports.usePermissions=x.usePermissions;exports.useClipboard=l.useClipboard;exports.useEmployeePhotoPath=l.useEmployeePhotoPath;exports.useKeyPress=l.useKeyPress;exports.useRenderDraggableInPortal=l.useRenderDraggableInPortal;exports.useSearchQuery=l.useSearchQuery;exports.useSearchQueryState=l.useSearchQueryState;exports.useGetApiData=T.useGetApiData;exports.useLocalStorageState=L.useLocalStorageState;exports.useGetApiDataBound=O;exports.useGetDataBound=B;
|
package/dist/hooks.es.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
|
-
import { au as
|
|
2
|
-
import {
|
|
3
|
-
import { a as Y, u as
|
|
4
|
-
import { u as
|
|
5
|
-
import { u as
|
|
6
|
-
import { u as
|
|
7
|
-
import { useState as
|
|
8
|
-
import { u as
|
|
1
|
+
import { au as x, a_ as P, aI as $ } from "./ShortcutLinksContext-DjWgKFrF.js";
|
|
2
|
+
import { bz as j, b0 as q, aO as H, a$ as J, bb as M, bA as V } from "./ShortcutLinksContext-DjWgKFrF.js";
|
|
3
|
+
import { a as Y, u as ee } from "./useWindowSize-OLYtjFv_.js";
|
|
4
|
+
import { u as se } from "./usePermissions-DH1EcMcR.js";
|
|
5
|
+
import { u as oe, e as re, a as ne, b as ue, c as ce, d as le } from "./useRenderDraggableInPortal-DhdgZl3K.js";
|
|
6
|
+
import { u as fe } from "./useGetApiData-Dng3v-c1.js";
|
|
7
|
+
import { useState as S, useEffect as C, useContext as L, useRef as O, useCallback as T } from "react";
|
|
8
|
+
import { u as me } from "./useLocalStorageState-Bt99kkCr.js";
|
|
9
9
|
import "react-router-dom";
|
|
10
|
+
import "react-dom";
|
|
10
11
|
import "react-hook-form";
|
|
11
12
|
import "react-flexmonster";
|
|
12
13
|
import "@azure/msal-browser";
|
|
13
14
|
import "@azure/msal-react";
|
|
14
|
-
const
|
|
15
|
-
let
|
|
16
|
-
const
|
|
17
|
-
|
|
15
|
+
const U = (o) => {
|
|
16
|
+
let e = "pending", a;
|
|
17
|
+
const t = o.then((s) => {
|
|
18
|
+
e = "success", a = s;
|
|
18
19
|
}, (s) => {
|
|
19
|
-
|
|
20
|
+
e = "error", a = s;
|
|
20
21
|
});
|
|
21
22
|
return () => {
|
|
22
|
-
switch (
|
|
23
|
+
switch (e) {
|
|
23
24
|
case "pending":
|
|
24
|
-
throw
|
|
25
|
+
throw t;
|
|
25
26
|
case "success":
|
|
26
27
|
return a;
|
|
27
28
|
case "error":
|
|
@@ -31,29 +32,29 @@ const B = (o) => {
|
|
|
31
32
|
}
|
|
32
33
|
};
|
|
33
34
|
};
|
|
34
|
-
function
|
|
35
|
-
const a =
|
|
35
|
+
function K(o, e) {
|
|
36
|
+
const a = x({
|
|
36
37
|
silent: !0,
|
|
37
|
-
differentBaseUrl:
|
|
38
|
-
customToken:
|
|
39
|
-
}), [
|
|
38
|
+
differentBaseUrl: e == null ? void 0 : e.customBaseUrl,
|
|
39
|
+
customToken: e == null ? void 0 : e.customToken
|
|
40
|
+
}), [t, s] = S(null);
|
|
40
41
|
return C(() => {
|
|
41
42
|
(async () => {
|
|
42
43
|
const r = a.get(o).then((n) => n.data);
|
|
43
|
-
s(
|
|
44
|
+
s(U(r));
|
|
44
45
|
})();
|
|
45
|
-
}, [a, o]),
|
|
46
|
+
}, [a, o]), t;
|
|
46
47
|
}
|
|
47
|
-
const
|
|
48
|
-
let
|
|
48
|
+
const B = (o, e, a) => {
|
|
49
|
+
let t = "pending", s;
|
|
49
50
|
const c = o.then((r) => {
|
|
50
|
-
|
|
51
|
+
t = "success", s = r;
|
|
51
52
|
}, (r) => {
|
|
52
53
|
const n = r == null ? void 0 : r.response;
|
|
53
|
-
(n == null ? void 0 : n.status) === 404 && a ? (
|
|
54
|
+
(n == null ? void 0 : n.status) === 404 && a ? (t = "error-404", s = r) : (t = "error", s = r);
|
|
54
55
|
});
|
|
55
56
|
return () => {
|
|
56
|
-
switch (
|
|
57
|
+
switch (t) {
|
|
57
58
|
case "pending":
|
|
58
59
|
throw c;
|
|
59
60
|
case "success":
|
|
@@ -72,61 +73,62 @@ const E = (o, t, a) => {
|
|
|
72
73
|
enabled: !0,
|
|
73
74
|
nullStateBeforeLoad: !0,
|
|
74
75
|
nullStateOnFail: !1
|
|
75
|
-
},
|
|
76
|
-
const p =
|
|
77
|
-
silent:
|
|
76
|
+
}, N = (o, { loadOnInit: e = u.loadOnInit, enabled: a = u.enabled, silent: t = u.silent, nullStateBeforeLoad: s = u.nullStateBeforeLoad, nullStateOnFail: c = u.nullStateOnFail, customApiUrl: r, customBearerToken: n, dataTransformer: i, errorBoundaryOn404: f } = u) => {
|
|
77
|
+
const p = x({
|
|
78
|
+
silent: t,
|
|
78
79
|
customToken: n,
|
|
79
80
|
differentBaseUrl: r,
|
|
80
81
|
noToastOnStatus: f ? [404] : void 0
|
|
81
|
-
}), { startLoading: h, stopLoading:
|
|
82
|
-
if (!
|
|
82
|
+
}), { startLoading: h, stopLoading: g } = L(P), k = O(0), { isAuthenticated: w } = $(), [A, d] = S(null), m = T(async (l, D) => {
|
|
83
|
+
if (!w() || a === !1)
|
|
83
84
|
return;
|
|
84
|
-
!
|
|
85
|
-
const
|
|
85
|
+
!t && h(`loadData-${o}-${D}`), s && d(null);
|
|
86
|
+
const y = p.get(o, {
|
|
86
87
|
signal: l
|
|
87
|
-
}).then((
|
|
88
|
-
d(
|
|
88
|
+
}).then((b) => i ? i(b.data) : b.data).finally(() => !t && g(`loadData-${o}-${D}`));
|
|
89
|
+
d(B(y, c ?? !1, f ?? !1));
|
|
89
90
|
}, [
|
|
90
|
-
|
|
91
|
+
w,
|
|
91
92
|
a,
|
|
92
|
-
|
|
93
|
+
t,
|
|
93
94
|
h,
|
|
94
95
|
o,
|
|
95
96
|
s,
|
|
96
97
|
p,
|
|
97
98
|
i,
|
|
98
|
-
|
|
99
|
+
g,
|
|
99
100
|
c,
|
|
100
101
|
f
|
|
101
102
|
]);
|
|
102
103
|
return C(() => {
|
|
103
|
-
if (
|
|
104
|
+
if (e === !1)
|
|
104
105
|
return;
|
|
105
106
|
const l = new AbortController();
|
|
106
107
|
return m(l.signal, ++k.current), () => {
|
|
107
108
|
l.abort();
|
|
108
109
|
};
|
|
109
|
-
}, [m,
|
|
110
|
+
}, [m, e]), { data: A, setData: d, reloadData: m };
|
|
110
111
|
};
|
|
111
112
|
export {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
j as cancelToken,
|
|
114
|
+
$ as useAuth,
|
|
115
|
+
x as useAxios,
|
|
115
116
|
Y as useClickOutside,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
117
|
+
oe as useClipboard,
|
|
118
|
+
q as useConfirm,
|
|
119
|
+
re as useEmployeePhotoPath,
|
|
120
|
+
H as useFormControlType,
|
|
121
|
+
fe as useGetApiData,
|
|
122
|
+
N as useGetApiDataBound,
|
|
123
|
+
K as useGetDataBound,
|
|
124
|
+
ne as useKeyPress,
|
|
125
|
+
me as useLocalStorageState,
|
|
126
|
+
J as useNotifications,
|
|
127
|
+
se as usePermissions,
|
|
128
|
+
M as usePrompt,
|
|
129
|
+
ue as useRenderDraggableInPortal,
|
|
130
|
+
ce as useSearchQuery,
|
|
131
|
+
le as useSearchQueryState,
|
|
132
|
+
ee as useWindowSize,
|
|
133
|
+
V as useZodSchemaTypes
|
|
132
134
|
};
|
package/dist/layout.cjs.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ShortcutLinksContext-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./ShortcutLinksContext-D6SOjqrB.cjs"),m=require("react"),y=require("react-router-dom");require("react-hook-form");require("react-flexmonster");require("@azure/msal-browser");require("@azure/msal-react");const g=require("./useWindowSize-CE6DJWzn.cjs");require("react-dom");const C=require("./usePermissions-DpJaM3Pd.cjs"),P="_side-menu-item_1o1uo_1",w="_disabled_1o1uo_6",z="_nav-button_1o1uo_10",I="_child_1o1uo_18",f="_text_1o1uo_23",S="_icon_1o1uo_30",q="_collapse-icon_1o1uo_36",L="_collapsed_1o1uo_46",T="_collapse-icon-mini_1o1uo_49",O="_expanded_1o1uo_80",$="_children-container_1o1uo_86",A="_visible_1o1uo_94",K="_children_1o1uo_86",D="_mobile_1o1uo_106",o={"side-menu-item":"_side-menu-item_1o1uo_1",sideMenuItem:P,disabled:w,"nav-button":"_nav-button_1o1uo_10",navButton:z,child:I,text:f,icon:S,"collapse-icon":"_collapse-icon_1o1uo_36",collapseIcon:q,collapsed:L,"collapse-icon-mini":"_collapse-icon-mini_1o1uo_49",collapseIconMini:T,expanded:O,"children-container":"_children-container_1o1uo_86",childrenContainer:$,visible:A,children:K,mobile:D},F=({item:n,menuExpanded:t,useTooltips:i,children:a})=>n.tooltip&&!t&&i?e.jsxRuntimeExports.jsx(e.SimpleTooltip,{text:n.tooltip,placement:"top",delay:{show:1e3,hide:0},children:e.jsxRuntimeExports.jsx("div",{children:a})}):a,k=({item:n,menuExpanded:t,collapsed:i,onCollapse:a,currentPath:l,useHover:x,useTooltips:v,isMobile:c})=>{var M,h,R,j;const[N,_]=m.useState(!1),[p]=l.split("?"),d=n.linkTo===p||((M=n.children)==null?void 0:M.some(s=>s.linkTo===p)),E=m.useRef(null);return g.useClickOutside([E],()=>i&&a()),e.jsxRuntimeExports.jsxs("li",{ref:E,className:e.classNames("luminus-side-menu-item",o.sideMenuItem,{[o.mobile]:c},{[o.expanded]:t},{active:N||d},{open:i&&n.children},{[o.disabled]:n.disabled||n.notPermitted||((h=n.children)==null?void 0:h.every(s=>s.notPermitted||s.disabled))},{disabled:n.disabled||n.notPermitted||((R=n.children)==null?void 0:R.every(s=>s.notPermitted||s.disabled))}),onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1),children:[e.jsxRuntimeExports.jsx(F,{item:n,menuExpanded:t,useTooltips:v,children:n.children?e.jsxRuntimeExports.jsx(e.jsxRuntimeExports.Fragment,{children:e.jsxRuntimeExports.jsxs("button",{type:"button",className:e.classNames("nav-link",o.navButton),onClick:()=>{a()},children:[e.jsxRuntimeExports.jsx("div",{className:e.classNames("icon",o.icon),children:n.icon}),!x&&!t&&e.jsxRuntimeExports.jsx("div",{className:e.classNames("collapse-icon-mini rounded",o.collapseIconMini,{[o.collapsed]:i}),children:e.jsxRuntimeExports.jsx(e.MdOutlineKeyboardArrowRight,{})}),t&&e.jsxRuntimeExports.jsx("div",{className:e.classNames("text",o.text,"text-nowrap"),children:n.title}),t&&e.jsxRuntimeExports.jsx("div",{className:e.classNames("collapse-icon",o.collapseIcon,{[o.collapsed]:i}),children:e.jsxRuntimeExports.jsx(e.MdOutlineKeyboardArrowRight,{})})]})}):e.jsxRuntimeExports.jsxs(y.Link,{to:n.disabled||n.notPermitted?"/":n.linkTo??"/",className:e.classNames("nav-link",o.navButton),children:[e.jsxRuntimeExports.jsx("div",{className:e.classNames("icon",o.icon),children:n.icon}),t&&e.jsxRuntimeExports.jsx("div",{className:e.classNames("text",o.text,"text-nowrap"),children:n.title})]})}),e.jsxRuntimeExports.jsx("div",{className:e.classNames("children-container",o.childrenContainer,{[o.visible]:i}),children:e.jsxRuntimeExports.jsx("div",{className:e.classNames("shadow rounded children",o.children),children:(j=n.children)==null?void 0:j.map(s=>e.jsxRuntimeExports.jsx(y.Link,{to:s.disabled||s.notPermitted?"/":s.linkTo??"/",className:e.classNames("nav-link child rounded",o.navButton,o.child,{[o.disabled]:s.disabled||s.notPermitted},{disabled:s.disabled||s.notPermitted}),onClick:a,children:e.jsxRuntimeExports.jsx("div",{className:e.classNames("text",o.text,"text-nowrap"),children:s.title})},s.linkTo))})})]})},W="_side-menu_15z3o_1",U="_sidebar-header_15z3o_13",G="_side-menu-content_15z3o_20",J="_expand_15z3o_24",Q="_only-logo_15z3o_28",V="_mobile_15z3o_31",X="_divider_15z3o_45",u={"side-menu":"_side-menu_15z3o_1",sideMenu:W,"sidebar-header":"_sidebar-header_15z3o_13",sidebarHeader:U,"side-menu-content":"_side-menu-content_15z3o_20",sideMenuContent:G,expand:J,"only-logo":"_only-logo_15z3o_28",onlyLogo:Q,mobile:V,divider:X},Y=({headerItem:n,searchItem:t,mainItems:i,secondaryItems:a,expanded:l,setExpanded:x,currentPath:v,useHover:c,useTooltips:N})=>{const[_,p]=m.useState(-1),{checkUserHasPermissions:d}=C.usePermissions(),E=m.useMemo(()=>i.map(s=>{var r;return{...s,notPermitted:!d(s.permissions??[],"any"),children:(r=s.children)==null?void 0:r.map(b=>({...b,notPermitted:!d(b.permissions??[],"any"),disabled:s.disabled||b.disabled}))}}),[i,d]),M=m.useMemo(()=>a.map(s=>{var r;return{...s,notPermitted:!d(s.permissions??[],"any"),children:(r=s.children)==null?void 0:r.map(b=>({...b,notPermitted:!d(b.permissions??[],"any")}))}}),[a,d]),h=s=>{p(s===_?-1:s)};m.useEffect(()=>{l||p(-1)},[l]);const R=m.useRef(null);g.useClickOutside([R],()=>x(!1));const{isMobile:j}=g.useWindowSize();return e.jsxRuntimeExports.jsxs("section",{ref:R,className:e.classNames("luminus-side-menu shadow",u.sideMenu,{[u.mobile]:j},{[u.expand]:l},{expand:l}),onMouseEnter:()=>c&&x(!0),onMouseLeave:()=>c&&x(!1),children:[e.jsxRuntimeExports.jsx("div",{className:e.classNames("sidebar-header",u.sidebarHeader,{[u.onlyLogo]:c}),role:c?void 0:"button",onClick:c?void 0:()=>x(!l),children:c?n:l?e.jsxRuntimeExports.jsxs(e.jsxRuntimeExports.Fragment,{children:[e.jsxRuntimeExports.jsx(e.MdOutlineKeyboardDoubleArrowLeft,{}),n]}):e.jsxRuntimeExports.jsx(e.MdOutlineMenu,{})}),e.jsxRuntimeExports.jsxs("ul",{className:u.sideMenuContent,children:[t?e.jsxRuntimeExports.jsx("div",{className:"p-3",children:t}):null,E.map((s,r)=>e.jsxRuntimeExports.jsx(k,{item:s,menuExpanded:l,collapsed:r===_,onCollapse:()=>h(r),currentPath:v,useHover:c,useTooltips:N,isMobile:j},s.title)),e.jsxRuntimeExports.jsx("hr",{className:e.classNames("divider",u.divider)}),M.map((s,r)=>e.jsxRuntimeExports.jsx(k,{item:s,menuExpanded:l,collapsed:r===_,onCollapse:()=>h(r),currentPath:v,useHover:c,useTooltips:N,isMobile:j},s.title))]})]})},Z="_top-bar_1usoa_1",H="_top-bar-brand_1usoa_13",B={"top-bar":"_top-bar_1usoa_1",topBar:Z,"top-bar-brand":"_top-bar-brand_1usoa_13",topBarBrand:H},ee=({appName:n,leftOffset:t,leftContent:i,centerContent:a,rightContent:l})=>e.jsxRuntimeExports.jsxs("nav",{className:e.classNames("luminus-top-bar shadow gap-1 gap-lg-3",B.topBar),style:{width:t?`calc(100% - ${t}px)`:void 0,left:t?`${t}px`:void 0},children:[e.jsxRuntimeExports.jsxs("div",{className:"d-flex gap-4 align-items-center",children:[e.jsxRuntimeExports.jsx(y.Link,{to:"/",className:e.classNames("luminus-top-bar-brand",B.topBarBrand),children:n}),i]}),a&&e.jsxRuntimeExports.jsx("div",{children:a}),e.jsxRuntimeExports.jsx("div",{className:"d-flex justify-content-end align-items-center",children:l??null})]});exports.PageContainer=e.PageContainer;exports.SideContentBar=e.SideContentBar;exports.SideMenu=Y;exports.TopBar=ee;
|
package/dist/layout.es.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { j as e, c as i, aa as B,
|
|
2
|
-
import {
|
|
1
|
+
import { j as e, c as i, aa as B, aF as L, bn as T, bo as R } from "./ShortcutLinksContext-DjWgKFrF.js";
|
|
2
|
+
import { b7 as ye, bp as fe } from "./ShortcutLinksContext-DjWgKFrF.js";
|
|
3
3
|
import { useState as I, useRef as z, useMemo as k, useEffect as S } from "react";
|
|
4
4
|
import { Link as g } from "react-router-dom";
|
|
5
5
|
import "react-hook-form";
|
|
@@ -7,7 +7,8 @@ import "react-flexmonster";
|
|
|
7
7
|
import "@azure/msal-browser";
|
|
8
8
|
import "@azure/msal-react";
|
|
9
9
|
import { a as w, u as $ } from "./useWindowSize-OLYtjFv_.js";
|
|
10
|
-
import
|
|
10
|
+
import "react-dom";
|
|
11
|
+
import { u as A } from "./usePermissions-DH1EcMcR.js";
|
|
11
12
|
const F = "_side-menu-item_1o1uo_1", K = "_disabled_1o1uo_6", O = "_nav-button_1o1uo_10", D = "_child_1o1uo_18", U = "_text_1o1uo_23", W = "_icon_1o1uo_30", q = "_collapse-icon_1o1uo_36", E = "_collapsed_1o1uo_46", G = "_collapse-icon-mini_1o1uo_49", J = "_expanded_1o1uo_80", Q = "_children-container_1o1uo_86", V = "_visible_1o1uo_94", X = "_children_1o1uo_86", Y = "_mobile_1o1uo_106", s = {
|
|
12
13
|
"side-menu-item": "_side-menu-item_1o1uo_1",
|
|
13
14
|
sideMenuItem: F,
|
|
@@ -69,7 +70,7 @@ const F = "_side-menu-item_1o1uo_1", K = "_disabled_1o1uo_6", O = "_nav-button_1
|
|
|
69
70
|
onlyLogo: se,
|
|
70
71
|
mobile: ie,
|
|
71
72
|
divider: te
|
|
72
|
-
},
|
|
73
|
+
}, ve = ({ headerItem: n, searchItem: t, mainItems: l, secondaryItems: a, expanded: d, setExpanded: m, currentPath: M, useHover: r, useTooltips: N }) => {
|
|
73
74
|
const [p, b] = I(-1), { checkUserHasPermissions: _ } = A(), y = k(() => l.map((o) => {
|
|
74
75
|
var c;
|
|
75
76
|
return {
|
|
@@ -121,7 +122,7 @@ const F = "_side-menu-item_1o1uo_1", K = "_disabled_1o1uo_6", O = "_nav-button_1
|
|
|
121
122
|
topBar: le,
|
|
122
123
|
"top-bar-brand": "_top-bar-brand_1usoa_13",
|
|
123
124
|
topBarBrand: ae
|
|
124
|
-
},
|
|
125
|
+
}, je = ({ appName: n, leftOffset: t, leftContent: l, centerContent: a, rightContent: d }) => /* @__PURE__ */ e.jsxs("nav", { className: i("luminus-top-bar shadow gap-1 gap-lg-3", P.topBar), style: {
|
|
125
126
|
width: t ? `calc(100% - ${t}px)` : void 0,
|
|
126
127
|
left: t ? `${t}px` : void 0
|
|
127
128
|
}, children: [
|
|
@@ -133,8 +134,8 @@ const F = "_side-menu-item_1o1uo_1", K = "_disabled_1o1uo_6", O = "_nav-button_1
|
|
|
133
134
|
/* @__PURE__ */ e.jsx("div", { className: "d-flex justify-content-end align-items-center", children: d ?? null })
|
|
134
135
|
] });
|
|
135
136
|
export {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
137
|
+
ye as PageContainer,
|
|
138
|
+
fe as SideContentBar,
|
|
139
|
+
ve as SideMenu,
|
|
140
|
+
je as TopBar
|
|
140
141
|
};
|