{"version":3,"sources":["../../src/utils/react-fast-compare.ts"],"sourcesContent":["import { isDev } from './basic'\n\nconst hasMap = typeof Map === 'function'\nconst hasSet = typeof Set === 'function'\nconst hasHTMLElementType = typeof HTMLElement !== 'undefined'\nconst hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView\n\n/**\n * @description `react-fast-compare` rewritten using TypeScript\n * @from {@link https://github.com/FormidableLabs/react-fast-compare/blob/6f7d8afe02e4480c32f5af16f571367cccd47abc/index.js | react-fast-compare - GitHub}\n */\nexport function reactFastCompare(objA: unknown, objB: unknown) : boolean {\n  try {\n    return equal(objA, objB)\n  } catch (error: any) {\n    if ((error.message || '').match(/stack|recursion/i)) {\n      if (isDev) console.warn('react-fast-compare cannot handle circular refs')\n      return false\n    }\n\n    throw error\n  }\n}\n\nfunction equal(objA: any, objB: any) {\n  if (objA === objB) return true\n\n  if (objA && objB && typeof objA === 'object' && typeof objB === 'object') {\n    if (objA.constructor !== objB.constructor) return false\n\n    let length\n    let i\n    let keys\n\n    if (Array.isArray(objA)) {\n      length = objA.length\n      if (length !== objB.length) return false\n      for (i = length; i-- !== 0; ) if (!equal(objA[i], objB[i])) return false\n      return true\n    }\n\n    let it\n\n    if (hasMap && objA instanceof Map && objB instanceof Map) {\n      if (objA.size !== objB.size) return false\n      it = objA.entries()\n      while (!(i = it.next()).done) if (!objB.has(i.value[0])) return false\n      it = objA.entries()\n      while (!(i = it.next()).done) if (!equal(i.value[1], objB.get(i.value[0]))) return false\n      return true\n    }\n\n    if (hasSet && objA instanceof Set && objB instanceof Set) {\n      if (objA.size !== objB.size) return false\n      it = objA.entries()\n      while (!(i = it.next()).done) if (!objB.has(i.value[0])) return false\n      return true\n    }\n\n    if (hasArrayBuffer && ArrayBuffer.isView(objA) && ArrayBuffer.isView(objB)) {\n      length = (objA as any)?.length as never\n      if (length !== (objB as any)?.length) return false\n      for (i = length; i-- !== 0; ) if (objA[i] !== objB[i]) return false\n      return true\n    }\n\n    if (objA.constructor === RegExp) return objA.source === objB.source && objA.flags === objB.flags\n\n    if (\n      objA.valueOf !== Object.prototype.valueOf &&\n      typeof objA.valueOf === 'function' &&\n      typeof objB.valueOf === 'function'\n    )\n      return objA.valueOf() === objB.valueOf()\n    if (\n      objA.toString !== Object.prototype.toString &&\n      typeof objA.toString === 'function' &&\n      typeof objB.toString === 'function'\n    )\n      return objA.toString() === objB.toString()\n\n    keys = Object.keys(objA)\n    length = keys.length\n    if (length !== Object.keys(objB).length) return false\n\n    for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(objB, keys[i])) return false\n\n    if (hasHTMLElementType && objA instanceof HTMLElement) return false\n\n    for (i = length; i-- !== 0; ) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && objA.$$typeof) {\n        continue\n      }\n\n      if (!equal(objA[keys[i]], objB[keys[i]])) return false\n    }\n\n    return true\n  }\n\n  return objA !== objA && objB !== objB\n}\n"],"names":["reactFastCompare","hasMap","Map","hasSet","Set","hasHTMLElementType","HTMLElement","hasArrayBuffer","ArrayBuffer","isView","objA","objB","equal","error","message","match","isDev","console","warn","length","i","keys","Array","isArray","it","size","entries","next","done","has","value","get","RegExp","source","flags","valueOf","Object","prototype","toString","hasOwnProperty","call","$$typeof"],"mappings":"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"}