mirror of
https://github.com/mealie-recipes/mealie.git
synced 2026-04-06 04:55:35 -04:00
48 lines
867 B
Vue
48 lines
867 B
Vue
<template>
|
|
<JsonEditorVue
|
|
:model-value="modelValue"
|
|
v-bind="$attrs"
|
|
:style="{ height }"
|
|
:stringified="false"
|
|
@change="onChange"
|
|
/>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import JsonEditorVue from "json-editor-vue";
|
|
|
|
const modelValue = defineModel<object>("modelValue", { default: () => ({}) });
|
|
defineProps({
|
|
height: {
|
|
type: String,
|
|
default: "1500px",
|
|
},
|
|
});
|
|
|
|
function parseEvent(event: any): object {
|
|
if (!event) {
|
|
return modelValue.value || {};
|
|
}
|
|
try {
|
|
if (event.json) {
|
|
return event.json;
|
|
}
|
|
else if (event.text) {
|
|
return JSON.parse(event.text);
|
|
}
|
|
else {
|
|
return event;
|
|
}
|
|
}
|
|
catch {
|
|
return modelValue.value || {};
|
|
}
|
|
}
|
|
function onChange(event: any) {
|
|
const parsed = parseEvent(event);
|
|
if (parsed !== modelValue.value) {
|
|
modelValue.value = parsed;
|
|
}
|
|
}
|
|
</script>
|