UNPKG

3.65 kBSource Map (JSON)View Raw
1{"version":3,"sources":["overlay.tsx"],"names":["color","Animated","DarkTheme","isAnimatedValue","it","Value","overlay","elevation","surfaceColor","colors","surface","inputRange","interpolate","outputRange","map","calculateColor","overlayTransparency","elevationOverlayTransparency","mix","hex"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,cAAzB;AACA,OAAOC,SAAP,MAAsB,aAAtB;;AAEA,MAAMC,eAAe,GACnBC,EADsB,IAEGA,EAAE,YAAYH,QAAQ,CAACI,KAFlD;;AAIA,eAAe,SAASC,OAAT,CACbC,SADa,EAG+C;AAAA,MAD5DC,YAC4D,uEADrCN,SAAS,CAACO,MAAV,CAAiBC,OACoB;;AAC5D,MAAIP,eAAe,CAACI,SAAD,CAAnB,EAAgC;AAC9B,UAAMI,UAAU,GAAG,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,EAAhB,CAAnB,CAD8B,CAG9B;;AACA,WAAOJ,SAAS,CAACK,WAAV,CAAsB;AAC3BD,MAAAA,UAD2B;AAE3BE,MAAAA,WAAW,EAAEF,UAAU,CAACG,GAAX,CAAgBP,SAAD,IAAe;AACzC,eAAOQ,cAAc,CAACP,YAAD,EAAeD,SAAf,CAArB;AACD,OAFY;AAFc,KAAtB,CAAP;AAMD,GAX2D,CAa5D;;;AACA,SAAOQ,cAAc,CAACP,YAAD,EAAeD,SAAf,CAArB;AACD;;AAED,SAASQ,cAAT,CAAwBP,YAAxB,EAAqE;AAAA,MAAvBD,SAAuB,uEAAH,CAAG;AACnE,MAAIS,mBAAJ;;AACA,MAAIT,SAAS,IAAI,CAAb,IAAkBA,SAAS,IAAI,EAAnC,EAAuC;AACrCS,IAAAA,mBAAmB,GAAGC,4BAA4B,CAACV,SAAD,CAAlD;AACD,GAFD,MAEO,IAAIA,SAAS,GAAG,EAAhB,EAAoB;AACzBS,IAAAA,mBAAmB,GAAGC,4BAA4B,CAAC,EAAD,CAAlD;AACD,GAFM,MAEA;AACLD,IAAAA,mBAAmB,GAAGC,4BAA4B,CAAC,CAAD,CAAlD;AACD;;AACD,SAAOjB,KAAK,CAACQ,YAAD,CAAL,CACJU,GADI,CACAlB,KAAK,CAAC,OAAD,CADL,EACgBgB,mBAAmB,GAAG,IADtC,EAEJG,GAFI,EAAP;AAGD;;AAED,MAAMF,4BAAoD,GAAG;AAC3D,KAAG,CADwD;AAE3D,KAAG,CAFwD;AAG3D,KAAG,CAHwD;AAI3D,KAAG,CAJwD;AAK3D,KAAG,EALwD;AAM3D,KAAG,EANwD;AAO3D,KAAG,IAPwD;AAQ3D,KAAG,EARwD;AAS3D,KAAG,IATwD;AAU3D,MAAI,EAVuD;AAW3D,MAAI,IAXuD;AAY3D,MAAI,EAZuD;AAa3D,MAAI,KAbuD;AAc3D,MAAI,IAduD;AAe3D,MAAI,KAfuD;AAgB3D,MAAI,EAhBuD;AAiB3D,MAAI,KAjBuD;AAkB3D,MAAI,KAlBuD;AAmB3D,MAAI,KAnBuD;AAoB3D,MAAI,KApBuD;AAqB3D,MAAI,IArBuD;AAsB3D,MAAI,KAtBuD;AAuB3D,MAAI,KAvBuD;AAwB3D,MAAI;AAxBuD,CAA7D","sourcesContent":["import color from 'color';\nimport { Animated } from 'react-native';\nimport DarkTheme from './DarkTheme';\n\nconst isAnimatedValue = (\n it: number | Animated.AnimatedInterpolation\n): it is Animated.Value => it instanceof Animated.Value;\n\nexport default function overlay<T extends Animated.Value | number>(\n elevation: T,\n surfaceColor: string = DarkTheme.colors.surface\n): T extends number ? string : Animated.AnimatedInterpolation {\n if (isAnimatedValue(elevation)) {\n const inputRange = [0, 1, 2, 3, 8, 24];\n\n // @ts-expect-error: TS doesn't seem to refine the type correctly\n return elevation.interpolate({\n inputRange,\n outputRange: inputRange.map((elevation) => {\n return calculateColor(surfaceColor, elevation);\n }),\n });\n }\n\n // @ts-expect-error: TS doesn't seem to refine the type correctly\n return calculateColor(surfaceColor, elevation);\n}\n\nfunction calculateColor(surfaceColor: string, elevation: number = 1) {\n let overlayTransparency: number;\n if (elevation >= 1 && elevation <= 24) {\n overlayTransparency = elevationOverlayTransparency[elevation];\n } else if (elevation > 24) {\n overlayTransparency = elevationOverlayTransparency[24];\n } else {\n overlayTransparency = elevationOverlayTransparency[1];\n }\n return color(surfaceColor)\n .mix(color('white'), overlayTransparency * 0.01)\n .hex();\n}\n\nconst elevationOverlayTransparency: Record<string, number> = {\n 1: 5,\n 2: 7,\n 3: 8,\n 4: 9,\n 5: 10,\n 6: 11,\n 7: 11.5,\n 8: 12,\n 9: 12.5,\n 10: 13,\n 11: 13.5,\n 12: 14,\n 13: 14.25,\n 14: 14.5,\n 15: 14.75,\n 16: 15,\n 17: 15.12,\n 18: 15.24,\n 19: 15.36,\n 20: 15.48,\n 21: 15.6,\n 22: 15.72,\n 23: 15.84,\n 24: 16,\n};\n"]}
\No newline at end of file