UNPKG

logic-helper

Version:

This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

80 lines (74 loc) 1.89 kB
import { getWsEventBus } from '@/utils/util.js'; import { watch } from 'vue' import { store } from '@/common/js/app.js' const eventReceiver = getWsEventBus('ws-event-handler'); import { EventHelper } from '@/utils/event.js'; import * as TopoEventHandler from './handlers/event-topo-handlers'; import * as RecordEventHandler from './handlers/event-record-handlers'; import * as ControllerEventHandler from './handlers/event-controller-handlers'; const allHandlers = [TopoEventHandler, RecordEventHandler, ControllerEventHandler] const allEventName = []; allHandlers.forEach(handler => { allEventName.push(...Object.keys(handler)) }) const nameSet = []; allEventName.forEach((name) => { if (nameSet.includes(name)) { throw new Error('repeated event-handler :' + name); } else { nameSet.push(name); } }); function eventHandler({ eventName, params }) { if (eventName) { for (let v of allHandlers) { if (v[eventName]) { return v[eventName](params); } } } else { console.error('eventName is missing!') } } eventReceiver.on('wait', async (data, request) => { try { let res = (await eventHandler(data)) || ''; eventReceiver.reply(request, res); } catch (e) { console.error('ws-event-handler error >>>>', e); eventReceiver.reply(request, e); } }); export const handler = function (eventName, params) { return eventHandler({ eventName, params }) } const $event = new EventHelper('utils/eventHandler') $event.$on('ctl-s', () => { store.storage.saveToFiles() }) $event.$on('ctl-y', () => { store.model.ctlY() }) $event.$on('ctl-z', () => { store.model.ctlZ() }) $event.$on('ctl-c', () => { // store.model.copyNode() }) $event.$on('ctl-v', () => { // store.model.pasteNode() })