diff --git a/src/components/ParamsList/index.js b/src/components/ParamsList/index.js
index ba27ffc2..dd33489a 100644
--- a/src/components/ParamsList/index.js
+++ b/src/components/ParamsList/index.js
@@ -1,168 +1,132 @@
import React from 'react';
import * as antd from 'antd'
import * as Icons from 'components/Icons'
-import { __legacy__objectToArray } from 'core'
+import { __legacy__objectToArray, getCircularReplacer, decycle } from 'core'
+const serializeFlags = {
+ __cycle_flag: true // with id 0
+}
-export default function DebugPanel(data) {
+function isFlagId(e, id) {
+ return serializeFlags[Object.keys(e)[id ?? 0]]
+}
- const serializeFlags = {
- __cycle_flag: true // with id 0
- }
-
- function isFlagId(e, id) {
- return serializeFlags[Object.keys(e)[id ?? 0]]
- }
-
- function getCircularReplacer() {
- const seen = new WeakSet();
- return (key, value) => {
- if (typeof value === "object" && value !== null) {
- if (seen.has(value)) {
- return { __cycle_flag: true }
- }
- seen.add(value)
- }
- return value
- }
- }
-
- function decycle(obj, stack = []) {
- if (!obj || typeof obj !== 'object')
- return obj;
-
- if (stack.includes(obj)) {
- return { __cycle_flag: true }
- }
-
- let s = stack.concat([obj]);
-
- return Array.isArray(obj)
- ? obj.map(x => decycle(x, s))
- : Object.fromEntries(
- Object.entries(obj)
- .map(([k, v]) => [k, decycle(v, s)]));
- }
-
- const getErrorRender = (e, error) => {
- return (
-
-
- This could not be rendered > ({e.key}) [{typeof (e.value)}]
-
-
-
-
-
- {error.toString()}
-
-
-
-
+const getErrorRender = (e, error) => {
+ return (
+
+
+ This could not be rendered > ({e.key}) [{typeof (e.value)}]
- )
- }
+
+
+
+
+ {error.toString()}
+
+
+
+
+
+ )
+}
- const getDecoratorStr = (e, json) => {
- try {
- switch (typeof (e.value)) {
- case "string": {
- return `(${json.length}) characters`
+const getDecoratorStr = (e, json) => {
+ try {
+ switch (typeof (e.value)) {
+ case "string": {
+ return `(${json.length}) characters`
+ }
+ case "object": {
+ if (e.value == null) {
+ return `Empty (null/undefined)`
}
- case "object": {
- if (e.value == null) {
- return `Empty (null/undefined)`
- }
- if (isFlagId(e.value, 0)) {
- return
Cylic
- }
- if (typeof (e.value.length) !== "undefined") {
- return `Lenght (${e.value.length})`
- }
- if (typeof (Object.keys(e.value).length) !== "undefined") {
- return `Lenght (${Object.keys(e.value).length})`
- }
- return `Immeasurable (by error) (not valid object)`
+ if (isFlagId(e.value, 0)) {
+ return
Cylic
}
- case "array": {
+ if (typeof (e.value.length) !== "undefined") {
return `Lenght (${e.value.length})`
}
- case "boolean": {
- return
{e.value ? "true" : "false"}
+ if (typeof (Object.keys(e.value).length) !== "undefined") {
+ return `Lenght (${Object.keys(e.value).length})`
}
- case "number": {
- return
{e.value}
- }
- default:
- return `Immeasurable / Invalid`
+ return `Immeasurable (by error) (not valid object)`
}
- } catch (error) {
- return
Immeasurable (by error)
+ case "array": {
+ return `Lenght (${e.value.length})`
+ }
+ case "boolean": {
+ return
{e.value ? "true" : "false"}
+ }
+ case "number": {
+ return
{e.value}
+ }
+ default:
+ return `Immeasurable / Invalid`
}
+ } catch (error) {
+ return
Immeasurable (by error)
}
+}
- const getContent = (e) => {
- try {
- switch (typeof (e.value)) {
- case "string": {
- return e.value
- }
- case "object": {
- if (e.value == null) {
- return `${e.value}`
- }
- if (isFlagId(e.value, 0)) {
- return
- This cannot be rendered because a cylic has been detected
-
- }
- if (Object.keys(e.value).length > 0) { // trying create nested
- return
- {DebugPanel(e.value)}
-
- }
- return JSON.stringify(e.value, getCircularReplacer())
- }
- case "array": {
- return JSON.stringify(e.value, getCircularReplacer())
- }
- case "boolean": {
- return `${e.value}`
- }
- default:
- return `${e.value}`
+const getContent = (e) => {
+ try {
+ switch (typeof (e.value)) {
+ case "string": {
+ return e.value
}
+ case "object": {
+ if (e.value == null) {
+ return `${e.value}`
+ }
+ if (isFlagId(e.value, 0)) {
+ return
+ This cannot be rendered because a cylic has been detected
+
+ }
+ if (Object.keys(e.value).length > 0) { // trying create nested
+ return
+ {DebugPanel(e.value)}
+
+ }
+ return JSON.stringify(e.value, getCircularReplacer())
+ }
+ case "array": {
+ return JSON.stringify(e.value, getCircularReplacer())
+ }
+ case "boolean": {
+ return `${e.value}`
+ }
+ default:
+ return `${e.value}`
+ }
+ } catch (error) {
+ return getErrorRender(e, error)
+ }
+}
+
+const getType = (e) => {
+ if (e !== null && isFlagId(e, 0)) {
+ return `[loop]`
+ }
+ return `[${typeof (e)}]`
+}
+
+export default function DebugPanel(data) {
+ if (!data) return false
+ return __legacy__objectToArray(decycle(data)).map(e => {
+ try {
+ const content = getContent(e)
+ return (
+
+ {getType(e.value)} {e.key} | {getDecoratorStr(e, content)} } >
+