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>
|
|
|
|
|
2022-01-09 07:15:23 +01:00
|
|
|
<script lang="ts">
|
2025-06-20 00:09:12 +07:00
|
|
|
import { defineComponent } from "vue";
|
|
|
|
import JsonEditorVue from "json-editor-vue";
|
2021-10-31 14:46:46 -08:00
|
|
|
|
2022-01-09 07:15:23 +01:00
|
|
|
export default defineComponent({
|
2025-06-20 00:09:12 +07:00
|
|
|
name: "RecipeJsonEditor",
|
|
|
|
components: { JsonEditorVue },
|
2021-10-31 14:46:46 -08:00
|
|
|
props: {
|
2025-06-20 00:09:12 +07:00
|
|
|
modelValue: {
|
2021-10-31 14:46:46 -08:00
|
|
|
type: Object,
|
|
|
|
default: () => ({}),
|
|
|
|
},
|
2024-09-30 10:52:13 -05:00
|
|
|
height: {
|
|
|
|
type: String,
|
|
|
|
default: "1500px",
|
|
|
|
},
|
2025-06-20 00:09:12 +07:00
|
|
|
},
|
|
|
|
emits: ["update:modelValue"],
|
|
|
|
setup(_, { emit }) {
|
|
|
|
function parseEvent(event: any): object {
|
|
|
|
if (!event) {
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
try {
|
|
|
|
if (event.json) {
|
|
|
|
return event.json;
|
|
|
|
}
|
|
|
|
else if (event.text) {
|
|
|
|
return JSON.parse(event.text);
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return event;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
catch {
|
|
|
|
return {};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
function onChange(event: any) {
|
|
|
|
emit("update:modelValue", parseEvent(event));
|
|
|
|
}
|
|
|
|
return {
|
|
|
|
onChange,
|
|
|
|
};
|
2021-10-31 14:46:46 -08:00
|
|
|
},
|
2022-01-09 07:15:23 +01:00
|
|
|
});
|
2021-10-31 14:46:46 -08:00
|
|
|
</script>
|