import { TaroEvent } from '@tarojs/runtime' import type { EventOptions, TaroElement } from '@tarojs/runtime' export function createTaroEvent(type: string, opts: Partial = {}, node?: TaroElement) { opts.bubbles ||= true opts.cancelable ||= true const e = new TaroEvent(type, opts as Required) if (node) { const properties: Record = {} properties.target = properties.currentTarget = { get() { return node } } Object.defineProperties(e, properties) } for (const key in opts) { if (['bubbles', 'cancelable'].includes(key)) { continue } e[key] = opts[key] } return e }