@nativescript/core 9.0.0-next-09-24-2025-17985801416 → 9.0.0-next-10-06-2025-18277360121

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 (181) hide show
  1. package/inspector_modules.js +74 -47
  2. package/inspector_modules.js.map +1 -1
  3. package/package.json +1 -1
  4. package/platforms/android/include.gradle +51 -0
  5. package/platforms/android/java/org/nativescript/Process.java +59 -0
  6. package/platforms/android/java/org/nativescript/widgets/AbsoluteLayout.java +88 -0
  7. package/platforms/android/java/org/nativescript/widgets/AnimatorHelper.java +61 -0
  8. package/platforms/android/java/org/nativescript/widgets/Async.java +1356 -0
  9. package/platforms/android/java/org/nativescript/widgets/BorderDrawable.java +936 -0
  10. package/platforms/android/java/org/nativescript/widgets/BottomNavigationBar.java +308 -0
  11. package/platforms/android/java/org/nativescript/widgets/BoxShadowDrawable.java +175 -0
  12. package/platforms/android/java/org/nativescript/widgets/CSSValue.java +34 -0
  13. package/platforms/android/java/org/nativescript/widgets/CommonLayoutParams.java +456 -0
  14. package/platforms/android/java/org/nativescript/widgets/ContentLayout.java +85 -0
  15. package/platforms/android/java/org/nativescript/widgets/CustomTransition.java +135 -0
  16. package/platforms/android/java/org/nativescript/widgets/CustomTypefaceSpan.java +44 -0
  17. package/platforms/android/java/org/nativescript/widgets/Dock.java +15 -0
  18. package/platforms/android/java/org/nativescript/widgets/DockLayout.java +185 -0
  19. package/platforms/android/java/org/nativescript/widgets/FileHelper.java +815 -0
  20. package/platforms/android/java/org/nativescript/widgets/FlexLine.java +177 -0
  21. package/platforms/android/java/org/nativescript/widgets/FlexboxLayout.java +2769 -0
  22. package/platforms/android/java/org/nativescript/widgets/FragmentBase.java +14 -0
  23. package/platforms/android/java/org/nativescript/widgets/GridLayout.java +1172 -0
  24. package/platforms/android/java/org/nativescript/widgets/GridUnitType.java +10 -0
  25. package/platforms/android/java/org/nativescript/widgets/HorizontalScrollView.java +256 -0
  26. package/platforms/android/java/org/nativescript/widgets/ImageView.java +423 -0
  27. package/platforms/android/java/org/nativescript/widgets/ItemSpec.java +56 -0
  28. package/platforms/android/java/org/nativescript/widgets/LayoutBase.java +98 -0
  29. package/platforms/android/java/org/nativescript/widgets/LinearGradientDefinition.java +46 -0
  30. package/platforms/android/java/org/nativescript/widgets/Orientation.java +9 -0
  31. package/platforms/android/java/org/nativescript/widgets/OriginPoint.java +74 -0
  32. package/platforms/android/java/org/nativescript/widgets/ScrollSavedState.java +63 -0
  33. package/platforms/android/java/org/nativescript/widgets/SegmentedBarColorDrawable.java +27 -0
  34. package/platforms/android/java/org/nativescript/widgets/StackLayout.java +231 -0
  35. package/platforms/android/java/org/nativescript/widgets/StyleableTextView.java +50 -0
  36. package/platforms/android/java/org/nativescript/widgets/TabIconRenderingMode.java +6 -0
  37. package/platforms/android/java/org/nativescript/widgets/TabItemSpec.java +15 -0
  38. package/platforms/android/java/org/nativescript/widgets/TabLayout.java +451 -0
  39. package/platforms/android/java/org/nativescript/widgets/TabStrip.java +294 -0
  40. package/platforms/android/java/org/nativescript/widgets/TabViewPager.java +64 -0
  41. package/platforms/android/java/org/nativescript/widgets/TabsBar.java +443 -0
  42. package/platforms/android/java/org/nativescript/widgets/Utils.java +546 -0
  43. package/platforms/android/java/org/nativescript/widgets/VerticalScrollView.java +258 -0
  44. package/platforms/android/java/org/nativescript/widgets/ViewHelper.java +564 -0
  45. package/platforms/android/java/org/nativescript/widgets/WrapLayout.java +252 -0
  46. package/platforms/android/java/org/nativescript/widgets/image/AsyncTask.java +679 -0
  47. package/platforms/android/java/org/nativescript/widgets/image/BitmapOwner.java +17 -0
  48. package/platforms/android/java/org/nativescript/widgets/image/Cache.java +471 -0
  49. package/platforms/android/java/org/nativescript/widgets/image/DiskLruCache.java +970 -0
  50. package/platforms/android/java/org/nativescript/widgets/image/Fetcher.java +747 -0
  51. package/platforms/android/java/org/nativescript/widgets/image/Utils.java +58 -0
  52. package/platforms/android/java/org/nativescript/widgets/image/Worker.java +571 -0
  53. package/platforms/ios/src/TNSWidgets/Info.plist +26 -0
  54. package/platforms/ios/src/TNSWidgets/NSData+Async.m +42 -0
  55. package/platforms/ios/src/TNSWidgets/NSFileHandle+Async.m +82 -0
  56. package/platforms/ios/src/TNSWidgets/NSObject+Swizzling.m +68 -0
  57. package/platforms/ios/src/TNSWidgets/NSString+Async.m +51 -0
  58. package/platforms/ios/src/TNSWidgets/TNSLabel.m +42 -0
  59. package/platforms/ios/src/TNSWidgets/UIImage+TNSBlocks.m +77 -0
  60. package/platforms/ios/src/TNSWidgets/UIView+PassThroughParent.m +53 -0
  61. package/platforms/ios/src/TNSWidgets/UIView+PropertyBag.m +72 -0
  62. package/platforms/ios/src/module.modulemap +5 -0
  63. package/platforms/android/widgets-release.aar +0 -0
  64. package/platforms/ios/TNSWidgets.xcframework/Info.plist +0 -102
  65. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/NSCCrypto.h +0 -60
  66. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers/TNSProcess.h +0 -29
  67. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Info.plist +0 -0
  68. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Modules/module.modulemap +0 -6
  69. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/TNSWidgets +0 -0
  70. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Info.plist +0 -20
  71. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets +0 -0
  72. package/platforms/ios/TNSWidgets.xcframework/ios-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/aarch64/TNSWidgets.yml +0 -82
  73. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/NSCCrypto.h +0 -60
  74. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/NSData+Async.h +0 -24
  75. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/NSFileHandle+Async.h +0 -22
  76. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/NSString+Async.h +0 -25
  77. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/TNSLabel.h +0 -16
  78. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/TNSProcess.h +0 -29
  79. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/TNSWidgets.h +0 -25
  80. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/UIImage+TNSBlocks.h +0 -26
  81. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Headers/UIView+PassThroughParent.h +0 -17
  82. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Modules/module.modulemap +0 -6
  83. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/PrivateHeaders/NSObject+Swizzling.h +0 -17
  84. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/PrivateHeaders/UIView+PropertyBag.h +0 -18
  85. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Resources/Info.plist +0 -52
  86. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/NSCCrypto.h +0 -60
  87. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/NSData+Async.h +0 -24
  88. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/NSFileHandle+Async.h +0 -22
  89. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/NSString+Async.h +0 -25
  90. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/TNSLabel.h +0 -16
  91. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/TNSProcess.h +0 -29
  92. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/TNSWidgets.h +0 -25
  93. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/UIImage+TNSBlocks.h +0 -26
  94. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Headers/UIView+PassThroughParent.h +0 -17
  95. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Modules/module.modulemap +0 -6
  96. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/PrivateHeaders/NSObject+Swizzling.h +0 -17
  97. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/PrivateHeaders/UIView+PropertyBag.h +0 -18
  98. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/Resources/Info.plist +0 -52
  99. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/A/TNSWidgets +0 -0
  100. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/NSCCrypto.h +0 -60
  101. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/NSData+Async.h +0 -24
  102. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/NSFileHandle+Async.h +0 -22
  103. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/NSString+Async.h +0 -25
  104. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/TNSLabel.h +0 -16
  105. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/TNSProcess.h +0 -29
  106. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/TNSWidgets.h +0 -25
  107. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/UIImage+TNSBlocks.h +0 -26
  108. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Headers/UIView+PassThroughParent.h +0 -17
  109. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Modules/module.modulemap +0 -6
  110. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/PrivateHeaders/NSObject+Swizzling.h +0 -17
  111. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/PrivateHeaders/UIView+PropertyBag.h +0 -18
  112. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/Resources/Info.plist +0 -52
  113. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/TNSWidgets.framework/Versions/Current/TNSWidgets +0 -0
  114. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/dSYMs/TNSWidgets.framework.dSYM/Contents/Info.plist +0 -20
  115. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets +0 -0
  116. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/aarch64/TNSWidgets.yml +0 -82
  117. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-maccatalyst/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/x86_64/TNSWidgets.yml +0 -82
  118. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSCCrypto.h +0 -60
  119. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSData+Async.h +0 -24
  120. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSFileHandle+Async.h +0 -22
  121. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSString+Async.h +0 -25
  122. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSLabel.h +0 -16
  123. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSProcess.h +0 -29
  124. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h +0 -25
  125. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/UIImage+TNSBlocks.h +0 -26
  126. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Headers/UIView+PassThroughParent.h +0 -17
  127. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist +0 -0
  128. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/Modules/module.modulemap +0 -6
  129. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/NSObject+Swizzling.h +0 -17
  130. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/UIView+PropertyBag.h +0 -18
  131. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets +0 -0
  132. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources +0 -223
  133. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Info.plist +0 -20
  134. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets +0 -0
  135. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/aarch64/TNSWidgets.yml +0 -82
  136. package/platforms/ios/TNSWidgets.xcframework/ios-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/x86_64/TNSWidgets.yml +0 -82
  137. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/NSCCrypto.h +0 -60
  138. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/NSData+Async.h +0 -24
  139. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/NSFileHandle+Async.h +0 -22
  140. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/NSString+Async.h +0 -25
  141. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/TNSLabel.h +0 -16
  142. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/TNSProcess.h +0 -29
  143. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/TNSWidgets.h +0 -25
  144. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/UIImage+TNSBlocks.h +0 -26
  145. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Headers/UIView+PassThroughParent.h +0 -17
  146. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Info.plist +0 -0
  147. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/Modules/module.modulemap +0 -6
  148. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/PrivateHeaders/NSObject+Swizzling.h +0 -17
  149. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/PrivateHeaders/UIView+PropertyBag.h +0 -18
  150. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/TNSWidgets.framework/TNSWidgets +0 -0
  151. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Info.plist +0 -20
  152. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets +0 -0
  153. package/platforms/ios/TNSWidgets.xcframework/xros-arm64/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/aarch64/TNSWidgets.yml +0 -82
  154. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSCCrypto.h +0 -60
  155. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSData+Async.h +0 -24
  156. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSFileHandle+Async.h +0 -22
  157. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/NSString+Async.h +0 -25
  158. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSLabel.h +0 -16
  159. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSProcess.h +0 -29
  160. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/TNSWidgets.h +0 -25
  161. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/UIImage+TNSBlocks.h +0 -26
  162. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Headers/UIView+PassThroughParent.h +0 -17
  163. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Info.plist +0 -0
  164. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/Modules/module.modulemap +0 -6
  165. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/NSObject+Swizzling.h +0 -17
  166. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/PrivateHeaders/UIView+PropertyBag.h +0 -18
  167. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/TNSWidgets +0 -0
  168. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/TNSWidgets.framework/_CodeSignature/CodeResources +0 -223
  169. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Info.plist +0 -20
  170. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/DWARF/TNSWidgets +0 -0
  171. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/aarch64/TNSWidgets.yml +0 -82
  172. package/platforms/ios/TNSWidgets.xcframework/xros-arm64_x86_64-simulator/dSYMs/TNSWidgets.framework.dSYM/Contents/Resources/Relocations/x86_64/TNSWidgets.yml +0 -82
  173. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/NSData+Async.h +0 -0
  174. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/NSFileHandle+Async.h +0 -0
  175. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders → src/TNSWidgets}/NSObject+Swizzling.h +0 -0
  176. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/NSString+Async.h +0 -0
  177. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/TNSLabel.h +0 -0
  178. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/TNSWidgets.h +0 -0
  179. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/UIImage+TNSBlocks.h +0 -0
  180. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/Headers → src/TNSWidgets}/UIView+PassThroughParent.h +0 -0
  181. /package/platforms/ios/{TNSWidgets.xcframework/ios-arm64/TNSWidgets.framework/PrivateHeaders → src/TNSWidgets}/UIView+PropertyBag.h +0 -0
@@ -0,0 +1,56 @@
1
+ package org.nativescript.widgets;
2
+
3
+ /**
4
+ * @author hhristov
5
+ */
6
+ public class ItemSpec {
7
+
8
+ private final int _value;
9
+ private final GridUnitType _unitType;
10
+
11
+ public ItemSpec() {
12
+ this(1, GridUnitType.star);
13
+ }
14
+
15
+ public ItemSpec(int value, GridUnitType unitType) {
16
+ this._value = value;
17
+ this._unitType = unitType;
18
+ }
19
+
20
+ GridLayout owner;
21
+ int _actualLength = 0;
22
+
23
+ @Override
24
+ public boolean equals(Object o) {
25
+ if (!(o instanceof ItemSpec)) {
26
+ return false;
27
+ }
28
+
29
+ ItemSpec other = (ItemSpec) o;
30
+ return (this._unitType == other._unitType) && (this._value == other._value) && (this.owner == other.owner);
31
+ }
32
+
33
+ public GridUnitType getGridUnitType() {
34
+ return this._unitType;
35
+ }
36
+
37
+ public boolean getIsAbsolute() {
38
+ return this._unitType == GridUnitType.pixel;
39
+ }
40
+
41
+ public boolean getIsAuto() {
42
+ return this._unitType == GridUnitType.auto;
43
+ }
44
+
45
+ public boolean getIsStar() {
46
+ return this._unitType == GridUnitType.star;
47
+ }
48
+
49
+ public int getValue() {
50
+ return this._value;
51
+ }
52
+
53
+ public int getActualLength() {
54
+ return this._actualLength;
55
+ }
56
+ }
@@ -0,0 +1,98 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.content.Context;
4
+ import android.util.AttributeSet;
5
+ import android.view.Gravity;
6
+ import android.view.MotionEvent;
7
+ import android.view.View;
8
+ import android.view.ViewGroup;
9
+ import android.widget.FrameLayout;
10
+
11
+ /**
12
+ * @author hhristov
13
+ */
14
+ public abstract class LayoutBase extends ViewGroup {
15
+ private boolean passThroughParent;
16
+
17
+ public LayoutBase(Context context, AttributeSet attrs, int defStyleAttr) {
18
+ super(context, attrs, defStyleAttr);
19
+ }
20
+
21
+ public LayoutBase(Context context) {
22
+ super(context);
23
+ }
24
+
25
+ @Override
26
+ protected LayoutParams generateDefaultLayoutParams() {
27
+ return new CommonLayoutParams();
28
+ }
29
+
30
+ /**
31
+ * {@inheritDoc}
32
+ */
33
+ @Override
34
+ public LayoutParams generateLayoutParams(AttributeSet attrs) {
35
+ return new CommonLayoutParams();
36
+ }
37
+
38
+ /**
39
+ * {@inheritDoc}
40
+ */
41
+ @Override
42
+ protected boolean checkLayoutParams(LayoutParams p) {
43
+ return p instanceof CommonLayoutParams;
44
+ }
45
+
46
+ @Override
47
+ protected ViewGroup.LayoutParams generateLayoutParams(ViewGroup.LayoutParams from) {
48
+ if (from instanceof CommonLayoutParams)
49
+ return new CommonLayoutParams((CommonLayoutParams) from);
50
+
51
+ if (from instanceof FrameLayout.LayoutParams)
52
+ return new CommonLayoutParams((FrameLayout.LayoutParams) from);
53
+
54
+ if (from instanceof ViewGroup.MarginLayoutParams)
55
+ return new CommonLayoutParams((ViewGroup.MarginLayoutParams) from);
56
+
57
+ return new CommonLayoutParams(from);
58
+ }
59
+
60
+ @Override
61
+ public boolean shouldDelayChildPressedState() {
62
+ return false;
63
+ }
64
+
65
+ @Override
66
+ public boolean onTouchEvent(MotionEvent event) {
67
+ if (!this.passThroughParent) {
68
+ return super.onTouchEvent(event);
69
+ }
70
+
71
+ // LayoutBase.onTouchEvent(ev) execution means no interactive child view handled
72
+ // the event so we let the event pass through to parent view of the layout container
73
+ // because passThroughParent is set to true
74
+ return false;
75
+ }
76
+
77
+ protected static int getGravity(View view) {
78
+ int gravity = -1;
79
+ LayoutParams params = view.getLayoutParams();
80
+ if (params instanceof FrameLayout.LayoutParams) {
81
+ gravity = ((FrameLayout.LayoutParams) params).gravity;
82
+ }
83
+
84
+ if (gravity == -1) {
85
+ gravity = Gravity.FILL;
86
+ }
87
+
88
+ return gravity;
89
+ }
90
+
91
+ public boolean getPassThroughParent() {
92
+ return this.passThroughParent;
93
+ }
94
+
95
+ public void setPassThroughParent(boolean value) {
96
+ this.passThroughParent = value;
97
+ }
98
+ }
@@ -0,0 +1,46 @@
1
+ package org.nativescript.widgets;
2
+
3
+ /**
4
+ * Created by Vultix on 3/12/2018.
5
+ */
6
+ public class LinearGradientDefinition {
7
+ private final float startX;
8
+ private final float startY;
9
+ private final float endX;
10
+ private final float endY;
11
+ private final int[] colors;
12
+ private final float[] stops;
13
+
14
+ public float getStartX() {
15
+ return startX;
16
+ }
17
+
18
+ public float getStartY() {
19
+ return startY;
20
+ }
21
+
22
+ public float getEndX() {
23
+ return endX;
24
+ }
25
+
26
+ public float getEndY() {
27
+ return endY;
28
+ }
29
+
30
+ public int[] getColors() {
31
+ return colors;
32
+ }
33
+
34
+ public float[] getStops() {
35
+ return stops;
36
+ }
37
+
38
+ public LinearGradientDefinition(float startX, float startY, float endX, float endY, int[] colors, float[] stops) {
39
+ this.startX = startX;
40
+ this.startY = startY;
41
+ this.endX = endX;
42
+ this.endY = endY;
43
+ this.colors = colors;
44
+ this.stops = stops;
45
+ }
46
+ }
@@ -0,0 +1,9 @@
1
+ package org.nativescript.widgets;
2
+
3
+ /**
4
+ * @author hhristov
5
+ */
6
+ public enum Orientation {
7
+ horizontal,
8
+ vertical
9
+ }
@@ -0,0 +1,74 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.view.View;
4
+
5
+ import java.util.WeakHashMap;
6
+
7
+ /**
8
+ * A class encapsulating the logic of setting an origin point.
9
+ * The origin acts as a pivot point but is relative to the View size,
10
+ * Where 0 is the left or top of the view, 0.5 is at the middle and 1 is right or bottom.
11
+ * Under the hood the pivot point is set but is updated when the View's layout is changed.
12
+ */
13
+ public class OriginPoint {
14
+ private static WeakHashMap<View, PivotSetter> layoutListeners;
15
+
16
+ public static void setX(View view, float x) {
17
+ getSetter(view).setOriginX(view, x);
18
+ }
19
+
20
+ public static void setY(View view, float y) {
21
+ getSetter(view).setOriginY(view, y);
22
+ }
23
+
24
+ private static PivotSetter getSetter(View view) {
25
+ PivotSetter setter = null;
26
+
27
+ if (layoutListeners == null) {
28
+ layoutListeners = new WeakHashMap<>();
29
+ } else {
30
+ setter = layoutListeners.get(view);
31
+ }
32
+
33
+ if (setter == null) {
34
+ setter = new PivotSetter();
35
+ view.addOnLayoutChangeListener(setter);
36
+ layoutListeners.put(view, setter);
37
+ }
38
+
39
+ return setter;
40
+ }
41
+
42
+ private static class PivotSetter implements View.OnLayoutChangeListener {
43
+ private float originX;
44
+ private float originY;
45
+
46
+ public PivotSetter() {
47
+ originX = 0.5f;
48
+ originY = 0.5f;
49
+ }
50
+
51
+ public void setOriginX(View view, float x) {
52
+ originX = x;
53
+ updateX(view, view.getWidth());
54
+ }
55
+
56
+ public void setOriginY(View view, float y) {
57
+ originY = y;
58
+ updateY(view, view.getHeight());
59
+ }
60
+
61
+ public void onLayoutChange(View view, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
62
+ updateX(view, right - left);
63
+ updateY(view, bottom - top);
64
+ }
65
+
66
+ private void updateX(View view, int width) {
67
+ view.setPivotX(originX * width);
68
+ }
69
+
70
+ private void updateY(View view, int height) {
71
+ view.setPivotY(originY * height);
72
+ }
73
+ }
74
+ }
@@ -0,0 +1,63 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.os.Build;
4
+ import android.os.Parcel;
5
+ import android.os.Parcelable;
6
+ import android.view.View.BaseSavedState;
7
+
8
+ import androidx.annotation.NonNull;
9
+ import androidx.annotation.RequiresApi;
10
+
11
+ /**
12
+ * @author CatchABus
13
+ */
14
+ class ScrollSavedState extends BaseSavedState {
15
+ public int scrollOffsetFromStart;
16
+
17
+ ScrollSavedState(Parcelable superState) {
18
+ super(superState);
19
+ }
20
+
21
+ public ScrollSavedState(Parcel source) {
22
+ super(source);
23
+ scrollOffsetFromStart = source.readInt();
24
+ }
25
+
26
+ @RequiresApi(Build.VERSION_CODES.N)
27
+ public ScrollSavedState(Parcel source, ClassLoader loader) {
28
+ super(source, loader);
29
+ scrollOffsetFromStart = source.readInt();
30
+ }
31
+
32
+ @Override
33
+ public void writeToParcel(Parcel dest, int flags) {
34
+ super.writeToParcel(dest, flags);
35
+ dest.writeInt(scrollOffsetFromStart);
36
+ }
37
+
38
+ @NonNull
39
+ @Override
40
+ public String toString() {
41
+ return "ScrollSavedState{"
42
+ + Integer.toHexString(System.identityHashCode(this))
43
+ + " scrollPosition=" + scrollOffsetFromStart
44
+ + "}";
45
+ }
46
+
47
+ public static final Creator<ScrollSavedState> CREATOR = new ClassLoaderCreator<ScrollSavedState>() {
48
+ public ScrollSavedState createFromParcel(Parcel in, ClassLoader loader)
49
+ {
50
+ return Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? new ScrollSavedState(in, loader) : new ScrollSavedState(in);
51
+ }
52
+
53
+ @Override
54
+ public ScrollSavedState createFromParcel(Parcel in)
55
+ {
56
+ return createFromParcel(in, null);
57
+ }
58
+
59
+ public ScrollSavedState[] newArray(int size) {
60
+ return new ScrollSavedState[size];
61
+ }
62
+ };
63
+ }
@@ -0,0 +1,27 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.graphics.Paint;
4
+ import android.graphics.drawable.ColorDrawable;
5
+
6
+ import androidx.annotation.ColorInt;
7
+
8
+ /**
9
+ * Created by hhristov on 2/23/17.
10
+ */
11
+
12
+ public class SegmentedBarColorDrawable extends ColorDrawable {
13
+
14
+ private final float thickness;
15
+
16
+ public SegmentedBarColorDrawable(@ColorInt int color, float thickness) {
17
+ super(color);
18
+ this.thickness = thickness;
19
+ }
20
+
21
+ public void draw(android.graphics.Canvas canvas) {
22
+ Paint p = new Paint();
23
+ p.setColor(this.getColor());
24
+ p.setStyle(android.graphics.Paint.Style.FILL);
25
+ canvas.drawRect(0, this.getBounds().height() - thickness, this.getBounds().width(), this.getBounds().height(), p);
26
+ }
27
+ }
@@ -0,0 +1,231 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.annotation.SuppressLint;
4
+ import android.content.Context;
5
+ import android.util.Log;
6
+ import android.view.Gravity;
7
+ import android.view.View;
8
+ import android.util.AttributeSet;
9
+
10
+ /**
11
+ * @author hhristov
12
+ */
13
+ public class StackLayout extends LayoutBase {
14
+ static final String TAG = "JS";
15
+ private int _totalLength = 0;
16
+ private Orientation _orientation = Orientation.vertical;
17
+
18
+ public StackLayout(Context context) {
19
+ this(context, null);
20
+ }
21
+ public StackLayout(Context context, AttributeSet attrs) {
22
+ this(context, attrs, 0);
23
+ }
24
+ public StackLayout(Context context, AttributeSet attrs, int defStyleAttr) {
25
+ super(context, attrs, defStyleAttr);
26
+ }
27
+
28
+ public Orientation getOrientation() {
29
+ return this._orientation;
30
+ }
31
+
32
+ public void setOrientation(Orientation value) {
33
+ this._orientation = value;
34
+ this.requestLayout();
35
+ }
36
+
37
+ @Override
38
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
39
+ CommonLayoutParams.adjustChildrenLayoutParams(this, widthMeasureSpec, heightMeasureSpec);
40
+
41
+ int childState = 0;
42
+ int measureWidth = 0;
43
+ int measureHeight = 0;
44
+
45
+ int width = MeasureSpec.getSize(widthMeasureSpec);
46
+ int widthMode = MeasureSpec.getMode(widthMeasureSpec);
47
+
48
+ int height = MeasureSpec.getSize(heightMeasureSpec);
49
+ int heightMode = MeasureSpec.getMode(heightMeasureSpec);
50
+
51
+ boolean isVertical = this._orientation == Orientation.vertical;
52
+ int verticalPadding = this.getPaddingTop() + this.getPaddingBottom();
53
+ int horizontalPadding = this.getPaddingLeft() + this.getPaddingRight();
54
+
55
+ int count = this.getChildCount();
56
+ int measureSpecMode;
57
+ int remainingLength;
58
+
59
+ int mode = isVertical ? heightMode : widthMode;
60
+ if (mode == MeasureSpec.UNSPECIFIED) {
61
+ measureSpecMode = MeasureSpec.UNSPECIFIED;
62
+ remainingLength = 0;
63
+ } else {
64
+ measureSpecMode = MeasureSpec.AT_MOST;
65
+ remainingLength = isVertical ? height - verticalPadding : width - horizontalPadding;
66
+ }
67
+
68
+ int childMeasureSpec;
69
+ if (isVertical) {
70
+ int childWidth = (widthMode == MeasureSpec.UNSPECIFIED) ? 0 : width - horizontalPadding;
71
+ childWidth = Math.max(0, childWidth);
72
+ childMeasureSpec = MeasureSpec.makeMeasureSpec(childWidth, widthMode);
73
+ } else {
74
+ int childHeight = (heightMode == MeasureSpec.UNSPECIFIED) ? 0 : height - verticalPadding;
75
+ childHeight = Math.max(0, childHeight);
76
+ childMeasureSpec = MeasureSpec.makeMeasureSpec(childHeight, heightMode);
77
+ }
78
+
79
+ for (int i = 0; i < count; i++) {
80
+ View child = this.getChildAt(i);
81
+ if (child.getVisibility() == View.GONE) {
82
+ continue;
83
+ }
84
+
85
+ if (isVertical) {
86
+ // Measuring android.widget.ListView, with no height property set, with MeasureSpec.AT_MOST will
87
+ // result in height required for all list view items or the maximum available space for the StackLayout.
88
+ // Any following controls will be visible only if enough space left.
89
+ CommonLayoutParams.measureChild(child, childMeasureSpec, MeasureSpec.makeMeasureSpec(remainingLength, measureSpecMode));
90
+
91
+ if (measureSpecMode == MeasureSpec.AT_MOST && this.isUnsizedScrollableView(child)) {
92
+ Log.e(TAG, "Avoid using ListView or ScrollView with no explicit height set inside StackLayout. Doing so might results in poor user interface performance and a poor user experience.");
93
+ }
94
+
95
+ final int childMeasuredWidth = CommonLayoutParams.getDesiredWidth(child);
96
+ final int childMeasuredHeight = CommonLayoutParams.getDesiredHeight(child);
97
+
98
+ measureWidth = Math.max(measureWidth, childMeasuredWidth);
99
+ measureHeight += childMeasuredHeight;
100
+ remainingLength = Math.max(0, remainingLength - childMeasuredHeight);
101
+ } else {
102
+ CommonLayoutParams.measureChild(child, MeasureSpec.makeMeasureSpec(remainingLength, measureSpecMode), childMeasureSpec);
103
+ final int childMeasuredWidth = CommonLayoutParams.getDesiredWidth(child);
104
+ final int childMeasuredHeight = CommonLayoutParams.getDesiredHeight(child);
105
+
106
+ measureHeight = Math.max(measureHeight, childMeasuredHeight);
107
+ measureWidth += childMeasuredWidth;
108
+ remainingLength = Math.max(0, remainingLength - childMeasuredWidth);
109
+ }
110
+
111
+ childState = combineMeasuredStates(childState, child.getMeasuredState());
112
+ }
113
+
114
+ // Add in our padding
115
+ measureWidth += horizontalPadding;
116
+ measureHeight += verticalPadding;
117
+
118
+ // Check against our minimum sizes
119
+ measureWidth = Math.max(measureWidth, this.getSuggestedMinimumWidth());
120
+ measureHeight = Math.max(measureHeight, this.getSuggestedMinimumHeight());
121
+
122
+ this._totalLength = isVertical ? measureHeight : measureWidth;
123
+
124
+ int widthSizeAndState = resolveSizeAndState(measureWidth, widthMeasureSpec, isVertical ? childState : 0);
125
+ int heightSizeAndState = resolveSizeAndState(measureHeight, heightMeasureSpec, isVertical ? 0 : childState);
126
+
127
+ this.setMeasuredDimension(widthSizeAndState, heightSizeAndState);
128
+ }
129
+
130
+ @Override
131
+ protected void onLayout(boolean changed, int l, int t, int r, int b) {
132
+ if (this._orientation == Orientation.vertical) {
133
+ this.layoutVertical(l, t, r, b);
134
+ } else {
135
+ this.layoutHorizontal(l, t, r, b);
136
+ }
137
+
138
+ CommonLayoutParams.restoreOriginalParams(this);
139
+ }
140
+
141
+ private void layoutVertical(int left, int top, int right, int bottom) {
142
+
143
+ int paddingLeft = this.getPaddingLeft();
144
+ int paddingRight = this.getPaddingRight();
145
+ int paddingTop = this.getPaddingTop();
146
+ int paddingBottom = this.getPaddingBottom();
147
+
148
+ int childTop = 0;
149
+ int childLeft = paddingLeft;
150
+ int childRight = right - left - paddingRight;
151
+
152
+ int gravity = LayoutBase.getGravity(this);
153
+ final int verticalGravity = gravity & Gravity.VERTICAL_GRAVITY_MASK;
154
+
155
+ switch (verticalGravity) {
156
+ case Gravity.CENTER_VERTICAL:
157
+ childTop = (bottom - top - this._totalLength) / 2 + paddingTop;
158
+ break;
159
+
160
+ case Gravity.BOTTOM:
161
+ childTop = bottom - top - this._totalLength + paddingTop;
162
+ break;
163
+
164
+ case Gravity.TOP:
165
+ case Gravity.FILL_VERTICAL:
166
+ default:
167
+ childTop = paddingTop;
168
+ break;
169
+ }
170
+
171
+ for (int i = 0, count = this.getChildCount(); i < count; i++) {
172
+ View child = this.getChildAt(i);
173
+ if (child.getVisibility() == View.GONE) {
174
+ continue;
175
+ }
176
+
177
+ int childHeight = CommonLayoutParams.getDesiredHeight(child);
178
+ CommonLayoutParams.layoutChild(child, childLeft, childTop, childRight, childTop + childHeight);
179
+ childTop += childHeight;
180
+ }
181
+ }
182
+
183
+ @SuppressLint("RtlHardcoded")
184
+ private void layoutHorizontal(int left, int top, int right, int bottom) {
185
+
186
+ int paddingLeft = this.getPaddingLeft();
187
+ int paddingRight = this.getPaddingRight();
188
+ int paddingTop = this.getPaddingTop();
189
+ int paddingBottom = this.getPaddingBottom();
190
+
191
+ int childTop = paddingTop;
192
+ int childLeft = 0;
193
+ int childBottom = bottom - top - paddingBottom;
194
+
195
+ int gravity = LayoutBase.getGravity(this);
196
+ final int horizontalGravity = Gravity.getAbsoluteGravity(gravity, this.getLayoutDirection()) & Gravity.HORIZONTAL_GRAVITY_MASK;
197
+
198
+ switch (horizontalGravity) {
199
+ case Gravity.CENTER_HORIZONTAL:
200
+ childLeft = (right - left - this._totalLength) / 2 + paddingLeft;
201
+ break;
202
+
203
+ case Gravity.RIGHT:
204
+ childLeft = right - left - this._totalLength + paddingLeft;
205
+ break;
206
+
207
+ case Gravity.LEFT:
208
+ case Gravity.FILL_HORIZONTAL:
209
+ default:
210
+ childLeft = paddingLeft;
211
+ break;
212
+ }
213
+
214
+ for (int i = 0, count = this.getChildCount(); i < count; i++) {
215
+ View child = this.getChildAt(i);
216
+ if (child.getVisibility() == View.GONE) {
217
+ continue;
218
+ }
219
+
220
+ int childWidth = CommonLayoutParams.getDesiredWidth(child);
221
+ CommonLayoutParams.layoutChild(child, childLeft, childTop, childLeft + childWidth, childBottom);
222
+ childLeft += childWidth;
223
+ }
224
+ }
225
+
226
+ private boolean isUnsizedScrollableView(View child) {
227
+ LayoutParams childLayoutParams = child.getLayoutParams();
228
+
229
+ return childLayoutParams.height == -1 && (child instanceof android.widget.ListView || child instanceof VerticalScrollView);
230
+ }
231
+ }
@@ -0,0 +1,50 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.content.Context;
4
+ import android.graphics.Canvas;
5
+ import android.text.TextPaint;
6
+
7
+ /**
8
+ * @author NathanWalker
9
+ */
10
+ public class StyleableTextView extends androidx.appcompat.widget.AppCompatTextView {
11
+ int mTextStrokeWidth = 0;
12
+ int mTextStrokeColor = 0;
13
+ int mTextColor = 0;
14
+
15
+ public StyleableTextView(Context context) {
16
+ super(context);
17
+ }
18
+
19
+ @Override
20
+ protected void onDraw(Canvas canvas) {
21
+ if (mTextStrokeWidth > 0) {
22
+ _applyStroke(canvas);
23
+ } else {
24
+ super.onDraw(canvas);
25
+ }
26
+ }
27
+
28
+ public void setTextStroke(int width, int color, int textColor) {
29
+ mTextStrokeWidth = width;
30
+ mTextStrokeColor = color;
31
+ mTextColor = textColor;
32
+ }
33
+
34
+ private void _applyStroke(Canvas canvas) {
35
+ // set paint to fill mode
36
+ TextPaint p = this.getPaint();
37
+ p.setStyle(TextPaint.Style.FILL);
38
+ // draw the fill part of text
39
+ super.onDraw(canvas);
40
+ // stroke color and width
41
+ p.setStyle(TextPaint.Style.STROKE);
42
+ p.setStrokeWidth(mTextStrokeWidth);
43
+ this.setTextColor(mTextStrokeColor);
44
+ // draw stroke
45
+ super.onDraw(canvas);
46
+ // draw original text color fill back (fallback to white)
47
+ p.setStyle(TextPaint.Style.FILL);
48
+ this.setTextColor(mTextColor != 0 ? mTextColor : 0xffffffff);
49
+ }
50
+ }
@@ -0,0 +1,6 @@
1
+ package org.nativescript.widgets;
2
+
3
+ public enum TabIconRenderingMode {
4
+ template,
5
+ original
6
+ }
@@ -0,0 +1,15 @@
1
+ package org.nativescript.widgets;
2
+
3
+ import android.graphics.Typeface;
4
+ import android.graphics.drawable.Drawable;
5
+
6
+ public class TabItemSpec {
7
+ public String title;
8
+ public int fontSize;
9
+ public Typeface typeFace;
10
+ public int iconId;
11
+ public Drawable iconDrawable;
12
+ public int imageHeight;
13
+ public int backgroundColor;
14
+ public int color;
15
+ }