m2m-components 3.3.0 → 3.3.1-alpha-aef9a40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (306) hide show
  1. package/MenuBaseElement.d.mts +24 -0
  2. package/MenuBaseElement.d.ts +12 -8
  3. package/MenuBaseElement.js +177 -102
  4. package/MenuBaseElement.js.map +1 -1
  5. package/MenuBaseElement.mjs +9 -0
  6. package/MenuBaseElement.mjs.map +1 -0
  7. package/{cjs/storage/lib/hub.js → chunk-2X6HV5XJ.mjs} +21 -40
  8. package/chunk-2X6HV5XJ.mjs.map +1 -0
  9. package/chunk-3YQYBFME.mjs +102 -0
  10. package/chunk-3YQYBFME.mjs.map +1 -0
  11. package/chunk-5FHEMJGG.mjs +97 -0
  12. package/chunk-5FHEMJGG.mjs.map +1 -0
  13. package/{cjs/domains.js → chunk-B7STDXYN.mjs} +8 -8
  14. package/chunk-B7STDXYN.mjs.map +1 -0
  15. package/chunk-BFPL6AIR.mjs +74 -0
  16. package/chunk-BFPL6AIR.mjs.map +1 -0
  17. package/chunk-CB56CZRA.mjs +8491 -0
  18. package/chunk-CB56CZRA.mjs.map +1 -0
  19. package/chunk-CEBJL6ZD.mjs +22 -0
  20. package/chunk-CEBJL6ZD.mjs.map +1 -0
  21. package/{cjs/endpoints/matsuri-forms.v1.js → chunk-DYNNGZMQ.mjs} +94 -185
  22. package/chunk-DYNNGZMQ.mjs.map +1 -0
  23. package/chunk-FDRD4YS4.mjs +34 -0
  24. package/chunk-FDRD4YS4.mjs.map +1 -0
  25. package/{cjs/endpoints/m2m-users.v1.js → chunk-GMPQV5TL.mjs} +136 -267
  26. package/chunk-GMPQV5TL.mjs.map +1 -0
  27. package/chunk-H66U7VZB.mjs +9 -0
  28. package/chunk-H66U7VZB.mjs.map +1 -0
  29. package/chunk-IH72EYIB.mjs +9 -0
  30. package/chunk-IH72EYIB.mjs.map +1 -0
  31. package/chunk-IOZIVEOV.mjs +2 -0
  32. package/chunk-IOZIVEOV.mjs.map +1 -0
  33. package/{cjs/endpoints/m2m-notifications.v1.js → chunk-ISOF65DB.mjs} +42 -63
  34. package/chunk-ISOF65DB.mjs.map +1 -0
  35. package/chunk-JUBOAWNR.mjs +61 -0
  36. package/chunk-JUBOAWNR.mjs.map +1 -0
  37. package/chunk-LDSJ6KYP.mjs +28 -0
  38. package/chunk-LDSJ6KYP.mjs.map +1 -0
  39. package/chunk-LYVJL4T5.mjs +78 -0
  40. package/chunk-LYVJL4T5.mjs.map +1 -0
  41. package/chunk-M4ZBTA6A.mjs +19 -0
  42. package/chunk-M4ZBTA6A.mjs.map +1 -0
  43. package/chunk-NO6ZGO5P.mjs +17 -0
  44. package/chunk-NO6ZGO5P.mjs.map +1 -0
  45. package/chunk-UCJSCAN5.mjs +45 -0
  46. package/chunk-UCJSCAN5.mjs.map +1 -0
  47. package/chunk-UM6FAKR4.mjs +152 -0
  48. package/chunk-UM6FAKR4.mjs.map +1 -0
  49. package/{cjs/storage/lib/client.js → chunk-UOPEIK22.mjs} +45 -50
  50. package/chunk-UOPEIK22.mjs.map +1 -0
  51. package/chunk-V4ROE7DI.mjs +54 -0
  52. package/chunk-V4ROE7DI.mjs.map +1 -0
  53. package/chunk-VNCVFELM.mjs +83 -0
  54. package/chunk-VNCVFELM.mjs.map +1 -0
  55. package/chunk-YUHXVW6K.mjs +2 -0
  56. package/chunk-YUHXVW6K.mjs.map +1 -0
  57. package/domains.d.mts +11 -0
  58. package/domains.d.ts +3 -2
  59. package/domains.js +31 -1
  60. package/domains.js.map +1 -1
  61. package/domains.mjs +9 -0
  62. package/domains.mjs.map +1 -0
  63. package/endpoints/m2m-notifications.d.mts +7 -0
  64. package/endpoints/m2m-notifications.d.ts +5 -3
  65. package/endpoints/m2m-notifications.js +129 -4
  66. package/endpoints/m2m-notifications.js.map +1 -1
  67. package/endpoints/m2m-notifications.mjs +12 -0
  68. package/endpoints/m2m-notifications.mjs.map +1 -0
  69. package/endpoints/m2m-notifications.v1.d.mts +1 -0
  70. package/endpoints/m2m-notifications.v1.d.ts +1 -51
  71. package/endpoints/m2m-notifications.v1.js +95 -102
  72. package/endpoints/m2m-notifications.v1.js.map +1 -1
  73. package/endpoints/m2m-notifications.v1.mjs +23 -0
  74. package/endpoints/m2m-notifications.v1.mjs.map +1 -0
  75. package/endpoints/m2m-users.d.mts +7 -0
  76. package/endpoints/m2m-users.d.ts +5 -3
  77. package/endpoints/m2m-users.js +407 -4
  78. package/endpoints/m2m-users.js.map +1 -1
  79. package/endpoints/m2m-users.mjs +12 -0
  80. package/endpoints/m2m-users.mjs.map +1 -0
  81. package/endpoints/m2m-users.v1.d.mts +1 -0
  82. package/endpoints/m2m-users.v1.d.ts +1 -221
  83. package/endpoints/m2m-users.v1.js +327 -475
  84. package/endpoints/m2m-users.v1.js.map +1 -1
  85. package/endpoints/m2m-users.v1.mjs +69 -0
  86. package/endpoints/m2m-users.v1.mjs.map +1 -0
  87. package/endpoints/matsuri-forms.d.mts +7 -0
  88. package/endpoints/matsuri-forms.d.ts +5 -3
  89. package/endpoints/matsuri-forms.js +291 -4
  90. package/endpoints/matsuri-forms.js.map +1 -1
  91. package/endpoints/matsuri-forms.mjs +12 -0
  92. package/endpoints/matsuri-forms.mjs.map +1 -0
  93. package/endpoints/matsuri-forms.v1.d.mts +1 -0
  94. package/endpoints/matsuri-forms.v1.d.ts +1 -177
  95. package/endpoints/matsuri-forms.v1.js +231 -332
  96. package/endpoints/matsuri-forms.v1.js.map +1 -1
  97. package/endpoints/matsuri-forms.v1.mjs +49 -0
  98. package/endpoints/matsuri-forms.v1.mjs.map +1 -0
  99. package/feedback/MultipleTextQuestion.d.mts +6 -0
  100. package/feedback/MultipleTextQuestion.d.ts +6 -3
  101. package/feedback/MultipleTextQuestion.js +43 -10
  102. package/feedback/MultipleTextQuestion.js.map +1 -1
  103. package/feedback/MultipleTextQuestion.mjs +9 -0
  104. package/feedback/MultipleTextQuestion.mjs.map +1 -0
  105. package/feedback/SelectQuestion.d.mts +6 -0
  106. package/feedback/SelectQuestion.d.ts +6 -3
  107. package/feedback/SelectQuestion.js +55 -18
  108. package/feedback/SelectQuestion.js.map +1 -1
  109. package/feedback/SelectQuestion.mjs +9 -0
  110. package/feedback/SelectQuestion.mjs.map +1 -0
  111. package/feedback/getRandomId.d.mts +6 -0
  112. package/feedback/getRandomId.d.ts +3 -2
  113. package/feedback/getRandomId.js +31 -4
  114. package/feedback/getRandomId.js.map +1 -1
  115. package/feedback/getRandomId.mjs +9 -0
  116. package/feedback/getRandomId.mjs.map +1 -0
  117. package/feedback/index.d.mts +15 -0
  118. package/feedback/index.d.ts +7 -5
  119. package/feedback/index.js +8558 -166
  120. package/feedback/index.js.map +1 -1
  121. package/feedback/index.mjs +13 -0
  122. package/feedback/index.mjs.map +1 -0
  123. package/global.d.d.mts +4 -0
  124. package/global.d.d.ts +4 -0
  125. package/global.d.js +20 -0
  126. package/global.d.js.map +1 -0
  127. package/global.d.mjs +2 -0
  128. package/global.d.mjs.map +1 -0
  129. package/index.d.mts +6 -0
  130. package/index.d.ts +6 -9
  131. package/index.js +421 -8
  132. package/index.js.map +1 -1
  133. package/index.mjs +23 -0
  134. package/index.mjs.map +1 -0
  135. package/initM2mComponents.d.mts +7 -0
  136. package/initM2mComponents.d.ts +3 -6
  137. package/initM2mComponents.js +242 -3
  138. package/initM2mComponents.js.map +1 -1
  139. package/initM2mComponents.mjs +11 -0
  140. package/initM2mComponents.mjs.map +1 -0
  141. package/m2m-apps-menu.d.mts +16 -0
  142. package/m2m-apps-menu.d.ts +10 -5
  143. package/m2m-apps-menu.js +265 -43
  144. package/m2m-apps-menu.js.map +1 -1
  145. package/m2m-apps-menu.mjs +11 -0
  146. package/m2m-apps-menu.mjs.map +1 -0
  147. package/m2m-notifications.v1-0186835d.d.ts +73 -0
  148. package/m2m-user-menu.d.mts +17 -0
  149. package/m2m-user-menu.d.ts +10 -5
  150. package/m2m-user-menu.js +327 -53
  151. package/m2m-user-menu.js.map +1 -1
  152. package/m2m-user-menu.mjs +13 -0
  153. package/m2m-user-menu.mjs.map +1 -0
  154. package/m2m-users.v1-c78c72cf.d.ts +289 -0
  155. package/matsuri-forms.v1-0ffee104.d.ts +225 -0
  156. package/notification/NotificationProvider.d.mts +18 -0
  157. package/notification/NotificationProvider.d.ts +10 -7
  158. package/notification/NotificationProvider.js +185 -51
  159. package/notification/NotificationProvider.js.map +1 -1
  160. package/notification/NotificationProvider.mjs +15 -0
  161. package/notification/NotificationProvider.mjs.map +1 -0
  162. package/notification/ServiceIdProvider.d.mts +10 -0
  163. package/notification/ServiceIdProvider.d.ts +8 -5
  164. package/notification/ServiceIdProvider.js +56 -18
  165. package/notification/ServiceIdProvider.js.map +1 -1
  166. package/notification/ServiceIdProvider.mjs +11 -0
  167. package/notification/ServiceIdProvider.mjs.map +1 -0
  168. package/notification/api.d.mts +7 -0
  169. package/notification/api.d.ts +7 -5
  170. package/notification/api.js +157 -59
  171. package/notification/api.js.map +1 -1
  172. package/notification/api.mjs +14 -0
  173. package/notification/api.mjs.map +1 -0
  174. package/notification/domain.d.mts +24 -0
  175. package/notification/domain.d.ts +6 -5
  176. package/notification/domain.js +19 -1
  177. package/notification/domain.js.map +1 -1
  178. package/notification/domain.mjs +3 -0
  179. package/notification/domain.mjs.map +1 -0
  180. package/notification/index.d.mts +6 -0
  181. package/notification/index.d.ts +6 -5
  182. package/notification/index.js +271 -4
  183. package/notification/index.js.map +1 -1
  184. package/notification/index.mjs +30 -0
  185. package/notification/index.mjs.map +1 -0
  186. package/package.json +43 -103
  187. package/releases/m2m-releases-link.d.mts +11 -0
  188. package/releases/m2m-releases-link.d.ts +9 -5
  189. package/releases/m2m-releases-link.js +97 -54
  190. package/releases/m2m-releases-link.js.map +1 -1
  191. package/releases/m2m-releases-link.mjs +69 -0
  192. package/releases/m2m-releases-link.mjs.map +1 -0
  193. package/releases/t.d.mts +3 -0
  194. package/releases/t.d.ts +3 -2
  195. package/releases/t.js +31 -1
  196. package/releases/t.js.map +1 -1
  197. package/releases/t.mjs +9 -0
  198. package/releases/t.mjs.map +1 -0
  199. package/storage/client.d.mts +20 -0
  200. package/storage/client.d.ts +8 -6
  201. package/storage/client.js +260 -85
  202. package/storage/client.js.map +1 -1
  203. package/storage/client.mjs +14 -0
  204. package/storage/client.mjs.map +1 -0
  205. package/storage/hub.d.mts +9 -0
  206. package/storage/hub.d.ts +6 -4
  207. package/storage/hub.js +120 -7
  208. package/storage/hub.js.map +1 -1
  209. package/storage/hub.mjs +10 -0
  210. package/storage/hub.mjs.map +1 -0
  211. package/storage/lib/client.d.mts +27 -0
  212. package/storage/lib/client.d.ts +4 -5
  213. package/storage/lib/client.js +76 -57
  214. package/storage/lib/client.js.map +1 -1
  215. package/storage/lib/client.mjs +9 -0
  216. package/storage/lib/client.mjs.map +1 -0
  217. package/storage/lib/hub.d.mts +15 -0
  218. package/storage/lib/hub.d.ts +4 -4
  219. package/storage/lib/hub.js +57 -46
  220. package/storage/lib/hub.js.map +1 -1
  221. package/storage/lib/hub.mjs +9 -0
  222. package/storage/lib/hub.mjs.map +1 -0
  223. package/storage/useM2mAuth.d.mts +25 -0
  224. package/storage/useM2mAuth.d.ts +10 -8
  225. package/storage/useM2mAuth.js +184 -74
  226. package/storage/useM2mAuth.js.map +1 -1
  227. package/storage/useM2mAuth.mjs +14 -0
  228. package/storage/useM2mAuth.mjs.map +1 -0
  229. package/storage/useM2mAuth.test.d.mts +2 -0
  230. package/storage/useM2mAuth.test.d.ts +2 -0
  231. package/storage/useM2mAuth.test.js +60906 -0
  232. package/storage/useM2mAuth.test.js.map +1 -0
  233. package/storage/useM2mAuth.test.mjs +60682 -0
  234. package/storage/useM2mAuth.test.mjs.map +1 -0
  235. package/cjs/MenuBaseElement.js +0 -207
  236. package/cjs/MenuBaseElement.js.map +0 -1
  237. package/cjs/domains.js.map +0 -1
  238. package/cjs/endpoints/m2m-notifications.js +0 -15
  239. package/cjs/endpoints/m2m-notifications.js.map +0 -1
  240. package/cjs/endpoints/m2m-notifications.v1.js.map +0 -1
  241. package/cjs/endpoints/m2m-users.js +0 -15
  242. package/cjs/endpoints/m2m-users.js.map +0 -1
  243. package/cjs/endpoints/m2m-users.v1.js.map +0 -1
  244. package/cjs/endpoints/matsuri-forms.js +0 -15
  245. package/cjs/endpoints/matsuri-forms.js.map +0 -1
  246. package/cjs/endpoints/matsuri-forms.v1.js.map +0 -1
  247. package/cjs/feedback/MultipleTextQuestion.js +0 -19
  248. package/cjs/feedback/MultipleTextQuestion.js.map +0 -1
  249. package/cjs/feedback/SelectQuestion.js +0 -27
  250. package/cjs/feedback/SelectQuestion.js.map +0 -1
  251. package/cjs/feedback/getRandomId.js +0 -12
  252. package/cjs/feedback/getRandomId.js.map +0 -1
  253. package/cjs/feedback/index.js +0 -185
  254. package/cjs/feedback/index.js.map +0 -1
  255. package/cjs/index.js +0 -11
  256. package/cjs/index.js.map +0 -1
  257. package/cjs/initM2mComponents.js +0 -17
  258. package/cjs/initM2mComponents.js.map +0 -1
  259. package/cjs/m2m-apps-menu.js +0 -95
  260. package/cjs/m2m-apps-menu.js.map +0 -1
  261. package/cjs/m2m-user-menu.js +0 -91
  262. package/cjs/m2m-user-menu.js.map +0 -1
  263. package/cjs/notification/NotificationProvider.js +0 -84
  264. package/cjs/notification/NotificationProvider.js.map +0 -1
  265. package/cjs/notification/ServiceIdProvider.js +0 -33
  266. package/cjs/notification/ServiceIdProvider.js.map +0 -1
  267. package/cjs/notification/api.js +0 -55
  268. package/cjs/notification/api.js.map +0 -1
  269. package/cjs/notification/domain.js +0 -6
  270. package/cjs/notification/domain.js.map +0 -1
  271. package/cjs/notification/index.js +0 -50
  272. package/cjs/notification/index.js.map +0 -1
  273. package/cjs/releases/m2m-releases-link.js +0 -99
  274. package/cjs/releases/m2m-releases-link.js.map +0 -1
  275. package/cjs/releases/t.js +0 -8
  276. package/cjs/releases/t.js.map +0 -1
  277. package/cjs/storage/client.js +0 -89
  278. package/cjs/storage/client.js.map +0 -1
  279. package/cjs/storage/hub.js +0 -19
  280. package/cjs/storage/hub.js.map +0 -1
  281. package/cjs/storage/lib/client.js.map +0 -1
  282. package/cjs/storage/lib/hub.js.map +0 -1
  283. package/cjs/storage/useM2mAuth.js +0 -97
  284. package/cjs/storage/useM2mAuth.js.map +0 -1
  285. package/endpoints/m2m-notifications.d.ts.map +0 -1
  286. package/endpoints/m2m-notifications.v1.d.ts.map +0 -1
  287. package/endpoints/m2m-users.d.ts.map +0 -1
  288. package/endpoints/m2m-users.v1.d.ts.map +0 -1
  289. package/endpoints/matsuri-forms.d.ts.map +0 -1
  290. package/endpoints/matsuri-forms.v1.d.ts.map +0 -1
  291. package/feedback/MultipleTextQuestion.d.ts.map +0 -1
  292. package/feedback/SelectQuestion.d.ts.map +0 -1
  293. package/feedback/getRandomId.d.ts.map +0 -1
  294. package/feedback/index.d.ts.map +0 -1
  295. package/notification/NotificationProvider.d.ts.map +0 -1
  296. package/notification/ServiceIdProvider.d.ts.map +0 -1
  297. package/notification/api.d.ts.map +0 -1
  298. package/notification/domain.d.ts.map +0 -1
  299. package/notification/index.d.ts.map +0 -1
  300. package/releases/m2m-releases-link.d.ts.map +0 -1
  301. package/releases/t.d.ts.map +0 -1
  302. package/storage/client.d.ts.map +0 -1
  303. package/storage/hub.d.ts.map +0 -1
  304. package/storage/lib/client.d.ts.map +0 -1
  305. package/storage/lib/hub.d.ts.map +0 -1
  306. package/storage/useM2mAuth.d.ts.map +0 -1
@@ -0,0 +1,102 @@
1
+ 'use client'
2
+ import {
3
+ login
4
+ } from "./chunk-GMPQV5TL.mjs";
5
+ import {
6
+ m2mAuthTokenApi
7
+ } from "./chunk-5FHEMJGG.mjs";
8
+
9
+ // src/storage/useM2mAuth.tsx
10
+ import { fetcher } from "matsuri-hooks";
11
+ import {
12
+ createContext,
13
+ useCallback,
14
+ useContext,
15
+ useEffect,
16
+ useMemo,
17
+ useState
18
+ } from "react";
19
+ import { jsx } from "react/jsx-runtime";
20
+ var AuthenticationContext = createContext(
21
+ void 0
22
+ );
23
+ var checkJwtExpiration = (jwt) => {
24
+ const splitted = jwt.split(".");
25
+ if (splitted.length !== 3)
26
+ return false;
27
+ const [, payload] = splitted;
28
+ const parsedPayload = JSON.parse(atob(payload));
29
+ return /* @__PURE__ */ new Date() < new Date(parsedPayload.exp * 1e3);
30
+ };
31
+ var M2mAuthenticationProvider = ({
32
+ children
33
+ }) => {
34
+ var _a;
35
+ const [token, setToken] = useState((_a = m2mAuthTokenApi.getCache()) != null ? _a : "");
36
+ const authenticated = useMemo(() => !!token, [token]);
37
+ const tryCheckAuth = useCallback(async () => {
38
+ const authToken = await m2mAuthTokenApi.get();
39
+ if (!(authToken && checkJwtExpiration(authToken))) {
40
+ void m2mAuthTokenApi.clear();
41
+ setToken("");
42
+ } else {
43
+ void m2mAuthTokenApi.set(authToken);
44
+ setToken(authToken);
45
+ }
46
+ }, []);
47
+ useEffect(() => {
48
+ void tryCheckAuth();
49
+ }, [tryCheckAuth]);
50
+ const login2 = useCallback(async (input) => {
51
+ const { data, error } = await fetcher(login(), {
52
+ method: "POST",
53
+ body: JSON.stringify(input)
54
+ });
55
+ if (data) {
56
+ const authToken = data.accessToken;
57
+ void m2mAuthTokenApi.set(authToken);
58
+ setToken(authToken);
59
+ }
60
+ return {
61
+ error,
62
+ token: data ? data.accessToken : void 0
63
+ };
64
+ }, []);
65
+ const logout = useCallback(() => {
66
+ void m2mAuthTokenApi.clear();
67
+ window.location.reload();
68
+ }, []);
69
+ const updateToken = useCallback(async (token2) => {
70
+ if (checkJwtExpiration(token2)) {
71
+ return {
72
+ error: new Error("M2MAuthToken is expired")
73
+ };
74
+ }
75
+ await m2mAuthTokenApi.set(token2);
76
+ setToken(token2);
77
+ return { error: void 0 };
78
+ }, []);
79
+ const state = useMemo(() => {
80
+ return {
81
+ login: login2,
82
+ logout,
83
+ token,
84
+ authenticated,
85
+ updateToken
86
+ };
87
+ }, [authenticated, login2, logout, token, updateToken]);
88
+ return /* @__PURE__ */ jsx(AuthenticationContext.Provider, { value: state, children });
89
+ };
90
+ var useAuth = () => {
91
+ const ctx = useContext(AuthenticationContext);
92
+ if (!ctx) {
93
+ throw new Error("AuthenticationProvider is not found");
94
+ }
95
+ return ctx;
96
+ };
97
+
98
+ export {
99
+ M2mAuthenticationProvider,
100
+ useAuth
101
+ };
102
+ //# sourceMappingURL=chunk-3YQYBFME.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/storage/useM2mAuth.tsx"],"sourcesContent":["import { fetcher } from \"matsuri-hooks\";\nimport { m2mAuthTokenApi } from \"./client\";\nimport { login as m2mUsers_v1_login } from \"../endpoints/m2m-users.v1\";\nimport React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\ninterface LoginInput {\n email: string;\n password: string;\n}\n\ninterface AuthenticationState {\n token: string;\n authenticated: boolean;\n login: (input: LoginInput) => Promise<{ token?: string; error?: Error }>;\n logout: () => void;\n updateToken: (token: string) => Promise<{ error?: Error }>;\n}\n\nconst AuthenticationContext = createContext<AuthenticationState | undefined>(\n undefined\n);\n\nconst checkJwtExpiration = (jwt: string): boolean => {\n const splitted = jwt.split(\".\");\n if (splitted.length !== 3) return false;\n\n const [, payload] = splitted;\n const parsedPayload = JSON.parse(atob(payload)) as {\n exp: number;\n };\n return new Date() < new Date(parsedPayload.exp * 1000);\n};\n\nexport const M2mAuthenticationProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [token, setToken] = useState(m2mAuthTokenApi.getCache() ?? \"\");\n\n const authenticated = useMemo(() => !!token, [token]);\n\n const tryCheckAuth = useCallback(async () => {\n const authToken = await m2mAuthTokenApi.get();\n if (!(authToken && checkJwtExpiration(authToken))) {\n void m2mAuthTokenApi.clear();\n setToken(\"\");\n } else {\n void m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n }, []);\n\n useEffect(() => {\n void tryCheckAuth();\n }, [tryCheckAuth]);\n\n const login = useCallback(async (input: LoginInput) => {\n const { data, error } = await fetcher<{\n accessToken: string;\n }>(m2mUsers_v1_login(), {\n method: \"POST\",\n body: JSON.stringify(input),\n });\n if (data) {\n const authToken = data.accessToken;\n\n void m2mAuthTokenApi.set(authToken);\n setToken(authToken);\n }\n return {\n error,\n token: data ? data.accessToken : undefined,\n };\n }, []);\n\n const logout = useCallback(() => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n }, []);\n\n const updateToken = useCallback(async (token: string) => {\n if (checkJwtExpiration(token)) {\n return {\n error: new Error(\"M2MAuthToken is expired\"),\n };\n }\n await m2mAuthTokenApi.set(token);\n setToken(token);\n return { error: undefined };\n }, []);\n\n const state = useMemo(() => {\n return {\n login,\n logout,\n token,\n authenticated,\n updateToken,\n };\n }, [authenticated, login, logout, token, updateToken]);\n return (\n <AuthenticationContext.Provider value={state}>\n {children}\n </AuthenticationContext.Provider>\n );\n};\n\nexport const useAuth = () => {\n const ctx = useContext(AuthenticationContext);\n if (!ctx) {\n throw new Error(\"AuthenticationProvider is not found\");\n }\n return ctx;\n};\n"],"mappings":";;;;;;;;;AAAA,SAAS,eAAe;AAGxB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAmGH;AApFJ,IAAM,wBAAwB;AAAA,EAC5B;AACF;AAEA,IAAM,qBAAqB,CAAC,QAAyB;AACnD,QAAM,WAAW,IAAI,MAAM,GAAG;AAC9B,MAAI,SAAS,WAAW;AAAG,WAAO;AAElC,QAAM,CAAC,EAAE,OAAO,IAAI;AACpB,QAAM,gBAAgB,KAAK,MAAM,KAAK,OAAO,CAAC;AAG9C,SAAO,oBAAI,KAAK,IAAI,IAAI,KAAK,cAAc,MAAM,GAAI;AACvD;AAEO,IAAM,4BAA4B,CAAC;AAAA,EACxC;AACF,MAEM;AA5CN;AA6CE,QAAM,CAAC,OAAO,QAAQ,IAAI,UAAS,qBAAgB,SAAS,MAAzB,YAA8B,EAAE;AAEnE,QAAM,gBAAgB,QAAQ,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;AAEpD,QAAM,eAAe,YAAY,YAAY;AAC3C,UAAM,YAAY,MAAM,gBAAgB,IAAI;AAC5C,QAAI,EAAE,aAAa,mBAAmB,SAAS,IAAI;AACjD,WAAK,gBAAgB,MAAM;AAC3B,eAAS,EAAE;AAAA,IACb,OAAO;AACL,WAAK,gBAAgB,IAAI,SAAS;AAClC,eAAS,SAAS;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,YAAU,MAAM;AACd,SAAK,aAAa;AAAA,EACpB,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAMA,SAAQ,YAAY,OAAO,UAAsB;AACrD,UAAM,EAAE,MAAM,MAAM,IAAI,MAAM,QAE3B,MAAkB,GAAG;AAAA,MACtB,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,KAAK;AAAA,IAC5B,CAAC;AACD,QAAI,MAAM;AACR,YAAM,YAAY,KAAK;AAEvB,WAAK,gBAAgB,IAAI,SAAS;AAClC,eAAS,SAAS;AAAA,IACpB;AACA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,OAAO,KAAK,cAAc;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,SAAS,YAAY,MAAM;AAC/B,SAAK,gBAAgB,MAAM;AAC3B,WAAO,SAAS,OAAO;AAAA,EACzB,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,YAAY,OAAOC,WAAkB;AACvD,QAAI,mBAAmBA,MAAK,GAAG;AAC7B,aAAO;AAAA,QACL,OAAO,IAAI,MAAM,yBAAyB;AAAA,MAC5C;AAAA,IACF;AACA,UAAM,gBAAgB,IAAIA,MAAK;AAC/B,aAASA,MAAK;AACd,WAAO,EAAE,OAAO,OAAU;AAAA,EAC5B,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,QAAQ,MAAM;AAC1B,WAAO;AAAA,MACL,OAAAD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,eAAeA,QAAO,QAAQ,OAAO,WAAW,CAAC;AACrD,SACE,oBAAC,sBAAsB,UAAtB,EAA+B,OAAO,OACpC,UACH;AAEJ;AAEO,IAAM,UAAU,MAAM;AAC3B,QAAM,MAAM,WAAW,qBAAqB;AAC5C,MAAI,CAAC,KAAK;AACR,UAAM,IAAI,MAAM,qCAAqC;AAAA,EACvD;AACA,SAAO;AACT;","names":["login","token"]}
@@ -0,0 +1,97 @@
1
+ 'use client'
2
+ import {
3
+ StorageClient
4
+ } from "./chunk-UOPEIK22.mjs";
5
+
6
+ // src/storage/client.ts
7
+ var M2mStorageClient = class extends StorageClient {
8
+ };
9
+ var context = {};
10
+ var getStorage = async (timeout = 5e3) => {
11
+ const storage = await new Promise((resolve, reject) => {
12
+ const rejectTimer = window.setTimeout(function() {
13
+ reject(
14
+ new Error(
15
+ "Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient."
16
+ )
17
+ );
18
+ }, timeout);
19
+ const storage2 = context.storage;
20
+ if (storage2) {
21
+ window.clearTimeout(rejectTimer);
22
+ resolve(storage2);
23
+ }
24
+ const timer = window.setInterval(() => {
25
+ const storage3 = context.storage;
26
+ if (storage3) {
27
+ window.clearTimeout(rejectTimer);
28
+ window.clearInterval(timer);
29
+ resolve(storage3);
30
+ }
31
+ }, 200);
32
+ });
33
+ await storage.onConnect();
34
+ return storage;
35
+ };
36
+ var M2M_STORAGE_HUB_URL = "https://hub.m2msystems.cloud/";
37
+ var M2M_STORAGE_HUB_URL_DEV = "https://m2m-components-storage-hub-dev.netlify.app/";
38
+ var initStorageClient = (options) => {
39
+ if (context.storage) {
40
+ throw new Error(
41
+ "M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times."
42
+ );
43
+ }
44
+ const storage = new M2mStorageClient(
45
+ (options == null ? void 0 : options.env) === "production" ? M2M_STORAGE_HUB_URL : M2M_STORAGE_HUB_URL_DEV
46
+ );
47
+ context.storage = storage;
48
+ };
49
+ var m2mStorageClient = {
50
+ init: initStorageClient,
51
+ getStorage
52
+ };
53
+ var M2M_AUTH_TOKEN_KEY = "M2M_APP_AUTH_TOKEN";
54
+ var getAuthTokenCache = () => {
55
+ return window.localStorage.getItem(M2M_AUTH_TOKEN_KEY);
56
+ };
57
+ var getAuthToken = async () => {
58
+ try {
59
+ const storage = await getStorage();
60
+ const autuToken = await storage.get(M2M_AUTH_TOKEN_KEY);
61
+ return autuToken || getAuthTokenCache();
62
+ } catch (error) {
63
+ console.warn(error);
64
+ return getAuthTokenCache();
65
+ }
66
+ };
67
+ var setAuthToken = async (token) => {
68
+ window.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);
69
+ try {
70
+ const storage = await getStorage();
71
+ await storage.set(M2M_AUTH_TOKEN_KEY, token);
72
+ } catch (error) {
73
+ console.warn(error);
74
+ }
75
+ };
76
+ var clearAuthToken = async () => {
77
+ window.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);
78
+ try {
79
+ const storage = await getStorage();
80
+ await storage.del(M2M_AUTH_TOKEN_KEY);
81
+ } catch (error) {
82
+ console.warn(error);
83
+ }
84
+ };
85
+ var m2mAuthTokenApi = {
86
+ get: getAuthToken,
87
+ getCache: getAuthTokenCache,
88
+ set: setAuthToken,
89
+ clear: clearAuthToken
90
+ };
91
+
92
+ export {
93
+ m2mStorageClient,
94
+ M2M_AUTH_TOKEN_KEY,
95
+ m2mAuthTokenApi
96
+ };
97
+ //# sourceMappingURL=chunk-5FHEMJGG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/storage/client.ts"],"sourcesContent":["import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\nconst context: {\n storage?: M2mStorageClient;\n} = {};\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = window.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\"\n )\n );\n }, timeout);\n\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = window.setInterval(() => {\n const storage = context.storage;\n if (storage) {\n window.clearTimeout(rejectTimer);\n window.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (context.storage) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\"\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV\n );\n context.storage = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return window.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n window.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n window.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n"],"mappings":";;;;;;AAEA,IAAM,mBAAN,cAA+B,cAAc;AAAC;AAI9C,IAAM,UAEF,CAAC;AAOL,IAAM,aAAa,OAAO,UAAU,QAAS;AAC3C,QAAM,UAAU,MAAM,IAAI,QAA0B,CAAC,SAAS,WAAW;AACvE,UAAM,cAAc,OAAO,WAAW,WAAY;AAChD;AAAA,QACE,IAAI;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,OAAO;AAEV,UAAMA,WAAU,QAAQ;AACxB,QAAIA,UAAS;AACX,aAAO,aAAa,WAAW;AAC/B,cAAQA,QAAO;AAAA,IACjB;AAEA,UAAM,QAAQ,OAAO,YAAY,MAAM;AACrC,YAAMA,WAAU,QAAQ;AACxB,UAAIA,UAAS;AACX,eAAO,aAAa,WAAW;AAC/B,eAAO,cAAc,KAAK;AAC1B,gBAAQA,QAAO;AAAA,MACjB;AAAA,IACF,GAAG,GAAG;AAAA,EACR,CAAC;AAED,QAAM,QAAQ,UAAU;AAExB,SAAO;AACT;AAEA,IAAM,sBAAsB;AAE5B,IAAM,0BACJ;AAEF,IAAM,oBAAoB,CAAC,YAErB;AACJ,MAAI,QAAQ,SAAS;AACnB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,IAAI;AAAA,KAClB,mCAAS,SAAQ,eACb,sBACA;AAAA,EACN;AACA,UAAQ,UAAU;AACpB;AAEO,IAAM,mBAAmB;AAAA,EAC9B,MAAM;AAAA,EACN;AACF;AAEO,IAAM,qBAAqB;AAElC,IAAM,oBAAoB,MAAM;AAC9B,SAAO,OAAO,aAAa,QAAQ,kBAAkB;AACvD;AAEA,IAAM,eAAe,YAAY;AAC/B,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,YAAa,MAAM,QAAQ,IAAI,kBAAkB;AACvD,WAAO,aAAa,kBAAkB;AAAA,EACxC,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAClB,WAAO,kBAAkB;AAAA,EAC3B;AACF;AAEA,IAAM,eAAe,OAAO,UAAkB;AAC5C,SAAO,aAAa,QAAQ,oBAAoB,KAAK;AACrD,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,QAAQ,IAAI,oBAAoB,KAAK;AAAA,EAC7C,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAAA,EACpB;AACF;AAEA,IAAM,iBAAiB,YAAY;AACjC,SAAO,aAAa,WAAW,kBAAkB;AACjD,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,QAAQ,IAAI,kBAAkB;AAAA,EACtC,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAAA,EACpB;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,UAAU;AAAA,EACV,KAAK;AAAA,EACL,OAAO;AACT;","names":["storage"]}
@@ -1,10 +1,7 @@
1
- "use strict";
1
+ 'use client'
2
2
 
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getDomains = void 0;
7
- const getDomains = () => {
3
+ // src/domains.ts
4
+ var getDomains = () => {
8
5
  return globalThis.M2M_COMPONENTS_ENV === "production" ? {
9
6
  core: "https://core.m2msystems.cloud",
10
7
  sumyca: "https://manage.sumyca.com",
@@ -23,5 +20,8 @@ const getDomains = () => {
23
20
  systems: "https://dev.m2msystems.cloud"
24
21
  };
25
22
  };
26
- exports.getDomains = getDomains;
27
- //# sourceMappingURL=domains.js.map
23
+
24
+ export {
25
+ getDomains
26
+ };
27
+ //# sourceMappingURL=chunk-B7STDXYN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/domains.ts"],"sourcesContent":["export const getDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":";;;AAAO,IAAM,aAAa,MAAM;AAC9B,SAAO,WAAW,uBAAuB,eACrC;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACN;","names":[]}
@@ -0,0 +1,74 @@
1
+ 'use client'
2
+ import {
3
+ m2mAuthTokenApi
4
+ } from "./chunk-5FHEMJGG.mjs";
5
+ import {
6
+ MenuBaseElement
7
+ } from "./chunk-UM6FAKR4.mjs";
8
+ import {
9
+ getDomains
10
+ } from "./chunk-B7STDXYN.mjs";
11
+ import {
12
+ __decorateClass
13
+ } from "./chunk-JUBOAWNR.mjs";
14
+
15
+ // src/m2m-user-menu.ts
16
+ import { customElement } from "lit/decorators.js";
17
+ import { html } from "lit";
18
+ import { ref } from "lit/directives/ref.js";
19
+ var M2MUserMenu = class extends MenuBaseElement {
20
+ constructor() {
21
+ super(...arguments);
22
+ this.handleLogout = () => {
23
+ void m2mAuthTokenApi.clear();
24
+ window.location.reload();
25
+ };
26
+ }
27
+ render() {
28
+ var _a;
29
+ const domains = getDomains();
30
+ const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
31
+ return html`
32
+ <li>
33
+ <a href="${item.href}">${item.label}</a>
34
+ </li>
35
+ `;
36
+ });
37
+ return html`<nav>
38
+ <button
39
+ type="button"
40
+ class="navigation-drawer-controll-button navigation-drawer-controll-button--icon"
41
+ aria-controls="m2m-user-menu__navigation-drawer"
42
+ aria-expanded=${this.expanded}
43
+ @click=${this.handleToggleDrawer}
44
+ >
45
+ <svg viewBox="0 0 24 24" width="38px" height="38px" fill="#000000">
46
+ <path d="M0 0h24v24H0z" fill="none" />
47
+ <path
48
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"
49
+ />
50
+ </svg>
51
+ </button>
52
+ <ul
53
+ ${ref(this.listRef)}
54
+ id="m2m-user-menu__navigation-drawer"
55
+ aria-hidden=${!this.expanded}
56
+ class="navigation-drawer"
57
+ >
58
+ <li><a href="${domains.users}">アカウント情報</a></li>
59
+ <li @click=${this.handleLogout}>
60
+ <button type="button">ログアウト</button>
61
+ </li>
62
+ ${additionalItems}
63
+ </ul>
64
+ </nav>`;
65
+ }
66
+ };
67
+ M2MUserMenu = __decorateClass([
68
+ customElement("m2m-user-menu")
69
+ ], M2MUserMenu);
70
+
71
+ export {
72
+ M2MUserMenu
73
+ };
74
+ //# sourceMappingURL=chunk-BFPL6AIR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/m2m-user-menu.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n return html`<nav>\n <button\n type=\"button\"\n class=\"navigation-drawer-controll-button navigation-drawer-controll-button--icon\"\n aria-controls=\"m2m-user-menu__navigation-drawer\"\n aria-expanded=${this.expanded}\n @click=${this.handleToggleDrawer}\n >\n <svg viewBox=\"0 0 24 24\" width=\"38px\" height=\"38px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z\"\n />\n </svg>\n </button>\n <ul\n ${ref(this.listRef)}\n id=\"m2m-user-menu__navigation-drawer\"\n aria-hidden=${!this.expanded}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AAErB,SAAS,WAAW;AAKb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAA1C;AAAA;AACL,wBAAe,MAAM;AACnB,WAAK,gBAAgB,MAAM;AAC3B,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA;AAAA,EAEA,SAAS;AAhBX;AAiBI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAU9B,IAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,CAAC,KAAK,QAAQ;AAAA;AAAA;AAAA,uBAGb,QAAQ,KAAK;AAAA,qBACf,KAAK,YAAY;AAAA;AAAA;AAAA,UAG5B,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AA5Ca,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;","names":[]}