@pixi/react
Version:
Write PixiJS applications using React declarative style.
1 lines • 6.63 kB
Source Map (JSON)
{"version":3,"file":"compare.mjs","sources":["../../src/helpers/compare.ts"],"sourcesContent":["/** Whether the input is an array. */\nexport function isArray(input: any): input is []\n{\n return Array.isArray(input);\n}\n\n/** Whether the input is a boolean. */\nexport function isBoolean(input: any): input is boolean\n{\n return typeof input === 'boolean';\n}\n\n/** Whether the inputs are equal. */\nexport function isEqual(\n inputA: any,\n inputB: any,\n options: {\n arrays?: 'reference' | 'shallow',\n objects?: 'reference' | 'shallow',\n strict?: boolean,\n } = {\n arrays: 'reference',\n objects: 'reference',\n strict: true,\n })\n{\n const {\n arrays,\n objects,\n strict,\n } = options;\n\n // If input types are incompatible, or one input is undefined\n if (typeof inputA !== typeof inputB || !!inputA !== !!inputB)\n {\n return false;\n }\n\n // Atomic, just compare a against b\n if (isString(inputA) || isNumber(inputA))\n {\n return inputA === inputB;\n }\n\n const isInputAAnObject = isObject(inputA);\n\n if (isInputAAnObject && objects === 'reference')\n {\n return inputA === inputB;\n }\n\n const isInputAAnArray = isArray(inputA);\n\n if (isInputAAnArray && arrays === 'reference')\n {\n return inputA === inputB;\n }\n\n // If we're dealing with either an array or object, we'll shallow compare first to see if they match\n if ((isInputAAnArray || isInputAAnObject) && inputA === inputB)\n {\n return true;\n }\n\n // Last resort, go through keys\n let key;\n\n // Check if inputB has all the keys of inputA\n for (key in inputA)\n {\n if (!(key in inputB))\n {\n return false;\n }\n }\n\n let input = inputA;\n\n if (strict)\n {\n input = inputB;\n }\n\n // Check if values between keys match\n if (isInputAAnObject && arrays === 'shallow' && objects === 'shallow')\n {\n for (key in input)\n {\n const equalityCheckResult = isEqual(inputA[key], inputB[key], {\n strict,\n objects: 'reference',\n });\n\n if (!equalityCheckResult)\n {\n return false;\n }\n }\n }\n else\n {\n for (key in input)\n {\n if (inputA[key] !== inputB[key])\n {\n return false;\n }\n }\n }\n\n if (isUndefined(key))\n {\n if (isInputAAnArray && (inputA.length === 0) && (inputB.length === 0))\n {\n return true;\n }\n\n if (isInputAAnObject && Object.keys(inputA).length === 0 && Object.keys(inputB).length === 0)\n {\n return true;\n }\n\n if (inputA !== inputB)\n {\n return false;\n }\n }\n\n return true;\n}\n\n/** Whether the input is a function. */\nexport function isFunction(input: any): input is (...args: any) => any\n{\n return typeof input === 'function';\n}\n\n/** Whether the input is null. */\nexport function isNull(input: any): input is null\n{\n return input === null;\n}\n\n/** Whether the input is a number. */\nexport function isNumber(input: any): input is number\n{\n return typeof input === 'number';\n}\n\n/** Whether the input is an object. */\nexport function isObject(input: any): input is Record<string, unknown>\n{\n if (input !== Object(input))\n {\n return false;\n }\n\n if (isArray(input))\n {\n return false;\n }\n\n if (typeof input === 'function')\n {\n return false;\n }\n\n return true;\n}\n\n/** Whether the input is a string. */\nexport function isString(input: any): input is string\n{\n return typeof input === 'string';\n}\n\n/** Whether the input is undefined. */\nexport function isUndefined(input: any): input is undefined\n{\n // eslint-disable-next-line no-void\n return input === void 0;\n}\n"],"names":[],"mappings":";AACO,SAAS,QAAQ,KACxB,EAAA;AACI,EAAO,OAAA,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC9B;AAGO,SAAS,UAAU,KAC1B,EAAA;AACI,EAAA,OAAO,OAAO,KAAU,KAAA,SAAA;AAC5B;AAGgB,SAAA,OAAA,CACZ,MACA,EAAA,MAAA,EACA,OAII,GAAA;AAAA,EACA,MAAQ,EAAA,WAAA;AAAA,EACR,OAAS,EAAA,WAAA;AAAA,EACT,MAAQ,EAAA;AACZ,CACJ,EAAA;AACI,EAAM,MAAA;AAAA,IACF,MAAA;AAAA,IACA,OAAA;AAAA,IACA;AAAA,GACA,GAAA,OAAA;AAGJ,EAAI,IAAA,OAAO,WAAW,OAAO,MAAA,IAAU,CAAC,CAAC,MAAA,KAAW,CAAC,CAAC,MACtD,EAAA;AACI,IAAO,OAAA,KAAA;AAAA;AAIX,EAAA,IAAI,QAAS,CAAA,MAAM,CAAK,IAAA,QAAA,CAAS,MAAM,CACvC,EAAA;AACI,IAAA,OAAO,MAAW,KAAA,MAAA;AAAA;AAGtB,EAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM,CAAA;AAExC,EAAI,IAAA,gBAAA,IAAoB,YAAY,WACpC,EAAA;AACI,IAAA,OAAO,MAAW,KAAA,MAAA;AAAA;AAGtB,EAAM,MAAA,eAAA,GAAkB,QAAQ,MAAM,CAAA;AAEtC,EAAI,IAAA,eAAA,IAAmB,WAAW,WAClC,EAAA;AACI,IAAA,OAAO,MAAW,KAAA,MAAA;AAAA;AAItB,EAAK,IAAA,CAAA,eAAA,IAAmB,gBAAqB,KAAA,MAAA,KAAW,MACxD,EAAA;AACI,IAAO,OAAA,IAAA;AAAA;AAIX,EAAI,IAAA,GAAA;AAGJ,EAAA,KAAK,OAAO,MACZ,EAAA;AACI,IAAI,IAAA,EAAE,OAAO,MACb,CAAA,EAAA;AACI,MAAO,OAAA,KAAA;AAAA;AACX;AAGJ,EAAA,IAAI,KAAQ,GAAA,MAAA;AAEZ,EAAA,IAAI,MACJ,EAAA;AACI,IAAQ,KAAA,GAAA,MAAA;AAAA;AAIZ,EAAA,IAAI,gBAAoB,IAAA,MAAA,KAAW,SAAa,IAAA,OAAA,KAAY,SAC5D,EAAA;AACI,IAAA,KAAK,OAAO,KACZ,EAAA;AACI,MAAA,MAAM,sBAAsB,OAAQ,CAAA,MAAA,CAAO,GAAG,CAAG,EAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AAAA,QAC1D,MAAA;AAAA,QACA,OAAS,EAAA;AAAA,OACZ,CAAA;AAED,MAAA,IAAI,CAAC,mBACL,EAAA;AACI,QAAO,OAAA,KAAA;AAAA;AACX;AACJ,GAGJ,MAAA;AACI,IAAA,KAAK,OAAO,KACZ,EAAA;AACI,MAAA,IAAI,MAAO,CAAA,GAAG,CAAM,KAAA,MAAA,CAAO,GAAG,CAC9B,EAAA;AACI,QAAO,OAAA,KAAA;AAAA;AACX;AACJ;AAGJ,EAAI,IAAA,WAAA,CAAY,GAAG,CACnB,EAAA;AACI,IAAA,IAAI,mBAAoB,MAAO,CAAA,MAAA,KAAW,CAAO,IAAA,MAAA,CAAO,WAAW,CACnE,EAAA;AACI,MAAO,OAAA,IAAA;AAAA;AAGX,IAAA,IAAI,gBAAoB,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,MAAA,KAAW,CAAK,IAAA,MAAA,CAAO,IAAK,CAAA,MAAM,CAAE,CAAA,MAAA,KAAW,CAC3F,EAAA;AACI,MAAO,OAAA,IAAA;AAAA;AAGX,IAAA,IAAI,WAAW,MACf,EAAA;AACI,MAAO,OAAA,KAAA;AAAA;AACX;AAGJ,EAAO,OAAA,IAAA;AACX;AAGO,SAAS,WAAW,KAC3B,EAAA;AACI,EAAA,OAAO,OAAO,KAAU,KAAA,UAAA;AAC5B;AAGO,SAAS,OAAO,KACvB,EAAA;AACI,EAAA,OAAO,KAAU,KAAA,IAAA;AACrB;AAGO,SAAS,SAAS,KACzB,EAAA;AACI,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA;AAC5B;AAGO,SAAS,SAAS,KACzB,EAAA;AACI,EAAI,IAAA,KAAA,KAAU,MAAO,CAAA,KAAK,CAC1B,EAAA;AACI,IAAO,OAAA,KAAA;AAAA;AAGX,EAAI,IAAA,OAAA,CAAQ,KAAK,CACjB,EAAA;AACI,IAAO,OAAA,KAAA;AAAA;AAGX,EAAI,IAAA,OAAO,UAAU,UACrB,EAAA;AACI,IAAO,OAAA,KAAA;AAAA;AAGX,EAAO,OAAA,IAAA;AACX;AAGO,SAAS,SAAS,KACzB,EAAA;AACI,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA;AAC5B;AAGO,SAAS,YAAY,KAC5B,EAAA;AAEI,EAAA,OAAO,KAAU,KAAA,KAAA,CAAA;AACrB;;;;"}