{"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":"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"}