UNPKG

@fast-china/utils

Version:

Fast 工具库.

1 lines 1.9 kB
{"version":3,"file":"emits.mjs","sources":["../../../../src/vue/emits.ts"],"sourcesContent":["import { computed } from \"vue\";\nimport { omit } from \"lodash-unified\";\nimport type { ComputedRef, EmitFn } from \"vue\";\n\n/**\n * 构建 emits\n * @param emits emits 配置\n * @param emit emit 函数\n * @param ignoreRawEmits 忽略 原生 emits 的 key\n */\nexport const useEmits = <T extends Record<string, (...args: any[]) => void>>(\n\temits: T,\n\temit?: EmitFn<T>,\n\tignoreRawEmits?: (keyof T)[]\n): ComputedRef<Record<string, (...args: any[]) => void>> => {\n\tif (!emits) return computed(() => ({}));\n\n\treturn computed<Record<string, (...args: any[]) => void>>(() => {\n\t\tconst omittedRawEmits = emits ? omit(emits, ignoreRawEmits ?? []) : {};\n\t\t// 提取对应的事件处理器\n\t\treturn Object.keys(omittedRawEmits).reduce((handlers, eventName) => {\n\t\t\t// 将 emit 名称转换为事件处理器名称: 'update:modelValue' -> 'onUpdate:modelValue'\n\t\t\tconst handlerName = `on${eventName\n\t\t\t\t.split(\"-\")\n\t\t\t\t.map((part, index) => (index === 0 ? part.charAt(0).toUpperCase() + part.slice(1) : part.charAt(0).toUpperCase() + part.slice(1)))\n\t\t\t\t.join(\"\")}`;\n\n\t\t\thandlers[handlerName] = (...args: any[]): void => emit(eventName, ...args);\n\t\t\treturn handlers;\n\t\t}, {});\n\t});\n};\n"],"names":["useEmits","emits","emit","ignoreRawEmits","computed","omittedRawEmits","omit","Object","keys","reduce","handlers","eventName","split","map","part","index","charAt","toUpperCase","slice","join","args"],"mappings":"qEAUO,MAAMA,EAAW,CACvBC,EACAC,EACAC,IAIOC,EAFFH,EAEqD,KACzD,MAAMI,EAAkBJ,EAAQK,EAAKL,EAAOE,GAAkB,IAAM,CAAA,EAEpE,OAAOI,OAAOC,KAAKH,GAAiBI,OAAO,CAACC,EAAUC,KAOrDD,EALoB,KAAKC,EACvBC,MAAM,KACNC,IAAI,CAACC,EAAMC,IAAyBD,EAAKE,OAAO,GAAGC,cAAgBH,EAAKI,MAAM,IAC9EC,KAAK,OAEiB,IAAIC,IAAsBlB,EAAKS,KAAcS,GAC9DV,GACL,CAAA,IAdwB,KAAA,CAAO"}