polkahub 0.3.0 → 0.4.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/index.js CHANGED
@@ -8,8 +8,8 @@ export * from '@polkahub/proxy';
8
8
  export * from '@polkahub/read-only';
9
9
  export { SelectAccount, SelectAccountField, createSelectedAccountPlugin, selectedAccountPluginId, useSelectedAccount } from '@polkahub/select-account';
10
10
  export * from '@polkahub/state';
11
- export * from '@polkahub/vault';
11
+ export { ManageVault, VaultTxModal, createPolkadotVaultProvider, polkadotVaultProviderId } from '@polkahub/vault';
12
12
  export * from '@polkahub/wallet-connect';
13
- export { PolkaHubModal, PolkaHubModalTrigger, openSelectAccount, usePolkaHubModalState } from './PolkaHubModal.js';
14
13
  export { AddressInput } from './AddressInput.js';
14
+ export { PolkaHubModal, PolkaHubModalTrigger, openSelectAccount, usePolkaHubModalState } from './PolkaHubModal.js';
15
15
  //# sourceMappingURL=index.js.map
@@ -11,11 +11,19 @@ export * from '@polkahub/read-only';
11
11
  import { SelectedAccountButton } from '@polkahub/select-account';
12
12
  export { SelectAccount, SelectAccountField, SelectedAccountPlugin, createSelectedAccountPlugin, selectedAccountPluginId, useSelectedAccount } from '@polkahub/select-account';
13
13
  export * from '@polkahub/state';
14
- export * from '@polkahub/vault';
14
+ export { ManageVault, PolkadotVaultAccount, PolkadotVaultProvider, VaultAccountInfo, VaultTxModal, createPolkadotVaultProvider, polkadotVaultProviderId } from '@polkahub/vault';
15
15
  export * from '@polkahub/wallet-connect';
16
16
  import * as react from 'react';
17
17
  import { FC, PropsWithChildren, ComponentProps, ReactNode } from 'react';
18
18
 
19
+ declare const AddressInput: FC<{
20
+ value?: AccountAddress | null;
21
+ onChange?: (value: AccountAddress | null) => void;
22
+ disableClear?: boolean;
23
+ className?: string;
24
+ triggerClassName?: string;
25
+ }>;
26
+
19
27
  declare const PolkaHubModalTrigger: FC;
20
28
  declare const openSelectAccount: () => void;
21
29
  declare const PolkaHubModal: FC<PropsWithChildren<{
@@ -35,12 +43,4 @@ declare const usePolkaHubModalState: (onClose?: () => void) => {
35
43
  }[]>>;
36
44
  };
37
45
 
38
- declare const AddressInput: FC<{
39
- value?: AccountAddress | null;
40
- onChange?: (value: AccountAddress | null) => void;
41
- disableClear?: boolean;
42
- className?: string;
43
- triggerClassName?: string;
44
- }>;
45
-
46
46
  export { AddressInput, PolkaHubModal, PolkaHubModalTrigger, openSelectAccount, usePolkaHubModalState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "polkahub",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -25,27 +25,27 @@
25
25
  "dependencies": {
26
26
  "@react-rxjs/core": "^0.10.8",
27
27
  "@react-rxjs/utils": "^0.9.7",
28
- "lucide-react": "^0.552.0",
29
- "@polkahub/context": "0.3.0",
30
- "@polkahub/pjs-wallet": "0.3.0",
31
- "@polkahub/read-only": "0.3.0",
32
- "@polkahub/ledger": "0.3.0",
33
- "@polkahub/proxy": "0.3.0",
34
- "@polkahub/vault": "0.3.0",
35
- "@polkahub/mimir": "0.3.0",
36
- "@polkahub/multisig": "0.3.0",
37
- "@polkahub/select-account": "0.3.0",
38
- "@polkahub/ui-components": "0.3.0",
39
- "@polkahub/wallet-connect": "0.3.0",
40
- "@polkahub/plugin": "0.3.0",
41
- "@polkahub/state": "0.3.0"
28
+ "lucide-react": "^0.554.0",
29
+ "@polkahub/ledger": "0.3.2",
30
+ "@polkahub/mimir": "0.3.2",
31
+ "@polkahub/pjs-wallet": "0.3.2",
32
+ "@polkahub/plugin": "0.3.2",
33
+ "@polkahub/context": "0.3.2",
34
+ "@polkahub/multisig": "0.3.2",
35
+ "@polkahub/proxy": "0.3.2",
36
+ "@polkahub/read-only": "0.3.2",
37
+ "@polkahub/select-account": "0.3.2",
38
+ "@polkahub/state": "0.3.2",
39
+ "@polkahub/ui-components": "0.3.2",
40
+ "@polkahub/vault": "0.4.0",
41
+ "@polkahub/wallet-connect": "0.3.2"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@types/react": "^19.2.2",
45
45
  "react": "^19.2.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@types/react": "^19.2.2",
48
+ "@types/react": "^19.2.6",
49
49
  "react": "^19.2.0"
50
50
  },
51
51
  "scripts": {
@@ -1,41 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { useAvailableAccounts, AddressIdentity } from '@polkahub/context';
3
- import { AccountInput as AccountInput$1 } from '@polkahub/ui-components';
4
- import { useMemo } from 'react';
5
-
6
- const AccountInput = ({ className, value, onChange }) => {
7
- const availableAccounts = useAvailableAccounts();
8
- const hints = useMemo(() => {
9
- const addressToAccounts = {};
10
- Object.values(availableAccounts).flat().forEach((acc) => {
11
- var _a;
12
- addressToAccounts[_a = acc.address] ?? (addressToAccounts[_a] = []);
13
- addressToAccounts[acc.address].push(acc);
14
- });
15
- return Object.values(addressToAccounts).map(
16
- (group) => group.reduce(
17
- (acc, v) => (v.name?.length ?? 0) > (acc.name?.length ?? 0) ? v : acc
18
- )
19
- );
20
- }, [availableAccounts]);
21
- return /* @__PURE__ */ jsx(
22
- AccountInput$1,
23
- {
24
- value,
25
- onChange,
26
- className,
27
- hinted: Object.values(hints).flat(),
28
- renderAddress: (account) => typeof account === "string" ? /* @__PURE__ */ jsx(AddressIdentity, { addr: account, copyable: false }) : /* @__PURE__ */ jsx(
29
- AddressIdentity,
30
- {
31
- addr: account.address,
32
- name: account?.name,
33
- copyable: false
34
- }
35
- )
36
- }
37
- );
38
- };
39
-
40
- export { AccountInput };
41
- //# sourceMappingURL=AccountInput.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AccountInput.js","sources":["../src/AccountInput.tsx"],"sourcesContent":["import { AddressIdentity, useAvailableAccounts } from \"@polkahub/context\";\nimport { Account } from \"@polkahub/plugin\";\nimport { AccountInput as AccountInputComponent } from \"@polkahub/ui-components\";\nimport { FC, useMemo } from \"react\";\n\nexport const AccountInput: FC<{\n value: string | null;\n onChange: (value: string | null) => void;\n className?: string;\n}> = ({ className, value, onChange }) => {\n const availableAccounts = useAvailableAccounts();\n\n const hints = useMemo(() => {\n const addressToAccounts: Record<string, Account[]> = {};\n Object.values(availableAccounts)\n .flat()\n .forEach((acc) => {\n addressToAccounts[acc.address] ??= [];\n addressToAccounts[acc.address].push(acc);\n });\n\n return Object.values(addressToAccounts).map((group) =>\n group.reduce((acc, v) =>\n (v.name?.length ?? 0) > (acc.name?.length ?? 0) ? v : acc\n )\n );\n }, [availableAccounts]);\n\n return (\n <AccountInputComponent\n value={value}\n onChange={onChange}\n className={className}\n hinted={Object.values(hints).flat()}\n renderAddress={(account: Account | string) =>\n typeof account === \"string\" ? (\n <AddressIdentity addr={account} copyable={false} />\n ) : (\n <AddressIdentity\n addr={account.address}\n name={account?.name}\n copyable={false}\n />\n )\n }\n />\n );\n};\n"],"names":["AccountInputComponent"],"mappings":";;;;;AAKO,MAAM,eAIR,CAAC,EAAE,SAAA,EAAW,KAAA,EAAO,UAAS,KAAM;AACvC,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAE/C,EAAA,MAAM,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAA,MAAM,oBAA+C,EAAC;AACtD,IAAA,MAAA,CAAO,OAAO,iBAAiB,CAAA,CAC5B,MAAK,CACL,OAAA,CAAQ,CAAC,GAAA,KAAQ;AAhBxB,MAAA,IAAA,EAAA;AAiBQ,MAAA,iBAAA,CAAA,EAAA,GAAkB,GAAA,CAAI,OAAA,CAAA,KAAtB,iBAAA,CAAA,EAAA,CAAA,GAAmC,EAAC,CAAA;AACpC,MAAA,iBAAA,CAAkB,GAAA,CAAI,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AAAA,IACzC,CAAC,CAAA;AAEH,IAAA,OAAO,MAAA,CAAO,MAAA,CAAO,iBAAiB,CAAA,CAAE,GAAA;AAAA,MAAI,CAAC,UAC3C,KAAA,CAAM,MAAA;AAAA,QAAO,CAAC,GAAA,EAAK,CAAA,KAAA,CAChB,CAAA,CAAE,IAAA,EAAM,MAAA,IAAU,CAAA,KAAM,GAAA,CAAI,IAAA,EAAM,MAAA,IAAU,CAAA,CAAA,GAAK,CAAA,GAAI;AAAA;AACxD,KACF;AAAA,EACF,CAAA,EAAG,CAAC,iBAAiB,CAAC,CAAA;AAEtB,EAAA,uBACE,GAAA;AAAA,IAACA,cAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,MAAA,EAAQ,MAAA,CAAO,MAAA,CAAO,KAAK,EAAE,IAAA,EAAK;AAAA,MAClC,aAAA,EAAe,CAAC,OAAA,KACd,OAAO,OAAA,KAAY,QAAA,mBACjB,GAAA,CAAC,eAAA,EAAA,EAAgB,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU,KAAA,EAAO,CAAA,mBAEjD,GAAA;AAAA,QAAC,eAAA;AAAA,QAAA;AAAA,UACC,MAAM,OAAA,CAAQ,OAAA;AAAA,UACd,MAAM,OAAA,EAAS,IAAA;AAAA,UACf,QAAA,EAAU;AAAA;AAAA;AACZ;AAAA,GAGN;AAEJ;;;;"}
@@ -1,42 +0,0 @@
1
- import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { ModalContext } from '@polkahub/context';
3
- import { SelectedAccountButton } from '@polkahub/select-account';
4
- import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogBody } from '@polkahub/ui-components';
5
- import { state, useStateObservable } from '@react-rxjs/core';
6
- import { createSignal } from '@react-rxjs/utils';
7
- import { useState, useMemo } from 'react';
8
-
9
- const SelectAccountModalTrigger = () => /* @__PURE__ */ jsx(SelectedAccountButton, { loading: true });
10
- const [openChange$, setOpen] = createSignal();
11
- const openSelectAccount = () => setOpen(true);
12
- const open$ = state(openChange$, false);
13
- const SelectAccountModal = ({ children }) => {
14
- const open = useStateObservable(open$);
15
- const [content, setContent] = useState(null);
16
- const contextValue = useMemo(
17
- () => ({ setContent, closeModal: () => setOpen(false) }),
18
- []
19
- );
20
- return /* @__PURE__ */ jsxs(
21
- Dialog,
22
- {
23
- open,
24
- onOpenChange: (open2) => {
25
- if (!open2) {
26
- setTimeout(() => setContent(null), 500);
27
- }
28
- setOpen(open2);
29
- },
30
- children: [
31
- /* @__PURE__ */ jsx(DialogTrigger, { asChild: true, children: /* @__PURE__ */ jsx(SelectedAccountButton, {}) }),
32
- /* @__PURE__ */ jsxs(DialogContent, { children: [
33
- /* @__PURE__ */ jsx(DialogHeader, { children: /* @__PURE__ */ jsx(DialogTitle, { children: "Connect" }) }),
34
- /* @__PURE__ */ jsx(DialogBody, { children: /* @__PURE__ */ jsx(ModalContext, { value: contextValue, children: content ?? /* @__PURE__ */ jsx("div", { className: "space-y-4", children }) }) })
35
- ] })
36
- ]
37
- }
38
- );
39
- };
40
-
41
- export { SelectAccountModal, SelectAccountModalTrigger, openSelectAccount };
42
- //# sourceMappingURL=SelectAccountModal.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SelectAccountModal.js","sources":["../src/SelectAccountModal.tsx"],"sourcesContent":["import { ModalContext } from \"@polkahub/context\";\nimport { SelectedAccountButton } from \"@polkahub/select-account\";\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogTrigger,\n} from \"@polkahub/ui-components\";\nimport { state, useStateObservable } from \"@react-rxjs/core\";\nimport { createSignal } from \"@react-rxjs/utils\";\nimport { FC, PropsWithChildren, ReactNode, useMemo, useState } from \"react\";\n\n// For lazy-loading optimizations\nexport const SelectAccountModalTrigger: FC = () => (\n <SelectedAccountButton loading />\n);\n\nconst [openChange$, setOpen] = createSignal<boolean>();\nexport const openSelectAccount = () => setOpen(true);\nconst open$ = state(openChange$, false);\n\nexport const SelectAccountModal: FC<PropsWithChildren> = ({ children }) => {\n const open = useStateObservable(open$);\n\n const [content, setContent] = useState<ReactNode | null>(null);\n\n const contextValue = useMemo(\n () => ({ setContent, closeModal: () => setOpen(false) }),\n []\n );\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) => {\n if (!open) {\n setTimeout(() => setContent(null), 500);\n }\n setOpen(open);\n }}\n >\n <DialogTrigger asChild>\n <SelectedAccountButton />\n </DialogTrigger>\n <DialogContent>\n <DialogHeader>\n <DialogTitle>Connect</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <ModalContext value={contextValue}>\n {content ?? <div className=\"space-y-4\">{children}</div>}\n </ModalContext>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n"],"names":["open"],"mappings":";;;;;;;;AAeO,MAAM,yBAAA,GAAgC,sBAC3C,GAAA,CAAC,qBAAA,EAAA,EAAsB,SAAO,IAAA,EAAC;AAGjC,MAAM,CAAC,WAAA,EAAa,OAAO,CAAA,GAAI,YAAA,EAAsB;AAC9C,MAAM,iBAAA,GAAoB,MAAM,OAAA,CAAQ,IAAI;AACnD,MAAM,KAAA,GAAQ,KAAA,CAAM,WAAA,EAAa,KAAK,CAAA;AAE/B,MAAM,kBAAA,GAA4C,CAAC,EAAE,QAAA,EAAS,KAAM;AACzE,EAAA,MAAM,IAAA,GAAO,mBAAmB,KAAK,CAAA;AAErC,EAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAI,SAA2B,IAAI,CAAA;AAE7D,EAAA,MAAM,YAAA,GAAe,OAAA;AAAA,IACnB,OAAO,EAAE,UAAA,EAAY,YAAY,MAAM,OAAA,CAAQ,KAAK,CAAA,EAAE,CAAA;AAAA,IACtD;AAAC,GACH;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,YAAA,EAAc,CAACA,KAAAA,KAAS;AACtB,QAAA,IAAI,CAACA,KAAAA,EAAM;AACT,UAAA,UAAA,CAAW,MAAM,UAAA,CAAW,IAAI,CAAA,EAAG,GAAG,CAAA;AAAA,QACxC;AACA,QAAA,OAAA,CAAQA,KAAI,CAAA;AAAA,MACd,CAAA;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,OAAA,EAAO,IAAA,EACpB,QAAA,kBAAA,GAAA,CAAC,yBAAsB,CAAA,EACzB,CAAA;AAAA,6BACC,aAAA,EAAA,EACC,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,YAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAA,SAAA,EAAO,CAAA,EACtB,CAAA;AAAA,0BACA,GAAA,CAAC,UAAA,EAAA,EACC,QAAA,kBAAA,GAAA,CAAC,YAAA,EAAA,EAAa,KAAA,EAAO,YAAA,EAClB,QAAA,EAAA,OAAA,oBAAW,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,WAAA,EAAa,QAAA,EAAS,GACnD,CAAA,EACF;AAAA,SAAA,EACF;AAAA;AAAA;AAAA,GACF;AAEJ;;;;"}
package/dist/ui/Dialog.js DELETED
@@ -1,27 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import '@radix-ui/react-dialog';
3
- import 'lucide-react';
4
- import { cn } from '@polkahub/ui-components';
5
-
6
- function DialogHeader({ className, ...props }) {
7
- return /* @__PURE__ */ jsx(
8
- "div",
9
- {
10
- "data-slot": "dialog-header",
11
- className: cn(
12
- "flex flex-col gap-2 text-center sm:text-left p-6 pb-2",
13
- className
14
- ),
15
- ...props
16
- }
17
- );
18
- }
19
- function DialogBody({
20
- children,
21
- id
22
- }) {
23
- return /* @__PURE__ */ jsx("div", { className: "overflow-auto px-6 py-2 last:pb-6", id, children });
24
- }
25
-
26
- export { DialogBody, DialogHeader };
27
- //# sourceMappingURL=Dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../src/ui/Dialog.tsx"],"sourcesContent":["import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\nimport { cn } from \"@polkahub/ui-components\";\n\nfunction Dialog({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 flex flex-col w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] rounded-lg border shadow-lg duration-200 sm:max-w-xl md:max-w-2xl max-h-[80vh] overflow-hidden\",\n className\n )}\n {...props}\n >\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n {children}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\n \"flex flex-col gap-2 text-center sm:text-left p-6 pb-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end p-6 pt-2\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogBody({\n children,\n id,\n}: React.PropsWithChildren<{ id?: string }>) {\n return (\n <div className=\"overflow-auto px-6 py-2 last:pb-6\" id={id}>\n {children}\n </div>\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n DialogBody,\n};\n"],"names":[],"mappings":";;;;;AA+EA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAW,GAAG,OAAM,EAAgC;AAC1E,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,eAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,uDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAyCA,SAAS,UAAA,CAAW;AAAA,EAClB,QAAA;AAAA,EACA;AACF,CAAA,EAA6C;AAC3C,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,mCAAA,EAAoC,IAChD,QAAA,EACH,CAAA;AAEJ;;;;"}