react-native-platform-components 1.3.0 → 1.5.0

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 (636) hide show
  1. package/PlatformComponents.podspec +1 -1
  2. package/README.md +47 -51
  3. package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +664 -0
  4. package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +241 -0
  5. package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +159 -0
  6. package/android/src/main/java/com/platformcomponents/PCButtonView.kt +527 -0
  7. package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +204 -0
  8. package/android/src/main/java/com/platformcomponents/PCContextMenuView.kt +41 -151
  9. package/android/src/main/java/com/platformcomponents/PCContextMenuViewManager.kt +7 -63
  10. package/android/src/main/java/com/platformcomponents/PCDatePickerView.kt +310 -115
  11. package/android/src/main/java/com/platformcomponents/PCDatePickerViewManager.kt +23 -3
  12. package/android/src/main/java/com/platformcomponents/PCExpressive.kt +112 -0
  13. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonView.kt +485 -0
  14. package/android/src/main/java/com/platformcomponents/PCFloatingActionButtonViewManager.kt +109 -0
  15. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +247 -0
  16. package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +73 -0
  17. package/android/src/main/java/com/platformcomponents/PCHaptics.kt +46 -0
  18. package/android/src/main/java/com/platformcomponents/PCImageLoader.kt +42 -7
  19. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerView.kt +32 -0
  20. package/android/src/main/java/com/platformcomponents/PCLiquidGlassContainerViewManager.kt +31 -0
  21. package/android/src/main/java/com/platformcomponents/PCLiquidGlassView.kt +32 -6
  22. package/android/src/main/java/com/platformcomponents/PCLiquidGlassViewManager.kt +4 -0
  23. package/android/src/main/java/com/platformcomponents/PCMenuSupport.kt +280 -0
  24. package/android/src/main/java/com/platformcomponents/PCNavigationBarSupport.kt +332 -0
  25. package/android/src/main/java/com/platformcomponents/PCNavigationRailView.kt +448 -0
  26. package/android/src/main/java/com/platformcomponents/PCNavigationRailViewManager.kt +176 -0
  27. package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +35 -17
  28. package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +20 -3
  29. package/android/src/main/java/com/platformcomponents/PCSelectionMenuView.kt +371 -39
  30. package/android/src/main/java/com/platformcomponents/PCSelectionMenuViewManager.kt +18 -4
  31. package/android/src/main/java/com/platformcomponents/PCTabBarView.kt +397 -0
  32. package/android/src/main/java/com/platformcomponents/PCTabBarViewManager.kt +182 -0
  33. package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1393 -0
  34. package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +354 -0
  35. package/android/src/main/java/com/platformcomponents/PCThemeSupport.kt +37 -0
  36. package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +8 -0
  37. package/android/src/main/res/drawable/pc_ic_search.xml +12 -0
  38. package/android/src/main/res/values/attrs.xml +13 -0
  39. package/android/src/main/res/values/ids.xml +5 -0
  40. package/android/src/main/res/values/styles.xml +207 -0
  41. package/ios/PCButton.h +10 -0
  42. package/ios/PCButton.mm +311 -0
  43. package/ios/PCButtonGroup.h +10 -0
  44. package/ios/PCButtonGroup.mm +323 -0
  45. package/ios/PCButtonGroupView.swift +473 -0
  46. package/ios/PCButtonSupport.swift +312 -0
  47. package/ios/PCButtonView.swift +438 -0
  48. package/ios/PCConstants.swift +23 -2
  49. package/ios/PCContextMenu.mm +28 -110
  50. package/ios/PCContextMenu.swift +106 -167
  51. package/ios/PCDatePicker.mm +21 -9
  52. package/ios/PCDatePickerView.swift +94 -20
  53. package/ios/PCFloatingActionButton.h +10 -0
  54. package/ios/PCFloatingActionButton.mm +177 -0
  55. package/ios/PCFloatingActionButtonView.swift +426 -0
  56. package/ios/PCFloatingToolbar.h +10 -0
  57. package/ios/PCFloatingToolbar.mm +103 -0
  58. package/ios/PCFloatingToolbarView.swift +336 -0
  59. package/ios/PCHaptics.swift +91 -0
  60. package/ios/PCImageLoader.swift +76 -12
  61. package/ios/PCLiquidGlass.mm +36 -0
  62. package/ios/PCLiquidGlass.swift +221 -114
  63. package/ios/PCLiquidGlassContainer.h +10 -0
  64. package/ios/PCLiquidGlassContainer.mm +84 -0
  65. package/ios/PCLiquidGlassContainer.swift +69 -0
  66. package/ios/PCMenuItems.h +76 -0
  67. package/ios/PCMenuSupport.swift +350 -0
  68. package/ios/PCNavigationRail.h +10 -0
  69. package/ios/PCNavigationRail.mm +270 -0
  70. package/ios/PCNavigationRailView.swift +415 -0
  71. package/ios/PCSegmentedControl.mm +17 -2
  72. package/ios/PCSegmentedControl.swift +57 -7
  73. package/ios/PCSelectionMenu.mm +36 -8
  74. package/ios/PCSelectionMenu.swift +224 -48
  75. package/ios/PCTabBar.h +10 -0
  76. package/ios/PCTabBar.mm +285 -0
  77. package/ios/PCTabBarAccessory.h +10 -0
  78. package/ios/PCTabBarAccessory.mm +93 -0
  79. package/ios/PCTabBarAccessoryView.swift +96 -0
  80. package/ios/PCTabBarView.swift +671 -0
  81. package/ios/PCTextField.h +10 -0
  82. package/ios/PCTextField.mm +546 -0
  83. package/ios/PCTextFieldView.swift +1558 -0
  84. package/lib/commonjs/Button.js +149 -0
  85. package/lib/commonjs/Button.js.map +1 -0
  86. package/lib/commonjs/ButtonGroup.js +109 -0
  87. package/lib/commonjs/ButtonGroup.js.map +1 -0
  88. package/lib/commonjs/ButtonGroupNativeComponent.ts +191 -0
  89. package/lib/commonjs/ButtonNativeComponent.ts +192 -0
  90. package/lib/commonjs/ContextMenu.js +9 -48
  91. package/lib/commonjs/ContextMenu.js.map +1 -1
  92. package/lib/commonjs/ContextMenuNativeComponent.ts +47 -49
  93. package/lib/commonjs/DatePicker.js +98 -2
  94. package/lib/commonjs/DatePicker.js.map +1 -1
  95. package/lib/commonjs/DatePickerNativeComponent.ts +19 -2
  96. package/lib/commonjs/FloatingActionButton.js +60 -0
  97. package/lib/commonjs/FloatingActionButton.js.map +1 -0
  98. package/lib/commonjs/FloatingActionButtonNativeComponent.ts +58 -0
  99. package/lib/commonjs/FloatingToolbar.js +77 -0
  100. package/lib/commonjs/FloatingToolbar.js.map +1 -0
  101. package/lib/commonjs/FloatingToolbarNativeComponent.ts +47 -0
  102. package/lib/commonjs/LiquidGlass.js +7 -1
  103. package/lib/commonjs/LiquidGlass.js.map +1 -1
  104. package/lib/commonjs/LiquidGlassContainer.js +32 -0
  105. package/lib/commonjs/LiquidGlassContainer.js.map +1 -0
  106. package/lib/commonjs/LiquidGlassContainerNativeComponent.ts +17 -0
  107. package/lib/commonjs/LiquidGlassNativeComponent.ts +8 -0
  108. package/lib/commonjs/NavigationRail.js +104 -0
  109. package/lib/commonjs/NavigationRail.js.map +1 -0
  110. package/lib/commonjs/NavigationRailNativeComponent.ts +107 -0
  111. package/lib/commonjs/PlatformComponentsProvider.js +18 -0
  112. package/lib/commonjs/PlatformComponentsProvider.js.map +1 -0
  113. package/lib/commonjs/SegmentedControl.js +18 -85
  114. package/lib/commonjs/SegmentedControl.js.map +1 -1
  115. package/lib/commonjs/SegmentedControlNativeComponent.ts +14 -0
  116. package/lib/commonjs/SelectionMenu.js +27 -3
  117. package/lib/commonjs/SelectionMenu.js.map +1 -1
  118. package/lib/commonjs/SelectionMenuNativeComponent.ts +26 -4
  119. package/lib/commonjs/SplitButton.js +98 -0
  120. package/lib/commonjs/SplitButton.js.map +1 -0
  121. package/lib/commonjs/TabBar.js +203 -0
  122. package/lib/commonjs/TabBar.js.map +1 -0
  123. package/lib/commonjs/TabBarAccessoryNativeComponent.ts +19 -0
  124. package/lib/commonjs/TabBarNativeComponent.ts +145 -0
  125. package/lib/commonjs/TextField.js +358 -0
  126. package/lib/commonjs/TextField.js.map +1 -0
  127. package/lib/commonjs/TextFieldNativeComponent.ts +324 -0
  128. package/lib/commonjs/focusRegistry.js +79 -0
  129. package/lib/commonjs/focusRegistry.js.map +1 -0
  130. package/lib/commonjs/haptics.js +2 -0
  131. package/lib/commonjs/haptics.js.map +1 -0
  132. package/lib/commonjs/icons.js +106 -0
  133. package/lib/commonjs/icons.js.map +1 -0
  134. package/lib/commonjs/index.js +143 -0
  135. package/lib/commonjs/index.js.map +1 -1
  136. package/lib/commonjs/index.web.js +157 -63
  137. package/lib/commonjs/index.web.js.map +1 -1
  138. package/lib/commonjs/jest.js +910 -0
  139. package/lib/commonjs/jest.js.map +1 -0
  140. package/lib/commonjs/labelStyle.js +27 -0
  141. package/lib/commonjs/labelStyle.js.map +1 -0
  142. package/lib/commonjs/menuItems.js +68 -0
  143. package/lib/commonjs/menuItems.js.map +1 -0
  144. package/lib/commonjs/reactNativeInternals.d.js +2 -0
  145. package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
  146. package/lib/commonjs/selectionIdentifiers.js +18 -0
  147. package/lib/commonjs/selectionIdentifiers.js.map +1 -0
  148. package/lib/commonjs/submitBehavior.js +19 -0
  149. package/lib/commonjs/submitBehavior.js.map +1 -0
  150. package/lib/commonjs/tabItems.js +49 -0
  151. package/lib/commonjs/tabItems.js.map +1 -0
  152. package/lib/commonjs/web/Button.js +170 -0
  153. package/lib/commonjs/web/Button.js.map +1 -0
  154. package/lib/commonjs/web/ButtonGroup.js +119 -0
  155. package/lib/commonjs/web/ButtonGroup.js.map +1 -0
  156. package/lib/commonjs/web/DatePicker.js +168 -0
  157. package/lib/commonjs/web/DatePicker.js.map +1 -0
  158. package/lib/commonjs/web/DateRangePicker.js +137 -0
  159. package/lib/commonjs/web/DateRangePicker.js.map +1 -0
  160. package/lib/commonjs/web/Dialog.js +54 -0
  161. package/lib/commonjs/web/Dialog.js.map +1 -0
  162. package/lib/commonjs/web/FloatingActionButton.js +98 -0
  163. package/lib/commonjs/web/FloatingActionButton.js.map +1 -0
  164. package/lib/commonjs/web/Icon.js +34 -0
  165. package/lib/commonjs/web/Icon.js.map +1 -0
  166. package/lib/commonjs/web/NativeTheme.js +28 -0
  167. package/lib/commonjs/web/NativeTheme.js.map +1 -0
  168. package/lib/commonjs/web/NavigationRail.js +139 -0
  169. package/lib/commonjs/web/NavigationRail.js.map +1 -0
  170. package/lib/commonjs/web/PlatformComponentsProvider.js +51 -0
  171. package/lib/commonjs/web/PlatformComponentsProvider.js.map +1 -0
  172. package/lib/commonjs/web/SegmentedControl.js +117 -0
  173. package/lib/commonjs/web/SegmentedControl.js.map +1 -0
  174. package/lib/commonjs/web/SelectionMenu.js +142 -0
  175. package/lib/commonjs/web/SelectionMenu.js.map +1 -0
  176. package/lib/commonjs/web/SplitButton.js +35 -0
  177. package/lib/commonjs/web/SplitButton.js.map +1 -0
  178. package/lib/commonjs/web/TabBar.js +131 -0
  179. package/lib/commonjs/web/TabBar.js.map +1 -0
  180. package/lib/commonjs/web/TextField.js +322 -0
  181. package/lib/commonjs/web/TextField.js.map +1 -0
  182. package/lib/commonjs/web/components.js +36 -0
  183. package/lib/commonjs/web/components.js.map +1 -0
  184. package/lib/commonjs/web/containers.js +121 -0
  185. package/lib/commonjs/web/containers.js.map +1 -0
  186. package/lib/commonjs/web/dateInput.js +116 -0
  187. package/lib/commonjs/web/dateInput.js.map +1 -0
  188. package/lib/commonjs/web/shared.js +192 -0
  189. package/lib/commonjs/web/shared.js.map +1 -0
  190. package/lib/commonjs/webComponents.js +6 -0
  191. package/lib/commonjs/webComponents.js.map +1 -0
  192. package/lib/module/Button.js +142 -0
  193. package/lib/module/Button.js.map +1 -0
  194. package/lib/module/ButtonGroup.js +102 -0
  195. package/lib/module/ButtonGroup.js.map +1 -0
  196. package/lib/module/ButtonGroupNativeComponent.ts +191 -0
  197. package/lib/module/ButtonNativeComponent.ts +192 -0
  198. package/lib/module/ContextMenu.js +9 -48
  199. package/lib/module/ContextMenu.js.map +1 -1
  200. package/lib/module/ContextMenuNativeComponent.ts +47 -49
  201. package/lib/module/DatePicker.js +98 -4
  202. package/lib/module/DatePicker.js.map +1 -1
  203. package/lib/module/DatePickerNativeComponent.ts +19 -2
  204. package/lib/module/FloatingActionButton.js +53 -0
  205. package/lib/module/FloatingActionButton.js.map +1 -0
  206. package/lib/module/FloatingActionButtonNativeComponent.ts +58 -0
  207. package/lib/module/FloatingToolbar.js +70 -0
  208. package/lib/module/FloatingToolbar.js.map +1 -0
  209. package/lib/module/FloatingToolbarNativeComponent.ts +47 -0
  210. package/lib/module/LiquidGlass.js +7 -1
  211. package/lib/module/LiquidGlass.js.map +1 -1
  212. package/lib/module/LiquidGlassContainer.js +26 -0
  213. package/lib/module/LiquidGlassContainer.js.map +1 -0
  214. package/lib/module/LiquidGlassContainerNativeComponent.ts +17 -0
  215. package/lib/module/LiquidGlassNativeComponent.ts +8 -0
  216. package/lib/module/NavigationRail.js +99 -0
  217. package/lib/module/NavigationRail.js.map +1 -0
  218. package/lib/module/NavigationRailNativeComponent.ts +107 -0
  219. package/lib/module/PlatformComponentsProvider.js +13 -0
  220. package/lib/module/PlatformComponentsProvider.js.map +1 -0
  221. package/lib/module/SegmentedControl.js +18 -85
  222. package/lib/module/SegmentedControl.js.map +1 -1
  223. package/lib/module/SegmentedControlNativeComponent.ts +14 -0
  224. package/lib/module/SelectionMenu.js +27 -3
  225. package/lib/module/SelectionMenu.js.map +1 -1
  226. package/lib/module/SelectionMenuNativeComponent.ts +26 -4
  227. package/lib/module/SplitButton.js +91 -0
  228. package/lib/module/SplitButton.js.map +1 -0
  229. package/lib/module/TabBar.js +196 -0
  230. package/lib/module/TabBar.js.map +1 -0
  231. package/lib/module/TabBarAccessoryNativeComponent.ts +19 -0
  232. package/lib/module/TabBarNativeComponent.ts +145 -0
  233. package/lib/module/TextField.js +352 -0
  234. package/lib/module/TextField.js.map +1 -0
  235. package/lib/module/TextFieldNativeComponent.ts +324 -0
  236. package/lib/module/focusRegistry.js +75 -0
  237. package/lib/module/focusRegistry.js.map +1 -0
  238. package/lib/module/haptics.js +2 -0
  239. package/lib/module/haptics.js.map +1 -0
  240. package/lib/module/icons.js +101 -0
  241. package/lib/module/icons.js.map +1 -0
  242. package/lib/module/index.js +13 -0
  243. package/lib/module/index.js.map +1 -1
  244. package/lib/module/index.web.js +12 -59
  245. package/lib/module/index.web.js.map +1 -1
  246. package/lib/module/jest.js +840 -0
  247. package/lib/module/jest.js.map +1 -0
  248. package/lib/module/labelStyle.js +23 -0
  249. package/lib/module/labelStyle.js.map +1 -0
  250. package/lib/module/menuItems.js +65 -0
  251. package/lib/module/menuItems.js.map +1 -0
  252. package/lib/module/reactNativeInternals.d.js +2 -0
  253. package/lib/module/reactNativeInternals.d.js.map +1 -0
  254. package/lib/module/selectionIdentifiers.js +14 -0
  255. package/lib/module/selectionIdentifiers.js.map +1 -0
  256. package/lib/module/submitBehavior.js +15 -0
  257. package/lib/module/submitBehavior.js.map +1 -0
  258. package/lib/module/tabItems.js +45 -0
  259. package/lib/module/tabItems.js.map +1 -0
  260. package/lib/module/web/Button.js +164 -0
  261. package/lib/module/web/Button.js.map +1 -0
  262. package/lib/module/web/ButtonGroup.js +113 -0
  263. package/lib/module/web/ButtonGroup.js.map +1 -0
  264. package/lib/module/web/DatePicker.js +162 -0
  265. package/lib/module/web/DatePicker.js.map +1 -0
  266. package/lib/module/web/DateRangePicker.js +131 -0
  267. package/lib/module/web/DateRangePicker.js.map +1 -0
  268. package/lib/module/web/Dialog.js +48 -0
  269. package/lib/module/web/Dialog.js.map +1 -0
  270. package/lib/module/web/FloatingActionButton.js +94 -0
  271. package/lib/module/web/FloatingActionButton.js.map +1 -0
  272. package/lib/module/web/Icon.js +29 -0
  273. package/lib/module/web/Icon.js.map +1 -0
  274. package/lib/module/web/NativeTheme.js +23 -0
  275. package/lib/module/web/NativeTheme.js.map +1 -0
  276. package/lib/module/web/NavigationRail.js +133 -0
  277. package/lib/module/web/NavigationRail.js.map +1 -0
  278. package/lib/module/web/PlatformComponentsProvider.js +44 -0
  279. package/lib/module/web/PlatformComponentsProvider.js.map +1 -0
  280. package/lib/module/web/SegmentedControl.js +112 -0
  281. package/lib/module/web/SegmentedControl.js.map +1 -0
  282. package/lib/module/web/SelectionMenu.js +137 -0
  283. package/lib/module/web/SelectionMenu.js.map +1 -0
  284. package/lib/module/web/SplitButton.js +30 -0
  285. package/lib/module/web/SplitButton.js.map +1 -0
  286. package/lib/module/web/TabBar.js +126 -0
  287. package/lib/module/web/TabBar.js.map +1 -0
  288. package/lib/module/web/TextField.js +316 -0
  289. package/lib/module/web/TextField.js.map +1 -0
  290. package/lib/module/web/components.js +33 -0
  291. package/lib/module/web/components.js.map +1 -0
  292. package/lib/module/web/containers.js +112 -0
  293. package/lib/module/web/containers.js.map +1 -0
  294. package/lib/module/web/dateInput.js +109 -0
  295. package/lib/module/web/dateInput.js.map +1 -0
  296. package/lib/module/web/shared.js +179 -0
  297. package/lib/module/web/shared.js.map +1 -0
  298. package/lib/module/webComponents.js +4 -0
  299. package/lib/module/webComponents.js.map +1 -0
  300. package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
  301. package/lib/typescript/commonjs/src/Button.d.ts +184 -0
  302. package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
  303. package/lib/typescript/commonjs/src/ButtonGroup.d.ts +117 -0
  304. package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
  305. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +154 -0
  306. package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  307. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +148 -0
  308. package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
  309. package/lib/typescript/commonjs/src/ContextMenu.d.ts +20 -33
  310. package/lib/typescript/commonjs/src/ContextMenu.d.ts.map +1 -1
  311. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts +45 -47
  312. package/lib/typescript/commonjs/src/ContextMenuNativeComponent.d.ts.map +1 -1
  313. package/lib/typescript/commonjs/src/DatePicker.d.ts +74 -1
  314. package/lib/typescript/commonjs/src/DatePicker.d.ts.map +1 -1
  315. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts +16 -1
  316. package/lib/typescript/commonjs/src/DatePickerNativeComponent.d.ts.map +1 -1
  317. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts +67 -0
  318. package/lib/typescript/commonjs/src/FloatingActionButton.d.ts.map +1 -0
  319. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  320. package/lib/typescript/commonjs/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  321. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +75 -0
  322. package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
  323. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +36 -0
  324. package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  325. package/lib/typescript/commonjs/src/LiquidGlass.d.ts +17 -0
  326. package/lib/typescript/commonjs/src/LiquidGlass.d.ts.map +1 -1
  327. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts +27 -0
  328. package/lib/typescript/commonjs/src/LiquidGlassContainer.d.ts.map +1 -0
  329. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  330. package/lib/typescript/commonjs/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  331. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts +7 -0
  332. package/lib/typescript/commonjs/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  333. package/lib/typescript/commonjs/src/NavigationRail.d.ts +86 -0
  334. package/lib/typescript/commonjs/src/NavigationRail.d.ts.map +1 -0
  335. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts +81 -0
  336. package/lib/typescript/commonjs/src/NavigationRailNativeComponent.d.ts.map +1 -0
  337. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts +6 -0
  338. package/lib/typescript/commonjs/src/PlatformComponentsProvider.d.ts.map +1 -0
  339. package/lib/typescript/commonjs/src/SegmentedControl.d.ts +35 -47
  340. package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
  341. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +11 -0
  342. package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  343. package/lib/typescript/commonjs/src/SelectionMenu.d.ts +44 -2
  344. package/lib/typescript/commonjs/src/SelectionMenu.d.ts.map +1 -1
  345. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts +20 -4
  346. package/lib/typescript/commonjs/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  347. package/lib/typescript/commonjs/src/SplitButton.d.ts +83 -0
  348. package/lib/typescript/commonjs/src/SplitButton.d.ts.map +1 -0
  349. package/lib/typescript/commonjs/src/TabBar.d.ts +144 -0
  350. package/lib/typescript/commonjs/src/TabBar.d.ts.map +1 -0
  351. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  352. package/lib/typescript/commonjs/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  353. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts +110 -0
  354. package/lib/typescript/commonjs/src/TabBarNativeComponent.d.ts.map +1 -0
  355. package/lib/typescript/commonjs/src/TextField.d.ts +332 -0
  356. package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
  357. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +240 -0
  358. package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
  359. package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
  360. package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
  361. package/lib/typescript/commonjs/src/haptics.d.ts +20 -0
  362. package/lib/typescript/commonjs/src/haptics.d.ts.map +1 -0
  363. package/lib/typescript/commonjs/src/icons.d.ts +58 -0
  364. package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
  365. package/lib/typescript/commonjs/src/index.d.ts +13 -0
  366. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  367. package/lib/typescript/commonjs/src/index.web.d.ts +25 -133
  368. package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
  369. package/lib/typescript/commonjs/src/jest.d.ts +139 -0
  370. package/lib/typescript/commonjs/src/jest.d.ts.map +1 -0
  371. package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
  372. package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
  373. package/lib/typescript/commonjs/src/menuItems.d.ts +100 -0
  374. package/lib/typescript/commonjs/src/menuItems.d.ts.map +1 -0
  375. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts +3 -0
  376. package/lib/typescript/commonjs/src/selectionIdentifiers.d.ts.map +1 -0
  377. package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
  378. package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
  379. package/lib/typescript/commonjs/src/submitBehavior.d.ts +9 -0
  380. package/lib/typescript/commonjs/src/submitBehavior.d.ts.map +1 -0
  381. package/lib/typescript/commonjs/src/tabItems.d.ts +55 -0
  382. package/lib/typescript/commonjs/src/tabItems.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/src/web/Button.d.ts +9 -0
  384. package/lib/typescript/commonjs/src/web/Button.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts +11 -0
  386. package/lib/typescript/commonjs/src/web/ButtonGroup.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/src/web/DatePicker.d.ts +14 -0
  388. package/lib/typescript/commonjs/src/web/DatePicker.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts +11 -0
  390. package/lib/typescript/commonjs/src/web/DateRangePicker.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/src/web/Dialog.d.ts +12 -0
  392. package/lib/typescript/commonjs/src/web/Dialog.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts +8 -0
  394. package/lib/typescript/commonjs/src/web/FloatingActionButton.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/src/web/Icon.d.ts +12 -0
  396. package/lib/typescript/commonjs/src/web/Icon.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts +10 -0
  398. package/lib/typescript/commonjs/src/web/NativeTheme.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts +8 -0
  400. package/lib/typescript/commonjs/src/web/NavigationRail.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts +10 -0
  402. package/lib/typescript/commonjs/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts +8 -0
  404. package/lib/typescript/commonjs/src/web/SegmentedControl.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts +10 -0
  406. package/lib/typescript/commonjs/src/web/SelectionMenu.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/src/web/SplitButton.d.ts +9 -0
  408. package/lib/typescript/commonjs/src/web/SplitButton.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/src/web/TabBar.d.ts +9 -0
  410. package/lib/typescript/commonjs/src/web/TabBar.d.ts.map +1 -0
  411. package/lib/typescript/commonjs/src/web/TextField.d.ts +9 -0
  412. package/lib/typescript/commonjs/src/web/TextField.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/src/web/components.d.ts +17 -0
  414. package/lib/typescript/commonjs/src/web/components.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/src/web/containers.d.ts +24 -0
  416. package/lib/typescript/commonjs/src/web/containers.d.ts.map +1 -0
  417. package/lib/typescript/commonjs/src/web/dateInput.d.ts +20 -0
  418. package/lib/typescript/commonjs/src/web/dateInput.d.ts.map +1 -0
  419. package/lib/typescript/commonjs/src/web/shared.d.ts +43 -0
  420. package/lib/typescript/commonjs/src/web/shared.d.ts.map +1 -0
  421. package/lib/typescript/commonjs/src/webComponents.d.ts +43 -0
  422. package/lib/typescript/commonjs/src/webComponents.d.ts.map +1 -0
  423. package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
  424. package/lib/typescript/module/src/Button.d.ts +184 -0
  425. package/lib/typescript/module/src/Button.d.ts.map +1 -0
  426. package/lib/typescript/module/src/ButtonGroup.d.ts +117 -0
  427. package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
  428. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +154 -0
  429. package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
  430. package/lib/typescript/module/src/ButtonNativeComponent.d.ts +148 -0
  431. package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
  432. package/lib/typescript/module/src/ContextMenu.d.ts +20 -33
  433. package/lib/typescript/module/src/ContextMenu.d.ts.map +1 -1
  434. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts +45 -47
  435. package/lib/typescript/module/src/ContextMenuNativeComponent.d.ts.map +1 -1
  436. package/lib/typescript/module/src/DatePicker.d.ts +74 -1
  437. package/lib/typescript/module/src/DatePicker.d.ts.map +1 -1
  438. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts +16 -1
  439. package/lib/typescript/module/src/DatePickerNativeComponent.d.ts.map +1 -1
  440. package/lib/typescript/module/src/FloatingActionButton.d.ts +67 -0
  441. package/lib/typescript/module/src/FloatingActionButton.d.ts.map +1 -0
  442. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts +43 -0
  443. package/lib/typescript/module/src/FloatingActionButtonNativeComponent.d.ts.map +1 -0
  444. package/lib/typescript/module/src/FloatingToolbar.d.ts +75 -0
  445. package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
  446. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +36 -0
  447. package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
  448. package/lib/typescript/module/src/LiquidGlass.d.ts +17 -0
  449. package/lib/typescript/module/src/LiquidGlass.d.ts.map +1 -1
  450. package/lib/typescript/module/src/LiquidGlassContainer.d.ts +27 -0
  451. package/lib/typescript/module/src/LiquidGlassContainer.d.ts.map +1 -0
  452. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts +13 -0
  453. package/lib/typescript/module/src/LiquidGlassContainerNativeComponent.d.ts.map +1 -0
  454. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts +7 -0
  455. package/lib/typescript/module/src/LiquidGlassNativeComponent.d.ts.map +1 -1
  456. package/lib/typescript/module/src/NavigationRail.d.ts +86 -0
  457. package/lib/typescript/module/src/NavigationRail.d.ts.map +1 -0
  458. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts +81 -0
  459. package/lib/typescript/module/src/NavigationRailNativeComponent.d.ts.map +1 -0
  460. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts +6 -0
  461. package/lib/typescript/module/src/PlatformComponentsProvider.d.ts.map +1 -0
  462. package/lib/typescript/module/src/SegmentedControl.d.ts +35 -47
  463. package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
  464. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +11 -0
  465. package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
  466. package/lib/typescript/module/src/SelectionMenu.d.ts +44 -2
  467. package/lib/typescript/module/src/SelectionMenu.d.ts.map +1 -1
  468. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts +20 -4
  469. package/lib/typescript/module/src/SelectionMenuNativeComponent.d.ts.map +1 -1
  470. package/lib/typescript/module/src/SplitButton.d.ts +83 -0
  471. package/lib/typescript/module/src/SplitButton.d.ts.map +1 -0
  472. package/lib/typescript/module/src/TabBar.d.ts +144 -0
  473. package/lib/typescript/module/src/TabBar.d.ts.map +1 -0
  474. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts +13 -0
  475. package/lib/typescript/module/src/TabBarAccessoryNativeComponent.d.ts.map +1 -0
  476. package/lib/typescript/module/src/TabBarNativeComponent.d.ts +110 -0
  477. package/lib/typescript/module/src/TabBarNativeComponent.d.ts.map +1 -0
  478. package/lib/typescript/module/src/TextField.d.ts +332 -0
  479. package/lib/typescript/module/src/TextField.d.ts.map +1 -0
  480. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +240 -0
  481. package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
  482. package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
  483. package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
  484. package/lib/typescript/module/src/haptics.d.ts +20 -0
  485. package/lib/typescript/module/src/haptics.d.ts.map +1 -0
  486. package/lib/typescript/module/src/icons.d.ts +58 -0
  487. package/lib/typescript/module/src/icons.d.ts.map +1 -0
  488. package/lib/typescript/module/src/index.d.ts +13 -0
  489. package/lib/typescript/module/src/index.d.ts.map +1 -1
  490. package/lib/typescript/module/src/index.web.d.ts +25 -133
  491. package/lib/typescript/module/src/index.web.d.ts.map +1 -1
  492. package/lib/typescript/module/src/jest.d.ts +139 -0
  493. package/lib/typescript/module/src/jest.d.ts.map +1 -0
  494. package/lib/typescript/module/src/labelStyle.d.ts +20 -0
  495. package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
  496. package/lib/typescript/module/src/menuItems.d.ts +100 -0
  497. package/lib/typescript/module/src/menuItems.d.ts.map +1 -0
  498. package/lib/typescript/module/src/selectionIdentifiers.d.ts +3 -0
  499. package/lib/typescript/module/src/selectionIdentifiers.d.ts.map +1 -0
  500. package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
  501. package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
  502. package/lib/typescript/module/src/submitBehavior.d.ts +9 -0
  503. package/lib/typescript/module/src/submitBehavior.d.ts.map +1 -0
  504. package/lib/typescript/module/src/tabItems.d.ts +55 -0
  505. package/lib/typescript/module/src/tabItems.d.ts.map +1 -0
  506. package/lib/typescript/module/src/web/Button.d.ts +9 -0
  507. package/lib/typescript/module/src/web/Button.d.ts.map +1 -0
  508. package/lib/typescript/module/src/web/ButtonGroup.d.ts +11 -0
  509. package/lib/typescript/module/src/web/ButtonGroup.d.ts.map +1 -0
  510. package/lib/typescript/module/src/web/DatePicker.d.ts +14 -0
  511. package/lib/typescript/module/src/web/DatePicker.d.ts.map +1 -0
  512. package/lib/typescript/module/src/web/DateRangePicker.d.ts +11 -0
  513. package/lib/typescript/module/src/web/DateRangePicker.d.ts.map +1 -0
  514. package/lib/typescript/module/src/web/Dialog.d.ts +12 -0
  515. package/lib/typescript/module/src/web/Dialog.d.ts.map +1 -0
  516. package/lib/typescript/module/src/web/FloatingActionButton.d.ts +8 -0
  517. package/lib/typescript/module/src/web/FloatingActionButton.d.ts.map +1 -0
  518. package/lib/typescript/module/src/web/Icon.d.ts +12 -0
  519. package/lib/typescript/module/src/web/Icon.d.ts.map +1 -0
  520. package/lib/typescript/module/src/web/NativeTheme.d.ts +10 -0
  521. package/lib/typescript/module/src/web/NativeTheme.d.ts.map +1 -0
  522. package/lib/typescript/module/src/web/NavigationRail.d.ts +8 -0
  523. package/lib/typescript/module/src/web/NavigationRail.d.ts.map +1 -0
  524. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts +10 -0
  525. package/lib/typescript/module/src/web/PlatformComponentsProvider.d.ts.map +1 -0
  526. package/lib/typescript/module/src/web/SegmentedControl.d.ts +8 -0
  527. package/lib/typescript/module/src/web/SegmentedControl.d.ts.map +1 -0
  528. package/lib/typescript/module/src/web/SelectionMenu.d.ts +10 -0
  529. package/lib/typescript/module/src/web/SelectionMenu.d.ts.map +1 -0
  530. package/lib/typescript/module/src/web/SplitButton.d.ts +9 -0
  531. package/lib/typescript/module/src/web/SplitButton.d.ts.map +1 -0
  532. package/lib/typescript/module/src/web/TabBar.d.ts +9 -0
  533. package/lib/typescript/module/src/web/TabBar.d.ts.map +1 -0
  534. package/lib/typescript/module/src/web/TextField.d.ts +9 -0
  535. package/lib/typescript/module/src/web/TextField.d.ts.map +1 -0
  536. package/lib/typescript/module/src/web/components.d.ts +17 -0
  537. package/lib/typescript/module/src/web/components.d.ts.map +1 -0
  538. package/lib/typescript/module/src/web/containers.d.ts +24 -0
  539. package/lib/typescript/module/src/web/containers.d.ts.map +1 -0
  540. package/lib/typescript/module/src/web/dateInput.d.ts +20 -0
  541. package/lib/typescript/module/src/web/dateInput.d.ts.map +1 -0
  542. package/lib/typescript/module/src/web/shared.d.ts +43 -0
  543. package/lib/typescript/module/src/web/shared.d.ts.map +1 -0
  544. package/lib/typescript/module/src/webComponents.d.ts +43 -0
  545. package/lib/typescript/module/src/webComponents.d.ts.map +1 -0
  546. package/package.json +55 -4
  547. package/plugin/build/index.d.ts +3 -2
  548. package/plugin/build/index.d.ts.map +1 -1
  549. package/react-native.config.js +6 -0
  550. package/shared/PCButtonComponentDescriptors-custom.h +22 -0
  551. package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
  552. package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
  553. package/shared/PCButtonGroupShadowNode-custom.h +55 -0
  554. package/shared/PCButtonGroupState-custom.h +61 -0
  555. package/shared/PCButtonShadowNode-custom.cpp +48 -0
  556. package/shared/PCButtonShadowNode-custom.h +55 -0
  557. package/shared/PCButtonState-custom.h +61 -0
  558. package/shared/PCFloatingActionButtonComponentDescriptors-custom.h +22 -0
  559. package/shared/PCFloatingActionButtonShadowNode-custom.cpp +48 -0
  560. package/shared/PCFloatingActionButtonShadowNode-custom.h +54 -0
  561. package/shared/PCFloatingActionButtonState-custom.h +61 -0
  562. package/shared/PCNavigationRailComponentDescriptors-custom.h +47 -0
  563. package/shared/PCNavigationRailShadowNode-custom.h +42 -0
  564. package/shared/PCNavigationRailState-custom.h +62 -0
  565. package/shared/PCTabBarComponentDescriptors-custom.h +22 -0
  566. package/shared/PCTabBarShadowNode-custom.cpp +54 -0
  567. package/shared/PCTabBarShadowNode-custom.h +54 -0
  568. package/shared/PCTabBarState-custom.h +62 -0
  569. package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
  570. package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
  571. package/shared/PCTextFieldShadowNode-custom.h +55 -0
  572. package/shared/PCTextFieldState-custom.h +61 -0
  573. package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +6 -0
  574. package/src/Button.tsx +359 -0
  575. package/src/ButtonGroup.tsx +251 -0
  576. package/src/ButtonGroupNativeComponent.ts +191 -0
  577. package/src/ButtonNativeComponent.ts +192 -0
  578. package/src/ContextMenu.tsx +34 -81
  579. package/src/ContextMenuNativeComponent.ts +47 -49
  580. package/src/DatePicker.tsx +182 -4
  581. package/src/DatePickerNativeComponent.ts +19 -2
  582. package/src/FloatingActionButton.tsx +121 -0
  583. package/src/FloatingActionButtonNativeComponent.ts +58 -0
  584. package/src/FloatingToolbar.tsx +164 -0
  585. package/src/FloatingToolbarNativeComponent.ts +47 -0
  586. package/src/LiquidGlass.tsx +24 -1
  587. package/src/LiquidGlassContainer.tsx +42 -0
  588. package/src/LiquidGlassContainerNativeComponent.ts +17 -0
  589. package/src/LiquidGlassNativeComponent.ts +8 -0
  590. package/src/NavigationRail.tsx +203 -0
  591. package/src/NavigationRailNativeComponent.ts +107 -0
  592. package/src/PlatformComponentsProvider.tsx +15 -0
  593. package/src/SegmentedControl.tsx +57 -119
  594. package/src/SegmentedControlNativeComponent.ts +14 -0
  595. package/src/SelectionMenu.tsx +81 -6
  596. package/src/SelectionMenuNativeComponent.ts +26 -4
  597. package/src/SplitButton.tsx +198 -0
  598. package/src/TabBar.tsx +373 -0
  599. package/src/TabBarAccessoryNativeComponent.ts +19 -0
  600. package/src/TabBarNativeComponent.ts +145 -0
  601. package/src/TextField.tsx +908 -0
  602. package/src/TextFieldNativeComponent.ts +324 -0
  603. package/src/focusRegistry.ts +90 -0
  604. package/src/haptics.ts +31 -0
  605. package/src/icons.ts +143 -0
  606. package/src/index.tsx +13 -0
  607. package/src/index.web.tsx +53 -199
  608. package/src/jest.tsx +958 -0
  609. package/src/labelStyle.ts +36 -0
  610. package/src/menuItems.ts +152 -0
  611. package/src/reactNativeInternals.d.ts +22 -0
  612. package/src/selectionIdentifiers.ts +17 -0
  613. package/src/sharedTypes.ts +7 -1
  614. package/src/submitBehavior.ts +16 -0
  615. package/src/tabItems.ts +113 -0
  616. package/src/web/Button.tsx +201 -0
  617. package/src/web/ButtonGroup.tsx +154 -0
  618. package/src/web/DatePicker.tsx +204 -0
  619. package/src/web/DateRangePicker.tsx +135 -0
  620. package/src/web/Dialog.tsx +54 -0
  621. package/src/web/FloatingActionButton.tsx +76 -0
  622. package/src/web/Icon.tsx +33 -0
  623. package/src/web/NativeTheme.ts +23 -0
  624. package/src/web/NavigationRail.tsx +148 -0
  625. package/src/web/PlatformComponentsProvider.tsx +48 -0
  626. package/src/web/SegmentedControl.tsx +127 -0
  627. package/src/web/SelectionMenu.tsx +149 -0
  628. package/src/web/SplitButton.tsx +32 -0
  629. package/src/web/TabBar.tsx +150 -0
  630. package/src/web/TextField.tsx +361 -0
  631. package/src/web/components.tsx +71 -0
  632. package/src/web/containers.tsx +130 -0
  633. package/src/web/dateInput.ts +137 -0
  634. package/src/web/shared.ts +176 -0
  635. package/src/webComponents.ts +45 -0
  636. package/android/src/main/java/com/platformcomponents/DateConstraints.kt +0 -83
@@ -0,0 +1,109 @@
1
+ package com.platformcomponents
2
+
3
+ import com.facebook.react.bridge.Arguments
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import com.facebook.react.bridge.WritableMap
6
+ import com.facebook.react.uimanager.ReactStylesDiffMap
7
+ import com.facebook.react.uimanager.SimpleViewManager
8
+ import com.facebook.react.uimanager.StateWrapper
9
+ import com.facebook.react.uimanager.ThemedReactContext
10
+ import com.facebook.react.uimanager.UIManagerHelper
11
+ import com.facebook.react.uimanager.ViewManagerDelegate
12
+ import com.facebook.react.uimanager.events.Event
13
+ import com.facebook.react.viewmanagers.PCFloatingActionButtonManagerDelegate
14
+ import com.facebook.react.viewmanagers.PCFloatingActionButtonManagerInterface
15
+
16
+ class PCFloatingActionButtonViewManager :
17
+ SimpleViewManager<PCFloatingActionButtonView>(),
18
+ PCFloatingActionButtonManagerInterface<PCFloatingActionButtonView> {
19
+
20
+ private val delegate: ViewManagerDelegate<PCFloatingActionButtonView> =
21
+ PCFloatingActionButtonManagerDelegate(this)
22
+
23
+ override fun getName(): String = "PCFloatingActionButton"
24
+
25
+ override fun getDelegate(): ViewManagerDelegate<PCFloatingActionButtonView> = delegate
26
+
27
+ override fun createViewInstance(reactContext: ThemedReactContext): PCFloatingActionButtonView =
28
+ PCFloatingActionButtonView(reactContext)
29
+
30
+ /**
31
+ * Pass the StateWrapper to the view so it can update Fabric state with its
32
+ * size, and report it right away so the first layout already fits.
33
+ */
34
+ override fun updateState(
35
+ view: PCFloatingActionButtonView,
36
+ props: ReactStylesDiffMap,
37
+ stateWrapper: StateWrapper
38
+ ): Any? {
39
+ view.stateWrapper = stateWrapper
40
+ view.reportIntrinsicSize()
41
+ return null
42
+ }
43
+
44
+ override fun addEventEmitters(reactContext: ThemedReactContext, view: PCFloatingActionButtonView) {
45
+ view.onPress = {
46
+ PCHaptics.perform(view, view.haptics)
47
+ UIManagerHelper.getEventDispatcherForReactTag(reactContext, view.id)?.dispatchEvent(
48
+ PressEvent(UIManagerHelper.getSurfaceId(view), view.id)
49
+ )
50
+ }
51
+ }
52
+
53
+ // icon: {iconType, iconName, iconUri, iconScale, iconTinted}
54
+ override fun setIcon(view: PCFloatingActionButtonView, value: ReadableMap?) {
55
+ view.applyIcon(PCButtonSupport.parseIcon(value))
56
+ }
57
+
58
+ override fun setLabel(view: PCFloatingActionButtonView, value: String?) {
59
+ view.applyLabel(value ?: "")
60
+ }
61
+
62
+ // "small" | "regular" | "medium" | "large"
63
+ override fun setSize(view: PCFloatingActionButtonView, value: String?) {
64
+ view.applySize(value)
65
+ }
66
+
67
+ // "true" | "false"
68
+ override fun setExtended(view: PCFloatingActionButtonView, value: String?) {
69
+ view.applyExtended(value != "false")
70
+ }
71
+
72
+ // Colors arrive already processed by React Native (ARGB ints)
73
+ override fun setColor(view: PCFloatingActionButtonView, value: Int?) {
74
+ view.applyColors(value, view.foregroundColor)
75
+ }
76
+
77
+ override fun setForegroundColor(view: PCFloatingActionButtonView, value: Int?) {
78
+ view.applyColors(view.containerColor, value)
79
+ }
80
+
81
+ override fun setInteractivity(view: PCFloatingActionButtonView, value: String?) {
82
+ view.applyInteractivity(value)
83
+ }
84
+
85
+ override fun setSpokenLabel(view: PCFloatingActionButtonView, value: String?) {
86
+ view.applySpokenLabel(value ?: "")
87
+ }
88
+
89
+ // "" (none added) | "none" | "selection" | "light" | "medium" | "heavy" | "success" | "warning" | "error"
90
+ override fun setHaptics(view: PCFloatingActionButtonView, value: String?) {
91
+ view.haptics = PCHaptics.configure(view, value)
92
+ }
93
+
94
+ override fun setScrollViewNativeID(view: PCFloatingActionButtonView, value: String?) {
95
+ view.applyScrollViewNativeID(value ?: "")
96
+ }
97
+
98
+ // --- Events ---
99
+
100
+ private class PressEvent(surfaceId: Int, viewTag: Int) : Event<PressEvent>(surfaceId, viewTag) {
101
+ // Every press counts; two quick presses must not merge into one
102
+ override fun canCoalesce(): Boolean = false
103
+
104
+ override fun getEventName(): String = "topFabPress"
105
+
106
+ // Fabric reads the payload from here
107
+ override fun getEventData(): WritableMap = Arguments.createMap()
108
+ }
109
+ }
@@ -0,0 +1,247 @@
1
+ package com.platformcomponents
2
+
3
+ import android.content.Context
4
+ import android.content.res.ColorStateList
5
+ import android.graphics.Color
6
+ import android.view.View
7
+ import android.view.ViewTreeObserver
8
+ import android.view.animation.AccelerateInterpolator
9
+ import android.view.animation.DecelerateInterpolator
10
+ import androidx.core.content.res.ResourcesCompat
11
+ import com.facebook.react.uimanager.util.ReactFindViewUtil
12
+ import com.google.android.material.R as MaterialR
13
+ import com.google.android.material.color.MaterialColors
14
+ import com.google.android.material.floatingtoolbar.FloatingToolbarLayout
15
+ import com.google.android.material.shape.MaterialShapeDrawable
16
+
17
+ /**
18
+ * A Material 3 floating toolbar. The Material container (shape, elevation,
19
+ * color) hosts React children, which Fabric lays out itself.
20
+ */
21
+ class PCFloatingToolbarView(context: Context) :
22
+ FloatingToolbarLayout(
23
+ // Material widgets need a Material theme; fall back to Material 3 defaults instead of crashing.
24
+ PCThemeSupport.materialContext(context, "FloatingToolbar"),
25
+ null,
26
+ 0,
27
+ R.style.PCFloatingToolbar
28
+ ) {
29
+
30
+ companion object {
31
+ private const val TAG = "PCFloatingToolbar"
32
+ }
33
+
34
+ // --- Props ---
35
+ var variant: String = "standard" // "standard" | "vibrant"
36
+ var color: Int? = null
37
+
38
+ /** The button overlay for Buttons inside this toolbar (see PCButtonView). */
39
+ val buttonOverlay: Int
40
+ get() = if (variant == "vibrant") R.style.PCToolbarOverlay_Vibrant else R.style.PCToolbarOverlay
41
+
42
+ // --- Native theme ---
43
+ private val nativeThemeListener = PCNativeTheme.Listener {
44
+ ResourcesCompat.clearCachesForTheme(context.theme)
45
+ applyColors()
46
+ }
47
+
48
+ // --- Linked scroll view ---
49
+ var scrollViewNativeID: String = ""
50
+ var hideOnScroll: Boolean = false
51
+ private var watchedScrollView: View? = null
52
+ private var watchedObserver: ViewTreeObserver? = null
53
+ private var lastScrollY = 0
54
+ private var scrollHidden = false
55
+ private val scrollViewFinder = object : ReactFindViewUtil.OnViewFoundListener {
56
+ override fun getNativeId(): String = scrollViewNativeID
57
+ override fun onViewFound(view: View) = watch(view)
58
+ }
59
+ // A tree observer rather than the view's own scroll listener, which a
60
+ // TabBar linked to the same ScrollView would replace
61
+ private val scrollListener = ViewTreeObserver.OnScrollChangedListener {
62
+ val view = watchedScrollView ?: return@OnScrollChangedListener
63
+ val scrollY = view.scrollY
64
+ val dy = scrollY - lastScrollY
65
+ lastScrollY = scrollY
66
+ onContentScrolled(scrollY, dy)
67
+ }
68
+
69
+ init {
70
+ clipChildren = false
71
+ clipToPadding = false
72
+ applyColors()
73
+ }
74
+
75
+ // ---- Public apply* (called by manager) ----
76
+
77
+ fun applyVariant(value: String?) {
78
+ val parsed = if (value == "vibrant") "vibrant" else "standard"
79
+ if (variant == parsed) return
80
+ variant = parsed
81
+ applyColors()
82
+ // Buttons inside take the toolbar's button styles
83
+ for (i in 0 until childCount) {
84
+ (getChildAt(i) as? PCButtonView)?.refreshToolbarStyle()
85
+ }
86
+ }
87
+
88
+ fun applyColor(value: Int?) {
89
+ if (color == value) return
90
+ color = value
91
+ applyColors()
92
+ }
93
+
94
+ /**
95
+ * A `backgroundColor` style would replace the Material shape; route it into
96
+ * the color instead. React Native resets it with transparent.
97
+ */
98
+ override fun setBackgroundColor(color: Int) {
99
+ applyColor(if (color == Color.TRANSPARENT) null else color)
100
+ }
101
+
102
+ private fun applyColors() {
103
+ val resolved = color ?: MaterialColors.getColor(
104
+ this,
105
+ if (variant == "vibrant") MaterialR.attr.colorPrimaryContainer else MaterialR.attr.colorSurfaceContainer,
106
+ Color.TRANSPARENT
107
+ )
108
+ val shape = background as? MaterialShapeDrawable
109
+ if (shape != null) {
110
+ shape.fillColor = ColorStateList.valueOf(resolved)
111
+ } else {
112
+ backgroundTintList = ColorStateList.valueOf(resolved)
113
+ }
114
+ }
115
+
116
+ // ---- Hide on scroll ----
117
+ // Material's HideViewOnScrollBehavior only works in a CoordinatorLayout,
118
+ // which a React Native screen doesn't have. The toolbar does its motion
119
+ // itself, as TabBar does: it slides past its edge of the linked ScrollView
120
+ // (175 ms out, 225 ms back) while the content scrolls down, and returns as
121
+ // it scrolls up or reaches the top. The host view moves, so React Native's
122
+ // touch targeting follows it and the content underneath takes the touches.
123
+
124
+ fun applyScrollViewNativeID(value: String) {
125
+ if (scrollViewNativeID == value) return
126
+ scrollViewNativeID = value
127
+ findScrollView()
128
+ }
129
+
130
+ fun applyHideOnScroll(value: Boolean) {
131
+ if (hideOnScroll == value) return
132
+ hideOnScroll = value
133
+ if (!value) setScrollHidden(false)
134
+ }
135
+
136
+ /** The ScrollView with scrollViewNativeID, now or once it mounts. */
137
+ private fun findScrollView() {
138
+ unwatch()
139
+ ReactFindViewUtil.removeViewListener(scrollViewFinder)
140
+ if (scrollViewNativeID.isEmpty() || !isAttachedToWindow) return
141
+ val found = ReactFindViewUtil.findView(rootView, scrollViewNativeID)
142
+ if (found != null) watch(found) else ReactFindViewUtil.addViewListener(scrollViewFinder)
143
+ }
144
+
145
+ private fun watch(view: View) {
146
+ ReactFindViewUtil.removeViewListener(scrollViewFinder)
147
+ unwatch()
148
+ watchedScrollView = view
149
+ lastScrollY = view.scrollY
150
+ watchedObserver = view.viewTreeObserver.also { it.addOnScrollChangedListener(scrollListener) }
151
+ }
152
+
153
+ private fun unwatch() {
154
+ watchedObserver?.takeIf { it.isAlive }?.removeOnScrollChangedListener(scrollListener)
155
+ watchedObserver = null
156
+ watchedScrollView = null
157
+ if (scrollHidden) {
158
+ scrollHidden = false
159
+ animate().cancel()
160
+ translationX = 0f
161
+ translationY = 0f
162
+ }
163
+ }
164
+
165
+ private fun onContentScrolled(scrollY: Int, dy: Int) {
166
+ if (!hideOnScroll || dy == 0) return
167
+ // Back at the top the toolbar always shows
168
+ setScrollHidden(scrollY > 0 && dy > 0)
169
+ }
170
+
171
+ private fun setScrollHidden(hide: Boolean) {
172
+ if (scrollHidden == hide) return
173
+ scrollHidden = hide
174
+ val (dx, dy) = if (hide) hiddenTranslation() else 0f to 0f
175
+ animate().cancel()
176
+ animate()
177
+ .translationX(dx)
178
+ .translationY(dy)
179
+ .setDuration(if (hide) 175L else 225L)
180
+ .setInterpolator(if (hide) AccelerateInterpolator() else DecelerateInterpolator())
181
+ .start()
182
+ }
183
+
184
+ /**
185
+ * How far to move to get past the linked edge: top or bottom for a
186
+ * horizontal toolbar, left or right for a vertical one, from the toolbar to
187
+ * that edge of the ScrollView plus the elevation shadow, and at least the
188
+ * toolbar's own size.
189
+ */
190
+ private fun hiddenTranslation(): Pair<Float, Float> {
191
+ val scrollView = watchedScrollView ?: return 0f to 0f
192
+ val here = IntArray(2).also { getLocationInWindow(it) }
193
+ val there = IntArray(2).also { scrollView.getLocationInWindow(it) }
194
+ // Where the toolbar sits without the translation it may have
195
+ val left = here[0] - translationX
196
+ val top = here[1] - translationY
197
+ val right = left + width
198
+ val bottom = top + height
199
+ val scrollLeft = there[0].toFloat()
200
+ val scrollTop = there[1].toFloat()
201
+ val scrollRight = scrollLeft + scrollView.width
202
+ val scrollBottom = scrollTop + scrollView.height
203
+ val shadow = elevation
204
+ return if (width >= height) {
205
+ if (top + bottom < scrollTop + scrollBottom) {
206
+ 0f to minOf(scrollTop - bottom - shadow, -height.toFloat())
207
+ } else {
208
+ 0f to maxOf(scrollBottom - top + shadow, height.toFloat())
209
+ }
210
+ } else {
211
+ if (left + right < scrollLeft + scrollRight) {
212
+ minOf(scrollLeft - right - shadow, -width.toFloat()) to 0f
213
+ } else {
214
+ maxOf(scrollRight - left + shadow, width.toFloat()) to 0f
215
+ }
216
+ }
217
+ }
218
+
219
+ override fun onAttachedToWindow() {
220
+ super.onAttachedToWindow()
221
+ PCNativeTheme.addListener(nativeThemeListener)
222
+ PCNativeTheme.attach(context)
223
+ if (watchedScrollView == null) findScrollView()
224
+ }
225
+
226
+ override fun onDetachedFromWindow() {
227
+ ReactFindViewUtil.removeViewListener(scrollViewFinder)
228
+ unwatch()
229
+ PCNativeTheme.removeListener(nativeThemeListener)
230
+ super.onDetachedFromWindow()
231
+ }
232
+
233
+ // ---- Layout ----
234
+ // Fabric sizes this view and positions its children; FrameLayout must not
235
+ // re-measure or re-position them against its own padding and gravity.
236
+
237
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
238
+ setMeasuredDimension(
239
+ MeasureSpec.getSize(widthMeasureSpec),
240
+ MeasureSpec.getSize(heightMeasureSpec)
241
+ )
242
+ }
243
+
244
+ override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
245
+ // No-op: Fabric lays out the children
246
+ }
247
+ }
@@ -0,0 +1,73 @@
1
+ package com.platformcomponents
2
+
3
+ import android.view.View
4
+ import com.facebook.react.bridge.ReadableMap
5
+ import com.facebook.react.uimanager.ThemedReactContext
6
+ import com.facebook.react.uimanager.ViewGroupManager
7
+ import com.facebook.react.uimanager.ViewManagerDelegate
8
+ import com.facebook.react.viewmanagers.PCFloatingToolbarManagerDelegate
9
+ import com.facebook.react.viewmanagers.PCFloatingToolbarManagerInterface
10
+ import com.platformcomponents.PCButtonSupport.stringOr
11
+
12
+ /**
13
+ * Android ViewManager for FloatingToolbar. Uses ViewGroupManager since the
14
+ * toolbar hosts React children.
15
+ */
16
+ class PCFloatingToolbarViewManager :
17
+ ViewGroupManager<PCFloatingToolbarView>(),
18
+ PCFloatingToolbarManagerInterface<PCFloatingToolbarView> {
19
+
20
+ companion object {
21
+ private const val TAG = "PCFloatingToolbar"
22
+ }
23
+
24
+ private val delegate: ViewManagerDelegate<PCFloatingToolbarView> =
25
+ PCFloatingToolbarManagerDelegate(this)
26
+
27
+ override fun getName(): String = "PCFloatingToolbar"
28
+
29
+ override fun getDelegate(): ViewManagerDelegate<PCFloatingToolbarView> = delegate
30
+
31
+ override fun createViewInstance(reactContext: ThemedReactContext): PCFloatingToolbarView {
32
+ return PCFloatingToolbarView(reactContext)
33
+ }
34
+
35
+ // Colors arrive already processed by React Native (ARGB ints)
36
+ override fun setColor(view: PCFloatingToolbarView, value: Int?) {
37
+ view.applyColor(value)
38
+ }
39
+
40
+ override fun setScrollViewNativeID(view: PCFloatingToolbarView, value: String?) {
41
+ view.applyScrollViewNativeID(value ?: "")
42
+ }
43
+
44
+ override fun setHideOnScroll(view: PCFloatingToolbarView, value: Boolean) {
45
+ view.applyHideOnScroll(value)
46
+ }
47
+
48
+ override fun setIos(view: PCFloatingToolbarView, value: ReadableMap?) {
49
+ // iOS props are ignored on Android
50
+ }
51
+
52
+ // android: {variant}
53
+ override fun setAndroid(view: PCFloatingToolbarView, value: ReadableMap?) {
54
+ view.applyVariant(value?.stringOr("variant", "standard"))
55
+ }
56
+
57
+ // --- ViewGroupManager child management ---
58
+ override fun addView(parent: PCFloatingToolbarView, child: View, index: Int) {
59
+ parent.addView(child, index)
60
+ }
61
+
62
+ override fun removeViewAt(parent: PCFloatingToolbarView, index: Int) {
63
+ parent.removeViewAt(index)
64
+ }
65
+
66
+ override fun getChildCount(parent: PCFloatingToolbarView): Int {
67
+ return parent.childCount
68
+ }
69
+
70
+ override fun getChildAt(parent: PCFloatingToolbarView, index: Int): View? {
71
+ return parent.getChildAt(index)
72
+ }
73
+ }
@@ -0,0 +1,46 @@
1
+ package com.platformcomponents
2
+
3
+ import android.os.Build
4
+ import android.view.HapticFeedbackConstants
5
+ import android.view.View
6
+
7
+ /**
8
+ * The shared `haptics` prop: `View.performHapticFeedback` with the matching
9
+ * `HapticFeedbackConstants`, played when a control reports the user's action.
10
+ * The system touch-feedback setting applies (no ignore flags are passed).
11
+ */
12
+ object PCHaptics {
13
+ /**
14
+ * Applies a `haptics` value to [view]: "none" turns off the haptics the view
15
+ * plays itself (such as a long press), anything else turns them back on.
16
+ * Returns the value for the view to keep ("" when unset).
17
+ */
18
+ fun configure(view: View, value: String?): String {
19
+ val kind = value ?: ""
20
+ view.isHapticFeedbackEnabled = kind != "none"
21
+ return kind
22
+ }
23
+
24
+ /** Plays [kind] on [view]; "" and "none" play nothing. */
25
+ fun perform(view: View, kind: String) {
26
+ val constant = constantFor(kind) ?: return
27
+ view.performHapticFeedback(constant)
28
+ }
29
+
30
+ /** The feedback constant for a `haptics` value, with fallbacks below the API level that added it. */
31
+ fun constantFor(kind: String): Int? = when (kind) {
32
+ "selection" ->
33
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) HapticFeedbackConstants.SEGMENT_TICK
34
+ else HapticFeedbackConstants.CLOCK_TICK
35
+ "light" -> HapticFeedbackConstants.CONTEXT_CLICK
36
+ "medium" -> HapticFeedbackConstants.VIRTUAL_KEY
37
+ "heavy" -> HapticFeedbackConstants.LONG_PRESS
38
+ "success" ->
39
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) HapticFeedbackConstants.CONFIRM
40
+ else HapticFeedbackConstants.VIRTUAL_KEY
41
+ "warning", "error" ->
42
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) HapticFeedbackConstants.REJECT
43
+ else HapticFeedbackConstants.LONG_PRESS
44
+ else -> null
45
+ }
46
+ }
@@ -13,6 +13,8 @@ import android.util.LruCache
13
13
  import java.net.HttpURLConnection
14
14
  import java.net.URL
15
15
  import java.util.concurrent.Executors
16
+ import org.json.JSONArray
17
+ import org.json.JSONObject
16
18
  import kotlin.math.roundToInt
17
19
 
18
20
  /**
@@ -30,6 +32,9 @@ object PCImageLoader {
30
32
  private val executor = Executors.newFixedThreadPool(2)
31
33
  private val mainHandler = Handler(Looper.getMainLooper())
32
34
  private val cache = LruCache<String, Bitmap>(32)
35
+ private val cacheLock = Any()
36
+ private var nextGeneration = 0L
37
+ private val generations = mutableMapOf<String, Long>()
33
38
 
34
39
  /**
35
40
  * Loads [uri] and delivers the bitmap on the main thread. [scale] is the
@@ -38,37 +43,67 @@ object PCImageLoader {
38
43
  *
39
44
  * Cached images are delivered synchronously.
40
45
  */
41
- fun load(context: Context, uri: String, scale: Float, callback: (Bitmap?) -> Unit) {
42
- val key = "$uri@${scale}x"
43
- cache.get(key)?.let {
46
+ fun load(context: Context, uri: String, scale: Float, request: String = "", callback: (Bitmap?) -> Unit) {
47
+ val options = try { if (request.isEmpty()) JSONObject() else JSONObject(request) }
48
+ catch (_: Exception) { callback(null); return }
49
+ val policy = options.optString("cache", "default")
50
+ options.remove("cache")
51
+ val key = JSONArray().put(uri).put(scale.toDouble()).put(options).toString()
52
+ val cached = if (policy == "reload") null else cache.get(key)
53
+ cached?.let {
44
54
  callback(it)
45
55
  return
46
56
  }
57
+ if (policy == "only-if-cached") { callback(null); return }
58
+ val generation = synchronized(cacheLock) {
59
+ nextGeneration += 1
60
+ generations[key] = nextGeneration
61
+ nextGeneration
62
+ }
47
63
 
48
64
  val appContext = context.applicationContext
49
65
  executor.execute {
66
+ var canCache = true
50
67
  val bitmap = try {
51
- decode(appContext, uri)
68
+ decode(appContext, uri, options) { canCache = it }
52
69
  } catch (e: Exception) {
53
- Log.w(TAG, "Failed to load $uri: ${e.message}")
70
+ // Image URIs may carry credentials or signed query parameters.
71
+ Log.w(TAG, "Failed to load image (${e.javaClass.simpleName})")
54
72
  null
55
73
  }
56
74
  if (bitmap != null) {
57
75
  bitmap.density = (scale.coerceAtLeast(0.01f) * DisplayMetrics.DENSITY_DEFAULT).roundToInt()
58
- cache.put(key, bitmap)
76
+ }
77
+ synchronized(cacheLock) {
78
+ if (generations[key] == generation) {
79
+ if (bitmap != null && canCache) cache.put(key, bitmap) else cache.remove(key)
80
+ generations.remove(key)
81
+ }
59
82
  }
60
83
  mainHandler.post { callback(bitmap) }
61
84
  }
62
85
  }
63
86
 
64
- private fun decode(context: Context, uri: String): Bitmap? {
87
+ private fun decode(context: Context, uri: String, options: JSONObject, cacheable: (Boolean) -> Unit): Bitmap? {
65
88
  val parsed = Uri.parse(uri)
66
89
  return when (parsed.scheme?.lowercase()) {
67
90
  "http", "https" -> {
68
91
  val connection = URL(uri).openConnection() as HttpURLConnection
69
92
  connection.connectTimeout = TIMEOUT_MS
70
93
  connection.readTimeout = TIMEOUT_MS
94
+ connection.useCaches = false
95
+ connection.instanceFollowRedirects = options.length() == 0
96
+ connection.requestMethod = options.optString("method", "GET")
97
+ options.optJSONObject("headers")?.let { headers ->
98
+ for (name in headers.keys()) connection.setRequestProperty(name, headers.getString(name))
99
+ }
71
100
  try {
101
+ if (options.has("body")) {
102
+ connection.doOutput = true
103
+ connection.outputStream.use { it.write(options.getString("body").toByteArray(Charsets.UTF_8)) }
104
+ }
105
+ if (connection.responseCode !in 200..299) return null
106
+ cacheable(!connection.getHeaderField("Cache-Control").orEmpty().contains("no-store", ignoreCase = true))
72
107
  connection.inputStream.use { BitmapFactory.decodeStream(it) }
73
108
  } finally {
74
109
  connection.disconnect()
@@ -0,0 +1,32 @@
1
+ package com.platformcomponents
2
+
3
+ import android.content.Context
4
+ import android.view.ViewGroup
5
+
6
+ /**
7
+ * Android implementation of LiquidGlassContainer.
8
+ *
9
+ * Glass containers are an iOS 26 feature, so on Android this is a plain
10
+ * container: React lays out the children, and `spacing` has no effect.
11
+ */
12
+ class PCLiquidGlassContainerView(context: Context) : ViewGroup(context) {
13
+
14
+ init {
15
+ clipChildren = false
16
+ clipToPadding = false
17
+ }
18
+
19
+ // ---- Layout ----
20
+ // Fabric sizes this view and positions its children.
21
+
22
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
23
+ setMeasuredDimension(
24
+ MeasureSpec.getSize(widthMeasureSpec),
25
+ MeasureSpec.getSize(heightMeasureSpec)
26
+ )
27
+ }
28
+
29
+ override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
30
+ // No-op: Fabric lays out the children
31
+ }
32
+ }
@@ -0,0 +1,31 @@
1
+ package com.platformcomponents
2
+
3
+ import com.facebook.react.uimanager.ThemedReactContext
4
+ import com.facebook.react.uimanager.ViewGroupManager
5
+ import com.facebook.react.uimanager.ViewManagerDelegate
6
+ import com.facebook.react.viewmanagers.PCLiquidGlassContainerManagerDelegate
7
+ import com.facebook.react.viewmanagers.PCLiquidGlassContainerManagerInterface
8
+
9
+ /**
10
+ * Android ViewManager for LiquidGlassContainer: a plain container, since
11
+ * glass containers are iOS 26 only.
12
+ */
13
+ class PCLiquidGlassContainerViewManager :
14
+ ViewGroupManager<PCLiquidGlassContainerView>(),
15
+ PCLiquidGlassContainerManagerInterface<PCLiquidGlassContainerView> {
16
+
17
+ private val delegate: ViewManagerDelegate<PCLiquidGlassContainerView> =
18
+ PCLiquidGlassContainerManagerDelegate(this)
19
+
20
+ override fun getName(): String = "PCLiquidGlassContainer"
21
+
22
+ override fun getDelegate(): ViewManagerDelegate<PCLiquidGlassContainerView> = delegate
23
+
24
+ override fun createViewInstance(reactContext: ThemedReactContext): PCLiquidGlassContainerView {
25
+ return PCLiquidGlassContainerView(reactContext)
26
+ }
27
+
28
+ override fun setSpacing(view: PCLiquidGlassContainerView, value: Float) {
29
+ // Glass merging is iOS only
30
+ }
31
+ }