2021-10-31 14:46:46 -08:00
|
|
|
<template>
|
2025-06-20 00:09:12 +07:00
|
|
|
<JsonEditorVue
|
|
|
|
|
:model-value="modelValue"
|
|
|
|
|
v-bind="$attrs"
|
|
|
|
|
:style="{ height }"
|
|
|
|
|
:stringified="false"
|
|
|
|
|
@change="onChange"
|
|
|
|
|
/>
|
2021-10-31 14:46:46 -08:00
|
|
|
</template>
|
|
|
|
|
|
2026-03-23 21:18:25 +01:00
|
|
|
<script setup lang="ts">
|
2025-06-20 00:09:12 +07:00
|
|
|
import JsonEditorVue from "json-editor-vue";
|
2021-10-31 14:46:46 -08:00
|
|
|
|
2026-03-23 21:18:25 +01:00
|
|
|
const modelValue = defineModel<object>("modelValue", { default: () => ({}) });
|
|
|
|
|
defineProps({
|
|
|
|
|
height: {
|
|
|
|
|
type: String,
|
|
|
|
|
default: "1500px",
|
2025-06-20 00:09:12 +07:00
|
|
|
},
|
2026-03-23 21:18:25 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
function parseEvent(event: any): object {
|
|
|
|
|
if (!event) {
|
|
|
|
|
return modelValue.value || {};
|
|
|
|
|
}
|
|
|
|
|
try {
|
|
|
|
|
if (event.json) {
|
|
|
|
|
return event.json;
|
2025-06-20 00:09:12 +07:00
|
|
|
}
|
2026-03-23 21:18:25 +01:00
|
|
|
else if (event.text) {
|
|
|
|
|
return JSON.parse(event.text);
|
2025-06-20 00:09:12 +07:00
|
|
|
}
|
2026-03-23 21:18:25 +01:00
|
|
|
else {
|
|
|
|
|
return event;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch {
|
|
|
|
|
return modelValue.value || {};
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
function onChange(event: any) {
|
|
|
|
|
const parsed = parseEvent(event);
|
|
|
|
|
if (parsed !== modelValue.value) {
|
|
|
|
|
modelValue.value = parsed;
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-10-31 14:46:46 -08:00
|
|
|
</script>
|