@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.
Files changed (40) hide show
  1. package/dist/{PromiseState-2a8c856c.d.ts → PromiseState-b0cc408e.d.ts} +3 -0
  2. package/dist/{chunk-N4XCPX4L.mjs → chunk-4YCP5CJ4.mjs} +9 -2
  3. package/dist/chunk-4YCP5CJ4.mjs.map +1 -0
  4. package/dist/{chunk-CFVG66F4.mjs → chunk-66N3D7MI.mjs} +1 -1
  5. package/dist/chunk-66N3D7MI.mjs.map +1 -0
  6. package/dist/{chunk-SXQEYWUP.mjs → chunk-DZMNL4BZ.mjs} +1 -1
  7. package/dist/chunk-DZMNL4BZ.mjs.map +1 -0
  8. package/dist/{chunk-WAYJJYKN.mjs → chunk-OZ3JSH5J.mjs} +2 -2
  9. package/dist/{chunk-I5WU3NZO.mjs → chunk-PPYYRQDD.mjs} +26 -15
  10. package/dist/chunk-PPYYRQDD.mjs.map +1 -0
  11. package/dist/chunk-Y23EH2XR.mjs +24 -0
  12. package/dist/chunk-Y23EH2XR.mjs.map +1 -0
  13. package/dist/{chunk-VB62FUWK.mjs → chunk-YOCDMBRI.mjs} +2 -2
  14. package/dist/dev.mjs +111 -29
  15. package/dist/dev.mjs.map +1 -1
  16. package/dist/experimental.mjs +2 -2
  17. package/dist/form.d.mts +2 -105
  18. package/dist/form.mjs +72 -78
  19. package/dist/form.mjs.map +1 -1
  20. package/dist/index.d.mts +8 -28
  21. package/dist/index.mjs +24 -72
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/jsontable.mjs +3 -3
  24. package/dist/metrics.d.mts +34 -8
  25. package/dist/metrics.mjs +88 -54
  26. package/dist/metrics.mjs.map +1 -1
  27. package/dist/plugins.d.mts +5 -5
  28. package/dist/plugins.mjs +4 -4
  29. package/dist/ui.d.mts +10 -1
  30. package/dist/ui.mjs +2 -1
  31. package/dist/ui.mjs.map +1 -1
  32. package/package.json +1 -1
  33. package/dist/chunk-CFVG66F4.mjs.map +0 -1
  34. package/dist/chunk-I5WU3NZO.mjs.map +0 -1
  35. package/dist/chunk-N4XCPX4L.mjs.map +0 -1
  36. package/dist/chunk-SXQEYWUP.mjs.map +0 -1
  37. package/dist/chunk-ZPPKSMXO.mjs +0 -90
  38. package/dist/chunk-ZPPKSMXO.mjs.map +0 -1
  39. /package/dist/{chunk-WAYJJYKN.mjs.map → chunk-OZ3JSH5J.mjs.map} +0 -0
  40. /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-I5WU3NZO.mjs';
2
- import './chunk-N4XCPX4L.mjs';
3
- import { helper } from './chunk-CFVG66F4.mjs';
4
- export { helper } from './chunk-CFVG66F4.mjs';
5
- import { rootStore } from './chunk-SXQEYWUP.mjs';
6
- export { rootStore, useStore } from './chunk-SXQEYWUP.mjs';
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 EventEmitter from 'events';
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(async (ids) => {
253
- const res = await this.kv.bulkGet(ids);
254
- return res.map((i) => i == null ? void 0 : i.value);
255
- }, { cache: false });
256
- this.kv_set = new DataLoader(async (ids) => {
257
- const now = /* @__PURE__ */ new Date();
258
- await this.kv.bulkPut(ids.map((i) => ({ key: i.key, value: { value: i.value, expiration: now.setTime(now.getTime() + i.ttl) } })));
259
- return ids;
260
- }, { cache: false });
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, UserStore, cache };
271
+ export { AppProvider, BigNumberInputState, BigNumberState, PromiseHook, cache };
320
272
  //# sourceMappingURL=out.js.map
321
273
  //# sourceMappingURL=index.mjs.map
@@ -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"]}
@@ -1,7 +1,7 @@
1
- export { JSONTable } from './chunk-VB62FUWK.mjs';
1
+ export { JSONTable } from './chunk-YOCDMBRI.mjs';
2
2
  import './chunk-ONVPCAMQ.mjs';
3
- import './chunk-WAYJJYKN.mjs';
4
- import './chunk-SXQEYWUP.mjs';
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';
@@ -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
- valueFormatter?: ValueFormatter;
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
- curveType?: 'linear' | 'natural' | 'step';
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
- valueFormatter?: ValueFormatter;
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
- curveType?: 'linear' | 'natural' | 'step';
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
- valueFormatter?: ValueFormatter;
83
- curveType?: 'linear' | 'natural' | 'step';
107
+ chartType?: 'area' | 'line';
108
+ curveType?: 'linear' | 'step' | 'monotone';
84
109
  metricTitle?: string;
85
110
  metric?: string | number;
86
- chartType?: 'area' | 'line';
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 { JSONTable_default } from './chunk-VB62FUWK.mjs';
1
+ import { SkeletonBox } from './chunk-Y23EH2XR.mjs';
2
+ import { JSONTable_default } from './chunk-YOCDMBRI.mjs';
2
3
  import './chunk-ONVPCAMQ.mjs';
3
- import './chunk-WAYJJYKN.mjs';
4
- import './chunk-SXQEYWUP.mjs';
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 React from 'react';
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__ */ React.createElement(Card, { className: cn("dark:border-gray-800", className), shadow: "sm" }, /* @__PURE__ */ React.createElement("div", { className: "p-4 h-[60px]" }, /* @__PURE__ */ React.createElement("div", null, title), description && /* @__PURE__ */ React.createElement("div", { className: "text-xs" }, description)), /* @__PURE__ */ React.createElement("div", { className: "px-2 pb-5" }, error ? /* @__PURE__ */ React.createElement("div", { className: "text-red-600" }, error) : children));
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement(
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
- valueFormatter = (number) => `${number}`,
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
- curveType = "linear"
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement(
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: ["indigo", "cyan", "teal", "green", "yellow", "orange", "red", "slate", "violet", "rose", "pink", "purple", "blue"],
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
- valueFormatter = (number) => `${number}`,
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
- curveType = "linear"
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement(
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: ["indigo", "cyan", "teal", "green", "yellow", "orange", "red", "slate", "violet", "rose", "pink", "purple", "blue"],
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement(
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement("div", { className: "mt-2 ml-2 text-2xl overflow-auto" }, /* @__PURE__ */ React.createElement("span", { className: "text-gray-400" }, "No data")));
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
- const value = Object.values(props.data[0])[0];
120
- return /* @__PURE__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement("div", { className: "mt-2 ml-2 font-bold text-2xl overflow-auto" }, renderValue(value)));
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
- return JSON.stringify(v);
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__ */ React.createElement(ChartBox, __spreadValues({}, props), (data == null ? void 0 : data.length) > 0 ? /* @__PURE__ */ React.createElement(JSONTable_default, { dataSource: data, columnOptions, className: "h-[256px]" }) : /* @__PURE__ */ React.createElement("div", { className: "h-[256px] flex justify-center items-center text-gray-400" }, "No data"));
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
- metricTitle,
135
- metric,
136
- chartType = "area",
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__ */ React.createElement(ChartBox, __spreadValues({}, props), /* @__PURE__ */ React.createElement("div", { className: "mt-4 space-x-6 px-2 flex items-center" }, /* @__PURE__ */ React.createElement("div", { className: "w-auto" }, /* @__PURE__ */ React.createElement(Text, { className: "whitespace-nowrap" }, metricTitle), /* @__PURE__ */ React.createElement("div", { className: "font-bold text-3xl" }, metric)), /* @__PURE__ */ React.createElement(
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__ */ React.createElement(Grid, { numItems: 1, numItemsSm: 1, numItemsLg: 2, numItemsMd: 2, className: "gap-2" }, data.map((item, index) => {
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__ */ React.createElement(Col, { key: index, numColSpanSm: 1, numColSpanMd: (_a = item.numColSpanMd) != null ? _a : 1 }, /* @__PURE__ */ React.createElement(Component, __spreadValues({}, item)));
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__ */ React.createElement(Comp, __spreadValues({}, data));
217
+ return /* @__PURE__ */ React8.createElement(Comp, __spreadValues({}, data));
184
218
  };
185
219
 
186
220
  export { JSONMetricsView, MetricsView };