@wavemaker-ai/app-rn-runtime 1.0.0-rc.324 → 1.0.0-rc.328

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 (172) hide show
  1. package/components/advanced/offline-banner/offline-banner.component.js +68 -0
  2. package/components/advanced/offline-banner/offline-banner.component.js.map +1 -0
  3. package/components/advanced/offline-banner/offline-banner.props.js +12 -0
  4. package/components/advanced/offline-banner/offline-banner.props.js.map +1 -0
  5. package/components/advanced/offline-banner/offline-banner.styles.js +99 -0
  6. package/components/advanced/offline-banner/offline-banner.styles.js.map +1 -0
  7. package/components/advanced/webview/webview.component.js +2 -2
  8. package/components/advanced/webview/webview.component.js.map +1 -1
  9. package/components/advanced/webview/webview.props.js +1 -1
  10. package/components/advanced/webview/webview.props.js.map +1 -1
  11. package/components/basic/bottomsheet/bottomsheet.component.js +156 -14
  12. package/components/basic/bottomsheet/bottomsheet.component.js.map +1 -1
  13. package/components/basic/bottomsheet/bottomsheet.styles.js +0 -3
  14. package/components/basic/bottomsheet/bottomsheet.styles.js.map +1 -1
  15. package/components/basic/progress-circle/progress-circle.component.js +3 -1
  16. package/components/basic/progress-circle/progress-circle.component.js.map +1 -1
  17. package/components/chart/area-chart/area-chart.component.js +86 -93
  18. package/components/chart/area-chart/area-chart.component.js.map +1 -1
  19. package/components/chart/area-chart/area-chart.props.js +2 -0
  20. package/components/chart/area-chart/area-chart.props.js.map +1 -1
  21. package/components/chart/bar-chart/bar-chart.component.js +79 -97
  22. package/components/chart/bar-chart/bar-chart.component.js.map +1 -1
  23. package/components/chart/basechart.component.js +117 -96
  24. package/components/chart/basechart.component.js.map +1 -1
  25. package/components/chart/basechart.props.js +12 -0
  26. package/components/chart/basechart.props.js.map +1 -1
  27. package/components/chart/basechart.styles.js.map +1 -1
  28. package/components/chart/bubble-chart/bubble-chart.component.js +72 -70
  29. package/components/chart/bubble-chart/bubble-chart.component.js.map +1 -1
  30. package/components/chart/bubble-chart/bubble-chart.props.js +1 -0
  31. package/components/chart/bubble-chart/bubble-chart.props.js.map +1 -1
  32. package/components/chart/line-chart/line-chart.component.js +105 -79
  33. package/components/chart/line-chart/line-chart.component.js.map +1 -1
  34. package/components/chart/pie-chart/pie-chart.component.js +70 -166
  35. package/components/chart/pie-chart/pie-chart.component.js.map +1 -1
  36. package/components/chart/pie-chart/pie-chart.props.js +1 -0
  37. package/components/chart/pie-chart/pie-chart.props.js.map +1 -1
  38. package/components/container/accordion/accordionpane/accordionpane.component.js +6 -2
  39. package/components/container/accordion/accordionpane/accordionpane.component.js.map +1 -1
  40. package/components/container/container.component.js +27 -1
  41. package/components/container/container.component.js.map +1 -1
  42. package/components/container/container.props.js +7 -0
  43. package/components/container/container.props.js.map +1 -1
  44. package/components/container/linearlayout/linearlayoutitem/linearlayoutitem.component.js +25 -1
  45. package/components/container/linearlayout/linearlayoutitem/linearlayoutitem.component.js.map +1 -1
  46. package/components/container/linearlayout/linearlayoutitem/linearlayoutitem.props.js +1 -0
  47. package/components/container/linearlayout/linearlayoutitem/linearlayoutitem.props.js.map +1 -1
  48. package/components/container/tabs/tabheader/tabheader.component.js +5 -14
  49. package/components/container/tabs/tabheader/tabheader.component.js.map +1 -1
  50. package/components/container/tabs/tabheader/tabheader.props.js +0 -2
  51. package/components/container/tabs/tabheader/tabheader.props.js.map +1 -1
  52. package/components/container/tabs/tabheader/tabheader.styles.js +1 -43
  53. package/components/container/tabs/tabheader/tabheader.styles.js.map +1 -1
  54. package/components/container/tabs/tabpane/tabpane.component.js +6 -2
  55. package/components/container/tabs/tabpane/tabpane.component.js.map +1 -1
  56. package/components/container/tabs/tabs.component.js +2 -6
  57. package/components/container/tabs/tabs.component.js.map +1 -1
  58. package/components/container/tabs/tabs.props.js +0 -2
  59. package/components/container/tabs/tabs.props.js.map +1 -1
  60. package/components/container/wizard/wizardstep/wizardstep.component.js +28 -5
  61. package/components/container/wizard/wizardstep/wizardstep.component.js.map +1 -1
  62. package/components/container/wizard/wizardstep/wizardstep.props.js +2 -0
  63. package/components/container/wizard/wizardstep/wizardstep.props.js.map +1 -1
  64. package/components/data/form/form-field/form-field.component.js +1 -0
  65. package/components/data/form/form-field/form-field.component.js.map +1 -1
  66. package/components/data/form/form-field/form-field.props.js +1 -0
  67. package/components/data/form/form-field/form-field.props.js.map +1 -1
  68. package/components/data/list/list-template/list-template.component.js +3 -0
  69. package/components/data/list/list-template/list-template.component.js.map +1 -1
  70. package/components/data/list/list.component.js +6 -4
  71. package/components/data/list/list.component.js.map +1 -1
  72. package/components/data/list/list.styles.js +1 -14
  73. package/components/data/list/list.styles.js.map +1 -1
  74. package/components/input/baseinput/baseinput.component.js +7 -0
  75. package/components/input/baseinput/baseinput.component.js.map +1 -1
  76. package/components/input/calendar/calendar.component.js +4 -0
  77. package/components/input/calendar/calendar.component.js.map +1 -1
  78. package/components/input/calendar/views/month-view.js +8 -1
  79. package/components/input/calendar/views/month-view.js.map +1 -1
  80. package/components/input/checkboxset/checkboxset.component.js.map +1 -1
  81. package/components/input/checkboxset/checkboxset.styles.js.map +1 -1
  82. package/components/input/chips/chips.component.js +3 -4
  83. package/components/input/chips/chips.component.js.map +1 -1
  84. package/components/input/chips/chips.styles.js +1 -2
  85. package/components/input/chips/chips.styles.js.map +1 -1
  86. package/components/input/currency/currency.component.js +1 -0
  87. package/components/input/currency/currency.component.js.map +1 -1
  88. package/components/input/number/number.component.js +1 -0
  89. package/components/input/number/number.component.js.map +1 -1
  90. package/components/input/switch/switch.component.js +2 -16
  91. package/components/input/switch/switch.component.js.map +1 -1
  92. package/components/input/switch/switch.props.js +0 -1
  93. package/components/input/switch/switch.props.js.map +1 -1
  94. package/components/input/switch/switch.styles.js +0 -19
  95. package/components/input/switch/switch.styles.js.map +1 -1
  96. package/components/input/text/text.component.js +14 -3
  97. package/components/input/text/text.component.js.map +1 -1
  98. package/components/input/text/text.props.js +1 -0
  99. package/components/input/text/text.props.js.map +1 -1
  100. package/components/input/text/text.styles.js +3 -1
  101. package/components/input/text/text.styles.js.map +1 -1
  102. package/components/input/textarea/textarea.component.js +3 -2
  103. package/components/input/textarea/textarea.component.js.map +1 -1
  104. package/components/input/toggle/toggle.component.js +4 -13
  105. package/components/input/toggle/toggle.component.js.map +1 -1
  106. package/components/input/toggle/toggle.props.js +1 -3
  107. package/components/input/toggle/toggle.props.js.map +1 -1
  108. package/components/input/toggle/toggle.styles.js +4 -12
  109. package/components/input/toggle/toggle.styles.js.map +1 -1
  110. package/components/navigation/appnavbar/appnavbar.props.js +1 -1
  111. package/components/navigation/appnavbar/appnavbar.props.js.map +1 -1
  112. package/components/page/page-content/page-content.component.js +3 -0
  113. package/components/page/page-content/page-content.component.js.map +1 -1
  114. package/components/page/page-content/page-content.props.js +2 -0
  115. package/components/page/page-content/page-content.props.js.map +1 -1
  116. package/components/page/page.component.js +95 -2
  117. package/components/page/page.component.js.map +1 -1
  118. package/components/page/page.props.js +3 -0
  119. package/components/page/page.props.js.map +1 -1
  120. package/components/page/tabbar/tabbar.component.js +3 -2
  121. package/components/page/tabbar/tabbar.component.js.map +1 -1
  122. package/components/page/tabbar/tabbar.props.js +1 -0
  123. package/components/page/tabbar/tabbar.props.js.map +1 -1
  124. package/components-prism/basic/search/search.component.js +8 -12
  125. package/components-prism/basic/search/search.component.js.map +1 -1
  126. package/components-prism/basic/search/search.props.js +1 -1
  127. package/components-prism/basic/search/search.props.js.map +1 -1
  128. package/components-prism/basic/search/search.styles.js +60 -25
  129. package/components-prism/basic/search/search.styles.js.map +1 -1
  130. package/core/AppConfig.js.map +1 -1
  131. package/core/accessibility.js +9 -0
  132. package/core/accessibility.js.map +1 -1
  133. package/core/auto-layout-host.component.js +8 -2
  134. package/core/auto-layout-host.component.js.map +1 -1
  135. package/core/auto-layout.utils.js +59 -0
  136. package/core/auto-layout.utils.js.map +1 -1
  137. package/core/base.component.js +22 -1
  138. package/core/base.component.js.map +1 -1
  139. package/core/components/floatinglabel.component.js +5 -2
  140. package/core/components/floatinglabel.component.js.map +1 -1
  141. package/core/components/textinput.component.js +3 -0
  142. package/core/components/textinput.component.js.map +1 -1
  143. package/core/network.service.js.map +1 -1
  144. package/core/tappable.component.js +109 -15
  145. package/core/tappable.component.js.map +1 -1
  146. package/npm-shrinkwrap.json +2835 -5858
  147. package/package-lock.json +2835 -5858
  148. package/package.json +25 -18
  149. package/runtime/base-fragment.component.js +7 -1
  150. package/runtime/base-fragment.component.js.map +1 -1
  151. package/runtime/base-page.component.js +24 -0
  152. package/runtime/base-page.component.js.map +1 -1
  153. package/runtime/base-partial.component.js.map +1 -1
  154. package/runtime/navigator/drawer.navigator.js +1 -0
  155. package/runtime/navigator/drawer.navigator.js.map +1 -1
  156. package/runtime/navigator/stack.navigator.js +16 -1
  157. package/runtime/navigator/stack.navigator.js.map +1 -1
  158. package/runtime/services/device/scan-service.js +12 -34
  159. package/runtime/services/device/scan-service.js.map +1 -1
  160. package/styles/theme.variables.js.map +1 -1
  161. package/variables/http.service.js +6 -1
  162. package/variables/http.service.js.map +1 -1
  163. package/variables/interceptor/intercept-context.impl.js +46 -0
  164. package/variables/interceptor/intercept-context.impl.js.map +1 -0
  165. package/variables/interceptor/interceptor.factory.js +78 -0
  166. package/variables/interceptor/interceptor.factory.js.map +1 -0
  167. package/variables/interceptor/persistent.storage.js +142 -0
  168. package/variables/interceptor/persistent.storage.js.map +1 -0
  169. package/variables/interceptor/service-variable-interceptor.js +52 -0
  170. package/variables/interceptor/service-variable-interceptor.js.map +1 -0
  171. package/variables/service-variable.js +109 -1
  172. package/variables/service-variable.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["axios","clone","isEqual","noop","Network","NetInfo","StorageService","EventNotifier","getAbortableDefer","isWebPreviewMode","retryIfFails","NetworkState","constructor","_defineProperty","AUTO_CONNECT_KEY","IS_CONNECTED_KEY","excludedList","RegExp","networkState","blockUrl","url","isConnected","startsWith","findIndex","regExp","test","interceptors","request","use","noServiceRequired","urlSplits","split","pathIndex","indexOf","substr","join","NetworkService","setAutoConnect","checkForNetworkStateChange","isConnecting","connect","silent","tryToConnect","disconnect","p","tryToDisconnect","disableAutoConnect","isAvailable","pingServer","isServiceAvailable","then","onConnect","defer","cancelSubscription","Promise","resolve","notifier","subscribe","promise","catch","retryIfNetworkFails","fn","onConnectPromise","abort","reject","start","appConfig","getItem","_autoConnect","state","getNetworkStateAsync","isNetworkAvailable","addEventListener","data","_isCheckingServer","checkForServiceAvailiblity","getServiceName","SERVICE_NAME","unblock","urlRegex","push","getState","_lastKnownNetworkState","notify","maxTimeout","intervalId","setInterval","available","clearInterval","response","baseURL","endsWith","get","Date","now","responseType","timeout","res","status","flag","setItem","silentMode","setTimeout"],"sources":["network.service.ts"],"sourcesContent":["import axios from 'axios';\nimport { clone, isEqual, noop } from 'lodash-es';\nimport * as Network from 'expo-network';\nimport NetInfo from '@react-native-community/netinfo';\n\nimport AppConfig from './AppConfig';\nimport StorageService from './storage.service';\nimport EventNotifier from './event-notifier';\nimport { getAbortableDefer, isWebPreviewMode, retryIfFails } from './utils';\n\nexport class NetworkState {\n isConnecting = false;\n isConnected = true;\n isNetworkAvailable = true;\n isServiceAvailable = true;\n noServiceRequired = false;\n}\n\nconst AUTO_CONNECT_KEY = 'WM.NetworkService._autoConnect',\n IS_CONNECTED_KEY = 'WM.NetworkService.isConnected',\n excludedList = [new RegExp('/wmProperties.js')],\n networkState = new NetworkState();\n\n/**\n * If server is not connected and url does not match the unblock list of regular expressions,\n * then this function return true. Otherwise, return false.\n * @param url\n * @returns {boolean}\n */\nconst blockUrl = (url: string) => {\n return !networkState.isConnected\n && url.startsWith('http')\n && excludedList.findIndex(regExp => regExp.test(url)) < 0;\n};\n\naxios.interceptors.request.use((request) => {\n if (!networkState.noServiceRequired && request.url && blockUrl(request.url)) {\n const url = request.url;\n const urlSplits = url.split('://');\n const pathIndex = urlSplits[1].indexOf('/');\n urlSplits[1] = 'localhost' + (pathIndex > 0 ? urlSplits[1].substr(pathIndex) : '/');\n request.url = urlSplits.join('://');\n }\n return request;\n});\n\nclass NetworkService {\n static readonly SERVICE_NAME = 'NetworkService';\n\n private _autoConnect = true;\n private _lastKnownNetworkState: any;\n private _isCheckingServer = false;\n private appConfig: AppConfig = null as any;\n public readonly notifier: EventNotifier = new EventNotifier();\n\n constructor() {}\n\n /**\n * This method attempts to connect app to the server and returns a promise that will be resolved with\n * a boolean value based on the operation result.\n *\n * @returns {object} promise\n */\n public connect(silent = false): Promise<boolean> {\n this.setAutoConnect(true);\n return this.tryToConnect(silent);\n }\n\n /**\n * When the auto connect is enabled, then app is automatically connected whenever server is available.\n * Every time when app goes offline, auto connect is enabled. Before app coming to online, one can disable\n * the auto connection flow using this method.\n */\n public disableAutoConnect = () => this.setAutoConnect(false);\n\n /**\n * This method disconnects the app from the server and returns a promise that will be resolved with\n * a boolean value based on the operation result. Use connect method to reconnect.\n *\n * @returns {object} promise\n */\n public disconnect(): Promise<boolean> {\n const p = this.tryToDisconnect();\n this.disableAutoConnect();\n return p;\n }\n\n /**\n * If pingServer is true, then it returns a promise that will be resolved with boolean based on service availability\n * check.If pingServer is false, returns a boolean value based on the last known service availability.\n *\n * @returns {boolean} if pingServer is true, then a promise is returned. Otherwise, a boolean value.\n */\n public isAvailable(pingServer = false): boolean | Promise<boolean> {\n if (pingServer) {\n return this.isServiceAvailable().then(() => {\n this.checkForNetworkStateChange();\n return networkState.isServiceAvailable;\n });\n }\n return networkState.isServiceAvailable;\n }\n\n /**\n * Returns true, if app is connected to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true, if app is connected to server. Otherwise, returns false.\n */\n public isConnected = () => {\n this.checkForNetworkStateChange();\n return networkState.isConnected;\n }\n\n /**\n * Returns true if app is trying to connect to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true if app is trying to connect to server. Otherwise, returns false.\n */\n public isConnecting = () => networkState.isConnecting;\n\n /**\n * This method returns a promise that is resolved when connection is established with server.\n *\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public onConnect() {\n let defer = getAbortableDefer(),\n cancelSubscription: Function;\n if (this.isConnected()) {\n return Promise.resolve();\n }\n cancelSubscription = this.notifier.subscribe('onNetworkStateChange', () => {\n if (this.isConnected()) {\n defer.resolve(true);\n cancelSubscription();\n }\n });\n defer.promise.catch(function () {\n cancelSubscription();\n });\n return defer.promise;\n }\n\n /**\n * This is a util method. If fn cannot execute successfully and network lost connection, then the fn will\n * be invoked when network is back. The returned can also be aborted.\n *\n * @param {function()} fn method to invoke.\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public retryIfNetworkFails(fn: Function) {\n const defer = getAbortableDefer();\n retryIfFails(fn, 0, 0, () => {\n let onConnectPromise: any;\n if (!this.isConnected()) {\n onConnectPromise = this.onConnect();\n defer.promise.catch(function () {\n onConnectPromise.abort();\n });\n return onConnectPromise;\n }\n return false;\n }).then(defer.resolve, defer.reject);\n return defer.promise;\n }\n\n public async start(appConfig: AppConfig): Promise<any> {\n this.appConfig = appConfig;\n networkState.noServiceRequired = !appConfig.url;\n networkState.isConnected = (await StorageService.getItem(IS_CONNECTED_KEY)) !== 'false';\n this._autoConnect = (await StorageService.getItem(AUTO_CONNECT_KEY)) !== 'false';\n const state = await Network.getNetworkStateAsync();\n networkState.isNetworkAvailable = !!state.isConnected;\n networkState.isConnected = networkState.isNetworkAvailable && networkState.isConnected;\n !isWebPreviewMode() && NetInfo.addEventListener(state => {\n if (state.isConnected !== networkState.isConnected) {\n if (state.isConnected) {\n networkState.isNetworkAvailable = !!state.isConnected;\n this.tryToConnect().catch(noop);\n } else {\n networkState.isNetworkAvailable = false;\n networkState.isServiceAvailable = false;\n networkState.isConnected = false;\n this.tryToDisconnect();\n }\n }\n });\n this.notifier.subscribe('onNetworkStateChange', (data: NetworkState) => {\n /**\n * If network is available and server is not available,then\n * try to connect when server is available.\n */\n if (data.isNetworkAvailable && !data.isServiceAvailable && !this._isCheckingServer && !data.noServiceRequired) {\n this._isCheckingServer = true;\n this.checkForServiceAvailiblity().then(() => {\n this._isCheckingServer = false;\n this.connect();\n }, () => {\n this._isCheckingServer = false;\n });\n }\n });\n // to set the default n/w connection values.\n return this.tryToConnect(true).catch(noop);\n }\n\n public getServiceName() {\n return NetworkService.SERVICE_NAME;\n }\n\n /**\n * This function adds the given regular expression to the unblockList. Even app is in offline mode,\n * the urls matching with the given regular expression are not blocked by NetworkService.\n *\n * @param {string} urlRegex regular expression\n */\n public unblock(urlRegex: string) {\n excludedList.push(new RegExp(urlRegex));\n }\n\n public getState() {\n return clone(networkState);\n }\n\n private checkForNetworkStateChange() {\n if (!isEqual(this._lastKnownNetworkState, networkState)) {\n this._lastKnownNetworkState = clone(networkState);\n this.notifier.notify('onNetworkStateChange', [this._lastKnownNetworkState]);\n }\n }\n\n /**\n * Returns a promise that is resolved when server is available.\n * @returns {*}\n */\n private checkForServiceAvailiblity(): Promise<void> {\n const maxTimeout = 4500;\n return new Promise<void>(resolve => {\n const intervalId = setInterval(() => {\n if (networkState.isNetworkAvailable) {\n this.isServiceAvailable(maxTimeout).then(available => {\n if (available) {\n clearInterval(intervalId);\n resolve();\n }\n });\n }\n }, 5000);\n });\n }\n\n /**\n * Pings server to check whether server is available. Based on ping response network state is modified.\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n */\n private isServiceAvailable(maxTimeout?: number): Promise<boolean> {\n if (networkState.noServiceRequired) {\n networkState.isServiceAvailable = false;\n networkState.noServiceRequired = true;\n return Promise.resolve(false);\n }\n return this.pingServer(maxTimeout).then(response => {\n networkState.isServiceAvailable = response;\n if (!networkState.isServiceAvailable) {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n }\n return response;\n });\n }\n\n /**\n * Pings server\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n * default timeout value is 1min.\n */\n private pingServer(maxTimeout = 60000): Promise<boolean> {\n let baseURL = this.appConfig.url;\n if (baseURL && !baseURL.endsWith('/')) {\n baseURL += '/';\n } else {\n baseURL = baseURL || '';\n }\n return axios.get(baseURL + 'services/application/wmProperties.js?t=' + Date.now(), {\n responseType: 'text',\n timeout: maxTimeout\n }).then((res) => res.status === 200, () => false);\n }\n\n private setAutoConnect(flag: boolean): void {\n this._autoConnect = flag;\n StorageService.setItem(AUTO_CONNECT_KEY, '' + flag);\n }\n\n /**\n * Tries to connect to remote server. Network State will be changed based on the success of connection\n * operation and emits an event notifying the network state change.\n *\n * @param silentMode {boolean} if true and connection is successful, then no event is emitted. Otherwise,\n * events are emitted for network status change.\n * @returns {*} a promise\n */\n private tryToConnect(silentMode = false): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this.isServiceAvailable(5000).then(() => {\n if (networkState.isServiceAvailable && this._autoConnect) {\n networkState.isConnecting = true;\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n setTimeout(() => {\n networkState.isConnecting = false;\n networkState.isConnected = true;\n StorageService.setItem(IS_CONNECTED_KEY, '' + true);\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n resolve(true);\n }, silentMode ? 0 : 5000);\n } else {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n StorageService.setItem(IS_CONNECTED_KEY, '' + false);\n reject();\n this.checkForNetworkStateChange();\n }\n });\n });\n }\n\n private tryToDisconnect(): Promise<boolean> {\n networkState.isConnected = false;\n networkState.isConnecting = false;\n this.checkForNetworkStateChange();\n StorageService.setItem(IS_CONNECTED_KEY, '' + networkState.isConnected);\n return Promise.resolve(networkState.isConnected);\n }\n}\n\nexport default new NetworkService();\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["axios","clone","isEqual","noop","Network","NetInfo","StorageService","EventNotifier","getAbortableDefer","isWebPreviewMode","retryIfFails","NetworkState","constructor","_defineProperty","AUTO_CONNECT_KEY","IS_CONNECTED_KEY","excludedList","RegExp","networkState","blockUrl","url","isConnected","startsWith","findIndex","regExp","test","interceptors","request","use","noServiceRequired","urlSplits","split","pathIndex","indexOf","substr","join","NetworkService","setAutoConnect","checkForNetworkStateChange","isConnecting","connect","silent","tryToConnect","disconnect","p","tryToDisconnect","disableAutoConnect","isAvailable","pingServer","isServiceAvailable","then","onConnect","defer","cancelSubscription","Promise","resolve","notifier","subscribe","promise","catch","retryIfNetworkFails","fn","onConnectPromise","abort","reject","start","appConfig","getItem","_autoConnect","state","getNetworkStateAsync","isNetworkAvailable","addEventListener","data","_isCheckingServer","checkForServiceAvailiblity","getServiceName","SERVICE_NAME","unblock","urlRegex","push","getState","_lastKnownNetworkState","notify","maxTimeout","intervalId","setInterval","available","clearInterval","response","baseURL","endsWith","get","Date","now","responseType","timeout","res","status","flag","setItem","silentMode","setTimeout"],"sources":["network.service.ts"],"sourcesContent":["import axios from 'axios';\nimport { clone, isEqual, noop } from 'lodash-es';\nimport * as Network from 'expo-network';\nimport NetInfo from '@react-native-community/netinfo';\n\nimport AppConfig from './AppConfig';\nimport StorageService from './storage.service';\nimport EventNotifier from './event-notifier';\nimport { getAbortableDefer, isWebPreviewMode, retryIfFails } from './utils';\n\nexport class NetworkState {\n isConnecting = false;\n isConnected = true;\n isNetworkAvailable = true;\n isServiceAvailable = true;\n noServiceRequired = false;\n}\n\nconst AUTO_CONNECT_KEY = 'WM.NetworkService._autoConnect',\n IS_CONNECTED_KEY = 'WM.NetworkService.isConnected',\n excludedList = [new RegExp('/wmProperties.js')],\n networkState = new NetworkState();\n\n/**\n * If server is not connected and url does not match the unblock list of regular expressions,\n * then this function return true. Otherwise, return false.\n * @param url\n * @returns {boolean}\n */\nconst blockUrl = (url: string) => {\n return !networkState.isConnected\n && url.startsWith('http')\n && excludedList.findIndex(regExp => regExp.test(url)) < 0;\n};\n\naxios.interceptors.request.use((request) => {\n if (!networkState.noServiceRequired && request.url && blockUrl(request.url)) {\n const url = request.url;\n const urlSplits = url.split('://');\n const pathIndex = urlSplits[1].indexOf('/');\n urlSplits[1] = 'localhost' + (pathIndex > 0 ? urlSplits[1].substr(pathIndex) : '/');\n request.url = urlSplits.join('://');\n }\n return request;\n});\n\nclass NetworkService {\n static readonly SERVICE_NAME = 'NetworkService';\n\n private _autoConnect = true;\n private _lastKnownNetworkState: any;\n private _isCheckingServer = false;\n private appConfig: AppConfig = null as any;\n public readonly notifier: EventNotifier = new EventNotifier();\n\n constructor() {}\n\n /**\n * This method attempts to connect app to the server and returns a promise that will be resolved with\n * a boolean value based on the operation result.\n *\n * @returns {object} promise\n */\n public connect(silent = false): Promise<boolean> {\n this.setAutoConnect(true);\n return this.tryToConnect(silent);\n }\n\n /**\n * When the auto connect is enabled, then app is automatically connected whenever server is available.\n * Every time when app goes offline, auto connect is enabled. Before app coming to online, one can disable\n * the auto connection flow using this method.\n */\n public disableAutoConnect = () => this.setAutoConnect(false);\n\n /**\n * This method disconnects the app from the server and returns a promise that will be resolved with\n * a boolean value based on the operation result. Use connect method to reconnect.\n *\n * @returns {object} promise\n */\n public disconnect(): Promise<boolean> {\n const p = this.tryToDisconnect();\n this.disableAutoConnect();\n return p;\n }\n\n /**\n * If pingServer is true, then it returns a promise that will be resolved with boolean based on service availability\n * check.If pingServer is false, returns a boolean value based on the last known service availability.\n *\n * @returns {boolean} if pingServer is true, then a promise is returned. Otherwise, a boolean value.\n */\n public isAvailable(pingServer = false): boolean | Promise<boolean> {\n if (pingServer) {\n return this.isServiceAvailable().then(() => {\n this.checkForNetworkStateChange();\n return networkState.isServiceAvailable;\n });\n }\n return networkState.isServiceAvailable;\n }\n\n /**\n * Returns true, if app is connected to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true, if app is connected to server. Otherwise, returns false.\n */\n public isConnected = () => {\n this.checkForNetworkStateChange();\n return networkState.isConnected;\n }\n\n /**\n * Returns true if app is trying to connect to server. Otherwise, returns false.\n *\n * @returns {boolean} Returns true if app is trying to connect to server. Otherwise, returns false.\n */\n public isConnecting = () => networkState.isConnecting;\n\n /**\n * This method returns a promise that is resolved when connection is established with server.\n *\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public onConnect() {\n let defer = getAbortableDefer(),\n cancelSubscription: Function;\n if (this.isConnected()) {\n return Promise.resolve();\n }\n cancelSubscription = this.notifier.subscribe('onNetworkStateChange', () => {\n if (this.isConnected()) {\n defer.resolve(true);\n cancelSubscription();\n }\n });\n defer.promise.catch(function () {\n cancelSubscription();\n });\n return defer.promise;\n }\n\n /**\n * This is a util method. If fn cannot execute successfully and network lost connection, then the fn will\n * be invoked when network is back. The returned can also be aborted.\n *\n * @param {function()} fn method to invoke.\n * @returns {object} promise a promise that is resolved with the returned object of fn\n */\n public retryIfNetworkFails(fn: Function) {\n const defer = getAbortableDefer();\n retryIfFails(fn, 0, 0, () => {\n let onConnectPromise: any;\n if (!this.isConnected()) {\n onConnectPromise = this.onConnect();\n defer.promise.catch(function () {\n onConnectPromise.abort();\n });\n return onConnectPromise;\n }\n return false;\n }).then(defer.resolve, defer.reject);\n return defer.promise;\n }\n\n public async start(appConfig: AppConfig): Promise<any> {\n this.appConfig = appConfig;\n networkState.noServiceRequired = !appConfig.url;\n networkState.isConnected = (await StorageService.getItem(IS_CONNECTED_KEY)) !== 'false';\n this._autoConnect = (await StorageService.getItem(AUTO_CONNECT_KEY)) !== 'false';\n const state = await Network.getNetworkStateAsync();\n networkState.isNetworkAvailable = !!state.isConnected;\n networkState.isConnected = networkState.isNetworkAvailable && networkState.isConnected;\n !isWebPreviewMode() && NetInfo.addEventListener(state => {\n if (state.isConnected !== networkState.isConnected) {\n if (state.isConnected) {\n networkState.isNetworkAvailable = !!state.isConnected;\n this.tryToConnect().catch(noop);\n } else {\n networkState.isNetworkAvailable = false;\n networkState.isServiceAvailable = false;\n networkState.isConnected = false;\n this.tryToDisconnect();\n }\n }\n });\n this.notifier.subscribe('onNetworkStateChange', (data: NetworkState) => {\n /**\n * If network is available and server is not available,then\n * try to connect when server is available.\n */\n if (data.isNetworkAvailable && !data.isServiceAvailable && !this._isCheckingServer && !data.noServiceRequired) {\n this._isCheckingServer = true;\n this.checkForServiceAvailiblity().then(() => {\n this._isCheckingServer = false;\n this.connect();\n }, () => {\n this._isCheckingServer = false;\n });\n }\n });\n // to set the default n/w connection values.\n return this.tryToConnect(true).catch(noop);\n }\n\n public getServiceName() {\n return NetworkService.SERVICE_NAME;\n }\n\n /**\n * This function adds the given regular expression to the unblockList. Even app is in offline mode,\n * the urls matching with the given regular expression are not blocked by NetworkService.\n *\n * @param {string} urlRegex regular expression\n */\n public unblock(urlRegex: string) {\n excludedList.push(new RegExp(urlRegex));\n }\n\n public getState() {\n return clone(networkState);\n }\n\n private checkForNetworkStateChange() {\n if (!isEqual(this._lastKnownNetworkState, networkState)) {\n this._lastKnownNetworkState = clone(networkState);\n this.notifier.notify('onNetworkStateChange', [this._lastKnownNetworkState]);\n }\n }\n\n /**\n * Returns a promise that is resolved when server is available.\n * @returns {*}\n */\n private checkForServiceAvailiblity(): Promise<void> {\n const maxTimeout = 4500;\n return new Promise<void>(resolve => {\n const intervalId = setInterval(() => {\n if (networkState.isNetworkAvailable) {\n this.isServiceAvailable(maxTimeout).then(available => {\n if (available) {\n clearInterval(intervalId);\n resolve();\n }\n });\n }\n }, 5000);\n });\n }\n\n /**\n * Pings server to check whether server is available. Based on ping response network state is modified.\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n */\n private isServiceAvailable(maxTimeout?: number): Promise<boolean> {\n if (networkState.noServiceRequired) {\n networkState.isServiceAvailable = false;\n networkState.noServiceRequired = true;\n return Promise.resolve(false);\n }\n return this.pingServer(maxTimeout).then(response => {\n networkState.isServiceAvailable = response;\n if (!networkState.isServiceAvailable) {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n }\n return response;\n });\n }\n\n /**\n * Pings server\n * @returns {*} a promise that resolved with true, if server responds with valid status.\n * Otherwise, the promise is resolved with false.\n * default timeout value is 1min.\n */\n private pingServer(maxTimeout = 60000): Promise<boolean> {\n let baseURL = this.appConfig.url;\n if (baseURL && !baseURL.endsWith('/')) {\n baseURL += '/';\n } else {\n baseURL = baseURL || '';\n }\n return axios.get(baseURL + 'services/application/wmProperties.js?t=' + Date.now(), {\n responseType: 'text',\n timeout: maxTimeout\n }).then((res) => res.status === 200, () => false);\n }\n\n private setAutoConnect(flag: boolean): void {\n this._autoConnect = flag;\n StorageService.setItem(AUTO_CONNECT_KEY, '' + flag);\n }\n\n /**\n * Tries to connect to remote server. Network State will be changed based on the success of connection\n * operation and emits an event notifying the network state change.\n *\n * @param silentMode {boolean} if true and connection is successful, then no event is emitted. Otherwise,\n * events are emitted for network status change.\n * @returns {*} a promise\n */\n private tryToConnect(silentMode = false): Promise<boolean> {\n return new Promise<boolean>((resolve, reject) => {\n this.isServiceAvailable(5000).then(() => {\n if (networkState.isServiceAvailable && this._autoConnect) {\n networkState.isConnecting = true;\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n setTimeout(() => {\n networkState.isConnecting = false;\n networkState.isConnected = true;\n StorageService.setItem(IS_CONNECTED_KEY, '' + true);\n if (!silentMode) {\n this.checkForNetworkStateChange();\n }\n resolve(true);\n }, silentMode ? 0 : 5000);\n } else {\n networkState.isConnecting = false;\n networkState.isConnected = false;\n StorageService.setItem(IS_CONNECTED_KEY, '' + false);\n reject();\n this.checkForNetworkStateChange();\n }\n });\n });\n }\n\n private tryToDisconnect(): Promise<boolean> {\n networkState.isConnected = false;\n networkState.isConnecting = false;\n this.checkForNetworkStateChange();\n StorageService.setItem(IS_CONNECTED_KEY, '' + networkState.isConnected);\n return Promise.resolve(networkState.isConnected);\n }\n}\n\nexport default new NetworkService();\n"],"mappings":"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","ignoreList":[]}
@@ -3,12 +3,16 @@ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object
3
3
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
4
4
  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); }
5
5
  import React from "react";
6
- import { Platform, View, TouchableOpacity } from "react-native";
7
- import { get } from "lodash";
6
+ import { Platform, View, TouchableOpacity as RNTouchableOpacity } from "react-native";
7
+ import { Pressable, TouchableNativeFeedback, TouchableOpacity } from "react-native-gesture-handler";
8
+ import Constants, { ExecutionEnvironment } from 'expo-constants';
9
+ import { cloneDeep, get } from "lodash";
8
10
  import injector from "./injector";
9
11
  import { TouchableRipple } from "react-native-paper";
12
+ import { deepCopy } from "./utils";
10
13
  export const TappableContext = /*#__PURE__*/React.createContext(null);
11
14
  import { UIPreferencesConsumer } from "./ui-preferences.context";
15
+ const isExpoGo = Constants.executionEnvironment === ExecutionEnvironment.StoreClient;
12
16
  export const ParentTappableContext = /*#__PURE__*/React.createContext(null);
13
17
  export class SyntheticEvent {
14
18
  constructor() {
@@ -21,12 +25,113 @@ export class SyntheticEvent {
21
25
  }
22
26
  export class Tappable extends React.Component {
23
27
  constructor(props) {
28
+ var _this$appConfig$isLeg, _this$appConfig;
24
29
  super(props);
25
30
  _defineProperty(this, "lastPress", 0);
26
31
  _defineProperty(this, "lastTap", 0);
27
32
  _defineProperty(this, "lastDoubleTap", 0);
28
33
  _defineProperty(this, "isLongTap", false);
29
34
  _defineProperty(this, "parent", null);
35
+ _defineProperty(this, "appConfig", injector.get('APP_CONFIG'));
36
+ _defineProperty(this, "isLegacyTappable", void 0);
37
+ _defineProperty(this, "getContainerStyles", commonStyles => {
38
+ var _inner, _inner2, _inner3, _inner4, _inner5, _inner6, _inner7;
39
+ let inner = {};
40
+ if (Array.isArray(commonStyles)) {
41
+ commonStyles.forEach(style => {
42
+ if (style) {
43
+ Object.keys(style).forEach(key => {
44
+ inner[key] = style[key];
45
+ });
46
+ }
47
+ });
48
+ } else {
49
+ inner = cloneDeep(commonStyles);
50
+ }
51
+ const outer = deepCopy(inner);
52
+ outer === null || outer === void 0 || delete outer["padding"];
53
+ outer === null || outer === void 0 || delete outer["paddingHorizontal"];
54
+ outer === null || outer === void 0 || delete outer["paddingVertical"];
55
+ outer === null || outer === void 0 || delete outer["paddingTop"];
56
+ outer === null || outer === void 0 || delete outer["paddingBottom"];
57
+ outer === null || outer === void 0 || delete outer["paddingLeft"];
58
+ outer === null || outer === void 0 || delete outer["paddingRight"];
59
+ (_inner = inner) === null || _inner === void 0 || delete _inner["margin"];
60
+ (_inner2 = inner) === null || _inner2 === void 0 || delete _inner2["marginHorizontal"];
61
+ (_inner3 = inner) === null || _inner3 === void 0 || delete _inner3["marginVertical"];
62
+ (_inner4 = inner) === null || _inner4 === void 0 || delete _inner4["marginLeft"];
63
+ (_inner5 = inner) === null || _inner5 === void 0 || delete _inner5["marginRight"];
64
+ (_inner6 = inner) === null || _inner6 === void 0 || delete _inner6["marginTop"];
65
+ (_inner7 = inner) === null || _inner7 === void 0 || delete _inner7["marginBottom"];
66
+ return {
67
+ outer,
68
+ inner
69
+ };
70
+ });
71
+ /*
72
+ TODO: Remove TouchableNativeFeedback and TouchableOpacity, and use Pressable only,
73
+ When the issue with Pressable not working in Expo GO is fixed from Expo. (this happens only in Android with Expo Go)
74
+ */
75
+ _defineProperty(this, "getTouchableRipple", (rippleColor, commonProps) => {
76
+ if (this.isLegacyTappable || Platform.OS === 'ios') {
77
+ return /*#__PURE__*/React.createElement(TouchableRipple, _extends({
78
+ rippleColor: rippleColor,
79
+ borderless: true
80
+ }, commonProps, {
81
+ onLayout: this.props.onLayout
82
+ }), /*#__PURE__*/React.createElement(React.Fragment, null, this.props.children));
83
+ }
84
+ if (isExpoGo) {
85
+ const containerStyle = this.getContainerStyles(commonProps.style);
86
+ delete commonProps["style"];
87
+ return /*#__PURE__*/React.createElement(TouchableNativeFeedback, _extends({}, rippleColor && {
88
+ background: TouchableNativeFeedback.Ripple(rippleColor, true)
89
+ }, {
90
+ onLayout: this.props.onLayout
91
+ }, commonProps, {
92
+ style: containerStyle.outer
93
+ }), /*#__PURE__*/React.createElement(View, {
94
+ style: containerStyle.inner
95
+ }, this.props.children));
96
+ }
97
+ return /*#__PURE__*/React.createElement(Pressable, _extends({
98
+ android_ripple: {
99
+ color: rippleColor,
100
+ borderless: true
101
+ },
102
+ onLayout: this.props.onLayout
103
+ }, commonProps), this.props.children);
104
+ });
105
+ _defineProperty(this, "getTouchable", commonProps => {
106
+ if (this.isLegacyTappable || Platform.OS === 'ios') {
107
+ return /*#__PURE__*/React.createElement(RNTouchableOpacity, _extends({
108
+ activeOpacity: this.props.disableTouchEffect ? 1 : 0.2,
109
+ onLayout: this.props.onLayout
110
+ }, commonProps), /*#__PURE__*/React.createElement(React.Fragment, null, this.props.children));
111
+ }
112
+ if (isExpoGo) {
113
+ const containerStyle = this.getContainerStyles(commonProps.style);
114
+ delete commonProps["style"];
115
+ return /*#__PURE__*/React.createElement(TouchableOpacity, _extends({
116
+ activeOpacity: this.props.disableTouchEffect ? 1 : 0.2,
117
+ onLayout: this.props.onLayout
118
+ }, commonProps, {
119
+ style: containerStyle.outer
120
+ }), /*#__PURE__*/React.createElement(View, {
121
+ style: containerStyle.inner
122
+ }, this.props.children));
123
+ }
124
+ return /*#__PURE__*/React.createElement(Pressable, _extends({
125
+ onLayout: this.props.onLayout
126
+ }, commonProps, {
127
+ style: ({
128
+ pressed
129
+ }) => [commonProps.style, {
130
+ opacity: !this.props.disableTouchEffect && pressed ? 0.2 : 1
131
+ }]
132
+ }), this.props.children);
133
+ });
134
+ this.isLegacyTappable = (_this$appConfig$isLeg = (_this$appConfig = this.appConfig) === null || _this$appConfig === void 0 ? void 0 : _this$appConfig.isLegacyTappable) !== null && _this$appConfig$isLeg !== void 0 ? _this$appConfig$isLeg : true;
30
135
  }
31
136
  async triggerTap(e = new SyntheticEvent()) {
32
137
  var _this$parent;
@@ -139,19 +244,8 @@ export class Tappable extends React.Component {
139
244
  this.setParent(parent);
140
245
  return /*#__PURE__*/React.createElement(ParentTappableContext.Provider, {
141
246
  value: this
142
- }, /*#__PURE__*/React.createElement(TouchableRipple, _extends({
143
- rippleColor: this.props.disableTouchEffect ? "transparent" : this.props.rippleColor,
144
- borderless: true
145
- }, commonProps, {
146
- onLayout: this.props.onLayout
147
- }), /*#__PURE__*/React.createElement(React.Fragment, null, this.props.children)));
148
- }) :
149
- /*#__PURE__*/
150
- //default value is 0.2
151
- React.createElement(TouchableOpacity, _extends({
152
- activeOpacity: this.props.disableTouchEffect ? 1 : 0.2,
153
- onLayout: this.props.onLayout
154
- }, commonProps), /*#__PURE__*/React.createElement(React.Fragment, null, this.props.children));
247
+ }, this.getTouchableRipple(this.props.disableTouchEffect ? "transparent" : this.props.rippleColor, commonProps));
248
+ }) : /*#__PURE__*/React.createElement(React.Fragment, null, this.getTouchable(commonProps));
155
249
  });
156
250
  }
157
251
  return /*#__PURE__*/React.createElement(View, _extends({
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","View","TouchableOpacity","get","injector","TouchableRipple","TappableContext","createContext","UIPreferencesConsumer","ParentTappableContext","SyntheticEvent","constructor","_defineProperty","stopPropagation","propagationEnabled","Tappable","Component","props","triggerTap","e","_this$parent","target","onTap","invokeEventCallback","parent","onPressIn","_this$props$target","onTouchStart","onPress","lastPress","Date","now","currentTime","tapDelta","lastTap","isLongTap","_injector$FOCUSED_ELE","FOCUSED_ELEMENT","blur","lastDoubleTap","onDoubleTap","setTimeout","_this$parent2","onLongTap","_this$props$target2","_this$parent3","onPressOut","onTouchEnd","_this$props$target3","_this$parent4","setParent","render","commonProps","OS","accessibilityLabel","testID","accessible","accessibilityProps","disabled","proxy","style","styles","_e$target","tagName","onLongPress","onLongtap","onDoubletap","onTouchstart","onTouchend","createElement","preferences","enableRipple","Consumer","Provider","value","_extends","rippleColor","disableTouchEffect","borderless","onLayout","Fragment","children","activeOpacity"],"sources":["tappable.component.tsx"],"sourcesContent":["import { BaseComponent } from \"@wavemaker-ai/app-rn-runtime/core/base.component\";\nimport React from \"react\";\nimport { GestureResponderEvent, Platform, View, TouchableOpacity } from \"react-native\";\nimport { get } from \"lodash\";\nimport injector from \"./injector\";\nimport { TouchableRipple } from \"react-native-paper\";\nimport ThemeVariables from \"../styles/theme.variables\";\nimport { isDefined } from \"./utils\";\n\nexport const TappableContext = React.createContext<Tappable>(null as any);\nimport { UIPreferencesConsumer, UI_PREFERENCES } from \"./ui-preferences.context\";\n\nexport const ParentTappableContext = React.createContext<Tappable>(null as any);\ninterface TappableProps {\n testID?: string;\n children?: any\n styles?: any;\n target?: BaseComponent<any, any, any>;\n onTap?: (e: any) => void;\n onLongTap?: (e: any) => void;\n onDoubleTap?: (e: any) => void;\n onTouchStart? : (e: any) => void;\n onTouchEnd? : (e: any) => void;\n rippleColor?: string;\n accessibilityProps?: any;\n disableTouchEffect?:boolean;\n onLayout?: any;\n}\n\nexport class SyntheticEvent {\n // as the event is being used in onPress, onPressOut and onLongTap the TapEvent is renamed to SyntheticEvent\n propagationEnabled = true;\n\n constructor() {\n\n }\n\n stopPropagation() {\n this.propagationEnabled = false;\n }\n}\n\nexport class Tappable extends React.Component<TappableProps, any> {\n private lastPress = 0;\n private lastTap = 0;\n private lastDoubleTap = 0;\n private isLongTap = false;\n private parent:Tappable = null as any;\n\n constructor(props: any) {\n super(props);\n }\n\n async triggerTap(e = new SyntheticEvent()) {\n if (!e.propagationEnabled) {\n return;\n }\n const target = this.props.target;\n if (this.props.onTap) {\n await this.props.onTap(e);\n } else {\n await target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.triggerTap(e);\n }\n\n onPressIn(e: SyntheticEvent): void {\n this.props.onTouchStart && this.props.onTouchStart(e);\n this.props.target?.invokeEventCallback('onTouchstart', [e, this.props.target]);\n }\n\n onPress(e: SyntheticEvent): void {\n this.lastPress = Date.now();\n const target = this.props.target;\n const currentTime = Date.now();\n const tapDelta = currentTime - this.lastTap;\n if (this.isLongTap) {\n this.isLongTap = false;\n return;\n }\n if (e.propagationEnabled) {\n injector.FOCUSED_ELEMENT.get()?.blur();\n if(this.lastDoubleTap !== this.lastTap\n && tapDelta < 500) {\n this.props.onDoubleTap && this.props.onDoubleTap(e);\n setTimeout(() => {\n target?.invokeEventCallback('onDoubletap', [e, target]);\n }, 200);\n this.lastDoubleTap = currentTime;\n }\n setTimeout(() => {\n if (!e.propagationEnabled) {\n return;\n }\n if (this.props.onTap) {\n this.props.onTap(e);\n } else {\n target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.onPress(e);\n }, 200);\n this.lastTap = currentTime;\n }\n }\n\n onLongTap(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onLongTap && this.props.onLongTap(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onLongtap', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = true;\n }\n\n onPressOut(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onTouchend', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = false;\n }\n private setParent(parent: Tappable) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n }\n }\n\n render() {\n const target = this.props.target;\n const commonProps = {\n ...(Platform.OS === 'android' || Platform.OS === 'web') ? {\n accessibilityLabel: this.props.testID,\n testID: this.props.testID\n }: {\n accessible: false,\n testID: this.props.testID\n },\n ...this.props.accessibilityProps,\n disabled:get(target?.proxy, 'disabled'),\n style:this.props.styles,\n onPressIn:(e?: GestureResponderEvent) => this.onPressIn(new SyntheticEvent()),\n onPress:(e?: GestureResponderEvent) => {\n if ((e?.target as any)?.tagName === 'INPUT') {\n return;\n }\n this.onPress(new SyntheticEvent())\n },\n onLongPress:(e?: GestureResponderEvent) => this.onLongTap(new SyntheticEvent()),\n onPressOut:(e?: GestureResponderEvent) => this.onPressOut(new SyntheticEvent())\n };\n if (target?.props.onTap\n || target?.props.onLongtap\n || target?.props.onDoubletap\n || target?.props.onTouchstart\n || target?.props.onTouchend\n || this.props.onTap\n || this.props.onLongTap\n || this.props.onDoubleTap\n || this.props.onTouchStart\n || this.props.onTouchEnd) {\n return (\n <UIPreferencesConsumer>\n {(preferences: UI_PREFERENCES) => {\n return preferences.enableRipple != false ? (\n <ParentTappableContext.Consumer>{(parent) => {\n this.setParent(parent);\n return(\n <ParentTappableContext.Provider value={this}>\n <TouchableRipple\n rippleColor={this.props.disableTouchEffect ? \"transparent\" : this.props.rippleColor}\n borderless={true}\n {...commonProps}\n onLayout={this.props.onLayout}\n >\n <>{this.props.children}</>\n </TouchableRipple>\n </ParentTappableContext.Provider>\n )\n }}</ParentTappableContext.Consumer>): (\n //default value is 0.2\n <TouchableOpacity\n activeOpacity={this.props.disableTouchEffect ? 1 : 0.2}\n onLayout={this.props.onLayout}\n {...commonProps}\n >\n <>{this.props.children}</>\n </TouchableOpacity>);\n }}\n </UIPreferencesConsumer>\n );\n }\n return (\n <View\n style={this.props.styles}\n onLayout={this.props.onLayout}\n {...this.props.accessibilityProps}\n >\n {this.props.children}\n </View>);\n }\n}\n"],"mappings":";;;;AACA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAAgCC,QAAQ,EAAEC,IAAI,EAAEC,gBAAgB,QAAQ,cAAc;AACtF,SAASC,GAAG,QAAQ,QAAQ;AAC5B,OAAOC,QAAQ,MAAM,YAAY;AACjC,SAASC,eAAe,QAAQ,oBAAoB;AAIpD,OAAO,MAAMC,eAAe,gBAAGP,KAAK,CAACQ,aAAa,CAAW,IAAW,CAAC;AACzE,SAASC,qBAAqB,QAAwB,0BAA0B;AAEhF,OAAO,MAAMC,qBAAqB,gBAAGV,KAAK,CAACQ,aAAa,CAAW,IAAW,CAAC;AAiB/E,OAAO,MAAMG,cAAc,CAAC;EAIxBC,WAAWA,CAAA,EAAG;IAHd;IAAAC,eAAA,6BACqB,IAAI;EAIzB;EAEAC,eAAeA,CAAA,EAAG;IACd,IAAI,CAACC,kBAAkB,GAAG,KAAK;EACnC;AACJ;AAEA,OAAO,MAAMC,QAAQ,SAAShB,KAAK,CAACiB,SAAS,CAAqB;EAO9DL,WAAWA,CAACM,KAAU,EAAE;IACpB,KAAK,CAACA,KAAK,CAAC;IAACL,eAAA,oBAPG,CAAC;IAAAA,eAAA,kBACH,CAAC;IAAAA,eAAA,wBACK,CAAC;IAAAA,eAAA,oBACL,KAAK;IAAAA,eAAA,iBACC,IAAI;EAI9B;EAEA,MAAMM,UAAUA,CAACC,CAAC,GAAG,IAAIT,cAAc,CAAC,CAAC,EAAE;IAAA,IAAAU,YAAA;IACvC,IAAI,CAACD,CAAC,CAACL,kBAAkB,EAAE;MACvB;IACJ;IACA,MAAMO,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,IAAI,IAAI,CAACJ,KAAK,CAACK,KAAK,EAAE;MAClB,MAAM,IAAI,CAACL,KAAK,CAACK,KAAK,CAACH,CAAC,CAAC;IAC7B,CAAC,MAAM;MACH,OAAME,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,mBAAmB,CAAC,OAAO,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;IAC3D;IACA,CAAAD,YAAA,OAAI,CAACI,MAAM,cAAAJ,YAAA,eAAXA,YAAA,CAAaF,UAAU,CAACC,CAAC,CAAC;EAC9B;EAEAM,SAASA,CAACN,CAAiB,EAAQ;IAAA,IAAAO,kBAAA;IAC/B,IAAI,CAACT,KAAK,CAACU,YAAY,IAAI,IAAI,CAACV,KAAK,CAACU,YAAY,CAACR,CAAC,CAAC;IACrD,CAAAO,kBAAA,OAAI,CAACT,KAAK,CAACI,MAAM,cAAAK,kBAAA,eAAjBA,kBAAA,CAAmBH,mBAAmB,CAAC,cAAc,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;EAClF;EAEAO,OAAOA,CAACT,CAAiB,EAAQ;IAC7B,IAAI,CAACU,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC3B,MAAMV,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,MAAMW,WAAW,GAAGF,IAAI,CAACC,GAAG,CAAC,CAAC;IAC9B,MAAME,QAAQ,GAAGD,WAAW,GAAG,IAAI,CAACE,OAAO;IAC3C,IAAI,IAAI,CAACC,SAAS,EAAE;MAChB,IAAI,CAACA,SAAS,GAAG,KAAK;MACtB;IACJ;IACA,IAAIhB,CAAC,CAACL,kBAAkB,EAAE;MAAA,IAAAsB,qBAAA;MACtB,CAAAA,qBAAA,GAAAhC,QAAQ,CAACiC,eAAe,CAAClC,GAAG,CAAC,CAAC,cAAAiC,qBAAA,eAA9BA,qBAAA,CAAgCE,IAAI,CAAC,CAAC;MACtC,IAAG,IAAI,CAACC,aAAa,KAAK,IAAI,CAACL,OAAO,IAC/BD,QAAQ,GAAG,GAAG,EAAE;QACnB,IAAI,CAAChB,KAAK,CAACuB,WAAW,IAAI,IAAI,CAACvB,KAAK,CAACuB,WAAW,CAACrB,CAAC,CAAC;QACnDsB,UAAU,CAAC,MAAM;UACbpB,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,mBAAmB,CAAC,aAAa,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;QAC3D,CAAC,EAAE,GAAG,CAAC;QACP,IAAI,CAACkB,aAAa,GAAGP,WAAW;MACpC;MACAS,UAAU,CAAC,MAAM;QAAA,IAAAC,aAAA;QACb,IAAI,CAACvB,CAAC,CAACL,kBAAkB,EAAE;UACvB;QACJ;QACA,IAAI,IAAI,CAACG,KAAK,CAACK,KAAK,EAAE;UAClB,IAAI,CAACL,KAAK,CAACK,KAAK,CAACH,CAAC,CAAC;QACvB,CAAC,MAAM;UACHE,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEE,mBAAmB,CAAC,OAAO,EAAE,CAACJ,CAAC,EAAEE,MAAM,CAAC,CAAC;QACrD;QACA,CAAAqB,aAAA,OAAI,CAAClB,MAAM,cAAAkB,aAAA,eAAXA,aAAA,CAAad,OAAO,CAACT,CAAC,CAAC;MAC3B,CAAC,EAAE,GAAG,CAAC;MACP,IAAI,CAACe,OAAO,GAAGF,WAAW;IAC9B;EACJ;EAEAW,SAASA,CAACxB,CAAiB,EAAQ;IAC/B,IAAG,CAACA,CAAC,CAACL,kBAAkB,EAAC;MACrB;IACJ;IACA,IAAI,CAACG,KAAK,CAAC0B,SAAS,IAAI,IAAI,CAAC1B,KAAK,CAAC0B,SAAS,CAACxB,CAAC,CAAC;IAC/CsB,UAAU,CAAC,MAAM;MAAA,IAAAG,mBAAA,EAAAC,aAAA;MACb,CAAAD,mBAAA,OAAI,CAAC3B,KAAK,CAACI,MAAM,cAAAuB,mBAAA,eAAjBA,mBAAA,CAAmBrB,mBAAmB,CAAC,WAAW,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;MAC3E,CAAAwB,aAAA,OAAI,CAACrB,MAAM,cAAAqB,aAAA,eAAXA,aAAA,CAAaC,UAAU,CAAC3B,CAAC,CAAC;IAC9B,CAAC,EAAE,GAAG,CAAC;IACP,IAAI,CAACgB,SAAS,GAAG,IAAI;EACzB;EAEAW,UAAUA,CAAC3B,CAAiB,EAAQ;IAChC,IAAG,CAACA,CAAC,CAACL,kBAAkB,EAAC;MACrB;IACJ;IACA,IAAI,CAACG,KAAK,CAAC8B,UAAU,IAAI,IAAI,CAAC9B,KAAK,CAAC8B,UAAU,CAAC5B,CAAC,CAAC;IACjDsB,UAAU,CAAC,MAAM;MAAA,IAAAO,mBAAA,EAAAC,aAAA;MACb,CAAAD,mBAAA,OAAI,CAAC/B,KAAK,CAACI,MAAM,cAAA2B,mBAAA,eAAjBA,mBAAA,CAAmBzB,mBAAmB,CAAC,YAAY,EAAE,CAACJ,CAAC,EAAE,IAAI,CAACF,KAAK,CAACI,MAAM,CAAC,CAAC;MAC5E,CAAA4B,aAAA,OAAI,CAACzB,MAAM,cAAAyB,aAAA,eAAXA,aAAA,CAAaH,UAAU,CAAC3B,CAAC,CAAC;IAC9B,CAAC,EAAE,GAAG,CAAC;IACP,IAAI,CAACgB,SAAS,GAAG,KAAK;EAC1B;EACQe,SAASA,CAAC1B,MAAgB,EAAE;IAChC,IAAIA,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKA,MAAM,EAAG;MACnC,IAAI,CAACA,MAAM,GAAGA,MAAM;IACxB;EACJ;EAEA2B,MAAMA,CAAA,EAAG;IACL,MAAM9B,MAAM,GAAG,IAAI,CAACJ,KAAK,CAACI,MAAM;IAChC,MAAM+B,WAAW,GAAG;MAChB,IAAIpD,QAAQ,CAACqD,EAAE,KAAK,SAAS,IAAIrD,QAAQ,CAACqD,EAAE,KAAK,KAAK,GAAI;QACtDC,kBAAkB,EAAE,IAAI,CAACrC,KAAK,CAACsC,MAAM;QACrCA,MAAM,EAAE,IAAI,CAACtC,KAAK,CAACsC;MACvB,CAAC,GAAE;QACCC,UAAU,EAAE,KAAK;QACjBD,MAAM,EAAE,IAAI,CAACtC,KAAK,CAACsC;MACvB,CAAC;MACD,GAAG,IAAI,CAACtC,KAAK,CAACwC,kBAAkB;MAChCC,QAAQ,EAACvD,GAAG,CAACkB,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEsC,KAAK,EAAE,UAAU,CAAC;MACvCC,KAAK,EAAC,IAAI,CAAC3C,KAAK,CAAC4C,MAAM;MACvBpC,SAAS,EAAEN,CAAyB,IAAK,IAAI,CAACM,SAAS,CAAC,IAAIf,cAAc,CAAC,CAAC,CAAC;MAC7EkB,OAAO,EAAET,CAAyB,IAAK;QAAA,IAAA2C,SAAA;QACnC,IAAI,CAAC3C,CAAC,aAADA,CAAC,gBAAA2C,SAAA,GAAD3C,CAAC,CAAEE,MAAM,cAAAyC,SAAA,uBAAVA,SAAA,CAAoBC,OAAO,MAAK,OAAO,EAAE;UACzC;QACJ;QACA,IAAI,CAACnC,OAAO,CAAC,IAAIlB,cAAc,CAAC,CAAC,CAAC;MACtC,CAAC;MACDsD,WAAW,EAAE7C,CAAyB,IAAK,IAAI,CAACwB,SAAS,CAAC,IAAIjC,cAAc,CAAC,CAAC,CAAC;MAC/EoC,UAAU,EAAE3B,CAAyB,IAAK,IAAI,CAAC2B,UAAU,CAAC,IAAIpC,cAAc,CAAC,CAAC;IAClF,CAAC;IACD,IAAIW,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACK,KAAK,IAChBD,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACgD,SAAS,IACvB5C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACiD,WAAW,IACzB7C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACkD,YAAY,IAC1B9C,MAAM,aAANA,MAAM,eAANA,MAAM,CAAEJ,KAAK,CAACmD,UAAU,IACxB,IAAI,CAACnD,KAAK,CAACK,KAAK,IAChB,IAAI,CAACL,KAAK,CAAC0B,SAAS,IACpB,IAAI,CAAC1B,KAAK,CAACuB,WAAW,IACtB,IAAI,CAACvB,KAAK,CAACU,YAAY,IACvB,IAAI,CAACV,KAAK,CAAC8B,UAAU,EAAE;MAC1B,oBACAhD,KAAA,CAAAsE,aAAA,CAAC7D,qBAAqB,QAChB8D,WAA2B,IAAK;QAC9B,OAAOA,WAAW,CAACC,YAAY,IAAI,KAAK,gBACpCxE,KAAA,CAAAsE,aAAA,CAAC5D,qBAAqB,CAAC+D,QAAQ,QAAGhD,MAAM,IAAK;UACzC,IAAI,CAAC0B,SAAS,CAAC1B,MAAM,CAAC;UACtB,oBACIzB,KAAA,CAAAsE,aAAA,CAAC5D,qBAAqB,CAACgE,QAAQ;YAACC,KAAK,EAAE;UAAK,gBACxC3E,KAAA,CAAAsE,aAAA,CAAChE,eAAe,EAAAsE,QAAA;YACZC,WAAW,EAAE,IAAI,CAAC3D,KAAK,CAAC4D,kBAAkB,GAAG,aAAa,GAAG,IAAI,CAAC5D,KAAK,CAAC2D,WAAY;YACpFE,UAAU,EAAE;UAAK,GACb1B,WAAW;YACf2B,QAAQ,EAAE,IAAI,CAAC9D,KAAK,CAAC8D;UAAS,iBAE9BhF,KAAA,CAAAsE,aAAA,CAAAtE,KAAA,CAAAiF,QAAA,QAAG,IAAI,CAAC/D,KAAK,CAACgE,QAAW,CACZ,CACW,CAAC;QAEzC,CAAkC,CAAC;QAAA;QACnC;QACAlF,KAAA,CAAAsE,aAAA,CAACnE,gBAAgB,EAAAyE,QAAA;UACbO,aAAa,EAAE,IAAI,CAACjE,KAAK,CAAC4D,kBAAkB,GAAG,CAAC,GAAG,GAAI;UACvDE,QAAQ,EAAE,IAAI,CAAC9D,KAAK,CAAC8D;QAAS,GAC1B3B,WAAW,gBAEfrD,KAAA,CAAAsE,aAAA,CAAAtE,KAAA,CAAAiF,QAAA,QAAG,IAAI,CAAC/D,KAAK,CAACgE,QAAW,CACX,CAAE;MAC5B,CACmB,CAAC;IAE5B;IACA,oBACIlF,KAAA,CAAAsE,aAAA,CAACpE,IAAI,EAAA0E,QAAA;MACDf,KAAK,EAAE,IAAI,CAAC3C,KAAK,CAAC4C,MAAO;MACzBkB,QAAQ,EAAE,IAAI,CAAC9D,KAAK,CAAC8D;IAAS,GAC1B,IAAI,CAAC9D,KAAK,CAACwC,kBAAkB,GAEhC,IAAI,CAACxC,KAAK,CAACgE,QACV,CAAC;EACf;AACJ","ignoreList":[]}
1
+ {"version":3,"names":["React","Platform","View","TouchableOpacity","RNTouchableOpacity","Pressable","TouchableNativeFeedback","Constants","ExecutionEnvironment","cloneDeep","get","injector","TouchableRipple","deepCopy","TappableContext","createContext","UIPreferencesConsumer","isExpoGo","executionEnvironment","StoreClient","ParentTappableContext","SyntheticEvent","constructor","_defineProperty","stopPropagation","propagationEnabled","Tappable","Component","props","_this$appConfig$isLeg","_this$appConfig","commonStyles","_inner","_inner2","_inner3","_inner4","_inner5","_inner6","_inner7","inner","Array","isArray","forEach","style","Object","keys","key","outer","rippleColor","commonProps","isLegacyTappable","OS","createElement","_extends","borderless","onLayout","Fragment","children","containerStyle","getContainerStyles","background","Ripple","android_ripple","color","activeOpacity","disableTouchEffect","pressed","opacity","appConfig","triggerTap","e","_this$parent","target","onTap","invokeEventCallback","parent","onPressIn","_this$props$target","onTouchStart","onPress","lastPress","Date","now","currentTime","tapDelta","lastTap","isLongTap","_injector$FOCUSED_ELE","FOCUSED_ELEMENT","blur","lastDoubleTap","onDoubleTap","setTimeout","_this$parent2","onLongTap","_this$props$target2","_this$parent3","onPressOut","onTouchEnd","_this$props$target3","_this$parent4","setParent","render","accessibilityLabel","testID","accessible","accessibilityProps","disabled","proxy","styles","_e$target","tagName","onLongPress","onLongtap","onDoubletap","onTouchstart","onTouchend","preferences","enableRipple","Consumer","Provider","value","getTouchableRipple","getTouchable"],"sources":["tappable.component.tsx"],"sourcesContent":["import { BaseComponent } from \"@wavemaker-ai/app-rn-runtime/core/base.component\";\nimport React from \"react\";\nimport { GestureResponderEvent, Platform, View, TouchableOpacity as RNTouchableOpacity } from \"react-native\";\nimport { Pressable, TouchableNativeFeedback, TouchableOpacity } from \"react-native-gesture-handler\";\nimport Constants, { ExecutionEnvironment } from 'expo-constants';\nimport { cloneDeep, get } from \"lodash\";\nimport injector from \"./injector\";\nimport { TouchableRipple } from \"react-native-paper\";\nimport ThemeVariables from \"../styles/theme.variables\";\nimport { deepCopy, isDefined } from \"./utils\";\nimport AppConfig from '@wavemaker-ai/app-rn-runtime/core/AppConfig';\n\nexport const TappableContext = React.createContext<Tappable>(null as any);\nimport { UIPreferencesConsumer, UI_PREFERENCES } from \"./ui-preferences.context\";\n\nconst isExpoGo = Constants.executionEnvironment === ExecutionEnvironment.StoreClient;\n\nexport const ParentTappableContext = React.createContext<Tappable>(null as any);\ninterface TappableProps {\n testID?: string;\n children?: any\n styles?: any;\n target?: BaseComponent<any, any, any>;\n onTap?: (e: any) => void;\n onLongTap?: (e: any) => void;\n onDoubleTap?: (e: any) => void;\n onTouchStart? : (e: any) => void;\n onTouchEnd? : (e: any) => void;\n rippleColor?: string;\n accessibilityProps?: any;\n disableTouchEffect?:boolean;\n onLayout?: any;\n}\n\nexport class SyntheticEvent {\n // as the event is being used in onPress, onPressOut and onLongTap the TapEvent is renamed to SyntheticEvent\n propagationEnabled = true;\n\n constructor() {\n\n }\n\n stopPropagation() {\n this.propagationEnabled = false;\n }\n}\n\nexport class Tappable extends React.Component<TappableProps, any> {\n private lastPress = 0;\n private lastTap = 0;\n private lastDoubleTap = 0;\n private isLongTap = false;\n private parent:Tappable = null as any;\n private appConfig: any = injector.get<AppConfig>('APP_CONFIG');;\n private isLegacyTappable: boolean\n\n constructor(props: any) {\n super(props);\n this.isLegacyTappable = this.appConfig?.isLegacyTappable ?? true;\n }\n\n async triggerTap(e = new SyntheticEvent()) {\n if (!e.propagationEnabled) {\n return;\n }\n const target = this.props.target;\n if (this.props.onTap) {\n await this.props.onTap(e);\n } else {\n await target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.triggerTap(e);\n }\n\n onPressIn(e: SyntheticEvent): void {\n this.props.onTouchStart && this.props.onTouchStart(e);\n this.props.target?.invokeEventCallback('onTouchstart', [e, this.props.target]);\n }\n\n onPress(e: SyntheticEvent): void {\n this.lastPress = Date.now();\n const target = this.props.target;\n const currentTime = Date.now();\n const tapDelta = currentTime - this.lastTap;\n if (this.isLongTap) {\n this.isLongTap = false;\n return;\n }\n if (e.propagationEnabled) {\n injector.FOCUSED_ELEMENT.get()?.blur();\n if(this.lastDoubleTap !== this.lastTap\n && tapDelta < 500) {\n this.props.onDoubleTap && this.props.onDoubleTap(e);\n setTimeout(() => {\n target?.invokeEventCallback('onDoubletap', [e, target]);\n }, 200);\n this.lastDoubleTap = currentTime;\n }\n setTimeout(() => {\n if (!e.propagationEnabled) {\n return;\n }\n if (this.props.onTap) {\n this.props.onTap(e);\n } else {\n target?.invokeEventCallback('onTap', [e, target]);\n }\n this.parent?.onPress(e);\n }, 200);\n this.lastTap = currentTime;\n }\n }\n\n onLongTap(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onLongTap && this.props.onLongTap(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onLongtap', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = true;\n }\n\n onPressOut(e: SyntheticEvent): void {\n if(!e.propagationEnabled){\n return;\n }\n this.props.onTouchEnd && this.props.onTouchEnd(e);\n setTimeout(() => {\n this.props.target?.invokeEventCallback('onTouchend', [e, this.props.target]);\n this.parent?.onPressOut(e);\n }, 200);\n this.isLongTap = false;\n }\n private setParent(parent: Tappable) {\n if (parent && this.parent !== parent) {\n this.parent = parent;\n }\n }\n\n\n private getContainerStyles = (commonStyles: any) => {\n let inner: any = {}\n if(Array.isArray(commonStyles)) {\n commonStyles.forEach((style: any) => {\n if(style) {\n Object.keys(style).forEach(key => {\n inner[key] = style[key];\n })\n }\n })\n } else {\n inner = cloneDeep(commonStyles)\n }\n const outer: any = deepCopy(inner);\n\n delete outer?.[\"padding\"];\n delete outer?.[\"paddingHorizontal\"];\n delete outer?.[\"paddingVertical\"];\n delete outer?.[\"paddingTop\"];\n delete outer?.[\"paddingBottom\"];\n delete outer?.[\"paddingLeft\"];\n delete outer?.[\"paddingRight\"];\n\n delete inner?.[\"margin\"];\n delete inner?.[\"marginHorizontal\"];\n delete inner?.[\"marginVertical\"];\n delete inner?.[\"marginLeft\"];\n delete inner?.[\"marginRight\"];\n delete inner?.[\"marginTop\"];\n delete inner?.[\"marginBottom\"];\n\n return {\n outer,\n inner\n }\n }\n\n /*\n TODO: Remove TouchableNativeFeedback and TouchableOpacity, and use Pressable only,\n When the issue with Pressable not working in Expo GO is fixed from Expo. (this happens only in Android with Expo Go)\n */\n getTouchableRipple = (rippleColor: string | undefined, commonProps: any) => {\n if(this.isLegacyTappable || Platform.OS === 'ios') {\n return (\n <TouchableRipple \n rippleColor={rippleColor} \n borderless={true} \n {...commonProps}\n onLayout={this.props.onLayout}\n >\n <>{this.props.children}</>\n </TouchableRipple>\n )\n }\n\n if(isExpoGo) {\n const containerStyle = this.getContainerStyles(commonProps.style);\n delete commonProps[\"style\"];\n \n return (\n <TouchableNativeFeedback\n {...rippleColor && {background: TouchableNativeFeedback.Ripple(rippleColor, true)}}\n onLayout={this.props.onLayout}\n {...commonProps}\n style={containerStyle.outer}\n >\n <View style={containerStyle.inner}>\n {this.props.children}\n </View>\n </TouchableNativeFeedback>\n )\n }\n\n return (\n <Pressable\n android_ripple={{\n color: rippleColor,\n borderless: true\n }}\n onLayout={this.props.onLayout}\n {...commonProps}\n >\n {this.props.children}\n </Pressable>\n )\n }\n \n\n getTouchable = (commonProps: any) => {\n if(this.isLegacyTappable || Platform.OS === 'ios') {\n return (\n <RNTouchableOpacity \n activeOpacity={this.props.disableTouchEffect ? 1 : 0.2} \n onLayout={this.props.onLayout}\n {...commonProps}\n >\n <>{this.props.children}</>\n </RNTouchableOpacity>\n )\n }\n\n if(isExpoGo) {\n const containerStyle = this.getContainerStyles(commonProps.style);\n delete commonProps[\"style\"];\n\n return (\n <TouchableOpacity\n activeOpacity={this.props.disableTouchEffect ? 1 : 0.2}\n onLayout={this.props.onLayout}\n {...commonProps}\n style={containerStyle.outer}\n\n >\n <View style={containerStyle.inner}>\n {this.props.children}\n </View>\n </TouchableOpacity>\n )\n }\n\n return (\n <Pressable\n onLayout={this.props.onLayout}\n {...commonProps}\n style={({pressed}) => [\n commonProps.style, \n { opacity: !this.props.disableTouchEffect && pressed ? 0.2 : 1}\n ]}\n >\n {this.props.children}\n </Pressable>\n )\n }\n\n render() {\n const target = this.props.target;\n const commonProps = {\n ...(Platform.OS === 'android' || Platform.OS === 'web') ? {\n accessibilityLabel: this.props.testID,\n testID: this.props.testID\n }: {\n accessible: false,\n testID: this.props.testID\n },\n ...this.props.accessibilityProps,\n disabled:get(target?.proxy, 'disabled'),\n style:this.props.styles,\n onPressIn:(e?: GestureResponderEvent) => this.onPressIn(new SyntheticEvent()),\n onPress:(e?: GestureResponderEvent) => {\n if ((e?.target as any)?.tagName === 'INPUT') {\n return;\n }\n this.onPress(new SyntheticEvent())\n },\n onLongPress:(e?: GestureResponderEvent) => this.onLongTap(new SyntheticEvent()),\n onPressOut:(e?: GestureResponderEvent) => this.onPressOut(new SyntheticEvent())\n };\n if (target?.props.onTap\n || target?.props.onLongtap\n || target?.props.onDoubletap\n || target?.props.onTouchstart\n || target?.props.onTouchend\n || this.props.onTap\n || this.props.onLongTap\n || this.props.onDoubleTap\n || this.props.onTouchStart\n || this.props.onTouchEnd) {\n return (\n <UIPreferencesConsumer>\n {(preferences: UI_PREFERENCES) => {\n return preferences.enableRipple != false ? (\n <ParentTappableContext.Consumer>{(parent) => {\n this.setParent(parent);\n return(\n <ParentTappableContext.Provider value={this}>\n {this.getTouchableRipple(\n this.props.disableTouchEffect ? \"transparent\" : this.props.rippleColor, \n commonProps\n )}\n </ParentTappableContext.Provider>\n )\n }}</ParentTappableContext.Consumer>): (\n <>\n {this.getTouchable(commonProps)}\n </>\n )\n }}\n </UIPreferencesConsumer>\n );\n }\n return (\n <View\n style={this.props.styles}\n onLayout={this.props.onLayout}\n {...this.props.accessibilityProps}\n >\n {this.props.children}\n </View>);\n }\n}\n"],"mappings":"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","ignoreList":[]}