@dappworks/kit 0.4.68 → 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.mjs +20 -37
- 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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import BN from \"bignumber.js\";\nimport JSONFormat from \"json-format\";\nimport { _ } from \"./lodash\";\nimport copy from \"copy-to-clipboard\";\nimport numeral from 'numeral';\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};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/standard/base.ts","../store/standard/PromiseState.ts"],"names":["makeAutoObservable"],"mappings":"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","sourcesContent":["import { makeAutoObservable } from \"mobx\";\n\nimport { type RootStore } from \"../root\";\n\nexport abstract class Store {\n sid?: string;\n stype?: string;\n disabled?: boolean;\n autoObservable?: boolean;\n autoAsyncable?: boolean;\n\n stores?: Store[];\n\n private pannel?: {\n title: string;\n render: any;\n };\n devtools?: {\n enable?: boolean;\n started?: boolean;\n panels: Store[\"pannel\"][];\n };\n\n private slot?: {\n name?: string;\n input?: Record<string, any>;\n render: React.FC;\n };\n slots?: Record<string, Store[\"slot\"]>;\n\n events?: Record<string, { name: string; handler(args: { e: MouseEvent; v?: any }): any }>;\n\n provider?({ rootStore }: { rootStore: RootStore }): any;\n\n onNewStore?({ rootStore, store }: { rootStore: RootStore; store: Store }): void;\n onAddedStores?({ rootStore }: { rootStore: RootStore }): void;\n onAdded?({ rootStore }: { rootStore: RootStore }): void;\n\n init?(): void;\n JSONView?: Record<string, { name: string; render: React.FC }>;\n\n onKeyBindings?: () => { key: string; fn: () => void }[];\n}\n\nexport type StoreClass<T extends Store> = new (...args: any[]) => T;\n\nexport interface BaseState {\n value: number;\n setValue(value: any): any;\n}\n\nexport class StringState<T extends string> {\n //@ts-ignore\n value: T = null;\n constructor(args: Partial<StringState<T>> = {}) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n setValue(value: T) {\n this.value = value;\n }\n}\n\nexport class BooleanState {\n value: boolean = false;\n constructor(args: Partial<BooleanState> = {}) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n setValue(value: boolean) {\n this.value = value;\n }\n}\n\nexport class NumberState {\n value: number = 0;\n constructor(args: Partial<NumberState> = {}) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n setValue(value: number) {\n this.value = value;\n }\n}\n\nexport class ValueState<T> {\n //@ts-ignore\n _value: T = null;\n constructor(args: Partial<ValueState<T>> = {}) {\n Object.assign(this, args);\n makeAutoObservable(this);\n }\n\n get value() {\n return this.getValue ? this.getValue(this._value) : this._value;\n }\n set value(value) {\n this._value = value;\n }\n\n getValue: (value: T) => T;\n\n setValue(value: T) {\n this._value = value;\n }\n}\n\n// export interface Events {\n// data: (data: any) => void;\n// error: (error: any) => void;\n// update: () => void;\n// wait: () => void;\n// }\n","import { EventEmitter } from \"events\";\nimport { makeAutoObservable } from \"mobx\";\n\nimport { ToastPlugin } from \"../../module/Toast/Toast\";\nimport { RootStore } from \"../root\";\nimport { BaseState, BooleanState, NumberState } from \"./base\";\n\nexport interface Events {\n data: (data: any) => void;\n error: (error: any) => void;\n select: (index: number) => void;\n update: () => void;\n finally: () => void;\n wait: () => void;\n}\n\nexport class PromiseState<T extends (...args: any[]) => Promise<any>, U = ReturnType<T>> {\n sid = \"PromiseState\";\n key?: string;\n loading = new BooleanState();\n //@ts-ignore\n value?: Awaited<U> = null;\n defaultValue: any = null;\n function: T;\n transform?: (value: any) => Promise<Awaited<U>> | Awaited<U> = null;\n\n autoAlert = true;\n context: any = undefined;\n\n successMsg: string = \"\";\n errMsg: string = \"\";\n\n loadingLock = true;\n\n // event plugin\n event = new EventEmitter();\n\n on<E extends keyof Events>(event: E, listener: Events[E]) {\n this.event.on(event, listener);\n return this;\n }\n\n emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>) {\n this.event.emit(event, ...args);\n }\n\n // init plugin\n init: () => Promise<void>;\n\n // list selector plugin\n currentIndex: BaseState = new NumberState({ value: 0 });\n get current() {\n if (Array.isArray(this.value) && this.value.length > 0 && !this.value[this.currentIndex.value]) {\n this.currentIndex.setValue(0);\n }\n //@ts-ignore\n return this.value[this.currentIndex.value];\n }\n _onSelect(index: number) {\n this.currentIndex.setValue(index);\n this.event.emit(\"select\", index);\n this.event.emit(\"update\");\n }\n\n onSelect(index: number) {\n this._onSelect(index);\n }\n\n toJSON() {\n return {\n value: this.value,\n };\n }\n //@ts-ignore\n async waitItem(): Promise<Awaited<U>[0]> {\n await this.wait();\n return this.current;\n }\n\n // wait hook plugin\n async wait({ call = false } = {}): Promise<Awaited<U>> {\n return new Promise<Awaited<U>>((res, rej) => {\n if (this.value) {\n if (Array.isArray(this.value)) {\n if (this.value.length > 0) {\n res(this.value);\n }\n } else {\n res(this.value);\n }\n }\n\n //@ts-ignore\n if (call && !this.loading.value) this.call();\n this.event.emit(\"wait\");\n this.event.once(\"data\", res);\n this.event.on(\"error\", rej);\n });\n }\n\n // devtool plugin\n debug: { name: string; input: Record<string, any> } = null;\n\n constructor(args: Partial<PromiseState<T, U>> = {}) {\n Object.assign(this, args);\n if (this.defaultValue) {\n this.value = this.defaultValue;\n }\n if (this.key) {\n RootStore.init().add(this, { sid: this.key });\n } else {\n makeAutoObservable(this);\n }\n }\n\n async setValue(val) {\n let _val = val;\n if (this.transform) {\n _val = await this.transform(val);\n }\n this.value = _val;\n this.event.emit(\"data\", val);\n this.event.emit(\"update\");\n }\n //@ts-ignore\n async call(...args: Parameters<T>): Promise<Awaited<U>> {\n const toast = RootStore.Get(ToastPlugin);\n try {\n //@ts-ignore\n if (this.loadingLock && this.loading.value == true) return;\n this.loading.setValue(true);\n const res = await this.function.apply(this.context, args);\n this.setValue(res);\n if (this.autoAlert && this.successMsg && res) {\n toast.success(this.successMsg);\n }\n return res;\n } catch (error) {\n if (this.autoAlert) {\n const message = error.message;\n const msg = /reason=\"[A-Za-z0-9_ :\"]*/g.exec(error?.message);\n if (message?.includes('User rejected the request') || String(error).toLowerCase().includes('user rejected')) {\n toast.error('User rejected the request');\n } else if (message.includes(\"UNAUTHORIZED\")) {\n } else {\n if (msg) {\n console.log(4567)\n this.errMsg = msg as unknown as string;\n toast.error(msg as unknown as string);\n } else {\n this.errMsg = message;\n toast.error(message);\n }\n }\n } else {\n this.event.emit(\"error\", error);\n throw error;\n }\n } finally {\n this.event.emit(\"finally\");\n this.loading.setValue(false);\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../module/Toast/Toast.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW;AAClB,OAAO,SAAS,eAAe;AAIxB,IAAM,cAAN,MAAmC;AAAA,EAAnC;AACL,eAAM;AACN,oBAAW,MAAM,oCAAC,aAAQ;AAE1B,mBAAU,MAAM;AAChB,iBAAQ,MAAM;AACd,mBAAU,MAAM;AAChB,kBAAS,MAAM;AACf,mBAAU,MAAM;AAChB,kBAAS,MAAM;AACf,mBAAU,MAAM;AAAA;AAClB","sourcesContent":["import React from \"react\";\nimport toast, { Toaster } from \"react-hot-toast\";\n\nimport { type Store } from \"../../store/standard/base\";\n\nexport class ToastPlugin implements Store {\n sid = \"ToastPlugin\";\n provider = () => <Toaster />;\n\n success = toast.success;\n error = toast.error;\n loading = toast.loading;\n custom = toast.custom;\n dismiss = toast.dismiss;\n remove = toast.remove;\n promise = toast.promise;\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../store/index.ts"],"names":[],"mappings":";;;;;AAMO,IAAM,YAAY,UAAU,KAAsB;AAClD,IAAM,WAAW,MAAM,UAAU,KAAK","sourcesContent":["import { RootStore, EventMap } from \"./root\";\n\nexport type DefaultEventMap = {\n \"next.signIn.github\": () => void;\n} & EventMap;\n\nexport const rootStore = RootStore.init<DefaultEventMap>();\nexport const useStore = () => RootStore.init();\nexport { RootStore };\n"]}
|
package/dist/chunk-ZPPKSMXO.mjs
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { _ } from './chunk-MGU3KYGC.mjs';
|
|
2
|
-
import { cn } from './chunk-6UHBBDKI.mjs';
|
|
3
|
-
import React, { useRef } from 'react';
|
|
4
|
-
import MonacoEditor from '@monaco-editor/react';
|
|
5
|
-
import * as jsonpatch from 'fast-json-patch';
|
|
6
|
-
import { Button } from '@nextui-org/react';
|
|
7
|
-
|
|
8
|
-
var JSONEditor = ({ className, height = "100%", initialJson, onChange, onSubmit }) => {
|
|
9
|
-
const valueRef = useRef(initialJson);
|
|
10
|
-
const changeValueRef = useRef(
|
|
11
|
-
_.debounce((initialJson2, currentJson) => {
|
|
12
|
-
if (onChange) {
|
|
13
|
-
try {
|
|
14
|
-
const tree1 = JSON.parse(initialJson2);
|
|
15
|
-
const tree2 = JSON.parse(currentJson);
|
|
16
|
-
const diff = jsonpatch.compare(tree1, tree2);
|
|
17
|
-
const applyDiff = (diff2) => {
|
|
18
|
-
const result2 = {};
|
|
19
|
-
for (const change of diff2) {
|
|
20
|
-
const { op, path, value } = change;
|
|
21
|
-
const keys = path.split("/").filter((key) => key !== "");
|
|
22
|
-
let current = result2;
|
|
23
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
24
|
-
const key = keys[i];
|
|
25
|
-
if (!current[key]) {
|
|
26
|
-
current[key] = {};
|
|
27
|
-
}
|
|
28
|
-
current = current[key];
|
|
29
|
-
}
|
|
30
|
-
let lastKey = keys[keys.length - 1];
|
|
31
|
-
lastKey = lastKey.replace("~1", "/");
|
|
32
|
-
if (op === "replace") {
|
|
33
|
-
current[lastKey] = value;
|
|
34
|
-
}
|
|
35
|
-
if (op === "add") {
|
|
36
|
-
current[lastKey] = value;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return result2;
|
|
40
|
-
};
|
|
41
|
-
const result = applyDiff(diff);
|
|
42
|
-
if (Object.keys(result).length > 0) {
|
|
43
|
-
onChange(result);
|
|
44
|
-
}
|
|
45
|
-
} catch (error) {
|
|
46
|
-
console.error(error);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}, 1e3)
|
|
50
|
-
);
|
|
51
|
-
return /* @__PURE__ */ React.createElement("div", { className: cn("relative w-full", className) }, /* @__PURE__ */ React.createElement(
|
|
52
|
-
MonacoEditor,
|
|
53
|
-
{
|
|
54
|
-
options: {
|
|
55
|
-
minimap: {
|
|
56
|
-
enabled: false
|
|
57
|
-
}
|
|
58
|
-
},
|
|
59
|
-
height,
|
|
60
|
-
theme: "vs-dark",
|
|
61
|
-
language: "json",
|
|
62
|
-
value: initialJson,
|
|
63
|
-
onChange: (v) => {
|
|
64
|
-
var _a;
|
|
65
|
-
(_a = changeValueRef.current) == null ? void 0 : _a.call(changeValueRef, initialJson, v);
|
|
66
|
-
valueRef.current = v;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
), onSubmit && /* @__PURE__ */ React.createElement(
|
|
70
|
-
Button,
|
|
71
|
-
{
|
|
72
|
-
className: "z-50 absolute bottom-[50px] right-[20px]",
|
|
73
|
-
color: "primary",
|
|
74
|
-
size: "sm",
|
|
75
|
-
onClick: () => {
|
|
76
|
-
try {
|
|
77
|
-
const json = JSON.parse(valueRef.current);
|
|
78
|
-
onSubmit(json);
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.error(error);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
},
|
|
84
|
-
"Submit"
|
|
85
|
-
));
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export { JSONEditor };
|
|
89
|
-
//# sourceMappingURL=out.js.map
|
|
90
|
-
//# sourceMappingURL=chunk-ZPPKSMXO.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/JSONEditor/index.tsx"],"names":["initialJson","diff","result"],"mappings":";;;;;;;;AAEA,OAAO,SAAS,cAAc;AAC9B,OAAO,kBAAkB;AAEzB,YAAY,eAAe;AAE3B,SAAS,cAAc;AAIhB,IAAM,aAAa,CAAC,EAAE,WAAW,SAAS,QAAQ,aAAa,UAAU,SAAS,MAA+K;AACtQ,QAAM,WAAW,OAAe,WAAW;AAC3C,QAAM,iBAAiB;AAAA,IACrB,EAAE,SAAS,CAACA,cAAqB,gBAAwB;AACvD,UAAI,UAAU;AACZ,YAAI;AACF,gBAAM,QAAQ,KAAK,MAAMA,YAAW;AACpC,gBAAM,QAAQ,KAAK,MAAM,WAAW;AACpC,gBAAM,OAAiB,kBAAQ,OAAO,KAAK;AAE3C,gBAAM,YAAY,CAACC,UAAS;AAC1B,kBAAMC,UAAS,CAAC;AAChB,uBAAW,UAAUD,OAAM;AACzB,oBAAM,EAAE,IAAI,MAAM,MAAM,IAAI;AAE5B,oBAAM,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,QAAQ,QAAQ,EAAE;AACvD,kBAAI,UAAUC;AACd,uBAAS,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,KAAK;AACxC,sBAAM,MAAM,KAAK,CAAC;AAElB,oBAAI,CAAC,QAAQ,GAAG,GAAG;AAEjB,0BAAQ,GAAG,IAAI,CAAC;AAAA,gBAClB;AAEA,0BAAU,QAAQ,GAAG;AAAA,cACvB;AACA,kBAAI,UAAU,KAAK,KAAK,SAAS,CAAC;AAClC,wBAAU,QAAQ,QAAQ,MAAM,GAAG;AACnC,kBAAI,OAAO,WAAW;AAEpB,wBAAQ,OAAO,IAAI;AAAA,cACrB;AACA,kBAAI,OAAO,OAAO;AAEhB,wBAAQ,OAAO,IAAI;AAAA,cACrB;AAAA,YACF;AACA,mBAAOA;AAAA,UACT;AACA,gBAAM,SAAS,UAAU,IAAI;AAC7B,cAAI,OAAO,KAAK,MAAM,EAAE,SAAS,GAAG;AAClC,qBAAS,MAAM;AAAA,UACjB;AAAA,QACF,SAAS,OAAO;AACd,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAAA,MACF;AAAA,IACF,GAAG,GAAI;AAAA,EACT;AAEA,SACE,oCAAC,SAAI,WAAW,GAAG,mBAAmB,SAAS,KAC7C;AAAA,IAAC;AAAA;AAAA,MACC,SAAS;AAAA,QACP,SAAS;AAAA,UACP,SAAS;AAAA,QACX;AAAA,MACF;AAAA,MACA;AAAA,MACA,OAAM;AAAA,MACN,UAAS;AAAA,MACT,OAAO;AAAA,MACP,UAAU,CAAC,MAAM;AA1EzB;AA2EU,6BAAe,YAAf,wCAAyB,aAAa;AAEtC,iBAAS,UAAU;AAAA,MACrB;AAAA;AAAA,EACF,GACC,YACC;AAAA,IAAC;AAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAM;AAAA,MACN,MAAK;AAAA,MACL,SAAS,MAAM;AACb,YAAI;AACF,gBAAM,OAAO,KAAK,MAAM,SAAS,OAAO;AACxC,mBAAS,IAAI;AAAA,QACf,SAAS,OAAO;AACd,kBAAQ,MAAM,KAAK;AAAA,QACrB;AAAA,MACF;AAAA;AAAA,IAAG;AAAA,EAEL,CAEJ;AAEJ","sourcesContent":["\"use client\";\n\nimport React, { useRef } from \"react\";\nimport MonacoEditor from \"@monaco-editor/react\";\nimport { _ } from \"../../lib/lodash\";\nimport * as jsonpatch from \"fast-json-patch\";\nimport { cn } from \"../../lib/utils\";\nimport { Button } from '@nextui-org/react';\n\n\n\nexport const JSONEditor = ({ className, height = \"100%\", initialJson, onChange, onSubmit }: { className?: string; height?: string | number; initialJson: string; onChange?: (value: Record<string, any>) => void; onSubmit?: (value: Record<string, any>) => void }) => {\n const valueRef = useRef<string>(initialJson);\n const changeValueRef = useRef(\n _.debounce((initialJson: string, currentJson: string) => {\n if (onChange) {\n try {\n const tree1 = JSON.parse(initialJson);\n const tree2 = JSON.parse(currentJson);\n const diff = jsonpatch.compare(tree1, tree2);\n // @ts-ignore\n const applyDiff = (diff) => {\n const result = {};\n for (const change of diff) {\n const { op, path, value } = change;\n // @ts-ignore\n const keys = path.split(\"/\").filter((key) => key !== \"\");\n let current = result;\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n // @ts-ignore\n if (!current[key]) {\n // @ts-ignore\n current[key] = {};\n }\n // @ts-ignore\n current = current[key];\n }\n let lastKey = keys[keys.length - 1];\n lastKey = lastKey.replace('~1', '/');\n if (op === \"replace\") {\n // @ts-ignore\n current[lastKey] = value;\n }\n if (op === \"add\") {\n // @ts-ignore\n current[lastKey] = value;\n }\n }\n return result;\n };\n const result = applyDiff(diff);\n if (Object.keys(result).length > 0) {\n onChange(result);\n }\n } catch (error) {\n console.error(error);\n }\n }\n }, 1000)\n );\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <MonacoEditor\n options={{\n minimap: {\n enabled: false,\n },\n }}\n height={height}\n theme=\"vs-dark\"\n language=\"json\"\n value={initialJson}\n onChange={(v) => {\n changeValueRef.current?.(initialJson, v);\n // @ts-ignore\n valueRef.current = v;\n }}\n />\n {onSubmit && (\n <Button\n className=\"z-50 absolute bottom-[50px] right-[20px]\"\n color='primary'\n size='sm'\n onClick={() => {\n try {\n const json = JSON.parse(valueRef.current);\n onSubmit(json);\n } catch (error) {\n console.error(error);\n }\n }}>\n Submit\n </Button>\n )}\n </div>\n );\n};\n\n"]}
|
|
File without changes
|
|
File without changes
|