diff options
Diffstat (limited to 'packages/client/src/widgets/button.vue')
| -rw-r--r-- | packages/client/src/widgets/button.vue | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/packages/client/src/widgets/button.vue b/packages/client/src/widgets/button.vue deleted file mode 100644 index f0148d7f4e..0000000000 --- a/packages/client/src/widgets/button.vue +++ /dev/null @@ -1,103 +0,0 @@ -<template> -<div class="mkw-button"> - <MkButton :primary="widgetProps.colored" full @click="run"> - {{ widgetProps.label }} - </MkButton> -</div> -</template> - -<script lang="ts" setup> -import { onMounted, onUnmounted, ref, watch } from 'vue'; -import { AiScript, parse, utils } from '@syuilo/aiscript'; -import { useWidgetPropsManager, Widget, WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget'; -import { GetFormResultType } from '@/scripts/form'; -import * as os from '@/os'; -import { createAiScriptEnv } from '@/scripts/aiscript/api'; -import { $i } from '@/account'; -import MkButton from '@/components/MkButton.vue'; - -const name = 'button'; - -const widgetPropsDef = { - label: { - type: 'string' as const, - default: 'BUTTON', - }, - colored: { - type: 'boolean' as const, - default: true, - }, - script: { - type: 'string' as const, - multiline: true, - default: 'Mk:dialog("hello" "world")', - }, -}; - -type WidgetProps = GetFormResultType<typeof widgetPropsDef>; - -// 現時点ではvueの制限によりimportしたtypeをジェネリックに渡せない -//const props = defineProps<WidgetComponentProps<WidgetProps>>(); -//const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); -const props = defineProps<{ widget?: Widget<WidgetProps>; }>(); -const emit = defineEmits<{ (ev: 'updateProps', props: WidgetProps); }>(); - -const { widgetProps, configure } = useWidgetPropsManager(name, - widgetPropsDef, - props, - emit, -); - -const run = async () => { - const aiscript = new AiScript(createAiScriptEnv({ - storageKey: 'widget', - token: $i?.token, - }), { - in: (q) => { - return new Promise(ok => { - os.inputText({ - title: q, - }).then(({ canceled, result: a }) => { - ok(a); - }); - }); - }, - out: (value) => { - // nop - }, - log: (type, params) => { - // nop - }, - }); - - let ast; - try { - ast = parse(widgetProps.script); - } catch (err) { - os.alert({ - type: 'error', - text: 'Syntax error :(', - }); - return; - } - try { - await aiscript.exec(ast); - } catch (err) { - os.alert({ - type: 'error', - text: err, - }); - } -}; - -defineExpose<WidgetComponentExpose>({ - name, - configure, - id: props.widget ? props.widget.id : null, -}); -</script> - -<style lang="scss" scoped> -.mkw-button { -} -</style> |