change(frontend): 動的ページのコンポーネントを削除
This commit is contained in:
parent
8c97c54cfa
commit
a979fb9207
12 changed files with 1 additions and 609 deletions
|
@ -7,24 +7,13 @@ import { defineComponent, PropType } from 'vue';
|
||||||
import XText from './page.text.vue';
|
import XText from './page.text.vue';
|
||||||
import XSection from './page.section.vue';
|
import XSection from './page.section.vue';
|
||||||
import XImage from './page.image.vue';
|
import XImage from './page.image.vue';
|
||||||
import XButton from './page.button.vue';
|
|
||||||
import XNumberInput from './page.number-input.vue';
|
|
||||||
import XTextInput from './page.text-input.vue';
|
|
||||||
import XTextareaInput from './page.textarea-input.vue';
|
|
||||||
import XSwitch from './page.switch.vue';
|
|
||||||
import XIf from './page.if.vue';
|
|
||||||
import XTextarea from './page.textarea.vue';
|
|
||||||
import XPost from './page.post.vue';
|
|
||||||
import XCounter from './page.counter.vue';
|
|
||||||
import XRadioButton from './page.radio-button.vue';
|
|
||||||
import XCanvas from './page.canvas.vue';
|
|
||||||
import XNote from './page.note.vue';
|
import XNote from './page.note.vue';
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
import { Hpml } from '@/scripts/hpml/evaluator';
|
||||||
import { Block } from '@/scripts/hpml/block';
|
import { Block } from '@/scripts/hpml/block';
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
components: {
|
components: {
|
||||||
XText, XSection, XImage, XButton, XNumberInput, XTextInput, XTextareaInput, XTextarea, XPost, XSwitch, XIf, XCounter, XRadioButton, XCanvas, XNote,
|
XText, XSection, XImage, XNote,
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
block: {
|
block: {
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<MkButton :class="$style.button" :primary="block.primary" @click="click()">{{ hpml.interpolate(block.text) }}</MkButton>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { defineComponent, PropType, unref } from 'vue';
|
|
||||||
import MkButton from '../MkButton.vue';
|
|
||||||
import * as os from '@/os';
|
|
||||||
import { ButtonBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkButton,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<ButtonBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
click() {
|
|
||||||
if (this.block.action === 'dialog') {
|
|
||||||
this.hpml.eval();
|
|
||||||
os.alert({
|
|
||||||
text: this.hpml.interpolate(this.block.content),
|
|
||||||
});
|
|
||||||
} else if (this.block.action === 'resetRandom') {
|
|
||||||
this.hpml.updateRandomSeed(Math.random());
|
|
||||||
this.hpml.eval();
|
|
||||||
} else if (this.block.action === 'pushEvent') {
|
|
||||||
os.api('page-push', {
|
|
||||||
pageId: this.hpml.page.id,
|
|
||||||
event: this.block.event,
|
|
||||||
...(this.block.var ? {
|
|
||||||
var: unref(this.hpml.vars)[this.block.var],
|
|
||||||
} : {}),
|
|
||||||
});
|
|
||||||
|
|
||||||
os.alert({
|
|
||||||
type: 'success',
|
|
||||||
text: this.hpml.interpolate(this.block.message),
|
|
||||||
});
|
|
||||||
} else if (this.block.action === 'callAiScript') {
|
|
||||||
this.hpml.callAiScript(this.block.fn);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" module>
|
|
||||||
.button {
|
|
||||||
display: inline-block;
|
|
||||||
min-width: 200px;
|
|
||||||
max-width: 450px;
|
|
||||||
margin: 8px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,48 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="ysrxegms">
|
|
||||||
<canvas ref="canvas" :width="block.width" :height="block.height"/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { defineComponent, onMounted, PropType, Ref, ref } from 'vue';
|
|
||||||
import { CanvasBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<CanvasBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const canvas: Ref<any> = ref(null);
|
|
||||||
|
|
||||||
onMounted(() => {
|
|
||||||
props.hpml.registerCanvas(props.block.name, canvas.value);
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
canvas,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.ysrxegms {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: bottom;
|
|
||||||
overflow: auto;
|
|
||||||
max-width: 100%;
|
|
||||||
|
|
||||||
> canvas {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,51 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<MkButton :class="$style.button" @click="click()">{{ hpml.interpolate(block.text) }}</MkButton>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkButton from '../MkButton.vue';
|
|
||||||
import { CounterVarBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkButton,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<CounterVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function click() {
|
|
||||||
props.hpml.updatePageVar(props.block.name, value.value + (props.block.inc || 1));
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
click,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" module>
|
|
||||||
.button {
|
|
||||||
display: inline-block;
|
|
||||||
min-width: 300px;
|
|
||||||
max-width: 450px;
|
|
||||||
margin: 8px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,31 +0,0 @@
|
||||||
<template>
|
|
||||||
<div v-show="hpml.vars.value[block.var]">
|
|
||||||
<XBlock v-for="child in block.children" :key="child.id" :block="child" :hpml="hpml" :h="h"/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { IfBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { defineComponent, defineAsyncComponent, PropType } from 'vue';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
XBlock: defineAsyncComponent(() => import('./page.block.vue')),
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<IfBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
h: {
|
|
||||||
type: Number,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,54 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<MkInput :class="$style.input" :model-value="value" type="number" @update:model-value="updateValue($event)">
|
|
||||||
<template #label>{{ hpml.interpolate(block.text) }}</template>
|
|
||||||
</MkInput>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkInput from '../MkInput.vue';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { NumberInputVarBlock } from '@/scripts/hpml/block';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkInput,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<NumberInputVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateValue(newValue) {
|
|
||||||
props.hpml.updatePageVar(props.block.name, newValue);
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value,
|
|
||||||
updateValue,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" module>
|
|
||||||
.input {
|
|
||||||
display: inline-block;
|
|
||||||
min-width: 300px;
|
|
||||||
max-width: 450px;
|
|
||||||
margin: 8px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,111 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="ngbfujlo">
|
|
||||||
<MkTextarea :model-value="text" readonly style="margin: 0;"></MkTextarea>
|
|
||||||
<MkButton class="button" primary :disabled="posting || posted" @click="post()">
|
|
||||||
<i v-if="posted" class="ti ti-check"></i>
|
|
||||||
<i v-else class="ti ti-send"></i>
|
|
||||||
</MkButton>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { defineComponent, PropType } from 'vue';
|
|
||||||
import MkTextarea from '../MkTextarea.vue';
|
|
||||||
import MkButton from '../MkButton.vue';
|
|
||||||
import { apiUrl } from '@/config';
|
|
||||||
import * as os from '@/os';
|
|
||||||
import { PostBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { defaultStore } from '@/store';
|
|
||||||
import { $i } from '@/account';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkTextarea,
|
|
||||||
MkButton,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<PostBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
text: this.hpml.interpolate(this.block.text),
|
|
||||||
posted: false,
|
|
||||||
posting: false,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
'hpml.vars': {
|
|
||||||
handler() {
|
|
||||||
this.text = this.hpml.interpolate(this.block.text);
|
|
||||||
},
|
|
||||||
deep: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
upload() {
|
|
||||||
const promise = new Promise((ok) => {
|
|
||||||
const canvas = this.hpml.canvases[this.block.canvasId];
|
|
||||||
canvas.toBlob(blob => {
|
|
||||||
const formData = new FormData();
|
|
||||||
formData.append('file', blob);
|
|
||||||
formData.append('i', $i.token);
|
|
||||||
if (defaultStore.state.uploadFolder) {
|
|
||||||
formData.append('folderId', defaultStore.state.uploadFolder);
|
|
||||||
}
|
|
||||||
|
|
||||||
window.fetch(apiUrl + '/drive/files/create', {
|
|
||||||
method: 'POST',
|
|
||||||
body: formData,
|
|
||||||
})
|
|
||||||
.then(response => response.json())
|
|
||||||
.then(f => {
|
|
||||||
ok(f);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
os.promiseDialog(promise);
|
|
||||||
return promise;
|
|
||||||
},
|
|
||||||
async post() {
|
|
||||||
this.posting = true;
|
|
||||||
const file = this.block.attachCanvasImage ? await this.upload() : null;
|
|
||||||
os.apiWithDialog('notes/create', {
|
|
||||||
text: this.text === '' ? null : this.text,
|
|
||||||
fileIds: file ? [file.id] : undefined,
|
|
||||||
}).then(() => {
|
|
||||||
this.posted = true;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.ngbfujlo {
|
|
||||||
position: relative;
|
|
||||||
padding: 32px;
|
|
||||||
border-radius: 6px;
|
|
||||||
box-shadow: 0 2px 8px var(--shadow);
|
|
||||||
z-index: 1;
|
|
||||||
|
|
||||||
> .button {
|
|
||||||
margin-top: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 600px) {
|
|
||||||
padding: 16px;
|
|
||||||
|
|
||||||
> .button {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,44 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<div>{{ hpml.interpolate(block.title) }}</div>
|
|
||||||
<MkRadio v-for="item in block.values" :key="item" :modelValue="value" :value="item" @update:model-value="updateValue($event)">{{ item }}</MkRadio>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkRadio from '../MkRadio.vue';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { RadioButtonVarBlock } from '@/scripts/hpml/block';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkRadio,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<RadioButtonVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateValue(newValue: string) {
|
|
||||||
props.hpml.updatePageVar(props.block.name, newValue);
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value,
|
|
||||||
updateValue,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,54 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="hkcxmtwj">
|
|
||||||
<MkSwitch :model-value="value" @update:model-value="updateValue($event)">{{ hpml.interpolate(block.text) }}</MkSwitch>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkSwitch from '../MkSwitch.vue';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { SwitchVarBlock } from '@/scripts/hpml/block';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkSwitch,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<SwitchVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateValue(newValue: boolean) {
|
|
||||||
props.hpml.updatePageVar(props.block.name, newValue);
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value,
|
|
||||||
updateValue,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
|
||||||
.hkcxmtwj {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 16px auto;
|
|
||||||
|
|
||||||
& + .hkcxmtwj {
|
|
||||||
margin-left: 16px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,54 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<MkInput :class="$style.input" :model-value="value" type="text" @update:model-value="updateValue($event)">
|
|
||||||
<template #label>{{ hpml.interpolate(block.text) }}</template>
|
|
||||||
</MkInput>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkInput from '../MkInput.vue';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { TextInputVarBlock } from '@/scripts/hpml/block';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkInput,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<TextInputVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateValue(newValue) {
|
|
||||||
props.hpml.updatePageVar(props.block.name, newValue);
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value,
|
|
||||||
updateValue,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss" module>
|
|
||||||
.input {
|
|
||||||
display: inline-block;
|
|
||||||
min-width: 300px;
|
|
||||||
max-width: 450px;
|
|
||||||
margin: 8px 0;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,45 +0,0 @@
|
||||||
<template>
|
|
||||||
<div>
|
|
||||||
<MkTextarea :model-value="value" @update:model-value="updateValue($event)">
|
|
||||||
<template #label>{{ hpml.interpolate(block.text) }}</template>
|
|
||||||
</MkTextarea>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { computed, defineComponent, PropType } from 'vue';
|
|
||||||
import MkTextarea from '../MkTextarea.vue';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { TextInputVarBlock } from '@/scripts/hpml/block';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkTextarea,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<TextInputVarBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, ctx) {
|
|
||||||
const value = computed(() => {
|
|
||||||
return props.hpml.vars.value[props.block.name];
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateValue(newValue) {
|
|
||||||
props.hpml.updatePageVar(props.block.name, newValue);
|
|
||||||
props.hpml.eval();
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
value,
|
|
||||||
updateValue,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
|
@ -1,39 +0,0 @@
|
||||||
<template>
|
|
||||||
<MkTextarea :model-value="text" readonly></MkTextarea>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script lang="ts">
|
|
||||||
import { TextBlock } from '@/scripts/hpml/block';
|
|
||||||
import { Hpml } from '@/scripts/hpml/evaluator';
|
|
||||||
import { defineComponent, PropType } from 'vue';
|
|
||||||
import MkTextarea from '../MkTextarea.vue';
|
|
||||||
|
|
||||||
export default defineComponent({
|
|
||||||
components: {
|
|
||||||
MkTextarea,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
block: {
|
|
||||||
type: Object as PropType<TextBlock>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
hpml: {
|
|
||||||
type: Object as PropType<Hpml>,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
text: this.hpml.interpolate(this.block.text),
|
|
||||||
};
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
'hpml.vars': {
|
|
||||||
handler() {
|
|
||||||
this.text = this.hpml.interpolate(this.block.text);
|
|
||||||
},
|
|
||||||
deep: true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
</script>
|
|
Loading…
Reference in a new issue