|
|
|
@ -25,18 +25,26 @@ |
|
|
|
value: { type: [Object, String] as PropType<Record<string, any> | string> }, |
|
|
|
mode: { type: String, default: MODE.JSON }, |
|
|
|
readonly: { type: Boolean }, |
|
|
|
autoFormat: { type: Boolean, default: true }, |
|
|
|
}); |
|
|
|
|
|
|
|
const emit = defineEmits(['change', 'update:value']); |
|
|
|
const emit = defineEmits(['change', 'update:value', 'format-error']); |
|
|
|
|
|
|
|
const getValue = computed(() => { |
|
|
|
const { value, mode } = props; |
|
|
|
if (mode !== MODE.JSON) { |
|
|
|
const { value, mode, autoFormat } = props; |
|
|
|
if (!autoFormat || mode !== MODE.JSON) { |
|
|
|
return value as string; |
|
|
|
} |
|
|
|
return isString(value) |
|
|
|
? JSON.stringify(JSON.parse(value), null, 2) |
|
|
|
: JSON.stringify(value, null, 2); |
|
|
|
let result = value; |
|
|
|
if (isString(value)) { |
|
|
|
try { |
|
|
|
result = JSON.parse(value); |
|
|
|
} catch (e) { |
|
|
|
emit('format-error', value); |
|
|
|
return value as string; |
|
|
|
} |
|
|
|
} |
|
|
|
return JSON.stringify(result, null, 2); |
|
|
|
}); |
|
|
|
|
|
|
|
function handleValueChange(v) { |
|
|
|
|