@dappworks/kit 0.5.35 → 0.5.37

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 (73) hide show
  1. package/dist/aiem.d.mts +2 -2
  2. package/dist/aiem.mjs +5 -5
  3. package/dist/{chunk-2N4HH4ZF.mjs → chunk-2BZKMJZX.mjs} +1 -1
  4. package/dist/chunk-2BZKMJZX.mjs.map +1 -0
  5. package/dist/{chunk-K7LFG5BA.mjs → chunk-2PD23V7H.mjs} +1 -1
  6. package/dist/{chunk-K7LFG5BA.mjs.map → chunk-2PD23V7H.mjs.map} +1 -1
  7. package/dist/{chunk-PHQTFYZL.mjs → chunk-5BTB7HRK.mjs} +2 -2
  8. package/dist/chunk-5BTB7HRK.mjs.map +1 -0
  9. package/dist/chunk-6F7H4PAA.mjs +35 -0
  10. package/dist/{chunk-SL5OV6OR.mjs → chunk-72E76L6J.mjs} +3 -3
  11. package/dist/chunk-72E76L6J.mjs.map +1 -0
  12. package/dist/{chunk-IMOLRP7I.mjs → chunk-7EL2RQI7.mjs} +1 -1
  13. package/dist/chunk-7EL2RQI7.mjs.map +1 -0
  14. package/dist/chunk-7LPSHBBI.mjs +1284 -0
  15. package/dist/chunk-7LPSHBBI.mjs.map +1 -0
  16. package/dist/{chunk-R4N52NI2.mjs → chunk-7WJMHFRA.mjs} +2 -2
  17. package/dist/chunk-7WJMHFRA.mjs.map +1 -0
  18. package/dist/{chunk-VNT5YQS6.mjs → chunk-AVG4JG4V.mjs} +6 -6
  19. package/dist/chunk-AVG4JG4V.mjs.map +1 -0
  20. package/dist/{chunk-IDKGZ5T4.mjs → chunk-KIS52LFU.mjs} +1 -1
  21. package/dist/chunk-KIS52LFU.mjs.map +1 -0
  22. package/dist/{chunk-OBMZXW6O.mjs → chunk-NKGQRF5D.mjs} +4 -4
  23. package/dist/chunk-NKGQRF5D.mjs.map +1 -0
  24. package/dist/{chunk-GKAU4P5I.mjs → chunk-R66SHRQE.mjs} +2 -2
  25. package/dist/chunk-R66SHRQE.mjs.map +1 -0
  26. package/dist/{chunk-MPOMTIDB.mjs → chunk-SPFKGNUY.mjs} +373 -396
  27. package/dist/chunk-SPFKGNUY.mjs.map +1 -0
  28. package/dist/{chunk-PGS2TG3C.mjs → chunk-WMV5O3PI.mjs} +5 -5
  29. package/dist/chunk-WMV5O3PI.mjs.map +1 -0
  30. package/dist/{chunk-ONVPCAMQ.mjs → chunk-Z3LJE5QF.mjs} +1 -1
  31. package/dist/chunk-Z3LJE5QF.mjs.map +1 -0
  32. package/dist/dev.mjs +4 -4
  33. package/dist/dev.mjs.map +1 -1
  34. package/dist/experimental.mjs +5 -5
  35. package/dist/experimental.mjs.map +1 -1
  36. package/dist/form.d.mts +11 -11
  37. package/dist/form.mjs +6 -6
  38. package/dist/form.mjs.map +1 -1
  39. package/dist/index.mjs +12 -12
  40. package/dist/inspector.mjs +1 -1
  41. package/dist/inspector.mjs.map +1 -1
  42. package/dist/jsoncomponent.mjs +1 -1
  43. package/dist/jsoncomponent.mjs.map +1 -1
  44. package/dist/jsontable.mjs +6 -6
  45. package/dist/metrics.mjs +6 -6
  46. package/dist/metrics.mjs.map +1 -1
  47. package/dist/plugins.d.mts +5 -5
  48. package/dist/plugins.mjs +9 -9
  49. package/dist/plugins.mjs.map +1 -1
  50. package/dist/ui.mjs +3 -3
  51. package/dist/ui.mjs.map +1 -1
  52. package/dist/utils.d.mts +19 -100
  53. package/dist/utils.mjs +4 -4
  54. package/dist/wallet.d.mts +1 -1
  55. package/dist/wallet.mjs +13 -13
  56. package/dist/wallet.mjs.map +1 -1
  57. package/package.json +3 -2
  58. package/dist/chunk-2N4HH4ZF.mjs.map +0 -1
  59. package/dist/chunk-GKAU4P5I.mjs.map +0 -1
  60. package/dist/chunk-IDKGZ5T4.mjs.map +0 -1
  61. package/dist/chunk-IMOLRP7I.mjs.map +0 -1
  62. package/dist/chunk-MPOMTIDB.mjs.map +0 -1
  63. package/dist/chunk-OBMZXW6O.mjs.map +0 -1
  64. package/dist/chunk-ONVPCAMQ.mjs.map +0 -1
  65. package/dist/chunk-PGS2TG3C.mjs.map +0 -1
  66. package/dist/chunk-PHQTFYZL.mjs.map +0 -1
  67. package/dist/chunk-R4N52NI2.mjs.map +0 -1
  68. package/dist/chunk-RU6ZML4R.mjs +0 -23694
  69. package/dist/chunk-RU6ZML4R.mjs.map +0 -1
  70. package/dist/chunk-SL5OV6OR.mjs.map +0 -1
  71. package/dist/chunk-VNT5YQS6.mjs.map +0 -1
  72. package/dist/chunk-YITAUACR.mjs +0 -69
  73. /package/dist/{chunk-YITAUACR.mjs.map → chunk-6F7H4PAA.mjs.map} +0 -0
package/dist/dev.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../components/ui/sheet.tsx","../module/Devtool/devtool.tsx","../components/JSONEditor/index.tsx"],"names":["React","initialJson","diff","result"],"mappings":"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","sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Sheet = SheetPrimitive.Root;\n\nconst SheetTrigger = SheetPrimitive.Trigger;\n\n// @ts-ignore\nconst SheetPortal = ({ className, ...props }: SheetPrimitive.DialogPortalProps) => <SheetPrimitive.Portal className={cn(className)} {...props} />;\nSheetPortal.displayName = SheetPrimitive.Portal.displayName;\n\nconst SheetOverlay = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Overlay>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay className={cn(\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className)} {...props} ref={ref} />\n));\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\n\nconst sheetVariants = cva(\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\", {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom: \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right: \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n});\n\nconst SheetClose = ({ className, ...props }: SheetPrimitive.DialogCloseProps) => (\n <SheetPrimitive.Close className={cn(\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\", className)} {...props}>\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n);\nSheetClose.displayName = \"Close\";\n\ninterface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> { }\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps & { showOverlay?: boolean; open?: boolean }>(({ side = \"right\", className, children, showOverlay = false, open, ...props }, ref) => {\n return (\n <SheetPortal>\n {showOverlay && <SheetOverlay />}\n <div ref={ref} data-state={open ? \"open\" : \"closed\"} className={cn(sheetVariants({ side }), className)} {...props}>\n {children}\n </div>\n </SheetPortal>\n );\n});\nSheetContent.displayName = SheetPrimitive.Content.displayName;\n\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />;\nSheetHeader.displayName = \"SheetHeader\";\n\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />;\nSheetFooter.displayName = \"SheetFooter\";\n\nconst SheetTitle = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Title>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>>(({ className, ...props }, ref) => <SheetPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold text-foreground\", className)} {...props} />);\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\n\nconst SheetDescription = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Description>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\n));\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\n\nexport { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, SheetClose };\n","import { Sheet, SheetClose, SheetContent } from \"../../components/ui/sheet\";\nimport { Tabs, Tab } from \"@nextui-org/react\";\nimport { cn } from \"../../lib/utils\";\nimport { RootStore } from \"../../store/root\";\nimport { PromiseState } from \"../../store/standard/PromiseState\";\nimport { Store } from \"../../store/standard/base\";\nimport { Wrench } from \"lucide-react\";\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\nimport { toJS } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\nimport EventEmitter from \"events\";\nimport { useMemo } from \"react\";\nimport React from \"react\";\nimport { JSONEditor } from \"../../components/JSONEditor\"\n\nfunction filterState(obj) {\n if (obj.toJSON) {\n return obj.toJSON()\n }\n\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(filterState);\n }\n\n const filteredObj = {};\n\n for (const [key, value] of Object.entries(obj)) {\n try {\n if (\n ![\"sid\", \"disabled\", \"autoObservable\", \"promiseState\", \"autoAsyncable\", \"stype\"].includes(key) &&\n // !(value instanceof PromiseState) &&\n !(value instanceof EventEmitter) &&\n !value?.hasOwnProperty(\"$$typeof\")\n ) {\n filteredObj[key] = filterState(value);\n }\n } catch (error) {\n console.error(error);\n return obj;\n }\n }\n\n return filteredObj;\n}\n\nexport class DevTool implements Store {\n sid = \"DevTool\";\n stype = \"Plugin\"\n provider = ({ rootStore }: { rootStore: RootStore }) => <DevToolProvider rootStore={rootStore} />;\n disabled?: boolean = false;\n autoObservable?: boolean = true;\n isOpen = false;\n\n panels: Store[\"pannel\"][] = [\n {\n title: \"Store\",\n render: observer(({ rootStore }: { rootStore: RootStore }) => {\n const state = useLocalObservable<{\n curStore: Store;\n curPromiseStateList: { name: string; promiseState: PromiseState<any, any> }[];\n }>(() => ({\n //@ts-ignore\n curStore: null,\n curPromiseStateList: [],\n }));\n const initialJson = useMemo(() => {\n //@ts-ignore\n if (state.curStore?.toJSON) return JSON.stringify(state.curStore?.toJSON(), null, 2);\n const filteredData = filterState(state.curStore || {});\n return JSON.stringify(toJS(filteredData), null, 2);\n }, [state.curStore]);\n return (\n <div className=\"flex flex-col md:flex-row text-sm\">\n <div>\n <Tabs\n size=\"sm\"\n radius=\"none\"\n variant=\"underlined\"\n items={[{ title: \"Store\", value: \"Store\" }, { title: \"Plugin\", value: \"Plugin\" }]}\n >\n {(item) => {\n const stores = Object.values(rootStore.instance).filter(i => i.stype == item.value && i.sid).sort((a, b) => a.sid.length - b.sid.length);\n return (\n <Tab key={item.title} title={item.title} >\n <div>\n <div className=\"w-full md:w-[300px] space-y-1 pr-2 overflow-auto\">\n {stores.map((store) => {\n return (\n <div\n key={store?.sid}\n className={cn(\"px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer\", { \"bg-green-600 text-white\": state.curStore?.sid === store.sid })}\n onClick={() => {\n state.curStore = store;\n }}\n >\n {store.sid}\n </div>\n );\n })}\n </div>\n </div>\n </Tab>\n )\n }}\n </Tabs>\n </div>\n\n <div className=\"mt-4 w-full overflow-auto md:mt-0\">\n <JSONEditor\n className={\"h-full\"}\n height={450}\n initialJson={initialJson}\n onChange={(data) => {\n console.log(\"onChange\", data);\n helper.deepMerge(state.curStore, data);\n }}\n />\n {/* <PromiseStateDebug promiseStateList={state.curPromiseStateList} /> */}\n </div>\n </div>\n );\n }),\n },\n ];\n\n onNewStore({ rootStore }: { rootStore: RootStore }) {\n Object.values(rootStore.instance).forEach((store) => {\n if (store.devtools?.started) return;\n if (store.devtools?.panels) {\n store.devtools.started = true;\n this.panels = [...this.panels, ...store.devtools?.panels];\n }\n });\n }\n\n constructor(args: Partial<DevTool> = {}) {\n Object.assign(this, args);\n }\n}\n\n// const PromiseStateDebug = ({ promiseStateList }: { promiseStateList: { name: string; promiseState: PromiseState<any, any> }[] }) => {\n// if (promiseStateList.length === 0) return null;\n// return (\n// <>\n// <div className=\"mt-6 mb-2 pt-2 border-t-[1px] font-bold dark:border-gray-600\">Debug PromiseState</div>\n// <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n// {promiseStateList.map((item, index) => {\n// const formData = item.promiseState.debug.input;\n// return (\n// <Card className=\"p-2 dark:border-gray-800\" key={index}>\n// <div className=\"font-bold text-xs\">{item.name}</div>\n// <JSONSchemaForm\n// formState={getFormState({\n// data: formData,\n// onSubmit: (data) => {\n// item.promiseState.call(data);\n// },\n// })}\n// />\n// </Card>\n// );\n// })}\n// </div>\n// </>\n// );\n// };\n\nexport const DevToolProvider = observer(({ rootStore }: { rootStore: RootStore }) => {\n const devTool = rootStore.get(DevTool);\n const minSheetHeight = 500;\n const store = useLocalObservable(() => ({\n sheetHeight: minSheetHeight,\n }));\n return (\n <>\n <div className=\"fixed right-4 bottom-4 z-10\">\n <div\n className=\"p-1 rounded-sm bg-gray-300 hover:bg-gray-400 dark:bg-gray-600 dark:hover:bg-gray-500 cursor-pointer\"\n onClick={() => {\n devTool.isOpen = true;\n }}\n >\n <Wrench size={20} />\n </div>\n </div>\n <Sheet open={devTool.isOpen}>\n <SheetContent\n open={devTool.isOpen}\n side=\"bottom\"\n className=\"p-0 outline-none bg-card dark:border-none\"\n style={{\n height: store.sheetHeight,\n }}\n >\n <div className=\"absolute top-0 left-0 h-[32px] w-full bg-gray-100 dark:bg-gray-800\"></div>\n <SheetClose\n className=\"top-2 right-2\"\n onClick={() => {\n devTool.isOpen = false;\n }}\n />\n <div\n className=\"absolute top-[-8px] left-0 w-full h-[10px] cursor-row-resize\"\n onMouseDown={(e) => {\n const startH = store.sheetHeight;\n const startPageY = e.pageY;\n const onMouseMove = (mouseMoveEvent: MouseEvent) => {\n const diff = startPageY - mouseMoveEvent.pageY;\n const h = startH + diff;\n if (h > minSheetHeight && h < window.innerHeight) {\n store.sheetHeight = h;\n }\n };\n const onMouseUp = () => {\n document.body.removeEventListener(\"mousemove\", onMouseMove);\n };\n document.body.addEventListener(\"mousemove\", onMouseMove);\n document.body.addEventListener(\"mouseup\", onMouseUp, { once: true });\n }}\n />\n <Tabs\n className='w-full'\n size=\"sm\"\n radius=\"none\"\n items={devTool.panels}\n >\n {(panel) => {\n const Component = panel.render || (() => null);\n return (\n <Tab key={panel.title} title={panel.title}>\n <div className=\"p-0\" style={{ height: `calc(${store.sheetHeight}px - 50px)` }}>\n <Component rootStore={rootStore} />\n </div>\n </Tab>\n )\n }}\n </Tabs>\n </SheetContent>\n </Sheet>\n </>\n );\n});\n","\"use client\";\n\nimport React, { useRef } from \"react\";\nimport MonacoEditor from \"@monaco-editor/react\";\nimport { _ } from \"../../lib/lodash\";\nimport * as jsonpatch from \"fast-json-patch\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from '@nextui-org/react';\n\nexport const JSONEditor = ({ className, height = \"100%\", initialJson, onChange, onSubmit }: { className?: string; height?: string | number; initialJson: string; onChange?: (value: Record<string, any>) => void; onSubmit?: (value: Record<string, any>) => void }) => {\n const valueRef = useRef<string>(initialJson);\n const changeValueRef = useRef(\n _.debounce((initialJson: string, currentJson: string) => {\n if (onChange) {\n try {\n const tree1 = JSON.parse(initialJson);\n const tree2 = JSON.parse(currentJson);\n const diff = jsonpatch.compare(tree1, tree2);\n // @ts-ignore\n const applyDiff = (diff) => {\n const result = {};\n for (const change of diff) {\n const { op, path, value } = change;\n // @ts-ignore\n const keys = path.split(\"/\").filter((key) => key !== \"\");\n let current = result;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n // @ts-ignore\n if (!current[key]) {\n // @ts-ignore\n current[key] = {};\n }\n // @ts-ignore\n current = current[key];\n }\n let lastKey = keys[keys.length - 1];\n lastKey = lastKey.replace('~1', '/');\n if (op === \"replace\") {\n // @ts-ignore\n current[lastKey] = value;\n }\n if (op === \"add\") {\n // @ts-ignore\n current[lastKey] = value;\n }\n }\n return result;\n };\n const result = applyDiff(diff);\n if (Object.keys(result).length > 0) {\n onChange(result);\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, 1000)\n );\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <MonacoEditor\n options={{\n minimap: {\n enabled: false,\n },\n }}\n height={height}\n theme=\"vs-dark\"\n language=\"json\"\n value={initialJson}\n onChange={(v) => {\n changeValueRef.current?.(initialJson, v);\n // @ts-ignore\n valueRef.current = v;\n }}\n />\n {onSubmit && (\n <Button\n className=\"z-50 absolute bottom-[50px] right-[20px]\"\n color='primary'\n size='sm'\n onClick={() => {\n try {\n const json = JSON.parse(valueRef.current);\n onSubmit(json);\n } catch (error) {\n console.error(error);\n }\n }}>\n Submit\n </Button>\n )}\n </div>\n );\n};\n\n"]}
1
+ {"version":3,"sources":["../components/ui/sheet.tsx","../module/Devtool/devtool.tsx","../components/JSONEditor/index.tsx"],"names":["React","initialJson","diff","result"],"mappings":"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","sourcesContent":["\"use client\";\r\n\r\nimport * as React from \"react\";\r\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\r\nimport { cva, type VariantProps } from \"class-variance-authority\";\r\nimport { X } from \"lucide-react\";\r\n\r\nimport { cn } from \"../../lib/utils\";\r\n\r\nconst Sheet = SheetPrimitive.Root;\r\n\r\nconst SheetTrigger = SheetPrimitive.Trigger;\r\n\r\n// @ts-ignore\r\nconst SheetPortal = ({ className, ...props }: SheetPrimitive.DialogPortalProps) => <SheetPrimitive.Portal className={cn(className)} {...props} />;\r\nSheetPortal.displayName = SheetPrimitive.Portal.displayName;\r\n\r\nconst SheetOverlay = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Overlay>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Overlay className={cn(\"fixed inset-0 z-50 bg-background/80 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\", className)} {...props} ref={ref} />\r\n));\r\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName;\r\n\r\nconst sheetVariants = cva(\"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500\", {\r\n variants: {\r\n side: {\r\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\r\n bottom: \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\r\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\r\n right: \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\r\n },\r\n },\r\n defaultVariants: {\r\n side: \"right\",\r\n },\r\n});\r\n\r\nconst SheetClose = ({ className, ...props }: SheetPrimitive.DialogCloseProps) => (\r\n <SheetPrimitive.Close className={cn(\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\", className)} {...props}>\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </SheetPrimitive.Close>\r\n);\r\nSheetClose.displayName = \"Close\";\r\n\r\ninterface SheetContentProps extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>, VariantProps<typeof sheetVariants> { }\r\n\r\nconst SheetContent = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Content>, SheetContentProps & { showOverlay?: boolean; open?: boolean }>(({ side = \"right\", className, children, showOverlay = false, open, ...props }, ref) => {\r\n return (\r\n <SheetPortal>\r\n {showOverlay && <SheetOverlay />}\r\n <div ref={ref} data-state={open ? \"open\" : \"closed\"} className={cn(sheetVariants({ side }), className)} {...props}>\r\n {children}\r\n </div>\r\n </SheetPortal>\r\n );\r\n});\r\nSheetContent.displayName = SheetPrimitive.Content.displayName;\r\n\r\nconst SheetHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn(\"flex flex-col space-y-2 text-center sm:text-left\", className)} {...props} />;\r\nSheetHeader.displayName = \"SheetHeader\";\r\n\r\nconst SheetFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => <div className={cn(\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\", className)} {...props} />;\r\nSheetFooter.displayName = \"SheetFooter\";\r\n\r\nconst SheetTitle = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Title>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>>(({ className, ...props }, ref) => <SheetPrimitive.Title ref={ref} className={cn(\"text-lg font-semibold text-foreground\", className)} {...props} />);\r\nSheetTitle.displayName = SheetPrimitive.Title.displayName;\r\n\r\nconst SheetDescription = React.forwardRef<React.ElementRef<typeof SheetPrimitive.Description>, React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>>(({ className, ...props }, ref) => (\r\n <SheetPrimitive.Description ref={ref} className={cn(\"text-sm text-muted-foreground\", className)} {...props} />\r\n));\r\nSheetDescription.displayName = SheetPrimitive.Description.displayName;\r\n\r\nexport { Sheet, SheetTrigger, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, SheetClose };\r\n","import { Sheet, SheetClose, SheetContent } from \"../../components/ui/sheet\";\r\nimport { Tabs, Tab } from \"@nextui-org/react\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { RootStore } from \"../../store/root\";\r\nimport { PromiseState } from \"../../store/standard/PromiseState\";\r\nimport { Store } from \"../../store/standard/base\";\r\nimport { Wrench } from \"lucide-react\";\r\nimport { observer, useLocalObservable } from \"mobx-react-lite\";\r\nimport { toJS } from \"mobx\";\r\nimport { helper } from \"../../lib/helper\";\r\nimport EventEmitter from \"events\";\r\nimport { useMemo } from \"react\";\r\nimport React from \"react\";\r\nimport { JSONEditor } from \"../../components/JSONEditor\"\r\n\r\nfunction filterState(obj) {\r\n if (obj.toJSON) {\r\n return obj.toJSON()\r\n }\r\n\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return obj;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n return obj.map(filterState);\r\n }\r\n\r\n const filteredObj = {};\r\n\r\n for (const [key, value] of Object.entries(obj)) {\r\n try {\r\n if (\r\n ![\"sid\", \"disabled\", \"autoObservable\", \"promiseState\", \"autoAsyncable\", \"stype\"].includes(key) &&\r\n // !(value instanceof PromiseState) &&\r\n !(value instanceof EventEmitter) &&\r\n !value?.hasOwnProperty(\"$$typeof\")\r\n ) {\r\n filteredObj[key] = filterState(value);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n return obj;\r\n }\r\n }\r\n\r\n return filteredObj;\r\n}\r\n\r\nexport class DevTool implements Store {\r\n sid = \"DevTool\";\r\n stype = \"Plugin\"\r\n provider = ({ rootStore }: { rootStore: RootStore }) => <DevToolProvider rootStore={rootStore} />;\r\n disabled?: boolean = false;\r\n autoObservable?: boolean = true;\r\n isOpen = false;\r\n\r\n panels: Store[\"pannel\"][] = [\r\n {\r\n title: \"Store\",\r\n render: observer(({ rootStore }: { rootStore: RootStore }) => {\r\n const state = useLocalObservable<{\r\n curStore: Store;\r\n curPromiseStateList: { name: string; promiseState: PromiseState<any, any> }[];\r\n }>(() => ({\r\n //@ts-ignore\r\n curStore: null,\r\n curPromiseStateList: [],\r\n }));\r\n const initialJson = useMemo(() => {\r\n //@ts-ignore\r\n if (state.curStore?.toJSON) return JSON.stringify(state.curStore?.toJSON(), null, 2);\r\n const filteredData = filterState(state.curStore || {});\r\n return JSON.stringify(toJS(filteredData), null, 2);\r\n }, [state.curStore]);\r\n return (\r\n <div className=\"flex flex-col md:flex-row text-sm\">\r\n <div>\r\n <Tabs\r\n size=\"sm\"\r\n radius=\"none\"\r\n variant=\"underlined\"\r\n items={[{ title: \"Store\", value: \"Store\" }, { title: \"Plugin\", value: \"Plugin\" }]}\r\n >\r\n {(item) => {\r\n const stores = Object.values(rootStore.instance).filter(i => i.stype == item.value && i.sid).sort((a, b) => a.sid.length - b.sid.length);\r\n return (\r\n <Tab key={item.title} title={item.title} >\r\n <div>\r\n <div className=\"w-full md:w-[300px] space-y-1 pr-2 overflow-auto\">\r\n {stores.map((store) => {\r\n return (\r\n <div\r\n key={store?.sid}\r\n className={cn(\"px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer\", { \"bg-green-600 text-white\": state.curStore?.sid === store.sid })}\r\n onClick={() => {\r\n state.curStore = store;\r\n }}\r\n >\r\n {store.sid}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n </Tab>\r\n )\r\n }}\r\n </Tabs>\r\n </div>\r\n\r\n <div className=\"mt-4 w-full overflow-auto md:mt-0\">\r\n <JSONEditor\r\n className={\"h-full\"}\r\n height={450}\r\n initialJson={initialJson}\r\n onChange={(data) => {\r\n console.log(\"onChange\", data);\r\n helper.deepMerge(state.curStore, data);\r\n }}\r\n />\r\n {/* <PromiseStateDebug promiseStateList={state.curPromiseStateList} /> */}\r\n </div>\r\n </div>\r\n );\r\n }),\r\n },\r\n ];\r\n\r\n onNewStore({ rootStore }: { rootStore: RootStore }) {\r\n Object.values(rootStore.instance).forEach((store) => {\r\n if (store.devtools?.started) return;\r\n if (store.devtools?.panels) {\r\n store.devtools.started = true;\r\n this.panels = [...this.panels, ...store.devtools?.panels];\r\n }\r\n });\r\n }\r\n\r\n constructor(args: Partial<DevTool> = {}) {\r\n Object.assign(this, args);\r\n }\r\n}\r\n\r\n// const PromiseStateDebug = ({ promiseStateList }: { promiseStateList: { name: string; promiseState: PromiseState<any, any> }[] }) => {\r\n// if (promiseStateList.length === 0) return null;\r\n// return (\r\n// <>\r\n// <div className=\"mt-6 mb-2 pt-2 border-t-[1px] font-bold dark:border-gray-600\">Debug PromiseState</div>\r\n// <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n// {promiseStateList.map((item, index) => {\r\n// const formData = item.promiseState.debug.input;\r\n// return (\r\n// <Card className=\"p-2 dark:border-gray-800\" key={index}>\r\n// <div className=\"font-bold text-xs\">{item.name}</div>\r\n// <JSONSchemaForm\r\n// formState={getFormState({\r\n// data: formData,\r\n// onSubmit: (data) => {\r\n// item.promiseState.call(data);\r\n// },\r\n// })}\r\n// />\r\n// </Card>\r\n// );\r\n// })}\r\n// </div>\r\n// </>\r\n// );\r\n// };\r\n\r\nexport const DevToolProvider = observer(({ rootStore }: { rootStore: RootStore }) => {\r\n const devTool = rootStore.get(DevTool);\r\n const minSheetHeight = 500;\r\n const store = useLocalObservable(() => ({\r\n sheetHeight: minSheetHeight,\r\n }));\r\n return (\r\n <>\r\n <div className=\"fixed right-4 bottom-4 z-10\">\r\n <div\r\n className=\"p-1 rounded-sm bg-gray-300 hover:bg-gray-400 dark:bg-gray-600 dark:hover:bg-gray-500 cursor-pointer\"\r\n onClick={() => {\r\n devTool.isOpen = true;\r\n }}\r\n >\r\n <Wrench size={20} />\r\n </div>\r\n </div>\r\n <Sheet open={devTool.isOpen}>\r\n <SheetContent\r\n open={devTool.isOpen}\r\n side=\"bottom\"\r\n className=\"p-0 outline-none bg-card dark:border-none\"\r\n style={{\r\n height: store.sheetHeight,\r\n }}\r\n >\r\n <div className=\"absolute top-0 left-0 h-[32px] w-full bg-gray-100 dark:bg-gray-800\"></div>\r\n <SheetClose\r\n className=\"top-2 right-2\"\r\n onClick={() => {\r\n devTool.isOpen = false;\r\n }}\r\n />\r\n <div\r\n className=\"absolute top-[-8px] left-0 w-full h-[10px] cursor-row-resize\"\r\n onMouseDown={(e) => {\r\n const startH = store.sheetHeight;\r\n const startPageY = e.pageY;\r\n const onMouseMove = (mouseMoveEvent: MouseEvent) => {\r\n const diff = startPageY - mouseMoveEvent.pageY;\r\n const h = startH + diff;\r\n if (h > minSheetHeight && h < window.innerHeight) {\r\n store.sheetHeight = h;\r\n }\r\n };\r\n const onMouseUp = () => {\r\n document.body.removeEventListener(\"mousemove\", onMouseMove);\r\n };\r\n document.body.addEventListener(\"mousemove\", onMouseMove);\r\n document.body.addEventListener(\"mouseup\", onMouseUp, { once: true });\r\n }}\r\n />\r\n <Tabs\r\n className='w-full'\r\n size=\"sm\"\r\n radius=\"none\"\r\n items={devTool.panels}\r\n >\r\n {(panel) => {\r\n const Component = panel.render || (() => null);\r\n return (\r\n <Tab key={panel.title} title={panel.title}>\r\n <div className=\"p-0\" style={{ height: `calc(${store.sheetHeight}px - 50px)` }}>\r\n <Component rootStore={rootStore} />\r\n </div>\r\n </Tab>\r\n )\r\n }}\r\n </Tabs>\r\n </SheetContent>\r\n </Sheet>\r\n </>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { useRef } from \"react\";\r\nimport MonacoEditor from \"@monaco-editor/react\";\r\nimport { _ } from \"../../lib/lodash\";\r\nimport * as jsonpatch from \"fast-json-patch\";\r\nimport { cn } from \"../../lib/utils\";\r\nimport { Button } from '@nextui-org/react';\r\n\r\nexport const JSONEditor = ({ className, height = \"100%\", initialJson, onChange, onSubmit }: { className?: string; height?: string | number; initialJson: string; onChange?: (value: Record<string, any>) => void; onSubmit?: (value: Record<string, any>) => void }) => {\r\n const valueRef = useRef<string>(initialJson);\r\n const changeValueRef = useRef(\r\n _.debounce((initialJson: string, currentJson: string) => {\r\n if (onChange) {\r\n try {\r\n const tree1 = JSON.parse(initialJson);\r\n const tree2 = JSON.parse(currentJson);\r\n const diff = jsonpatch.compare(tree1, tree2);\r\n // @ts-ignore\r\n const applyDiff = (diff) => {\r\n const result = {};\r\n for (const change of diff) {\r\n const { op, path, value } = change;\r\n // @ts-ignore\r\n const keys = path.split(\"/\").filter((key) => key !== \"\");\r\n let current = result;\r\n for (let i = 0; i < keys.length - 1; i++) {\r\n const key = keys[i];\r\n // @ts-ignore\r\n if (!current[key]) {\r\n // @ts-ignore\r\n current[key] = {};\r\n }\r\n // @ts-ignore\r\n current = current[key];\r\n }\r\n let lastKey = keys[keys.length - 1];\r\n lastKey = lastKey.replace('~1', '/');\r\n if (op === \"replace\") {\r\n // @ts-ignore\r\n current[lastKey] = value;\r\n }\r\n if (op === \"add\") {\r\n // @ts-ignore\r\n current[lastKey] = value;\r\n }\r\n }\r\n return result;\r\n };\r\n const result = applyDiff(diff);\r\n if (Object.keys(result).length > 0) {\r\n onChange(result);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }, 1000)\r\n );\r\n\r\n return (\r\n <div className={cn(\"relative w-full\", className)}>\r\n <MonacoEditor\r\n options={{\r\n minimap: {\r\n enabled: false,\r\n },\r\n }}\r\n height={height}\r\n theme=\"vs-dark\"\r\n language=\"json\"\r\n value={initialJson}\r\n onChange={(v) => {\r\n changeValueRef.current?.(initialJson, v);\r\n // @ts-ignore\r\n valueRef.current = v;\r\n }}\r\n />\r\n {onSubmit && (\r\n <Button\r\n className=\"z-50 absolute bottom-[50px] right-[20px]\"\r\n color='primary'\r\n size='sm'\r\n onClick={() => {\r\n try {\r\n const json = JSON.parse(valueRef.current);\r\n onSubmit(json);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }}>\r\n Submit\r\n </Button>\r\n )}\r\n </div>\r\n );\r\n};\r\n\r\n"]}
@@ -1,8 +1,8 @@
1
- import { PromiseState } from './chunk-SL5OV6OR.mjs';
2
- import './chunk-IMOLRP7I.mjs';
3
- import { RootStore } from './chunk-IDKGZ5T4.mjs';
4
- import { _ } from './chunk-K7LFG5BA.mjs';
5
- import { __objRest, __spreadValues, __spreadProps } from './chunk-YITAUACR.mjs';
1
+ import { PromiseState } from './chunk-72E76L6J.mjs';
2
+ import './chunk-7EL2RQI7.mjs';
3
+ import { RootStore } from './chunk-KIS52LFU.mjs';
4
+ import { _ } from './chunk-2PD23V7H.mjs';
5
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-6F7H4PAA.mjs';
6
6
  import React2 from 'react';
7
7
  import { makeAutoObservable, toJS, observable } from 'mobx';
8
8
  import axios from 'axios';
@@ -1 +1 @@
1
- {"version":3,"sources":["../module/Core/Slot.tsx","../module/Core/Storage.tsx","../module/Core/Async.tsx","../module/Core/standard/Collection.tsx","../module/JSONView/index.tsx"],"names":["value","React"],"mappings":"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","sourcesContent":["import { Store } from \"../../store/standard/base\";\nimport { RootStore } from \"../../store/root\";\nimport React, { ReactNode } from \"react\";\n\nexport class SlotPlugin implements Store {\n sid = \"SlotPlugin\";\n stype = \"Plugin\"\n autoObservable?: boolean = false;\n\n slotMap: Store[\"slots\"] = {};\n\n // SlotList = observer(() => {\n // const collection = RootStore.Get(Collection<Store[\"slot\"]>, { sid: \"SlotPlugin.slots\", args: { data: this.slotMap } });\n // //@ts-ignore\n // const Component = collection.current.Component;\n\n // return (\n // <div className=\"h-full flex flex-col md:flex-row text-sm\">\n // <div className=\"w-full md:w-[300px] space-y-1 pr-2 md:border-r-[1px] border-gray-200 dark:border-gray-700 overflow-auto\">\n // {Object.keys(collection.data).map((i) => (\n // <div key={i} className={cn(\"px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer\", { \"bg-green-600 text-white\": collection.key === i })} onClick={() => collection.setKey(i)}>\n // {i}\n // </div>\n // ))}\n // </div>\n // <div className=\"mt-4 w-full md:w-[400px] px-4 overflow-auto md:mt-0 md:ml-4\">\n // {/* @ts-ignore */}\n // <Component {...collection.current.input} />\n // {/* @ts-ignore */}\n // {collection.current.input && (\n // <JSONSchemaForm\n // formState={getFormState({\n // uiSize: \"small\",\n // // @ts-ignore\n // data: collection.current.input,\n // onSubmit: (data) => {\n // console.log(data);\n // // @ts-ignore\n // collection.setValue(collection.key, { ...collection.current, input: data });\n // },\n // })}\n // />\n // )}\n // </div>\n // </div>\n // );\n // });\n\n // devtools = {\n // panels: [\n // {\n // title: \"Slot\",\n // render: this.SlotList,\n // },\n // ],\n // };\n\n onNewStore({ rootStore }: { rootStore: RootStore }) {\n Object.values(rootStore.instance).forEach((store) => {\n //@ts-ignore\n if (store.isSlotInit) return;\n if (store.slots) {\n //@ts-ignore\n store.isSlotInit = true;\n //@ts-ignore\n this.slotMap = { ...this.slotMap, ...store.slots };\n }\n });\n }\n\n toJSON() {\n return this.slotMap\n }\n\n static Slot = ({ name, ...props }: { name } & any): ReactNode => {\n const slotPlugin = RootStore.Get(SlotPlugin);\n const slot = slotPlugin.slotMap![name];\n //@ts-ignore\n const Component: React.FC = slot?.render;\n if (!Component) {\n //@ts-ignore\n return <div></div>;\n }\n //@ts-ignore\n return <Component {...props} />;\n };\n\n constructor(args: Partial<SlotPlugin> = {}) {\n Object.assign(this, args);\n }\n}\n","\"use client\";\n\nimport { RootStore } from \"../../store/root\";\nimport { Store } from \"../../store/standard/base\";\nimport { makeAutoObservable, observable, toJS } from \"mobx\";\nimport { _ } from \"../../lib/lodash\";\n// import { AsyncStorage } from \"./Async\";\n\n// import { JSONForm } from \"../../components/JSONForm\"\n\nexport type Engine = {\n name: string;\n get(key): any;\n set(key, value): any;\n remove(key): any;\n};\n\nexport type DataGroup = Record<\n string,\n {\n index: StorageParams<any>;\n children: Record<string, DataGroup>;\n }\n>;\n\nexport type StorageParams<T> = {\n key: string;\n value?: T;\n engine?: Engine;\n _value?: T;\n defaultValue?: T;\n debounce?: number;\n onInit?(value: T): void;\n debounceFn?: any;\n onDebounce?(value: T): void;\n onSet?(value: T): void;\n set?: (value: T) => void;\n setValue?: (value: T) => void;\n reset?: () => void;\n listen?: (func?: (args: { key: string; value: any }) => void) => void;\n};\nconst memory = {};\n\nexport class StoragePlugin implements Store {\n sid = 'StoragePlugin';\n stype = \"Plugin\"\n autoObservable?: boolean = true;\n static engines = {\n memory: {\n name: 'memory',\n get(key) {\n return memory[key];\n },\n set(key, value) {\n return (memory[key] = value);\n },\n remove(key) {\n delete memory[key];\n return;\n },\n },\n localStorage: {\n name: 'localStorage',\n get(key) {\n return StoragePlugin.safeParse(globalThis.localStorage.getItem(key));\n },\n set(key, value) {\n return globalThis.localStorage.setItem(key, JSON.stringify(value));\n },\n remove(key) {\n return globalThis.localStorage.removeItem(key);\n },\n },\n // asyncStorage: {\n // name: 'asyncStorage',\n // get(key) {\n // return RootStore.Get(AsyncStorage).get(key);\n // },\n // set(key, value) {\n // return RootStore.Get(AsyncStorage).set(key, value);\n // },\n // remove(key) {\n // return RootStore.Get(AsyncStorage).remove(key);\n // },\n // },\n };\n engines = StoragePlugin.engines;\n // debounceFn: (val: any) => void;\n // data = {};\n dataMeta: Record<string, StorageParams<any>> = {};\n\n get dataGroup() {\n const tree = Object.values(this.dataMeta).reduce((p, c) => {\n const current = this.dataMeta[c.key];\n const path = c.key;\n const parentPath = path\n .split('.')\n .slice(0, path.length - 1)\n .join('.');\n const key = path.split('.').pop();\n if (!p[parentPath]) {\n const topPath = !parentPath.includes('.');\n _.set(p, parentPath + (topPath ? `.${key}` : ``), {\n ...current,\n toJSON() {\n return typeof current.value === 'object' ? JSON.stringify(toJS(current.value), null, 2) : current.value;\n },\n });\n }\n\n return p;\n }, {});\n\n return tree;\n }\n\n // StorageTools = observer(() => {\n // const collection = RootStore.Get(Collection<any>, { sid: 'StoragePlugin.current', args: { data: this.dataGroup } });\n // const data = collection.current as Record<string, StorageParams<any>>;\n\n // const dataConfig = Object.entries(data).reduce((p, [key, value]) => {\n // p[key] = {\n // title: `${key} (${value.engine.name})`,\n // };\n // return p;\n // }, {});\n\n // return (\n // <div className=\"h-full flex flex-col md:flex-row text-sm\">\n // <div className=\"w-full md:w-[300px] space-y-1 pr-2 md:border-r-[1px] border-gray-200 dark:border-gray-700 overflow-auto\">\n // {Object.keys(collection.data)\n // .sort((a, b) => a.length - b.length)\n // .map((i) => (\n // <div\n // key={i}\n // className={cn('px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer', { 'bg-green-600 text-white': collection.key === i })}\n // onClick={() => collection.setKey(i)}\n // >\n // {i}\n // </div>\n // ))}\n // </div>\n // <div className=\"mt-4 w-full overflow-auto md:mt-0\">\n // <JSONForm\n // formData={{ data: JSON.parse(JSON.stringify(data, null, 2)) }}\n // formConfig={{\n // data: dataConfig,\n // }}\n // onChange={(v) => {\n // Object.entries(v.data).forEach(([key, value]) => {\n // data[key].set(StoragePlugin.safeParse(value));\n // });\n // return v;\n // }}\n // // onSet={(v) => {\n // // //TODO: only udpate changed filed\n // // Object.entries(v).forEach(([key, value]) => {\n // // data[key].set(StoragePlugin.safeParse(value));\n // // });\n // // return v;\n // // }}\n // />\n // </div>\n // </div>\n // );\n // });\n\n // devtools = {\n // panels: [\n // {\n // title: 'Storage',\n // render: this.StorageTools,\n // },\n // ],\n // };\n\n static safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n }\n\n set = ({ key, value, engine }: { key: string; value: any; engine?: Engine }) => {\n this.dataMeta[key]._value = value;\n const _engine = engine || this.dataMeta[key]?.engine || this.engines.memory;\n\n //@ts-ignore\n RootStore.init().events.emit(`storage.${key}.update`, { key, value });\n if (this.dataMeta[key].onSet) this.dataMeta[key].onSet(value);\n return _engine.set(key, value);\n };\n\n\n get = <T,>({ key, value, defaultValue, engine = this.engines.memory, ...other }: StorageParams<T>): StorageParams<T> => {\n if (typeof window == 'undefined' && engine.name == 'localStorage') {\n engine = this.engines.memory;\n }\n\n if (value && !defaultValue) {\n defaultValue = value\n }\n const that = this;\n if (!this.dataMeta[key]) {\n const exists = engine.get(key);\n if (engine.name == 'asyncStorage') {\n console.log('get', key, exists);\n }\n if (!exists) {\n engine.set(key, defaultValue);\n }\n const _value = engine.get(key);\n\n this.dataMeta[key] = makeAutoObservable({\n key,\n engine,\n defaultValue,\n ...other,\n _value,\n get value() {\n return that.dataMeta[key]._value;\n },\n set value(value) {\n that.set({ key, value });\n other.debounce && that.dataMeta[key].debounceFn(value)\n },\n set(value) {\n that.set({ key, value });\n other.debounce && that.dataMeta[key].debounceFn(value)\n },\n setValue(value) {\n that.set({ key, value });\n },\n reset() {\n that.set({ key, value: defaultValue });\n },\n toJSON() {\n return that.dataMeta[key]._value;\n },\n listen(func) {\n //@ts-ignore\n RootStore.init().events.on(`storage.${key}.update`, (args) => func(args));\n },\n debounceFn: _.debounce((value) => {\n other?.onDebounce(value);\n }, other.debounce)\n });\n if (this.dataMeta[key].onInit) {\n this.dataMeta[key].onInit(this.dataMeta[key].value);\n }\n }\n\n //@ts-ignore\n return this.dataMeta[key];\n };\n\n remove = ({ key, engine = this.engines.memory }: { key?: string; engine?: Engine }): void => {\n engine.remove(key);\n };\n\n static Get<T>(args: StorageParams<T>): StorageParams<T> {\n const storagePlugin = RootStore.Get(StoragePlugin);\n return storagePlugin.get(args);\n }\n\n static Input<T, U extends StorageParams<T>>(args: U): U {\n const storagePlugin = RootStore.Get(StoragePlugin);\n const data = storagePlugin.get(args);\n //@ts-ignore\n return observable({\n ...args,\n ...data,\n get value() {\n return data.value;\n },\n set value(value) {\n data.set(value);\n },\n onChange(e) {\n data.set(e.target.value);\n },\n });\n }\n\n static Custom<T, U extends StorageParams<T>>(args: U): U & StorageParams<T> {\n const storagePlugin = RootStore.Get(StoragePlugin);\n const { value, _value, ...others } = args;\n const data = storagePlugin.get(args);\n //@ts-ignore\n\n return observable({\n ...args,\n ...data,\n get value() {\n return data.value;\n },\n set value(value) {\n data.set(value);\n },\n onChange(e) {\n data.set(e.target.value);\n },\n });\n }\n\n constructor(args: Partial<StoragePlugin> = {}) {\n Object.assign(this, args);\n }\n}\n","import axios from \"axios\";\nimport { _ } from \"../../lib/lodash\";\nimport { RootStore } from \"../../store/root\";\nimport { Store } from \"../../store/standard/base\";\nimport { PromiseState } from \"../../store/standard/PromiseState\";\nimport { StoragePlugin } from \"./Storage\";\n\n\nexport const jwt = StoragePlugin.Get({\n key: \"asyncStorage.token\",\n value: \"\",\n engine: StoragePlugin.engines.localStorage,\n});\n\nexport class AsyncStorage implements Store {\n sid = \"AsyncStorage\";\n stype = \"Plugin\"\n url = `https://dappkit-async-api.deno.dev/project/${process.env.NEXT_PUBLIC_PROJECT_ID}`;\n forceUpdate = false;\n autoObservable?: boolean = true;\n\n data = new PromiseState({\n context: this,\n value: {},\n function: async () => {\n const res = await axios.get(this.url, {\n params: { forceUpdate: this.forceUpdate },\n });\n //@ts-ignore\n return { ...this.data.value, ...res.data };\n },\n }).on(\"data\", (data) => {\n this.syncStorage();\n });\n\n syncStorage() {\n const data = this.data.value;\n const storage = RootStore.Get(StoragePlugin);\n\n Object.keys(data).map((key) => {\n const value = data[key];\n const target = storage.dataMeta[key];\n if (target) {\n target.set(value);\n }\n });\n }\n\n // devtools = {\n // panels: [\n // {\n // title: \"AsyncStorage\",\n // render: observer(() => {\n\n // return (\n // <div className=\"h-full w-full overflow-auto\">\n // <Input\n // placeholder=\"Please enter your asyncStorage token here\"\n // value={jwt.value}\n // onChange={(e) => jwt.set(e.target.value)}\n // />\n // <JSONEditor\n // className=\"h-full\"\n // initialJson={JSON.stringify(toJS(this.data.value), null, 2)}\n // onChange={(data) => {\n // console.log(\"onChange\", data);\n // helper.deepMerge(this.data.value, data);\n // this.syncStorage();\n // }}\n // onSubmit={async (data) => {\n // if (!jwt.value) {\n // RootStore.Get(ToastPlugin).error(\n // \"Please enter your asyncStorage token first\",\n // );\n // } else {\n // if (!process.env.NEXT_PUBLIC_PROJECT_ID) {\n // RootStore.Get(ToastPlugin).error(\n // \"Please set your project id first\",\n // );\n // }\n // await axios.post(\n // `https://dappkit-async-api.deno.dev/update/${process.env.NEXT_PUBLIC_PROJECT_ID}`,\n // data,\n // {\n // headers: {\n // Authorization: `${jwt.value}`,\n // },\n // },\n // );\n // }\n // this.forceUpdate = true;\n // await this.data.wait({ call: true });\n // RootStore.Get(ToastPlugin).success(\"Update success\");\n // console.log(\"onSubmit\", data);\n // }}\n // />\n // </div>\n // );\n // }),\n // },\n // ],\n // };\n\n constructor(args: Partial<AsyncStorage> = {}) {\n Object.assign(this, args);\n }\n\n get(key) {\n return _.get(this.data.value, key);\n }\n\n async set(key, value) {\n _.set(this.data.value, key, value);\n }\n\n async remove(key) {\n _.remove(this.data.value, key);\n }\n\n onNewStore = ({\n rootStore,\n store,\n }: {\n rootStore: RootStore;\n store: Store;\n }) => {\n if (store.autoAsyncable) {\n this.makeAutoAsyncAble(store);\n }\n };\n\n async makeAutoAsyncAble(instance) {\n const data = await this.data.wait({ call: true });\n if (data[instance.sid]) {\n Object.assign(instance, data[instance.sid]);\n }\n }\n}\n","import { Store } from '../../../store/standard/base';\n\nexport class Collection<T = any> implements Store {\n sid = 'Collection';\n autoObservable = true;\n\n key: string;\n data: {\n [key: string]: T;\n } = {};\n constructor(args: Partial<Collection<T>>) {\n Object.assign(this, args);\n if (!this.key) {\n this.key = Object.keys(this.data)[0];\n }\n }\n get current(): T {\n return this.data[this.key];\n }\n\n setKey(key: string) {\n this.key = key;\n }\n setValue(key: string, value: T) {\n this.data[key] = value;\n }\n}\n","import React, { HTMLAttributeAnchorTarget } from \"react\";\nimport { _ } from \"../../lib/lodash\";\nimport { RootStore } from \"../../store\";\nimport { Store } from \"../../store/standard/base\";\n\nexport type JSONViewType = {\n className?: string;\n children?: any;\n data?: Record<string, JSONDataType>;\n datas?: Record<string, Record<string, JSONDataType> | JSONDataType[]>;\n uiConfig?: {\n type: string;\n className?: Record<string, string>;\n slots?: Record<string, any>;\n [key: string]: any;\n };\n uiConfigs?: Record<string, JSONViewType['uiConfig']>;\n};\n\nexport type JSONDataType = {\n title?: string;\n icon?: any;\n render?: any;\n className?: string;\n type?: 'divider' | 'checkbox' | 'label' | 'radio';\n shortcut?: string;\n disabled?: boolean;\n children?: Record<string, JSONDataType>;\n value?: any;\n link?: any;\n target?: HTMLAttributeAnchorTarget;\n needAuth?: boolean;\n events?: Record<string, any>;\n onChange?: (args: { e: any; v: any }) => void;\n onClick?: (args: { e: any; v: any }) => void;\n};\n\nexport class JSONViewPlugin implements Store {\n sid = 'JSONViewPlugin';\n autoObservable?: boolean = false;\n\n JSONView = {\n Test: {\n name: 'Test',\n render: () => <div>Test</div>,\n },\n };\n\n onNewStore({ rootStore, store }: { rootStore: RootStore<any>; store: Store }): void {\n this.crawl(store);\n }\n\n crawl(store: Store) {\n if (store?.JSONView) {\n this.JSONView = { ...this.JSONView, ...store.JSONView };\n }\n }\n\n static JSONView = (props: JSONViewType) => {\n const jsonviewplugin = RootStore.Get(JSONViewPlugin);\n\n return (\n <>\n {Object.keys(props.uiConfigs).map((key) => {\n const config = props.uiConfigs[key] as any;\n const data = _.get(props.datas, key);\n const Component = jsonviewplugin.JSONView[config.type].render;\n const rootStore = RootStore.init();\n Object.values(data).forEach((i: any) => {\n if (i.events) {\n Object.entries(i.events).forEach(([k, v]) => {\n i[k] = (args) => rootStore.events.emit(v as any, { ...args, action: k });\n });\n }\n });\n\n return <Component key={key} data={data} uiConfig={config} />;\n })}\n </>\n );\n };\n}"]}
1
+ {"version":3,"sources":["../module/Core/Slot.tsx","../module/Core/Storage.tsx","../module/Core/Async.tsx","../module/Core/standard/Collection.tsx","../module/JSONView/index.tsx"],"names":["value","React"],"mappings":"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","sourcesContent":["import { Store } from \"../../store/standard/base\";\r\nimport { RootStore } from \"../../store/root\";\r\nimport React, { ReactNode } from \"react\";\r\n\r\nexport class SlotPlugin implements Store {\r\n sid = \"SlotPlugin\";\r\n stype = \"Plugin\"\r\n autoObservable?: boolean = false;\r\n\r\n slotMap: Store[\"slots\"] = {};\r\n\r\n // SlotList = observer(() => {\r\n // const collection = RootStore.Get(Collection<Store[\"slot\"]>, { sid: \"SlotPlugin.slots\", args: { data: this.slotMap } });\r\n // //@ts-ignore\r\n // const Component = collection.current.Component;\r\n\r\n // return (\r\n // <div className=\"h-full flex flex-col md:flex-row text-sm\">\r\n // <div className=\"w-full md:w-[300px] space-y-1 pr-2 md:border-r-[1px] border-gray-200 dark:border-gray-700 overflow-auto\">\r\n // {Object.keys(collection.data).map((i) => (\r\n // <div key={i} className={cn(\"px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer\", { \"bg-green-600 text-white\": collection.key === i })} onClick={() => collection.setKey(i)}>\r\n // {i}\r\n // </div>\r\n // ))}\r\n // </div>\r\n // <div className=\"mt-4 w-full md:w-[400px] px-4 overflow-auto md:mt-0 md:ml-4\">\r\n // {/* @ts-ignore */}\r\n // <Component {...collection.current.input} />\r\n // {/* @ts-ignore */}\r\n // {collection.current.input && (\r\n // <JSONSchemaForm\r\n // formState={getFormState({\r\n // uiSize: \"small\",\r\n // // @ts-ignore\r\n // data: collection.current.input,\r\n // onSubmit: (data) => {\r\n // console.log(data);\r\n // // @ts-ignore\r\n // collection.setValue(collection.key, { ...collection.current, input: data });\r\n // },\r\n // })}\r\n // />\r\n // )}\r\n // </div>\r\n // </div>\r\n // );\r\n // });\r\n\r\n // devtools = {\r\n // panels: [\r\n // {\r\n // title: \"Slot\",\r\n // render: this.SlotList,\r\n // },\r\n // ],\r\n // };\r\n\r\n onNewStore({ rootStore }: { rootStore: RootStore }) {\r\n Object.values(rootStore.instance).forEach((store) => {\r\n //@ts-ignore\r\n if (store.isSlotInit) return;\r\n if (store.slots) {\r\n //@ts-ignore\r\n store.isSlotInit = true;\r\n //@ts-ignore\r\n this.slotMap = { ...this.slotMap, ...store.slots };\r\n }\r\n });\r\n }\r\n\r\n toJSON() {\r\n return this.slotMap\r\n }\r\n\r\n static Slot = ({ name, ...props }: { name } & any): ReactNode => {\r\n const slotPlugin = RootStore.Get(SlotPlugin);\r\n const slot = slotPlugin.slotMap![name];\r\n //@ts-ignore\r\n const Component: React.FC = slot?.render;\r\n if (!Component) {\r\n //@ts-ignore\r\n return <div></div>;\r\n }\r\n //@ts-ignore\r\n return <Component {...props} />;\r\n };\r\n\r\n constructor(args: Partial<SlotPlugin> = {}) {\r\n Object.assign(this, args);\r\n }\r\n}\r\n","\"use client\";\r\n\r\nimport { RootStore } from \"../../store/root\";\r\nimport { Store } from \"../../store/standard/base\";\r\nimport { makeAutoObservable, observable, toJS } from \"mobx\";\r\nimport { _ } from \"../../lib/lodash\";\r\n// import { AsyncStorage } from \"./Async\";\r\n\r\n// import { JSONForm } from \"../../components/JSONForm\"\r\n\r\nexport type Engine = {\r\n name: string;\r\n get(key): any;\r\n set(key, value): any;\r\n remove(key): any;\r\n};\r\n\r\nexport type DataGroup = Record<\r\n string,\r\n {\r\n index: StorageParams<any>;\r\n children: Record<string, DataGroup>;\r\n }\r\n>;\r\n\r\nexport type StorageParams<T> = {\r\n key: string;\r\n value?: T;\r\n engine?: Engine;\r\n _value?: T;\r\n defaultValue?: T;\r\n debounce?: number;\r\n onInit?(value: T): void;\r\n debounceFn?: any;\r\n onDebounce?(value: T): void;\r\n onSet?(value: T): void;\r\n set?: (value: T) => void;\r\n setValue?: (value: T) => void;\r\n reset?: () => void;\r\n listen?: (func?: (args: { key: string; value: any }) => void) => void;\r\n};\r\nconst memory = {};\r\n\r\nexport class StoragePlugin implements Store {\r\n sid = 'StoragePlugin';\r\n stype = \"Plugin\"\r\n autoObservable?: boolean = true;\r\n static engines = {\r\n memory: {\r\n name: 'memory',\r\n get(key) {\r\n return memory[key];\r\n },\r\n set(key, value) {\r\n return (memory[key] = value);\r\n },\r\n remove(key) {\r\n delete memory[key];\r\n return;\r\n },\r\n },\r\n localStorage: {\r\n name: 'localStorage',\r\n get(key) {\r\n return StoragePlugin.safeParse(globalThis.localStorage.getItem(key));\r\n },\r\n set(key, value) {\r\n return globalThis.localStorage.setItem(key, JSON.stringify(value));\r\n },\r\n remove(key) {\r\n return globalThis.localStorage.removeItem(key);\r\n },\r\n },\r\n // asyncStorage: {\r\n // name: 'asyncStorage',\r\n // get(key) {\r\n // return RootStore.Get(AsyncStorage).get(key);\r\n // },\r\n // set(key, value) {\r\n // return RootStore.Get(AsyncStorage).set(key, value);\r\n // },\r\n // remove(key) {\r\n // return RootStore.Get(AsyncStorage).remove(key);\r\n // },\r\n // },\r\n };\r\n engines = StoragePlugin.engines;\r\n // debounceFn: (val: any) => void;\r\n // data = {};\r\n dataMeta: Record<string, StorageParams<any>> = {};\r\n\r\n get dataGroup() {\r\n const tree = Object.values(this.dataMeta).reduce((p, c) => {\r\n const current = this.dataMeta[c.key];\r\n const path = c.key;\r\n const parentPath = path\r\n .split('.')\r\n .slice(0, path.length - 1)\r\n .join('.');\r\n const key = path.split('.').pop();\r\n if (!p[parentPath]) {\r\n const topPath = !parentPath.includes('.');\r\n _.set(p, parentPath + (topPath ? `.${key}` : ``), {\r\n ...current,\r\n toJSON() {\r\n return typeof current.value === 'object' ? JSON.stringify(toJS(current.value), null, 2) : current.value;\r\n },\r\n });\r\n }\r\n\r\n return p;\r\n }, {});\r\n\r\n return tree;\r\n }\r\n\r\n // StorageTools = observer(() => {\r\n // const collection = RootStore.Get(Collection<any>, { sid: 'StoragePlugin.current', args: { data: this.dataGroup } });\r\n // const data = collection.current as Record<string, StorageParams<any>>;\r\n\r\n // const dataConfig = Object.entries(data).reduce((p, [key, value]) => {\r\n // p[key] = {\r\n // title: `${key} (${value.engine.name})`,\r\n // };\r\n // return p;\r\n // }, {});\r\n\r\n // return (\r\n // <div className=\"h-full flex flex-col md:flex-row text-sm\">\r\n // <div className=\"w-full md:w-[300px] space-y-1 pr-2 md:border-r-[1px] border-gray-200 dark:border-gray-700 overflow-auto\">\r\n // {Object.keys(collection.data)\r\n // .sort((a, b) => a.length - b.length)\r\n // .map((i) => (\r\n // <div\r\n // key={i}\r\n // className={cn('px-2 rounded-md hover:bg-green-600 hover:text-white cursor-pointer', { 'bg-green-600 text-white': collection.key === i })}\r\n // onClick={() => collection.setKey(i)}\r\n // >\r\n // {i}\r\n // </div>\r\n // ))}\r\n // </div>\r\n // <div className=\"mt-4 w-full overflow-auto md:mt-0\">\r\n // <JSONForm\r\n // formData={{ data: JSON.parse(JSON.stringify(data, null, 2)) }}\r\n // formConfig={{\r\n // data: dataConfig,\r\n // }}\r\n // onChange={(v) => {\r\n // Object.entries(v.data).forEach(([key, value]) => {\r\n // data[key].set(StoragePlugin.safeParse(value));\r\n // });\r\n // return v;\r\n // }}\r\n // // onSet={(v) => {\r\n // // //TODO: only udpate changed filed\r\n // // Object.entries(v).forEach(([key, value]) => {\r\n // // data[key].set(StoragePlugin.safeParse(value));\r\n // // });\r\n // // return v;\r\n // // }}\r\n // />\r\n // </div>\r\n // </div>\r\n // );\r\n // });\r\n\r\n // devtools = {\r\n // panels: [\r\n // {\r\n // title: 'Storage',\r\n // render: this.StorageTools,\r\n // },\r\n // ],\r\n // };\r\n\r\n static safeParse(val: any) {\r\n try {\r\n return JSON.parse(val);\r\n } catch (error) {\r\n return val;\r\n }\r\n }\r\n\r\n set = ({ key, value, engine }: { key: string; value: any; engine?: Engine }) => {\r\n this.dataMeta[key]._value = value;\r\n const _engine = engine || this.dataMeta[key]?.engine || this.engines.memory;\r\n\r\n //@ts-ignore\r\n RootStore.init().events.emit(`storage.${key}.update`, { key, value });\r\n if (this.dataMeta[key].onSet) this.dataMeta[key].onSet(value);\r\n return _engine.set(key, value);\r\n };\r\n\r\n\r\n get = <T,>({ key, value, defaultValue, engine = this.engines.memory, ...other }: StorageParams<T>): StorageParams<T> => {\r\n if (typeof window == 'undefined' && engine.name == 'localStorage') {\r\n engine = this.engines.memory;\r\n }\r\n\r\n if (value && !defaultValue) {\r\n defaultValue = value\r\n }\r\n const that = this;\r\n if (!this.dataMeta[key]) {\r\n const exists = engine.get(key);\r\n if (engine.name == 'asyncStorage') {\r\n console.log('get', key, exists);\r\n }\r\n if (!exists) {\r\n engine.set(key, defaultValue);\r\n }\r\n const _value = engine.get(key);\r\n\r\n this.dataMeta[key] = makeAutoObservable({\r\n key,\r\n engine,\r\n defaultValue,\r\n ...other,\r\n _value,\r\n get value() {\r\n return that.dataMeta[key]._value;\r\n },\r\n set value(value) {\r\n that.set({ key, value });\r\n other.debounce && that.dataMeta[key].debounceFn(value)\r\n },\r\n set(value) {\r\n that.set({ key, value });\r\n other.debounce && that.dataMeta[key].debounceFn(value)\r\n },\r\n setValue(value) {\r\n that.set({ key, value });\r\n },\r\n reset() {\r\n that.set({ key, value: defaultValue });\r\n },\r\n toJSON() {\r\n return that.dataMeta[key]._value;\r\n },\r\n listen(func) {\r\n //@ts-ignore\r\n RootStore.init().events.on(`storage.${key}.update`, (args) => func(args));\r\n },\r\n debounceFn: _.debounce((value) => {\r\n other?.onDebounce(value);\r\n }, other.debounce)\r\n });\r\n if (this.dataMeta[key].onInit) {\r\n this.dataMeta[key].onInit(this.dataMeta[key].value);\r\n }\r\n }\r\n\r\n //@ts-ignore\r\n return this.dataMeta[key];\r\n };\r\n\r\n remove = ({ key, engine = this.engines.memory }: { key?: string; engine?: Engine }): void => {\r\n engine.remove(key);\r\n };\r\n\r\n static Get<T>(args: StorageParams<T>): StorageParams<T> {\r\n const storagePlugin = RootStore.Get(StoragePlugin);\r\n return storagePlugin.get(args);\r\n }\r\n\r\n static Input<T, U extends StorageParams<T>>(args: U): U {\r\n const storagePlugin = RootStore.Get(StoragePlugin);\r\n const data = storagePlugin.get(args);\r\n //@ts-ignore\r\n return observable({\r\n ...args,\r\n ...data,\r\n get value() {\r\n return data.value;\r\n },\r\n set value(value) {\r\n data.set(value);\r\n },\r\n onChange(e) {\r\n data.set(e.target.value);\r\n },\r\n });\r\n }\r\n\r\n static Custom<T, U extends StorageParams<T>>(args: U): U & StorageParams<T> {\r\n const storagePlugin = RootStore.Get(StoragePlugin);\r\n const { value, _value, ...others } = args;\r\n const data = storagePlugin.get(args);\r\n //@ts-ignore\r\n\r\n return observable({\r\n ...args,\r\n ...data,\r\n get value() {\r\n return data.value;\r\n },\r\n set value(value) {\r\n data.set(value);\r\n },\r\n onChange(e) {\r\n data.set(e.target.value);\r\n },\r\n });\r\n }\r\n\r\n constructor(args: Partial<StoragePlugin> = {}) {\r\n Object.assign(this, args);\r\n }\r\n}\r\n","import axios from \"axios\";\r\nimport { _ } from \"../../lib/lodash\";\r\nimport { RootStore } from \"../../store/root\";\r\nimport { Store } from \"../../store/standard/base\";\r\nimport { PromiseState } from \"../../store/standard/PromiseState\";\r\nimport { StoragePlugin } from \"./Storage\";\r\n\r\n\r\nexport const jwt = StoragePlugin.Get({\r\n key: \"asyncStorage.token\",\r\n value: \"\",\r\n engine: StoragePlugin.engines.localStorage,\r\n});\r\n\r\nexport class AsyncStorage implements Store {\r\n sid = \"AsyncStorage\";\r\n stype = \"Plugin\"\r\n url = `https://dappkit-async-api.deno.dev/project/${process.env.NEXT_PUBLIC_PROJECT_ID}`;\r\n forceUpdate = false;\r\n autoObservable?: boolean = true;\r\n\r\n data = new PromiseState({\r\n context: this,\r\n value: {},\r\n function: async () => {\r\n const res = await axios.get(this.url, {\r\n params: { forceUpdate: this.forceUpdate },\r\n });\r\n //@ts-ignore\r\n return { ...this.data.value, ...res.data };\r\n },\r\n }).on(\"data\", (data) => {\r\n this.syncStorage();\r\n });\r\n\r\n syncStorage() {\r\n const data = this.data.value;\r\n const storage = RootStore.Get(StoragePlugin);\r\n\r\n Object.keys(data).map((key) => {\r\n const value = data[key];\r\n const target = storage.dataMeta[key];\r\n if (target) {\r\n target.set(value);\r\n }\r\n });\r\n }\r\n\r\n // devtools = {\r\n // panels: [\r\n // {\r\n // title: \"AsyncStorage\",\r\n // render: observer(() => {\r\n\r\n // return (\r\n // <div className=\"h-full w-full overflow-auto\">\r\n // <Input\r\n // placeholder=\"Please enter your asyncStorage token here\"\r\n // value={jwt.value}\r\n // onChange={(e) => jwt.set(e.target.value)}\r\n // />\r\n // <JSONEditor\r\n // className=\"h-full\"\r\n // initialJson={JSON.stringify(toJS(this.data.value), null, 2)}\r\n // onChange={(data) => {\r\n // console.log(\"onChange\", data);\r\n // helper.deepMerge(this.data.value, data);\r\n // this.syncStorage();\r\n // }}\r\n // onSubmit={async (data) => {\r\n // if (!jwt.value) {\r\n // RootStore.Get(ToastPlugin).error(\r\n // \"Please enter your asyncStorage token first\",\r\n // );\r\n // } else {\r\n // if (!process.env.NEXT_PUBLIC_PROJECT_ID) {\r\n // RootStore.Get(ToastPlugin).error(\r\n // \"Please set your project id first\",\r\n // );\r\n // }\r\n // await axios.post(\r\n // `https://dappkit-async-api.deno.dev/update/${process.env.NEXT_PUBLIC_PROJECT_ID}`,\r\n // data,\r\n // {\r\n // headers: {\r\n // Authorization: `${jwt.value}`,\r\n // },\r\n // },\r\n // );\r\n // }\r\n // this.forceUpdate = true;\r\n // await this.data.wait({ call: true });\r\n // RootStore.Get(ToastPlugin).success(\"Update success\");\r\n // console.log(\"onSubmit\", data);\r\n // }}\r\n // />\r\n // </div>\r\n // );\r\n // }),\r\n // },\r\n // ],\r\n // };\r\n\r\n constructor(args: Partial<AsyncStorage> = {}) {\r\n Object.assign(this, args);\r\n }\r\n\r\n get(key) {\r\n return _.get(this.data.value, key);\r\n }\r\n\r\n async set(key, value) {\r\n _.set(this.data.value, key, value);\r\n }\r\n\r\n async remove(key) {\r\n _.remove(this.data.value, key);\r\n }\r\n\r\n onNewStore = ({\r\n rootStore,\r\n store,\r\n }: {\r\n rootStore: RootStore;\r\n store: Store;\r\n }) => {\r\n if (store.autoAsyncable) {\r\n this.makeAutoAsyncAble(store);\r\n }\r\n };\r\n\r\n async makeAutoAsyncAble(instance) {\r\n const data = await this.data.wait({ call: true });\r\n if (data[instance.sid]) {\r\n Object.assign(instance, data[instance.sid]);\r\n }\r\n }\r\n}\r\n","import { Store } from '../../../store/standard/base';\r\n\r\nexport class Collection<T = any> implements Store {\r\n sid = 'Collection';\r\n autoObservable = true;\r\n\r\n key: string;\r\n data: {\r\n [key: string]: T;\r\n } = {};\r\n constructor(args: Partial<Collection<T>>) {\r\n Object.assign(this, args);\r\n if (!this.key) {\r\n this.key = Object.keys(this.data)[0];\r\n }\r\n }\r\n get current(): T {\r\n return this.data[this.key];\r\n }\r\n\r\n setKey(key: string) {\r\n this.key = key;\r\n }\r\n setValue(key: string, value: T) {\r\n this.data[key] = value;\r\n }\r\n}\r\n","import React, { HTMLAttributeAnchorTarget } from \"react\";\r\nimport { _ } from \"../../lib/lodash\";\r\nimport { RootStore } from \"../../store\";\r\nimport { Store } from \"../../store/standard/base\";\r\n\r\nexport type JSONViewType = {\r\n className?: string;\r\n children?: any;\r\n data?: Record<string, JSONDataType>;\r\n datas?: Record<string, Record<string, JSONDataType> | JSONDataType[]>;\r\n uiConfig?: {\r\n type: string;\r\n className?: Record<string, string>;\r\n slots?: Record<string, any>;\r\n [key: string]: any;\r\n };\r\n uiConfigs?: Record<string, JSONViewType['uiConfig']>;\r\n};\r\n\r\nexport type JSONDataType = {\r\n title?: string;\r\n icon?: any;\r\n render?: any;\r\n className?: string;\r\n type?: 'divider' | 'checkbox' | 'label' | 'radio';\r\n shortcut?: string;\r\n disabled?: boolean;\r\n children?: Record<string, JSONDataType>;\r\n value?: any;\r\n link?: any;\r\n target?: HTMLAttributeAnchorTarget;\r\n needAuth?: boolean;\r\n events?: Record<string, any>;\r\n onChange?: (args: { e: any; v: any }) => void;\r\n onClick?: (args: { e: any; v: any }) => void;\r\n};\r\n\r\nexport class JSONViewPlugin implements Store {\r\n sid = 'JSONViewPlugin';\r\n autoObservable?: boolean = false;\r\n\r\n JSONView = {\r\n Test: {\r\n name: 'Test',\r\n render: () => <div>Test</div>,\r\n },\r\n };\r\n\r\n onNewStore({ rootStore, store }: { rootStore: RootStore<any>; store: Store }): void {\r\n this.crawl(store);\r\n }\r\n\r\n crawl(store: Store) {\r\n if (store?.JSONView) {\r\n this.JSONView = { ...this.JSONView, ...store.JSONView };\r\n }\r\n }\r\n\r\n static JSONView = (props: JSONViewType) => {\r\n const jsonviewplugin = RootStore.Get(JSONViewPlugin);\r\n\r\n return (\r\n <>\r\n {Object.keys(props.uiConfigs).map((key) => {\r\n const config = props.uiConfigs[key] as any;\r\n const data = _.get(props.datas, key);\r\n const Component = jsonviewplugin.JSONView[config.type].render;\r\n const rootStore = RootStore.init();\r\n Object.values(data).forEach((i: any) => {\r\n if (i.events) {\r\n Object.entries(i.events).forEach(([k, v]) => {\r\n i[k] = (args) => rootStore.events.emit(v as any, { ...args, action: k });\r\n });\r\n }\r\n });\r\n\r\n return <Component key={key} data={data} uiConfig={config} />;\r\n })}\r\n </>\r\n );\r\n };\r\n}"]}
package/dist/form.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import React$1, { Dispatch, SetStateAction, ReactNode } from 'react';
1
+ import React$1, { Dispatch, SetStateAction, JSX as JSX$1, ReactNode } from 'react';
2
2
  import { ButtonProps, TabsProps, CheckboxProps, SlotsToClasses, InputSlots, InputProps, SelectSlots, SelectProps, SelectedItems, DatePickerProps, ModalSlots } from '@nextui-org/react';
3
3
  import { UiSchema, RJSFSchema, WidgetProps, Widget } from '@rjsf/utils';
4
4
  import * as _rjsf_validator_ajv8_lib_validator from '@rjsf/validator-ajv8/lib/validator';
@@ -162,10 +162,10 @@ interface CheckboxWidgetProps extends WidgetProps {
162
162
  options: Options$6;
163
163
  }
164
164
  interface CheckboxWidgetUIOptions {
165
- "ui:widget": (props: CheckboxWidgetProps) => JSX.Element;
165
+ "ui:widget": (props: CheckboxWidgetProps) => JSX$1.Element;
166
166
  "ui:options": Options$6;
167
167
  }
168
- declare function CheckboxWidget({ onChange, options, label, value, disabled, uiSchema }: CheckboxWidgetProps): React$1.JSX.Element;
168
+ declare function CheckboxWidget({ onChange, options, label, value, disabled, uiSchema }: CheckboxWidgetProps): JSX$1.Element;
169
169
 
170
170
  type Options$5 = {
171
171
  editorHeight?: string;
@@ -189,10 +189,10 @@ interface EditorWidgetProps extends WidgetProps {
189
189
  options: Options$5;
190
190
  }
191
191
  type EditorWidgetUIOptions = {
192
- "ui:widget": (props: EditorWidgetProps) => JSX.Element;
192
+ "ui:widget": (props: EditorWidgetProps) => JSX$1.Element;
193
193
  "ui:options": Options$5;
194
194
  };
195
- declare const EditorWidget: ({ label, options, value, required, uiSchema, disabled, onChange }: EditorWidgetProps) => React$1.JSX.Element;
195
+ declare const EditorWidget: ({ label, options, value, required, uiSchema, disabled, onChange }: EditorWidgetProps) => JSX$1.Element;
196
196
 
197
197
  type Options$4 = {
198
198
  className?: string;
@@ -235,10 +235,10 @@ interface SelectWidgetProps extends WidgetProps {
235
235
  options: Options$3;
236
236
  }
237
237
  interface SelectWidgetUIOptions {
238
- "ui:widget": (props: SelectWidgetProps) => JSX.Element;
238
+ "ui:widget": (props: SelectWidgetProps) => JSX$1.Element;
239
239
  "ui:options": Options$3;
240
240
  }
241
- declare function SelectWidget(props: SelectWidgetProps): React$1.JSX.Element;
241
+ declare function SelectWidget(props: SelectWidgetProps): JSX$1.Element;
242
242
 
243
243
  type Options$2 = {
244
244
  className?: string;
@@ -258,10 +258,10 @@ interface MultipleSelectWidgetProps extends WidgetProps {
258
258
  options: Options$2;
259
259
  }
260
260
  interface MultipleSelectWidgetUIOptions {
261
- 'ui:widget': (props: MultipleSelectWidgetProps) => JSX.Element;
261
+ 'ui:widget': (props: MultipleSelectWidgetProps) => JSX$1.Element;
262
262
  'ui:options': Options$2;
263
263
  }
264
- declare function MultipleSelectWidget(props: MultipleSelectWidgetProps): React$1.JSX.Element;
264
+ declare function MultipleSelectWidget(props: MultipleSelectWidgetProps): JSX$1.Element;
265
265
 
266
266
  type Options$1 = {
267
267
  className?: string;
@@ -282,10 +282,10 @@ interface TextareaWidgetProps extends WidgetProps {
282
282
  options: Options$1;
283
283
  }
284
284
  interface TextareaWidgetUIOptions {
285
- 'ui:widget': (props: TextareaWidgetProps) => JSX.Element;
285
+ 'ui:widget': (props: TextareaWidgetProps) => JSX$1.Element;
286
286
  'ui:options': Options$1;
287
287
  }
288
- declare function TextareaWidget(props: TextareaWidgetProps): React$1.JSX.Element;
288
+ declare function TextareaWidget(props: TextareaWidgetProps): JSX$1.Element;
289
289
 
290
290
  type Options = {
291
291
  className?: string;
package/dist/form.mjs CHANGED
@@ -1,9 +1,9 @@
1
- import { getStyle } from './chunk-GKAU4P5I.mjs';
2
- import { useStore, RootStore } from './chunk-IDKGZ5T4.mjs';
3
- import { helper } from './chunk-R4N52NI2.mjs';
4
- import { _ } from './chunk-K7LFG5BA.mjs';
5
- import { cn } from './chunk-MPOMTIDB.mjs';
6
- import { __objRest, __spreadValues, __spreadProps } from './chunk-YITAUACR.mjs';
1
+ import { getStyle } from './chunk-R66SHRQE.mjs';
2
+ import { useStore, RootStore } from './chunk-KIS52LFU.mjs';
3
+ import { helper } from './chunk-7WJMHFRA.mjs';
4
+ import { _ } from './chunk-2PD23V7H.mjs';
5
+ import { cn } from './chunk-SPFKGNUY.mjs';
6
+ import { __objRest, __spreadValues, __spreadProps } from './chunk-6F7H4PAA.mjs';
7
7
  import React7, { useEffect, useMemo, useState, useRef, useCallback, createRef } from 'react';
8
8
  import { Modal, ModalContent, ModalHeader, ModalBody, Checkbox, Input, Select, SelectItem, Button, Textarea, DatePicker, Chip, Card, Tabs, Tab } from '@nextui-org/react';
9
9
  import { Check, ChevronUp, ChevronDown } from 'lucide-react';