1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <template>
- <div class="preview">
- <div class="meta2d-canvas" ref="meta2dDom"></div>
- </div>
- </template>
- <script setup lang="ts">
- import { ref, onMounted, watch, onUnmounted } from 'vue';
- import localforage from 'localforage';
- import { localMeta2dDataName } from '@/services/utils';
- import { defaultFormat } from '@/services/defaults';
- import { useRouter, useRoute } from 'vue-router';
- import { Meta2d, Options, Pen } from '@meta2d/core';
- import { registerBasicDiagram } from '@/services/register';
- import { cdn, getLe5le2d } from '@/services/api';
- const route = useRoute();
- const meta2dDom = ref('');
- const meta2dOptions: Options = {
- cdn,
- // rule: true,
- background: '#1e2430',
- x: 10,
- y: 10,
- width: 1920,
- height: 1080,
- // defaultFormat: { ...defaultFormat },
- };
- onMounted(() => {
- meta2d = new Meta2d(meta2dDom.value, meta2dOptions);
- registerBasicDiagram();
- open();
- meta2d.on('opened', opened);
- });
- const watcher = watch(
- () => route.query.id,
- async () => {
- open();
- }
- );
- const open = async () => {
- if (route.query.id) {
- const ret: any = getLe5le2d(route.query.id + '');
- ret && meta2d.open(ret);
- } else {
- const data: any = JSON.parse(
- await localforage.getItem(localMeta2dDataName)
- );
- data && meta2d.open(data);
- }
- };
- const opened = () => {
- meta2d.fitSizeView(true, 10);
- };
- onUnmounted(() => {
- watcher();
- if (meta2d) {
- meta2d.off('opened', opened);
- meta2d.destroy();
- }
- });
- </script>
- <style lang="postcss" scoped>
- .preview {
- width: 100vw;
- height: 100vh;
- background-color: var(--color-background-editor);
- .meta2d-canvas {
- width: 100%;
- height: 100%;
- }
- }
- </style>
|