polkahub 0.2.1 → 0.2.2
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/PolkaHubModal.js +2 -1
- package/dist/PolkaHubModal.js.map +1 -1
- package/package.json +14 -14
package/dist/PolkaHubModal.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
2
|
import { usePlugin, ModalContext } from '@polkahub/context';
|
|
3
|
+
import { addrEq } from '@polkahub/plugin';
|
|
3
4
|
import { SelectedAccountButton, selectedAccountPluginId } from '@polkahub/select-account';
|
|
4
5
|
import { Dialog, DialogTrigger, DialogContent, DialogHeader, Button, DialogTitle, DialogBody } from '@polkahub/ui-components';
|
|
5
6
|
import { state, useStateObservable } from '@react-rxjs/core';
|
|
@@ -29,7 +30,7 @@ const PolkaHubModal = ({ children, buttonProps, className, title = "Connect" })
|
|
|
29
30
|
prev = acc;
|
|
30
31
|
return;
|
|
31
32
|
}
|
|
32
|
-
if (prev
|
|
33
|
+
if (addrEq(prev?.address, acc?.address)) return;
|
|
33
34
|
prev = acc;
|
|
34
35
|
if (acc) contextValue.closeModal();
|
|
35
36
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PolkaHubModal.js","sources":["../src/PolkaHubModal.tsx"],"sourcesContent":["import { ModalContext, usePlugin } from \"@polkahub/context\";\nimport { Account } from \"@polkahub/plugin\";\nimport {\n SelectedAccountButton,\n SelectedAccountPlugin,\n selectedAccountPluginId,\n} from \"@polkahub/select-account\";\nimport {\n Button,\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 { ChevronLeft } from \"lucide-react\";\nimport {\n ComponentProps,\n FC,\n PropsWithChildren,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\n// For lazy-loading optimizations\nexport const PolkaHubModalTrigger: FC = () => <SelectedAccountButton loading />;\n\nconst [openChange$, setOpen] = createSignal<boolean>();\nexport const openSelectAccount = () => setOpen(true);\nconst open$ = state(openChange$, false);\nconst close = () => setOpen(false);\n\nexport const PolkaHubModal: FC<\n PropsWithChildren<{\n className?: string;\n buttonProps?: ComponentProps<typeof SelectedAccountButton>;\n title?: string;\n }>\n> = ({ children, buttonProps, className, title = \"Connect\" }) => {\n const open = useStateObservable(open$);\n const selectedAccountPlugin = usePlugin<SelectedAccountPlugin>(\n selectedAccountPluginId\n );\n\n const { contentStack, contextValue } = usePolkaHubModalState(close);\n const activeContent = contentStack.length\n ? contentStack[contentStack.length - 1]\n : null;\n\n useEffect(() => {\n if (!selectedAccountPlugin) return;\n\n let first = true;\n let prev: Account | null = null;\n const sub = selectedAccountPlugin.selectedAccount$.subscribe((acc) => {\n if (first) {\n first = false;\n prev = acc;\n return;\n }\n if (prev
|
|
1
|
+
{"version":3,"file":"PolkaHubModal.js","sources":["../src/PolkaHubModal.tsx"],"sourcesContent":["import { ModalContext, usePlugin } from \"@polkahub/context\";\nimport { Account, addrEq } from \"@polkahub/plugin\";\nimport {\n SelectedAccountButton,\n SelectedAccountPlugin,\n selectedAccountPluginId,\n} from \"@polkahub/select-account\";\nimport {\n Button,\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 { ChevronLeft } from \"lucide-react\";\nimport {\n ComponentProps,\n FC,\n PropsWithChildren,\n ReactNode,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\n\n// For lazy-loading optimizations\nexport const PolkaHubModalTrigger: FC = () => <SelectedAccountButton loading />;\n\nconst [openChange$, setOpen] = createSignal<boolean>();\nexport const openSelectAccount = () => setOpen(true);\nconst open$ = state(openChange$, false);\nconst close = () => setOpen(false);\n\nexport const PolkaHubModal: FC<\n PropsWithChildren<{\n className?: string;\n buttonProps?: ComponentProps<typeof SelectedAccountButton>;\n title?: string;\n }>\n> = ({ children, buttonProps, className, title = \"Connect\" }) => {\n const open = useStateObservable(open$);\n const selectedAccountPlugin = usePlugin<SelectedAccountPlugin>(\n selectedAccountPluginId\n );\n\n const { contentStack, contextValue } = usePolkaHubModalState(close);\n const activeContent = contentStack.length\n ? contentStack[contentStack.length - 1]\n : null;\n\n useEffect(() => {\n if (!selectedAccountPlugin) return;\n\n let first = true;\n let prev: Account | null = null;\n const sub = selectedAccountPlugin.selectedAccount$.subscribe((acc) => {\n if (first) {\n first = false;\n prev = acc;\n return;\n }\n if (addrEq(prev?.address, acc?.address)) return;\n prev = acc;\n // Only close when setting an account, not when resetting it.\n if (acc) contextValue.closeModal();\n });\n\n return () => sub.unsubscribe();\n }, [selectedAccountPlugin, contextValue]);\n\n return (\n <Dialog\n open={open}\n onOpenChange={(open) =>\n open ? setOpen(true) : contextValue.closeModal()\n }\n >\n <DialogTrigger asChild>\n <SelectedAccountButton className={className} {...buttonProps} />\n </DialogTrigger>\n <DialogContent\n onInteractOutside={(evt) => {\n if (\n evt.target instanceof HTMLElement &&\n evt.target.tagName === \"WCM-MODAL\"\n )\n evt.preventDefault();\n }}\n >\n <DialogHeader className=\"flex-row items-center\">\n {contentStack.length ? (\n <Button\n className=\"has-[>svg]:px-1\"\n type=\"button\"\n variant=\"ghost\"\n onClick={() => contextValue.popContent()}\n >\n <ChevronLeft />\n </Button>\n ) : null}\n <DialogTitle>{activeContent?.title ?? title}</DialogTitle>\n </DialogHeader>\n <DialogBody>\n <ModalContext value={contextValue}>\n {activeContent ? (\n activeContent.element\n ) : (\n <div className=\"space-y-4\">{children}</div>\n )}\n </ModalContext>\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n};\n\nexport const usePolkaHubModalState = (onClose?: () => void) => {\n const [contentStack, setContentStack] = useState<\n { title?: string; element: ReactNode }[]\n >([]);\n\n const contextValue = useMemo(() => {\n const ctx: ModalContext = {\n replaceContent: (element: { title?: string; element: ReactNode }) =>\n element == null\n ? ctx.popContent()\n : setContentStack((stack) => {\n const newStack = [...stack];\n const i = Math.max(newStack.length - 1, 0);\n newStack[i] = element;\n return newStack;\n }),\n pushContent: (element: { title?: string; element: ReactNode }) =>\n setContentStack((stack) =>\n element == null ? stack : [...stack, element]\n ),\n popContent: () =>\n setContentStack((stack) => {\n const newStack = [...stack];\n newStack.pop();\n return newStack;\n }),\n closeModal: () => {\n // Remove stack after small duration, otherwise the content might flash as the dialog is transitioning away\n setTimeout(() => setContentStack([]), 250);\n onClose?.();\n },\n };\n return ctx;\n }, [onClose]);\n return { contentStack, contextValue, setContentStack };\n};\n"],"names":["open"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "polkahub",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"type": "module",
|
|
@@ -26,19 +26,19 @@
|
|
|
26
26
|
"@react-rxjs/core": "^0.10.8",
|
|
27
27
|
"@react-rxjs/utils": "^0.9.7",
|
|
28
28
|
"lucide-react": "^0.552.0",
|
|
29
|
-
"@polkahub/
|
|
30
|
-
"@polkahub/ledger": "0.2.
|
|
31
|
-
"@polkahub/
|
|
32
|
-
"@polkahub/
|
|
33
|
-
"@polkahub/plugin": "0.2.
|
|
34
|
-
"@polkahub/
|
|
35
|
-
"@polkahub/proxy": "0.2.
|
|
36
|
-
"@polkahub/read-only": "0.2.
|
|
37
|
-
"@polkahub/
|
|
38
|
-
"@polkahub/
|
|
39
|
-
"@polkahub/
|
|
40
|
-
"@polkahub/
|
|
41
|
-
"@polkahub/wallet-connect": "0.2.
|
|
29
|
+
"@polkahub/mimir": "0.2.2",
|
|
30
|
+
"@polkahub/ledger": "0.2.2",
|
|
31
|
+
"@polkahub/multisig": "0.2.2",
|
|
32
|
+
"@polkahub/context": "0.2.2",
|
|
33
|
+
"@polkahub/plugin": "0.2.2",
|
|
34
|
+
"@polkahub/pjs-wallet": "0.2.2",
|
|
35
|
+
"@polkahub/proxy": "0.2.2",
|
|
36
|
+
"@polkahub/read-only": "0.2.2",
|
|
37
|
+
"@polkahub/state": "0.2.2",
|
|
38
|
+
"@polkahub/select-account": "0.2.2",
|
|
39
|
+
"@polkahub/vault": "0.2.2",
|
|
40
|
+
"@polkahub/ui-components": "0.2.2",
|
|
41
|
+
"@polkahub/wallet-connect": "0.2.2"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
44
|
"@types/react": "^19.2.2",
|