@nativescript/core 9.0.0-alpha.24 → 9.0.0-alpha.26

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 (267) hide show
  1. package/application/application-common.d.ts +29 -10
  2. package/application/application-common.js +58 -5
  3. package/application/application-common.js.map +1 -1
  4. package/application/application-interfaces.d.ts +10 -0
  5. package/application/application-shims.d.ts +27 -0
  6. package/application/application-shims.js +27 -0
  7. package/application/application-shims.js.map +1 -1
  8. package/application/application.android.d.ts +12 -2
  9. package/application/application.android.js +418 -342
  10. package/application/application.android.js.map +1 -1
  11. package/application/application.d.ts +8 -1
  12. package/application/application.ios.d.ts +16 -1
  13. package/application/application.ios.js +59 -21
  14. package/application/application.ios.js.map +1 -1
  15. package/application/helpers.android.d.ts +0 -9
  16. package/application/helpers.android.js +0 -54
  17. package/application/helpers.android.js.map +1 -1
  18. package/application/helpers.d.ts +0 -10
  19. package/application/helpers.ios.d.ts +0 -19
  20. package/application/helpers.ios.js +0 -38
  21. package/application/helpers.ios.js.map +1 -1
  22. package/config/config.interface.d.ts +21 -0
  23. package/connectivity/index.android.js +25 -25
  24. package/connectivity/index.android.js.map +1 -1
  25. package/core-types/index.d.ts +77 -63
  26. package/core-types/index.js +10 -1
  27. package/core-types/index.js.map +1 -1
  28. package/core-types/validators.js +12 -6
  29. package/core-types/validators.js.map +1 -1
  30. package/data/observable/index.d.ts +2 -1
  31. package/data/observable/index.js +31 -19
  32. package/data/observable/index.js.map +1 -1
  33. package/fps-meter/fps-native.ios.js +1 -1
  34. package/fps-meter/fps-native.ios.js.map +1 -1
  35. package/http/http-request/index.ios.js +1 -1
  36. package/http/http-request/index.ios.js.map +1 -1
  37. package/image-source/index.d.ts +2 -2
  38. package/index.js +0 -1
  39. package/index.js.map +1 -1
  40. package/package.json +1 -1
  41. package/platform/screen/index.d.ts +5 -0
  42. package/platforms/android/widgets-release.aar +0 -0
  43. package/references.d.ts +1 -1
  44. package/timer/index.ios.js +1 -1
  45. package/timer/index.ios.js.map +1 -1
  46. package/ui/action-bar/index.android.js +18 -18
  47. package/ui/action-bar/index.android.js.map +1 -1
  48. package/ui/action-bar/index.ios.js +2 -4
  49. package/ui/action-bar/index.ios.js.map +1 -1
  50. package/ui/animation/index.ios.js +2 -3
  51. package/ui/animation/index.ios.js.map +1 -1
  52. package/ui/button/index.android.js +20 -20
  53. package/ui/button/index.android.js.map +1 -1
  54. package/ui/button/index.ios.d.ts +2 -1
  55. package/ui/button/index.ios.js +28 -10
  56. package/ui/button/index.ios.js.map +1 -1
  57. package/ui/core/control-state-change/index.ios.js +1 -1
  58. package/ui/core/control-state-change/index.ios.js.map +1 -1
  59. package/ui/core/view/index.android.d.ts +6 -6
  60. package/ui/core/view/index.android.js +337 -455
  61. package/ui/core/view/index.android.js.map +1 -1
  62. package/ui/core/view/index.d.ts +18 -5
  63. package/ui/core/view/index.ios.d.ts +10 -2
  64. package/ui/core/view/index.ios.js +99 -46
  65. package/ui/core/view/index.ios.js.map +1 -1
  66. package/ui/core/view/view-common.d.ts +46 -12
  67. package/ui/core/view/view-common.js +28 -0
  68. package/ui/core/view/view-common.js.map +1 -1
  69. package/ui/core/view/view-helper/index.d.ts +5 -0
  70. package/ui/core/view/view-helper/index.ios.d.ts +5 -4
  71. package/ui/core/view/view-helper/index.ios.js +20 -23
  72. package/ui/core/view/view-helper/index.ios.js.map +1 -1
  73. package/ui/core/view/view-helper/view-helper-common.js +7 -0
  74. package/ui/core/view/view-helper/view-helper-common.js.map +1 -1
  75. package/ui/core/view/view-interfaces.d.ts +3 -0
  76. package/ui/core/view-base/index.d.ts +4 -0
  77. package/ui/core/view-base/index.js +4 -0
  78. package/ui/core/view-base/index.js.map +1 -1
  79. package/ui/date-picker/index.android.js +38 -38
  80. package/ui/date-picker/index.android.js.map +1 -1
  81. package/ui/date-picker/index.ios.js +1 -1
  82. package/ui/date-picker/index.ios.js.map +1 -1
  83. package/ui/editable-text-base/index.android.js +34 -34
  84. package/ui/editable-text-base/index.android.js.map +1 -1
  85. package/ui/frame/fragment.transitions.android.d.ts +2 -1
  86. package/ui/frame/fragment.transitions.android.js +106 -104
  87. package/ui/frame/fragment.transitions.android.js.map +1 -1
  88. package/ui/frame/fragment.transitions.d.ts +3 -2
  89. package/ui/frame/index.android.js +57 -4
  90. package/ui/frame/index.android.js.map +1 -1
  91. package/ui/frame/index.ios.d.ts +2 -1
  92. package/ui/frame/index.ios.js +83 -43
  93. package/ui/frame/index.ios.js.map +1 -1
  94. package/ui/gestures/index.android.js +129 -130
  95. package/ui/gestures/index.android.js.map +1 -1
  96. package/ui/gestures/index.ios.js +3 -5
  97. package/ui/gestures/index.ios.js.map +1 -1
  98. package/ui/gestures/touch-manager.js +32 -32
  99. package/ui/gestures/touch-manager.js.map +1 -1
  100. package/ui/image/index.android.js +19 -19
  101. package/ui/image/index.android.js.map +1 -1
  102. package/ui/image-cache/index.android.js +12 -14
  103. package/ui/image-cache/index.android.js.map +1 -1
  104. package/ui/image-cache/index.ios.js +6 -6
  105. package/ui/image-cache/index.ios.js.map +1 -1
  106. package/ui/index.d.ts +2 -1
  107. package/ui/index.js +1 -0
  108. package/ui/index.js.map +1 -1
  109. package/ui/label/index.android.js +4 -1
  110. package/ui/label/index.android.js.map +1 -1
  111. package/ui/label/index.ios.d.ts +2 -1
  112. package/ui/label/index.ios.js +12 -2
  113. package/ui/label/index.ios.js.map +1 -1
  114. package/ui/layouts/flexbox-layout/index.ios.js +3 -6
  115. package/ui/layouts/flexbox-layout/index.ios.js.map +1 -1
  116. package/ui/layouts/index.d.ts +2 -0
  117. package/ui/layouts/index.js +2 -0
  118. package/ui/layouts/index.js.map +1 -1
  119. package/ui/layouts/liquid-glass/index.android.d.ts +5 -0
  120. package/ui/layouts/liquid-glass/index.android.js +8 -0
  121. package/ui/layouts/liquid-glass/index.android.js.map +1 -0
  122. package/ui/layouts/liquid-glass/index.d.ts +10 -0
  123. package/ui/layouts/liquid-glass/index.ios.d.ts +10 -0
  124. package/ui/layouts/liquid-glass/index.ios.js +59 -0
  125. package/ui/layouts/liquid-glass/index.ios.js.map +1 -0
  126. package/ui/layouts/liquid-glass/liquid-glass-common.d.ts +3 -0
  127. package/ui/layouts/liquid-glass/liquid-glass-common.js +4 -0
  128. package/ui/layouts/liquid-glass/liquid-glass-common.js.map +1 -0
  129. package/ui/layouts/liquid-glass-container/index.android.d.ts +3 -0
  130. package/ui/layouts/liquid-glass-container/index.android.js +4 -0
  131. package/ui/layouts/liquid-glass-container/index.android.js.map +1 -0
  132. package/ui/layouts/liquid-glass-container/index.d.ts +3 -0
  133. package/ui/layouts/liquid-glass-container/index.ios.d.ts +14 -0
  134. package/ui/layouts/liquid-glass-container/index.ios.js +121 -0
  135. package/ui/layouts/liquid-glass-container/index.ios.js.map +1 -0
  136. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.d.ts +4 -0
  137. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.js +5 -0
  138. package/ui/layouts/liquid-glass-container/liquid-glass-container-common.js.map +1 -0
  139. package/ui/layouts/stack-layout/index.ios.js +6 -0
  140. package/ui/layouts/stack-layout/index.ios.js.map +1 -1
  141. package/ui/list-picker/index.android.js +35 -35
  142. package/ui/list-picker/index.android.js.map +1 -1
  143. package/ui/list-picker/index.ios.js +2 -2
  144. package/ui/list-picker/index.ios.js.map +1 -1
  145. package/ui/list-view/index.android.d.ts +26 -1
  146. package/ui/list-view/index.android.js +765 -129
  147. package/ui/list-view/index.android.js.map +1 -1
  148. package/ui/list-view/index.d.ts +127 -0
  149. package/ui/list-view/index.ios.d.ts +34 -2
  150. package/ui/list-view/index.ios.js +557 -21
  151. package/ui/list-view/index.ios.js.map +1 -1
  152. package/ui/list-view/list-view-common.d.ts +22 -1
  153. package/ui/list-view/list-view-common.js +85 -0
  154. package/ui/list-view/list-view-common.js.map +1 -1
  155. package/ui/page/index.ios.js +25 -64
  156. package/ui/page/index.ios.js.map +1 -1
  157. package/ui/scroll-view/index.d.ts +1 -1
  158. package/ui/scroll-view/index.ios.d.ts +2 -0
  159. package/ui/scroll-view/index.ios.js +31 -12
  160. package/ui/scroll-view/index.ios.js.map +1 -1
  161. package/ui/scroll-view/scroll-view-common.d.ts +3 -8
  162. package/ui/scroll-view/scroll-view-common.js +4 -4
  163. package/ui/scroll-view/scroll-view-common.js.map +1 -1
  164. package/ui/search-bar/index.android.js +48 -52
  165. package/ui/search-bar/index.android.js.map +1 -1
  166. package/ui/search-bar/index.ios.js +3 -6
  167. package/ui/search-bar/index.ios.js.map +1 -1
  168. package/ui/segmented-bar/index.android.js +56 -58
  169. package/ui/segmented-bar/index.android.js.map +1 -1
  170. package/ui/segmented-bar/index.ios.js +1 -1
  171. package/ui/segmented-bar/index.ios.js.map +1 -1
  172. package/ui/slider/index.android.js +23 -25
  173. package/ui/slider/index.android.js.map +1 -1
  174. package/ui/slider/index.ios.js +2 -2
  175. package/ui/slider/index.ios.js.map +1 -1
  176. package/ui/split-view/index.android.d.ts +4 -0
  177. package/ui/split-view/index.android.js +4 -0
  178. package/ui/split-view/index.android.js.map +1 -0
  179. package/ui/split-view/index.d.ts +11 -0
  180. package/ui/split-view/index.ios.d.ts +39 -0
  181. package/ui/split-view/index.ios.js +368 -0
  182. package/ui/split-view/index.ios.js.map +1 -0
  183. package/ui/split-view/split-view-common.d.ts +51 -0
  184. package/ui/split-view/split-view-common.js +111 -0
  185. package/ui/split-view/split-view-common.js.map +1 -0
  186. package/ui/styling/background-common.d.ts +4 -4
  187. package/ui/styling/background-common.js +8 -8
  188. package/ui/styling/background-common.js.map +1 -1
  189. package/ui/styling/background.d.ts +0 -3
  190. package/ui/styling/background.ios.d.ts +2 -1
  191. package/ui/styling/background.ios.js +47 -38
  192. package/ui/styling/background.ios.js.map +1 -1
  193. package/ui/styling/css-utils.d.ts +1 -0
  194. package/ui/styling/css-utils.js +15 -4
  195. package/ui/styling/css-utils.js.map +1 -1
  196. package/ui/styling/style/index.d.ts +3 -1
  197. package/ui/styling/style/index.js.map +1 -1
  198. package/ui/styling/style-properties.d.ts +1 -0
  199. package/ui/styling/style-properties.js +30 -11
  200. package/ui/styling/style-properties.js.map +1 -1
  201. package/ui/switch/index.android.js +18 -18
  202. package/ui/switch/index.android.js.map +1 -1
  203. package/ui/switch/index.ios.d.ts +1 -0
  204. package/ui/switch/index.ios.js +62 -12
  205. package/ui/switch/index.ios.js.map +1 -1
  206. package/ui/tab-view/index.android.js +185 -187
  207. package/ui/tab-view/index.android.js.map +1 -1
  208. package/ui/tab-view/index.d.ts +17 -1
  209. package/ui/tab-view/index.ios.d.ts +13 -5
  210. package/ui/tab-view/index.ios.js +253 -49
  211. package/ui/tab-view/index.ios.js.map +1 -1
  212. package/ui/tab-view/tab-view-common.d.ts +14 -0
  213. package/ui/tab-view/tab-view-common.js +15 -0
  214. package/ui/tab-view/tab-view-common.js.map +1 -1
  215. package/ui/text-base/index.android.d.ts +2 -1
  216. package/ui/text-base/index.android.js +133 -101
  217. package/ui/text-base/index.android.js.map +1 -1
  218. package/ui/text-base/index.d.ts +5 -0
  219. package/ui/text-base/index.ios.js +12 -18
  220. package/ui/text-base/index.ios.js.map +1 -1
  221. package/ui/text-base/text-base-common.d.ts +2 -1
  222. package/ui/text-base/text-base-common.js +1 -0
  223. package/ui/text-base/text-base-common.js.map +1 -1
  224. package/ui/text-field/index.ios.d.ts +2 -1
  225. package/ui/text-field/index.ios.js +9 -5
  226. package/ui/text-field/index.ios.js.map +1 -1
  227. package/ui/text-view/index.ios.d.ts +2 -1
  228. package/ui/text-view/index.ios.js +12 -7
  229. package/ui/text-view/index.ios.js.map +1 -1
  230. package/ui/time-picker/index.android.js +21 -21
  231. package/ui/time-picker/index.android.js.map +1 -1
  232. package/ui/time-picker/index.ios.js +1 -1
  233. package/ui/time-picker/index.ios.js.map +1 -1
  234. package/ui/transition/fade-transition.ios.js +5 -6
  235. package/ui/transition/fade-transition.ios.js.map +1 -1
  236. package/ui/transition/modal-transition.ios.js +19 -26
  237. package/ui/transition/modal-transition.ios.js.map +1 -1
  238. package/ui/transition/page-transition.android.js +3 -12
  239. package/ui/transition/page-transition.android.js.map +1 -1
  240. package/ui/transition/page-transition.ios.js +19 -25
  241. package/ui/transition/page-transition.ios.js.map +1 -1
  242. package/ui/transition/slide-transition.ios.js +5 -6
  243. package/ui/transition/slide-transition.ios.js.map +1 -1
  244. package/ui/web-view/index.android.js +58 -62
  245. package/ui/web-view/index.android.js.map +1 -1
  246. package/ui/web-view/index.ios.js +18 -18
  247. package/ui/web-view/index.ios.js.map +1 -1
  248. package/utils/common.d.ts +3 -1
  249. package/utils/common.js +9 -3
  250. package/utils/common.js.map +1 -1
  251. package/utils/index.d.ts +6 -0
  252. package/utils/layout-helper/index.android.d.ts +1 -0
  253. package/utils/layout-helper/index.android.js +9 -0
  254. package/utils/layout-helper/index.android.js.map +1 -1
  255. package/utils/layout-helper/index.d.ts +5 -0
  256. package/utils/layout-helper/index.ios.d.ts +1 -0
  257. package/utils/layout-helper/index.ios.js +4 -0
  258. package/utils/layout-helper/index.ios.js.map +1 -1
  259. package/utils/native-helper-for-android.d.ts +14 -3
  260. package/utils/native-helper-for-android.js +57 -54
  261. package/utils/native-helper-for-android.js.map +1 -1
  262. package/utils/native-helper.android.d.ts +3 -3
  263. package/utils/native-helper.android.js +2 -2
  264. package/utils/native-helper.android.js.map +1 -1
  265. package/utils/native-helper.d.ts +22 -5
  266. package/utils/native-helper.ios.js +20 -20
  267. package/utils/native-helper.ios.js.map +1 -1
@@ -1,3 +1,4 @@
1
+ import { CoreTypes } from '../core-types';
1
2
  import { profile } from '../profiling';
2
3
  import { SDK_VERSION } from '../utils/constants';
3
4
  import { android as androidUtils } from '../utils';
@@ -5,226 +6,212 @@ import { ApplicationCommon, initializeSdkVersionClass } from './application-comm
5
6
  import { Observable } from '../data/observable';
6
7
  import { Trace } from '../trace';
7
8
  import { CommonA11YServiceEnabledObservable, SharedA11YObservable, notifyAccessibilityFocusState, a11yServiceClasses, a11yServiceDisabledClass, a11yServiceEnabledClass, fontScaleCategoryClasses, fontScaleExtraLargeCategoryClass, fontScaleExtraSmallCategoryClass, fontScaleMediumCategoryClass, getCurrentA11YServiceClass, getCurrentFontScaleCategory, getCurrentFontScaleClass, getFontScaleCssClasses, setCurrentA11YServiceClass, setCurrentFontScaleCategory, setCurrentFontScaleClass, setFontScaleCssClasses, setFontScale, getFontScale, setInitFontScale, getFontScaleCategory, setInitAccessibilityCssHelper, FontScaleCategory, getClosestValidFontScale, VALID_FONT_SCALES, AccessibilityRole, AccessibilityState, AndroidAccessibilityEvent, isA11yEnabled, setA11yEnabled, } from '../accessibility/accessibility-common';
8
- import { androidGetForegroundActivity, androidGetStartActivity, androidPendingReceiverRegistrations, androidRegisterBroadcastReceiver, androidRegisteredReceivers, androidSetForegroundActivity, androidSetStartActivity, androidUnregisterBroadcastReceiver, applyContentDescription } from './helpers';
9
+ import { androidGetForegroundActivity, androidGetStartActivity, androidSetForegroundActivity, androidSetStartActivity, applyContentDescription } from './helpers';
9
10
  import { getImageFetcher, getNativeApp, getRootView, initImageCache, setA11yUpdatePropertiesCallback, setApplicationPropertiesCallback, setAppMainEntry, setNativeApp, setRootView, setToggleApplicationEventListenersCallback } from './helpers-common';
10
11
  import { getNativeScriptGlobals } from '../globals/global-utils';
12
+ import lazy from '../utils/lazy';
11
13
  let NativeScriptLifecycleCallbacks_;
12
14
  function initNativeScriptLifecycleCallbacks() {
13
15
  if (NativeScriptLifecycleCallbacks_) {
14
16
  return NativeScriptLifecycleCallbacks_;
15
17
  }
16
- var NativeScriptLifecycleCallbacksImpl = /** @class */ (function (_super) {
17
- __extends(NativeScriptLifecycleCallbacksImpl, _super);
18
- function NativeScriptLifecycleCallbacksImpl() {
19
- var _this = _super !== null && _super.apply(this, arguments) || this;
20
- _this.activitiesCount = 0;
21
- return _this;
22
- }
23
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityCreated = function (activity, savedInstanceState) {
24
- // console.log('NativeScriptLifecycleCallbacks onActivityCreated');
25
- this.setThemeOnLaunch(activity);
26
- if (!Application.android.startActivity) {
27
- Application.android.setStartActivity(activity);
18
+ var NativeScriptLifecycleCallbacksImpl = (function (_super) {
19
+ __extends(NativeScriptLifecycleCallbacksImpl, _super);
20
+ function NativeScriptLifecycleCallbacksImpl() {
21
+ var _this = _super !== null && _super.apply(this, arguments) || this;
22
+ _this.activitiesCount = 0;
23
+ return _this;
28
24
  }
29
- if (!this.nativescriptActivity && 'isNativeScriptActivity' in activity) {
30
- this.nativescriptActivity = activity;
31
- }
32
- this.notifyActivityCreated(activity, savedInstanceState);
33
- if (Application.hasListeners(Application.displayedEvent)) {
34
- this.subscribeForGlobalLayout(activity);
35
- }
36
- };
37
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityDestroyed = function (activity) {
38
- // console.log('NativeScriptLifecycleCallbacks onActivityDestroyed');
39
- if (activity === Application.android.foregroundActivity) {
40
- Application.android.setForegroundActivity(undefined);
41
- }
42
- if (activity === this.nativescriptActivity) {
43
- this.nativescriptActivity = undefined;
44
- }
45
- if (activity === Application.android.startActivity) {
46
- Application.android.setStartActivity(undefined);
47
- // Fallback for start activity when it is destroyed but we have a known nativescript activity
48
- if (this.nativescriptActivity) {
49
- Application.android.setStartActivity(this.nativescriptActivity);
25
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityCreated = function (activity, savedInstanceState) {
26
+ this.setThemeOnLaunch(activity);
27
+ if (!Application.android.startActivity) {
28
+ Application.android.setStartActivity(activity);
50
29
  }
51
- }
52
- Application.android.notify({
53
- eventName: Application.android.activityDestroyedEvent,
54
- object: Application.android,
55
- activity: activity,
56
- });
57
- // TODO: This is a temporary workaround to force the V8's Garbage Collector, which will force the related Java Object to be collected.
58
- gc();
59
- };
60
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityPaused = function (activity) {
61
- // console.log('NativeScriptLifecycleCallbacks onActivityPaused');
62
- if ('isNativeScriptActivity' in activity) {
63
- Application.setSuspended(true, {
64
- // todo: deprecate event.android in favor of event.activity
65
- android: activity,
30
+ if (!this.nativescriptActivity && "isNativeScriptActivity" in activity) {
31
+ this.nativescriptActivity = activity;
32
+ }
33
+ this.notifyActivityCreated(activity, savedInstanceState);
34
+ if (Application.hasListeners(Application.displayedEvent)) {
35
+ this.subscribeForGlobalLayout(activity);
36
+ }
37
+ };
38
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityDestroyed = function (activity) {
39
+ if (activity === Application.android.foregroundActivity) {
40
+ Application.android.setForegroundActivity(undefined);
41
+ }
42
+ if (activity === this.nativescriptActivity) {
43
+ this.nativescriptActivity = undefined;
44
+ }
45
+ if (activity === Application.android.startActivity) {
46
+ Application.android.setStartActivity(undefined);
47
+ if (this.nativescriptActivity) {
48
+ Application.android.setStartActivity(this.nativescriptActivity);
49
+ }
50
+ }
51
+ Application.android.notify({
52
+ eventName: Application.android.activityDestroyedEvent,
53
+ object: Application.android,
66
54
  activity: activity,
67
55
  });
68
- }
69
- Application.android.notify({
70
- eventName: Application.android.activityPausedEvent,
71
- object: Application.android,
72
- activity: activity,
73
- });
74
- };
75
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityResumed = function (activity) {
76
- // console.log('NativeScriptLifecycleCallbacks onActivityResumed');
77
- Application.android.setForegroundActivity(activity);
78
- // NOTE: setSuspended(false) is called in frame/index.android.ts inside onPostResume
79
- // This is done to ensure proper timing for the event to be raised
80
- Application.android.notify({
81
- eventName: Application.android.activityResumedEvent,
82
- object: Application.android,
83
- activity: activity,
84
- });
85
- };
86
- NativeScriptLifecycleCallbacksImpl.prototype.onActivitySaveInstanceState = function (activity, bundle) {
87
- // console.log('NativeScriptLifecycleCallbacks onActivitySaveInstanceState');
88
- Application.android.notify({
89
- eventName: Application.android.saveActivityStateEvent,
90
- object: Application.android,
91
- activity: activity,
92
- bundle: bundle,
93
- });
94
- };
95
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityStarted = function (activity) {
96
- // console.log('NativeScriptLifecycleCallbacks onActivityStarted');
97
- this.activitiesCount++;
98
- if (this.activitiesCount === 1) {
99
- Application.android.setInBackground(false, {
100
- // todo: deprecate event.android in favor of event.activity
101
- android: activity,
56
+ gc();
57
+ };
58
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityPaused = function (activity) {
59
+ if ("isNativeScriptActivity" in activity) {
60
+ Application.setSuspended(true, {
61
+ android: activity,
62
+ activity: activity,
63
+ });
64
+ }
65
+ Application.android.notify({
66
+ eventName: Application.android.activityPausedEvent,
67
+ object: Application.android,
102
68
  activity: activity,
103
69
  });
104
- }
105
- Application.android.notify({
106
- eventName: Application.android.activityStartedEvent,
107
- object: Application.android,
108
- activity: activity,
109
- });
110
- };
111
- NativeScriptLifecycleCallbacksImpl.prototype.onActivityStopped = function (activity) {
112
- // console.log('NativeScriptLifecycleCallbacks onActivityStopped');
113
- this.activitiesCount--;
114
- if (this.activitiesCount === 0) {
115
- Application.android.setInBackground(true, {
116
- // todo: deprecate event.android in favor of event.activity
117
- android: activity,
70
+ };
71
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityResumed = function (activity) {
72
+ Application.android.setForegroundActivity(activity);
73
+ Application.android.notify({
74
+ eventName: Application.android.activityResumedEvent,
75
+ object: Application.android,
118
76
  activity: activity,
119
77
  });
120
- }
121
- Application.android.notify({
122
- eventName: Application.android.activityStoppedEvent,
123
- object: Application.android,
124
- activity: activity,
125
- });
126
- };
127
- NativeScriptLifecycleCallbacksImpl.prototype.setThemeOnLaunch = function (activity) {
128
- // Set app theme after launch screen was used during startup
129
- var activityInfo = activity.getPackageManager().getActivityInfo(activity.getComponentName(), android.content.pm.PackageManager.GET_META_DATA);
130
- if (activityInfo.metaData) {
131
- var setThemeOnLaunch = activityInfo.metaData.getInt('SET_THEME_ON_LAUNCH', -1);
132
- if (setThemeOnLaunch !== -1) {
133
- activity.setTheme(setThemeOnLaunch);
78
+ };
79
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivitySaveInstanceState = function (activity, bundle) {
80
+ Application.android.notify({
81
+ eventName: Application.android.saveActivityStateEvent,
82
+ object: Application.android,
83
+ activity: activity,
84
+ bundle: bundle,
85
+ });
86
+ };
87
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityStarted = function (activity) {
88
+ this.activitiesCount++;
89
+ if (this.activitiesCount === 1) {
90
+ Application.android.setInBackground(false, {
91
+ android: activity,
92
+ activity: activity,
93
+ });
134
94
  }
135
- }
136
- };
137
- NativeScriptLifecycleCallbacksImpl.prototype.notifyActivityCreated = function (activity, bundle) {
138
- Application.android.notify({
139
- eventName: Application.android.activityCreatedEvent,
140
- object: Application.android,
141
- activity: activity,
142
- bundle: bundle,
143
- });
144
- };
145
- NativeScriptLifecycleCallbacksImpl.prototype.subscribeForGlobalLayout = function (activity) {
146
- var rootView = activity.getWindow().getDecorView().getRootView();
147
- // store the listener not to trigger GC collection before collecting the method
148
- global.onGlobalLayoutListener = new android.view.ViewTreeObserver.OnGlobalLayoutListener({
149
- onGlobalLayout: function () {
150
- Application.android.notify({
151
- eventName: Application.displayedEvent,
152
- object: Application,
153
- android: Application.android,
95
+ Application.android.notify({
96
+ eventName: Application.android.activityStartedEvent,
97
+ object: Application.android,
98
+ activity: activity,
99
+ });
100
+ };
101
+ NativeScriptLifecycleCallbacksImpl.prototype.onActivityStopped = function (activity) {
102
+ this.activitiesCount--;
103
+ if (this.activitiesCount === 0) {
104
+ Application.android.setInBackground(true, {
105
+ android: activity,
154
106
  activity: activity,
155
107
  });
156
- var viewTreeObserver = rootView.getViewTreeObserver();
157
- viewTreeObserver.removeOnGlobalLayoutListener(global.onGlobalLayoutListener);
158
- },
159
- });
160
- rootView.getViewTreeObserver().addOnGlobalLayoutListener(global.onGlobalLayoutListener);
161
- };
162
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
163
- __decorate([
164
- profile,
165
- __metadata("design:type", Function),
166
- __metadata("design:paramtypes", [typeof (_c = typeof androidx !== "undefined" && (_a = androidx.appcompat) !== void 0 && (_b = _a.app) !== void 0 && _b.AppCompatActivity) === "function" ? _c : Object, typeof (_e = typeof android !== "undefined" && (_d = android.os) !== void 0 && _d.Bundle) === "function" ? _e : Object]),
167
- __metadata("design:returntype", void 0)
168
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityCreated", null);
169
- __decorate([
170
- profile,
171
- __metadata("design:type", Function),
172
- __metadata("design:paramtypes", [typeof (_h = typeof androidx !== "undefined" && (_f = androidx.appcompat) !== void 0 && (_g = _f.app) !== void 0 && _g.AppCompatActivity) === "function" ? _h : Object]),
173
- __metadata("design:returntype", void 0)
174
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityDestroyed", null);
175
- __decorate([
176
- profile,
177
- __metadata("design:type", Function),
178
- __metadata("design:paramtypes", [typeof (_l = typeof androidx !== "undefined" && (_j = androidx.appcompat) !== void 0 && (_k = _j.app) !== void 0 && _k.AppCompatActivity) === "function" ? _l : Object]),
179
- __metadata("design:returntype", void 0)
180
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityPaused", null);
181
- __decorate([
182
- profile,
183
- __metadata("design:type", Function),
184
- __metadata("design:paramtypes", [typeof (_p = typeof androidx !== "undefined" && (_m = androidx.appcompat) !== void 0 && (_o = _m.app) !== void 0 && _o.AppCompatActivity) === "function" ? _p : Object]),
185
- __metadata("design:returntype", void 0)
186
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityResumed", null);
187
- __decorate([
188
- profile,
189
- __metadata("design:type", Function),
190
- __metadata("design:paramtypes", [typeof (_s = typeof androidx !== "undefined" && (_q = androidx.appcompat) !== void 0 && (_r = _q.app) !== void 0 && _r.AppCompatActivity) === "function" ? _s : Object, typeof (_u = typeof android !== "undefined" && (_t = android.os) !== void 0 && _t.Bundle) === "function" ? _u : Object]),
191
- __metadata("design:returntype", void 0)
192
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivitySaveInstanceState", null);
193
- __decorate([
194
- profile,
195
- __metadata("design:type", Function),
196
- __metadata("design:paramtypes", [typeof (_x = typeof androidx !== "undefined" && (_v = androidx.appcompat) !== void 0 && (_w = _v.app) !== void 0 && _w.AppCompatActivity) === "function" ? _x : Object]),
197
- __metadata("design:returntype", void 0)
198
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityStarted", null);
199
- __decorate([
200
- profile,
201
- __metadata("design:type", Function),
202
- __metadata("design:paramtypes", [typeof (_0 = typeof androidx !== "undefined" && (_y = androidx.appcompat) !== void 0 && (_z = _y.app) !== void 0 && _z.AppCompatActivity) === "function" ? _0 : Object]),
203
- __metadata("design:returntype", void 0)
204
- ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityStopped", null);
205
- __decorate([
206
- profile,
207
- __metadata("design:type", Function),
208
- __metadata("design:paramtypes", [typeof (_3 = typeof androidx !== "undefined" && (_1 = androidx.appcompat) !== void 0 && (_2 = _1.app) !== void 0 && _2.AppCompatActivity) === "function" ? _3 : Object]),
209
- __metadata("design:returntype", void 0)
210
- ], NativeScriptLifecycleCallbacksImpl.prototype, "setThemeOnLaunch", null);
211
- __decorate([
212
- profile,
213
- __metadata("design:type", Function),
214
- __metadata("design:paramtypes", [typeof (_6 = typeof androidx !== "undefined" && (_4 = androidx.appcompat) !== void 0 && (_5 = _4.app) !== void 0 && _5.AppCompatActivity) === "function" ? _6 : Object, typeof (_8 = typeof android !== "undefined" && (_7 = android.os) !== void 0 && _7.Bundle) === "function" ? _8 : Object]),
215
- __metadata("design:returntype", void 0)
216
- ], NativeScriptLifecycleCallbacksImpl.prototype, "notifyActivityCreated", null);
217
- __decorate([
218
- profile,
219
- __metadata("design:type", Function),
220
- __metadata("design:paramtypes", [typeof (_11 = typeof androidx !== "undefined" && (_9 = androidx.appcompat) !== void 0 && (_10 = _9.app) !== void 0 && _10.AppCompatActivity) === "function" ? _11 : Object]),
221
- __metadata("design:returntype", void 0)
222
- ], NativeScriptLifecycleCallbacksImpl.prototype, "subscribeForGlobalLayout", null);
223
- NativeScriptLifecycleCallbacksImpl = __decorate([
224
- JavaProxy('org.nativescript.NativeScriptLifecycleCallbacks')
225
- ], NativeScriptLifecycleCallbacksImpl);
226
- return NativeScriptLifecycleCallbacksImpl;
227
- }(android.app.Application.ActivityLifecycleCallbacks));
108
+ }
109
+ Application.android.notify({
110
+ eventName: Application.android.activityStoppedEvent,
111
+ object: Application.android,
112
+ activity: activity,
113
+ });
114
+ // This is done to ensure proper timing for the event to be raised
115
+ };
116
+ NativeScriptLifecycleCallbacksImpl.prototype.setThemeOnLaunch = function (activity) {
117
+ var activityInfo = activity.getPackageManager().getActivityInfo(activity.getComponentName(), android.content.pm.PackageManager.GET_META_DATA);
118
+ if (activityInfo.metaData) {
119
+ var setThemeOnLaunch = activityInfo.metaData.getInt("SET_THEME_ON_LAUNCH", -1);
120
+ if (setThemeOnLaunch !== -1) {
121
+ activity.setTheme(setThemeOnLaunch);
122
+ }
123
+ }
124
+ };
125
+ NativeScriptLifecycleCallbacksImpl.prototype.notifyActivityCreated = function (activity, bundle) {
126
+ Application.android.notify({
127
+ eventName: Application.android.activityCreatedEvent,
128
+ object: Application.android,
129
+ activity: activity,
130
+ bundle: bundle,
131
+ });
132
+ };
133
+ NativeScriptLifecycleCallbacksImpl.prototype.subscribeForGlobalLayout = function (activity) {
134
+ var rootView = activity.getWindow().getDecorView().getRootView();
135
+ global.onGlobalLayoutListener = new android.view.ViewTreeObserver.OnGlobalLayoutListener({
136
+ onGlobalLayout: function () {
137
+ Application.android.notify({
138
+ eventName: Application.displayedEvent,
139
+ object: Application,
140
+ android: Application.android,
141
+ activity: activity,
142
+ });
143
+ var viewTreeObserver = rootView.getViewTreeObserver();
144
+ viewTreeObserver.removeOnGlobalLayoutListener(global.onGlobalLayoutListener);
145
+ },
146
+ });
147
+ rootView.getViewTreeObserver().addOnGlobalLayoutListener(global.onGlobalLayoutListener);
148
+ };
149
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
150
+ __decorate([
151
+ profile,
152
+ __metadata("design:type", Function),
153
+ __metadata("design:paramtypes", [typeof (_c = typeof androidx !== "undefined" && (_a = androidx.appcompat) !== void 0 && (_b = _a.app) !== void 0 && _b.AppCompatActivity) === "function" ? _c : Object, typeof (_e = typeof android !== "undefined" && (_d = android.os) !== void 0 && _d.Bundle) === "function" ? _e : Object]),
154
+ __metadata("design:returntype", void 0)
155
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityCreated", null);
156
+ __decorate([
157
+ profile,
158
+ __metadata("design:type", Function),
159
+ __metadata("design:paramtypes", [typeof (_h = typeof androidx !== "undefined" && (_f = androidx.appcompat) !== void 0 && (_g = _f.app) !== void 0 && _g.AppCompatActivity) === "function" ? _h : Object]),
160
+ __metadata("design:returntype", void 0)
161
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityDestroyed", null);
162
+ __decorate([
163
+ profile,
164
+ __metadata("design:type", Function),
165
+ __metadata("design:paramtypes", [typeof (_l = typeof androidx !== "undefined" && (_j = androidx.appcompat) !== void 0 && (_k = _j.app) !== void 0 && _k.AppCompatActivity) === "function" ? _l : Object]),
166
+ __metadata("design:returntype", void 0)
167
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityPaused", null);
168
+ __decorate([
169
+ profile,
170
+ __metadata("design:type", Function),
171
+ __metadata("design:paramtypes", [typeof (_p = typeof androidx !== "undefined" && (_m = androidx.appcompat) !== void 0 && (_o = _m.app) !== void 0 && _o.AppCompatActivity) === "function" ? _p : Object]),
172
+ __metadata("design:returntype", void 0)
173
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityResumed", null);
174
+ __decorate([
175
+ profile,
176
+ __metadata("design:type", Function),
177
+ __metadata("design:paramtypes", [typeof (_s = typeof androidx !== "undefined" && (_q = androidx.appcompat) !== void 0 && (_r = _q.app) !== void 0 && _r.AppCompatActivity) === "function" ? _s : Object, typeof (_u = typeof android !== "undefined" && (_t = android.os) !== void 0 && _t.Bundle) === "function" ? _u : Object]),
178
+ __metadata("design:returntype", void 0)
179
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivitySaveInstanceState", null);
180
+ __decorate([
181
+ profile,
182
+ __metadata("design:type", Function),
183
+ __metadata("design:paramtypes", [typeof (_x = typeof androidx !== "undefined" && (_v = androidx.appcompat) !== void 0 && (_w = _v.app) !== void 0 && _w.AppCompatActivity) === "function" ? _x : Object]),
184
+ __metadata("design:returntype", void 0)
185
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityStarted", null);
186
+ __decorate([
187
+ profile,
188
+ __metadata("design:type", Function),
189
+ __metadata("design:paramtypes", [typeof (_0 = typeof androidx !== "undefined" && (_y = androidx.appcompat) !== void 0 && (_z = _y.app) !== void 0 && _z.AppCompatActivity) === "function" ? _0 : Object]),
190
+ __metadata("design:returntype", void 0)
191
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "onActivityStopped", null);
192
+ __decorate([
193
+ profile,
194
+ __metadata("design:type", Function),
195
+ __metadata("design:paramtypes", [typeof (_3 = typeof androidx !== "undefined" && (_1 = androidx.appcompat) !== void 0 && (_2 = _1.app) !== void 0 && _2.AppCompatActivity) === "function" ? _3 : Object]),
196
+ __metadata("design:returntype", void 0)
197
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "setThemeOnLaunch", null);
198
+ __decorate([
199
+ profile,
200
+ __metadata("design:type", Function),
201
+ __metadata("design:paramtypes", [typeof (_6 = typeof androidx !== "undefined" && (_4 = androidx.appcompat) !== void 0 && (_5 = _4.app) !== void 0 && _5.AppCompatActivity) === "function" ? _6 : Object, typeof (_8 = typeof android !== "undefined" && (_7 = android.os) !== void 0 && _7.Bundle) === "function" ? _8 : Object]),
202
+ __metadata("design:returntype", void 0)
203
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "notifyActivityCreated", null);
204
+ __decorate([
205
+ profile,
206
+ __metadata("design:type", Function),
207
+ __metadata("design:paramtypes", [typeof (_11 = typeof androidx !== "undefined" && (_9 = androidx.appcompat) !== void 0 && (_10 = _9.app) !== void 0 && _10.AppCompatActivity) === "function" ? _11 : Object]),
208
+ __metadata("design:returntype", void 0)
209
+ ], NativeScriptLifecycleCallbacksImpl.prototype, "subscribeForGlobalLayout", null);
210
+ NativeScriptLifecycleCallbacksImpl = __decorate([
211
+ JavaProxy("org.nativescript.NativeScriptLifecycleCallbacks")
212
+ ], NativeScriptLifecycleCallbacksImpl);
213
+ return NativeScriptLifecycleCallbacksImpl;
214
+ }(android.app.Application.ActivityLifecycleCallbacks));
228
215
  NativeScriptLifecycleCallbacks_ = NativeScriptLifecycleCallbacksImpl;
229
216
  return NativeScriptLifecycleCallbacks_;
230
217
  }
@@ -233,53 +220,69 @@ function initNativeScriptComponentCallbacks() {
233
220
  if (NativeScriptComponentCallbacks_) {
234
221
  return NativeScriptComponentCallbacks_;
235
222
  }
236
- var NativeScriptComponentCallbacksImpl = /** @class */ (function (_super) {
237
- __extends(NativeScriptComponentCallbacksImpl, _super);
238
- function NativeScriptComponentCallbacksImpl() {
239
- return _super !== null && _super.apply(this, arguments) || this;
240
- }
241
- NativeScriptComponentCallbacksImpl.prototype.onLowMemory = function () {
242
- gc();
243
- java.lang.System.gc();
244
- Application.notify({
245
- eventName: Application.lowMemoryEvent,
246
- object: Application,
247
- android: this,
248
- });
249
- };
250
- NativeScriptComponentCallbacksImpl.prototype.onTrimMemory = function (level) {
251
- // TODO: This is skipped for now, test carefully for OutOfMemory exceptions
252
- };
253
- NativeScriptComponentCallbacksImpl.prototype.onConfigurationChanged = function (newConfiguration) {
254
- Application.android.onConfigurationChanged(newConfiguration);
255
- };
256
- var _a, _b, _c;
257
- __decorate([
258
- profile,
259
- __metadata("design:type", Function),
260
- __metadata("design:paramtypes", []),
261
- __metadata("design:returntype", void 0)
262
- ], NativeScriptComponentCallbacksImpl.prototype, "onLowMemory", null);
263
- __decorate([
264
- profile,
265
- __metadata("design:type", Function),
266
- __metadata("design:paramtypes", [Number]),
267
- __metadata("design:returntype", void 0)
268
- ], NativeScriptComponentCallbacksImpl.prototype, "onTrimMemory", null);
269
- __decorate([
270
- profile,
271
- __metadata("design:type", Function),
272
- __metadata("design:paramtypes", [typeof (_c = typeof android !== "undefined" && (_a = android.content) !== void 0 && (_b = _a.res) !== void 0 && _b.Configuration) === "function" ? _c : Object]),
273
- __metadata("design:returntype", void 0)
274
- ], NativeScriptComponentCallbacksImpl.prototype, "onConfigurationChanged", null);
275
- NativeScriptComponentCallbacksImpl = __decorate([
276
- JavaProxy('org.nativescript.NativeScriptComponentCallbacks')
277
- ], NativeScriptComponentCallbacksImpl);
278
- return NativeScriptComponentCallbacksImpl;
279
- }(android.content.ComponentCallbacks2));
223
+ var NativeScriptComponentCallbacksImpl = (function (_super) {
224
+ __extends(NativeScriptComponentCallbacksImpl, _super);
225
+ function NativeScriptComponentCallbacksImpl() {
226
+ return _super !== null && _super.apply(this, arguments) || this;
227
+ }
228
+ NativeScriptComponentCallbacksImpl.prototype.onLowMemory = function () {
229
+ gc();
230
+ java.lang.System.gc();
231
+ Application.notify({
232
+ eventName: Application.lowMemoryEvent,
233
+ object: Application,
234
+ android: this,
235
+ });
236
+ };
237
+ NativeScriptComponentCallbacksImpl.prototype.onTrimMemory = function (level) {
238
+ };
239
+ NativeScriptComponentCallbacksImpl.prototype.onConfigurationChanged = function (newConfiguration) {
240
+ Application.android.onConfigurationChanged(newConfiguration);
241
+ };
242
+ var _a, _b, _c;
243
+ __decorate([
244
+ profile,
245
+ __metadata("design:type", Function),
246
+ __metadata("design:paramtypes", []),
247
+ __metadata("design:returntype", void 0)
248
+ ], NativeScriptComponentCallbacksImpl.prototype, "onLowMemory", null);
249
+ __decorate([
250
+ profile,
251
+ __metadata("design:type", Function),
252
+ __metadata("design:paramtypes", [Number]),
253
+ __metadata("design:returntype", void 0)
254
+ ], NativeScriptComponentCallbacksImpl.prototype, "onTrimMemory", null);
255
+ __decorate([
256
+ profile,
257
+ __metadata("design:type", Function),
258
+ __metadata("design:paramtypes", [typeof (_c = typeof android !== "undefined" && (_a = android.content) !== void 0 && (_b = _a.res) !== void 0 && _b.Configuration) === "function" ? _c : Object]),
259
+ __metadata("design:returntype", void 0)
260
+ ], NativeScriptComponentCallbacksImpl.prototype, "onConfigurationChanged", null);
261
+ NativeScriptComponentCallbacksImpl = __decorate([
262
+ JavaProxy("org.nativescript.NativeScriptComponentCallbacks")
263
+ ], NativeScriptComponentCallbacksImpl);
264
+ return NativeScriptComponentCallbacksImpl;
265
+ }(android.content.ComponentCallbacks2));
280
266
  NativeScriptComponentCallbacks_ = NativeScriptComponentCallbacksImpl;
281
267
  return NativeScriptComponentCallbacks_;
282
268
  }
269
+ const BroadcastReceiver = lazy(() => {
270
+ var BroadcastReceiverImpl = (function (_super) {
271
+ __extends(BroadcastReceiverImpl, _super);
272
+ function BroadcastReceiverImpl(onReceiveCallback) {
273
+ var _this = _super.call(this) || this;
274
+ _this._onReceiveCallback = onReceiveCallback;
275
+ return global.__native(_this);
276
+ }
277
+ BroadcastReceiverImpl.prototype.onReceive = function (context, intent) {
278
+ if (this._onReceiveCallback) {
279
+ this._onReceiveCallback(context, intent);
280
+ }
281
+ };
282
+ return BroadcastReceiverImpl;
283
+ }(android.content.BroadcastReceiver));
284
+ return BroadcastReceiverImpl;
285
+ });
283
286
  export class AndroidApplication extends ApplicationCommon {
284
287
  constructor() {
285
288
  super(...arguments);
@@ -294,6 +297,10 @@ export class AndroidApplication extends ApplicationCommon {
294
297
  this.activityBackPressedEvent = AndroidApplication.activityBackPressedEvent;
295
298
  this.activityNewIntentEvent = AndroidApplication.activityNewIntentEvent;
296
299
  this.activityRequestPermissionsEvent = AndroidApplication.activityRequestPermissionsEvent;
300
+ this._registeredReceivers = {};
301
+ this._registeredReceiversById = {};
302
+ this._nextReceiverId = 1;
303
+ this._pendingReceiverRegistrations = [];
297
304
  }
298
305
  init(nativeApp) {
299
306
  if (this.nativeApp === nativeApp) {
@@ -314,12 +321,13 @@ export class AndroidApplication extends ApplicationCommon {
314
321
  this._registerPendingReceivers();
315
322
  }
316
323
  _registerPendingReceivers() {
317
- androidPendingReceiverRegistrations.forEach((func) => func(this.context));
318
- androidPendingReceiverRegistrations.length = 0;
324
+ this._pendingReceiverRegistrations.forEach((info) => this._registerReceiver(this.context, info.intent, info.callback, info.flags, info.id));
325
+ this._pendingReceiverRegistrations.length = 0;
319
326
  }
320
327
  onConfigurationChanged(configuration) {
321
328
  this.setOrientation(this.getOrientationValue(configuration));
322
329
  this.setSystemAppearance(this.getSystemAppearanceValue(configuration));
330
+ this.setLayoutDirection(this.getLayoutDirectionValue(configuration));
323
331
  }
324
332
  getNativeApplication() {
325
333
  let nativeApp = this.nativeApp;
@@ -376,13 +384,68 @@ export class AndroidApplication extends ApplicationCommon {
376
384
  // RECEIVER_NOT_EXPORTED (4)
377
385
  // RECEIVER_VISIBLE_TO_INSTANT_APPS (1)
378
386
  registerBroadcastReceiver(intentFilter, onReceiveCallback, flags = 2) {
379
- androidRegisterBroadcastReceiver(intentFilter, onReceiveCallback, flags);
387
+ const receiverId = this._nextReceiverId++;
388
+ if (this.context) {
389
+ this._registerReceiver(this.context, intentFilter, onReceiveCallback, flags, receiverId);
390
+ }
391
+ else {
392
+ this._pendingReceiverRegistrations.push({
393
+ intent: intentFilter,
394
+ callback: onReceiveCallback,
395
+ id: receiverId,
396
+ flags,
397
+ });
398
+ }
399
+ let removed = false;
400
+ return () => {
401
+ if (removed) {
402
+ return;
403
+ }
404
+ removed = true;
405
+ if (this._registeredReceiversById[receiverId]) {
406
+ const receiverInfo = this._registeredReceiversById[receiverId];
407
+ this.context.unregisterReceiver(receiverInfo.receiver);
408
+ this._registeredReceivers[receiverInfo.intent] = this._registeredReceivers[receiverInfo.intent]?.filter((ri) => ri.id !== receiverId);
409
+ delete this._registeredReceiversById[receiverId];
410
+ }
411
+ else {
412
+ this._pendingReceiverRegistrations = this._pendingReceiverRegistrations.filter((ri) => ri.id !== receiverId);
413
+ }
414
+ };
415
+ }
416
+ _registerReceiver(context, intentFilter, onReceiveCallback, flags, id) {
417
+ var _a;
418
+ const receiver = new (BroadcastReceiver())(onReceiveCallback);
419
+ if (SDK_VERSION >= 26) {
420
+ context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter), flags);
421
+ }
422
+ else {
423
+ context.registerReceiver(receiver, new android.content.IntentFilter(intentFilter));
424
+ }
425
+ const receiverInfo = { receiver, intent: intentFilter, callback: onReceiveCallback, id: typeof id === 'number' ? id : this._nextReceiverId++, flags };
426
+ (_a = this._registeredReceivers)[intentFilter] ?? (_a[intentFilter] = []);
427
+ this._registeredReceivers[intentFilter].push(receiverInfo);
428
+ this._registeredReceiversById[receiverInfo.id] = receiverInfo;
429
+ return receiver;
380
430
  }
381
431
  unregisterBroadcastReceiver(intentFilter) {
382
- androidUnregisterBroadcastReceiver(intentFilter);
432
+ const receivers = this._registeredReceivers[intentFilter];
433
+ if (receivers) {
434
+ receivers.forEach((receiver) => {
435
+ this.context.unregisterReceiver(receiver.receiver);
436
+ });
437
+ this._registeredReceivers[intentFilter] = [];
438
+ }
383
439
  }
384
440
  getRegisteredBroadcastReceiver(intentFilter) {
385
- return androidRegisteredReceivers[intentFilter];
441
+ return this._registeredReceivers[intentFilter]?.[0].receiver;
442
+ }
443
+ getRegisteredBroadcastReceivers(intentFilter) {
444
+ const receiversInfo = this._registeredReceivers[intentFilter];
445
+ if (receiversInfo) {
446
+ return receiversInfo.map((info) => info.receiver);
447
+ }
448
+ return [];
386
449
  }
387
450
  getRootView() {
388
451
  const activity = this.foregroundActivity || this.startActivity;
@@ -422,6 +485,20 @@ export class AndroidApplication extends ApplicationCommon {
422
485
  return 'light';
423
486
  }
424
487
  }
488
+ getLayoutDirection() {
489
+ const resources = this.context.getResources();
490
+ const configuration = resources.getConfiguration();
491
+ return this.getLayoutDirectionValue(configuration);
492
+ }
493
+ getLayoutDirectionValue(configuration) {
494
+ const layoutDirection = configuration.getLayoutDirection();
495
+ switch (layoutDirection) {
496
+ case android.view.View.LAYOUT_DIRECTION_LTR:
497
+ return CoreTypes.LayoutDirection.ltr;
498
+ case android.view.View.LAYOUT_DIRECTION_RTL:
499
+ return CoreTypes.LayoutDirection.rtl;
500
+ }
501
+ }
425
502
  getOrientation() {
426
503
  const resources = this.context.getResources();
427
504
  const configuration = resources.getConfiguration();
@@ -780,117 +857,116 @@ function ensureNativeClasses() {
780
857
  ]);
781
858
  clickableRolesMap = new Set([AccessibilityRole.Button, AccessibilityRole.ImageButton]);
782
859
  const ignoreRoleTypesForTrace = new Set([AccessibilityRole.Header, AccessibilityRole.Link, AccessibilityRole.None, AccessibilityRole.Summary]);
783
- var TNSAccessibilityDelegateImpl = /** @class */ (function (_super) {
784
- __extends(TNSAccessibilityDelegateImpl, _super);
785
- function TNSAccessibilityDelegateImpl() {
786
- var _this = _super.call(this) || this;
787
- return global.__native(_this);
788
- }
789
- TNSAccessibilityDelegateImpl.prototype.getTnsView = function (androidView) {
790
- var _a;
791
- var view = (_a = androidViewToTNSView.get(androidView)) === null || _a === void 0 ? void 0 : _a.get();
792
- if (!view) {
793
- androidViewToTNSView.delete(androidView);
794
- return null;
860
+ var TNSAccessibilityDelegateImpl = (function (_super) {
861
+ __extends(TNSAccessibilityDelegateImpl, _super);
862
+ function TNSAccessibilityDelegateImpl() {
863
+ var _this = _super.call(this) || this;
864
+ return global.__native(_this);
795
865
  }
796
- return view;
797
- };
798
- TNSAccessibilityDelegateImpl.prototype.onInitializeAccessibilityNodeInfo = function (host, info) {
799
- _super.prototype.onInitializeAccessibilityNodeInfo.call(this, host, info);
800
- var view = this.getTnsView(host);
801
- if (!view) {
802
- if (Trace.isEnabled()) {
803
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(host, " ").concat(info, " no tns-view"), Trace.categories.Accessibility);
804
- }
805
- return;
806
- }
807
- // Set resource id that can be used with test frameworks without polluting the content description.
808
- var id = host.getTag(androidUtils.resources.getId(":id/nativescript_accessibility_id"));
809
- if (id != null) {
810
- info.setViewIdResourceName(id);
811
- }
812
- var accessibilityRole = view.accessibilityRole;
813
- if (accessibilityRole) {
814
- var androidClassName = RoleTypeMap.get(accessibilityRole);
815
- if (androidClassName) {
816
- var oldClassName = info.getClassName() || (SDK_VERSION >= 28 && host.getAccessibilityClassName()) || null;
817
- info.setClassName(androidClassName);
818
- if (Trace.isEnabled()) {
819
- Trace.write("".concat(view, ".accessibilityRole = \"").concat(accessibilityRole, "\" is mapped to \"").concat(androidClassName, "\" (was ").concat(oldClassName, "). ").concat(info.getClassName()), Trace.categories.Accessibility);
820
- }
866
+ TNSAccessibilityDelegateImpl.prototype.getTnsView = function (androidView) {
867
+ var _a;
868
+ var view = (_a = androidViewToTNSView.get(androidView)) === null || _a === void 0 ? void 0 : _a.get();
869
+ if (!view) {
870
+ androidViewToTNSView.delete(androidView);
871
+ return null;
821
872
  }
822
- else if (!ignoreRoleTypesForTrace.has(accessibilityRole)) {
873
+ return view;
874
+ };
875
+ TNSAccessibilityDelegateImpl.prototype.onInitializeAccessibilityNodeInfo = function (host, info) {
876
+ _super.prototype.onInitializeAccessibilityNodeInfo.call(this, host, info);
877
+ var view = this.getTnsView(host);
878
+ if (!view) {
823
879
  if (Trace.isEnabled()) {
824
- Trace.write("".concat(view, ".accessibilityRole = \"").concat(accessibilityRole, "\" is unknown"), Trace.categories.Accessibility);
880
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(host, " ").concat(info, " no tns-view"), Trace.categories.Accessibility);
825
881
  }
882
+ return;
826
883
  }
827
- if (clickableRolesMap.has(accessibilityRole)) {
828
- if (Trace.isEnabled()) {
829
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set clickable role=").concat(accessibilityRole), Trace.categories.Accessibility);
830
- }
831
- info.setClickable(true);
884
+ var id = host.getTag(androidUtils.resources.getId(":id/nativescript_accessibility_id"));
885
+ if (id != null) {
886
+ info.setViewIdResourceName(id);
832
887
  }
833
- if (SDK_VERSION >= 28) {
834
- if (accessibilityRole === AccessibilityRole.Header) {
888
+ var accessibilityRole = view.accessibilityRole;
889
+ if (accessibilityRole) {
890
+ var androidClassName = RoleTypeMap.get(accessibilityRole);
891
+ if (androidClassName) {
892
+ var oldClassName = info.getClassName() || (SDK_VERSION >= 28 && host.getAccessibilityClassName()) || null;
893
+ info.setClassName(androidClassName);
835
894
  if (Trace.isEnabled()) {
836
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set heading role=").concat(accessibilityRole), Trace.categories.Accessibility);
895
+ Trace.write("".concat(view, ".accessibilityRole = \"").concat(accessibilityRole, "\" is mapped to \"").concat(androidClassName, "\" (was ").concat(oldClassName, "). ").concat(info.getClassName()), Trace.categories.Accessibility);
837
896
  }
838
- info.setHeading(true);
839
897
  }
840
- else if (host.isAccessibilityHeading()) {
898
+ else if (!ignoreRoleTypesForTrace.has(accessibilityRole)) {
841
899
  if (Trace.isEnabled()) {
842
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set heading from host"), Trace.categories.Accessibility);
900
+ Trace.write("".concat(view, ".accessibilityRole = \"").concat(accessibilityRole, "\" is unknown"), Trace.categories.Accessibility);
843
901
  }
844
- info.setHeading(true);
845
902
  }
846
- else {
903
+ if (clickableRolesMap.has(accessibilityRole)) {
847
904
  if (Trace.isEnabled()) {
848
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set not heading"), Trace.categories.Accessibility);
905
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set clickable role=").concat(accessibilityRole), Trace.categories.Accessibility);
849
906
  }
850
- info.setHeading(false);
907
+ info.setClickable(true);
851
908
  }
852
- }
853
- switch (accessibilityRole) {
854
- case AccessibilityRole.Switch:
855
- case AccessibilityRole.RadioButton:
856
- case AccessibilityRole.Checkbox: {
857
- if (Trace.isEnabled()) {
858
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set checkable and check=").concat(view.accessibilityState === AccessibilityState.Checked), Trace.categories.Accessibility);
909
+ if (SDK_VERSION >= 28) {
910
+ if (accessibilityRole === AccessibilityRole.Header) {
911
+ if (Trace.isEnabled()) {
912
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set heading role=").concat(accessibilityRole), Trace.categories.Accessibility);
913
+ }
914
+ info.setHeading(true);
915
+ }
916
+ else if (host.isAccessibilityHeading()) {
917
+ if (Trace.isEnabled()) {
918
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set heading from host"), Trace.categories.Accessibility);
919
+ }
920
+ info.setHeading(true);
921
+ }
922
+ else {
923
+ if (Trace.isEnabled()) {
924
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set not heading"), Trace.categories.Accessibility);
925
+ }
926
+ info.setHeading(false);
859
927
  }
860
- info.setCheckable(true);
861
- info.setChecked(view.accessibilityState === AccessibilityState.Checked);
862
- break;
863
928
  }
864
- default: {
865
- if (Trace.isEnabled()) {
866
- Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set enabled=").concat(view.accessibilityState !== AccessibilityState.Disabled, " and selected=").concat(view.accessibilityState === AccessibilityState.Selected), Trace.categories.Accessibility);
929
+ switch (accessibilityRole) {
930
+ case AccessibilityRole.Switch:
931
+ case AccessibilityRole.RadioButton:
932
+ case AccessibilityRole.Checkbox: {
933
+ if (Trace.isEnabled()) {
934
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set checkable and check=").concat(view.accessibilityState === AccessibilityState.Checked), Trace.categories.Accessibility);
935
+ }
936
+ info.setCheckable(true);
937
+ info.setChecked(view.accessibilityState === AccessibilityState.Checked);
938
+ break;
939
+ }
940
+ default: {
941
+ if (Trace.isEnabled()) {
942
+ Trace.write("onInitializeAccessibilityNodeInfo ".concat(view, " - set enabled=").concat(view.accessibilityState !== AccessibilityState.Disabled, " and selected=").concat(view.accessibilityState === AccessibilityState.Selected), Trace.categories.Accessibility);
943
+ }
944
+ info.setEnabled(view.accessibilityState !== AccessibilityState.Disabled);
945
+ info.setSelected(view.accessibilityState === AccessibilityState.Selected);
946
+ break;
867
947
  }
868
- info.setEnabled(view.accessibilityState !== AccessibilityState.Disabled);
869
- info.setSelected(view.accessibilityState === AccessibilityState.Selected);
870
- break;
871
948
  }
872
949
  }
873
- }
874
- if (view.accessible) {
875
- info.setFocusable(true);
876
- }
877
- };
878
- TNSAccessibilityDelegateImpl.prototype.sendAccessibilityEvent = function (host, eventType) {
879
- _super.prototype.sendAccessibilityEvent.call(this, host, eventType);
880
- var view = this.getTnsView(host);
881
- if (!view) {
882
- console.log("skip - ".concat(host, " - ").concat(accessibilityEventTypeMap.get(eventType)));
883
- return;
884
- }
885
- try {
886
- accessibilityEventHelper(view, eventType);
887
- }
888
- catch (err) {
889
- console.error(err);
890
- }
891
- };
892
- return TNSAccessibilityDelegateImpl;
893
- }(AccessibilityDelegate));
950
+ if (view.accessible) {
951
+ info.setFocusable(true);
952
+ }
953
+ };
954
+ TNSAccessibilityDelegateImpl.prototype.sendAccessibilityEvent = function (host, eventType) {
955
+ _super.prototype.sendAccessibilityEvent.call(this, host, eventType);
956
+ var view = this.getTnsView(host);
957
+ if (!view) {
958
+ console.log("skip - ".concat(host, " - ").concat(accessibilityEventTypeMap.get(eventType)));
959
+ return;
960
+ }
961
+ try {
962
+ accessibilityEventHelper(view, eventType);
963
+ }
964
+ catch (err) {
965
+ console.error(err);
966
+ }
967
+ };
968
+ return TNSAccessibilityDelegateImpl;
969
+ }(AccessibilityDelegate));
894
970
  TNSAccessibilityDelegate = new TNSAccessibilityDelegateImpl();
895
971
  accessibilityEventMap = new Map([
896
972
  /**