@dappworks/kit 0.4.146 → 0.4.148
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/aiem.mjs +2 -2
- package/dist/aiem.mjs.map +1 -1
- package/dist/{chunk-RHDHN6R4.mjs → chunk-2WJE2UJN.mjs} +1 -4
- package/dist/chunk-2WJE2UJN.mjs.map +1 -0
- package/dist/{chunk-7FF4BCFW.mjs → chunk-AXL36W4Z.mjs} +3 -3
- package/dist/chunk-AXL36W4Z.mjs.map +1 -0
- package/dist/{chunk-WT2ARRCR.mjs → chunk-J5PZWR2P.mjs} +12 -7
- package/dist/chunk-J5PZWR2P.mjs.map +1 -0
- package/dist/{chunk-5SFAINN6.mjs → chunk-K73JTEJQ.mjs} +2 -2
- package/dist/{chunk-MGU3KYGC.mjs → chunk-K7LFG5BA.mjs} +1 -1
- package/dist/chunk-K7LFG5BA.mjs.map +1 -0
- package/dist/{chunk-Q3AD5RHQ.mjs → chunk-UPGWJHSO.mjs} +2 -2
- package/dist/{chunk-Q3AD5RHQ.mjs.map → chunk-UPGWJHSO.mjs.map} +1 -1
- package/dist/dev.mjs +2 -2
- package/dist/experimental.mjs +2 -2
- package/dist/experimental.mjs.map +1 -1
- package/dist/form.d.mts +40 -27
- package/dist/form.mjs +36 -55
- package/dist/form.mjs.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/dist/jsontable.mjs +3 -3
- package/dist/metrics.mjs +3 -3
- package/dist/plugins.mjs +2 -2
- package/dist/ui.d.mts +7 -10
- package/dist/ui.mjs +9 -4
- package/dist/ui.mjs.map +1 -1
- package/dist/utils.mjs +2 -2
- package/package.json +1 -1
- package/dist/chunk-7FF4BCFW.mjs.map +0 -1
- package/dist/chunk-MGU3KYGC.mjs.map +0 -1
- package/dist/chunk-RHDHN6R4.mjs.map +0 -1
- package/dist/chunk-WT2ARRCR.mjs.map +0 -1
- /package/dist/{chunk-5SFAINN6.mjs.map → chunk-K73JTEJQ.mjs.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/JSONTable/index.tsx","../components/ui/dropdown-menu.tsx"],"names":["React","sortableColumnsDefaultValue","columns","keys","sortedData","_a"],"mappings":"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","sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from 'react';\nimport {\n Card,\n Divider,\n Pagination as NextuiPagination,\n PaginationProps,\n SlotsToClasses,\n Spinner,\n SpinnerProps,\n Table,\n TableBody,\n TableCell,\n TableColumn,\n TableHeader,\n TableRow,\n TableSlots,\n} from '@nextui-org/react';\nimport { ChevronDown, ChevronUp, ChevronsUpDown } from \"lucide-react\";\nimport { observer } from \"mobx-react-lite\";\nimport { PaginationState } from \"../../store/standard/PaginationState\";\nimport { SkeletonBox } from \"../Common/SkeletonBox\";\nimport { _ } from \"../../lib/lodash\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../ui/dropdown-menu';\n\nexport type HeaderKeys<T extends Record<string, any>> = Array<keyof T | '$actions'>;\n\nexport type ColumnOptions<T> = {\n [key in keyof T]?: {\n label?: React.ReactNode;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n labelClassName?: string;\n valueClassName?: string;\n };\n} & {\n $actions?: {\n label?: React.ReactNode;\n hidden?: boolean;\n sortable?: boolean;\n sortKey?: string;\n order?: number;\n render?: (item: T) => any;\n labelClassName?: string;\n valueClassName?: string;\n };\n};\n\nexport type Column<T> = {\n key: string;\n label: React.ReactNode;\n render?: (item: T) => any;\n};\n\nexport type ExtendedTable<U> = {\n key: string;\n columns: Column<U>[];\n};\n\nexport type CardOptions = {\n boxClassName?: string;\n cardClassName?: string;\n itemClassName?: string;\n showDivider?: boolean;\n dividerClassName?: string;\n};\n\ntype LoadingOptions = {\n type?: 'skeleton' | 'spinner';\n skeleton?: {\n boxClassName?: string;\n skeletonClassName?: string;\n line?: number;\n };\n spinner?: {\n boxClassName?: string;\n spinnerProps?: SpinnerProps;\n text?: string;\n textClassName?: string;\n };\n};\n\ntype SortingUIOptions = {\n showDropdown?: boolean;\n dropdownTriggerBtnClassName?: string;\n dropdownContentClassName?: string;\n dropdownItemClassName?: string;\n titles?: {\n asc?: string;\n desc?: string;\n none?: string;\n };\n};\n\nexport interface JSONTableProps<T extends Record<string, any>> {\n className?: string;\n classNames?: SlotsToClasses<TableSlots>;\n rowKey?: string;\n dataSource: T[];\n headerKeys?: HeaderKeys<T>;\n columnOptions?: ColumnOptions<T>;\n isServerPaging?: boolean;\n pagination?: PaginationState;\n nextuiPaginationProps?: PaginationProps | {};\n onRowClick?: (item: T) => void;\n rowCss?: string | ((item: T) => string | undefined);\n asCard?: boolean;\n cardOptions?: CardOptions;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n isHeaderSticky?: boolean;\n sortingUIOptions?: SortingUIOptions;\n extendedTableOptions?: {\n key: keyof T;\n columnOptions: ColumnOptions<any>;\n }[];\n}\n\nexport const JSONTable = observer(<T extends Record<string, any>>(props: JSONTableProps<T>) => {\n const {\n className,\n classNames = {},\n dataSource,\n columnOptions,\n headerKeys,\n isServerPaging,\n pagination = new PaginationState({\n page: 1,\n limit: 8,\n }),\n nextuiPaginationProps = {},\n rowKey,\n onRowClick,\n rowCss,\n asCard = false,\n cardOptions = {\n boxClassName: '',\n cardClassName: '',\n itemClassName: '',\n showDivider: true,\n dividerClassName: '',\n },\n autoScrollToTop = false,\n emptyContent = 'No Data',\n isLoading = false,\n loadingOptions,\n loadingContent,\n isHeaderSticky = false,\n sortingUIOptions,\n extendedTableOptions = [],\n } = props;\n\n const tableBoxRef = useRef<HTMLElement>(null);\n\n const { columns, sortableColumnsDefaultValue } = useMemo(() => {\n const firstData = dataSource[0];\n\n const allKeys = firstData ? Object.keys(firstData) : [];\n const keys = headerKeys ? headerKeys : columnOptions ? allKeys.filter((key) => !columnOptions[key]?.hidden) : allKeys;\n if (!keys.includes('$actions') && columnOptions && columnOptions['$actions']) {\n keys.push('$actions');\n }\n\n const sortableColumnsDefaultValue: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n\n // @ts-ignore\n const columns: Column<T>[] = keys.map((key: string) => {\n const sortable = columnOptions?.[key]?.sortable;\n if (sortable) {\n sortableColumnsDefaultValue[key] = 'none';\n }\n return {\n key,\n label: columnOptions?.[key]?.label || (key === '$actions' ? '' : key),\n render: columnOptions?.[key]?.render,\n };\n });\n\n if (!headerKeys && columnOptions) {\n columns.sort((a, b) => {\n const aOrder = columnOptions[a.key]?.order || 0;\n const bOrder = columnOptions[b.key]?.order || 0;\n return bOrder - aOrder;\n });\n }\n\n const extendedTables = firstData\n ? extendedTableOptions\n .filter((item) => {\n return Array.isArray(firstData[item.key]);\n })\n .map((item) => {\n const index = columns.findIndex((c) => c.key === item.key);\n if (index > -1) {\n columns.splice(index, 1);\n }\n const keys = Object.keys(item.columnOptions);\n return {\n key: item.key as string,\n columns: keys.map((k) => {\n const option = item.columnOptions[k];\n return {\n key: k,\n label: option?.label || k,\n render: option?.render,\n };\n }),\n };\n })\n : [];\n\n return {\n columns,\n extendedTables,\n sortableColumnsDefaultValue,\n };\n }, [dataSource, columnOptions]);\n\n const [sortableColumnsMap, setSortableColumnsMap] = useState<{ [k: string]: 'asc' | 'desc' | 'none' }>({});\n const [sortedData, setSortedData] = useState<T[]>(dataSource);\n\n useEffect(() => {\n setSortableColumnsMap(sortableColumnsDefaultValue);\n }, [sortableColumnsDefaultValue]);\n\n useEffect(() => {\n setSortedData(dataSource);\n if (!isServerPaging) {\n pagination.setData({\n total: dataSource.length,\n });\n }\n }, [dataSource]);\n\n const data = isServerPaging ? sortedData : sortedData.slice(pagination.offset, pagination.offset + pagination.limit);\n\n if (asCard) {\n return (\n <CardUI\n className={className}\n rowKey={rowKey}\n data={data}\n columns={columns}\n columnOptions={columnOptions}\n cardOptions={cardOptions}\n pagination={pagination}\n nextuiPaginationProps={nextuiPaginationProps}\n onRowClick={onRowClick}\n autoScrollToTop={autoScrollToTop}\n emptyContent={emptyContent}\n isLoading={isLoading}\n loadingOptions={loadingOptions}\n loadingContent={loadingContent}\n />\n );\n }\n\n return (\n <>\n <Table\n removeWrapper\n isHeaderSticky={isHeaderSticky}\n className={cn('relative w-full overflow-auto h-[400px]', className)}\n classNames={classNames}\n ref={tableBoxRef}\n >\n <TableHeader columns={columns}>\n {columns.map((item) => (\n <TableColumn key={item.key}>\n <div className=\"flex items-center\">\n <span>{item.label}</span>\n {!!sortableColumnsMap[item.key] && (\n <SortingComponent\n sortingUIOptions={sortingUIOptions}\n columnOptions={columnOptions}\n sortableColumnsMap={sortableColumnsMap}\n item={item}\n onSort={({ type, key, sortKey }) => {\n const { sortableColumns, sortedData } = sortData({\n type,\n key,\n sortKey,\n sortableColumnsMap,\n dataSource,\n });\n setSortableColumnsMap(sortableColumns);\n setSortedData(sortedData);\n }}\n />\n )}\n </div>\n </TableColumn>\n ))}\n </TableHeader>\n {isLoading ? (\n <TableBody emptyContent={loadingContent || DefaultLoading({ loadingOptions })}>{[]}</TableBody>\n ) : data.length > 0 ? (\n <TableBody>\n {data.map((item, index) => {\n return (\n <TableRow\n key={rowKey ? item[rowKey] || index : index}\n className={cn('', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column) => {\n return <TableCell key={column.key}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</TableCell>;\n })}\n </TableRow>\n );\n })}\n </TableBody>\n ) : (\n <TableBody emptyContent={emptyContent}>{[]}</TableBody>\n )}\n </Table>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className=\"mt-2\"\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && tableBoxRef.current) {\n scrollIntoTop(tableBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </>\n );\n});\n\nfunction renderFieldValue(v: any) {\n if (typeof v == 'string' || typeof v == 'number') {\n return v;\n }\n if (v == null) {\n return null;\n }\n return JSON.stringify(v);\n}\n\nfunction sortData<T>({\n sortKey,\n key,\n type,\n sortableColumnsMap,\n dataSource,\n}: {\n sortKey: string | undefined;\n key: string;\n type: 'asc' | 'desc' | 'none';\n sortableColumnsMap: {\n [k: string]: 'asc' | 'desc' | 'none';\n };\n dataSource: T[];\n}) {\n const sortableColumns: { [k: string]: 'asc' | 'desc' | 'none' } = {};\n Object.keys(sortableColumnsMap).map((k) => {\n sortableColumns[k] = k === key ? type : 'none';\n });\n let sortedData = dataSource;\n if (type !== 'none') {\n const result = _.orderBy(\n dataSource,\n (o) => {\n const v = _.get(o, sortKey || key);\n if (v == null) {\n return type === 'desc' ? '' : v;\n }\n if (typeof v === 'string') {\n const _v = Number(v);\n if (isNaN(_v)) {\n return v.toLowerCase();\n } else {\n return _v;\n }\n }\n return v;\n },\n type,\n );\n sortedData = result;\n }\n return {\n sortableColumns,\n sortedData,\n };\n}\n\nfunction SortingComponent<T>({\n sortingUIOptions,\n columnOptions,\n sortableColumnsMap,\n item,\n onSort,\n}: {\n sortingUIOptions: SortingUIOptions;\n columnOptions?: ColumnOptions<T>;\n sortableColumnsMap: { [k: string]: 'asc' | 'desc' | 'none' };\n item: Column<T>;\n onSort: (e: { type: 'asc' | 'desc' | 'none'; key: string; sortKey: string }) => void;\n}) {\n if (sortingUIOptions?.showDropdown) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger>\n <button className={cn('outline-none p-1', sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === 'desc' && <ChevronDown size={14} />}\n {sortableColumnsMap[item.key] === 'asc' && <ChevronUp size={14} />}\n {sortableColumnsMap[item.key] === 'none' && <ChevronsUpDown size={14} />}\n </button>\n </DropdownMenuTrigger>\n <DropdownMenuContent className={cn('p-2 space-y-1 min-w-[4rem]', sortingUIOptions?.dropdownContentClassName)} collisionPadding={10} sideOffset={5}>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'asc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.asc || 'ASC'}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'desc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.desc || 'DESC'}\n </DropdownMenuItem>\n <DropdownMenuItem\n className={cn('text-xs font-bold cursor-pointer', sortingUIOptions?.dropdownItemClassName)}\n onClick={() => {\n onSort({\n type: 'none',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n >\n {sortingUIOptions?.titles?.none || 'NONE'}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n );\n }\n\n return (\n <button className={cn('outline-none p-1', sortingUIOptions?.dropdownTriggerBtnClassName)}>\n {sortableColumnsMap[item.key] === 'none' && (\n <ChevronsUpDown\n size={14}\n onClick={() => {\n onSort({\n type: 'desc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === 'desc' && (\n <ChevronDown\n size={14}\n onClick={() => {\n onSort({\n type: 'asc',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n {sortableColumnsMap[item.key] === 'asc' && (\n <ChevronUp\n size={14}\n onClick={() => {\n onSort({\n type: 'none',\n key: item.key,\n sortKey: columnOptions?.[item.key]?.sortKey,\n });\n }}\n />\n )}\n </button>\n );\n}\n\nfunction CardUI<T>({\n className,\n data,\n columns,\n columnOptions,\n rowKey,\n cardOptions,\n pagination,\n nextuiPaginationProps,\n onRowClick,\n autoScrollToTop,\n emptyContent,\n isLoading,\n loadingOptions,\n loadingContent,\n}: {\n className?: string;\n data: T[];\n columns: Column<T>[];\n columnOptions?: ColumnOptions<T>;\n rowKey?: string;\n cardOptions?: CardOptions;\n pagination: PaginationState;\n nextuiPaginationProps: PaginationProps | {};\n onRowClick?: (item: T) => void;\n autoScrollToTop?: boolean;\n emptyContent?: React.ReactNode;\n isLoading?: boolean;\n loadingOptions?: LoadingOptions;\n loadingContent?: React.ReactNode;\n}) {\n const cardBoxRef = useRef<HTMLDivElement>(null);\n return (\n <div className={className} ref={cardBoxRef}>\n <div className={cn('space-y-2', cardOptions?.boxClassName)}>\n {isLoading ? (\n loadingContent ? (\n <Card className={cn('w-full h-40 flex flex-col justify-center items-center p-4 shadow-sm text-foreground-400', cardOptions?.cardClassName)}>{loadingContent}</Card>\n ) : (\n <DefaultLoading loadingOptions={loadingOptions} />\n )\n ) : data.length > 0 ? (\n data.map((item, index) => {\n return (\n <Card\n key={rowKey ? item[rowKey] || index : index}\n className={cn('w-full shadow-sm p-4', cardOptions?.cardClassName)}\n isPressable={!!onRowClick}\n onPress={() => {\n onRowClick?.(item);\n }}\n >\n {columns.map((column, i) => {\n const option = columnOptions?.[column.key];\n return (\n <div className=\"w-full\" key={column.key}>\n <div className={cn('w-full', cardOptions?.itemClassName)}>\n <div className={cn('font-meidum text-xs text-foreground-400', option?.labelClassName)}>{column.label}</div>\n <div className={cn('text-xs', option?.valueClassName)}>{column.render ? column.render(item) : renderFieldValue(item[column.key])}</div>\n </div>\n {cardOptions?.showDivider && i !== columns.length - 1 && <Divider className={cn('my-2', cardOptions?.dividerClassName)} />}\n </div>\n );\n })}\n </Card>\n );\n })\n ) : (\n <Card className={cn('w-full h-40 flex flex-col justify-center items-center p-4 shadow-sm text-foreground-400', cardOptions?.cardClassName)}>{emptyContent}</Card>\n )}\n </div>\n {pagination.total > pagination.limit && (\n <div className=\"flex justify-center\">\n <NextuiPagination\n className='mt-2'\n showControls\n showShadow\n size=\"sm\"\n radius=\"sm\"\n color=\"primary\"\n initialPage={1}\n total={Math.ceil(pagination.total / pagination.limit)}\n page={pagination.page}\n onChange={(currentPage) => {\n pagination.setData({\n page: currentPage,\n });\n if (autoScrollToTop && cardBoxRef.current) {\n scrollIntoTop(cardBoxRef.current);\n }\n }}\n {...nextuiPaginationProps}\n />\n </div>\n )}\n </div>\n );\n}\n\nfunction DefaultLoading({ loadingOptions }: { loadingOptions?: LoadingOptions }) {\n const type = loadingOptions?.type || 'skeleton';\n const skeletonOptions = loadingOptions?.skeleton;\n const spinnerOptions = loadingOptions?.spinner;\n const spinnerProps = spinnerOptions?.spinnerProps || {};\n\n if (type === 'skeleton') {\n return <SkeletonBox className={cn('mt-2 flex-col', skeletonOptions?.boxClassName)} skClassName={cn('h-[30px] rounded', skeletonOptions?.skeletonClassName)} line={skeletonOptions?.line || 5} />;\n }\n\n return (\n <div className={cn('w-full h-[100px] flex justify-center items-center', spinnerOptions?.boxClassName)}>\n <Spinner size=\"sm\" color=\"primary\" {...spinnerProps} />\n <div className={cn('ml-2 text-[#64748B] text-sm', spinnerOptions?.textClassName)}>{spinnerOptions?.text || 'Loading...'}</div>\n </div>\n );\n}\n\nfunction scrollIntoTop(target: HTMLElement) {\n if (target) {\n const { top } = target.getBoundingClientRect();\n window.scrollTo({\n top: top + window.scrollY - 100,\n behavior: 'smooth',\n });\n }\n}\n\nfunction CollapseBody<T>({\n data,\n rowKey,\n columns,\n extendedTables,\n rowCss,\n}: {\n data: T[];\n rowKey?: string;\n columns: Column<T>[];\n extendedTables: ExtendedTable<any>[];\n rowCss?: string | ((item: T) => string | undefined);\n}) {\n return (\n <TableBody>\n {data.map((item, index) => {\n return <CollapseBodyRow key={rowKey ? item[rowKey] || index : index} item={item} columns={columns} extendedTables={extendedTables} rowCss={rowCss} />;\n })}\n </TableBody>\n );\n}\n\nfunction CollapseBodyRow<T>({ item, columns, extendedTables, rowCss }: { item: T; columns: Column<T>[]; extendedTables: ExtendedTable<any>[]; rowCss?: string | ((item: T) => string | undefined) }) {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <TableRow\n className={cn('text-xs cursor-pointer hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]', typeof rowCss === 'function' ? rowCss(item) : rowCss)}\n onClick={(e: any) => {\n const { nodeName } = e.target;\n if (nodeName === 'TD' || nodeName === 'svg') {\n setIsOpen((v) => !v);\n }\n }}\n >\n {columns.map((column) => {\n return (\n <TableCell key={column.key} className=\"max-w-[200px] overflow-auto\">\n {column.render ? column.render(item) : renderFieldValue(item[column.key])}\n </TableCell>\n );\n })}\n </TableRow>\n <TableRow className={cn(isOpen ? 'table-row' : 'hidden')}>\n <TableCell colSpan={columns.length}>\n {extendedTables.map((ex) => {\n const exColumns = ex.columns;\n const exRow = item[ex.key];\n return (\n <Table className=\"mt-[10px]\" key={ex.key}>\n <TableHeader>\n {exColumns.map((exC) => {\n return (\n <TableColumn key={exC.key} className=\"text-xs text-[#64748B] dark:text-gray-300\">\n {exC.label}\n </TableColumn>\n );\n })}\n </TableHeader>\n <TableBody>\n {exRow.map((exItem) => (\n <TableRow className=\"text-xs hover:bg-[#f6f6f9] dark:hover:bg-[#19191c]\" key={exItem.key}>\n {exColumns.map((exC) => {\n return (\n <TableCell key={exC.key} className=\"max-w-[200px] overflow-auto\">\n {exC.render\n ? exC.render({\n ...exItem,\n $parent: item,\n })\n : renderFieldValue(exItem[exC.key])}\n </TableCell>\n );\n })}\n </TableRow>\n ))}\n </TableBody>\n </Table>\n );\n })}\n </TableCell>\n </TableRow>\n </>\n )\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport { Check, ChevronRight, Circle } from \"lucide-react\"\n\nimport { cn } from \"../../lib/utils\";\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuArrow = DropdownMenuPrimitive.Arrow\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-md bg-white dark:bg-[#18181B] border dark:border-none p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-1 data-[side=left]:slide-in-from-right-1 data-[side=right]:slide-in-from-left-1 data-[side=top]:slide-in-from-bottom-1\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-[8rem] overflow-hidden rounded-lg bg-white dark:bg-[#18181B] border dark:border-[#3e3e3e] p-1 text-popover-foreground shadow-md animate-in data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n DropdownMenuArrow,\n}\n"]}
|
|
@@ -2,18 +2,23 @@ import { cn } from './chunk-WYGQ3Y4R.mjs';
|
|
|
2
2
|
import { Skeleton } from '@nextui-org/react';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
|
|
5
|
-
var SkeletonBox = ({
|
|
5
|
+
var SkeletonBox = ({
|
|
6
|
+
line,
|
|
7
|
+
className,
|
|
8
|
+
skClassName,
|
|
9
|
+
skClassNames = {
|
|
10
|
+
base: "transition-background !duration-900 before:transition-opacity before:!duration-900",
|
|
11
|
+
content: "transition-opacity motion-reduce:transition-none !duration-900"
|
|
12
|
+
}
|
|
13
|
+
}) => {
|
|
6
14
|
const lineCamp = [...new Array(line || 1).keys()];
|
|
7
15
|
return /* @__PURE__ */ React.createElement("div", { className: cn("flex items-center gap-4", className) }, lineCamp.map((_, index) => {
|
|
8
16
|
return /* @__PURE__ */ React.createElement(
|
|
9
17
|
Skeleton,
|
|
10
18
|
{
|
|
11
19
|
key: index,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
content: "transition-opacity motion-reduce:transition-none !duration-700"
|
|
15
|
-
},
|
|
16
|
-
className: cn("w-full h-10", skClassName)
|
|
20
|
+
className: cn("w-full h-10", skClassName),
|
|
21
|
+
classNames: skClassNames
|
|
17
22
|
}
|
|
18
23
|
);
|
|
19
24
|
}));
|
|
@@ -21,4 +26,4 @@ var SkeletonBox = ({ line, skClassName, className }) => {
|
|
|
21
26
|
|
|
22
27
|
export { SkeletonBox };
|
|
23
28
|
//# sourceMappingURL=out.js.map
|
|
24
|
-
//# sourceMappingURL=chunk-
|
|
29
|
+
//# sourceMappingURL=chunk-J5PZWR2P.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../components/Common/SkeletonBox/index.tsx"],"names":[],"mappings":";;;;;AAAA,SAAS,gBAAgC;AACzC,OAAO,WAAW;AAGX,IAAM,cAAc,CAAC;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA,eAAe;AAAA,IACb,MAAM;AAAA,IACN,SAAS;AAAA,EACX;AACF,MAKM;AACJ,QAAM,WAAW,CAAC,GAAG,IAAI,MAAM,QAAQ,CAAC,EAAE,KAAK,CAAC;AAChD,SACE,oCAAC,SAAI,WAAW,GAAG,2BAA2B,SAAS,KACpD,SAAS,IAAI,CAAC,GAAG,UAAU;AAC1B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,KAAK;AAAA,QACL,WAAW,GAAG,eAAe,WAAW;AAAA,QACxC,YAAY;AAAA;AAAA,IACd;AAAA,EAEJ,CAAC,CACH;AAEJ","sourcesContent":["import { Skeleton, SlotsToClasses } from '@nextui-org/react';\nimport React from 'react';\nimport { cn } from '../../../lib/utils';\n\nexport const SkeletonBox = ({\n line,\n className,\n skClassName,\n skClassNames = {\n base: 'transition-background !duration-900 before:transition-opacity before:!duration-900',\n content: 'transition-opacity motion-reduce:transition-none !duration-900',\n }\n}: {\n line?: number;\n className?: string;\n skClassName?: string;\n skClassNames?: SlotsToClasses<\"base\" | \"content\">\n}) => {\n const lineCamp = [...new Array(line || 1).keys()];\n return (\n <div className={cn('flex items-center gap-4', className)}>\n {lineCamp.map((_, index) => {\n return (\n <Skeleton\n key={index}\n className={cn('w-full h-10', skClassName)}\n classNames={skClassNames}\n />\n );\n })}\n </div>\n );\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ } from './chunk-
|
|
1
|
+
import { _ } from './chunk-K7LFG5BA.mjs';
|
|
2
2
|
|
|
3
3
|
// themes/default.json
|
|
4
4
|
var default_default = {
|
|
@@ -101,4 +101,4 @@ var getStyle = (theme, key) => {
|
|
|
101
101
|
|
|
102
102
|
export { getStyle };
|
|
103
103
|
//# sourceMappingURL=out.js.map
|
|
104
|
-
//# sourceMappingURL=chunk-
|
|
104
|
+
//# sourceMappingURL=chunk-K73JTEJQ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../lib/lodash.ts"],"names":[],"mappings":";AAAA,SAAS,UAAU,UAAU,MAAM,aAAa,QAAQ,OAAO,OAAO,WAAW,WAAW,SAAS,KAAK,KAAK,QAAQ,OAAO,SAAS,UAAU,SAAS,KAAK,WAAW;AAEnK,IAAM,IAAI;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF","sourcesContent":["import { throttle, debounce, each, flattenDeep, omitBy, isNil, keyBy, mergeWith, cloneDeep, groupBy, get, set, remove, merge, isEqual, uniqWith, orderBy, map, zip } from \"lodash-es\";\n\nexport const _ = {\n throttle,\n debounce,\n each,\n flattenDeep,\n omitBy,\n isNil,\n keyBy,\n mergeWith,\n cloneDeep,\n groupBy,\n get,\n set,\n remove,\n merge,\n isEqual,\n uniqWith,\n orderBy,\n map,\n zip,\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ } from './chunk-
|
|
1
|
+
import { _ } from './chunk-K7LFG5BA.mjs';
|
|
2
2
|
import BN, { BigNumber } from 'bignumber.js';
|
|
3
3
|
import JSONFormat from 'json-format';
|
|
4
4
|
import copy from 'copy-to-clipboard';
|
|
@@ -317,4 +317,4 @@ var helper = {
|
|
|
317
317
|
|
|
318
318
|
export { helper };
|
|
319
319
|
//# sourceMappingURL=out.js.map
|
|
320
|
-
//# sourceMappingURL=chunk-
|
|
320
|
+
//# sourceMappingURL=chunk-UPGWJHSO.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import BN, { BigNumber } from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from \"numeral\";\nimport { from } from \"@iotexproject/iotex-address-ts\";\n\nconst valMap = {\n undefined: \"\",\n null: \"\",\n false: false,\n};\n\nexport const helper = {\n env: {\n isIopayMobile: () => navigator.userAgent && (navigator.userAgent.includes(\"IoPayAndroid\") || navigator.userAgent.includes(\"IoPayiOs\")),\n isBrowser: () => typeof window === \"object\",\n onBrowser(func) {\n if (this.isBrowser()) {\n func();\n }\n },\n },\n promise: {\n async sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n async runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]> {\n return promise.then<[null, T]>((data: T) => [null, data]).catch<[U, null]>((err) => [err, null]);\n },\n },\n object: {\n crawlObject(object, options) {\n const newObj = JSON.parse(JSON.stringify(object));\n return helper.object.crawl(newObj, options);\n },\n crawl(object, options) {\n Object.keys(object).forEach((i) => {\n if (typeof object[i] === \"object\") {\n helper.object.crawl(object[i], options);\n } else {\n const handler = options[typeof object[i]];\n if (handler) {\n object[i] = handler(object[i]);\n }\n }\n });\n return object;\n },\n },\n json: {\n isJsonString(str: string) {\n if (!str || typeof str !== \"string\") return false;\n if (!str?.includes(\"{\")) return false;\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n },\n safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n },\n },\n deepAssign(target, ...sources) {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n let descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor && descriptor?.get) {\n return Object.defineProperty(target, key, descriptor);\n }\n const targetValue = target[key];\n let sourceValue = source[key];\n if (helper.isObject(targetValue) && helper.isObject(sourceValue)) {\n try {\n target[key] = helper.deepAssign(targetValue, sourceValue);\n } catch (e) {\n target[key] = Object.assign(targetValue, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n });\n });\n return target;\n },\n isObject(value) {\n return value != null && typeof value === \"object\";\n },\n deepMerge(obj, newObj) {\n const newVal = _.mergeWith(obj, newObj, (...args) => {\n const [objValue, srcValue] = args;\n if (typeof srcValue === \"object\") {\n return helper.deepMerge(objValue, srcValue);\n }\n return srcValue || valMap[srcValue];\n });\n return newVal;\n },\n img: {\n parse(src: string | undefined) {\n if (!src) return \"/img-404.svg\";\n if (src?.startsWith(\"ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + src.split(\"://\")[1];\n }\n return src;\n },\n },\n string: {\n copy(str: string) {\n copy(str);\n },\n fristUpper(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n firstUpperCase(str: string) {\n return str.replace(/^\\S/, (s) => s.toUpperCase());\n },\n toFixString(str, length) {\n if (str && str.length > length) {\n return str.substr(0, length) + \"...\";\n } else {\n return str;\n }\n },\n truncate(fullStr = \"\", strLen, separator) {\n if (fullStr.length <= strLen) return fullStr;\n\n separator = separator || \"...\";\n\n var sepLen = separator.length,\n charsToShow = strLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2);\n\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n },\n validAbi(abi: string): { abi: any[]; address: string } {\n try {\n JSON.parse(abi);\n const _abi = helper.json.safeParse(abi);\n if (!_abi) {\n return { abi: [], address: \"\" };\n }\n if (Array.isArray(_abi)) {\n return { abi: _abi, address: \"\" };\n } else if (_abi.abi && _abi.address) {\n return { abi: _abi.abi, address: _abi.address };\n } else if (_abi.abi && !_abi.addresses) {\n return { abi: _abi.abi, address: \"\" };\n }\n return { abi: [], address: \"\" };\n } catch (error) {\n return { abi: [], address: \"\" };\n }\n },\n random(count: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let result = \"\";\n for (let i = 0; i < count; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n },\n download: {\n downloadByBlob(name: string, blob: Blob) {\n const a = document.createElement(\"a\");\n const href = window.URL.createObjectURL(blob);\n a.href = href;\n a.download = name;\n a.click();\n },\n downloadJSON(name: string, jsonObj: object) {\n try {\n const jsonStr: string = JSONFormat(jsonObj);\n const blob = new Blob([jsonStr], { type: \"application/json\" });\n this.downloadByBlob(name + \".json\", blob);\n } catch (error) {\n console.error(error);\n }\n },\n },\n number: {\n countNonZeroNumbers: (str: string) => {\n let index = 0;\n const length = str.length;\n for (; index < length && (str[index] === \"0\" || str[index] === \".\"); index += 1);\n return length - index - Number(str.includes(\".\"));\n },\n numberWithCommas(num: number) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n getBN: (value: number | string | BN) => {\n return value instanceof BN ? value : typeof value === \"string\" ? new BN(Number(value)) : new BN(value);\n },\n toPrecisionFloor: (str: number | string, options?: { decimals?: number; format?: string; toLocalString?: boolean }) => {\n const { decimals = 6, format = \"\", toLocalString = false } = options || {};\n if (!str || isNaN(Number(str))) return \"\";\n\n if (helper.number.countNonZeroNumbers(String(str)) <= decimals) return String(str);\n const numStr = new BN(str).toFixed();\n let result = \"\";\n let index = 0;\n const numLength = numStr.length;\n\n for (; numStr[index] === \"0\" && index < numLength; index += 1);\n\n if (index === numLength) return \"0\";\n\n if (numStr[index] === \".\") {\n // number < 0\n result = \"0\";\n for (; (numStr[index] === \"0\" || numStr[index] === \".\") && index < numLength; index += 1) {\n result = result + numStr[index];\n }\n }\n let resultNumLength = 0;\n for (; index < numLength && (resultNumLength < decimals || !result.includes(\".\")); index += 1) {\n result = result + numStr[index];\n\n if (numStr[index] !== \".\") resultNumLength += 1;\n }\n if (format) {\n return numeral(Number(result)).format(format);\n }\n\n if (toLocalString) {\n return helper.number.numberWithCommas(Number(new BN(result).toFixed()));\n }\n\n return new BN(result).toFixed();\n },\n\n //format: '0,0'\n warpBigNumber(value: string, decimals = 18, options?: { format?: string; fallback?: string; min?: number }) {\n const { format = \"0.0\", fallback = \"0.000\", min } = options || {};\n if (!value) {\n return {\n value: \"...\",\n format: \"...\",\n originFormat: \"...\",\n decimals: \"0\",\n isZero: true,\n };\n }\n const BigNumberResponse = { value: new BigNumber(value), decimals }\n return {\n value: BigNumberResponse.value.toFixed(0),\n originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),\n format: helper.number.numberFormat(BigNumberResponse.value.div(10 ** decimals).toFixed(), format, { fallback, min }),\n decimals: String(BigNumberResponse.decimals),\n isZero: BigNumberResponse.value.isZero(),\n };\n },\n //http://numeraljs.com/ format params does not need to deal with decimal places\n //format: '$0,0' '0a' '0,0' '0,0$'\n numberFormat(str: string | number, format: string = \"0,0\", options: { min?: number; fallback?: string } = {}): string {\n const { fallback = \"0.00\" } = options || {};\n\n if (!str || isNaN(Number(str))) return fallback;\n const numStr = new BigNumber(str).toFixed();\n const countNonZeroNumbers = (_str: string) => {\n const decimalPointIndex = _str.indexOf(\".\");\n if (decimalPointIndex === -1) {\n return 0;\n }\n const decimalPart = _str.substring(decimalPointIndex + 1);\n let trailingZerosCount = 0;\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === \"0\") {\n trailingZerosCount++;\n } else {\n break;\n }\n }\n return trailingZerosCount;\n };\n\n const fractionDigits = countNonZeroNumbers(format);\n const numberFractionDigits = countNonZeroNumbers(numStr);\n if (options?.min) {\n if (new BigNumber(numStr).isLessThan(new BigNumber(options?.min || 0))) {\n return `< ${numeral(options?.min).format(format)}`;\n }\n }\n const fullStr = new BigNumber(numStr).toFixed();\n let preStr = numeral(fullStr.split(\".\")[0]).format(format.split(\".\")[0]);\n const fractionStr = fullStr.split(\".\")?.[1]?.slice(0, fractionDigits + numberFractionDigits);\n\n if (numberFractionDigits >= fractionDigits) {\n return (preStr + \".\" + fractionStr).replace(/\\.?0+$/, \"\");\n }\n\n if (fractionStr?.[fractionDigits - 1] == \"9\") {\n return (preStr + \".\" + fractionStr.slice(0, fractionDigits - 1) + \"9\").replace(/\\.?0+$/, \"\");\n }\n\n const resultStr = numeral(new BigNumber(numStr).toString()).format(format);\n return resultStr.replace(/\\.?0+$/, \"\");\n },\n },\n address: {\n convertAddress: (addressMode: \"io\" | \"0x\", address: string = \"\"): string => {\n try {\n if (addressMode == \"0x\" && helper.address.validateIoAddress(address)) {\n return from(address).stringEth();\n }\n if (addressMode == \"io\" && helper.address.validateEthAddress(address)) {\n return from(address).string();\n }\n } catch (error) { }\n return address;\n },\n validateEthAddress: (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address),\n validateIoAddress: (address: string) => /^io[a-zA-Z0-9]{39}$/.test(address),\n validateAddress: (address: string) => helper.address.validateEthAddress(address) || helper.address.validateIoAddress(address),\n },\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../lib/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import BN, { BigNumber } from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from \"numeral\";\nimport { from } from \"@iotexproject/iotex-address-ts\";\n\nconst valMap = {\n undefined: \"\",\n null: \"\",\n false: false,\n};\n\nexport const helper = {\n env: {\n isIopayMobile: () => navigator.userAgent && (navigator.userAgent.includes(\"IoPayAndroid\") || navigator.userAgent.includes(\"IoPayiOs\")),\n isBrowser: () => typeof window === \"object\",\n onBrowser(func) {\n if (this.isBrowser()) {\n func();\n }\n },\n },\n promise: {\n async sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n },\n async runAsync<T, U = Error>(promise: Promise<T>): Promise<[U | null, T | null]> {\n return promise.then<[null, T]>((data: T) => [null, data]).catch<[U, null]>((err) => [err, null]);\n },\n },\n object: {\n crawlObject(object, options) {\n const newObj = JSON.parse(JSON.stringify(object));\n return helper.object.crawl(newObj, options);\n },\n crawl(object, options) {\n Object.keys(object).forEach((i) => {\n if (typeof object[i] === \"object\") {\n helper.object.crawl(object[i], options);\n } else {\n const handler = options[typeof object[i]];\n if (handler) {\n object[i] = handler(object[i]);\n }\n }\n });\n return object;\n },\n },\n json: {\n isJsonString(str: string) {\n if (!str || typeof str !== \"string\") return false;\n if (!str?.includes(\"{\")) return false;\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n },\n safeParse(val: any) {\n try {\n return JSON.parse(val);\n } catch (error) {\n return val;\n }\n },\n },\n deepAssign(target, ...sources) {\n sources.forEach((source) => {\n Object.keys(source).forEach((key) => {\n let descriptor = Object.getOwnPropertyDescriptor(source, key);\n if (descriptor && descriptor?.get) {\n return Object.defineProperty(target, key, descriptor);\n }\n const targetValue = target[key];\n let sourceValue = source[key];\n if (helper.isObject(targetValue) && helper.isObject(sourceValue)) {\n try {\n target[key] = helper.deepAssign(targetValue, sourceValue);\n } catch (e) {\n target[key] = Object.assign(targetValue, sourceValue);\n }\n } else {\n target[key] = sourceValue;\n }\n });\n });\n return target;\n },\n isObject(value) {\n return value != null && typeof value === \"object\";\n },\n deepMerge(obj, newObj) {\n const newVal = _.mergeWith(obj, newObj, (...args) => {\n const [objValue, srcValue] = args;\n if (typeof srcValue === \"object\") {\n return helper.deepMerge(objValue, srcValue);\n }\n return srcValue || valMap[srcValue];\n });\n return newVal;\n },\n img: {\n parse(src: string | undefined) {\n if (!src) return \"/img-404.svg\";\n if (src?.startsWith(\"ipfs\")) {\n return \"https://ipfs.io/ipfs/\" + src.split(\"://\")[1];\n }\n return src;\n },\n },\n string: {\n copy(str: string) {\n copy(str);\n },\n fristUpper(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n firstUpperCase(str: string) {\n return str.replace(/^\\S/, (s) => s.toUpperCase());\n },\n toFixString(str, length) {\n if (str && str.length > length) {\n return str.substr(0, length) + \"...\";\n } else {\n return str;\n }\n },\n truncate(fullStr = \"\", strLen, separator) {\n if (fullStr.length <= strLen) return fullStr;\n\n separator = separator || \"...\";\n\n var sepLen = separator.length,\n charsToShow = strLen - sepLen,\n frontChars = Math.ceil(charsToShow / 2),\n backChars = Math.floor(charsToShow / 2);\n\n return fullStr.substr(0, frontChars) + separator + fullStr.substr(fullStr.length - backChars);\n },\n validAbi(abi: string): { abi: any[]; address: string } {\n try {\n JSON.parse(abi);\n const _abi = helper.json.safeParse(abi);\n if (!_abi) {\n return { abi: [], address: \"\" };\n }\n if (Array.isArray(_abi)) {\n return { abi: _abi, address: \"\" };\n } else if (_abi.abi && _abi.address) {\n return { abi: _abi.abi, address: _abi.address };\n } else if (_abi.abi && !_abi.addresses) {\n return { abi: _abi.abi, address: \"\" };\n }\n return { abi: [], address: \"\" };\n } catch (error) {\n return { abi: [], address: \"\" };\n }\n },\n random(count: number) {\n const chars = \"abcdefghijklmnopqrstuvwxyz\";\n let result = \"\";\n for (let i = 0; i < count; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return result;\n },\n },\n download: {\n downloadByBlob(name: string, blob: Blob) {\n const a = document.createElement(\"a\");\n const href = window.URL.createObjectURL(blob);\n a.href = href;\n a.download = name;\n a.click();\n },\n downloadJSON(name: string, jsonObj: object) {\n try {\n const jsonStr: string = JSONFormat(jsonObj);\n const blob = new Blob([jsonStr], { type: \"application/json\" });\n this.downloadByBlob(name + \".json\", blob);\n } catch (error) {\n console.error(error);\n }\n },\n },\n number: {\n countNonZeroNumbers: (str: string) => {\n let index = 0;\n const length = str.length;\n for (; index < length && (str[index] === \"0\" || str[index] === \".\"); index += 1);\n return length - index - Number(str.includes(\".\"));\n },\n numberWithCommas(num: number) {\n return num.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n getBN: (value: number | string | BN) => {\n return value instanceof BN ? value : typeof value === \"string\" ? new BN(Number(value)) : new BN(value);\n },\n toPrecisionFloor: (str: number | string, options?: { decimals?: number; format?: string; toLocalString?: boolean }) => {\n const { decimals = 6, format = \"\", toLocalString = false } = options || {};\n if (!str || isNaN(Number(str))) return \"\";\n\n if (helper.number.countNonZeroNumbers(String(str)) <= decimals) return String(str);\n const numStr = new BN(str).toFixed();\n let result = \"\";\n let index = 0;\n const numLength = numStr.length;\n\n for (; numStr[index] === \"0\" && index < numLength; index += 1);\n\n if (index === numLength) return \"0\";\n\n if (numStr[index] === \".\") {\n // number < 0\n result = \"0\";\n for (; (numStr[index] === \"0\" || numStr[index] === \".\") && index < numLength; index += 1) {\n result = result + numStr[index];\n }\n }\n let resultNumLength = 0;\n for (; index < numLength && (resultNumLength < decimals || !result.includes(\".\")); index += 1) {\n result = result + numStr[index];\n\n if (numStr[index] !== \".\") resultNumLength += 1;\n }\n if (format) {\n return numeral(Number(result)).format(format);\n }\n\n if (toLocalString) {\n return helper.number.numberWithCommas(Number(new BN(result).toFixed()));\n }\n\n return new BN(result).toFixed();\n },\n\n //format: '0,0'\n warpBigNumber(value: string, decimals = 18, options?: { format?: string; fallback?: string; min?: number }) {\n const { format = \"0.0\", fallback = \"0.000\", min } = options || {};\n if (!value) {\n return {\n value: \"...\",\n format: \"...\",\n originFormat: \"...\",\n decimals: \"0\",\n isZero: true,\n };\n }\n const BigNumberResponse = { value: new BigNumber(value), decimals };\n return {\n value: BigNumberResponse.value.toFixed(0),\n originFormat: BigNumberResponse.value.div(10 ** decimals).toFixed(),\n format: helper.number.numberFormat(BigNumberResponse.value.div(10 ** decimals).toFixed(), format, { fallback, min }),\n decimals: String(BigNumberResponse.decimals),\n isZero: BigNumberResponse.value.isZero(),\n };\n },\n //http://numeraljs.com/ format params does not need to deal with decimal places\n //format: '$0,0' '0a' '0,0' '0,0$'\n numberFormat(str: string | number, format: string = \"0,0\", options: { min?: number; fallback?: string } = {}): string {\n const { fallback = \"0.00\" } = options || {};\n\n if (!str || isNaN(Number(str))) return fallback;\n const numStr = new BigNumber(str).toFixed();\n const countNonZeroNumbers = (_str: string) => {\n const decimalPointIndex = _str.indexOf(\".\");\n if (decimalPointIndex === -1) {\n return 0;\n }\n const decimalPart = _str.substring(decimalPointIndex + 1);\n let trailingZerosCount = 0;\n for (let i = 0; i < decimalPart.length; i++) {\n if (decimalPart[i] === \"0\") {\n trailingZerosCount++;\n } else {\n break;\n }\n }\n return trailingZerosCount;\n };\n\n const fractionDigits = countNonZeroNumbers(format);\n const numberFractionDigits = countNonZeroNumbers(numStr);\n if (options?.min) {\n if (new BigNumber(numStr).isLessThan(new BigNumber(options?.min || 0))) {\n return `< ${numeral(options?.min).format(format)}`;\n }\n }\n const fullStr = new BigNumber(numStr).toFixed();\n let preStr = numeral(fullStr.split(\".\")[0]).format(format.split(\".\")[0]);\n const fractionStr = fullStr.split(\".\")?.[1]?.slice(0, fractionDigits + numberFractionDigits);\n\n if (numberFractionDigits >= fractionDigits) {\n return (preStr + \".\" + fractionStr).replace(/\\.?0+$/, \"\");\n }\n\n if (fractionStr?.[fractionDigits - 1] == \"9\") {\n return (preStr + \".\" + fractionStr.slice(0, fractionDigits - 1) + \"9\").replace(/\\.?0+$/, \"\");\n }\n\n const resultStr = numeral(new BigNumber(numStr).toString()).format(format);\n return resultStr.replace(/\\.?0+$/, \"\");\n },\n },\n address: {\n convertAddress: (addressMode: \"io\" | \"0x\", address: string = \"\"): string => {\n try {\n if (addressMode == \"0x\" && helper.address.validateIoAddress(address)) {\n return from(address).stringEth();\n }\n if (addressMode == \"io\" && helper.address.validateEthAddress(address)) {\n return from(address).string();\n }\n } catch (error) {}\n return address;\n },\n validateEthAddress: (address: string) => /^0x[a-fA-F0-9]{40}$/.test(address),\n validateIoAddress: (address: string) => /^io[a-zA-Z0-9]{39}$/.test(address),\n validateAddress: (address: string) => helper.address.validateEthAddress(address) || helper.address.validateIoAddress(address),\n },\n};\n"]}
|
package/dist/dev.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { helper } from './chunk-
|
|
2
|
-
import { _ } from './chunk-
|
|
1
|
+
import { helper } from './chunk-UPGWJHSO.mjs';
|
|
2
|
+
import { _ } from './chunk-K7LFG5BA.mjs';
|
|
3
3
|
import { cn } from './chunk-WYGQ3Y4R.mjs';
|
|
4
4
|
import { __objRest, __spreadProps, __spreadValues } from './chunk-6F7H4PAA.mjs';
|
|
5
5
|
import * as React3 from 'react';
|
package/dist/experimental.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { PromiseState } from './chunk-
|
|
1
|
+
import { PromiseState } from './chunk-2WJE2UJN.mjs';
|
|
2
2
|
import './chunk-4YCP5CJ4.mjs';
|
|
3
3
|
import { RootStore } from './chunk-IDKGZ5T4.mjs';
|
|
4
|
-
import { _ } from './chunk-
|
|
4
|
+
import { _ } from './chunk-K7LFG5BA.mjs';
|
|
5
5
|
import { __objRest, __spreadValues, __spreadProps } from './chunk-6F7H4PAA.mjs';
|
|
6
6
|
import React2 from 'react';
|
|
7
7
|
import { makeAutoObservable, toJS, observable } from 'mobx';
|
|
@@ -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","\nimport { 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\";\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}"]}
|