UNPKG

5.87 kBSource Map (JSON)View Raw
1{"version":3,"sources":["Provider.tsx"],"names":["React","AccessibilityInfo","Appearance","ThemeProvider","Provider","SettingsProvider","MaterialCommunityIcon","PortalHost","DefaultTheme","DarkTheme","props","colorSchemeName","theme","getColorScheme","reduceMotionEnabled","setReduceMotionEnabled","useState","colorScheme","setColorScheme","handleAppearanceChange","preferences","useEffect","subscription","addEventListener","remove","removeEventListener","appearanceSubscription","addChangeListener","removeChangeListener","getTheme","providedTheme","animation","scale","children","settings","icon"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SACEC,iBADF,EAEEC,UAFF,QAKO,cALP;AAMA,SAASC,aAAT,QAA8B,WAA9B;AACA,SAASC,QAAQ,IAAIC,gBAArB,QAAuD,YAAvD;AACA,OAAOC,qBAAP,MAAkC,qCAAlC;AACA,OAAOC,UAAP,MAAuB,iCAAvB;AACA,OAAOC,YAAP,MAAyB,wBAAzB;AACA,OAAOC,SAAP,MAAsB,qBAAtB;;AAQA,MAAML,QAAQ,GAAG,CAAC,EAAE,GAAGM;AAAL,CAAD,KAAyB;AACxC,QAAMC,eAAe,GAClB,CAACD,KAAK,CAACE,KAAP,KAAgBV,UAAhB,aAAgBA,UAAhB,uBAAgBA,UAAU,CAAEW,cAAZ,EAAhB,CAAD,IAAkD,OADpD;AAGA,QAAM,CAACC,mBAAD,EAAsBC,sBAAtB,IAAgDf,KAAK,CAACgB,QAAN,CACpD,KADoD,CAAtD;AAGA,QAAM,CAACC,WAAD,EAAcC,cAAd,IAAgClB,KAAK,CAACgB,QAAN,CACpCL,eADoC,CAAtC;;AAIA,QAAMQ,sBAAsB,GAC1BC,WAD6B,IAE1B;AACH,UAAM;AAAEH,MAAAA;AAAF,QAAkBG,WAAxB;AACAF,IAAAA,cAAc,CAACD,WAAD,CAAd;AACD,GALD;;AAOAjB,EAAAA,KAAK,CAACqB,SAAN,CAAgB,MAAM;AACpB,QAAIC,YAAJ;;AAEA,QAAI,CAACZ,KAAK,CAACE,KAAX,EAAkB;AAChBU,MAAAA,YAAY,GAAGrB,iBAAiB,CAACsB,gBAAlB,CACb,qBADa,EAEbR,sBAFa,CAAf;AAID;;AACD,WAAO,MAAM;AACX,UAAI,CAACL,KAAK,CAACE,KAAX,EAAkB;AAAA;;AAChB,6BAAIU,YAAJ,0CAAI,cAAcE,MAAlB,EAA0B;AACxBF,UAAAA,YAAY,CAACE,MAAb;AACD,SAFD,MAEO;AACLvB,UAAAA,iBAAiB,CAACwB,mBAAlB,CACE,qBADF,EAEEV,sBAFF;AAID;AACF;AACF,KAXD;AAYD,GArBD,EAqBG,CAACL,KAAK,CAACE,KAAP,CArBH;AAuBAZ,EAAAA,KAAK,CAACqB,SAAN,CAAgB,MAAM;AACpB,QAAIK,sBAAJ;;AACA,QAAI,CAAChB,KAAK,CAACE,KAAX,EAAkB;AAChBc,MAAAA,sBAAsB,GAAGxB,UAAH,aAAGA,UAAH,uBAAGA,UAAU,CAAEyB,iBAAZ,CACvBR,sBADuB,CAAzB;AAGD;;AACD,WAAO,MAAM;AACX,UAAI,CAACT,KAAK,CAACE,KAAX,EAAkB;AAChB,YAAIc,sBAAJ,EAA4B;AAC1BA,UAAAA,sBAAsB,CAACF,MAAvB;AACD,SAFD,MAEO;AACLtB,UAAAA,UAAU,SAAV,IAAAA,UAAU,WAAV,YAAAA,UAAU,CAAE0B,oBAAZ,CAAiCT,sBAAjC;AACD;AACF;AACF,KARD;AASD,GAhBD,EAgBG,CAACT,KAAK,CAACE,KAAP,CAhBH;;AAkBA,QAAMiB,QAAQ,GAAG,MAAM;AACrB,UAAM;AAAEjB,MAAAA,KAAK,EAAEkB;AAAT,QAA2BpB,KAAjC;;AAEA,QAAIoB,aAAJ,EAAmB;AACjB,aAAOA,aAAP;AACD,KAFD,MAEO;AACL,YAAMlB,KAAK,GAAIK,WAAW,KAAK,MAAhB,GACXR,SADW,GAEXD,YAFJ;AAIA,aAAO,EACL,GAAGI,KADE;AAELmB,QAAAA,SAAS,EAAE,EACT,GAAGnB,KAAK,CAACmB,SADA;AAETC,UAAAA,KAAK,EAAElB,mBAAmB,GAAG,CAAH,GAAO;AAFxB;AAFN,OAAP;AAOD;AACF,GAlBD;;AAoBA,QAAM;AAAEmB,IAAAA,QAAF;AAAYC,IAAAA;AAAZ,MAAyBxB,KAA/B;AACA,sBACE,oBAAC,UAAD,qBACE,oBAAC,gBAAD;AAAkB,IAAA,KAAK,EAAEwB,QAAQ,IAAI;AAAEC,MAAAA,IAAI,EAAE7B;AAAR;AAArC,kBACE,oBAAC,aAAD;AAAe,IAAA,KAAK,EAAEuB,QAAQ;AAA9B,KAAmCI,QAAnC,CADF,CADF,CADF;AAOD,CAvFD;;AAyFA,eAAe7B,QAAf","sourcesContent":["import * as React from 'react';\nimport {\n AccessibilityInfo,\n Appearance,\n ColorSchemeName,\n NativeEventSubscription,\n} from 'react-native';\nimport { ThemeProvider } from './theming';\nimport { Provider as SettingsProvider, Settings } from './settings';\nimport MaterialCommunityIcon from '../components/MaterialCommunityIcon';\nimport PortalHost from '../components/Portal/PortalHost';\nimport DefaultTheme from '../styles/DefaultTheme';\nimport DarkTheme from '../styles/DarkTheme';\n\ntype Props = {\n children: React.ReactNode;\n theme?: ReactNativePaper.Theme;\n settings?: Settings;\n};\n\nconst Provider = ({ ...props }: Props) => {\n const colorSchemeName =\n (!props.theme && Appearance?.getColorScheme()) || 'light';\n\n const [reduceMotionEnabled, setReduceMotionEnabled] = React.useState<boolean>(\n false\n );\n const [colorScheme, setColorScheme] = React.useState<ColorSchemeName>(\n colorSchemeName\n );\n\n const handleAppearanceChange = (\n preferences: Appearance.AppearancePreferences\n ) => {\n const { colorScheme } = preferences;\n setColorScheme(colorScheme);\n };\n\n React.useEffect(() => {\n let subscription: NativeEventSubscription | undefined;\n\n if (!props.theme) {\n subscription = AccessibilityInfo.addEventListener(\n 'reduceMotionChanged',\n setReduceMotionEnabled\n );\n }\n return () => {\n if (!props.theme) {\n if (subscription?.remove) {\n subscription.remove();\n } else {\n AccessibilityInfo.removeEventListener(\n 'reduceMotionChanged',\n setReduceMotionEnabled\n );\n }\n }\n };\n }, [props.theme]);\n\n React.useEffect(() => {\n let appearanceSubscription: NativeEventSubscription | undefined;\n if (!props.theme) {\n appearanceSubscription = Appearance?.addChangeListener(\n handleAppearanceChange\n ) as NativeEventSubscription | undefined;\n }\n return () => {\n if (!props.theme) {\n if (appearanceSubscription) {\n appearanceSubscription.remove();\n } else {\n Appearance?.removeChangeListener(handleAppearanceChange);\n }\n }\n };\n }, [props.theme]);\n\n const getTheme = () => {\n const { theme: providedTheme } = props;\n\n if (providedTheme) {\n return providedTheme;\n } else {\n const theme = (colorScheme === 'dark'\n ? DarkTheme\n : DefaultTheme) as ReactNativePaper.Theme;\n\n return {\n ...theme,\n animation: {\n ...theme.animation,\n scale: reduceMotionEnabled ? 0 : 1,\n },\n };\n }\n };\n\n const { children, settings } = props;\n return (\n <PortalHost>\n <SettingsProvider value={settings || { icon: MaterialCommunityIcon }}>\n <ThemeProvider theme={getTheme()}>{children}</ThemeProvider>\n </SettingsProvider>\n </PortalHost>\n );\n};\n\nexport default Provider;\n"]}
\No newline at end of file