@octane-xplat/ui 0.6.0 → 0.7.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 (776) hide show
  1. package/README.md +14 -4
  2. package/dist/native/{Absolute.native.tsrx.js → Absolute.tsrx.js} +2 -2
  3. package/dist/native/{Accordion.native.tsrx.js → Accordion.tsrx.js} +3 -3
  4. package/dist/native/{ActivityIndicator.native.tsrx.js → ActivityIndicator.tsrx.js} +2 -2
  5. package/dist/native/{Alert.native.tsrx.js → Alert.tsrx.js} +3 -3
  6. package/dist/native/{Avatar.native.tsrx.js → Avatar.tsrx.js} +3 -3
  7. package/dist/native/{AvatarGroup.native.tsrx.js → AvatarGroup.tsrx.js} +3 -3
  8. package/dist/native/{Badge.native.tsrx.js → Badge.tsrx.js} +2 -2
  9. package/dist/native/{Banner.native.tsrx.js → Banner.tsrx.js} +3 -3
  10. package/dist/native/{Breadcrumb.native.tsrx.js → Breadcrumb.tsrx.js} +2 -2
  11. package/dist/native/{Button.native.tsrx.js → Button.tsrx.js} +3 -3
  12. package/dist/native/{Card.native.tsrx.js → Card.tsrx.js} +2 -2
  13. package/dist/native/{Checkbox.native.tsrx.js → Checkbox.tsrx.js} +2 -2
  14. package/dist/native/{CheckboxGroup.native.tsrx.js → CheckboxGroup.tsrx.js} +3 -3
  15. package/dist/native/{Chip.native.tsrx.js → Chip.tsrx.js} +2 -2
  16. package/dist/native/{Collapsible.native.tsrx.js → Collapsible.tsrx.js} +3 -3
  17. package/dist/native/{CommandPalette.native.tsrx.js → CommandPalette.tsrx.js} +4 -4
  18. package/dist/native/{ContextMenu.native.tsrx.js → ContextMenu.tsrx.js} +4 -4
  19. package/dist/native/{Drawer.native.tsrx.js → Drawer.tsrx.js} +2 -2
  20. package/dist/native/{DropdownMenu.native.tsrx.js → DropdownMenu.tsrx.js} +5 -5
  21. package/dist/native/{Empty.native.tsrx.js → Empty.tsrx.js} +3 -3
  22. package/dist/native/{FieldGroup.native.tsrx.js → FieldGroup.tsrx.js} +2 -2
  23. package/dist/native/{FormField.native.tsrx.js → FormField.tsrx.js} +2 -2
  24. package/dist/native/{Grid.native.tsrx.js → Grid.tsrx.js} +2 -2
  25. package/dist/native/{Heading.native.tsrx.js → Heading.tsrx.js} +3 -3
  26. package/dist/native/Hoverable.tsrx.js +139 -0
  27. package/dist/native/{Icon.native.tsrx.js → Icon.tsrx.js} +3 -3
  28. package/dist/native/{Image.native.tsrx.js → Image.tsrx.js} +4 -4
  29. package/dist/native/{InputNumber.native.tsrx.js → InputNumber.tsrx.js} +4 -4
  30. package/dist/native/{InputRating.native.tsrx.js → InputRating.tsrx.js} +3 -3
  31. package/dist/native/{InputTags.native.tsrx.js → InputTags.tsrx.js} +4 -4
  32. package/dist/native/{Kbd.native.tsrx.js → Kbd.tsrx.js} +2 -2
  33. package/dist/native/{KeyboardAvoiding.native.tsrx.js → KeyboardAvoiding.mobile.tsrx.js} +5 -3
  34. package/dist/native/{Link.native.tsrx.js → Link.tsrx.js} +2 -2
  35. package/dist/native/ListItem.tsrx.js +178 -0
  36. package/dist/native/Meter.tsrx.js +70 -0
  37. package/dist/native/{NavLink.native.tsrx.js → NavLink.tsrx.js} +3 -3
  38. package/dist/native/{NavigationMenu.native.tsrx.js → NavigationMenu.tsrx.js} +3 -3
  39. package/dist/native/{Overlay.native.tsrx.js → Overlay.tsrx.js} +2 -2
  40. package/dist/native/{Pagination.native.tsrx.js → Pagination.tsrx.js} +2 -2
  41. package/dist/native/{PinInput.native.tsrx.js → PinInput.tsrx.js} +3 -3
  42. package/dist/native/{Popover.native.tsrx.js → Popover.tsrx.js} +4 -4
  43. package/dist/native/{Pressable.native.tsrx.js → Pressable.tsrx.js} +4 -4
  44. package/dist/native/{ProgressGroup.native.tsrx.js → ProgressGroup.tsrx.js} +3 -3
  45. package/dist/native/{RadioGroup.native.tsrx.js → RadioGroup.tsrx.js} +2 -2
  46. package/dist/native/{RichText.native.tsrx.js → RichText.tsrx.js} +3 -3
  47. package/dist/native/{RouteHost.native.tsrx.js → RouteHost.mobile.tsrx.js} +13 -2
  48. package/dist/native/{Row.native.tsrx.js → Row.tsrx.js} +4 -4
  49. package/dist/native/{SafeArea.native.tsrx.js → SafeArea.tsrx.js} +9 -3
  50. package/dist/native/{Screen.native.tsrx.js → Screen.tsrx.js} +13 -5
  51. package/dist/native/{ScrollBox.native.tsrx.js → ScrollBox.tsrx.js} +2 -2
  52. package/dist/native/{ScrollView.native.tsrx.js → ScrollView.tsrx.js} +5 -5
  53. package/dist/native/{SearchInput.native.tsrx.js → SearchInput.tsrx.js} +4 -4
  54. package/dist/native/{SegmentedControl.native.tsrx.js → SegmentedControl.tsrx.js} +2 -2
  55. package/dist/native/{Select.native.tsrx.js → Select.tsrx.js} +4 -4
  56. package/dist/native/{Separator.native.tsrx.js → Separator.tsrx.js} +2 -2
  57. package/dist/native/{Sheet.native.tsrx.js → Sheet.tsrx.js} +11 -3
  58. package/dist/native/{Skeleton.native.tsrx.js → Skeleton.tsrx.js} +2 -2
  59. package/dist/native/{Slider.native.tsrx.js → Slider.tsrx.js} +5 -5
  60. package/dist/native/{Spacer.native.tsrx.js → Spacer.tsrx.js} +2 -2
  61. package/dist/native/{Stack.native.tsrx.js → Stack.tsrx.js} +2 -2
  62. package/dist/native/{Stepper.native.tsrx.js → Stepper.tsrx.js} +2 -2
  63. package/dist/native/{Switch.native.tsrx.js → Switch.tsrx.js} +2 -2
  64. package/dist/native/{Table.native.tsrx.js → Table.tsrx.js} +2 -2
  65. package/dist/native/{Tabs.native.tsrx.js → Tabs.tsrx.js} +8 -18
  66. package/dist/native/{Text.native.tsrx.js → Text.tsrx.js} +3 -3
  67. package/dist/native/{TextArea.native.tsrx.js → TextArea.tsrx.js} +3 -3
  68. package/dist/native/{TextInput.native.tsrx.js → TextInput.tsrx.js} +3 -3
  69. package/dist/native/{Timeline.native.tsrx.js → Timeline.tsrx.js} +3 -3
  70. package/dist/native/Tooltip.tsrx.js +131 -0
  71. package/dist/native/{Tree.native.tsrx.js → Tree.tsrx.js} +2 -2
  72. package/dist/native/{User.native.tsrx.js → User.tsrx.js} +3 -3
  73. package/dist/native/{View.native.tsrx.js → View.tsrx.js} +4 -4
  74. package/dist/native/VirtualList.tsrx.js +466 -0
  75. package/dist/native/{WebView.native.tsrx.js → WebView.tsrx.js} +31 -6
  76. package/dist/native/{aliases.native.tsrx.js → aliases.tsrx.js} +2 -2
  77. package/dist/native/android/BottomNavigationView.android.tsrx.js +72 -23
  78. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +1 -1
  79. package/dist/native/android/DrawerLayout.android.tsrx.js +2 -1
  80. package/dist/native/android/MaterialDialog.android.tsrx.js +1 -1
  81. package/dist/native/android/MaterialSwitch.android.tsrx.js +1 -1
  82. package/dist/native/android/RecyclerView.android.tsrx.js +15 -3
  83. package/dist/native/android/SeekBar.android.tsrx.js +1 -1
  84. package/dist/native/android/icon.android.js +7 -0
  85. package/dist/native/android/index.js +3 -1
  86. package/dist/native/android/openModal.android.js +1 -1
  87. package/dist/native/{anim.native.tsrx.js → anim.tsrx.js} +1 -1
  88. package/dist/native/apply-native-modifiers.native.js +9 -0
  89. package/dist/native/{escape-props.native.js → escape-props.js} +3 -1
  90. package/dist/native/index.shared.js +92 -0
  91. package/dist/native/ios/LiquidGlass.ios.tsrx.js +2 -2
  92. package/dist/native/ios/LiquidGlassContainer.ios.tsrx.js +2 -2
  93. package/dist/native/ios/SideDrawer.ios.tsrx.js +2 -1
  94. package/dist/native/ios/UIActivityIndicatorView.ios.tsrx.js +1 -1
  95. package/dist/native/ios/UIModal.ios.tsrx.js +1 -1
  96. package/dist/native/ios/UISlider.ios.tsrx.js +1 -1
  97. package/dist/native/ios/UISwitch.ios.tsrx.js +1 -1
  98. package/dist/native/ios/UITabBar.ios.tsrx.js +33 -12
  99. package/dist/native/ios/UITableView.ios.tsrx.js +15 -3
  100. package/dist/native/ios/icon.ios.js +7 -0
  101. package/dist/native/ios/index.js +3 -1
  102. package/dist/native/ios/openModal.ios.js +1 -1
  103. package/dist/native/keyboard-inset.mobile.js +66 -0
  104. package/dist/native/{layout-child.native.js → layout-child.js} +1 -1
  105. package/dist/native/{modal-presenter.native.js → modal-presenter.mobile.js} +1 -1
  106. package/dist/native/modifier-factories.js +24 -0
  107. package/dist/native/native/index.js +3 -3
  108. package/dist/native/octane-client-build.json +1 -1
  109. package/dist/native/{pan.native.tsrx.js → pan.tsrx.js} +1 -1
  110. package/dist/native/{platform.native.js → platform.js} +3 -3
  111. package/dist/native/{platformProps.native.js → platformProps.js} +3 -1
  112. package/dist/native/{refresh.native.js → refresh.js} +1 -1
  113. package/dist/native/{root-layout.native.js → root-layout.mobile.js} +2 -2
  114. package/dist/native/route-host.mobile.js +2 -0
  115. package/dist/native/route-table.js +105 -4
  116. package/dist/native/{route.native.js → route.js} +49 -13
  117. package/dist/native/safeAreaInsets.tsrx.js +67 -0
  118. package/dist/native/shared.js +93 -0
  119. package/dist/native/{sheet-detents.native.js → sheet-detents.js} +1 -1
  120. package/dist/native/{sheet-service.native.js → sheet-service.js} +9 -3
  121. package/dist/native/{stacks.native.js → stacks.js} +1 -1
  122. package/dist/native/{styled.native.tsrx.js → styled.tsrx.js} +1 -1
  123. package/dist/native/{svg.native.js → svg.mobile.js} +2 -2
  124. package/dist/native/tap-to-blur.mobile.js +94 -0
  125. package/dist/native/{text-write.native.js → text-write.js} +1 -1
  126. package/dist/native/theme/{colorScheme.native.js → colorScheme.js} +2 -2
  127. package/dist/native/theme/{status-bar-scheme.native.js → status-bar-scheme.mobile.js} +1 -1
  128. package/dist/native/theme/theme-scheme.js +2 -2
  129. package/dist/native/{toast-anchor.native.tsrx.js → toast-anchor.tsrx.js} +3 -3
  130. package/dist/native/{translate.native.js → translate.js} +1 -1
  131. package/dist/native/ui.js +92 -90
  132. package/dist/native/{use-back.native.tsrx.js → use-back.tsrx.js} +2 -2
  133. package/dist/native/{use-store.native.tsrx.js → use-store.tsrx.js} +1 -1
  134. package/dist/native/{useMeasure.native.tsrx.js → useMeasure.tsrx.js} +1 -1
  135. package/dist/native/vendor/ui-svg/index.android.js +137 -0
  136. package/dist/native/vendor/ui-svg/index.common.js +10 -0
  137. package/dist/native/vendor/ui-svg/index.ios.js +111 -0
  138. package/dist/native/virtual-list-layout.js +146 -0
  139. package/dist/native/{windows.native.js → windows.js} +1 -1
  140. package/dist/web/{web/Hoverable.web.tsrx.js → Hoverable.web.tsrx.js} +7 -6
  141. package/dist/web/ListItem.web.tsrx.js +139 -0
  142. package/dist/web/SafeArea.web.tsrx.js +9 -3
  143. package/dist/web/Tabs.web.tsrx.js +88 -44
  144. package/dist/web/{web/Tooltip.web.tsrx.js → Tooltip.web.tsrx.js} +7 -6
  145. package/dist/web/VirtualList.web.tsrx.js +622 -0
  146. package/dist/web/WebView.web.tsrx.js +42 -5
  147. package/dist/web/index.shared.web.js +92 -0
  148. package/dist/web/octane-client-build.json +1 -1
  149. package/dist/web/platform.web.js +1 -1
  150. package/dist/web/route-table.js +105 -4
  151. package/dist/web/route.web.js +36 -11
  152. package/dist/web/ui.js +10 -8
  153. package/dist/web/virtual-list-layout.js +146 -0
  154. package/dist/web/web/index.js +2 -2
  155. package/package.json +35 -23
  156. package/platforms/android/include.gradle +8 -0
  157. package/platforms/android/native-api-usage.json +8 -0
  158. package/platforms/ios/Podfile +2 -0
  159. package/src/Absolute.tsrx +22 -0
  160. package/src/Absolute.web.tsrx +22 -0
  161. package/src/Accordion.macos.tsrx +50 -0
  162. package/src/Accordion.tsrx +50 -0
  163. package/src/Accordion.web.tsrx +43 -0
  164. package/src/ActivityIndicator.tsrx +29 -0
  165. package/src/ActivityIndicator.web.tsrx +14 -0
  166. package/src/Alert.macos.tsrx +42 -0
  167. package/src/Alert.tsrx +24 -0
  168. package/src/Alert.web.tsrx +23 -0
  169. package/src/Avatar.macos.tsrx +25 -0
  170. package/src/Avatar.tsrx +25 -0
  171. package/src/Avatar.web.tsrx +24 -0
  172. package/src/AvatarGroup.macos.tsrx +32 -0
  173. package/src/AvatarGroup.tsrx +32 -0
  174. package/src/AvatarGroup.web.tsrx +29 -0
  175. package/src/Badge.macos.tsrx +12 -0
  176. package/src/Badge.tsrx +12 -0
  177. package/src/Badge.web.tsrx +10 -0
  178. package/src/Banner.macos.tsrx +20 -0
  179. package/src/Banner.tsrx +20 -0
  180. package/src/Banner.web.tsrx +20 -0
  181. package/src/Breadcrumb.macos.tsrx +27 -0
  182. package/src/Breadcrumb.tsrx +27 -0
  183. package/src/Breadcrumb.web.tsrx +25 -0
  184. package/src/Button.tsrx +23 -0
  185. package/src/Button.web.tsrx +21 -0
  186. package/src/CameraView.macos.tsrx +6 -0
  187. package/src/Card.macos.tsrx +13 -0
  188. package/src/Card.tsrx +13 -0
  189. package/src/Card.web.tsrx +11 -0
  190. package/src/Checkbox.tsrx +23 -0
  191. package/src/Checkbox.web.tsrx +34 -0
  192. package/src/CheckboxGroup.macos.tsrx +39 -0
  193. package/src/CheckboxGroup.tsrx +39 -0
  194. package/src/CheckboxGroup.web.tsrx +38 -0
  195. package/src/Chip.macos.tsrx +25 -0
  196. package/src/Chip.tsrx +25 -0
  197. package/src/Chip.web.tsrx +25 -0
  198. package/src/Collapsible.macos.tsrx +39 -0
  199. package/src/Collapsible.tsrx +39 -0
  200. package/src/Collapsible.web.tsrx +33 -0
  201. package/src/CommandPalette.macos.tsrx +58 -0
  202. package/src/CommandPalette.tsrx +58 -0
  203. package/src/CommandPalette.web.tsrx +59 -0
  204. package/src/ContextMenu.macos.tsrx +59 -0
  205. package/src/ContextMenu.tsrx +59 -0
  206. package/src/ContextMenu.web.tsrx +69 -0
  207. package/src/Drawer.macos.tsrx +28 -0
  208. package/src/Drawer.tsrx +25 -0
  209. package/src/Drawer.web.tsrx +31 -0
  210. package/src/DropdownMenu.macos.tsrx +63 -0
  211. package/src/DropdownMenu.tsrx +63 -0
  212. package/src/DropdownMenu.web.tsrx +78 -0
  213. package/src/Empty.macos.tsrx +15 -0
  214. package/src/Empty.tsrx +15 -0
  215. package/src/Empty.web.tsrx +13 -0
  216. package/src/FieldGroup.macos.tsrx +17 -0
  217. package/src/FieldGroup.tsrx +17 -0
  218. package/src/FieldGroup.web.tsrx +17 -0
  219. package/src/FormField.macos.tsrx +25 -0
  220. package/src/FormField.tsrx +25 -0
  221. package/src/FormField.web.tsrx +24 -0
  222. package/src/Grid.tsrx +32 -0
  223. package/src/Grid.web.tsrx +43 -0
  224. package/src/Heading.macos.tsrx +8 -0
  225. package/src/Heading.tsrx +17 -0
  226. package/src/Heading.web.tsrx +15 -0
  227. package/src/Hoverable.mobile.tsrx +21 -0
  228. package/src/Hoverable.tsrx +113 -0
  229. package/src/Hoverable.web.tsrx +98 -0
  230. package/src/Icon.macos.tsrx +18 -0
  231. package/src/Icon.tsrx +65 -0
  232. package/src/Icon.web.tsrx +75 -0
  233. package/src/Image.macos.tsrx +12 -0
  234. package/src/Image.tsrx +51 -0
  235. package/src/Image.web.tsrx +14 -0
  236. package/src/InputNumber.macos.tsrx +49 -0
  237. package/src/InputNumber.tsrx +49 -0
  238. package/src/InputNumber.web.tsrx +47 -0
  239. package/src/InputRating.macos.tsrx +42 -0
  240. package/src/InputRating.tsrx +39 -0
  241. package/src/InputRating.web.tsrx +52 -0
  242. package/src/InputTags.macos.tsrx +49 -0
  243. package/src/InputTags.tsrx +49 -0
  244. package/src/InputTags.web.tsrx +49 -0
  245. package/src/Kbd.macos.tsrx +11 -0
  246. package/src/Kbd.tsrx +11 -0
  247. package/src/Kbd.web.tsrx +9 -0
  248. package/src/KeyboardAvoiding.macos.tsrx +8 -0
  249. package/src/KeyboardAvoiding.mobile.tsrx +63 -0
  250. package/src/Link.macos.tsrx +15 -0
  251. package/src/Link.tsrx +10 -0
  252. package/src/Link.web.tsrx +12 -0
  253. package/src/ListItem.macos.tsrx +52 -0
  254. package/src/ListItem.tsrx +52 -0
  255. package/src/ListItem.web.tsrx +50 -0
  256. package/src/Meter.macos.tsrx +8 -0
  257. package/src/Meter.tsrx +45 -0
  258. package/src/Meter.web.tsrx +32 -0
  259. package/src/NavLink.macos.tsrx +24 -0
  260. package/src/NavLink.tsrx +22 -0
  261. package/src/NavLink.web.tsrx +23 -0
  262. package/src/NavigationMenu.macos.tsrx +31 -0
  263. package/src/NavigationMenu.tsrx +28 -0
  264. package/src/NavigationMenu.web.tsrx +31 -0
  265. package/src/Overlay.macos.tsrx +11 -0
  266. package/src/Overlay.tsrx +84 -0
  267. package/src/Overlay.web.tsrx +23 -0
  268. package/src/Pagination.macos.tsrx +54 -0
  269. package/src/Pagination.tsrx +47 -0
  270. package/src/Pagination.web.tsrx +50 -0
  271. package/src/PinInput.macos.tsrx +46 -0
  272. package/src/PinInput.tsrx +46 -0
  273. package/src/PinInput.web.tsrx +45 -0
  274. package/src/Popover.macos.tsrx +11 -0
  275. package/src/Popover.tsrx +157 -0
  276. package/src/Popover.web.tsrx +109 -0
  277. package/src/Pressable.macos.tsrx +19 -0
  278. package/src/Pressable.tsrx +37 -0
  279. package/src/Pressable.web.tsrx +45 -0
  280. package/src/ProgressGroup.macos.tsrx +17 -0
  281. package/src/ProgressGroup.tsrx +17 -0
  282. package/src/ProgressGroup.web.tsrx +15 -0
  283. package/src/RadioGroup.macos.tsrx +50 -0
  284. package/src/RadioGroup.tsrx +34 -0
  285. package/src/RadioGroup.web.tsrx +43 -0
  286. package/src/RichText.tsrx +40 -0
  287. package/src/RichText.web.tsrx +24 -0
  288. package/src/RouteHost.macos.tsrx +18 -0
  289. package/src/RouteHost.mobile.tsrx +44 -0
  290. package/src/Row.macos.tsrx +26 -0
  291. package/src/Row.tsrx +27 -0
  292. package/src/Row.web.tsrx +27 -0
  293. package/src/SafeArea.macos.tsrx +8 -0
  294. package/src/SafeArea.tsrx +20 -0
  295. package/src/SafeArea.web.tsrx +24 -0
  296. package/src/Screen.macos.tsrx +14 -0
  297. package/src/Screen.tsrx +31 -0
  298. package/src/Screen.web.tsrx +7 -0
  299. package/src/ScrollBox.tsrx +8 -0
  300. package/src/ScrollBox.web.tsrx +7 -0
  301. package/src/ScrollView.macos.tsrx +19 -0
  302. package/src/ScrollView.tsrx +117 -0
  303. package/src/ScrollView.web.tsrx +109 -0
  304. package/src/SearchInput.tsrx +60 -0
  305. package/src/SearchInput.web.test.tsrx +58 -0
  306. package/src/SearchInput.web.tsrx +55 -0
  307. package/src/SegmentedControl.tsrx +43 -0
  308. package/src/SegmentedControl.web.test.tsrx +46 -0
  309. package/src/SegmentedControl.web.tsrx +51 -0
  310. package/src/Select.macos.tsrx +104 -0
  311. package/src/Select.tsrx +104 -0
  312. package/src/Select.web.tsrx +124 -0
  313. package/src/Separator.macos.tsrx +17 -0
  314. package/src/Separator.tsrx +17 -0
  315. package/src/Separator.web.tsrx +17 -0
  316. package/src/Sheet.macos.tsrx +15 -0
  317. package/src/Sheet.tsrx +122 -0
  318. package/src/Sheet.web.tsrx +56 -0
  319. package/src/Skeleton.macos.tsrx +15 -0
  320. package/src/Skeleton.tsrx +15 -0
  321. package/src/Skeleton.web.tsrx +15 -0
  322. package/src/Slider.tsrx +71 -0
  323. package/src/Slider.web.tsrx +60 -0
  324. package/src/Spacer.tsrx +8 -0
  325. package/src/Spacer.web.tsrx +6 -0
  326. package/src/Stack.tsrx +24 -0
  327. package/src/Stack.web.tsrx +22 -0
  328. package/src/Stepper.macos.tsrx +52 -0
  329. package/src/Stepper.tsrx +31 -0
  330. package/src/Stepper.web.tsrx +37 -0
  331. package/src/Switch.tsrx +21 -0
  332. package/src/Switch.web.tsrx +28 -0
  333. package/src/Table.macos.tsrx +37 -0
  334. package/src/Table.tsrx +37 -0
  335. package/src/Table.web.tsrx +37 -0
  336. package/src/Tabs.macos.tsrx +60 -0
  337. package/src/Tabs.tsrx +55 -0
  338. package/src/Tabs.web.tsrx +98 -0
  339. package/src/Text.macos.tsrx +18 -0
  340. package/src/Text.tsrx +62 -0
  341. package/src/Text.web.tsrx +31 -0
  342. package/src/TextArea.tsrx +65 -0
  343. package/src/TextArea.web.tsrx +61 -0
  344. package/src/TextInput.tsrx +39 -0
  345. package/src/TextInput.web.tsrx +28 -0
  346. package/src/Timeline.macos.tsrx +27 -0
  347. package/src/Timeline.tsrx +24 -0
  348. package/src/Timeline.web.tsrx +22 -0
  349. package/src/Tooltip.mobile.tsrx +20 -0
  350. package/src/Tooltip.tsrx +102 -0
  351. package/src/Tooltip.web.tsrx +156 -0
  352. package/src/Tree.macos.tsrx +45 -0
  353. package/src/Tree.tsrx +45 -0
  354. package/src/Tree.web.tsrx +52 -0
  355. package/src/User.macos.tsrx +24 -0
  356. package/src/User.tsrx +24 -0
  357. package/src/User.web.tsrx +24 -0
  358. package/src/View.macos.tsrx +29 -0
  359. package/src/View.tsrx +32 -0
  360. package/src/View.web.tsrx +33 -0
  361. package/src/VirtualList.macos.tsrx +298 -0
  362. package/src/VirtualList.tsrx +358 -0
  363. package/src/VirtualList.web.tsrx +313 -0
  364. package/src/WebView.macos.tsrx +6 -0
  365. package/src/WebView.tsrx +89 -0
  366. package/src/WebView.web.tsrx +92 -0
  367. package/src/aliases.macos.tsrx +18 -0
  368. package/src/aliases.tsrx +18 -0
  369. package/src/aliases.web.tsrx +17 -0
  370. package/src/android/BottomNavigationView.android.tsrx +170 -0
  371. package/src/android/CircularProgressIndicator.android.tsrx +19 -0
  372. package/src/android/DrawerLayout.android.tsrx +48 -0
  373. package/src/android/MaterialDialog.android.tsrx +62 -0
  374. package/src/android/MaterialSwitch.android.tsrx +18 -0
  375. package/src/android/RecyclerView.android.tsrx +173 -0
  376. package/src/android/SeekBar.android.tsrx +20 -0
  377. package/src/android/icon.android.ts +8 -0
  378. package/src/android/index.ts +37 -0
  379. package/src/android/openModal.android.ts +55 -0
  380. package/src/anim.macos.tsrx +20 -0
  381. package/src/anim.tsrx +65 -0
  382. package/src/anim.web.tsrx +55 -0
  383. package/src/apply-native-modifiers.native.ts +13 -0
  384. package/src/camera-permission.web.ts +11 -0
  385. package/src/child-array.ts +16 -0
  386. package/src/colorScheme.macos.ts +27 -0
  387. package/src/controls.macos.tsrx +171 -0
  388. package/src/cx.ts +8 -0
  389. package/src/escape-props.macos.ts +11 -0
  390. package/src/escape-props.ts +70 -0
  391. package/src/escape-props.web.ts +25 -0
  392. package/src/hosted-unsupported.macos.tsrx +9 -0
  393. package/src/icons.ts +60 -0
  394. package/src/index.linux.ts +10 -0
  395. package/src/index.macos.ts +106 -0
  396. package/src/index.mobile.ts +6 -0
  397. package/src/index.shared.ts +269 -0
  398. package/src/index.shared.web.ts +270 -0
  399. package/src/index.ts +1 -0
  400. package/src/index.web.ts +1 -0
  401. package/src/ios/LiquidGlass.ios.tsrx +41 -0
  402. package/src/ios/LiquidGlassContainer.ios.tsrx +34 -0
  403. package/src/ios/SideDrawer.ios.tsrx +49 -0
  404. package/src/ios/UIActivityIndicatorView.ios.tsrx +18 -0
  405. package/src/ios/UIModal.ios.tsrx +68 -0
  406. package/src/ios/UISlider.ios.tsrx +20 -0
  407. package/src/ios/UISwitch.ios.tsrx +18 -0
  408. package/src/ios/UITabBar.ios.tsrx +172 -0
  409. package/src/ios/UITableView.ios.tsrx +186 -0
  410. package/src/ios/icon.ios.ts +8 -0
  411. package/src/ios/index.ts +42 -0
  412. package/src/ios/openModal.ios.ts +55 -0
  413. package/src/keyboard-inset.mobile.ts +89 -0
  414. package/src/layout-child.ts +57 -0
  415. package/src/layout-child.web.ts +108 -0
  416. package/src/layout-shells.macos.tsrx +10 -0
  417. package/src/layout.macos.tsrx +41 -0
  418. package/src/macos-extras.macos.tsrx +40 -0
  419. package/src/meter-math.ts +6 -0
  420. package/src/modal-presenter.mobile.ts +24 -0
  421. package/src/modifier-factories.ts +20 -0
  422. package/src/native/index.ts +6 -0
  423. package/src/pan.tsrx +64 -0
  424. package/src/pan.web.tsrx +38 -0
  425. package/src/platform.macos.ts +1 -0
  426. package/src/platform.ts +7 -0
  427. package/src/platform.web.ts +6 -0
  428. package/src/platformProps.ts +23 -0
  429. package/src/platformProps.web.ts +14 -0
  430. package/src/popover-position.ts +62 -0
  431. package/src/popover.mobile.test.ts +54 -0
  432. package/src/props.ts +1812 -0
  433. package/src/references.d.ts +2 -0
  434. package/src/refresh-metrics.ts +11 -0
  435. package/src/refresh.ts +271 -0
  436. package/src/refresh.web.test.ts +111 -0
  437. package/src/refresh.web.ts +205 -0
  438. package/src/root-layout.mobile.ts +89 -0
  439. package/src/route-host.mobile.ts +1 -0
  440. package/src/route-table.test.ts +345 -0
  441. package/src/route-table.ts +585 -0
  442. package/src/route.macos.ts +201 -0
  443. package/src/route.ts +703 -0
  444. package/src/route.web.ts +366 -0
  445. package/src/safeAreaInsets.macos.tsrx +7 -0
  446. package/src/safeAreaInsets.tsrx +60 -0
  447. package/src/safeAreaInsets.web.tsrx +38 -0
  448. package/src/sheet-detents.ts +142 -0
  449. package/src/sheet-detents.web.ts +147 -0
  450. package/src/sheet-service.macos.ts +60 -0
  451. package/src/sheet-service.ts +124 -0
  452. package/src/sheet-service.web.ts +64 -0
  453. package/src/sheet-snap.test.ts +46 -0
  454. package/src/sheet-snap.ts +66 -0
  455. package/src/stacks.macos.ts +13 -0
  456. package/src/stacks.ts +44 -0
  457. package/src/stacks.web.ts +9 -0
  458. package/src/store.mobile.test.ts +149 -0
  459. package/src/store.ts +39 -0
  460. package/src/store.web.test.tsrx +58 -0
  461. package/src/styled.macos.tsrx +23 -0
  462. package/src/styled.test.ts +40 -0
  463. package/src/styled.tsrx +36 -0
  464. package/src/styled.web.tsrx +23 -0
  465. package/src/surfaces.macos.tsrx +27 -0
  466. package/src/svg.mobile.ts +76 -0
  467. package/src/tap-to-blur.mobile.ts +108 -0
  468. package/src/text-controls.macos.tsrx +11 -0
  469. package/src/text-write.ts +28 -0
  470. package/src/text-write.web.ts +13 -0
  471. package/src/theme/colorScheme.linux.ts +52 -0
  472. package/src/theme/colorScheme.ts +26 -0
  473. package/src/theme/colorScheme.web.ts +20 -0
  474. package/src/theme/status-bar-scheme.mobile.ts +39 -0
  475. package/src/theme/theme-scheme.macos.ts +50 -0
  476. package/src/theme/theme-scheme.ts +66 -0
  477. package/src/theme/tokens.css +44 -22
  478. package/src/toast-anchor.macos.tsrx +3 -0
  479. package/src/toast-anchor.tsrx +122 -0
  480. package/src/toast-anchor.web.tsrx +92 -0
  481. package/src/toast.tsrx +90 -0
  482. package/src/toast.web.tsrx +50 -0
  483. package/src/transform.web.ts +52 -0
  484. package/src/translate.macos.ts +5 -0
  485. package/src/translate.ts +13 -0
  486. package/src/translate.web.ts +15 -0
  487. package/src/tsconfig.json +8 -0
  488. package/src/unsupported.macos.tsrx +5 -0
  489. package/src/use-back.tsrx +11 -0
  490. package/src/use-back.web.tsrx +12 -0
  491. package/src/use-store.tsrx +18 -0
  492. package/src/use-store.web.tsrx +18 -0
  493. package/src/useMeasure.macos.tsrx +23 -0
  494. package/src/useMeasure.tsrx +66 -0
  495. package/src/useMeasure.web.tsrx +39 -0
  496. package/src/useStore.macos.tsrx +6 -0
  497. package/src/vendor/ui-svg/LICENSE +201 -0
  498. package/src/vendor/ui-svg/index.android.ts +189 -0
  499. package/src/vendor/ui-svg/index.common.ts +19 -0
  500. package/src/vendor/ui-svg/index.ios.ts +147 -0
  501. package/src/vendor/ui-svg/index.ts +1 -0
  502. package/src/vendor/ui-svg/typings/SVGKit.d.ts +2862 -0
  503. package/src/vendor/ui-svg/typings/android.d.ts +1483 -0
  504. package/src/vendor/ui-svg/typings/ios.d.ts +1511 -0
  505. package/src/virtual-list-layout.test.ts +81 -0
  506. package/src/virtual-list-layout.ts +246 -0
  507. package/src/web/index.ts +11 -0
  508. package/src/windows.linux.ts +59 -0
  509. package/src/windows.macos.ts +10 -0
  510. package/src/windows.ts +7 -0
  511. package/src/windows.web.ts +6 -0
  512. package/types/generated/.tsrx-typegen-manifest.json +250 -0
  513. package/types/generated/Absolute.d.ts +3 -0
  514. package/types/generated/Absolute.web.d.ts +3 -0
  515. package/types/generated/Accordion.d.ts +5 -0
  516. package/types/generated/Accordion.web.d.ts +5 -0
  517. package/types/generated/ActivityIndicator.d.ts +7 -0
  518. package/types/generated/ActivityIndicator.web.d.ts +3 -0
  519. package/types/generated/Alert.d.ts +4 -0
  520. package/types/generated/Alert.web.d.ts +5 -0
  521. package/types/generated/Avatar.d.ts +6 -0
  522. package/types/generated/Avatar.web.d.ts +7 -0
  523. package/types/generated/AvatarGroup.d.ts +6 -0
  524. package/types/generated/AvatarGroup.web.d.ts +6 -0
  525. package/types/generated/Badge.d.ts +5 -0
  526. package/types/generated/Badge.web.d.ts +5 -0
  527. package/types/generated/Banner.d.ts +4 -0
  528. package/types/generated/Banner.web.d.ts +4 -0
  529. package/types/generated/Breadcrumb.d.ts +4 -0
  530. package/types/generated/Breadcrumb.web.d.ts +5 -0
  531. package/types/generated/Button.d.ts +6 -0
  532. package/types/generated/Button.web.d.ts +6 -0
  533. package/types/generated/Card.d.ts +4 -0
  534. package/types/generated/Card.web.d.ts +4 -0
  535. package/types/generated/Checkbox.d.ts +5 -0
  536. package/types/generated/Checkbox.web.d.ts +6 -0
  537. package/types/generated/CheckboxGroup.d.ts +3 -0
  538. package/types/generated/CheckboxGroup.web.d.ts +3 -0
  539. package/types/generated/Chip.d.ts +5 -0
  540. package/types/generated/Chip.web.d.ts +5 -0
  541. package/types/generated/Collapsible.d.ts +5 -0
  542. package/types/generated/Collapsible.web.d.ts +5 -0
  543. package/types/generated/CommandPalette.d.ts +4 -0
  544. package/types/generated/CommandPalette.web.d.ts +4 -0
  545. package/types/generated/ContextMenu.d.ts +5 -0
  546. package/types/generated/ContextMenu.web.d.ts +4 -0
  547. package/types/generated/Drawer.d.ts +7 -0
  548. package/types/generated/Drawer.web.d.ts +7 -0
  549. package/types/generated/DropdownMenu.d.ts +5 -0
  550. package/types/generated/DropdownMenu.web.d.ts +5 -0
  551. package/types/generated/Empty.d.ts +4 -0
  552. package/types/generated/Empty.web.d.ts +4 -0
  553. package/types/generated/FieldGroup.d.ts +4 -0
  554. package/types/generated/FieldGroup.web.d.ts +4 -0
  555. package/types/generated/FormField.d.ts +5 -0
  556. package/types/generated/FormField.web.d.ts +5 -0
  557. package/types/generated/Grid.d.ts +3 -0
  558. package/types/generated/Grid.web.d.ts +3 -0
  559. package/types/generated/Heading.d.ts +2 -0
  560. package/types/generated/Heading.web.d.ts +2 -0
  561. package/types/generated/Hoverable.d.ts +10 -0
  562. package/types/generated/Hoverable.web.d.ts +9 -0
  563. package/types/generated/Icon.d.ts +3 -0
  564. package/types/generated/Icon.web.d.ts +3 -0
  565. package/types/generated/Image.d.ts +7 -0
  566. package/types/generated/Image.web.d.ts +3 -0
  567. package/types/generated/InputNumber.d.ts +5 -0
  568. package/types/generated/InputNumber.web.d.ts +5 -0
  569. package/types/generated/InputRating.d.ts +4 -0
  570. package/types/generated/InputRating.web.d.ts +4 -0
  571. package/types/generated/InputTags.d.ts +4 -0
  572. package/types/generated/InputTags.web.d.ts +5 -0
  573. package/types/generated/Kbd.d.ts +4 -0
  574. package/types/generated/Kbd.web.d.ts +4 -0
  575. package/types/generated/KeyboardAvoiding.mobile.d.ts +2 -0
  576. package/types/generated/Link.d.ts +2 -0
  577. package/types/generated/Link.web.d.ts +3 -0
  578. package/types/generated/ListItem.d.ts +3 -0
  579. package/types/generated/ListItem.web.d.ts +3 -0
  580. package/types/generated/Meter.d.ts +3 -0
  581. package/types/generated/Meter.web.d.ts +3 -0
  582. package/types/generated/NavLink.d.ts +3 -0
  583. package/types/generated/NavLink.web.d.ts +3 -0
  584. package/types/generated/NavigationMenu.d.ts +4 -0
  585. package/types/generated/NavigationMenu.web.d.ts +5 -0
  586. package/types/generated/Overlay.d.ts +3 -0
  587. package/types/generated/Overlay.web.d.ts +3 -0
  588. package/types/generated/Pagination.d.ts +4 -0
  589. package/types/generated/Pagination.web.d.ts +5 -0
  590. package/types/generated/PinInput.d.ts +4 -0
  591. package/types/generated/PinInput.web.d.ts +4 -0
  592. package/types/generated/Popover.d.ts +6 -0
  593. package/types/generated/Popover.web.d.ts +3 -0
  594. package/types/generated/Pressable.d.ts +6 -0
  595. package/types/generated/Pressable.web.d.ts +2 -0
  596. package/types/generated/ProgressGroup.d.ts +3 -0
  597. package/types/generated/ProgressGroup.web.d.ts +4 -0
  598. package/types/generated/RadioGroup.d.ts +5 -0
  599. package/types/generated/RadioGroup.web.d.ts +5 -0
  600. package/types/generated/RichText.d.ts +7 -0
  601. package/types/generated/RichText.web.d.ts +3 -0
  602. package/types/generated/RouteHost.mobile.d.ts +14 -0
  603. package/types/generated/Row.d.ts +2 -0
  604. package/types/generated/Row.web.d.ts +2 -0
  605. package/types/generated/SafeArea.d.ts +2 -0
  606. package/types/generated/SafeArea.web.d.ts +3 -0
  607. package/types/generated/Screen.d.ts +3 -0
  608. package/types/generated/Screen.web.d.ts +3 -0
  609. package/types/generated/ScrollBox.d.ts +3 -0
  610. package/types/generated/ScrollBox.web.d.ts +3 -0
  611. package/types/generated/ScrollView.d.ts +7 -0
  612. package/types/generated/ScrollView.web.d.ts +6 -0
  613. package/types/generated/SearchInput.d.ts +7 -0
  614. package/types/generated/SearchInput.web.d.ts +6 -0
  615. package/types/generated/SegmentedControl.d.ts +7 -0
  616. package/types/generated/SegmentedControl.web.d.ts +6 -0
  617. package/types/generated/Select.d.ts +6 -0
  618. package/types/generated/Select.web.d.ts +6 -0
  619. package/types/generated/Separator.d.ts +5 -0
  620. package/types/generated/Separator.web.d.ts +5 -0
  621. package/types/generated/Sheet.d.ts +5 -0
  622. package/types/generated/Sheet.web.d.ts +7 -0
  623. package/types/generated/Skeleton.d.ts +5 -0
  624. package/types/generated/Skeleton.web.d.ts +6 -0
  625. package/types/generated/Slider.d.ts +6 -0
  626. package/types/generated/Slider.web.d.ts +6 -0
  627. package/types/generated/Spacer.d.ts +3 -0
  628. package/types/generated/Spacer.web.d.ts +3 -0
  629. package/types/generated/Stack.d.ts +3 -0
  630. package/types/generated/Stack.web.d.ts +3 -0
  631. package/types/generated/Stepper.d.ts +4 -0
  632. package/types/generated/Stepper.web.d.ts +5 -0
  633. package/types/generated/Switch.d.ts +7 -0
  634. package/types/generated/Switch.web.d.ts +6 -0
  635. package/types/generated/Table.d.ts +4 -0
  636. package/types/generated/Table.web.d.ts +5 -0
  637. package/types/generated/Tabs.d.ts +10 -0
  638. package/types/generated/Tabs.web.d.ts +6 -0
  639. package/types/generated/Text.d.ts +2 -0
  640. package/types/generated/Text.web.d.ts +2 -0
  641. package/types/generated/TextArea.d.ts +8 -0
  642. package/types/generated/TextArea.web.d.ts +9 -0
  643. package/types/generated/TextInput.d.ts +9 -0
  644. package/types/generated/TextInput.web.d.ts +2 -0
  645. package/types/generated/Timeline.d.ts +3 -0
  646. package/types/generated/Timeline.web.d.ts +4 -0
  647. package/types/generated/Tooltip.d.ts +9 -0
  648. package/types/generated/Tooltip.web.d.ts +12 -0
  649. package/types/generated/Tree.d.ts +4 -0
  650. package/types/generated/Tree.web.d.ts +4 -0
  651. package/types/generated/User.d.ts +5 -0
  652. package/types/generated/User.web.d.ts +5 -0
  653. package/types/generated/View.d.ts +7 -0
  654. package/types/generated/View.web.d.ts +7 -0
  655. package/types/generated/VirtualList.d.ts +5 -0
  656. package/types/generated/VirtualList.web.d.ts +4 -0
  657. package/types/generated/WebView.d.ts +11 -0
  658. package/types/generated/WebView.web.d.ts +5 -0
  659. package/types/generated/aliases.d.ts +7 -0
  660. package/types/generated/aliases.web.d.ts +7 -0
  661. package/types/generated/android/BottomNavigationView.android.d.ts +9 -0
  662. package/types/generated/android/CircularProgressIndicator.android.d.ts +6 -0
  663. package/types/generated/android/DrawerLayout.android.d.ts +12 -0
  664. package/types/generated/android/MaterialDialog.android.d.ts +8 -0
  665. package/types/generated/android/MaterialSwitch.android.d.ts +6 -0
  666. package/types/generated/android/RecyclerView.android.d.ts +14 -0
  667. package/types/generated/android/SeekBar.android.d.ts +5 -0
  668. package/types/generated/android/icon.android.d.ts +5 -0
  669. package/types/generated/android/index.d.ts +12 -0
  670. package/types/generated/android/openModal.android.d.ts +4 -0
  671. package/types/generated/anim.d.ts +10 -0
  672. package/types/generated/anim.web.d.ts +3 -0
  673. package/types/generated/apply-native-modifiers.native.d.ts +3 -0
  674. package/types/generated/child-array.d.ts +3 -0
  675. package/types/generated/cx.d.ts +6 -0
  676. package/types/generated/escape-props.d.ts +16 -0
  677. package/types/generated/icons.d.ts +5 -0
  678. package/types/generated/index.d.ts +1 -0
  679. package/types/generated/index.linux.d.ts +5 -0
  680. package/types/generated/index.mobile.d.ts +4 -0
  681. package/types/generated/index.shared.d.ts +111 -0
  682. package/types/generated/index.shared.web.d.ts +111 -0
  683. package/types/generated/index.web.d.ts +1 -0
  684. package/types/generated/ios/LiquidGlass.ios.d.ts +12 -0
  685. package/types/generated/ios/LiquidGlassContainer.ios.d.ts +13 -0
  686. package/types/generated/ios/SideDrawer.ios.d.ts +12 -0
  687. package/types/generated/ios/UIActivityIndicatorView.ios.d.ts +5 -0
  688. package/types/generated/ios/UIModal.ios.d.ts +7 -0
  689. package/types/generated/ios/UISlider.ios.d.ts +5 -0
  690. package/types/generated/ios/UISwitch.ios.d.ts +6 -0
  691. package/types/generated/ios/UITabBar.ios.d.ts +7 -0
  692. package/types/generated/ios/UITableView.ios.d.ts +14 -0
  693. package/types/generated/ios/icon.ios.d.ts +5 -0
  694. package/types/generated/ios/index.d.ts +14 -0
  695. package/types/generated/ios/openModal.ios.d.ts +4 -0
  696. package/types/generated/keyboard-inset.mobile.d.ts +10 -0
  697. package/types/generated/layout-child.d.ts +6 -0
  698. package/types/generated/layout-child.web.d.ts +15 -0
  699. package/types/generated/meter-math.d.ts +6 -0
  700. package/types/generated/modal-presenter.mobile.d.ts +14 -0
  701. package/types/generated/modifier-factories.d.ts +15 -0
  702. package/types/generated/native/index.d.ts +3 -0
  703. package/types/generated/pan.d.ts +2 -0
  704. package/types/generated/pan.web.d.ts +9 -0
  705. package/types/generated/platform.d.ts +7 -0
  706. package/types/generated/platform.web.d.ts +6 -0
  707. package/types/generated/platformProps.d.ts +7 -0
  708. package/types/generated/platformProps.web.d.ts +2 -0
  709. package/types/generated/popover-position.d.ts +14 -0
  710. package/types/{props.d.ts → generated/props.d.ts} +127 -133
  711. package/types/generated/refresh-metrics.d.ts +8 -0
  712. package/types/generated/refresh.d.ts +42 -0
  713. package/types/generated/refresh.web.d.ts +23 -0
  714. package/types/generated/root-layout.mobile.d.ts +22 -0
  715. package/types/generated/route-host.mobile.d.ts +1 -0
  716. package/types/generated/route-table.d.ts +90 -0
  717. package/types/generated/route.d.ts +74 -0
  718. package/types/generated/route.web.d.ts +67 -0
  719. package/types/generated/safeAreaInsets.d.ts +8 -0
  720. package/types/generated/safeAreaInsets.web.d.ts +8 -0
  721. package/types/generated/sheet-detents.d.ts +23 -0
  722. package/types/generated/sheet-detents.web.d.ts +13 -0
  723. package/types/generated/sheet-service.d.ts +11 -0
  724. package/types/generated/sheet-service.web.d.ts +6 -0
  725. package/types/generated/sheet-snap.d.ts +18 -0
  726. package/types/generated/stacks.d.ts +9 -0
  727. package/types/generated/stacks.web.d.ts +4 -0
  728. package/types/generated/store.d.ts +14 -0
  729. package/types/generated/styled.d.ts +20 -0
  730. package/types/generated/styled.web.d.ts +10 -0
  731. package/types/generated/svg.mobile.d.ts +23 -0
  732. package/types/generated/tap-to-blur.mobile.d.ts +16 -0
  733. package/types/generated/text-write.d.ts +9 -0
  734. package/types/generated/theme/colorScheme.d.ts +6 -0
  735. package/types/generated/theme/colorScheme.linux.d.ts +5 -0
  736. package/types/generated/theme/colorScheme.web.d.ts +5 -0
  737. package/types/generated/theme/status-bar-scheme.mobile.d.ts +1 -0
  738. package/types/generated/theme/theme-scheme.d.ts +20 -0
  739. package/types/generated/toast-anchor.d.ts +4 -0
  740. package/types/generated/toast-anchor.web.d.ts +4 -0
  741. package/types/generated/transform.web.d.ts +8 -0
  742. package/types/generated/translate.d.ts +5 -0
  743. package/types/generated/translate.web.d.ts +6 -0
  744. package/types/generated/use-back.d.ts +6 -0
  745. package/types/generated/use-back.web.d.ts +7 -0
  746. package/types/generated/use-store.d.ts +9 -0
  747. package/types/generated/use-store.web.d.ts +9 -0
  748. package/types/generated/useMeasure.d.ts +3 -0
  749. package/types/generated/useMeasure.web.d.ts +3 -0
  750. package/types/generated/vendor/ui-svg/index.common.d.ts +7 -0
  751. package/types/generated/vendor/ui-svg/index.d.ts +1 -0
  752. package/types/generated/vendor/ui-svg/index.ios.d.ts +13 -0
  753. package/types/generated/virtual-list-layout.d.ts +44 -0
  754. package/types/generated/web/index.d.ts +3 -0
  755. package/types/generated/windows.d.ts +3 -0
  756. package/types/generated/windows.linux.d.ts +15 -0
  757. package/types/generated/windows.web.d.ts +3 -0
  758. package/types/index.macos.d.ts +142 -0
  759. package/dist/native/CameraView.native.tsrx.js +0 -165
  760. package/dist/native/Meter.native.tsrx.js +0 -92
  761. package/dist/native/Pager.native.tsrx.js +0 -282
  762. package/dist/native/Video.native.tsrx.js +0 -248
  763. package/dist/native/camera-permission.native.js +0 -47
  764. package/dist/native/safeAreaInsets.native.tsrx.js +0 -35
  765. package/dist/native/video-chrome.native.tsrx.js +0 -365
  766. package/dist/web/CameraView.web.tsrx.js +0 -310
  767. package/dist/web/Pager.web.tsrx.js +0 -337
  768. package/dist/web/Video.web.tsrx.js +0 -400
  769. package/dist/web/video-chrome.web.tsrx.js +0 -207
  770. package/types/android.d.ts +0 -53
  771. package/types/index.d.ts +0 -273
  772. package/types/index.native.d.ts +0 -273
  773. package/types/index.web.d.ts +0 -272
  774. package/types/ios.d.ts +0 -59
  775. package/types/native.d.ts +0 -5
  776. package/types/web.d.ts +0 -17
@@ -0,0 +1,366 @@
1
+ import { useSyncExternalStore } from 'octane'
2
+
3
+ /** Web route store — the browser half of the nav contract. One linear URL
4
+ * stack; `stack` names the conceptual outlet ('root' covers the app, a
5
+ * named stack is the pane that owns it — parallel stacks map to nested
6
+ * routes). URL shape: /<stack>/<path>?query or /<path>?query for root,
7
+ * where <path> comes from the route-dir manifest — `app/demo/[id].tsrx`
8
+ * pushes as /demo/<id-value>. Names not in the manifest keep the legacy
9
+ * /<name>?params shape. Module-scope like every other store — the pane
10
+ * that owns `stack` subscribes with useRoute(stack) and swaps content.
11
+ *
12
+ * Modal routes (presentation 'modal' — `+modal` route files or a
13
+ * pushRoute override) push a real URL but overlay instead of replacing:
14
+ * `current` keeps the underlying route, `modalRoute` carries the modal.
15
+ * Back (popstate or popRoute) dismisses it. */
16
+
17
+ export type { Route } from './props'
18
+ import type { Route, RouteHead, RouteManifest, RouteMeta, ScreenTable } from './props'
19
+ import {
20
+ buildRoutePath,
21
+ layoutChain,
22
+ linkPath,
23
+ matchUrl,
24
+ mergeRouteManifests,
25
+ RouteRedirect,
26
+ } from './route-table'
27
+
28
+ // ---------- screen registry ----------
29
+
30
+ // Effective tables = the file-derived base manifest merged under every
31
+ // addRoutes layer. Keeping the split means an HMR re-run of routes.gen.*
32
+ // (registerRoutes again) can't wipe routes an app added at runtime.
33
+ let baseManifest: RouteManifest = { screens: {}, routes: [], layouts: {} }
34
+ const dynamicManifests: RouteManifest[] = []
35
+ let screens: ScreenTable = {}
36
+ let routes: RouteMeta[] = []
37
+ let routeLayouts: Record<string, any> = {}
38
+ let routeLoaders: NonNullable<RouteManifest['loaders']> = {}
39
+
40
+ function rebuildRegistry(): void {
41
+ const merged = mergeRouteManifests(baseManifest, ...dynamicManifests)
42
+ screens = merged.screens
43
+ routes = merged.routes
44
+ routeLayouts = merged.layouts
45
+ routeLoaders = merged.loaders ?? {}
46
+ // Registration can land after the first lazy parse (deep link read
47
+ // before the routes module ran) — re-parse with patterns present.
48
+ if (current !== undefined) {
49
+ current = parse()
50
+ emit()
51
+ }
52
+ }
53
+
54
+ /** Register the app's name → screen table. On web the table feeds
55
+ * `screenFor` — the fallback outlet resolution in Tabs when no
56
+ * `resolveScreen` prop is given; on native `pushRoute` resolves
57
+ * `route.name` through it. `manifest` (from deriveRouteManifest) enables
58
+ * path-param matching — call once from the shared routes module. */
59
+ export function registerScreens(table: ScreenTable, manifest?: RouteMeta[]): void {
60
+ baseManifest = { ...baseManifest, screens: table, routes: manifest ?? [] }
61
+ rebuildRegistry()
62
+ }
63
+
64
+ /** One-call registration for route-dir apps — screens + URL patterns +
65
+ * layouts all come from deriveRouteManifest. */
66
+ export function registerRoutes(manifest: RouteManifest): void {
67
+ baseManifest = manifest
68
+ rebuildRegistry()
69
+ applyHead(read())
70
+ }
71
+
72
+ /** Layer a programmatic manifest (from `defineRoutes`) over the registered
73
+ * routes — same-name entries win over the base with a warn, so a host
74
+ * framework can override a file route deliberately. Registered layers
75
+ * survive later registerRoutes re-registration (e.g. routes.gen HMR). */
76
+ export function addRoutes(manifest: RouteManifest): void {
77
+ dynamicManifests.push(manifest)
78
+ rebuildRegistry()
79
+ applyHead(read())
80
+ }
81
+
82
+ export function screenFor(name: string): ScreenTable[string] | undefined {
83
+ return screens[name]
84
+ }
85
+
86
+ /** Directory layouts wrapping a route, outermost → innermost — outlets
87
+ * wrap their resolved element with these (`_layout.tsrx` files). */
88
+ export function layoutsFor(name: string): any[] {
89
+ return layoutChain(routeLayouts, name)
90
+ }
91
+
92
+ export { layoutsFor as layoutsForRoute }
93
+
94
+ // ---------- the store ----------
95
+
96
+ const listeners = new Set<() => void>()
97
+ // Lazy — the manifest registers after this module evaluates, and parse()
98
+ // needs its patterns for path params.
99
+ let current: Route | null | undefined
100
+ let modalRoute: Route | null = null
101
+ let historyDepth = history.state?.__octaneXplatDepth ?? 0
102
+
103
+ const ROUTE_HEAD_ATTR = 'data-octane-xplat-route-head'
104
+
105
+ // Scroll positions keyed by URL — restored on popstate (native keeps
106
+ // stack pages alive, so only the web leaf needs this). `lastKey` is the
107
+ // outgoing URL: popstate fires after location already changed, so the
108
+ // saved position must be written under the URL we just left.
109
+ const scrollPositions = new Map<string, number>()
110
+ let lastKey = location.pathname + location.search
111
+ const scrollKey = () => location.pathname + location.search
112
+ const saveScroll = () => scrollPositions.set(lastKey, window.scrollY)
113
+ const restoreScroll = () => {
114
+ const y = scrollPositions.get(scrollKey())
115
+ if (y !== undefined) {
116
+ requestAnimationFrame(() => window.scrollTo(0, y))
117
+ }
118
+ }
119
+
120
+ function parse(): Route | null {
121
+ return matchUrl(routes, location.pathname + location.search)
122
+ }
123
+
124
+ function read(): Route | null {
125
+ if (current === undefined) {
126
+ current = parse()
127
+ }
128
+
129
+ return current
130
+ }
131
+
132
+ function emit() {
133
+ listeners.forEach((l) => l())
134
+ }
135
+
136
+ function metaFor(name: string): RouteMeta | undefined {
137
+ return routes.find((meta) => meta.name === name)
138
+ }
139
+
140
+ function headFor(r: Route | null): RouteHead | undefined {
141
+ const head = r ? metaFor(r.name)?.head : undefined
142
+ return typeof head === 'function' ? head(r?.params ?? {}) : head
143
+ }
144
+
145
+ function applyHead(r: Route | null): void {
146
+ if (typeof document === 'undefined') {
147
+ return
148
+ }
149
+
150
+ const head = headFor(r)
151
+ if (!head) {
152
+ document.querySelectorAll(`meta[${ROUTE_HEAD_ATTR}]`).forEach((node) => node.remove())
153
+ return
154
+ }
155
+
156
+ if (head.title !== undefined) {
157
+ document.title = head.title
158
+ }
159
+
160
+ document.querySelectorAll(`meta[${ROUTE_HEAD_ATTR}]`).forEach((node) => node.remove())
161
+ for (const [name, content] of Object.entries(head.meta ?? {})) {
162
+ const tag = document.createElement('meta')
163
+ tag.setAttribute('name', name)
164
+ tag.setAttribute('content', content)
165
+ tag.setAttribute(ROUTE_HEAD_ATTR, '')
166
+ document.head.appendChild(tag)
167
+ }
168
+ }
169
+
170
+ function contextFor(r: Route): Record<string, unknown> {
171
+ return r.context ?? {}
172
+ }
173
+
174
+ async function prepareRoute(r: Route, redirects = 0): Promise<void> {
175
+ const beforeLoad = metaFor(r.name)?.beforeLoad
176
+ if (!beforeLoad) {
177
+ commitRoute(r)
178
+ return
179
+ }
180
+
181
+ if (redirects > 16) {
182
+ console.warn(`[octane-xplat] beforeLoad redirect loop for '${r.name}'`)
183
+ return
184
+ }
185
+
186
+ try {
187
+ const returned = await beforeLoad({ params: r.params, context: contextFor(r) })
188
+ const context = returned ? { ...contextFor(r), ...returned } : contextFor(r)
189
+ commitRoute({
190
+ ...r,
191
+ context,
192
+ })
193
+ } catch (e) {
194
+ if (e instanceof RouteRedirect) {
195
+ await prepareRoute(e.route, redirects + 1)
196
+ return
197
+ }
198
+
199
+ console.warn(`[octane-xplat] beforeLoad('${r.name}') rejected: ${(e as Error)?.message ?? e}`)
200
+ }
201
+ }
202
+
203
+ export function redirect(r: Route): never {
204
+ throw new RouteRedirect(r)
205
+ }
206
+
207
+ export function pushRoute(r: Route): void {
208
+ if (metaFor(r.name)?.beforeLoad) {
209
+ void prepareRoute(r)
210
+ return
211
+ }
212
+
213
+ commitRoute(r)
214
+ }
215
+
216
+ function commitRoute(r: Route): void {
217
+ const route: Route = { ...r, presentation: r.presentation ?? presentationFor(r.name) }
218
+ const loader = routeLoaders[route.name] ?? routes.find((meta) => meta.name === route.name)?.loader
219
+ if (
220
+ loader &&
221
+ !Object.prototype.hasOwnProperty.call(route, 'loaderData') &&
222
+ !Object.prototype.hasOwnProperty.call(route, 'loaderError')
223
+ ) {
224
+ void Promise.resolve()
225
+ .then(() => loader(route.params))
226
+ .then(
227
+ (loaderData) => commitRoute({ ...route, loaderData }),
228
+ (loaderError) => commitRoute({ ...route, loaderError }),
229
+ )
230
+
231
+ return
232
+ }
233
+
234
+ saveScroll()
235
+ historyDepth += 1
236
+ history.pushState({ __octaneXplatDepth: historyDepth }, '', buildRoutePath(routes, route))
237
+ lastKey = scrollKey()
238
+ if (route.presentation === 'modal') {
239
+ modalRoute = route
240
+ } else {
241
+ current = route
242
+ modalRoute = null
243
+ }
244
+
245
+ applyHead(modalRoute ?? current ?? null)
246
+ emit()
247
+ }
248
+
249
+ function presentationFor(name: string): Route['presentation'] {
250
+ return routes.find((m) => m.name === name)?.presentation
251
+ }
252
+
253
+ /** Web history is one linear stack — back pops whatever route is current;
254
+ * per-stack pops aren't expressible, so `stack` is accepted for parity
255
+ * and ignored. A pushed modal is the top entry, so back dismisses it. */
256
+ export function popRoute(_stack = 'root'): void {
257
+ history.back()
258
+ }
259
+
260
+ let backInterceptorWarned = false
261
+
262
+ /** No-op twin of the native leaf. Browser back is already real history —
263
+ * there is no hardware-back event to intercept on web, so registered
264
+ * interceptors never fire. Warns once so a mistaken call site isn't
265
+ * silently absent. */
266
+ export function addBackInterceptor(_fn: () => boolean): () => void {
267
+ if (!backInterceptorWarned) {
268
+ backInterceptorWarned = true
269
+ console.warn(
270
+ '[octane-xplat] addBackInterceptor is a no-op on web — browser back is URL history, not an interceptable event.',
271
+ )
272
+ }
273
+
274
+ return () => {}
275
+ }
276
+
277
+ window.addEventListener('popstate', () => {
278
+ saveScroll()
279
+ historyDepth = history.state?.__octaneXplatDepth ?? 0
280
+ lastKey = scrollKey()
281
+ modalRoute = null
282
+ current = parse()
283
+ applyHead(current)
284
+ restoreScroll()
285
+ emit()
286
+ })
287
+
288
+ /** Current route if it targets `stack`, else null. */
289
+ export function routeFor(stack: string): Route | null {
290
+ const c = read()
291
+ return c && c.stack === stack ? c : null
292
+ }
293
+
294
+ /** Web has one linear browser history; expose its active route stack for parity. */
295
+ export function routeStacks(): string[] {
296
+ const route = read()
297
+ return route ? [route.stack] : []
298
+ }
299
+
300
+ /** The route active at boot — for deep-link tab selection. */
301
+ export function currentRoute(): Route | null {
302
+ return read()
303
+ }
304
+
305
+ /** The modal route overlaying the current one, if any. */
306
+ export function currentModalRoute(): Route | null {
307
+ return modalRoute
308
+ }
309
+
310
+ /** Deep-link entry, web half — the URL *is* the route state, so this is a
311
+ * plain pushRoute of the matched path (parity with the native leaf, where
312
+ * apps wire `onDeepLink(pushDeepLink)`). */
313
+ export function pushDeepLink(url: string): boolean {
314
+ const r = matchUrl(routes, linkPath(url))
315
+ if (!r) {
316
+ console.warn(`[octane-xplat] pushDeepLink('${url}') dropped — no route matches.`)
317
+ return false
318
+ }
319
+
320
+ pushRoute(r)
321
+ return true
322
+ }
323
+
324
+ /** URL for a Route — Link's href and shareable-path helper. */
325
+ export function hrefFor(r: Route): string {
326
+ return buildRoutePath(routes, r)
327
+ }
328
+
329
+ export function useRoute(stack: string): Route | null {
330
+ return useSyncExternalStore(
331
+ (cb) => {
332
+ listeners.add(cb)
333
+ return () => listeners.delete(cb)
334
+ },
335
+ () => routeFor(stack),
336
+ )
337
+ }
338
+
339
+ /** Whether the selected conceptual stack has an in-app route to pop. A
340
+ * browser's pre-app history is intentionally not counted. */
341
+ export function canGoBack(stack = 'root'): boolean {
342
+ const route = read()
343
+ return historyDepth > 0 && route?.stack === stack
344
+ }
345
+
346
+ export function useCanGoBack(stack = 'root'): boolean {
347
+ return useSyncExternalStore(
348
+ (cb) => {
349
+ listeners.add(cb)
350
+ return () => listeners.delete(cb)
351
+ },
352
+ () => canGoBack(stack),
353
+ )
354
+ }
355
+
356
+ /** The modal route overlaying the shell — outlets render it above their
357
+ * normal content (URL preserved underneath). */
358
+ export function useModalRoute(): Route | null {
359
+ return useSyncExternalStore(
360
+ (cb) => {
361
+ listeners.add(cb)
362
+ return () => listeners.delete(cb)
363
+ },
364
+ () => modalRoute,
365
+ )
366
+ }
@@ -0,0 +1,7 @@
1
+ import type { SafeAreaInsets } from './props'
2
+
3
+ /** The AppKit root view begins below the title bar; there are no additional
4
+ * safe-area insets in this window-hosted renderer. */
5
+ export function useSafeAreaInsets(): SafeAreaInsets {
6
+ return { top: 0, right: 0, bottom: 0, left: 0 }
7
+ }
@@ -0,0 +1,60 @@
1
+ import { useEffect, useState } from 'octane';
2
+ import { Application, Screen } from '@nativescript/core';
3
+
4
+ export interface SafeAreaInsets { top: number; right: number; bottom: number; left: number; }
5
+
6
+ function androidActivity(): any {
7
+ return Application.android?.foregroundActivity ?? Application.android?.startActivity;
8
+ }
9
+
10
+ function readAndroidInsets(): SafeAreaInsets {
11
+ const decorView = androidActivity()?.getWindow?.()?.getDecorView?.();
12
+ const insets = decorView?.getRootWindowInsets?.();
13
+ if (!insets) return { top: 0, right: 0, bottom: 0, left: 0 };
14
+
15
+ const scale = Screen.mainScreen.scale || 1;
16
+ if (android.os.Build.VERSION.SDK_INT >= 30) {
17
+ const systemBars =
18
+ android.view.WindowInsets.Type.systemBars() | android.view.WindowInsets.Type.displayCutout();
19
+
20
+ const i = insets.getInsets(systemBars);
21
+ return {
22
+ top: i.top / scale,
23
+ right: i.right / scale,
24
+ bottom: i.bottom / scale,
25
+ left: i.left / scale,
26
+ };
27
+ }
28
+
29
+ return {
30
+ top: insets.getSystemWindowInsetTop() / scale,
31
+ right: insets.getSystemWindowInsetRight() / scale,
32
+ bottom: insets.getSystemWindowInsetBottom() / scale,
33
+ left: insets.getSystemWindowInsetLeft() / scale,
34
+ };
35
+ }
36
+
37
+ function measure(): SafeAreaInsets {
38
+ const view = Application.ios?.rootController?.view;
39
+ const insets = view?.safeAreaInsets;
40
+ if (insets) return { top: insets.top, right: insets.right, bottom: insets.bottom, left: insets.left };
41
+ if (Application.android) return readAndroidInsets();
42
+ return { top: 0, right: 0, bottom: 0, left: 0 };
43
+ }
44
+
45
+ /** Reads the root view's insets; Android and pre-attachment reads may be zero. */
46
+ export function useSafeAreaInsets(): SafeAreaInsets {
47
+ const [insets, setInsets] = useState<SafeAreaInsets>(measure);
48
+ useEffect(() => {
49
+ const update = () => setInsets(measure());
50
+ Application.on(Application.orientationChangedEvent, update);
51
+ Application.on(Application.resumeEvent, update);
52
+ update();
53
+ return () => {
54
+ Application.off(Application.orientationChangedEvent, update);
55
+ Application.off(Application.resumeEvent, update);
56
+ };
57
+ }, []);
58
+
59
+ return insets;
60
+ }
@@ -0,0 +1,38 @@
1
+ import { useEffect, useState } from 'octane';
2
+
3
+ export interface SafeAreaInsets { top: number; right: number; bottom: number; left: number; }
4
+
5
+ function measure(): SafeAreaInsets {
6
+ if (!document.body) return { top: 0, right: 0, bottom: 0, left: 0 };
7
+ const probe = document.createElement('div');
8
+ probe.style.cssText = 'position:fixed;visibility:hidden;pointer-events:none;' +
9
+ 'padding:env(safe-area-inset-top) env(safe-area-inset-right) ' +
10
+ 'env(safe-area-inset-bottom) env(safe-area-inset-left);' +
11
+ 'padding:constant(safe-area-inset-top) constant(safe-area-inset-right) ' +
12
+ 'constant(safe-area-inset-bottom) constant(safe-area-inset-left);';
13
+
14
+ document.body.appendChild(probe);
15
+ const style = getComputedStyle(probe);
16
+ const insets = {
17
+ top: parseFloat(style.paddingTop) || 0,
18
+ right: parseFloat(style.paddingRight) || 0,
19
+ bottom: parseFloat(style.paddingBottom) || 0,
20
+ left: parseFloat(style.paddingLeft) || 0,
21
+ };
22
+
23
+ probe.remove();
24
+ return insets;
25
+ }
26
+
27
+ /** Approximate CSS safe-area values, measured on mount and viewport resize. */
28
+ export function useSafeAreaInsets(): SafeAreaInsets {
29
+ const [insets, setInsets] = useState<SafeAreaInsets>({ top: 0, right: 0, bottom: 0, left: 0 });
30
+ useEffect(() => {
31
+ const update = () => setInsets(measure());
32
+ update();
33
+ window.addEventListener('resize', update);
34
+ return () => window.removeEventListener('resize', update);
35
+ }, []);
36
+
37
+ return insets;
38
+ }
@@ -0,0 +1,142 @@
1
+ import { FlexboxLayout, Screen } from '@nativescript/core'
2
+ import { detentOffset, normalizeDetents, snapDetentIndex } from './sheet-snap'
3
+
4
+ const SNAP_MS = 200
5
+
6
+ export interface SheetDetentsController {
7
+ /** Slide the panel in from below the screen edge — call once the host
8
+ * is inside the RootLayout (the RootLayout open call replaces the
9
+ * built-in enter/exit animation, which would fight detent offsets:
10
+ * it always animates translateY to 0). */
11
+ enter: () => void
12
+ detach: () => void
13
+ }
14
+
15
+ /** Drag-to-snap detents on a RootLayout sheet host: a self-drawn grabber
16
+ * strip (top-aligned grid child — the only drag target, so it never
17
+ * fights inner scrolling) drives the host's translateY; the host is
18
+ * sized to the largest detent and parked at the offset for the current
19
+ * one. `closeNow` fires after the dismiss slide-out — the caller decides
20
+ * what closing means (declarative `onDismiss` via RootLayout 'closed',
21
+ * or the `openSheet` resolution).
22
+ *
23
+ * In-window on native: the OS detent presentations
24
+ * (UISheetPresentationController / BottomSheetBehavior via
25
+ * BottomSheetDialogFragment) host a modal VC or a separate dialog
26
+ * window — a different surface contract than the RootLayout child this
27
+ * sheet is (UIModal/MaterialDialog own the modal path), so the snap
28
+ * mechanics are self-drawn and identical to the web leaf. */
29
+ export function attachSheetDetents(
30
+ host: any,
31
+ detents: readonly number[],
32
+ closeNow: () => void,
33
+ ): SheetDetentsController {
34
+ const sorted = normalizeDetents(detents)
35
+ if (!sorted.length) {
36
+ return { detach: () => {}, enter: () => {} }
37
+ }
38
+
39
+ // Parentless at attach (before RootLayout.open) — fall back to screen
40
+ // dips; every gesture-time read uses the real parent height.
41
+ const vh = () => (host.parent?.getActualSize?.().height || Screen.mainScreen.heightDIPs)
42
+ const max = sorted[sorted.length - 1]
43
+ let cur = 0
44
+
45
+ host.verticalAlignment = 'bottom'
46
+ host.translateY = vh() // fully below the screen until enter()
47
+
48
+ const grabber = new FlexboxLayout()
49
+ grabber.className = 'vx-sheet-grabber'
50
+ grabber.verticalAlignment = 'top'
51
+ const grip = new FlexboxLayout()
52
+ grip.className = 'vx-sheet-grip'
53
+ grabber.addChild(grip)
54
+ host.addChild(grabber)
55
+
56
+ let dragging = false
57
+ let dy0 = 0 // pan deltaY baseline — the gesture reports cumulative deltas
58
+ let ty0 = 0
59
+ let vy = 0
60
+ let lastDy = 0
61
+ let lastT = 0
62
+
63
+ const animateTo = (value: number, then?: () => void) => {
64
+ const done = host.animate?.({ translate: { x: 0, y: value }, duration: SNAP_MS })
65
+ if (!then) {
66
+ return
67
+ }
68
+
69
+ if (done?.then) {
70
+ done.then(() => then())
71
+ } else {
72
+ setTimeout(then, SNAP_MS)
73
+ }
74
+ }
75
+
76
+ const end = () => {
77
+ if (!dragging) {
78
+ return
79
+ }
80
+
81
+ dragging = false
82
+ const next = snapDetentIndex(host.translateY, vy, sorted, vh())
83
+ if (next < 0) {
84
+ animateTo(vh(), closeNow)
85
+ } else {
86
+ cur = next
87
+ animateTo(detentOffset(sorted, cur, vh()))
88
+ }
89
+ }
90
+
91
+ const onPan = (e: any) => {
92
+ if (e.state === 1) {
93
+ // began
94
+ dragging = true
95
+ dy0 = e.deltaY
96
+ ty0 = host.translateY
97
+ vy = 0
98
+ lastDy = e.deltaY
99
+ lastT = Date.now()
100
+ return
101
+ }
102
+
103
+ if (e.state === 0 || e.state === 3) {
104
+ // cancelled / ended
105
+ end()
106
+ return
107
+ }
108
+
109
+ if (!dragging) {
110
+ return
111
+ }
112
+
113
+ const now = Date.now()
114
+ const dt = (now - lastT) / 1000
115
+ const inc = e.deltaY - lastDy
116
+ if (dt > 0) {
117
+ vy = vy * 0.7 + (inc / dt) * 0.3
118
+ }
119
+
120
+ lastDy = e.deltaY
121
+ lastT = now
122
+ host.translateY = Math.min(Math.max(ty0 + (e.deltaY - dy0), 0), vh())
123
+ }
124
+
125
+ grabber.on('pan', onPan)
126
+
127
+ return {
128
+ enter: () => {
129
+ // Size the panel now that the host has a parent — grabber row
130
+ // heights and detent fractions resolve against the RootLayout.
131
+ host.height = max * vh()
132
+ host.translateY = vh()
133
+ animateTo(detentOffset(sorted, cur, vh()))
134
+ },
135
+ detach: () => {
136
+ grabber.off('pan', onPan)
137
+ if (grabber.parent === host) {
138
+ host.removeChild?.(grabber)
139
+ }
140
+ },
141
+ }
142
+ }