@machinemetrics/mm-react-tools 4.14.0-1 → 5.0.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/MMContext.d.ts +15 -13
- package/dist/MMContext.d.ts.map +1 -1
- package/dist/MMProvider.d.ts +1 -7
- package/dist/MMProvider.d.ts.map +1 -1
- package/dist/credentialStore.d.ts +34 -0
- package/dist/credentialStore.d.ts.map +1 -0
- package/dist/hooks.d.ts +7 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/mm-react-tools.es.js +6087 -6025
- package/package.json +1 -1
package/dist/MMContext.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { CredentialPurpose } from './credentialStore';
|
|
2
3
|
/**
|
|
3
4
|
* Environment urls used by the MachineMetrics tools. Derived from
|
|
4
5
|
* `releaseStage`, with any custom `urls` prop merged over the defaults.
|
|
@@ -33,21 +34,22 @@ export type MMRequest = <T = any>(url: string, options?: MMRequestOptions) => Pr
|
|
|
33
34
|
export interface MMContextValue {
|
|
34
35
|
/** The OAuth client id passed to `MMProvider`. */
|
|
35
36
|
clientId: string;
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
37
|
+
/**
|
|
38
|
+
* The credential for a purpose (`'api'` | `'graphql'` | `'nats'`), read from
|
|
39
|
+
* the internal store — the api bearer, the Hasura JWT, the NATS creds. Read
|
|
40
|
+
* per-use; never cache the result. Sourced identically whether the app
|
|
41
|
+
* derived it from a token (standalone/BMVP) or received a host push (P2).
|
|
42
|
+
*/
|
|
43
|
+
getCredential: (purpose: CredentialPurpose) => string | null;
|
|
44
|
+
/** Subscribe to credential-store changes (for the reactive `useCredential`). */
|
|
45
|
+
subscribeCredentials: (listener: () => void) => () => void;
|
|
46
|
+
/** Scopes actually granted, if known. */
|
|
47
|
+
grantedScope?: string | null;
|
|
48
|
+
/** True once a usable api credential is present. Not tied to a token. */
|
|
49
|
+
isAuthenticated: boolean;
|
|
48
50
|
/** Redirects the browser to the MachineMetrics OAuth login page. */
|
|
49
51
|
login: (opts?: Record<string, unknown>) => void;
|
|
50
|
-
/** Logs out of MachineMetrics and clears
|
|
52
|
+
/** Logs out of MachineMetrics and clears credentials. */
|
|
51
53
|
logout: () => Promise<void>;
|
|
52
54
|
/** Authenticated fetch helper for MachineMetrics APIs. */
|
|
53
55
|
request: MMRequest;
|
package/dist/MMContext.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MMContext.d.ts","sourceRoot":"","sources":["../src/MMContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MMContext.d.ts","sourceRoot":"","sources":["../src/MMContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;;;;GAQG;AACH,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC;AAE3C;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,GAAG,EAC9B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,gBAAgB,KACvB,OAAO,CAAC,CAAC,CAAC,CAAC;AAEhB;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;OAKG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,gFAAgF;IAChF,oBAAoB,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;IAC3D,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yEAAyE;IACzE,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAChD,yDAAyD;IACzD,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,0DAA0D;IAC1D,OAAO,EAAE,SAAS,CAAC;IACnB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,cAAc,CAAC;;AAE1C,wBAA0E"}
|
package/dist/MMProvider.d.ts
CHANGED
|
@@ -9,12 +9,6 @@ export interface MMProviderProps {
|
|
|
9
9
|
scope?: string;
|
|
10
10
|
/** OAuth client id. */
|
|
11
11
|
clientId: string;
|
|
12
|
-
/**
|
|
13
|
-
* Human-readable app name. Sent to embedding hosts in the `init` message so
|
|
14
|
-
* they can label the app (e.g. an authorization prompt) without fetching a
|
|
15
|
-
* manifest. Optional; hosts fall back to the app origin.
|
|
16
|
-
*/
|
|
17
|
-
name?: string;
|
|
18
12
|
/** OAuth client secret, used when exchanging the authorization code. */
|
|
19
13
|
clientSecret?: string;
|
|
20
14
|
/**
|
|
@@ -31,6 +25,6 @@ export interface MMProviderProps {
|
|
|
31
25
|
/** Overrides for the urls derived from `releaseStage`. */
|
|
32
26
|
urls?: Partial<MMUrls>;
|
|
33
27
|
}
|
|
34
|
-
declare const MMProvider: ({ domain, children, scope, clientId, clientSecret,
|
|
28
|
+
declare const MMProvider: ({ domain, children, scope, clientId, clientSecret, releaseStage, refreshJwtIntervalMs, device, graphQLRoleOverride, urls: customUrls, }: MMProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
35
29
|
export default MMProvider;
|
|
36
30
|
//# sourceMappingURL=MMProvider.d.ts.map
|
package/dist/MMProvider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MMProvider.d.ts","sourceRoot":"","sources":["../src/MMProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"MMProvider.d.ts","sourceRoot":"","sources":["../src/MMProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAC;AAoBf,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,MAAM,MAAM,cAAc,GAAG,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;AA4CtE,MAAM,WAAW,eAAe;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,YAAY,EAAE,cAAc,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC7C,uEAAuE;IACvE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,QAAA,MAAM,UAAU,GAAI,yIAWjB,eAAe,4CA4RjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export type CredentialPurpose = 'api' | 'graphql' | 'nats';
|
|
2
|
+
export interface CredentialBundle {
|
|
3
|
+
/** Bearer for MachineMetrics REST APIs. */
|
|
4
|
+
apiJwt?: string | null;
|
|
5
|
+
/** JWT for Hasura/GraphQL. */
|
|
6
|
+
hasuraJwt?: string | null;
|
|
7
|
+
/** NATS connection credentials. */
|
|
8
|
+
natsCreds?: string | null;
|
|
9
|
+
/** Space-delimited scopes actually granted. */
|
|
10
|
+
grantedScope?: string | null;
|
|
11
|
+
/** Epoch ms after which the bundle should be refreshed/re-pushed. */
|
|
12
|
+
expiresAt?: number | null;
|
|
13
|
+
}
|
|
14
|
+
export interface CredentialStore {
|
|
15
|
+
/** The credential for a purpose, or null. Read per-use — never cache it. */
|
|
16
|
+
getCredential(purpose: CredentialPurpose): string | null;
|
|
17
|
+
getBundle(): Readonly<CredentialBundle>;
|
|
18
|
+
grantedScope(): string | null;
|
|
19
|
+
/** True once the store holds a usable api credential. NOT tied to a token. */
|
|
20
|
+
isAuthenticated(): boolean;
|
|
21
|
+
/** Whether the bundle is past its expiry (if it declared one). */
|
|
22
|
+
isExpired(): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Replace the bundle. `null` clears it. Fields set to `undefined` are left
|
|
25
|
+
* unchanged; fields set to `null` are cleared — so a partial update (e.g.
|
|
26
|
+
* only refreshing the api jwt) is expressible.
|
|
27
|
+
*/
|
|
28
|
+
setBundle(bundle: CredentialBundle | null): void;
|
|
29
|
+
clear(): void;
|
|
30
|
+
/** Subscribe to changes; returns an unsubscribe. */
|
|
31
|
+
subscribe(listener: () => void): () => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function createCredentialStore(now?: () => number): CredentialStore;
|
|
34
|
+
//# sourceMappingURL=credentialStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentialStore.d.ts","sourceRoot":"","sources":["../src/credentialStore.ts"],"names":[],"mappings":"AAiBA,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,SAAS,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,gBAAgB;IAC/B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,4EAA4E;IAC5E,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAAC;IACzD,SAAS,IAAI,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACxC,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,eAAe,IAAI,OAAO,CAAC;IAC3B,kEAAkE;IAClE,SAAS,IAAI,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC;IACjD,KAAK,IAAI,IAAI,CAAC;IACd,oDAAoD;IACpD,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7C;AAgBD,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,MAAyB,GACnC,eAAe,CAoDjB"}
|
package/dist/hooks.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CredentialPurpose } from './credentialStore';
|
|
1
2
|
import type { MMContextValue, MMRequestOptions } from './MMContext';
|
|
2
3
|
export declare const useSearchParamsState: (searchParamName: any, defaultValue: any, deserialize?: (v: any) => any, serialize?: (v: any) => any) => any[];
|
|
3
4
|
export declare const useAsyncEffect: (delegate: any, stateTriggers: readonly unknown[], destroy: any) => Promise<void>;
|
|
@@ -41,8 +42,12 @@ export declare const useMMTemplates: (namespacePart: any) => (((id: any, { name,
|
|
|
41
42
|
error: Error | undefined;
|
|
42
43
|
})[];
|
|
43
44
|
export declare const useMMAuth: () => MMContextValue;
|
|
44
|
-
|
|
45
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Reactive credential for a purpose ('api' | 'graphql' | 'nats'). Re-renders
|
|
47
|
+
* the component when that credential changes (e.g. a token refresh or a host
|
|
48
|
+
* push). For imperative one-off reads, use `useMMAuth().getCredential`.
|
|
49
|
+
*/
|
|
50
|
+
export declare const useCredential: (purpose: CredentialPurpose) => string | null;
|
|
46
51
|
export declare const useMMAppContext: () => any;
|
|
47
52
|
export declare const useMMAppParams: () => any;
|
|
48
53
|
export declare const useMMAppCommands: () => any;
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAM3D,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpE,eAAO,MAAM,oBAAoB,GAC/B,iBAAiB,GAAG,EACpB,cAAc,GAAG,EACjB,eAAe,GAAG,GAAG,QAAM,EAC3B,aAAa,GAAG,GAAG,QAAM,UAqB1B,CAAC;AAEF,eAAO,MAAM,cAAc,GACzB,UAAU,GAAG,EACb,eAAe,SAAS,OAAO,EAAE,EACjC,SAAS,GAAG,kBAmBb,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAC3B,UAAU,GAAG,EACb,OAAO,MAAM,GAAG,IAAI,YAAO,EAC3B,eAAe,SAAS,OAAO,EAAE,SAiClC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,4CAA4C;IAC5C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;IACpB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,eAAO,MAAM,aAAa,GAAI,CAAC,GAAG,GAAG,EACnC,MAAM,MAAM,EACZ,UAAU,oBAAoB,GAAG,IAAI,EACrC,QAAQ,MAAM,GAAG,IAAI,KACpB,mBAAmB,CAAC,CAAC,CA+BvB,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,OAAO,GAAG,EAAE,OAAO,GAAG;;;;CA6CxD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,2BAA2B,GAAG;;;;CAoG/D,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,GAAG;;;;CAgC1C,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,eAAe,GAAG,YAuCzC,GAAG,sCAC6B,GAAG;;;;IA2C1C,CAAC;AAEF,eAAO,MAAM,SAAS,QAAO,cAI5B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,iBAAiB,KACzB,MAAM,GAAG,IAKX,CAAC;AAEF,eAAO,MAAM,eAAe,WAI3B,CAAC;AAEF,eAAO,MAAM,cAAc,WAI1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAI5B,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAQvC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,MAAM,GAAG,EACT,KAAK,GAAG,EACR,gBAAe,SAAS,OAAO,EAAO,SAQvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAWvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAUvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAUvC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAWvC,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,MAAM,GAAG,EACT,gBAAe,SAAS,OAAO,EAAO,SAUvC,CAAC;AAEF,eAAO,MAAM,uBAAuB,eAEnC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import PrivateLayout from './PrivateLayout';
|
|
|
2
2
|
import MMProvider from './MMProvider';
|
|
3
3
|
import { useEventStream } from './eventStream';
|
|
4
4
|
import Link from './Link';
|
|
5
|
-
import { useAsyncEffect, useAsyncInterval, useApiRequest, useProductionQuery, useDowntimeQuery, useMMAuth, useMMTemplates, useQuantityStream, useSearchParamsState, _useMMApolloLinkContext,
|
|
6
|
-
export { _useMMApolloLinkContext, useMMAuth,
|
|
5
|
+
import { useAsyncEffect, useAsyncInterval, useApiRequest, useProductionQuery, useDowntimeQuery, useMMAuth, useCredential, useMMTemplates, useQuantityStream, useSearchParamsState, _useMMApolloLinkContext, useMMAppParams, useMMAppCommands, useMMAppContext, useMMAppInfo, useMMAppSetting, useMMAppCustomInputOpen, useMMAppCustomInputSave, useMMAppCustomInputLabel, useMMAppSetClaims, useMMAppModalSave } from './hooks';
|
|
6
|
+
export { _useMMApolloLinkContext, useMMAuth, useCredential, useMMAppParams, useMMAppCommands, useMMAppContext, useMMAppInfo, useMMAppSetting, useMMAppCustomInputOpen, useMMAppCustomInputSave, useMMAppCustomInputLabel, useMMAppSetClaims, useMMAppModalSave, useMMTemplates, PrivateLayout, useAsyncEffect, useAsyncInterval, useApiRequest, useProductionQuery, useDowntimeQuery, useQuantityStream, useSearchParamsState, MMProvider, Link, useEventStream, };
|
|
7
7
|
export type { MMContextValue, MMAuthResult, MMUrls, MMRequest, MMRequestOptions, } from './MMContext';
|
|
8
8
|
export type { MMProviderProps, MMReleaseStage } from './MMProvider';
|
|
9
9
|
export type { UseApiRequestOptions, UseApiRequestResult } from './hooks';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EAEvB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,IAAI,EACJ,cAAc,GACf,CAAC;AAEF,YAAY,EACV,cAAc,EACd,YAAY,EACZ,MAAM,EACN,SAAS,EACT,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC"}
|