UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 1.88 kB
{"version":3,"file":"interceptor.mjs","sources":["../../../../src/utils/interceptor.ts"],"sourcesContent":["import { isPromise } from './validate';\r\n\r\nexport type Interceptor = (...args: any[]) => Promise<boolean> | boolean;\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-empty-function\r\nexport function noop() {}\r\n\r\nexport function callInterceptor(options: {\r\n // 拦截器\r\n interceptor?: Interceptor;\r\n // 需要返回的数据\r\n args?: any[];\r\n // 事件\r\n done: () => void;\r\n canceled?: () => void;\r\n}) {\r\n const { interceptor, args, done, canceled } = options;\r\n\r\n // 是否有拦截器\r\n if (interceptor) {\r\n // eslint-disable-next-line prefer-spread\r\n const returnVal = interceptor.apply(null, args || []);\r\n\r\n if (isPromise(returnVal)) {\r\n returnVal\r\n .then((value) => {\r\n if (value) {\r\n done();\r\n } else if (canceled) {\r\n canceled();\r\n }\r\n })\r\n .catch(noop);\r\n } else if (returnVal) {\r\n done();\r\n } else if (canceled) {\r\n canceled();\r\n }\r\n }\r\n // 没有直接返回事件\r\n else {\r\n done();\r\n }\r\n}\r\n"],"names":[],"mappings":";;AAKO,SAAS,IAAO,GAAA;AAAC,CAAA;AAEjB,SAAS,gBAAgB,OAQ7B,EAAA;AACD,EAAA,MAAM,EAAE,WAAA,EAAa,IAAM,EAAA,IAAA,EAAM,UAAa,GAAA,OAAA,CAAA;AAG9C,EAAA,IAAI,WAAa,EAAA;AAEf,IAAA,MAAM,YAAY,WAAY,CAAA,KAAA,CAAM,IAAM,EAAA,IAAA,IAAQ,EAAE,CAAA,CAAA;AAEpD,IAAI,IAAA,SAAA,CAAU,SAAS,CAAG,EAAA;AACxB,MACG,SAAA,CAAA,IAAA,CAAK,CAAC,KAAU,KAAA;AACf,QAAA,IAAI,KAAO,EAAA;AACT,UAAK,IAAA,EAAA,CAAA;AAAA,mBACI,QAAU,EAAA;AACnB,UAAS,QAAA,EAAA,CAAA;AAAA,SACX;AAAA,OACD,CACA,CAAA,KAAA,CAAM,IAAI,CAAA,CAAA;AAAA,eACJ,SAAW,EAAA;AACpB,MAAK,IAAA,EAAA,CAAA;AAAA,eACI,QAAU,EAAA;AACnB,MAAS,QAAA,EAAA,CAAA;AAAA,KACX;AAAA,GAGG,MAAA;AACH,IAAK,IAAA,EAAA,CAAA;AAAA,GACP;AACF;;;;"}