{"version":3,"file":"dom.mjs","sources":["../../../../node_modules/.pnpm/performance-now@2.1.0/node_modules/performance-now/lib/performance-now.js","../../../../node_modules/.pnpm/raf@3.4.1/node_modules/raf/index.js","../../../common/js/utils/easing.ts","../../../components/utils/dom.ts"],"sourcesContent":["// Generated by CoffeeScript 1.12.2\n(function() {\n  var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;\n\n  if ((typeof performance !== \"undefined\" && performance !== null) && performance.now) {\n    module.exports = function() {\n      return performance.now();\n    };\n  } else if ((typeof process !== \"undefined\" && process !== null) && process.hrtime) {\n    module.exports = function() {\n      return (getNanoSeconds() - nodeLoadTime) / 1e6;\n    };\n    hrtime = process.hrtime;\n    getNanoSeconds = function() {\n      var hr;\n      hr = hrtime();\n      return hr[0] * 1e9 + hr[1];\n    };\n    moduleLoadTime = getNanoSeconds();\n    upTime = process.uptime() * 1e9;\n    nodeLoadTime = moduleLoadTime - upTime;\n  } else if (Date.now) {\n    module.exports = function() {\n      return Date.now() - loadTime;\n    };\n    loadTime = Date.now();\n  } else {\n    module.exports = function() {\n      return new Date().getTime() - loadTime;\n    };\n    loadTime = new Date().getTime();\n  }\n\n}).call(this);\n\n//# sourceMappingURL=performance-now.js.map\n","var now = require('performance-now')\n  , root = typeof window === 'undefined' ? global : window\n  , vendors = ['moz', 'webkit']\n  , suffix = 'AnimationFrame'\n  , raf = root['request' + suffix]\n  , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n  raf = root[vendors[i] + 'Request' + suffix]\n  caf = root[vendors[i] + 'Cancel' + suffix]\n      || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n  var last = 0\n    , id = 0\n    , queue = []\n    , frameDuration = 1000 / 60\n\n  raf = function(callback) {\n    if(queue.length === 0) {\n      var _now = now()\n        , next = Math.max(0, frameDuration - (_now - last))\n      last = next + _now\n      setTimeout(function() {\n        var cp = queue.slice(0)\n        // Clear queue here to prevent\n        // callbacks from appending listeners\n        // to the current frame's queue\n        queue.length = 0\n        for(var i = 0; i < cp.length; i++) {\n          if(!cp[i].cancelled) {\n            try{\n              cp[i].callback(last)\n            } catch(e) {\n              setTimeout(function() { throw e }, 0)\n            }\n          }\n        }\n      }, Math.round(next))\n    }\n    queue.push({\n      handle: ++id,\n      callback: callback,\n      cancelled: false\n    })\n    return id\n  }\n\n  caf = function(handle) {\n    for(var i = 0; i < queue.length; i++) {\n      if(queue[i].handle === handle) {\n        queue[i].cancelled = true\n      }\n    }\n  }\n}\n\nmodule.exports = function(fn) {\n  // Wrap in a new function to prevent\n  // `cancel` potentially being assigned\n  // to the native rAF function\n  return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n  caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n  if (!object) {\n    object = root;\n  }\n  object.requestAnimationFrame = raf\n  object.cancelAnimationFrame = caf\n}\n","/**\n * @file\n * 缓动函数\n * 参考自: https://github.com/bameyrick/js-easing-functions/blob/master/src/index.ts\n */\n\nexport interface EasingFunction {\n  (current: number, start: number, end: number, duration: number): number;\n}\n\n/**\n * @export\n * @param {number} current 当前时间\n * @param {number} start 开始值\n * @param {number} end 结束值\n * @param {number} duration 持续时间\n * @returns\n */\nexport const linear: EasingFunction = (current, start, end, duration) => {\n  const change = end - start;\n  const offset = (change * current) / duration;\n  return offset + start;\n};\n\n/**\n * @export\n * @param {number} current 当前时间\n * @param {number} start 开始值\n * @param {number} end 结束值\n * @param {number} duration 持续时间\n * @returns\n */\nexport const easeInOutCubic: EasingFunction = (current, start, end, duration) => {\n  const change = (end - start) / 2;\n  let time = current / (duration / 2);\n  if (time < 1) {\n    return change * time * time * time + start;\n  }\n  time -= 2;\n  // eslint-disable-next-line no-return-assign\n  return change * (time * time * time + 2) + start;\n};\n","/**\n * Thanks to https://spothero.com/static/main/uniform/docs-js/module-DOMUtils.html\n */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-undef */\nimport { ComponentPublicInstance, VNode } from 'vue';\nimport raf from 'raf';\nimport { isString } from 'lodash-es';\nimport { isFunction } from 'lodash-es';\nimport { isArray } from 'lodash-es';\nimport { easeInOutCubic, EasingFunction } from '@tdesign/common-js/utils/easing';\nimport { ScrollContainer, ScrollContainerElement } from '../common';\n\nexport const isServer = typeof window === 'undefined';\nconst trim = (str: string): string => (str || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '');\n\nexport const on = ((): any => {\n  if (!isServer && document.addEventListener) {\n    return (\n      element: Node,\n      event: string,\n      handler: EventListenerOrEventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): any => {\n      if (element && event && handler) {\n        element.addEventListener(event, handler, options);\n      }\n    };\n  }\n  return (element: Node, event: string, handler: EventListenerOrEventListenerObject): any => {\n    if (element && event && handler) {\n      (element as any).attachEvent(`on${event}`, handler);\n    }\n  };\n})();\n\nexport const off = ((): any => {\n  if (!isServer && document.removeEventListener) {\n    return (\n      element: Node,\n      event: string,\n      handler: EventListenerOrEventListenerObject,\n      options?: boolean | AddEventListenerOptions,\n    ): any => {\n      if (element && event) {\n        element.removeEventListener(event, handler, options);\n      }\n    };\n  }\n  return (element: Node, event: string, handler: EventListenerOrEventListenerObject): any => {\n    if (element && event) {\n      (element as any).detachEvent(`on${event}`, handler);\n    }\n  };\n})();\n\nexport function once(\n  element: Node,\n  event: string,\n  handler: EventListenerOrEventListenerObject,\n  options?: boolean | AddEventListenerOptions,\n) {\n  const handlerFn = isFunction(handler) ? handler : handler.handleEvent;\n  const callback = (evt: any) => {\n    handlerFn(evt);\n    off(element, event, callback, options);\n  };\n\n  on(element, event, callback, options);\n}\n\nexport function hasClass(el: Element, cls: string): any {\n  if (!el || !cls) return false;\n  if (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.');\n  if (el.classList) {\n    return el.classList.contains(cls);\n  }\n  return ` ${el.className} `.indexOf(` ${cls} `) > -1;\n}\n\nexport function addClass(el: Element, cls: string): any {\n  if (!el) return;\n  let curClass = el.className;\n  const classes = (cls || '').split(' ');\n\n  for (let i = 0, j = classes.length; i < j; i++) {\n    const clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.add(clsName);\n    } else if (!hasClass(el, clsName)) {\n      curClass += ` ${clsName}`;\n    }\n  }\n  if (!el.classList) {\n    el.className = curClass;\n  }\n}\n\nexport function removeClass(el: Element, cls: string): any {\n  if (!el || !cls) return;\n  const classes = cls.split(' ');\n  let curClass = ` ${el.className} `;\n\n  for (let i = 0, j = classes.length; i < j; i++) {\n    const clsName = classes[i];\n    if (!clsName) continue;\n\n    if (el.classList) {\n      el.classList.remove(clsName);\n    } else if (hasClass(el, clsName)) {\n      curClass = curClass.replace(` ${clsName} `, ' ');\n    }\n  }\n  if (!el.classList) {\n    el.className = trim(curClass);\n  }\n}\n\nexport const getAttach = (node: any, triggerNode?: any): HTMLElement | Element => {\n  const attachNode = isFunction(node) ? node(triggerNode) : node;\n  if (!attachNode) {\n    return document.body;\n  }\n  if (isString(attachNode)) {\n    return document.querySelector(attachNode);\n  }\n  if (attachNode instanceof HTMLElement) {\n    return attachNode;\n  }\n  return document.body;\n};\n\nexport const getSSRAttach = () => {\n  if (process.env.NODE_ENV === 'test-snap') return 'body';\n};\n\n/**\n * 获取滚动容器\n * 因为document不存在scroll等属性, 因此排除document\n * window | HTMLElement\n * @param {ScrollContainerElement} [container='body']\n * @returns {ScrollContainer}\n */\nexport const getScrollContainer = (container: ScrollContainer = 'body'): ScrollContainerElement => {\n  if (isString(container)) {\n    return document.querySelector(container) as HTMLElement;\n  }\n  if (isFunction(container)) {\n    return container();\n  }\n  return container;\n};\n\n/**\n * 返回是否window对象\n *\n * @export\n * @param {any} obj\n * @returns\n */\nfunction isWindow(obj: any) {\n  return obj && obj === obj.window;\n}\n\ntype ScrollTarget = HTMLElement | Window | Document;\n\n/**\n * 获取滚动距离\n *\n * @export\n * @param {ScrollTarget} target\n * @param {boolean} isLeft true为获取scrollLeft, false为获取scrollTop\n * @returns {number}\n */\nexport function getScroll(target: ScrollTarget, isLeft?: boolean): number {\n  // node环境或者target为空\n  if (isServer || !target) {\n    return 0;\n  }\n  const method = isLeft ? 'scrollLeft' : 'scrollTop';\n  let result = 0;\n  if (isWindow(target)) {\n    result = (target as Window)[isLeft ? 'pageXOffset' : 'pageYOffset'];\n  } else if (target instanceof Document) {\n    result = target.documentElement[method];\n  } else if (target) {\n    result = (target as HTMLElement)[method];\n  }\n  return result;\n}\ninterface ScrollTopOptions {\n  container?: ScrollTarget;\n  duration?: number;\n  easing?: EasingFunction;\n}\n\ndeclare type ScrollToResult<T = any> = T | { default: T };\n\nexport function scrollTo(target: number, opt: ScrollTopOptions): Promise<ScrollToResult> {\n  const { container = window, duration = 450, easing = easeInOutCubic } = opt;\n  const scrollTop = getScroll(container);\n  const startTime = Date.now();\n  return new Promise((res) => {\n    const fnc = () => {\n      const timestamp = Date.now();\n      const time = timestamp - startTime;\n      const nextScrollTop = easing(Math.min(time, duration), scrollTop, target, duration);\n      if (isWindow(container)) {\n        (container as Window).scrollTo(window.pageXOffset, nextScrollTop);\n      } else if (container instanceof Document || container.constructor.name === 'HTMLDocument') {\n        (container as Document).documentElement.scrollTop = nextScrollTop;\n      } else {\n        (container as HTMLElement).scrollTop = nextScrollTop;\n      }\n      if (time < duration) {\n        raf(fnc);\n      } else {\n        // 由于上面步骤设置了scrollTop, 滚动事件可能未触发完毕\n        // 此时应该在下一帧再执行res\n        raf(res);\n      }\n    };\n    raf(fnc);\n  });\n}\n\nfunction containerDom(parent: VNode | Element | Iterable<any> | ArrayLike<any>, child: any): boolean {\n  if (parent && child) {\n    let pNode = child;\n    while (pNode) {\n      if (parent === pNode) {\n        return true;\n      }\n      const { parentNode } = pNode;\n      pNode = parentNode;\n    }\n  }\n  return false;\n}\nexport const clickOut = (els: VNode | Element | Iterable<any> | ArrayLike<any>, cb: () => void): void => {\n  on(document, 'click', (event: { target: Element }) => {\n    if (isArray(els)) {\n      const isFlag = Array.from(els).every((item) => containerDom(item, event.target) === false);\n      return isFlag && cb && cb();\n    }\n    if (containerDom(els, event.target)) {\n      return false;\n    }\n    return cb && cb();\n  });\n};\n\n// 用于判断节点内容是否溢出\nexport const isTextEllipsis = (\n  ele: ComponentPublicInstance | Element | ComponentPublicInstance[] | Element[],\n): boolean => {\n  const { clientWidth = 0, scrollWidth = 0 } = ele as Element & { clientWidth: number; scrollWidth: number };\n  return scrollWidth > clientWidth;\n};\n\n// 将子元素selected滚动到父元素parentEle的可视范围内\nexport const scrollSelectedIntoView = (parentEle: HTMLElement, selected: HTMLElement) => {\n  // 服务端不处理\n  if (isServer) return;\n  // selected不存在或selected父元素不为parentEle则不处理\n  if (!selected || selected.offsetParent !== parentEle) {\n    parentEle.scrollTop = 0;\n    return;\n  }\n  const selectedTop = selected.offsetTop;\n  const selectedBottom = selectedTop + selected.offsetHeight;\n  const parentScrollTop = parentEle.scrollTop;\n  const parentViewBottom = parentScrollTop + parentEle.clientHeight;\n  if (selectedTop < parentScrollTop) {\n    // selected元素滚动过了，则将其向下滚动到可视范围顶部\n    parentEle.scrollTop = selectedTop;\n  } else if (selectedBottom > parentViewBottom) {\n    // selected元素未滚动到，则将其向上滚动到可视范围底部\n    parentEle.scrollTop = selectedBottom - parentEle.clientHeight;\n  }\n};\n\nexport const requestSubmit = (target: HTMLFormElement) => {\n  if (!(target instanceof HTMLFormElement)) {\n    throw new Error('target must be HTMLFormElement');\n  }\n  const submitter = document.createElement('input');\n  submitter.type = 'submit';\n  submitter.hidden = true;\n  target.appendChild(submitter);\n  submitter.click();\n  target.removeChild(submitter);\n};\n\n/**\n * 检查元素是否在父元素视图\n * http://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport\n * @param elm 元素\n * @param parent\n * @returns boolean\n */\nexport function elementInViewport(elm: HTMLElement, parent?: HTMLElement): boolean {\n  const rect = elm.getBoundingClientRect();\n  if (parent) {\n    const parentRect = parent.getBoundingClientRect();\n    return (\n      rect.top >= parentRect.top &&\n      rect.left >= parentRect.left &&\n      rect.bottom <= parentRect.bottom &&\n      rect.right <= parentRect.right\n    );\n  }\n  return rect.top >= 0 && rect.left >= 0 && rect.bottom + 80 <= window.innerHeight && rect.right <= window.innerWidth;\n}\n\n/**\n * 获取元素某个 css 对应的值\n * @param element 元素\n * @param propName css 名\n * @returns string\n */\nexport function getElmCssPropValue(element: HTMLElement, propName: string): string {\n  let propValue = '';\n\n  if (document.defaultView && document.defaultView.getComputedStyle) {\n    propValue = document.defaultView.getComputedStyle(element, null).getPropertyValue(propName);\n  }\n\n  if (propValue && propValue.toLowerCase) {\n    return propValue.toLowerCase();\n  }\n\n  return propValue;\n}\n\n/**\n * 判断元素是否处在 position fixed 中\n * @param element 元素\n * @returns boolean\n */\nexport function isFixed(element: HTMLElement): boolean {\n  const p = element.parentNode as HTMLElement;\n\n  if (!p || p.nodeName === 'HTML') {\n    return false;\n  }\n\n  if (getElmCssPropValue(element, 'position') === 'fixed') {\n    return true;\n  }\n\n  return isFixed(p);\n}\n\n/**\n * 获取当前视图滑动的距离\n * @returns { scrollTop: number, scrollLeft: number }\n */\nexport function getWindowScroll(): { scrollTop: number; scrollLeft: number } {\n  const { body } = document;\n  const docElm = document.documentElement;\n  const scrollTop = window.pageYOffset || docElm.scrollTop || body.scrollTop;\n  const scrollLeft = window.pageXOffset || docElm.scrollLeft || body.scrollLeft;\n\n  return { scrollTop, scrollLeft };\n}\n\n/**\n * 获取当前视图的大小\n * @returns { width: number, height: number }\n */\nexport function getWindowSize(): { width: number; height: number } {\n  if (window.innerWidth !== undefined) {\n    return { width: window.innerWidth, height: window.innerHeight };\n  }\n  const doc = document.documentElement;\n  return { width: doc.clientWidth, height: doc.clientHeight };\n}\n"],"names":["performance","now","process","hrtime","performanceNowModule","exports","getNanoSeconds","nodeLoadTime","hr","upTime","uptime","moduleLoadTime","Date","loadTime","require$$0","root","window","global","vendors","suffix","raf","caf","i","length","last","id","queue","frameDuration","callback","_now","next","Math","max","setTimeout","cp","slice","_loop","cancelled","e","round","push","handle","rafModule","fn","call","cancel","raf_1","apply","arguments","polyfill","object","requestAnimationFrame","cancelAnimationFrame","linear","current","start","end","duration","change","offset","easeInOutCubic","time","isServer","trim","str","replace","on","document","addEventListener","element","event","handler","options","attachEvent","concat","off","removeEventListener","detachEvent","once","handlerFn","isFunction","handleEvent","evt","hasClass","el","cls","indexOf","Error","classList","contains","className","addClass","curClass","classes","split","j","clsName","add","removeClass","remove","getAttach","node","triggerNode","attachNode","body","isString","querySelector","HTMLElement","getSSRAttach","env","NODE_ENV","getScrollContainer","container","undefined","isWindow","obj","getScroll","target","isLeft","method","result","Document","documentElement","scrollTo","opt","_opt$container","_opt$duration","_opt$easing","easing","scrollTop","startTime","Promise","res","fnc","timestamp","nextScrollTop","min","pageXOffset","constructor","name","containerDom","parent","child","pNode","_pNode","parentNode","clickOut","els","cb","isArray","isFlag","Array","from","every","item","isTextEllipsis","ele","_ele$clientWidth","clientWidth","_ele$scrollWidth","scrollWidth","scrollSelectedIntoView","parentEle","selected","offsetParent","selectedTop","offsetTop","selectedBottom","offsetHeight","parentScrollTop","parentViewBottom","clientHeight","requestSubmit","HTMLFormElement","submitter","createElement","type","hidden","appendChild","click","removeChild","elementInViewport","elm","rect","getBoundingClientRect","parentRect","top","left","bottom","right","innerHeight","innerWidth","getElmCssPropValue","propName","propValue","defaultView","getComputedStyle","getPropertyValue","toLowerCase","isFixed","p","nodeName","getWindowScroll","_document","docElm","pageYOffset","scrollLeft","getWindowSize","width","height","doc"],"mappings":"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"}