This repository has been archived on 2022-03-12. You can view files and clone it, but cannot push or open issues or pull requests.
2021-04-02 02:24:13 +03:00

1 line
9.6 KiB
Plaintext

{"version":3,"sources":["interpolate.js"],"names":["lessThan","multiply","sub","add","divide","greaterThan","lessOrEq","eq","invariant","AnimatedNode","createAnimatedCond","cond","createAnimatedFunction","proc","interpolateInternalSingleProc","value","inS","inE","outS","outE","progress","resultForNonZeroRange","result","interpolateInternalSingle","inputRange","outputRange","offset","interpolateInternal","length","Extrapolate","EXTEND","CLAMP","IDENTITY","checkNonDecreasing","name","arr","i","checkMinElements","checkValidNumbers","Number","isFinite","convertToRadians","entries","endsWith","parseFloat","Math","PI","interpolate","config","extrapolate","extrapolateLeft","extrapolateRight","left","right","output"],"mappings":"AAAA,SACEA,QADF,EAEEC,QAFF,EAGEC,GAHF,EAIEC,GAJF,EAKEC,MALF,EAMEC,WANF,EAOEC,QAPF,EAQEC,EARF,QASO,cATP;AAUA,OAAOC,SAAP,MAAsB,oBAAtB;AAEA,OAAOC,YAAP,MAAyB,sBAAzB;AACA,SAASC,kBAAkB,IAAIC,IAA/B,QAA2C,sBAA3C;AACA,SAASC,sBAAsB,IAAIC,IAAnC,QAA+C,0BAA/C;AAEA,MAAMC,6BAA6B,GAAGD,IAAI,CAAC,UACzCE,KADyC,EAEzCC,GAFyC,EAGzCC,GAHyC,EAIzCC,IAJyC,EAKzCC,IALyC,EAMzC;AACA,QAAMC,QAAQ,GAAGhB,MAAM,CAACF,GAAG,CAACa,KAAD,EAAQC,GAAR,CAAJ,EAAkBd,GAAG,CAACe,GAAD,EAAMD,GAAN,CAArB,CAAvB,CADA,CAEA;;AACA,QAAMK,qBAAqB,GAAGlB,GAAG,CAACe,IAAD,EAAOjB,QAAQ,CAACmB,QAAD,EAAWlB,GAAG,CAACiB,IAAD,EAAOD,IAAP,CAAd,CAAf,CAAjC;AACA,QAAMI,MAAM,GAAGX,IAAI,CACjBJ,EAAE,CAACS,GAAD,EAAMC,GAAN,CADe,EAEjBN,IAAI,CAACL,QAAQ,CAACS,KAAD,EAAQC,GAAR,CAAT,EAAuBE,IAAvB,EAA6BC,IAA7B,CAFa,EAGjBE,qBAHiB,CAAnB;AAKA,SAAOC,MAAP;AACD,CAhByC,CAA1C;;AAkBA,SAASC,yBAAT,CAAmCR,KAAnC,EAA0CS,UAA1C,EAAsDC,WAAtD,EAAmEC,MAAnE,EAA2E;AACzE,QAAMV,GAAG,GAAGQ,UAAU,CAACE,MAAD,CAAtB;AACA,QAAMT,GAAG,GAAGO,UAAU,CAACE,MAAM,GAAG,CAAV,CAAtB;AACA,QAAMR,IAAI,GAAGO,WAAW,CAACC,MAAD,CAAxB;AACA,QAAMP,IAAI,GAAGM,WAAW,CAACC,MAAM,GAAG,CAAV,CAAxB;AACA,SAAOZ,6BAA6B,CAACC,KAAD,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,IAAlB,EAAwBC,IAAxB,CAApC;AACD;;AAED,SAASQ,mBAAT,CAA6BZ,KAA7B,EAAoCS,UAApC,EAAgDC,WAAhD,EAA6DC,MAAM,GAAG,CAAtE,EAAyE;AACvE,MAAIF,UAAU,CAACI,MAAX,GAAoBF,MAApB,KAA+B,CAAnC,EAAsC;AACpC,WAAOH,yBAAyB,CAACR,KAAD,EAAQS,UAAR,EAAoBC,WAApB,EAAiCC,MAAjC,CAAhC;AACD;;AACD,SAAOf,IAAI,CACTX,QAAQ,CAACe,KAAD,EAAQS,UAAU,CAACE,MAAM,GAAG,CAAV,CAAlB,CADC,EAETH,yBAAyB,CAACR,KAAD,EAAQS,UAAR,EAAoBC,WAApB,EAAiCC,MAAjC,CAFhB,EAGTC,mBAAmB,CAACZ,KAAD,EAAQS,UAAR,EAAoBC,WAApB,EAAiCC,MAAM,GAAG,CAA1C,CAHV,CAAX;AAKD;;AAED,OAAO,MAAMG,WAAW,GAAG;AACzBC,EAAAA,MAAM,EAAE,QADiB;AAEzBC,EAAAA,KAAK,EAAE,OAFkB;AAGzBC,EAAAA,QAAQ,EAAE;AAHe,CAApB;;AAMP,SAASC,kBAAT,CAA4BC,IAA5B,EAAkCC,GAAlC,EAAuC;AACrC,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,GAAG,CAACP,MAAxB,EAAgC,EAAEQ,CAAlC,EAAqC;AACnC;AACA,QAAID,GAAG,CAACC,CAAD,CAAH,YAAkB3B,YAAlB,IAAkC0B,GAAG,CAACC,CAAC,GAAG,CAAL,CAAH,YAAsB3B,YAA5D,EACE;AACFD,IAAAA,SAAS,CACP2B,GAAG,CAACC,CAAD,CAAH,IAAUD,GAAG,CAACC,CAAC,GAAG,CAAL,CADN,EAEP,+CAFO,EAGPF,IAHO,EAIPC,GAJO,CAAT;AAMD;AACF;;AAED,SAASE,gBAAT,CAA0BH,IAA1B,EAAgCC,GAAhC,EAAqC;AACnC3B,EAAAA,SAAS,CACP2B,GAAG,CAACP,MAAJ,IAAc,CADP,EAEP,wCAFO,EAGPM,IAHO,EAIPC,GAJO,CAAT;AAMD;;AAED,SAASG,iBAAT,CAA2BJ,IAA3B,EAAiCC,GAAjC,EAAsC;AACpC,OAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,GAAG,CAACP,MAAxB,EAAgCQ,CAAC,EAAjC,EAAqC;AACnC;AACA,QAAID,GAAG,CAACC,CAAD,CAAH,YAAkB3B,YAAlB,IAAkC,OAAO0B,GAAG,CAACC,CAAD,CAAV,KAAkB,QAAxD,EAAkE;AAClE5B,IAAAA,SAAS,CACP+B,MAAM,CAACC,QAAP,CAAgBL,GAAG,CAACC,CAAD,CAAnB,CADO,EAEP,4BAFO,EAGPF,IAHO,EAIPC,GAAG,CAACC,CAAD,CAJI,EAKPD,GALO,CAAT;AAOD;AACF;;AAED,SAASM,gBAAT,CAA0BhB,WAA1B,EAAuC;AACrC,OAAK,MAAM,CAACW,CAAD,EAAIrB,KAAJ,CAAX,IAAyBU,WAAW,CAACiB,OAAZ,EAAzB,EAAgD;AAC9C,QAAI,OAAO3B,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC4B,QAAN,CAAe,KAAf,CAAjC,EAAwD;AACtDlB,MAAAA,WAAW,CAACW,CAAD,CAAX,GAAiBQ,UAAU,CAAC7B,KAAD,CAAV,IAAqB8B,IAAI,CAACC,EAAL,GAAU,GAA/B,CAAjB;AACD,KAFD,MAEO,IAAI,OAAO/B,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,CAAC4B,QAAN,CAAe,KAAf,CAAjC,EAAwD;AAC7DlB,MAAAA,WAAW,CAACW,CAAD,CAAX,GAAiBQ,UAAU,CAAC7B,KAAD,CAA3B;AACD;AACF;AACF;;AAED,eAAe,SAASgC,WAAT,CAAqBhC,KAArB,EAA4BiC,MAA5B,EAAoC;AACjD,QAAM;AACJxB,IAAAA,UADI;AAEJC,IAAAA,WAFI;AAGJwB,IAAAA,WAAW,GAAGpB,WAAW,CAACC,MAHtB;AAIJoB,IAAAA,eAJI;AAKJC,IAAAA;AALI,MAMFH,MANJ;AAQAX,EAAAA,gBAAgB,CAAC,YAAD,EAAeb,UAAf,CAAhB;AACAc,EAAAA,iBAAiB,CAAC,YAAD,EAAed,UAAf,CAAjB;AACAa,EAAAA,gBAAgB,CAAC,aAAD,EAAgBZ,WAAhB,CAAhB;AACAa,EAAAA,iBAAiB,CAAC,aAAD,EAAgBb,WAAhB,CAAjB;AACAQ,EAAAA,kBAAkB,CAAC,YAAD,EAAeT,UAAf,CAAlB;AACAhB,EAAAA,SAAS,CACPgB,UAAU,CAACI,MAAX,KAAsBH,WAAW,CAACG,MAD3B,EAEP,qDAFO,CAAT;AAKAa,EAAAA,gBAAgB,CAAChB,WAAD,CAAhB;AACA,QAAM2B,IAAI,GAAGF,eAAe,IAAID,WAAhC;AACA,QAAMI,KAAK,GAAGF,gBAAgB,IAAIF,WAAlC;AACA,MAAIK,MAAM,GAAG3B,mBAAmB,CAACZ,KAAD,EAAQS,UAAR,EAAoBC,WAApB,CAAhC;;AAEA,MAAI2B,IAAI,KAAKvB,WAAW,CAACC,MAAzB,EAAiC,CAChC,CADD,MACO,IAAIsB,IAAI,KAAKvB,WAAW,CAACE,KAAzB,EAAgC;AACrCuB,IAAAA,MAAM,GAAG3C,IAAI,CAACX,QAAQ,CAACe,KAAD,EAAQS,UAAU,CAAC,CAAD,CAAlB,CAAT,EAAiCC,WAAW,CAAC,CAAD,CAA5C,EAAiD6B,MAAjD,CAAb;AACD,GAFM,MAEA,IAAIF,IAAI,KAAKvB,WAAW,CAACG,QAAzB,EAAmC;AACxCsB,IAAAA,MAAM,GAAG3C,IAAI,CAACX,QAAQ,CAACe,KAAD,EAAQS,UAAU,CAAC,CAAD,CAAlB,CAAT,EAAiCT,KAAjC,EAAwCuC,MAAxC,CAAb;AACD;;AAED,MAAID,KAAK,KAAKxB,WAAW,CAACC,MAA1B,EAAkC,CACjC,CADD,MACO,IAAIuB,KAAK,KAAKxB,WAAW,CAACE,KAA1B,EAAiC;AACtCuB,IAAAA,MAAM,GAAG3C,IAAI,CACXN,WAAW,CAACU,KAAD,EAAQS,UAAU,CAACA,UAAU,CAACI,MAAX,GAAoB,CAArB,CAAlB,CADA,EAEXH,WAAW,CAACA,WAAW,CAACG,MAAZ,GAAqB,CAAtB,CAFA,EAGX0B,MAHW,CAAb;AAKD,GANM,MAMA,IAAID,KAAK,KAAKxB,WAAW,CAACG,QAA1B,EAAoC;AACzCsB,IAAAA,MAAM,GAAG3C,IAAI,CACXN,WAAW,CAACU,KAAD,EAAQS,UAAU,CAACA,UAAU,CAACI,MAAX,GAAoB,CAArB,CAAlB,CADA,EAEXb,KAFW,EAGXuC,MAHW,CAAb;AAKD;;AAED,SAAOA,MAAP;AACD","sourcesContent":["import {\n lessThan,\n multiply,\n sub,\n add,\n divide,\n greaterThan,\n lessOrEq,\n eq,\n} from '../operators';\nimport invariant from 'fbjs/lib/invariant';\n\nimport AnimatedNode from '../core/AnimatedNode';\nimport { createAnimatedCond as cond } from '../core/AnimatedCond';\nimport { createAnimatedFunction as proc } from '../core/AnimatedFunction';\n\nconst interpolateInternalSingleProc = proc(function(\n value,\n inS,\n inE,\n outS,\n outE\n) {\n const progress = divide(sub(value, inS), sub(inE, inS));\n // logic below was made in order to provide a compatibility witn an Animated API\n const resultForNonZeroRange = add(outS, multiply(progress, sub(outE, outS)));\n const result = cond(\n eq(inS, inE),\n cond(lessOrEq(value, inS), outS, outE),\n resultForNonZeroRange\n );\n return result;\n});\n\nfunction interpolateInternalSingle(value, inputRange, outputRange, offset) {\n const inS = inputRange[offset];\n const inE = inputRange[offset + 1];\n const outS = outputRange[offset];\n const outE = outputRange[offset + 1];\n return interpolateInternalSingleProc(value, inS, inE, outS, outE);\n}\n\nfunction interpolateInternal(value, inputRange, outputRange, offset = 0) {\n if (inputRange.length - offset === 2) {\n return interpolateInternalSingle(value, inputRange, outputRange, offset);\n }\n return cond(\n lessThan(value, inputRange[offset + 1]),\n interpolateInternalSingle(value, inputRange, outputRange, offset),\n interpolateInternal(value, inputRange, outputRange, offset + 1)\n );\n}\n\nexport const Extrapolate = {\n EXTEND: 'extend',\n CLAMP: 'clamp',\n IDENTITY: 'identity',\n};\n\nfunction checkNonDecreasing(name, arr) {\n for (let i = 1; i < arr.length; ++i) {\n // We can't validate animated nodes in JS.\n if (arr[i] instanceof AnimatedNode || arr[i - 1] instanceof AnimatedNode)\n continue;\n invariant(\n arr[i] >= arr[i - 1],\n '%s must be monotonically non-decreasing. (%s)',\n name,\n arr\n );\n }\n}\n\nfunction checkMinElements(name, arr) {\n invariant(\n arr.length >= 2,\n '%s must have at least 2 elements. (%s)',\n name,\n arr\n );\n}\n\nfunction checkValidNumbers(name, arr) {\n for (let i = 0; i < arr.length; i++) {\n // We can't validate animated nodes in JS.\n if (arr[i] instanceof AnimatedNode || typeof arr[i] !== 'number') continue;\n invariant(\n Number.isFinite(arr[i]),\n '%s cannot include %s. (%s)',\n name,\n arr[i],\n arr\n );\n }\n}\n\nfunction convertToRadians(outputRange) {\n for (const [i, value] of outputRange.entries()) {\n if (typeof value === 'string' && value.endsWith('deg')) {\n outputRange[i] = parseFloat(value) * (Math.PI / 180);\n } else if (typeof value === 'string' && value.endsWith('rad')) {\n outputRange[i] = parseFloat(value);\n }\n }\n}\n\nexport default function interpolate(value, config) {\n const {\n inputRange,\n outputRange,\n extrapolate = Extrapolate.EXTEND,\n extrapolateLeft,\n extrapolateRight,\n } = config;\n\n checkMinElements('inputRange', inputRange);\n checkValidNumbers('inputRange', inputRange);\n checkMinElements('outputRange', outputRange);\n checkValidNumbers('outputRange', outputRange);\n checkNonDecreasing('inputRange', inputRange);\n invariant(\n inputRange.length === outputRange.length,\n 'inputRange and outputRange must be the same length.'\n );\n\n convertToRadians(outputRange);\n const left = extrapolateLeft || extrapolate;\n const right = extrapolateRight || extrapolate;\n let output = interpolateInternal(value, inputRange, outputRange);\n\n if (left === Extrapolate.EXTEND) {\n } else if (left === Extrapolate.CLAMP) {\n output = cond(lessThan(value, inputRange[0]), outputRange[0], output);\n } else if (left === Extrapolate.IDENTITY) {\n output = cond(lessThan(value, inputRange[0]), value, output);\n }\n\n if (right === Extrapolate.EXTEND) {\n } else if (right === Extrapolate.CLAMP) {\n output = cond(\n greaterThan(value, inputRange[inputRange.length - 1]),\n outputRange[outputRange.length - 1],\n output\n );\n } else if (right === Extrapolate.IDENTITY) {\n output = cond(\n greaterThan(value, inputRange[inputRange.length - 1]),\n value,\n output\n );\n }\n\n return output;\n}\n"]}