tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 6.77 kB
Source Map (JSON)
{"version":3,"file":"utils.mjs","sources":["../../../src/pull-down-refresh/__test__/utils.ts"],"sourcesContent":["import { ComponentPublicInstance, nextTick } from 'vue';\nimport { VueWrapper, DOMWrapper } from '@vue/test-utils';\n\nfunction getTouch(el: Element | Window, x: number, y: number) {\n return {\n identifier: Date.now(),\n target: el,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n radiusX: 2.5,\n radiusY: 2.5,\n rotationAngle: 10,\n force: 0.5,\n };\n}\n\n// 模拟 touch 事件\nexport function trigger(\n wrapper: VueWrapper<ComponentPublicInstance<any, any, any>> | DOMWrapper<Element> | Element | Window,\n eventName: string,\n x = 0,\n y = 0,\n options: any = {},\n) {\n const el = 'element' in wrapper ? wrapper.element : wrapper;\n const touchList = options.touchList || [getTouch(el, x, y)];\n\n if (options.x || options.y) {\n touchList.push(getTouch(el, options.x, options.y));\n }\n\n const event = document.createEvent('CustomEvent');\n event.initCustomEvent(eventName, true, true, {});\n\n Object.assign(event, {\n clientX: x,\n clientY: y,\n touches: touchList,\n targetTouches: touchList,\n changedTouches: touchList,\n });\n\n el.dispatchEvent(event);\n\n return nextTick();\n}\n\n/**\n * PullDownRefresh 使用了 [`useElementSize()`](https://github.com/vueuse/vueuse/blob/658374fd12/packages/core/useElementSize/index.ts),\n * 该函数调用了 [`useResizeObserver()`](https://github.com/vueuse/vueuse/blob/658374fd12fbce2ac6127a9fb9bca52fb2137505/packages/core/useResizeObserver/index.ts)。\n *\n * 而 jsdom 中 ResizeObserver 无效,见: https://github.com/jsdom/jsdom/issues/3368\n *\n * @description 模拟实现 ResizeObserver\n * @params callback `new ResizeObserver(callback)` 中的回调,签名如下:\n *\n * ```ts\n * ResizeObserverCallback = (entries: ReadonlyArray<ResizeObserverEntry>, observer: ResizeObserver) => void\n * ```\n */\nexport class MockResizeObserver {\n _callback: Function;\n\n _element!: HTMLElement;\n\n constructor(callback: Function) {\n this._callback = callback;\n }\n\n observe(element: HTMLElement) {\n this._element = element;\n this._element.addEventListener('resize', this.trigger);\n }\n\n unobserve() {\n this._element.removeEventListener('resize', this.trigger);\n }\n\n disconnect() {\n // unmount后监听的元素this._element可能为null,因此先判断元素是否为null,再依据此来是否执行removeEventListener\n if (this._element) {\n this._element.removeEventListener('resize', this.trigger);\n }\n this._element = null;\n }\n\n /**\n * @description 手动触发 resize,提供参数。本例 `maxBarHeight` 始终为 `useElementSize()` 的默认初始值 `initialSize`(`{ width: 0, height: 0 }`),模拟返回有效值即可\n * @param event 手动触发\n */\n trigger = (event: UIEvent) => {\n const { width = 0, height = 0 } = event as { width?: number; height?: number };\n this._callback([\n {\n contentRect: { width, height },\n },\n ]);\n };\n}\n"],"names":["getTouch","el","x","y","identifier","Date","now","target","pageX","pageY","clientX","clientY","radiusX","radiusY","rotationAngle","force","trigger","wrapper","eventName","arguments","length","undefined","options","element","touchList","push","event","document","createEvent","initCustomEvent","Object","assign","touches","targetTouches","changedTouches","dispatchEvent","nextTick","MockResizeObserver","callback","_this","_classCallCheck","_defineProperty","_event$width","width","_event$height","height","_callback","contentRect","_createClass","key","value","observe","_element","addEventListener","unobserve","removeEventListener","disconnect"],"mappings":";;;;;;;;;;;AAGA,SAASA,QAAAA,CAASC,EAAsB,EAAAC,CAAA,EAAWC,CAAW,EAAA;EACrD,OAAA;AACLC,IAAAA,UAAA,EAAYC,KAAKC,GAAI,EAAA;AACrBC,IAAAA,MAAQ,EAAAN,EAAA;AACRO,IAAAA,KAAO,EAAAN,CAAA;AACPO,IAAAA,KAAO,EAAAN,CAAA;AACPO,IAAAA,OAAS,EAAAR,CAAA;AACTS,IAAAA,OAAS,EAAAR,CAAA;AACTS,IAAAA,OAAS,EAAA,GAAA;AACTC,IAAAA,OAAS,EAAA,GAAA;AACTC,IAAAA,aAAe,EAAA,EAAA;AACfC,IAAAA,KAAO,EAAA,GAAA;GACT,CAAA;AACF,CAAA;AAGgB,SAAAC,OAAAA,CACdC,SACAC,SACA,EAGA;AAAA,EAAA,IAHAhB,CAAA,GAAAiB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAI;MACJhB,CAAI,GAAAgB,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA;AAAA,EAAA,IACJG,OAAe,GAAAH,SAAA,CAAAC,MAAA,GAAA,CAAA,IAAAD,SAAA,CAAA,CAAA,CAAA,KAAAE,SAAA,GAAAF,SAAA,CAAA,CAAA,CAAA,GAAA,EACf,CAAA;EACA,IAAMlB,EAAK,GAAA,SAAA,IAAagB,OAAU,GAAAA,OAAA,CAAQM,OAAU,GAAAN,OAAA,CAAA;AAC9C,EAAA,IAAAO,SAAA,GAAYF,QAAQE,SAAa,IAAA,CAACxB,SAASC,EAAI,EAAAC,CAAA,EAAGC,CAAC,CAAC,CAAA,CAAA;AAEtD,EAAA,IAAAmB,OAAA,CAAQpB,CAAK,IAAAoB,OAAA,CAAQnB,CAAG,EAAA;AAC1BqB,IAAAA,SAAA,CAAUC,KAAKzB,QAAS,CAAAC,EAAA,EAAIqB,QAAQpB,CAAG,EAAAoB,OAAA,CAAQnB,CAAC,CAAC,CAAA,CAAA;AACnD,GAAA;AAEM,EAAA,IAAAuB,KAAA,GAAQC,QAAS,CAAAC,WAAA,CAAY,aAAa,CAAA,CAAA;EAChDF,KAAA,CAAMG,eAAgB,CAAAX,SAAA,EAAW,IAAM,EAAA,IAAA,EAAM,EAAE,CAAA,CAAA;AAE/CY,EAAAA,MAAA,CAAOC,OAAOL,KAAO,EAAA;AACnBhB,IAAAA,OAAS,EAAAR,CAAA;AACTS,IAAAA,OAAS,EAAAR,CAAA;AACT6B,IAAAA,OAAS,EAAAR,SAAA;AACTS,IAAAA,aAAe,EAAAT,SAAA;AACfU,IAAAA,cAAgB,EAAAV,SAAAA;AAClB,GAAC,CAAA,CAAA;AAEDvB,EAAAA,EAAA,CAAGkC,cAAcT,KAAK,CAAA,CAAA;EAEtB,OAAOU,QAAS,EAAA,CAAA;AAClB,CAAA;AAeO,IAAMC,kBAAmB,gBAAA,YAAA;EAK9B,SAAAA,kBAAAA,CAAYC,QAAoB,EAAA;AAAA,IAAA,IAAAC,KAAA,GAAA,IAAA,CAAA;AAAAC,IAAAA,eAAA,OAAAH,kBAAA,CAAA,CAAA;IAAAI,eAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA,CAAA;IAAAA,eAAA,CAAA,IAAA,EAAA,SAAA,EAyBtB,UAACf,KAAmB,EAAA;AAC5B,MAAA,IAAAgB,YAAA,GAAkChB,KAAA,CAA1BiB,KAAA;AAAAA,QAAAA,KAAA,GAAAD,YAAA,KAAQ,KAAA,CAAA,GAAA,CAAG,GAAAA,YAAA;QAAAE,aAAA,GAAelB,KAAA,CAAfmB,MAAA;AAAAA,QAAAA,MAAA,GAAAD,aAAA,KAAS,KAAA,CAAA,GAAA;MAC5BL,KAAA,CAAKO,SAAU,CAAA,CACb;AACEC,QAAAA,WAAA,EAAa;AAAEJ,UAAAA,KAAA,EAAAA,KAAA;AAAOE,UAAAA,MAAO,EAAPA,MAAAA;AAAO,SAAA;AAC/B,OAAA,CACD,CAAA,CAAA;KACH,CAAA,CAAA;IA/BE,IAAA,CAAKC,SAAY,GAAAR,QAAA,CAAA;AACnB,GAAA;EAAA,OAAAU,YAAA,CAAAX,kBAAA,EAAA,CAAA;IAAAY,GAAA,EAAA,SAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAC,QAAQ5B,OAAsB,EAAA;MAC5B,IAAA,CAAK6B,QAAW,GAAA7B,OAAA,CAAA;MAChB,IAAA,CAAK6B,QAAS,CAAAC,gBAAA,CAAiB,QAAU,EAAA,IAAA,CAAKrC,OAAO,CAAA,CAAA;AACvD,KAAA;AAAA,GAAA,EAAA;IAAAiC,GAAA,EAAA,WAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAI,SAAYA,GAAA;MACV,IAAA,CAAKF,QAAS,CAAAG,mBAAA,CAAoB,QAAU,EAAA,IAAA,CAAKvC,OAAO,CAAA,CAAA;AAC1D,KAAA;AAAA,GAAA,EAAA;IAAAiC,GAAA,EAAA,YAAA;AAAAC,IAAAA,KAAA,EAEA,SAAAM,UAAaA,GAAA;MAEX,IAAI,KAAKJ,QAAU,EAAA;QACjB,IAAA,CAAKA,QAAS,CAAAG,mBAAA,CAAoB,QAAU,EAAA,IAAA,CAAKvC,OAAO,CAAA,CAAA;AAC1D,OAAA;MACA,IAAA,CAAKoC,QAAW,GAAA,IAAA,CAAA;AAClB,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAAA,CAAA;;;;"}