@wavemaker/app-rn-runtime 11.14.1-13.6377 → 11.14.1-15.6409

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/components/basic/bottomsheet/bottomsheet.component.js +12 -0
  2. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  3. package/components/basic/progress-circle/progress-circle.component.js +3 -3
  4. package/components/basic/progress-circle/progress-circle.component.js.map +1 -1
  5. package/components/chart/area-chart/area-chart.component.js +26 -9
  6. package/components/chart/area-chart/area-chart.component.js.map +1 -1
  7. package/components/chart/bar-chart/bar-chart.component.js +35 -6
  8. package/components/chart/bar-chart/bar-chart.component.js.map +1 -1
  9. package/components/chart/bar-chart/bar-chart.props.js +1 -0
  10. package/components/chart/bar-chart/bar-chart.props.js.map +1 -1
  11. package/components/chart/basechart.component.js +8 -7
  12. package/components/chart/basechart.component.js.map +1 -1
  13. package/components/chart/basechart.props.js +1 -0
  14. package/components/chart/basechart.props.js.map +1 -1
  15. package/components/chart/bubble-chart/bubble-chart.component.js +22 -5
  16. package/components/chart/bubble-chart/bubble-chart.component.js.map +1 -1
  17. package/components/chart/line-chart/line-chart.component.js +22 -5
  18. package/components/chart/line-chart/line-chart.component.js.map +1 -1
  19. package/components/chart/pie-chart/pie-chart.component.js +14 -2
  20. package/components/chart/pie-chart/pie-chart.component.js.map +1 -1
  21. package/components/container/wizard/wizard.component.js +1 -1
  22. package/components/container/wizard/wizard.component.js.map +1 -1
  23. package/components/container/wizard/wizard.props.js +0 -1
  24. package/components/container/wizard/wizard.props.js.map +1 -1
  25. package/components/container/wizard/wizardstep/wizardstep.component.js +2 -2
  26. package/components/container/wizard/wizardstep/wizardstep.component.js.map +1 -1
  27. package/components/input/radioset/radioset.component.js +3 -6
  28. package/components/input/radioset/radioset.component.js.map +1 -1
  29. package/components/input/text/text.component.js +1 -0
  30. package/components/input/text/text.component.js.map +1 -1
  31. package/components/input/text/text.styles.js +4 -0
  32. package/components/input/text/text.styles.js.map +1 -1
  33. package/components/navigation/popover/popover.component.js +3 -3
  34. package/components/navigation/popover/popover.component.js.map +1 -1
  35. package/core/base.component.js +0 -5
  36. package/core/base.component.js.map +1 -1
  37. package/core/components/error-fallback/error-fallback.component.js +18 -50
  38. package/core/components/error-fallback/error-fallback.component.js.map +1 -1
  39. package/core/components/error-fallback/error-fallback.styles.js +1 -4
  40. package/core/components/error-fallback/error-fallback.styles.js.map +1 -1
  41. package/core/components/textinput.component.js +6 -2
  42. package/core/components/textinput.component.js.map +1 -1
  43. package/core/error-boundary.component.js +1 -17
  44. package/core/error-boundary.component.js.map +1 -1
  45. package/core/fixed-view.component.js +19 -2
  46. package/core/fixed-view.component.js.map +1 -1
  47. package/core/tappable.component.js +1 -1
  48. package/core/tappable.component.js.map +1 -1
  49. package/npm-shrinkwrap.json +190 -245
  50. package/package-lock.json +190 -245
  51. package/package.json +2 -2
  52. package/runtime/App.js +12 -122
  53. package/runtime/App.js.map +1 -1
  54. package/runtime/base-page.component.js +2 -11
  55. package/runtime/base-page.component.js.map +1 -1
  56. package/styles/theme.js +6 -0
  57. package/styles/theme.js.map +1 -1
  58. package/core/advanced-promise-rejection-tracker.js +0 -208
  59. package/core/advanced-promise-rejection-tracker.js.map +0 -1
  60. package/core/global-error-handler.service.js +0 -103
  61. package/core/global-error-handler.service.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["clone","isEqual","React","CommonActions","SplashScreen","WmPage","NavigationServiceProvider","AppSecurityService","AppSpinnerService","BaseFragment","Watcher","setCurrentPageInAppLayout","ScreenCaptureProtectionConsumer","BasePage","constructor","props","_this$appConfig$drawe","_defineProperty","setTimeout","hideAsync","pageName","route","name","pageParams","params","appConfig","currentPage","drawer","setContent","serviceDefinitions","App","watcher","ROOT","create","canUserAccessPage","then","flag","cache","redirectToLogin","toHashURL","diagnostics","pageStartTime","Date","now","onComponentInit","w","targetWidget","refreshdataonattach","toggleDrawer","navigation","setDrawerContent","content","drawerContent","drawerType","hasDrawer","proxy","_this$appConfig$drawe2","_this$appConfig$drawe4","_this$appConfig$drawe3","createElement","value","setAnimation","onAttach","pageReadyTime","notify","onFragmentReady","onContentReady","triggerPageReady","hide","cleanup","push","addListener","_this$appConfig$scree","refresh","screenCaptureContext","screenCaptureProtection","enabled","enableProtection","_this$appConfig$scree2","disableProtection","componentWillUnmount","canNavigate","nextPage","navigate","onBeforePageLeave","e","handleCallbackError","goToPage","clearCahe","isNavigable","Promise","resolve","_params","dispatch","reset","index","routes","onDetach","destroyMe","closeDrawer","navigateToLandingPage","hash","paramStr","Object","keys","map","k","join","goBack","_navigation$getState","getState","canGoBack","length","window","history","back","openUrl","url","startsWith","substring","splits","split","p","forEach","openBrowser","isActiveTabbarItem","label","link","links","possibleLinks","find","l","includes","renderWidget","context","renderPage"],"sources":["base-page.component.tsx"],"sourcesContent":["import { clone, isEqual } from 'lodash';\nimport React, { ReactNode } from 'react';\nimport { CommonActions } from '@react-navigation/native';\nimport * as SplashScreen from 'expo-splash-screen';\nimport { BaseComponent } from '@wavemaker/app-rn-runtime/core/base.component';\n\nimport WmPage from '@wavemaker/app-rn-runtime/components/page/page.component';\nimport NavigationService, { NavigationServiceProvider } from '@wavemaker/app-rn-runtime/core/navigation.service';\n\nimport AppSecurityService from './services/app-security.service';\nimport AppSpinnerService from './services/app-spinner.service';\nimport BaseFragment, { FragmentProps, FragmentState } from './base-fragment.component';\nimport { Watcher } from './watcher';\nimport { setCurrentPageInAppLayout } from '../core/utils';\nimport { ScreenCaptureProtectionConsumer, ScreenCaptureProtectionContextType } from '../core/screen-capture-protection.service';\nimport { Alert } from 'react-native';\n\ndeclare const window: any;\n\nexport interface PageProps extends FragmentProps {\n route: any;\n navigation: any;\n destroyMe: Function;\n}\n\nexport interface PageState extends FragmentState<PageProps> {\n}\n\nexport default abstract class BasePage extends BaseFragment<PageProps, PageState> implements NavigationService {\n private pageName = null as unknown as string;\n private pageParams: any = {};\n private hasDrawer = false;\n private hasTabbar = false;\n private drawerContent = null as React.ReactNode;\n private drawerType = '';\n private screenCaptureContext: ScreenCaptureProtectionContextType | null = null;\n\n constructor(props: PageProps) {\n super(props);\n setTimeout(() => {\n SplashScreen.hideAsync();\n }, 300);\n this.pageName = props.route.name;\n this.pageParams = props.route.params;\n this.appConfig.currentPage = this;\n this.appConfig.drawer?.setContent(null);\n this.serviceDefinitions = this.App.serviceDefinitions;\n this.watcher = Watcher.ROOT.create();\n \n \n AppSecurityService.canUserAccessPage(this.pageName)\n .then(flag => {\n if (!flag) {\n this.cache = false;\n AppSecurityService.redirectToLogin(this.toHashURL());\n }\n });\n if (this.App.appConfig.diagnostics.pageStartTime < 0) {\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n }\n\n setCurrentPageInAppLayout(props.route.name);\n }\n\n onComponentInit(w: BaseComponent<any, any, any>) {\n super.onComponentInit(w);\n if (w instanceof WmPage) {\n this.targetWidget = w;\n const props = w.props as any;\n this.cache = !(props.cache === false);\n this.refreshdataonattach = !(props.refreshdataonattach === false);\n }\n }\n\n toggleDrawer() {\n (this.props as PageProps).navigation.toggleDrawer();\n }\n\n setDrawerContent(content = this.drawerContent, drawerType = this.drawerType) {\n if (!content) {\n return;\n }\n this.drawerContent = content;\n this.drawerType = drawerType;\n this.hasDrawer = true;\n setTimeout(() => {\n if (this.appConfig.currentPage === this \n || this.appConfig.currentPage.proxy === this) {\n this.appConfig.drawer?.setContent(null);\n setTimeout(() => {\n this.appConfig.drawer?.setContent((\n <NavigationServiceProvider value={this}>\n {content}\n </NavigationServiceProvider>));\n }, 500);\n this.appConfig.drawer?.setAnimation(drawerType);\n }\n }, 10);\n }\n\n onAttach() {\n super.onAttach();\n this.setDrawerContent();\n this.App.appConfig.diagnostics.pageReadyTime = Date.now();\n this.App.notify('pageAttached', this);\n }\n\n onFragmentReady() {\n return super.onFragmentReady().then(() => {\n this.onContentReady();\n this.App.triggerPageReady(this.pageName, this.proxy as BasePage);\n this.App.appConfig.diagnostics.pageReadyTime = Date.now(); \n this.App.notify('pageReady', this);\n AppSpinnerService.hide();\n this.cleanup.push((this.props as PageProps).navigation.addListener('focus', () => {\n if (this.appConfig.currentPage !== this) {\n this.appConfig.currentPage = this;\n this.onAttach();\n this.appConfig.refresh();\n }\n if (this.screenCaptureContext && this.appConfig.screenCaptureProtection?.enabled) {\n this.screenCaptureContext.enableProtection();\n }\n }));\n \n this.cleanup.push((this.props as PageProps).navigation.addListener('blur', () => {\n if (this.screenCaptureContext && this.appConfig.screenCaptureProtection?.enabled) {\n this.screenCaptureContext.disableProtection();\n }\n }));\n });\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n this.App.notify('pageDestroyed', this);\n }\n\n async canNavigate (currentPage: string, nextPage: string) {\n let navigate = true;\n //added try-catch to catch any errors in the callback fn and propogate it to global error handler.\n try {\n navigate = await this.onBeforePageLeave(currentPage, nextPage);\n } catch (e) {\n this.App.handleCallbackError(e, `Error in page-level onBeforePageLeave callback`);\n }\n \n if(navigate !== false){\n try {\n navigate = await this.App.onBeforePageLeave(currentPage, nextPage);\n } catch (e) {\n this.App.handleCallbackError(e, `Error in app-level onBeforePageLeave callback`);\n }\n }\n\n if(navigate !== false) navigate = true;\n\n return navigate; \n }\n\n async onBeforePageLeave(currentPage: string, nextPage: string) {\n //method can be override by the user from studio;\n return true;\n }\n\n async goToPage(pageName: string, params: any, clearCahe = false) {\n const isNavigable = await this.canNavigate(this.pageName, pageName)\n if(!isNavigable){\n return Promise.resolve();\n }\n\n const navigation = (this.props as PageProps).navigation;\n const _params = clone(params);\n _params && delete _params['pageName'];\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n if (pageName !== this.pageName || !isEqual(_params || null, this.pageParams || null)) {\n if (pageName === this.pageName) {\n navigation.push(pageName, _params);\n } else if (clearCahe) {\n navigation.dispatch(CommonActions.reset({\n index: 0,\n routes: [\n { name: pageName, params: params }\n ]}));\n } else {\n navigation.navigate(pageName, _params);\n }\n if (this.cache) {\n this.onDetach();\n } else {\n this.props.destroyMe();\n }\n } else {\n (this.props as PageProps).navigation.closeDrawer();\n }\n return Promise.resolve();\n }\n\n public navigateToLandingPage() {\n AppSecurityService.navigateToLandingPage();\n }\n\n public toHashURL() {\n const hash = `#/${this.pageName}`;\n const paramStr = Object.keys(this.pageParams || [])\n .map(k => k && `${k}=${this.pageParams[k]}`)\n .join('&');\n return hash + (paramStr ? `?${paramStr}` : '');\n }\n\n async goBack() {\n const navigation = (this.props as PageProps).navigation;\n const routes = navigation.getState()?.routes;\n let isNavigable = true;\n\n if(navigation.canGoBack()){\n isNavigable = await this.canNavigate(this.pageName, routes[routes.length - 2].name)\n }\n if(!isNavigable){\n return Promise.resolve();\n }\n\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n if (navigation.canGoBack()) {\n navigation.goBack();\n } else if (window && window.history) {\n window.history.back();\n }\n return Promise.resolve();\n }\n\n openUrl(url: string, params = {} as any) {\n if (url) {\n if (url.startsWith('#')) {\n url = url.substring(1);\n url = url.startsWith('/') ? url.substring(1) : url;\n const splits = url.split('?');\n const pageName = splits[0];\n let params = {} as any;\n if (splits.length > 1) {\n splits[1].split('&')\n .map(p => p.split('='))\n .forEach(p => params[p[0]] = p[1]);\n }\n return this.goToPage(pageName, params);\n } else {\n this.App.openBrowser(url, params);\n }\n }\n return Promise.resolve();\n }\n\n isActiveTabbarItem({label, link, links}: {label: string, link: string, links: string[]}) {\n const pageName = this.pageName;\n const possibleLinks = [pageName, '#' + pageName, '#/' + pageName];\n return links && links.find(l => possibleLinks.includes(l));\n }\n\n abstract renderPage(): ReactNode;\n\n renderWidget(props: PageProps) {\n return (\n <ScreenCaptureProtectionConsumer>\n {(context: ScreenCaptureProtectionContextType | null) => {\n if (!context) return this.renderPage();\n this.screenCaptureContext = context;\n return this.renderPage();\n }}\n </ScreenCaptureProtectionConsumer>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clone","isEqual","React","CommonActions","SplashScreen","WmPage","NavigationServiceProvider","AppSecurityService","AppSpinnerService","BaseFragment","Watcher","setCurrentPageInAppLayout","ScreenCaptureProtectionConsumer","BasePage","constructor","props","_this$appConfig$drawe","_defineProperty","setTimeout","hideAsync","pageName","route","name","pageParams","params","appConfig","currentPage","drawer","setContent","serviceDefinitions","App","watcher","ROOT","create","canUserAccessPage","then","flag","cache","redirectToLogin","toHashURL","diagnostics","pageStartTime","Date","now","onComponentInit","w","targetWidget","refreshdataonattach","toggleDrawer","navigation","setDrawerContent","content","drawerContent","drawerType","hasDrawer","proxy","_this$appConfig$drawe2","_this$appConfig$drawe4","_this$appConfig$drawe3","createElement","value","setAnimation","onAttach","pageReadyTime","notify","onFragmentReady","onContentReady","triggerPageReady","hide","cleanup","push","addListener","_this$appConfig$scree","refresh","screenCaptureContext","screenCaptureProtection","enabled","enableProtection","_this$appConfig$scree2","disableProtection","componentWillUnmount","canNavigate","nextPage","navigate","onBeforePageLeave","goToPage","clearCahe","isNavigable","Promise","resolve","_params","dispatch","reset","index","routes","onDetach","destroyMe","closeDrawer","navigateToLandingPage","hash","paramStr","Object","keys","map","k","join","goBack","_navigation$getState","getState","canGoBack","length","window","history","back","openUrl","url","startsWith","substring","splits","split","p","forEach","openBrowser","isActiveTabbarItem","label","link","links","possibleLinks","find","l","includes","renderWidget","context","renderPage"],"sources":["base-page.component.tsx"],"sourcesContent":["import { clone, isEqual } from 'lodash';\nimport React, { ReactNode } from 'react';\nimport { CommonActions } from '@react-navigation/native';\nimport * as SplashScreen from 'expo-splash-screen';\nimport { BaseComponent } from '@wavemaker/app-rn-runtime/core/base.component';\n\nimport WmPage from '@wavemaker/app-rn-runtime/components/page/page.component';\nimport NavigationService, { NavigationServiceProvider } from '@wavemaker/app-rn-runtime/core/navigation.service';\n\nimport AppSecurityService from './services/app-security.service';\nimport AppSpinnerService from './services/app-spinner.service';\nimport BaseFragment, { FragmentProps, FragmentState } from './base-fragment.component';\nimport { Watcher } from './watcher';\nimport { setCurrentPageInAppLayout } from '../core/utils';\nimport { ScreenCaptureProtectionConsumer, ScreenCaptureProtectionContextType } from '../core/screen-capture-protection.service';\nimport { Alert } from 'react-native';\n\ndeclare const window: any;\n\nexport interface PageProps extends FragmentProps {\n route: any;\n navigation: any;\n destroyMe: Function;\n}\n\nexport interface PageState extends FragmentState<PageProps> {\n}\n\nexport default abstract class BasePage extends BaseFragment<PageProps, PageState> implements NavigationService {\n private pageName = null as unknown as string;\n private pageParams: any = {};\n private hasDrawer = false;\n private hasTabbar = false;\n private drawerContent = null as React.ReactNode;\n private drawerType = '';\n private screenCaptureContext: ScreenCaptureProtectionContextType | null = null;\n\n constructor(props: PageProps) {\n super(props);\n setTimeout(() => {\n SplashScreen.hideAsync();\n }, 300);\n this.pageName = props.route.name;\n this.pageParams = props.route.params;\n this.appConfig.currentPage = this;\n this.appConfig.drawer?.setContent(null);\n this.serviceDefinitions = this.App.serviceDefinitions;\n this.watcher = Watcher.ROOT.create();\n \n \n AppSecurityService.canUserAccessPage(this.pageName)\n .then(flag => {\n if (!flag) {\n this.cache = false;\n AppSecurityService.redirectToLogin(this.toHashURL());\n }\n });\n if (this.App.appConfig.diagnostics.pageStartTime < 0) {\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n }\n\n setCurrentPageInAppLayout(props.route.name);\n }\n\n onComponentInit(w: BaseComponent<any, any, any>) {\n super.onComponentInit(w);\n if (w instanceof WmPage) {\n this.targetWidget = w;\n const props = w.props as any;\n this.cache = !(props.cache === false);\n this.refreshdataonattach = !(props.refreshdataonattach === false);\n }\n }\n\n toggleDrawer() {\n (this.props as PageProps).navigation.toggleDrawer();\n }\n\n setDrawerContent(content = this.drawerContent, drawerType = this.drawerType) {\n if (!content) {\n return;\n }\n this.drawerContent = content;\n this.drawerType = drawerType;\n this.hasDrawer = true;\n setTimeout(() => {\n if (this.appConfig.currentPage === this \n || this.appConfig.currentPage.proxy === this) {\n this.appConfig.drawer?.setContent(null);\n setTimeout(() => {\n this.appConfig.drawer?.setContent((\n <NavigationServiceProvider value={this}>\n {content}\n </NavigationServiceProvider>));\n }, 500);\n this.appConfig.drawer?.setAnimation(drawerType);\n }\n }, 10);\n }\n\n onAttach() {\n super.onAttach();\n this.setDrawerContent();\n this.App.appConfig.diagnostics.pageReadyTime = Date.now();\n this.App.notify('pageAttached', this);\n }\n\n onFragmentReady() {\n return super.onFragmentReady().then(() => {\n this.onContentReady();\n this.App.triggerPageReady(this.pageName, this.proxy as BasePage);\n this.App.appConfig.diagnostics.pageReadyTime = Date.now(); \n this.App.notify('pageReady', this);\n AppSpinnerService.hide();\n this.cleanup.push((this.props as PageProps).navigation.addListener('focus', () => {\n if (this.appConfig.currentPage !== this) {\n this.appConfig.currentPage = this;\n this.onAttach();\n this.appConfig.refresh();\n }\n if (this.screenCaptureContext && this.appConfig.screenCaptureProtection?.enabled) {\n this.screenCaptureContext.enableProtection();\n }\n }));\n \n this.cleanup.push((this.props as PageProps).navigation.addListener('blur', () => {\n if (this.screenCaptureContext && this.appConfig.screenCaptureProtection?.enabled) {\n this.screenCaptureContext.disableProtection();\n }\n }));\n });\n }\n\n componentWillUnmount() {\n super.componentWillUnmount();\n this.App.notify('pageDestroyed', this);\n }\n\n async canNavigate (currentPage: string, nextPage: string) {\n let navigate = true;\n navigate = await this.onBeforePageLeave(currentPage, nextPage);\n if(navigate !== false){\n navigate = await this.App.onBeforePageLeave(currentPage, nextPage);\n }\n\n if(navigate !== false) navigate = true;\n\n return navigate; \n }\n\n async onBeforePageLeave(currentPage: string, nextPage: string) {\n //method can be override by the user from studio;\n return true;\n }\n\n async goToPage(pageName: string, params: any, clearCahe = false) {\n const isNavigable = await this.canNavigate(this.pageName, pageName)\n if(!isNavigable){\n return Promise.resolve();\n }\n\n const navigation = (this.props as PageProps).navigation;\n const _params = clone(params);\n _params && delete _params['pageName'];\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n if (pageName !== this.pageName || !isEqual(_params || null, this.pageParams || null)) {\n if (pageName === this.pageName) {\n navigation.push(pageName, _params);\n } else if (clearCahe) {\n navigation.dispatch(CommonActions.reset({\n index: 0,\n routes: [\n { name: pageName, params: params }\n ]}));\n } else {\n navigation.navigate(pageName, _params);\n }\n if (this.cache) {\n this.onDetach();\n } else {\n this.props.destroyMe();\n }\n } else {\n (this.props as PageProps).navigation.closeDrawer();\n }\n return Promise.resolve();\n }\n\n public navigateToLandingPage() {\n AppSecurityService.navigateToLandingPage();\n }\n\n public toHashURL() {\n const hash = `#/${this.pageName}`;\n const paramStr = Object.keys(this.pageParams || [])\n .map(k => k && `${k}=${this.pageParams[k]}`)\n .join('&');\n return hash + (paramStr ? `?${paramStr}` : '');\n }\n\n async goBack() {\n const navigation = (this.props as PageProps).navigation;\n const routes = navigation.getState()?.routes;\n let isNavigable = true;\n\n if(navigation.canGoBack()){\n isNavigable = await this.canNavigate(this.pageName, routes[routes.length - 2].name)\n }\n if(!isNavigable){\n return Promise.resolve();\n }\n\n this.App.appConfig.diagnostics.pageStartTime = Date.now();\n if (navigation.canGoBack()) {\n navigation.goBack();\n } else if (window && window.history) {\n window.history.back();\n }\n return Promise.resolve();\n }\n\n openUrl(url: string, params = {} as any) {\n if (url) {\n if (url.startsWith('#')) {\n url = url.substring(1);\n url = url.startsWith('/') ? url.substring(1) : url;\n const splits = url.split('?');\n const pageName = splits[0];\n let params = {} as any;\n if (splits.length > 1) {\n splits[1].split('&')\n .map(p => p.split('='))\n .forEach(p => params[p[0]] = p[1]);\n }\n return this.goToPage(pageName, params);\n } else {\n this.App.openBrowser(url, params);\n }\n }\n return Promise.resolve();\n }\n\n isActiveTabbarItem({label, link, links}: {label: string, link: string, links: string[]}) {\n const pageName = this.pageName;\n const possibleLinks = [pageName, '#' + pageName, '#/' + pageName];\n return links && links.find(l => possibleLinks.includes(l));\n }\n\n abstract renderPage(): ReactNode;\n\n renderWidget(props: PageProps) {\n return (\n <ScreenCaptureProtectionConsumer>\n {(context: ScreenCaptureProtectionContextType | null) => {\n if (!context) return this.renderPage();\n this.screenCaptureContext = context;\n return this.renderPage();\n }}\n </ScreenCaptureProtectionConsumer>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/styles/theme.js CHANGED
@@ -96,6 +96,9 @@ export class Theme {
96
96
  val = this.replaceVariables(val);
97
97
  });
98
98
  }
99
+ if (isString(val) && val.match(/^-?\d+(\.\d+)?$/)) {
100
+ return parseFloat(val);
101
+ }
99
102
  return val;
100
103
  }
101
104
  clearCache() {
@@ -234,6 +237,9 @@ export class Theme {
234
237
  }
235
238
  }
236
239
  }
240
+ if (!isNil(style['color']) && style['color'] === 'transparent') {
241
+ style['color'] = 'rgba(255, 255, 255, 0)';
242
+ }
237
243
  let screenWidth = Dimensions.get('window').width;
238
244
  let screenHeight = Dimensions.get('window').height;
239
245
  Object.keys(style).forEach((k, i) => {
@@ -1 +1 @@
1
- {"version":3,"names":["cloneDeep","isNil","forEach","flatten","isArray","isEmpty","isObject","isString","get","reverse","React","camelCase","Dimensions","Platform","deepCopy","isWebPreviewMode","EventNotifier","ViewPort","EVENTS","ViewPortEvents","MediaQueryList","ThemeVariables","getErrorMessage","getStyleReference","isValidStyleProp","injector","isNativeStyle","DEFAULT_CLASS","window","matchMedia","query","DEVICE_BREAK_POINTS","DEVICE_BREAK_POINTS_NATIVE_MOBILE","getBreakPointValue","name","OS","ThemeEvent","Theme","constructor","parent","_this$getAppConfig","_defineProperty","revertLayoutToExpo50","getAppConfig","traceEnabled","enableTrace","flag","reset","children","t","subscribe","event","fn","eventNotifer","notify","replaceVariables","val","match","s","variableName","substring","length","replace","INSTANCE","clearCache","cache","registerStyle","styleGenerators","push","addStyle","bind","checkStyleProperties","value","Object","keys","map","k","console","log","extend","style","styles","getStyle","addTrace","styleName","mergedChildstyle","childStyle","parentStyle","v","__trace","prefix","result","collect","mergeStyle","flattenStyles","cs","filter","cleanseStyleProperties","paddingLeft","paddingRight","undefined","marginLeft","marginRight","screenWidth","width","screenHeight","height","i","stylePropertyValue","endsWith","Number","indexOf","split","c","mediaQuery","clonedStyle","matches","BASE","$new","newTheme","destroy","splice","getTextStyle","color","fontFamily","fontSize","fontStyle","fontWeight","includeFontPadding","fontVariant","letterSpacing","lineHeight","textAlign","textAlignVertical","textDecorationColor","textDecorationStyle","textShadowColor","textShadowOffset","textShadowRadius","textTransform","verticalAlign","writingDirection","userSelect","themeVariables","CHANGE","_Theme","SIZE_CHANGE","ThemeContext","createContext","ThemeProvider","Provider","ThemeConsumer","Consumer","addColStyles","device","minWidth","root","display","addDisplayStyles","maxWidth","addElevationClasses","boxShadow","zIndex","transform","scale","overflow","backgroundColor","dangerColor","infoColor","primaryColor","successColor","warningColor","borderColor","text"],"sources":["theme.tsx"],"sourcesContent":["import { cloneDeep, isNil, forEach, flatten, isArray, isEmpty, isObject, isString, isFunction, get, reverse } from 'lodash';\nimport React from 'react';\nimport { camelCase } from 'lodash-es';\nimport { TextStyle, ViewStyle, ImageStyle, ImageBackground, Dimensions, Platform } from 'react-native';\nimport { deepCopy, isWebPreviewMode } from '@wavemaker/app-rn-runtime/core/utils';\nimport EventNotifier from '@wavemaker/app-rn-runtime/core/event-notifier';\nimport ViewPort, {EVENTS as ViewPortEvents} from '@wavemaker/app-rn-runtime/core/viewport';\nimport MediaQueryList from './MediaQueryList';\nimport ThemeVariables from './theme.variables';\nimport { getErrorMessage, getStyleReference, isValidStyleProp } from './style-prop.validator';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport { isNativeStyle} from '@wavemaker/app-rn-runtime/core/utils';\nexport const DEFAULT_CLASS = 'DEFAULT_CLASS';\n\ndeclare const matchMedia: any, window: any;\n\nif (typeof window !== \"undefined\") {\n // @ts-ignore: does not properly extend MediaQueryList\n window.matchMedia = (query: string) => new MediaQueryList(query);\n}\n\nexport const DEVICE_BREAK_POINTS: {[key: string]: string} = {\n 'MIN_EXTRA_SMALL_DEVICE' : '0px',\n 'MAX_EXTRA_SMALL_DEVICE' : '767px',\n 'MIN_SMALL_DEVICE' : '768px',\n 'MAX_SMALL_DEVICE' : '991px',\n 'MIN_MEDIUM_DEVICE' : '992px',\n 'MAX_MEDIUM_DEVICE' : '1199px',\n 'MIN_LARGE_DEVICE' : '1200px',\n 'MAX_LARGE_DEVICE' : '1000000px',\n};\n\nexport const DEVICE_BREAK_POINTS_NATIVE_MOBILE: {[key: string]: string} = {\n 'MIN_EXTRA_SMALL_DEVICE': '0px', // 0-479px (phones portrait)\n 'MAX_EXTRA_SMALL_DEVICE': '479px',\n 'MIN_SMALL_DEVICE': '480px', // 480-767px (phones landscape, small tablets portrait)\n 'MAX_SMALL_DEVICE': '767px',\n 'MIN_MEDIUM_DEVICE': '768px', // 768-1023px (tablets portrait, small laptops)\n 'MAX_MEDIUM_DEVICE': '1023px',\n 'MIN_LARGE_DEVICE': '1024px', // 1024px+ (tablets landscape, desktops)\n 'MAX_LARGE_DEVICE': '1000000px',\n};\n\nexport const getBreakPointValue = (name: string) => {\n if(Platform.OS === 'web') {\n return DEVICE_BREAK_POINTS[name];\n }\n\n return DEVICE_BREAK_POINTS_NATIVE_MOBILE[name];\n}\n \n \nexport type styleGeneratorFn<T extends NamedStyles<any>> = (\n themeVariables: ThemeVariables,\n addStyle: (name: string, extend: string, style: T) => void) => void\n\nexport enum ThemeEvent {\n CHANGE ='change'\n};\n\nexport class Theme {\n public static BASE = new Theme(null as any, 'default');\n\n static {\n ViewPort.subscribe(ViewPortEvents.SIZE_CHANGE, () => {\n Theme.BASE.reset();\n });\n }\n\n\n private eventNotifer = new EventNotifier();\n\n private children: Theme[] = [];\n\n private styles: any = {};\n\n private cache: any = {};\n\n private traceEnabled = false;\n \n private revertLayoutToExpo50: Boolean;\n\n private styleGenerators: styleGeneratorFn<any>[] = [];\n\n private constructor(private parent:Theme, public readonly name: string) {\n this.revertLayoutToExpo50 = this.getAppConfig()?.revertLayoutToExpo50 || false;\n if (parent) {\n this.traceEnabled = parent.traceEnabled;\n } else {\n this.traceEnabled = isWebPreviewMode();\n }\n }\n\n private getAppConfig() {\n return injector.get<AppConfig>('APP_CONFIG');\n }\n\n public enableTrace(flag: boolean) {\n this.traceEnabled = flag;\n this.reset();\n this.children.forEach(t => t.enableTrace(flag));\n }\n\n public subscribe(event: ThemeEvent, fn: Function) {\n return this.eventNotifer.subscribe(event, fn);\n }\n\n public notify(event: ThemeEvent): void {\n this.eventNotifer.notify(event, []);\n this.children.forEach(t => t.notify(event));\n }\n\n private replaceVariables(val: string) {\n if(isString(val)) { \n (val.match(/_*var\\([^\\)]*\\)/g) || []).forEach((s) => {\n const variableName = s.substring(4, s.length - 1);\n val = val.replace(s, (ThemeVariables.INSTANCE as any)[variableName]\n || (ThemeVariables.INSTANCE as any)[variableName.substring(2)]\n || (ThemeVariables.INSTANCE as any)[camelCase(variableName.substring(2))]);\n val = this.replaceVariables(val);\n });\n }\n return val; \n }\n\n clearCache() {\n this.cache = {};\n this.children.forEach((t) => t.clearCache());\n }\n\n registerStyle<T extends NamedStyles<any>>(fn: styleGeneratorFn<T>) {\n this.styleGenerators.push(fn);\n fn(ThemeVariables.INSTANCE, this.addStyle.bind(this));\n }\n\n checkStyleProperties(name: string, value : any) {\n if (isObject(value)) {\n Object.keys(value).map((k) => this.checkStyleProperties(k, (value as any)[k]));\n } else if(name && !isValidStyleProp(name, value)) {\n console.log(\n `%cInvalid Style property in ${this.name}: ${getErrorMessage(name, value)}`,\n 'background-color: #FF0000;font-weight: bold; color: #fff'\n );\n console.log(`Refer: ${getStyleReference(name)}`);\n }\n }\n\n private addStyle<T extends NamedStyles<any>>(name: string, extend: string, style: T) {\n this.styles[name] = deepCopy(this.getStyle(extend), this.styles[name], style);\n }\n\n private addTrace(styleName: string, mergedChildstyle: any, childStyle: any, parentStyle?: any) {\n if (!this.traceEnabled) {\n return;\n }\n let addTrace = !isEmpty(childStyle);\n forEach(mergedChildstyle, (v: any, k: string) => {\n if (v && !isString(v) && !isArray(v) && isObject(v)) {\n addTrace = false;\n\n if (!isNativeStyle(k, 'property')) {\n this.addTrace(styleName + '.' + k, v, childStyle && childStyle[k], parentStyle && parentStyle[k])\n }\n }\n });\n if (addTrace) {\n mergedChildstyle['__trace'] = [\n {\n name: styleName,\n value: childStyle\n },\n ...(parentStyle?.__trace|| [])\n ];\n } else {\n mergedChildstyle['__trace'] = [...(parentStyle?.__trace|| [])];\n }\n }\n\n private flatten(style: any, prefix = \"\", result = {} as any) {\n let collect = !isEmpty(style);\n forEach(style, (v: any, k: string) => {\n if (v && !isString(v) && !isArray(v) && isObject(v)) {\n collect = false;\n this.flatten(v, (prefix ? prefix + '.' : '') + k, result)\n }\n });\n if (collect) {\n result[prefix] = style;\n }\n return result;\n }\n\n mergeStyle(...styles: any) {\n const style = deepCopy(...styles);\n if (this.traceEnabled) {\n const flattenStyles = this.flatten(style);\n Object.keys(flattenStyles).forEach(k => {\n const s = flattenStyles[k];\n if (!isNativeStyle(k, 'path')) {\n s['__trace'] = flatten(reverse(styles.map((v: any) => {\n const cs = get(v, k);\n if (cs && cs.__trace) {\n return [...cs.__trace];\n }\n return [];\n }).filter((t: any) => t.length > 0)));\n }\n });\n }\n return style;\n }\n\n cleanseStyleProperties(style: any) {\n if (!(style && isObject(style)) || isString(style) || isArray(style)) {\n return style;\n }\n style = style as any;\n if (isObject(style) && !isArray(style)) {\n Object.keys(style).forEach(k => {\n (style as any)[k] = this.replaceVariables((style as any)[k]);\n });\n }\n if (!isNil(style['shadowRadius'])) {\n if (style['shadowRadius'] <= 0) {\n style['shadowColor'] = 'transparent';\n } else if (isNil(style['elevation'])) {\n style['elevation'] = 2;\n }\n }\n if (!isNil(style['margin'])) {\n style['marginLeft'] = style['marginLeft'] || style['margin'];\n style['marginRight'] = style['marginRight'] || style['margin'];\n style['marginTop'] = style['marginTop'] || style['margin'];\n style['marginBottom'] = style['marginBottom'] || style['margin'];\n delete style['margin'];\n }\n if (!isNil(style['padding'])) {\n style['paddingLeft'] = style['paddingLeft'] || style['padding'];\n style['paddingRight'] = style['paddingRight'] || style['padding'];\n style['paddingTop'] = style['paddingTop'] || style['padding'];\n style['paddingBottom'] = style['paddingBottom'] || style['padding'];\n delete style['padding'];\n }\n if (this.revertLayoutToExpo50 && !isNil(style['flexDirection']) && style['flexDirection'] === 'row-reverse') {\n if (!isNil(style['paddingLeft']) || !isNil(style['paddingRight'])) {\n if (!isNil(style['paddingLeft']) && !isNil(style['paddingRight'])) {\n [style['paddingLeft'], style['paddingRight']] = [style['paddingRight'], style['paddingLeft']];\n } else {\n const [paddingLeft, paddingRight] = [style['paddingLeft'], style['paddingRight']];\n if (paddingLeft !== undefined) {\n style['paddingRight'] = paddingLeft;\n delete style['paddingLeft'];\n }\n if (paddingRight !== undefined) {\n style['paddingLeft'] = paddingRight;\n delete style['paddingRight'];\n }\n }\n }\n \n if (!isNil(style['marginLeft']) || !isNil(style['marginRight'])) {\n if (!isNil(style['marginLeft']) && !isNil(style['marginRight'])) {\n [style['marginLeft'], style['marginRight']] = [style['marginRight'], style['marginLeft']];\n } else {\n const [marginLeft, marginRight] = [style['marginLeft'], style['marginRight']];\n if (marginLeft !== undefined) {\n style['marginRight'] = marginLeft;\n delete style['marginLeft'];\n }\n if (marginRight !== undefined) {\n style['marginLeft'] = marginRight;\n delete style['marginRight'];\n }\n }\n } \n }\n let screenWidth = Dimensions.get('window').width;\n let screenHeight = Dimensions.get('window').height;\n Object.keys(style).forEach((k, i) => {\n let stylePropertyValue = style[k]\n if(typeof stylePropertyValue === 'string' && stylePropertyValue.endsWith('vw')) {\n stylePropertyValue = stylePropertyValue.replace('vw','')\n style[k] = Number(stylePropertyValue)/100 * screenWidth\n }\n if((typeof stylePropertyValue === 'string' && stylePropertyValue.endsWith('vh'))) {\n stylePropertyValue = stylePropertyValue.replace('vh','')\n style[k] = Number(stylePropertyValue)/100 * screenHeight\n }\n })\n Object.keys(style).forEach((k, i) => this.cleanseStyleProperties(style[k]));\n return style;\n }\n\n getStyle(name: string) {\n let style = this.cache[name];\n if (style) {\n return style;\n }\n if (!name) {\n return {};\n }\n if (name.indexOf(' ') > 0) {\n style = this.mergeStyle(...(name.split(' ').map(c => this.getStyle(c))));\n } else {\n const parentStyle = this.parent && this.parent.getStyle(name);\n const mediaQuery = (this.styles[name] || {})['@media'];\n let clonedStyle = {};\n if (!mediaQuery || matchMedia(mediaQuery).matches) {\n clonedStyle = cloneDeep(this.styles[name]);\n this.cleanseStyleProperties(clonedStyle);\n }\n if (this !== Theme.BASE && isWebPreviewMode()) {\n this.checkStyleProperties('', clonedStyle);\n }\n style = deepCopy(parentStyle, clonedStyle);\n this.addTrace(`@${this.name}:${name}`, style, clonedStyle, parentStyle);\n }\n this.cache[name] = style;\n return style;\n }\n\n $new(name = \"\", styles = {} as NamedStyles<any>) {\n const newTheme = new Theme(this, name);\n newTheme.reset(styles);\n this.children.push(newTheme);\n return newTheme;\n }\n\n destroy() {\n const i = this.parent.children.indexOf(this);\n if (i >= 0) {\n this.parent.children.splice(i, 1);\n }\n }\n \n getTextStyle(s: any) {\n if (!s) {\n return {};\n }\n return {\n color: s.color,\n fontFamily: s.fontFamily,\n fontSize: s.fontSize,\n fontStyle: s.fontStyle,\n fontWeight: s.fontWeight,\n includeFontPadding: s.includeFontPadding,\n fontVariant: s.fontVariant,\n letterSpacing: s.letterSpacing,\n lineHeight: s.lineHeight,\n textAlign: s.textAlign,\n textAlignVertical: s.textAlignVertical,\n textDecorationColor: s.textDecorationColor,\n textDecorationStyle: s.textDecorationStyle,\n textShadowColor: s.textShadowColor,\n textShadowOffset: s.textShadowOffset,\n textShadowRadius: s.textShadowRadius,\n textTransform: s.textTransform,\n verticalAlign: s.verticalAlign,\n writingDirection: s.writingDirection,\n userSelect: s.userSelect,\n } as TextStyle;\n }\n\n reset(styles?: NamedStyles<any>) {\n this.styles = {};\n this.clearCache();\n if (styles) {\n this.registerStyle((themeVariables, addStyle) => {\n Object.keys(styles).forEach(k => {\n addStyle(k, '', styles[k] as any);\n });\n });\n } else {\n this.styleGenerators.forEach(fn => \n fn(ThemeVariables.INSTANCE, this.addStyle.bind(this)));\n }\n this.notify(ThemeEvent.CHANGE);\n }\n}\nexport default Theme.BASE;\nexport type NamedStyles<T> = { [P in keyof T]: AllStyle | NamedStyles<T>};\nexport type BackgroundImageStyle = {\n backgroundImage: string,\n backgroundPosition: string,\n backgroundRepeat: string,\n backgroundSize: string | number\n};\n\nexport type AllStyle = (ViewStyle & TextStyle & ImageStyle & {userSelect?: 'none'| 'text'} & {rippleColor?: string});\n\nconst ThemeContext = React.createContext<Theme>(null as any);\n\nexport const ThemeProvider = ThemeContext.Provider;\nexport const ThemeConsumer = ThemeContext.Consumer;\n/**\n * Common styles\n */\n Theme.BASE.registerStyle((themeVariables, addStyle) => {\n const addColStyles = (device: string, minWidth: string) => {\n for(let i = 1; i <= 12; i++) {\n addStyle(`col-${device}-${i}`, '', {\n \"@media\": `(min-width: ${minWidth})`,\n root: {\n width: (100 * i / 12) + '%'\n }\n } as any)\n }\n };\n addColStyles('xs', getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'));\n addColStyles('sm', getBreakPointValue('MIN_SMALL_DEVICE'));\n addColStyles('md', getBreakPointValue('MIN_MEDIUM_DEVICE'));\n addColStyles('lg', getBreakPointValue('MIN_LARGE_DEVICE'));\n\n addStyle('d-none', '', {\n root: {\n display: 'none'\n }\n } as any);\n addStyle('d-flex', '', {\n root: {\n display: 'flex'\n }\n } as any);\n\n const addDisplayStyles = (device: string, minWidth: string, maxWidth: string) => {\n addStyle(`d-${device}-none`, '', {\n \"@media\": `(min-width: ${minWidth}) and (max-width: ${maxWidth})`,\n root: {\n display: 'none'\n }\n } as any);\n addStyle(`d-${device}-flex`, '', {\n \"@media\": `(min-width: ${minWidth}) and (max-width: ${maxWidth})`,\n root: {\n display: 'flex'\n }\n } as any);\n };\n addDisplayStyles('all', \n getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'),\n getBreakPointValue('MAX_LARGE_DEVICE'));\n addDisplayStyles('xs', \n getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'),\n getBreakPointValue('MAX_EXTRA_SMALL_DEVICE'));\n addDisplayStyles('sm', \n getBreakPointValue('MIN_SMALL_DEVICE'),\n getBreakPointValue('MAX_SMALL_DEVICE'));\n addDisplayStyles('md', \n getBreakPointValue('MIN_MEDIUM_DEVICE'),\n getBreakPointValue('MAX_MEDIUM_DEVICE'));\n addDisplayStyles('lg', \n getBreakPointValue('MIN_LARGE_DEVICE'),\n getBreakPointValue('MAX_LARGE_DEVICE'));\n\n const addElevationClasses = () => {\n for(let i = 1; i <= 10; i++) {\n addStyle(`elevate${i}`, '', {\n root : {\n boxShadow: `${i}px ${i}px ${i}px rgba(0, 0, 0, 0.27)`,\n zIndex: 1\n }\n });\n }\n };\n addElevationClasses();\n addStyle('hidden', '', {\n root: {\n width: 0,\n height: 0,\n transform: [{ scale: 0 }],\n overflow: 'hidden'\n }\n });\n addStyle('bg-danger', '', { root: { backgroundColor: themeVariables.dangerColor }});\n addStyle('bg-info', '', { root: { backgroundColor: themeVariables.infoColor }});\n addStyle('bg-primary', '', { root: { backgroundColor: themeVariables.primaryColor }});\n addStyle('bg-success', '', { root: { backgroundColor: themeVariables.successColor }});\n addStyle('bg-warning', '', { root: { backgroundColor: themeVariables.warningColor }});\n\n addStyle('border-danger', '', { root: { borderColor: themeVariables.dangerColor }});\n addStyle('border-info', '', { root: { borderColor: themeVariables.infoColor }});\n addStyle('border-primary', '', { root: { borderColor: themeVariables.primaryColor }});\n addStyle('border-success', '', { root: { borderColor: themeVariables.successColor }});\n addStyle('border-warning', '', { root: { borderColor: themeVariables.warningColor }});\n\n addStyle('hide-context-menu', '', { text: { userSelect: 'none' }});\n addStyle('hide-context-menu-input', '', { text: { userSelect: 'none' }});\n});\n\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["cloneDeep","isNil","forEach","flatten","isArray","isEmpty","isObject","isString","get","reverse","React","camelCase","Dimensions","Platform","deepCopy","isWebPreviewMode","EventNotifier","ViewPort","EVENTS","ViewPortEvents","MediaQueryList","ThemeVariables","getErrorMessage","getStyleReference","isValidStyleProp","injector","isNativeStyle","DEFAULT_CLASS","window","matchMedia","query","DEVICE_BREAK_POINTS","DEVICE_BREAK_POINTS_NATIVE_MOBILE","getBreakPointValue","name","OS","ThemeEvent","Theme","constructor","parent","_this$getAppConfig","_defineProperty","revertLayoutToExpo50","getAppConfig","traceEnabled","enableTrace","flag","reset","children","t","subscribe","event","fn","eventNotifer","notify","replaceVariables","val","match","s","variableName","substring","length","replace","INSTANCE","parseFloat","clearCache","cache","registerStyle","styleGenerators","push","addStyle","bind","checkStyleProperties","value","Object","keys","map","k","console","log","extend","style","styles","getStyle","addTrace","styleName","mergedChildstyle","childStyle","parentStyle","v","__trace","prefix","result","collect","mergeStyle","flattenStyles","cs","filter","cleanseStyleProperties","paddingLeft","paddingRight","undefined","marginLeft","marginRight","screenWidth","width","screenHeight","height","i","stylePropertyValue","endsWith","Number","indexOf","split","c","mediaQuery","clonedStyle","matches","BASE","$new","newTheme","destroy","splice","getTextStyle","color","fontFamily","fontSize","fontStyle","fontWeight","includeFontPadding","fontVariant","letterSpacing","lineHeight","textAlign","textAlignVertical","textDecorationColor","textDecorationStyle","textShadowColor","textShadowOffset","textShadowRadius","textTransform","verticalAlign","writingDirection","userSelect","themeVariables","CHANGE","_Theme","SIZE_CHANGE","ThemeContext","createContext","ThemeProvider","Provider","ThemeConsumer","Consumer","addColStyles","device","minWidth","root","display","addDisplayStyles","maxWidth","addElevationClasses","boxShadow","zIndex","transform","scale","overflow","backgroundColor","dangerColor","infoColor","primaryColor","successColor","warningColor","borderColor","text"],"sources":["theme.tsx"],"sourcesContent":["import { cloneDeep, isNil, forEach, flatten, isArray, isEmpty, isObject, isString, isFunction, get, reverse } from 'lodash';\nimport React from 'react';\nimport { camelCase } from 'lodash-es';\nimport { TextStyle, ViewStyle, ImageStyle, ImageBackground, Dimensions, Platform } from 'react-native';\nimport { deepCopy, isWebPreviewMode } from '@wavemaker/app-rn-runtime/core/utils';\nimport EventNotifier from '@wavemaker/app-rn-runtime/core/event-notifier';\nimport ViewPort, {EVENTS as ViewPortEvents} from '@wavemaker/app-rn-runtime/core/viewport';\nimport MediaQueryList from './MediaQueryList';\nimport ThemeVariables from './theme.variables';\nimport { getErrorMessage, getStyleReference, isValidStyleProp } from './style-prop.validator';\nimport injector from '@wavemaker/app-rn-runtime/core/injector';\nimport AppConfig from '@wavemaker/app-rn-runtime/core/AppConfig';\nimport { isNativeStyle} from '@wavemaker/app-rn-runtime/core/utils';\nexport const DEFAULT_CLASS = 'DEFAULT_CLASS';\n\ndeclare const matchMedia: any, window: any;\n\nif (typeof window !== \"undefined\") {\n // @ts-ignore: does not properly extend MediaQueryList\n window.matchMedia = (query: string) => new MediaQueryList(query);\n}\n\nexport const DEVICE_BREAK_POINTS: {[key: string]: string} = {\n 'MIN_EXTRA_SMALL_DEVICE' : '0px',\n 'MAX_EXTRA_SMALL_DEVICE' : '767px',\n 'MIN_SMALL_DEVICE' : '768px',\n 'MAX_SMALL_DEVICE' : '991px',\n 'MIN_MEDIUM_DEVICE' : '992px',\n 'MAX_MEDIUM_DEVICE' : '1199px',\n 'MIN_LARGE_DEVICE' : '1200px',\n 'MAX_LARGE_DEVICE' : '1000000px',\n};\n\nexport const DEVICE_BREAK_POINTS_NATIVE_MOBILE: {[key: string]: string} = {\n 'MIN_EXTRA_SMALL_DEVICE': '0px', // 0-479px (phones portrait)\n 'MAX_EXTRA_SMALL_DEVICE': '479px',\n 'MIN_SMALL_DEVICE': '480px', // 480-767px (phones landscape, small tablets portrait)\n 'MAX_SMALL_DEVICE': '767px',\n 'MIN_MEDIUM_DEVICE': '768px', // 768-1023px (tablets portrait, small laptops)\n 'MAX_MEDIUM_DEVICE': '1023px',\n 'MIN_LARGE_DEVICE': '1024px', // 1024px+ (tablets landscape, desktops)\n 'MAX_LARGE_DEVICE': '1000000px',\n};\n\nexport const getBreakPointValue = (name: string) => {\n if(Platform.OS === 'web') {\n return DEVICE_BREAK_POINTS[name];\n }\n\n return DEVICE_BREAK_POINTS_NATIVE_MOBILE[name];\n}\n \n \nexport type styleGeneratorFn<T extends NamedStyles<any>> = (\n themeVariables: ThemeVariables,\n addStyle: (name: string, extend: string, style: T) => void) => void\n\nexport enum ThemeEvent {\n CHANGE ='change'\n};\n\nexport class Theme {\n public static BASE = new Theme(null as any, 'default');\n\n static {\n ViewPort.subscribe(ViewPortEvents.SIZE_CHANGE, () => {\n Theme.BASE.reset();\n });\n }\n\n\n private eventNotifer = new EventNotifier();\n\n private children: Theme[] = [];\n\n private styles: any = {};\n\n private cache: any = {};\n\n private traceEnabled = false;\n \n private revertLayoutToExpo50: Boolean;\n\n private styleGenerators: styleGeneratorFn<any>[] = [];\n\n private constructor(private parent:Theme, public readonly name: string) {\n this.revertLayoutToExpo50 = this.getAppConfig()?.revertLayoutToExpo50 || false;\n if (parent) {\n this.traceEnabled = parent.traceEnabled;\n } else {\n this.traceEnabled = isWebPreviewMode();\n }\n }\n\n private getAppConfig() {\n return injector.get<AppConfig>('APP_CONFIG');\n }\n\n public enableTrace(flag: boolean) {\n this.traceEnabled = flag;\n this.reset();\n this.children.forEach(t => t.enableTrace(flag));\n }\n\n public subscribe(event: ThemeEvent, fn: Function) {\n return this.eventNotifer.subscribe(event, fn);\n }\n\n public notify(event: ThemeEvent): void {\n this.eventNotifer.notify(event, []);\n this.children.forEach(t => t.notify(event));\n }\n\n private replaceVariables(val: string | number) {\n if(isString(val)) { \n (val.match(/_*var\\([^\\)]*\\)/g) || []).forEach((s) => {\n const variableName = s.substring(4, s.length - 1);\n val = (val as string).replace(s, (ThemeVariables.INSTANCE as any)[variableName]\n || (ThemeVariables.INSTANCE as any)[variableName.substring(2)]\n || (ThemeVariables.INSTANCE as any)[camelCase(variableName.substring(2))]);\n val = this.replaceVariables(val);\n });\n }\n\n if(isString(val) && val.match(/^-?\\d+(\\.\\d+)?$/)) {\n return parseFloat(val);\n }\n\n return val; \n }\n\n clearCache() {\n this.cache = {};\n this.children.forEach((t) => t.clearCache());\n }\n\n registerStyle<T extends NamedStyles<any>>(fn: styleGeneratorFn<T>) {\n this.styleGenerators.push(fn);\n fn(ThemeVariables.INSTANCE, this.addStyle.bind(this));\n }\n\n checkStyleProperties(name: string, value : any) {\n if (isObject(value)) {\n Object.keys(value).map((k) => this.checkStyleProperties(k, (value as any)[k]));\n } else if(name && !isValidStyleProp(name, value)) {\n console.log(\n `%cInvalid Style property in ${this.name}: ${getErrorMessage(name, value)}`,\n 'background-color: #FF0000;font-weight: bold; color: #fff'\n );\n console.log(`Refer: ${getStyleReference(name)}`);\n }\n }\n\n private addStyle<T extends NamedStyles<any>>(name: string, extend: string, style: T) {\n this.styles[name] = deepCopy(this.getStyle(extend), this.styles[name], style);\n }\n\n private addTrace(styleName: string, mergedChildstyle: any, childStyle: any, parentStyle?: any) {\n if (!this.traceEnabled) {\n return;\n }\n let addTrace = !isEmpty(childStyle);\n forEach(mergedChildstyle, (v: any, k: string) => {\n if (v && !isString(v) && !isArray(v) && isObject(v)) {\n addTrace = false;\n\n if (!isNativeStyle(k, 'property')) {\n this.addTrace(styleName + '.' + k, v, childStyle && childStyle[k], parentStyle && parentStyle[k])\n }\n }\n });\n if (addTrace) {\n mergedChildstyle['__trace'] = [\n {\n name: styleName,\n value: childStyle\n },\n ...(parentStyle?.__trace|| [])\n ];\n } else {\n mergedChildstyle['__trace'] = [...(parentStyle?.__trace|| [])];\n }\n }\n\n private flatten(style: any, prefix = \"\", result = {} as any) {\n let collect = !isEmpty(style);\n forEach(style, (v: any, k: string) => {\n if (v && !isString(v) && !isArray(v) && isObject(v)) {\n collect = false;\n this.flatten(v, (prefix ? prefix + '.' : '') + k, result)\n }\n });\n if (collect) {\n result[prefix] = style;\n }\n return result;\n }\n\n mergeStyle(...styles: any) {\n const style = deepCopy(...styles);\n if (this.traceEnabled) {\n const flattenStyles = this.flatten(style);\n Object.keys(flattenStyles).forEach(k => {\n const s = flattenStyles[k];\n if (!isNativeStyle(k, 'path')) {\n s['__trace'] = flatten(reverse(styles.map((v: any) => {\n const cs = get(v, k);\n if (cs && cs.__trace) {\n return [...cs.__trace];\n }\n return [];\n }).filter((t: any) => t.length > 0)));\n }\n });\n }\n return style;\n }\n\n cleanseStyleProperties(style: any) {\n if (!(style && isObject(style)) || isString(style) || isArray(style)) {\n return style;\n }\n style = style as any;\n if (isObject(style) && !isArray(style)) {\n Object.keys(style).forEach(k => {\n (style as any)[k] = this.replaceVariables((style as any)[k]);\n });\n }\n if (!isNil(style['shadowRadius'])) {\n if (style['shadowRadius'] <= 0) {\n style['shadowColor'] = 'transparent';\n } else if (isNil(style['elevation'])) {\n style['elevation'] = 2;\n }\n }\n if (!isNil(style['margin'])) {\n style['marginLeft'] = style['marginLeft'] || style['margin'];\n style['marginRight'] = style['marginRight'] || style['margin'];\n style['marginTop'] = style['marginTop'] || style['margin'];\n style['marginBottom'] = style['marginBottom'] || style['margin'];\n delete style['margin'];\n }\n if (!isNil(style['padding'])) {\n style['paddingLeft'] = style['paddingLeft'] || style['padding'];\n style['paddingRight'] = style['paddingRight'] || style['padding'];\n style['paddingTop'] = style['paddingTop'] || style['padding'];\n style['paddingBottom'] = style['paddingBottom'] || style['padding'];\n delete style['padding'];\n }\n if (this.revertLayoutToExpo50 && !isNil(style['flexDirection']) && style['flexDirection'] === 'row-reverse') {\n if (!isNil(style['paddingLeft']) || !isNil(style['paddingRight'])) {\n if (!isNil(style['paddingLeft']) && !isNil(style['paddingRight'])) {\n [style['paddingLeft'], style['paddingRight']] = [style['paddingRight'], style['paddingLeft']];\n } else {\n const [paddingLeft, paddingRight] = [style['paddingLeft'], style['paddingRight']];\n if (paddingLeft !== undefined) {\n style['paddingRight'] = paddingLeft;\n delete style['paddingLeft'];\n }\n if (paddingRight !== undefined) {\n style['paddingLeft'] = paddingRight;\n delete style['paddingRight'];\n }\n }\n }\n \n if (!isNil(style['marginLeft']) || !isNil(style['marginRight'])) {\n if (!isNil(style['marginLeft']) && !isNil(style['marginRight'])) {\n [style['marginLeft'], style['marginRight']] = [style['marginRight'], style['marginLeft']];\n } else {\n const [marginLeft, marginRight] = [style['marginLeft'], style['marginRight']];\n if (marginLeft !== undefined) {\n style['marginRight'] = marginLeft;\n delete style['marginLeft'];\n }\n if (marginRight !== undefined) {\n style['marginLeft'] = marginRight;\n delete style['marginRight'];\n }\n }\n } \n }\n if (!isNil(style['color']) && style['color'] === 'transparent') {\n style['color'] = 'rgba(255, 255, 255, 0)'\n }\n let screenWidth = Dimensions.get('window').width;\n let screenHeight = Dimensions.get('window').height;\n Object.keys(style).forEach((k, i) => {\n let stylePropertyValue = style[k]\n if(typeof stylePropertyValue === 'string' && stylePropertyValue.endsWith('vw')) {\n stylePropertyValue = stylePropertyValue.replace('vw','')\n style[k] = Number(stylePropertyValue)/100 * screenWidth\n }\n if((typeof stylePropertyValue === 'string' && stylePropertyValue.endsWith('vh'))) {\n stylePropertyValue = stylePropertyValue.replace('vh','')\n style[k] = Number(stylePropertyValue)/100 * screenHeight\n }\n })\n Object.keys(style).forEach((k, i) => this.cleanseStyleProperties(style[k]));\n return style;\n }\n\n getStyle(name: string) {\n let style = this.cache[name];\n if (style) {\n return style;\n }\n if (!name) {\n return {};\n }\n if (name.indexOf(' ') > 0) {\n style = this.mergeStyle(...(name.split(' ').map(c => this.getStyle(c))));\n } else {\n const parentStyle = this.parent && this.parent.getStyle(name);\n const mediaQuery = (this.styles[name] || {})['@media'];\n let clonedStyle = {};\n if (!mediaQuery || matchMedia(mediaQuery).matches) {\n clonedStyle = cloneDeep(this.styles[name]);\n this.cleanseStyleProperties(clonedStyle);\n }\n if (this !== Theme.BASE && isWebPreviewMode()) {\n this.checkStyleProperties('', clonedStyle);\n }\n style = deepCopy(parentStyle, clonedStyle);\n this.addTrace(`@${this.name}:${name}`, style, clonedStyle, parentStyle);\n }\n this.cache[name] = style;\n return style;\n }\n\n $new(name = \"\", styles = {} as NamedStyles<any>) {\n const newTheme = new Theme(this, name);\n newTheme.reset(styles);\n this.children.push(newTheme);\n return newTheme;\n }\n\n destroy() {\n const i = this.parent.children.indexOf(this);\n if (i >= 0) {\n this.parent.children.splice(i, 1);\n }\n }\n \n getTextStyle(s: any) {\n if (!s) {\n return {};\n }\n return {\n color: s.color,\n fontFamily: s.fontFamily,\n fontSize: s.fontSize,\n fontStyle: s.fontStyle,\n fontWeight: s.fontWeight,\n includeFontPadding: s.includeFontPadding,\n fontVariant: s.fontVariant,\n letterSpacing: s.letterSpacing,\n lineHeight: s.lineHeight,\n textAlign: s.textAlign,\n textAlignVertical: s.textAlignVertical,\n textDecorationColor: s.textDecorationColor,\n textDecorationStyle: s.textDecorationStyle,\n textShadowColor: s.textShadowColor,\n textShadowOffset: s.textShadowOffset,\n textShadowRadius: s.textShadowRadius,\n textTransform: s.textTransform,\n verticalAlign: s.verticalAlign,\n writingDirection: s.writingDirection,\n userSelect: s.userSelect,\n } as TextStyle;\n }\n\n reset(styles?: NamedStyles<any>) {\n this.styles = {};\n this.clearCache();\n if (styles) {\n this.registerStyle((themeVariables, addStyle) => {\n Object.keys(styles).forEach(k => {\n addStyle(k, '', styles[k] as any);\n });\n });\n } else {\n this.styleGenerators.forEach(fn => \n fn(ThemeVariables.INSTANCE, this.addStyle.bind(this)));\n }\n this.notify(ThemeEvent.CHANGE);\n }\n}\nexport default Theme.BASE;\nexport type NamedStyles<T> = { [P in keyof T]: AllStyle | NamedStyles<T>};\nexport type BackgroundImageStyle = {\n backgroundImage: string,\n backgroundPosition: string,\n backgroundRepeat: string,\n backgroundSize: string | number\n};\n\nexport type AllStyle = (ViewStyle & TextStyle & ImageStyle & {userSelect?: 'none'| 'text'} & {rippleColor?: string});\n\nconst ThemeContext = React.createContext<Theme>(null as any);\n\nexport const ThemeProvider = ThemeContext.Provider;\nexport const ThemeConsumer = ThemeContext.Consumer;\n/**\n * Common styles\n */\n Theme.BASE.registerStyle((themeVariables, addStyle) => {\n const addColStyles = (device: string, minWidth: string) => {\n for(let i = 1; i <= 12; i++) {\n addStyle(`col-${device}-${i}`, '', {\n \"@media\": `(min-width: ${minWidth})`,\n root: {\n width: (100 * i / 12) + '%'\n }\n } as any)\n }\n };\n addColStyles('xs', getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'));\n addColStyles('sm', getBreakPointValue('MIN_SMALL_DEVICE'));\n addColStyles('md', getBreakPointValue('MIN_MEDIUM_DEVICE'));\n addColStyles('lg', getBreakPointValue('MIN_LARGE_DEVICE'));\n\n addStyle('d-none', '', {\n root: {\n display: 'none'\n }\n } as any);\n addStyle('d-flex', '', {\n root: {\n display: 'flex'\n }\n } as any);\n\n const addDisplayStyles = (device: string, minWidth: string, maxWidth: string) => {\n addStyle(`d-${device}-none`, '', {\n \"@media\": `(min-width: ${minWidth}) and (max-width: ${maxWidth})`,\n root: {\n display: 'none'\n }\n } as any);\n addStyle(`d-${device}-flex`, '', {\n \"@media\": `(min-width: ${minWidth}) and (max-width: ${maxWidth})`,\n root: {\n display: 'flex'\n }\n } as any);\n };\n addDisplayStyles('all', \n getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'),\n getBreakPointValue('MAX_LARGE_DEVICE'));\n addDisplayStyles('xs', \n getBreakPointValue('MIN_EXTRA_SMALL_DEVICE'),\n getBreakPointValue('MAX_EXTRA_SMALL_DEVICE'));\n addDisplayStyles('sm', \n getBreakPointValue('MIN_SMALL_DEVICE'),\n getBreakPointValue('MAX_SMALL_DEVICE'));\n addDisplayStyles('md', \n getBreakPointValue('MIN_MEDIUM_DEVICE'),\n getBreakPointValue('MAX_MEDIUM_DEVICE'));\n addDisplayStyles('lg', \n getBreakPointValue('MIN_LARGE_DEVICE'),\n getBreakPointValue('MAX_LARGE_DEVICE'));\n\n const addElevationClasses = () => {\n for(let i = 1; i <= 10; i++) {\n addStyle(`elevate${i}`, '', {\n root : {\n boxShadow: `${i}px ${i}px ${i}px rgba(0, 0, 0, 0.27)`,\n zIndex: 1\n }\n });\n }\n };\n addElevationClasses();\n addStyle('hidden', '', {\n root: {\n width: 0,\n height: 0,\n transform: [{ scale: 0 }],\n overflow: 'hidden'\n }\n });\n addStyle('bg-danger', '', { root: { backgroundColor: themeVariables.dangerColor }});\n addStyle('bg-info', '', { root: { backgroundColor: themeVariables.infoColor }});\n addStyle('bg-primary', '', { root: { backgroundColor: themeVariables.primaryColor }});\n addStyle('bg-success', '', { root: { backgroundColor: themeVariables.successColor }});\n addStyle('bg-warning', '', { root: { backgroundColor: themeVariables.warningColor }});\n\n addStyle('border-danger', '', { root: { borderColor: themeVariables.dangerColor }});\n addStyle('border-info', '', { root: { borderColor: themeVariables.infoColor }});\n addStyle('border-primary', '', { root: { borderColor: themeVariables.primaryColor }});\n addStyle('border-success', '', { root: { borderColor: themeVariables.successColor }});\n addStyle('border-warning', '', { root: { borderColor: themeVariables.warningColor }});\n\n addStyle('hide-context-menu', '', { text: { userSelect: 'none' }});\n addStyle('hide-context-menu-input', '', { text: { userSelect: 'none' }});\n});\n\n"],"mappings":"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","ignoreList":[]}
@@ -1,208 +0,0 @@
1
- function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
- function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
- function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
4
- /**
5
- * Advanced Promise Rejection Tracker
6
- *
7
- * Provides comprehensive promise rejection tracking across different JavaScript engines.
8
- * This module addresses the critical gap where API call failures and async function errors
9
- * are not caught by React Error Boundaries, ensuring all promise rejections are handled.
10
- *
11
- * Engine Support:
12
- * - Web: Uses browser's 'unhandledrejection' event
13
- * - Hermes: Uses HermesInternal.enablePromiseRejectionTracker
14
- * - JSC: Uses React Native's 'promise/setimmediate/rejection-tracking' module
15
- *
16
- * Coverage Includes:
17
- * - API call failures (fetch, axios, any HTTP library)
18
- * - Async function errors (unhandled throws in async/await)
19
- * - Manual Promise.reject() calls
20
- * - Third-party library promise rejections
21
- *
22
- * Research Notes:
23
- * This implementation was developed through extensive research into React Native's
24
- * promise handling across different engines. Each engine has its own optimal approach:
25
- * - Hermes provides a native tracking API that hooks into the engine's internals
26
- * - JSC can use React Native's internal promise tracking module
27
- * - Web browsers have standardized unhandledrejection events
28
- *
29
- * The approach automatically detects the best available method and falls back
30
- * gracefully when native tracking is unavailable.
31
- */
32
-
33
- import { Platform } from 'react-native';
34
-
35
- // TypeScript declarations for global objects
36
-
37
- /**
38
- * Multi-engine promise rejection tracking implementation
39
- */
40
- export class AdvancedPromiseRejectionTracker {
41
- constructor(onRejection) {
42
- _defineProperty(this, "onRejectionHandler", void 0);
43
- _defineProperty(this, "cleanupFunctions", []);
44
- this.onRejectionHandler = onRejection;
45
- }
46
-
47
- /**
48
- * Setup promise rejection tracking based on available APIs
49
- * Returns true if native tracking was enabled, false if fallback used
50
- */
51
- setup() {
52
- // Automatically detect and setup the best available promise rejection tracking method
53
-
54
- if (Platform.OS === 'web') {
55
- return this.setupWebTracking();
56
- }
57
-
58
- // For mobile platforms, try native tracking methods in order of preference
59
- if (this.setupHermesTracking()) {
60
- return true;
61
- }
62
-
63
- // Fallback to React Native internal tracking for JSC
64
- if (this.setupReactNativeTracking()) {
65
- return true;
66
- }
67
-
68
- // No native tracking available - this should rarely happen in modern RN versions
69
- return false;
70
- }
71
-
72
- /**
73
- * Method 1: Web Environment - Use unhandledrejection event
74
- */
75
- setupWebTracking() {
76
- try {
77
- if (typeof window === 'undefined' || !window.addEventListener) {
78
- return false;
79
- }
80
- const handler = event => {
81
- event.preventDefault(); // Prevent browser's default handling
82
- const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));
83
- this.onRejectionHandler(error);
84
- };
85
- window.addEventListener('unhandledrejection', handler);
86
- this.cleanupFunctions.push(() => {
87
- window.removeEventListener('unhandledrejection', handler);
88
- });
89
- return true;
90
- } catch (error) {
91
- return false;
92
- }
93
- }
94
-
95
- /**
96
- * Method 2: Hermes Engine - Use HermesInternal API
97
- */
98
- setupHermesTracking() {
99
- try {
100
- // Check if Hermes engine is available
101
- const hermesInternal = global.HermesInternal;
102
- if (hermesInternal && typeof hermesInternal.enablePromiseRejectionTracker === 'function') {
103
- hermesInternal.enablePromiseRejectionTracker({
104
- allRejections: true,
105
- // Track both handled and unhandled rejections
106
- onUnhandled: (id, error) => {
107
- this.onRejectionHandler(error);
108
- },
109
- onHandled: id => {
110
- // Promise was handled later - could be used for analytics in the future
111
- }
112
- });
113
-
114
- // Cleanup function (if available)
115
- this.cleanupFunctions.push(() => {
116
- // Hermes doesn't provide a disable method, but we can set a no-op handler
117
- if (hermesInternal !== null && hermesInternal !== void 0 && hermesInternal.enablePromiseRejectionTracker) {
118
- hermesInternal.enablePromiseRejectionTracker({
119
- allRejections: false,
120
- onUnhandled: () => {},
121
- onHandled: () => {}
122
- });
123
- }
124
- });
125
- return true;
126
- }
127
- return false;
128
- } catch (error) {
129
- return false;
130
- }
131
- }
132
-
133
- /**
134
- * Method 3: React Native Internal - Use promise/setimmediate/rejection-tracking for JSC
135
- */
136
- setupReactNativeTracking() {
137
- try {
138
- // Try to access React Native's internal promise tracking module
139
- const tracking = require('promise/setimmediate/rejection-tracking');
140
- if (tracking && typeof tracking.enable === 'function') {
141
- tracking.enable({
142
- allRejections: true,
143
- onUnhandled: (id, error) => {
144
- this.onRejectionHandler(error);
145
- },
146
- onHandled: id => {
147
- // Promise was handled later - tracking for potential analytics
148
- }
149
- });
150
- this.cleanupFunctions.push(() => {
151
- // Try to disable tracking if possible
152
- if (tracking.disable && typeof tracking.disable === 'function') {
153
- tracking.disable();
154
- }
155
- });
156
- return true;
157
- }
158
- return false;
159
- } catch (error) {
160
- return false;
161
- }
162
- }
163
-
164
- /**
165
- * Clean up all tracking mechanisms
166
- */
167
- cleanup() {
168
- // Clean up all tracking mechanisms and restore original state
169
- this.cleanupFunctions.forEach(cleanup => {
170
- try {
171
- cleanup();
172
- } catch (error) {
173
- // Silently handle cleanup errors to avoid disrupting app shutdown
174
- }
175
- });
176
- this.cleanupFunctions = [];
177
- }
178
- }
179
-
180
- /**
181
- * Helper function to detect JavaScript engine (simplified for Web/Hermes/JSC)
182
- */
183
- export function detectJavaScriptEngine() {
184
- if (Platform.OS === 'web') {
185
- return 'web';
186
- }
187
- if (typeof global.HermesInternal !== 'undefined') {
188
- return 'hermes';
189
- }
190
-
191
- // For non-Hermes engines on mobile, assume JSC (most common)
192
- return 'jsc';
193
- }
194
-
195
- /**
196
- * Public API for easy integration
197
- */
198
- /**
199
- * Sets up advanced promise rejection tracking with automatic engine detection
200
- * @param onRejection Callback function to handle unhandled promise rejections
201
- * @returns AdvancedPromiseRejectionTracker instance for cleanup and testing
202
- */
203
- export function setupAdvancedPromiseRejectionTracking(onRejection) {
204
- const tracker = new AdvancedPromiseRejectionTracker(onRejection);
205
- tracker.setup();
206
- return tracker;
207
- }
208
- //# sourceMappingURL=advanced-promise-rejection-tracker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Platform","AdvancedPromiseRejectionTracker","constructor","onRejection","_defineProperty","onRejectionHandler","setup","OS","setupWebTracking","setupHermesTracking","setupReactNativeTracking","window","addEventListener","handler","event","preventDefault","error","reason","Error","String","cleanupFunctions","push","removeEventListener","hermesInternal","global","HermesInternal","enablePromiseRejectionTracker","allRejections","onUnhandled","id","onHandled","tracking","require","enable","disable","cleanup","forEach","detectJavaScriptEngine","setupAdvancedPromiseRejectionTracking","tracker"],"sources":["advanced-promise-rejection-tracker.ts"],"sourcesContent":["/**\n * Advanced Promise Rejection Tracker\n *\n * Provides comprehensive promise rejection tracking across different JavaScript engines.\n * This module addresses the critical gap where API call failures and async function errors\n * are not caught by React Error Boundaries, ensuring all promise rejections are handled.\n *\n * Engine Support:\n * - Web: Uses browser's 'unhandledrejection' event\n * - Hermes: Uses HermesInternal.enablePromiseRejectionTracker\n * - JSC: Uses React Native's 'promise/setimmediate/rejection-tracking' module\n *\n * Coverage Includes:\n * - API call failures (fetch, axios, any HTTP library)\n * - Async function errors (unhandled throws in async/await)\n * - Manual Promise.reject() calls\n * - Third-party library promise rejections\n *\n * Research Notes:\n * This implementation was developed through extensive research into React Native's\n * promise handling across different engines. Each engine has its own optimal approach:\n * - Hermes provides a native tracking API that hooks into the engine's internals\n * - JSC can use React Native's internal promise tracking module\n * - Web browsers have standardized unhandledrejection events\n *\n * The approach automatically detects the best available method and falls back\n * gracefully when native tracking is unavailable.\n */\n\nimport { Platform } from 'react-native';\n\n// TypeScript declarations for global objects\ndeclare global {\n interface Global {\n HermesInternal?: {\n enablePromiseRejectionTracker?: (options: {\n allRejections: boolean;\n onUnhandled: (id: number, error: any) => void;\n onHandled: (id: number) => void;\n }) => void;\n };\n }\n}\n\nexport interface PromiseRejectionHandler {\n (error: any): void;\n}\n\n/**\n * Multi-engine promise rejection tracking implementation\n */\nexport class AdvancedPromiseRejectionTracker {\n private onRejectionHandler: PromiseRejectionHandler;\n private cleanupFunctions: (() => void)[] = [];\n\n constructor(onRejection: PromiseRejectionHandler) {\n this.onRejectionHandler = onRejection;\n }\n\n /**\n * Setup promise rejection tracking based on available APIs\n * Returns true if native tracking was enabled, false if fallback used\n */\n public setup(): boolean {\n // Automatically detect and setup the best available promise rejection tracking method\n\n if (Platform.OS === 'web') {\n return this.setupWebTracking();\n }\n\n // For mobile platforms, try native tracking methods in order of preference\n if (this.setupHermesTracking()) {\n return true;\n }\n\n // Fallback to React Native internal tracking for JSC\n if (this.setupReactNativeTracking()) {\n return true;\n }\n\n // No native tracking available - this should rarely happen in modern RN versions\n return false;\n }\n\n /**\n * Method 1: Web Environment - Use unhandledrejection event\n */\n private setupWebTracking(): boolean {\n try {\n if (typeof window === 'undefined' || !window.addEventListener) {\n return false;\n }\n\n const handler = (event: PromiseRejectionEvent) => {\n event.preventDefault(); // Prevent browser's default handling\n const error =\n event.reason instanceof Error\n ? event.reason\n : new Error(String(event.reason));\n this.onRejectionHandler(error);\n };\n\n window.addEventListener('unhandledrejection', handler);\n this.cleanupFunctions.push(() => {\n window.removeEventListener('unhandledrejection', handler);\n });\n\n return true;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 2: Hermes Engine - Use HermesInternal API\n */\n private setupHermesTracking(): boolean {\n try {\n // Check if Hermes engine is available\n const hermesInternal = (global as any).HermesInternal;\n if (\n hermesInternal &&\n typeof hermesInternal.enablePromiseRejectionTracker === 'function'\n ) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: true, // Track both handled and unhandled rejections\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - could be used for analytics in the future\n },\n });\n\n // Cleanup function (if available)\n this.cleanupFunctions.push(() => {\n // Hermes doesn't provide a disable method, but we can set a no-op handler\n if (hermesInternal?.enablePromiseRejectionTracker) {\n hermesInternal.enablePromiseRejectionTracker({\n allRejections: false,\n onUnhandled: () => {},\n onHandled: () => {},\n });\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Method 3: React Native Internal - Use promise/setimmediate/rejection-tracking for JSC\n */\n private setupReactNativeTracking(): boolean {\n try {\n // Try to access React Native's internal promise tracking module\n const tracking = require('promise/setimmediate/rejection-tracking');\n\n if (tracking && typeof tracking.enable === 'function') {\n tracking.enable({\n allRejections: true,\n onUnhandled: (id: number, error: any) => {\n this.onRejectionHandler(error);\n },\n onHandled: (id: number) => {\n // Promise was handled later - tracking for potential analytics\n },\n });\n\n this.cleanupFunctions.push(() => {\n // Try to disable tracking if possible\n if (tracking.disable && typeof tracking.disable === 'function') {\n tracking.disable();\n }\n });\n\n return true;\n }\n return false;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Clean up all tracking mechanisms\n */\n public cleanup(): void {\n // Clean up all tracking mechanisms and restore original state\n this.cleanupFunctions.forEach((cleanup) => {\n try {\n cleanup();\n } catch (error) {\n // Silently handle cleanup errors to avoid disrupting app shutdown\n }\n });\n this.cleanupFunctions = [];\n }\n}\n\n/**\n * Helper function to detect JavaScript engine (simplified for Web/Hermes/JSC)\n */\nexport function detectJavaScriptEngine(): 'web' | 'hermes' | 'jsc' {\n if (Platform.OS === 'web') {\n return 'web';\n }\n\n if (typeof (global as any).HermesInternal !== 'undefined') {\n return 'hermes';\n }\n\n // For non-Hermes engines on mobile, assume JSC (most common)\n return 'jsc';\n}\n\n/**\n * Public API for easy integration\n */\n/**\n * Sets up advanced promise rejection tracking with automatic engine detection\n * @param onRejection Callback function to handle unhandled promise rejections\n * @returns AdvancedPromiseRejectionTracker instance for cleanup and testing\n */\nexport function setupAdvancedPromiseRejectionTracking(\n onRejection: PromiseRejectionHandler\n): AdvancedPromiseRejectionTracker {\n const tracker = new AdvancedPromiseRejectionTracker(onRejection);\n tracker.setup();\n return tracker;\n}\n"],"mappings":"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","ignoreList":[]}