{"version":3,"file":"throttle.mjs","names":["FUNC_ERROR_TEXT","NAN","nativeMax","Math","max","nativeMin","min","reIsBinary","reIsOctal","reIsBadHex","freeParseInt","parseInt","reTrim","symbolTag","undefinedTag","nullTag","symToStringTag","Symbol","toStringTag","undefined","objectProto","Object","prototype","hasOwnProperty","nativeObjectToString","toString","throttle","func","wait","leading","trailing","TypeError","debounce","maxWait","isObject","value","type","_typeof","options","lastArgs","lastThis","result","timerId","lastCallTime","lastInvokeTime","maxing","toNumber","invokeFunc","time","args","thisArg","apply","leadingEdge","setTimeout","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","timeWaiting","shouldInvoke","Date","now","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","_len","arguments","length","Array","_key","isSymbol","other","valueOf","replace","isBinary","test","slice","isObjectLike","baseGetTag","getRawTag","objectToString","isOwn","call","tag","unmasked","e","console","log"],"sources":["../../src/utils/throttle.ts"],"sourcesContent":["const FUNC_ERROR_TEXT = 'Expected a function'\r\nconst NAN = 0 / 0\r\nconst nativeMax = Math.max\r\nconst nativeMin = Math.min\r\nconst reIsBinary = /^0b[01]+$/i\r\nconst reIsOctal = /^0o[0-7]+$/i\r\nconst reIsBadHex = /^[-+]0x[0-9a-f]+$/i\r\nconst freeParseInt = parseInt\r\nconst reTrim = /^\\s+|\\s+$/g\r\nconst symbolTag = '[object Symbol]'\r\nconst undefinedTag = '[object Undefined]'\r\nconst nullTag = '[object Null]'\r\n//const symToStringTag = Symbol ? Symbol.toStringTag : undefined\r\nconst symToStringTag: typeof Symbol.toStringTag = Symbol\r\n  ? Symbol.toStringTag\r\n  : undefined!\r\nconst objectProto = Object.prototype\r\nconst hasOwnProperty = objectProto.hasOwnProperty\r\nconst nativeObjectToString = objectProto.toString\r\n\r\nexport function throttle(func: any, wait: any) {\r\n  const leading = true\r\n  const trailing = true\r\n\r\n  if (typeof func != 'function') {\r\n    throw new TypeError(FUNC_ERROR_TEXT)\r\n  }\r\n  return debounce(func, wait, {\r\n    leading: leading,\r\n    maxWait: wait,\r\n    trailing: trailing,\r\n  })\r\n}\r\n\r\nfunction isObject(value: any) {\r\n  const type = typeof value\r\n  return value != null && (type == 'object' || type == 'function')\r\n}\r\n\r\nfunction debounce(func: any, wait: any, options: any) {\r\n  let lastArgs: any\r\n  let lastThis: any\r\n  let maxWait: any\r\n  let result: any\r\n  let timerId: any\r\n  let lastCallTime: any\r\n  let lastInvokeTime = 0\r\n  let leading = false\r\n  let maxing = false\r\n  let trailing = true\r\n\r\n  if (typeof func != 'function') {\r\n    throw new TypeError(FUNC_ERROR_TEXT)\r\n  }\r\n  wait = toNumber(wait) || 0\r\n  if (isObject(options)) {\r\n    leading = !!options.leading\r\n    maxing = 'maxWait' in options\r\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait\r\n    trailing = 'trailing' in options ? !!options.trailing : trailing\r\n  }\r\n\r\n  function invokeFunc(time: any) {\r\n    const args = lastArgs\r\n    const thisArg = lastThis\r\n\r\n    lastArgs = lastThis = undefined\r\n    lastInvokeTime = time\r\n    result = func.apply(thisArg, args)\r\n    return result\r\n  }\r\n\r\n  function leadingEdge(time: any) {\r\n    lastInvokeTime = time\r\n    timerId = setTimeout(timerExpired, wait)\r\n    return leading ? invokeFunc(time) : result\r\n  }\r\n\r\n  function remainingWait(time: any) {\r\n    const timeSinceLastCall = time - lastCallTime\r\n    const timeSinceLastInvoke = time - lastInvokeTime\r\n    const timeWaiting = wait - timeSinceLastCall\r\n\r\n    return maxing\r\n      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\r\n      : timeWaiting\r\n  }\r\n\r\n  function shouldInvoke(time: any) {\r\n    const timeSinceLastCall = time - lastCallTime\r\n    const timeSinceLastInvoke = time - lastInvokeTime\r\n    return (\r\n      lastCallTime === undefined ||\r\n      timeSinceLastCall >= wait ||\r\n      timeSinceLastCall < 0 ||\r\n      (maxing && timeSinceLastInvoke >= maxWait)\r\n    )\r\n  }\r\n\r\n  function timerExpired() {\r\n    const time = Date.now()\r\n    if (shouldInvoke(time)) {\r\n      return trailingEdge(time)\r\n    }\r\n    timerId = setTimeout(timerExpired, remainingWait(time))\r\n  }\r\n\r\n  function trailingEdge(time: any) {\r\n    timerId = undefined\r\n\r\n    if (trailing && lastArgs) {\r\n      return invokeFunc(time)\r\n    }\r\n    lastArgs = lastThis = undefined\r\n    return result\r\n  }\r\n\r\n  function cancel() {\r\n    if (timerId !== undefined) {\r\n      clearTimeout(timerId)\r\n    }\r\n    lastInvokeTime = 0\r\n    lastArgs = lastCallTime = lastThis = timerId = undefined\r\n  }\r\n\r\n  function flush() {\r\n    return timerId === undefined ? result : trailingEdge(Date.now())\r\n  }\r\n\r\n  function debounced(this: any, ...args: any[]) {\r\n    const time = Date.now()\r\n    const isInvoking = shouldInvoke(time)\r\n\r\n    lastArgs = args\r\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n    lastThis = this\r\n    lastCallTime = time\r\n\r\n    if (isInvoking) {\r\n      if (timerId === undefined) {\r\n        return leadingEdge(lastCallTime)\r\n      }\r\n      if (maxing) {\r\n        clearTimeout(timerId)\r\n        timerId = setTimeout(timerExpired, wait)\r\n        return invokeFunc(lastCallTime)\r\n      }\r\n    }\r\n    if (timerId === undefined) {\r\n      timerId = setTimeout(timerExpired, wait)\r\n    }\r\n    return result\r\n  }\r\n  debounced.cancel = cancel\r\n  debounced.flush = flush\r\n  return debounced\r\n}\r\n\r\nfunction toNumber(value: any) {\r\n  if (typeof value == 'number') {\r\n    return value\r\n  }\r\n  if (isSymbol(value)) {\r\n    return NAN\r\n  }\r\n  if (isObject(value)) {\r\n    const other = typeof value.valueOf == 'function' ? value.valueOf() : value\r\n    value = isObject(other) ? other + '' : other\r\n  }\r\n  if (typeof value != 'string') {\r\n    return value === 0 ? value : +value\r\n  }\r\n  value = value.replace(reTrim, '')\r\n  const isBinary = reIsBinary.test(value)\r\n  return isBinary || reIsOctal.test(value)\r\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\r\n    : reIsBadHex.test(value)\r\n    ? NAN\r\n    : +value\r\n}\r\n\r\nfunction isSymbol(value: any) {\r\n  return (\r\n    typeof value == 'symbol' ||\r\n    (isObjectLike(value) && baseGetTag(value) == symbolTag)\r\n  )\r\n}\r\n\r\nfunction isObjectLike(value: any) {\r\n  return value != null && typeof value == 'object'\r\n}\r\n\r\nfunction baseGetTag(value: any) {\r\n  if (value == null) {\r\n    return value === undefined ? undefinedTag : nullTag\r\n  }\r\n  return symToStringTag && symToStringTag in Object(value)\r\n    ? getRawTag(value)\r\n    : objectToString(value)\r\n}\r\n\r\nfunction getRawTag(value: any) {\r\n  const isOwn = hasOwnProperty.call(value, symToStringTag)\r\n  const tag = value[symToStringTag]\r\n  const unmasked = true\r\n\r\n  try {\r\n    value[symToStringTag] = undefined\r\n    const unmasked = true\r\n  } catch (e) {\r\n    console.log(e)\r\n  }\r\n\r\n  const result = nativeObjectToString.call(value)\r\n  if (unmasked) {\r\n    if (isOwn) {\r\n      value[symToStringTag] = tag\r\n    } else {\r\n      delete value[symToStringTag]\r\n    }\r\n  }\r\n  return result\r\n}\r\n\r\nfunction objectToString(value: any) {\r\n  return nativeObjectToString.call(value)\r\n}\r\n"],"mappings":"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"}