@dappworks/kit 0.4.67 → 0.4.69
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/{PromiseState-2a8c856c.d.ts → PromiseState-b0cc408e.d.ts} +3 -0
- package/dist/{chunk-N4XCPX4L.mjs → chunk-4YCP5CJ4.mjs} +9 -2
- package/dist/chunk-4YCP5CJ4.mjs.map +1 -0
- package/dist/{chunk-CFVG66F4.mjs → chunk-66N3D7MI.mjs} +1 -1
- package/dist/chunk-66N3D7MI.mjs.map +1 -0
- package/dist/{chunk-SXQEYWUP.mjs → chunk-DZMNL4BZ.mjs} +1 -1
- package/dist/chunk-DZMNL4BZ.mjs.map +1 -0
- package/dist/{chunk-WAYJJYKN.mjs → chunk-OZ3JSH5J.mjs} +2 -2
- package/dist/{chunk-I5WU3NZO.mjs → chunk-PPYYRQDD.mjs} +26 -15
- package/dist/chunk-PPYYRQDD.mjs.map +1 -0
- package/dist/chunk-Y23EH2XR.mjs +24 -0
- package/dist/chunk-Y23EH2XR.mjs.map +1 -0
- package/dist/{chunk-VB62FUWK.mjs → chunk-YOCDMBRI.mjs} +2 -2
- package/dist/dev.mjs +111 -29
- package/dist/dev.mjs.map +1 -1
- package/dist/experimental.mjs +2 -2
- package/dist/form.d.mts +2 -105
- package/dist/form.mjs +72 -78
- package/dist/form.mjs.map +1 -1
- package/dist/index.d.mts +8 -28
- package/dist/index.mjs +24 -72
- package/dist/index.mjs.map +1 -1
- package/dist/jsontable.mjs +3 -3
- package/dist/metrics.d.mts +34 -8
- package/dist/metrics.mjs +88 -54
- package/dist/metrics.mjs.map +1 -1
- package/dist/plugins.d.mts +5 -5
- package/dist/plugins.mjs +4 -4
- package/dist/ui.d.mts +10 -1
- package/dist/ui.mjs +2 -1
- package/dist/ui.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-CFVG66F4.mjs.map +0 -1
- package/dist/chunk-I5WU3NZO.mjs.map +0 -1
- package/dist/chunk-N4XCPX4L.mjs.map +0 -1
- package/dist/chunk-SXQEYWUP.mjs.map +0 -1
- package/dist/chunk-ZPPKSMXO.mjs +0 -90
- package/dist/chunk-ZPPKSMXO.mjs.map +0 -1
- /package/dist/{chunk-WAYJJYKN.mjs.map → chunk-OZ3JSH5J.mjs.map} +0 -0
- /package/dist/{chunk-VB62FUWK.mjs.map → chunk-YOCDMBRI.mjs.map} +0 -0
package/dist/index.mjs
CHANGED
|
@@ -1,18 +1,16 @@
|
|
|
1
|
-
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-
|
|
2
|
-
import './chunk-
|
|
3
|
-
import { helper } from './chunk-
|
|
4
|
-
export { helper } from './chunk-
|
|
5
|
-
|
|
6
|
-
export { rootStore, useStore } from './chunk-
|
|
1
|
+
export { BooleanState, NumberState, PromiseState, Store, StringState, ValueState } from './chunk-PPYYRQDD.mjs';
|
|
2
|
+
import './chunk-4YCP5CJ4.mjs';
|
|
3
|
+
import { helper } from './chunk-66N3D7MI.mjs';
|
|
4
|
+
export { helper } from './chunk-66N3D7MI.mjs';
|
|
5
|
+
export { PaginationState } from './chunk-ONVPCAMQ.mjs';
|
|
6
|
+
export { rootStore, useStore } from './chunk-DZMNL4BZ.mjs';
|
|
7
7
|
import { RootStore } from './chunk-HRWHDF2F.mjs';
|
|
8
8
|
export { RootStore } from './chunk-HRWHDF2F.mjs';
|
|
9
9
|
import './chunk-MGU3KYGC.mjs';
|
|
10
10
|
import './chunk-6F7H4PAA.mjs';
|
|
11
11
|
import { observable, makeAutoObservable } from 'mobx';
|
|
12
12
|
import BigNumber2 from 'bignumber.js';
|
|
13
|
-
import
|
|
14
|
-
import axios from 'axios';
|
|
15
|
-
import React, { useEffect } from 'react';
|
|
13
|
+
import React from 'react';
|
|
16
14
|
import { observer } from 'mobx-react-lite';
|
|
17
15
|
import DataLoader from 'dataloader';
|
|
18
16
|
import { Dexie } from 'dexie';
|
|
@@ -178,64 +176,12 @@ var BigNumberInputState = class {
|
|
|
178
176
|
return this.value.isZero() && this.format == "";
|
|
179
177
|
}
|
|
180
178
|
};
|
|
181
|
-
var UserStore = class _UserStore {
|
|
182
|
-
constructor() {
|
|
183
|
-
this.sid = "user";
|
|
184
|
-
this.id = "";
|
|
185
|
-
this.name = "";
|
|
186
|
-
this.email = "";
|
|
187
|
-
this.image = "";
|
|
188
|
-
this.token = "";
|
|
189
|
-
this.event = new EventEmitter();
|
|
190
|
-
makeAutoObservable(this);
|
|
191
|
-
}
|
|
192
|
-
signin() {
|
|
193
|
-
this.event.emit("user:signin", this);
|
|
194
|
-
}
|
|
195
|
-
logout() {
|
|
196
|
-
this.set({
|
|
197
|
-
token: "",
|
|
198
|
-
name: "",
|
|
199
|
-
email: "",
|
|
200
|
-
image: ""
|
|
201
|
-
});
|
|
202
|
-
this.event.emit("user:logout", this);
|
|
203
|
-
}
|
|
204
|
-
wait() {
|
|
205
|
-
return new Promise((res, rej) => {
|
|
206
|
-
if (this.id && this.token) {
|
|
207
|
-
res(this);
|
|
208
|
-
}
|
|
209
|
-
this.event.once("user:ready", (user) => {
|
|
210
|
-
res(this);
|
|
211
|
-
});
|
|
212
|
-
});
|
|
213
|
-
}
|
|
214
|
-
get isLogin() {
|
|
215
|
-
return !!this.token;
|
|
216
|
-
}
|
|
217
|
-
set(args) {
|
|
218
|
-
Object.assign(this, args);
|
|
219
|
-
this.event.emit("user:ready", this);
|
|
220
|
-
}
|
|
221
|
-
use() {
|
|
222
|
-
useEffect(() => {
|
|
223
|
-
const userStore = rootStore.get(_UserStore);
|
|
224
|
-
axios.get("/api/auth/session").then((res) => {
|
|
225
|
-
var _a;
|
|
226
|
-
if (!userStore.isLogin && ((_a = res == null ? void 0 : res.data) == null ? void 0 : _a.user)) {
|
|
227
|
-
this.set(res.data.user);
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
}, []);
|
|
231
|
-
}
|
|
232
|
-
};
|
|
233
179
|
var AppProvider = observer(({ children }) => {
|
|
234
180
|
const rootStore2 = RootStore.init();
|
|
235
181
|
return /* @__PURE__ */ React.createElement(React.Fragment, null, rootStore2.providers.map((store) => {
|
|
236
182
|
const Component = store.provider;
|
|
237
183
|
return /* @__PURE__ */ React.createElement(Component, { rootStore: rootStore2, key: store.sid });
|
|
238
|
-
}), children);
|
|
184
|
+
}), children && children);
|
|
239
185
|
});
|
|
240
186
|
var DexieStorage = class extends Dexie {
|
|
241
187
|
constructor() {
|
|
@@ -249,15 +195,21 @@ var dexie = new DexieStorage();
|
|
|
249
195
|
var DexieCache = class {
|
|
250
196
|
constructor() {
|
|
251
197
|
this.kv = dexie.kv;
|
|
252
|
-
this.kv_get = new DataLoader(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
198
|
+
this.kv_get = new DataLoader(
|
|
199
|
+
async (ids) => {
|
|
200
|
+
const res = await this.kv.bulkGet(ids);
|
|
201
|
+
return res.map((i) => i == null ? void 0 : i.value);
|
|
202
|
+
},
|
|
203
|
+
{ cache: false }
|
|
204
|
+
);
|
|
205
|
+
this.kv_set = new DataLoader(
|
|
206
|
+
async (ids) => {
|
|
207
|
+
const now = /* @__PURE__ */ new Date();
|
|
208
|
+
await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));
|
|
209
|
+
return ids;
|
|
210
|
+
},
|
|
211
|
+
{ cache: false }
|
|
212
|
+
);
|
|
261
213
|
this.options = {
|
|
262
214
|
ttl: 60 * 1e3,
|
|
263
215
|
prefix: ""
|
|
@@ -316,6 +268,6 @@ var DexieCache = class {
|
|
|
316
268
|
};
|
|
317
269
|
var cache = new DexieCache();
|
|
318
270
|
|
|
319
|
-
export { AppProvider, BigNumberInputState, BigNumberState, PromiseHook,
|
|
271
|
+
export { AppProvider, BigNumberInputState, BigNumberState, PromiseHook, cache };
|
|
320
272
|
//# sourceMappingURL=out.js.map
|
|
321
273
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../store/user.ts","../module/AppProvider.tsx","../lib/dexie.ts"],"names":["makeAutoObservable","BigNumber","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n this.format = helper.number.toPrecisionFloor(this.format);\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import { makeAutoObservable } from \"mobx\";\nimport { type User } from \"next-auth\";\nimport EventEmitter from \"events\";\nimport { type Store } from \"./standard/base\";\nimport { rootStore } from \".\";\nimport axios from \"axios\";\nimport { useEffect } from \"react\";\n\nexport class UserStore implements User, Store {\n sid = \"user\";\n id: string = \"\";\n name?: string = \"\";\n email?: string = \"\";\n image?: string = \"\";\n token: string = \"\";\n\n event = new EventEmitter();\n\n signin() {\n this.event.emit(\"user:signin\", this);\n }\n\n logout() {\n this.set({\n token: \"\",\n name: \"\",\n email: \"\",\n image: \"\",\n });\n this.event.emit(\"user:logout\", this);\n }\n\n wait() {\n return new Promise<UserStore>((res, rej) => {\n if (this.id && this.token) {\n res(this);\n }\n\n this.event.once(\"user:ready\", (user) => {\n res(this);\n });\n });\n }\n\n get isLogin() {\n return !!this.token;\n }\n\n set(args: Partial<UserStore>) {\n Object.assign(this, args);\n this.event.emit(\"user:ready\", this);\n }\n\n constructor() {\n makeAutoObservable(this);\n }\n\n use() {\n useEffect(() => {\n const userStore = rootStore.get(UserStore);\n axios.get(\"/api/auth/session\").then((res) => {\n // console.log(res.data.user,'res')\n if (!userStore.isLogin && res?.data?.user) {\n this.set(res.data.user);\n }\n });\n }, []);\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children: any }) => {\n const rootStore = RootStore.init()\n return <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children}\n </>\n})","import DataLoader from 'dataloader'\nimport { Dexie, type Table } from 'dexie'\n\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string, value: { value: any, expiration: number } }>\n\n constructor() {\n super(\"cache\")\n this.version(1).stores({\n kv: 'key, value'\n })\n }\n}\nexport const dexie = new DexieStorage()\n\nexport class DexieCache {\n kv = dexie.kv\n kv_get = new DataLoader(async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids)\n return res.map(i => i?.value)\n }, { cache: false })\n kv_set = new DataLoader(async (ids: { key: string, value: any, ttl: number }[]) => {\n const now = new Date()\n await this.kv.bulkPut(ids.map(i => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })))\n return ids\n }, { cache: false })\n options = {\n ttl: 60 * 1000,\n prefix: ''\n }\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time('get ' + key);\n const res = await this.kv_get.load(key);\n console.timeEnd('get ' + key);\n const data = res?.value\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time('get ' + key);\n const res = await this.kv_get.load(key);\n console.timeEnd('get ' + key);\n const data = res?.value\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return\n }\n\n async clear() { }\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number, alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key)\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn().then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl })\n }).catch(err => {\n console.error(err)\n })\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache()\n\n"]}
|
|
1
|
+
{"version":3,"sources":["../store/standard/PromiseHook.ts","../store/standard/BigNumberState.ts","../store/standard/BigNumberInputState.ts","../module/AppProvider.tsx","../lib/dexie.ts"],"names":["makeAutoObservable","BigNumber","rootStore"],"mappings":"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","sourcesContent":["\n\nimport { makeAutoObservable, observable } from 'mobx';\n\nexport class KV {\n //@ts-ignore\n static datas = observable();\n}\n\nexport abstract class ContractBase {\n // chainId?: number;\n // address?: string;\n\n}\n\nexport type ContractClass<T extends ContractBase> = new (args: Partial<T>) => T\n\nexport type PromiseHookData<T, U> = { value: Awaited<U>; get: T; call: T, loading: boolean }\n\nexport class PromiseHook {\n static entities = observable([]);\n static Get<T extends ContractBase>(cls: ContractClass<T>): (args: { args: Partial<T>; id?: string, select?: { [key in keyof Partial<T>]: boolean }, unselect?: { [key in keyof Partial<T>]: boolean } }) => Promise<T & { refresh: () => Promise<void> }> {\n try {\n return async ({ args, select, id, unselect }) => {\n let instance: any\n //@ts-ignore\n if (!id || !this.entities[id]) {\n instance = new cls(args);\n\n instance.refresh = async () => {\n const hooks = Object.entries(instance)\n .filter((i) => {\n if (!this.isPromiseHook(instance[i[0]])) return false\n if (select && !select[i[0]]) return false\n if (unselect && unselect[i[0]]) return false\n return true\n }).map(i => {\n const hook = instance[i[0]]\n return hook\n })\n\n await Promise.all(hooks.map((i) => i.call()));\n }\n if (id) {\n //@ts-ignore\n this.entities[id] = instance\n }\n } else {\n instance = this.entities[id!]\n }\n\n\n await instance.refresh()\n return instance;\n };\n } catch (e) {\n throw e\n }\n }\n\n\n static isPromiseHook(target) {\n return target?._type == \"promiseHook\"\n }\n\n\n //ttl : ms\n static wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>({ func, defaultValue }: { func: T; defaultValue?: Awaited<U>; }): PromiseHookData<T, U> {\n let context;\n const call = () => {\n context.loading = true;\n if (!context._call) {\n context._call = func()\n .then((i) => {\n context.value = i;\n context.loading = false;\n context._call = null\n return i\n })\n .catch((i) => {\n console.error(i, func);\n context.value = defaultValue\n context._call = null\n context.loading = false;\n throw i;\n });\n }\n\n\n return context._call\n };\n const get = async () => {\n if (!context.value) {\n\n return call();\n }\n return context.value;\n };\n\n if (!context) {\n context = observable({\n _type: 'promiseHook',\n _value: defaultValue,\n get value() {\n return context['_value'];\n },\n set value(val) {\n context['_value'] = val;\n },\n get,\n loading: false,\n call,\n defaultValue,\n toJSON() {\n return context.value\n },\n toString() {\n return context.value\n },\n });\n }\n\n return context;\n }\n\n}\n","import BigNumber from \"bignumber.js\";\nimport { makeAutoObservable } from \"mobx\";\nimport { helper } from \"../../lib/helper\";\n\nexport class BigNumberState {\n value = new BigNumber(0);\n loading = false;\n decimals = 18;\n fixed = 6;\n formatter?: Function;\n constructor(args: Partial<BigNumberState>) {\n Object.assign(this, args);\n makeAutoObservable(this, {\n getFormat: false,\n });\n }\n get format() {\n if (this.loading) return \"...\";\n return this.getFormat();\n }\n\n getFormat({ decimals = this.decimals, fixed = this.fixed }: { decimals?: number; fixed?: number } = {}) {\n if (this.loading) return \"...\";\n if (this.formatter) return this.formatter(this);\n return helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** decimals).toFixed(), {\n decimals: fixed,\n });\n }\n\n setDecimals(decimals: number) {\n this.decimals = decimals;\n }\n\n setValue(value: BigNumber) {\n this.value = value;\n this.setLoading(false);\n }\n\n setLoading(val) {\n this.loading = val;\n }\n}\n","import BigNumber from 'bignumber.js';\nimport { makeAutoObservable } from 'mobx';\nimport { helper } from '../../lib/helper';\nexport class BigNumberInputState {\n value = new BigNumber(0);\n format = '';\n loading = false;\n decimals = 18;\n formatter?: Function;\n constructor(args: Partial<BigNumberInputState>) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n get noDecimasValue(): BigNumber {\n return new BigNumber(this.value).dividedBy(10 ** this.decimals);\n }\n setValue(value: any) {\n this.value = new BigNumber(value);\n this.format = helper.number.toPrecisionFloor(new BigNumber(this.value).dividedBy(10 ** this.decimals).toFixed());\n this.setLoading(false);\n }\n setFormat(val: any) {\n this.format = val;\n this.format = helper.number.toPrecisionFloor(this.format);\n this.value = new BigNumber(val).multipliedBy(10 ** this.decimals);\n }\n setLoading(val: boolean) {\n this.loading = val;\n }\n setDecimals(val: number) {\n this.decimals = val;\n }\n get isZero(): boolean {\n return this.value.isZero() && this.format == '';\n }\n}\n","import React from \"react\";\nimport { observer } from \"mobx-react-lite\";\nimport { RootStore } from \"../store/root\";\n\nexport const AppProvider = observer(({ children }: { children?: React.ReactNode }) => {\n const rootStore = RootStore.init()\n return (\n <>\n {rootStore.providers.map((store) => {\n const Component: any = store.provider;\n return <Component rootStore={rootStore} key={store.sid} />;\n })}\n {children && children}\n </>\n )\n})","import DataLoader from \"dataloader\";\nimport { Dexie, type Table } from \"dexie\";\n\nexport class DexieStorage extends Dexie {\n kv: Table<{ key: string; value: { value: any; expiration: number } }>;\n\n constructor() {\n super(\"cache\");\n this.version(1).stores({\n kv: \"key, value\",\n });\n }\n}\nexport const dexie = new DexieStorage();\n\nexport class DexieCache {\n kv = dexie.kv;\n kv_get = new DataLoader(\n async (ids: string[]) => {\n const res = await this.kv.bulkGet(ids);\n return res.map((i) => i?.value);\n },\n { cache: false },\n );\n kv_set = new DataLoader(\n async (ids: { key: string; value: any; ttl: number }[]) => {\n const now = new Date();\n await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));\n return ids;\n },\n { cache: false },\n );\n options = {\n ttl: 60 * 1000,\n prefix: \"\",\n };\n\n async get(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data?.value;\n }\n\n async getRaw(_key) {\n const key = this.options.prefix + _key;\n console.time(\"get \" + key);\n const res = await this.kv_get.load(key);\n console.timeEnd(\"get \" + key);\n const data = res?.value;\n if (!data) return;\n return data;\n }\n\n async set(_key, value, options?: { ttl?: number }) {\n const key = this.options.prefix + _key;\n this.kv_set.load({ key, value, ttl: options?.ttl || this.options.ttl });\n\n return this;\n }\n\n async delete(key) {\n // return this.dataloader.load(['del', key]);\n return;\n }\n\n async clear() {}\n\n async wrap<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>>(key, fn: T, args?: { ttl?: number; alowStale?: boolean }): Promise<Awaited<U>> {\n let data = await this.kv_get.load(key);\n if (data?.expiration && new Date(data.expiration) <= new Date()) {\n // console.log(\"cache expired\", key)\n\n if (args?.alowStale) {\n fn()\n .then((value) => {\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n })\n .catch((err) => {\n console.error(err);\n });\n } else {\n //@ts-ignore\n data = null;\n }\n }\n if (!data) {\n // console.log(\"miss cache\", key)\n const value = await fn();\n this.kv_set.load({ key, value, ttl: args?.ttl || this.options.ttl });\n return value;\n }\n return data.value;\n }\n}\n\nexport const cache = new DexieCache();\n"]}
|
package/dist/jsontable.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { JSONTable } from './chunk-
|
|
1
|
+
export { JSONTable } from './chunk-YOCDMBRI.mjs';
|
|
2
2
|
import './chunk-ONVPCAMQ.mjs';
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import './chunk-OZ3JSH5J.mjs';
|
|
4
|
+
import './chunk-DZMNL4BZ.mjs';
|
|
5
5
|
import './chunk-HRWHDF2F.mjs';
|
|
6
6
|
import './chunk-U7JFOBSQ.mjs';
|
|
7
7
|
import './chunk-MGU3KYGC.mjs';
|
package/dist/metrics.d.mts
CHANGED
|
@@ -12,8 +12,11 @@ interface ChartBox {
|
|
|
12
12
|
gridH?: number;
|
|
13
13
|
numColSpanMd?: number;
|
|
14
14
|
className?: string;
|
|
15
|
+
headerClassName?: string;
|
|
16
|
+
contentClassName?: string;
|
|
17
|
+
chartClassName?: string;
|
|
15
18
|
}
|
|
16
|
-
declare const ChartBox: ({ title, description, error, children, className }: ChartBox) => React.JSX.Element;
|
|
19
|
+
declare const ChartBox: ({ title, description, error, children, className, headerClassName, contentClassName }: ChartBox) => React.JSX.Element;
|
|
17
20
|
|
|
18
21
|
type BarChartCard = ChartBox & {
|
|
19
22
|
type?: 'BarChartCard';
|
|
@@ -23,6 +26,7 @@ type BarChartCard = ChartBox & {
|
|
|
23
26
|
showLegend?: boolean;
|
|
24
27
|
showGridLines?: boolean;
|
|
25
28
|
stack?: boolean;
|
|
29
|
+
showAnimation?: boolean;
|
|
26
30
|
};
|
|
27
31
|
declare const BarChartCard: (props: BarChartCard) => React.JSX.Element;
|
|
28
32
|
|
|
@@ -30,10 +34,17 @@ type LineChartCard = ChartBox & {
|
|
|
30
34
|
type?: 'LineChartCard';
|
|
31
35
|
categories?: string[];
|
|
32
36
|
index?: string;
|
|
33
|
-
|
|
37
|
+
curveType?: 'linear' | 'step' | 'monotone';
|
|
38
|
+
colors?: ('slate' | 'gray' | 'zinc' | 'neutral' | 'stone' | 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose')[];
|
|
34
39
|
showLegend?: boolean;
|
|
35
40
|
showGridLines?: boolean;
|
|
36
|
-
|
|
41
|
+
showXAxis?: boolean;
|
|
42
|
+
showYAxis?: boolean;
|
|
43
|
+
startEndOnly?: boolean;
|
|
44
|
+
showTooltip?: boolean;
|
|
45
|
+
showAnimation?: boolean;
|
|
46
|
+
autoMinValue?: boolean;
|
|
47
|
+
valueFormatter?: ValueFormatter;
|
|
37
48
|
};
|
|
38
49
|
declare const LineChartCard: (props: LineChartCard) => React.JSX.Element;
|
|
39
50
|
|
|
@@ -41,11 +52,23 @@ type AreaChartCard = ChartBox & {
|
|
|
41
52
|
type?: 'AreaChartCard';
|
|
42
53
|
categories?: string[];
|
|
43
54
|
index?: string;
|
|
44
|
-
|
|
55
|
+
curveType?: 'linear' | 'step' | 'monotone';
|
|
56
|
+
colors?: ('slate' | 'gray' | 'zinc' | 'neutral' | 'stone' | 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'emerald' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose')[];
|
|
45
57
|
showLegend?: boolean;
|
|
46
58
|
showGridLines?: boolean;
|
|
47
59
|
stack?: boolean;
|
|
48
|
-
|
|
60
|
+
showXAxis?: boolean;
|
|
61
|
+
showYAxis?: boolean;
|
|
62
|
+
startEndOnly?: boolean;
|
|
63
|
+
showTooltip?: boolean;
|
|
64
|
+
showAnimation?: boolean;
|
|
65
|
+
autoMinValue?: boolean;
|
|
66
|
+
valueFormatter?: ValueFormatter;
|
|
67
|
+
customTooltip?: ({ payload, active, label }: {
|
|
68
|
+
payload: any;
|
|
69
|
+
active: any;
|
|
70
|
+
label: any;
|
|
71
|
+
}) => React.ReactNode;
|
|
49
72
|
};
|
|
50
73
|
declare const AreaChartCard: (props: AreaChartCard) => React.JSX.Element;
|
|
51
74
|
|
|
@@ -56,11 +79,13 @@ type DonutChartCard = ChartBox & {
|
|
|
56
79
|
valueFormatter?: ValueFormatter;
|
|
57
80
|
showLabel?: boolean;
|
|
58
81
|
variant?: 'donut' | 'pie';
|
|
82
|
+
showAnimation?: boolean;
|
|
59
83
|
};
|
|
60
84
|
declare const DonutChartCard: (props: DonutChartCard) => React.JSX.Element;
|
|
61
85
|
|
|
62
86
|
type CountCard = ChartBox & {
|
|
63
87
|
type?: 'CountCard';
|
|
88
|
+
summedColumnIndex?: string;
|
|
64
89
|
};
|
|
65
90
|
declare const CountCard: (props: CountCard) => React.JSX.Element;
|
|
66
91
|
|
|
@@ -79,11 +104,12 @@ type KPICard = ChartBox & {
|
|
|
79
104
|
type?: 'KPICard';
|
|
80
105
|
categories?: string[];
|
|
81
106
|
index?: string;
|
|
82
|
-
|
|
83
|
-
curveType?: 'linear' | '
|
|
107
|
+
chartType?: 'area' | 'line';
|
|
108
|
+
curveType?: 'linear' | 'step' | 'monotone';
|
|
84
109
|
metricTitle?: string;
|
|
85
110
|
metric?: string | number;
|
|
86
|
-
|
|
111
|
+
valueFormatter?: ValueFormatter;
|
|
112
|
+
loading?: boolean;
|
|
87
113
|
};
|
|
88
114
|
declare const KPICard: (props: KPICard) => React.JSX.Element;
|
|
89
115
|
|
package/dist/metrics.mjs
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SkeletonBox } from './chunk-Y23EH2XR.mjs';
|
|
2
|
+
import { JSONTable_default } from './chunk-YOCDMBRI.mjs';
|
|
2
3
|
import './chunk-ONVPCAMQ.mjs';
|
|
3
|
-
import './chunk-
|
|
4
|
-
import './chunk-
|
|
4
|
+
import './chunk-OZ3JSH5J.mjs';
|
|
5
|
+
import './chunk-DZMNL4BZ.mjs';
|
|
5
6
|
import './chunk-HRWHDF2F.mjs';
|
|
6
7
|
import './chunk-U7JFOBSQ.mjs';
|
|
7
8
|
import './chunk-MGU3KYGC.mjs';
|
|
8
9
|
import { cn } from './chunk-6UHBBDKI.mjs';
|
|
9
10
|
import { __spreadValues } from './chunk-6F7H4PAA.mjs';
|
|
10
|
-
import
|
|
11
|
+
import React8 from 'react';
|
|
11
12
|
import { Grid, Col, BarChart, LineChart, AreaChart, DonutChart, Text } from '@tremor/react';
|
|
12
13
|
import { Card } from '@nextui-org/react';
|
|
13
14
|
|
|
14
|
-
var ChartBox = ({ title, description, error, children, className }) => {
|
|
15
|
-
return /* @__PURE__ */
|
|
15
|
+
var ChartBox = ({ title, description, error, children, className, headerClassName, contentClassName }) => {
|
|
16
|
+
return /* @__PURE__ */ React8.createElement(Card, { className: cn("dark:border-gray-800 shadow-sm border", className) }, (title || description) && /* @__PURE__ */ React8.createElement("div", { className: cn("p-4 h-[60px]", headerClassName) }, title && /* @__PURE__ */ React8.createElement("div", null, title), description && /* @__PURE__ */ React8.createElement("div", { className: "text-xs" }, description)), /* @__PURE__ */ React8.createElement("div", { className: cn("px-2 pb-5", contentClassName) }, error ? /* @__PURE__ */ React8.createElement("div", { className: "text-red-600" }, error) : children));
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
// components/JSONMetricsView/BarChartCard/index.tsx
|
|
@@ -24,12 +25,14 @@ var BarChartCard = (props) => {
|
|
|
24
25
|
valueFormatter = (number) => `${number}`,
|
|
25
26
|
showLegend = false,
|
|
26
27
|
showGridLines = false,
|
|
27
|
-
stack = false
|
|
28
|
+
stack = false,
|
|
29
|
+
chartClassName,
|
|
30
|
+
showAnimation = true
|
|
28
31
|
} = props;
|
|
29
|
-
return /* @__PURE__ */
|
|
32
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement(
|
|
30
33
|
BarChart,
|
|
31
34
|
{
|
|
32
|
-
className: "h-72 mt-4",
|
|
35
|
+
className: cn("h-72 mt-4", chartClassName),
|
|
33
36
|
data,
|
|
34
37
|
index,
|
|
35
38
|
categories,
|
|
@@ -38,7 +41,8 @@ var BarChartCard = (props) => {
|
|
|
38
41
|
yAxisWidth: 48,
|
|
39
42
|
showLegend,
|
|
40
43
|
showGridLines,
|
|
41
|
-
stack
|
|
44
|
+
stack,
|
|
45
|
+
showAnimation
|
|
42
46
|
}
|
|
43
47
|
));
|
|
44
48
|
};
|
|
@@ -47,23 +51,37 @@ var LineChartCard = (props) => {
|
|
|
47
51
|
data = [],
|
|
48
52
|
categories = ["value"],
|
|
49
53
|
index = "date",
|
|
50
|
-
|
|
54
|
+
curveType = "linear",
|
|
55
|
+
colors = ["indigo", "cyan", "teal", "green", "yellow", "orange", "red", "slate", "violet", "rose", "pink", "purple", "blue"],
|
|
51
56
|
showLegend = false,
|
|
52
57
|
showGridLines = false,
|
|
53
|
-
|
|
58
|
+
chartClassName,
|
|
59
|
+
showXAxis = true,
|
|
60
|
+
showYAxis = true,
|
|
61
|
+
startEndOnly = false,
|
|
62
|
+
showTooltip = true,
|
|
63
|
+
showAnimation = true,
|
|
64
|
+
autoMinValue = true,
|
|
65
|
+
valueFormatter = (number) => `${number}`
|
|
54
66
|
} = props;
|
|
55
|
-
return /* @__PURE__ */
|
|
67
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement(
|
|
56
68
|
LineChart,
|
|
57
69
|
{
|
|
58
|
-
className: "h-72 mt-4",
|
|
70
|
+
className: cn("h-72 mt-4", chartClassName),
|
|
59
71
|
data,
|
|
60
72
|
index,
|
|
61
73
|
categories,
|
|
62
|
-
colors
|
|
74
|
+
colors,
|
|
63
75
|
valueFormatter,
|
|
64
76
|
showLegend,
|
|
65
77
|
showGridLines,
|
|
66
|
-
curveType
|
|
78
|
+
curveType,
|
|
79
|
+
showXAxis,
|
|
80
|
+
showYAxis,
|
|
81
|
+
startEndOnly,
|
|
82
|
+
showTooltip,
|
|
83
|
+
showAnimation,
|
|
84
|
+
autoMinValue
|
|
67
85
|
}
|
|
68
86
|
));
|
|
69
87
|
};
|
|
@@ -72,80 +90,94 @@ var AreaChartCard = (props) => {
|
|
|
72
90
|
data = [],
|
|
73
91
|
categories = ["value"],
|
|
74
92
|
index = "date",
|
|
75
|
-
|
|
93
|
+
curveType = "linear",
|
|
94
|
+
colors = ["indigo", "cyan", "teal", "green", "yellow", "orange", "red", "slate", "violet", "rose", "pink", "purple", "blue"],
|
|
76
95
|
showLegend = false,
|
|
77
96
|
showGridLines = false,
|
|
78
97
|
stack = false,
|
|
79
|
-
|
|
98
|
+
chartClassName,
|
|
99
|
+
showXAxis = true,
|
|
100
|
+
showYAxis = true,
|
|
101
|
+
startEndOnly = false,
|
|
102
|
+
showTooltip = true,
|
|
103
|
+
showAnimation = true,
|
|
104
|
+
autoMinValue = true,
|
|
105
|
+
valueFormatter = (number) => `${number}`,
|
|
106
|
+
customTooltip
|
|
80
107
|
} = props;
|
|
81
|
-
return /* @__PURE__ */
|
|
108
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement(
|
|
82
109
|
AreaChart,
|
|
83
110
|
{
|
|
84
|
-
className: "h-72 mt-4",
|
|
111
|
+
className: cn("h-72 mt-4", chartClassName),
|
|
85
112
|
data,
|
|
86
113
|
index,
|
|
87
114
|
categories,
|
|
88
|
-
colors
|
|
115
|
+
colors,
|
|
89
116
|
valueFormatter,
|
|
90
117
|
showLegend,
|
|
91
118
|
showGridLines,
|
|
92
119
|
stack,
|
|
93
|
-
curveType
|
|
120
|
+
curveType,
|
|
121
|
+
showXAxis,
|
|
122
|
+
showYAxis,
|
|
123
|
+
startEndOnly,
|
|
124
|
+
showTooltip,
|
|
125
|
+
showAnimation,
|
|
126
|
+
autoMinValue,
|
|
127
|
+
customTooltip
|
|
94
128
|
}
|
|
95
129
|
));
|
|
96
130
|
};
|
|
97
131
|
var DonutChartCard = (props) => {
|
|
98
|
-
const { data = [], categories = ["value"], index = "name", valueFormatter = (number) => `${number}`, showLabel = true, variant = "donut" } = props;
|
|
132
|
+
const { data = [], categories = ["value"], index = "name", valueFormatter = (number) => `${number}`, showLabel = true, variant = "donut", chartClassName, showAnimation = true } = props;
|
|
99
133
|
const category = categories[0];
|
|
100
|
-
return /* @__PURE__ */
|
|
134
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement(
|
|
101
135
|
DonutChart,
|
|
102
136
|
{
|
|
103
|
-
className: "h-72 mt-4",
|
|
137
|
+
className: cn("h-72 mt-4", chartClassName),
|
|
104
138
|
data,
|
|
105
139
|
index,
|
|
106
140
|
category,
|
|
107
141
|
colors: ["indigo", "cyan", "teal", "green", "yellow", "orange", "red", "slate", "violet", "rose", "pink", "purple", "blue"],
|
|
108
142
|
valueFormatter,
|
|
109
143
|
showLabel,
|
|
110
|
-
variant
|
|
144
|
+
variant,
|
|
145
|
+
showAnimation
|
|
111
146
|
}
|
|
112
147
|
));
|
|
113
148
|
};
|
|
114
149
|
var CountCard = (props) => {
|
|
115
150
|
var _a;
|
|
116
151
|
if (!((_a = props.data) == null ? void 0 : _a.length)) {
|
|
117
|
-
return /* @__PURE__ */
|
|
152
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement("div", { className: cn("mt-2 ml-2 text-2xl overflow-auto", props.chartClassName) }, /* @__PURE__ */ React8.createElement("span", { className: "text-gray-400" }, "No data")));
|
|
118
153
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
};
|
|
122
|
-
function renderValue(v) {
|
|
123
|
-
if (typeof v == "string" || typeof v == "number") {
|
|
124
|
-
return v;
|
|
154
|
+
if (!props.summedColumnIndex) {
|
|
155
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement("div", { className: cn("mt-2 ml-2 text-2xl overflow-auto", props.chartClassName) }, /* @__PURE__ */ React8.createElement("span", { className: "text-gray-400 text-sm" }, "set ", /* @__PURE__ */ React8.createElement("span", { className: "font-bold" }, "summedColumnIndex"), " to sum up values")));
|
|
125
156
|
}
|
|
126
|
-
|
|
127
|
-
|
|
157
|
+
const sum = props.data.reduce((acc, cur) => {
|
|
158
|
+
const v = cur[props.summedColumnIndex];
|
|
159
|
+
if (typeof v == "number") {
|
|
160
|
+
return acc + v;
|
|
161
|
+
} else {
|
|
162
|
+
return acc;
|
|
163
|
+
}
|
|
164
|
+
}, 0);
|
|
165
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement("div", { className: cn("mt-2 ml-2 font-bold text-2xl overflow-auto", props.chartClassName) }, sum));
|
|
166
|
+
};
|
|
128
167
|
var TableCard = (props) => {
|
|
129
|
-
const { data = [], columnOptions = {} } = props;
|
|
130
|
-
return /* @__PURE__ */
|
|
168
|
+
const { data = [], columnOptions = {}, chartClassName } = props;
|
|
169
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), (data == null ? void 0 : data.length) > 0 ? /* @__PURE__ */ React8.createElement(JSONTable_default, { dataSource: data, columnOptions, className: cn("h-[256px]", chartClassName) }) : /* @__PURE__ */ React8.createElement("div", { className: cn("h-[256px] flex justify-center items-center text-gray-400", chartClassName) }, "No data"));
|
|
131
170
|
};
|
|
132
171
|
var KPICard = (props) => {
|
|
133
|
-
const {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
data = [],
|
|
138
|
-
categories = ["value"],
|
|
139
|
-
index = "date",
|
|
140
|
-
valueFormatter = (number) => `${number}`,
|
|
141
|
-
curveType = "linear"
|
|
142
|
-
} = props;
|
|
172
|
+
const { metricTitle, metric, chartType = "area", data = [], categories = ["value"], index = "date", valueFormatter = (number) => `${number}`, curveType = "linear", loading, chartClassName } = props;
|
|
173
|
+
if (loading) {
|
|
174
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement("div", { className: "mt-4 space-x-6 px-2 flex items-center" }, /* @__PURE__ */ React8.createElement("div", { className: "w-auto" }, /* @__PURE__ */ React8.createElement(Text, { className: "whitespace-nowrap" }, "Loading..."), /* @__PURE__ */ React8.createElement("div", { className: "font-bold text-3xl" }, "-")), /* @__PURE__ */ React8.createElement(SkeletonBox, { className: "flex-col w-full", skClassName: "h-[100px] overflow-hidden", line: 1 })));
|
|
175
|
+
}
|
|
143
176
|
const ChartComp = chartType === "area" ? AreaChart : LineChart;
|
|
144
|
-
return /* @__PURE__ */
|
|
177
|
+
return /* @__PURE__ */ React8.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React8.createElement("div", { className: "mt-4 space-x-6 px-2 flex items-center" }, /* @__PURE__ */ React8.createElement("div", { className: "w-auto" }, /* @__PURE__ */ React8.createElement(Text, { className: "whitespace-nowrap" }, metricTitle), /* @__PURE__ */ React8.createElement("div", { className: "font-bold text-3xl" }, metric != null ? metric : "-")), /* @__PURE__ */ React8.createElement(
|
|
145
178
|
ChartComp,
|
|
146
179
|
{
|
|
147
|
-
className: "overflow-hidden",
|
|
148
|
-
style: { height: "100px" },
|
|
180
|
+
className: cn("h-[100px] overflow-hidden", chartClassName),
|
|
149
181
|
data,
|
|
150
182
|
index,
|
|
151
183
|
categories,
|
|
@@ -156,7 +188,9 @@ var KPICard = (props) => {
|
|
|
156
188
|
showGridLines: false,
|
|
157
189
|
startEndOnly: true,
|
|
158
190
|
showYAxis: false,
|
|
159
|
-
showLegend: false
|
|
191
|
+
showLegend: false,
|
|
192
|
+
autoMinValue: true,
|
|
193
|
+
showAnimation: true
|
|
160
194
|
}
|
|
161
195
|
)));
|
|
162
196
|
};
|
|
@@ -172,15 +206,15 @@ var components = {
|
|
|
172
206
|
KPICard
|
|
173
207
|
};
|
|
174
208
|
var JSONMetricsView = ({ data }) => {
|
|
175
|
-
return /* @__PURE__ */
|
|
209
|
+
return /* @__PURE__ */ React8.createElement(Grid, { numItems: 1, numItemsSm: 1, numItemsLg: 2, numItemsMd: 2, className: "gap-2" }, data.map((item, index) => {
|
|
176
210
|
var _a;
|
|
177
211
|
const Component = components[item.type];
|
|
178
|
-
return /* @__PURE__ */
|
|
212
|
+
return /* @__PURE__ */ React8.createElement(Col, { key: index, numColSpanSm: 1, numColSpanMd: (_a = item.numColSpanMd) != null ? _a : 1 }, /* @__PURE__ */ React8.createElement(Component, __spreadValues({}, item)));
|
|
179
213
|
}));
|
|
180
214
|
};
|
|
181
215
|
var MetricsView = ({ data }) => {
|
|
182
216
|
const Comp = components[data.type];
|
|
183
|
-
return /* @__PURE__ */
|
|
217
|
+
return /* @__PURE__ */ React8.createElement(Comp, __spreadValues({}, data));
|
|
184
218
|
};
|
|
185
219
|
|
|
186
220
|
export { JSONMetricsView, MetricsView };
|