@octane-xplat/ui 0.5.0 → 0.6.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 (281) hide show
  1. package/README.md +3 -0
  2. package/dist/native/Absolute.native.tsrx.js +43 -0
  3. package/dist/native/Accordion.native.tsrx.js +75 -0
  4. package/dist/native/ActivityIndicator.native.tsrx.js +35 -0
  5. package/dist/native/Alert.native.tsrx.js +74 -0
  6. package/dist/native/Avatar.native.tsrx.js +76 -0
  7. package/dist/native/AvatarGroup.native.tsrx.js +84 -0
  8. package/dist/native/Badge.native.tsrx.js +29 -0
  9. package/dist/native/Banner.native.tsrx.js +80 -0
  10. package/dist/native/Breadcrumb.native.tsrx.js +66 -0
  11. package/dist/native/Button.native.tsrx.js +62 -0
  12. package/dist/native/CameraView.native.tsrx.js +165 -0
  13. package/dist/native/Card.native.tsrx.js +64 -0
  14. package/dist/native/Checkbox.native.tsrx.js +58 -0
  15. package/dist/native/CheckboxGroup.native.tsrx.js +70 -0
  16. package/dist/native/Chip.native.tsrx.js +83 -0
  17. package/dist/native/Collapsible.native.tsrx.js +74 -0
  18. package/dist/native/CommandPalette.native.tsrx.js +143 -0
  19. package/dist/native/ContextMenu.native.tsrx.js +140 -0
  20. package/dist/native/Drawer.native.tsrx.js +60 -0
  21. package/dist/native/DropdownMenu.native.tsrx.js +155 -0
  22. package/dist/native/Empty.native.tsrx.js +82 -0
  23. package/dist/native/FieldGroup.native.tsrx.js +39 -0
  24. package/dist/native/FormField.native.tsrx.js +53 -0
  25. package/dist/native/{ui8.js → Grid.native.tsrx.js} +19 -8
  26. package/dist/native/{ui59.js → Heading.native.tsrx.js} +2 -2
  27. package/dist/native/{ui58.js → Icon.native.tsrx.js} +4 -4
  28. package/dist/native/{ui29.js → Image.native.tsrx.js} +4 -4
  29. package/dist/native/InputNumber.native.tsrx.js +146 -0
  30. package/dist/native/InputRating.native.tsrx.js +74 -0
  31. package/dist/native/InputTags.native.tsrx.js +131 -0
  32. package/dist/native/Kbd.native.tsrx.js +29 -0
  33. package/dist/native/{ui50.js → KeyboardAvoiding.native.tsrx.js} +1 -1
  34. package/dist/native/{ui17.js → Link.native.tsrx.js} +1 -1
  35. package/dist/native/{ui55.js → Meter.native.tsrx.js} +2 -2
  36. package/dist/native/{ui22.js → NavLink.native.tsrx.js} +3 -3
  37. package/dist/native/NavigationMenu.native.tsrx.js +67 -0
  38. package/dist/native/{ui35.js → Overlay.native.tsrx.js} +3 -3
  39. package/dist/native/Pager.native.tsrx.js +282 -0
  40. package/dist/native/Pagination.native.tsrx.js +107 -0
  41. package/dist/native/PinInput.native.tsrx.js +94 -0
  42. package/dist/native/{ui38.js → Popover.native.tsrx.js} +5 -5
  43. package/dist/native/{ui16.js → Pressable.native.tsrx.js} +20 -14
  44. package/dist/native/ProgressGroup.native.tsrx.js +66 -0
  45. package/dist/native/RadioGroup.native.tsrx.js +85 -0
  46. package/dist/native/{ui15.js → RichText.native.tsrx.js} +15 -22
  47. package/dist/native/Row.native.tsrx.js +98 -0
  48. package/dist/native/{ui49.js → SafeArea.native.tsrx.js} +2 -2
  49. package/dist/native/{ui45.js → Screen.native.tsrx.js} +3 -3
  50. package/dist/native/{ui26.js → ScrollBox.native.tsrx.js} +1 -1
  51. package/dist/native/ScrollView.native.tsrx.js +233 -0
  52. package/dist/native/SearchInput.native.tsrx.js +151 -0
  53. package/dist/native/SegmentedControl.native.tsrx.js +75 -0
  54. package/dist/native/Select.native.tsrx.js +202 -0
  55. package/dist/native/Separator.native.tsrx.js +25 -0
  56. package/dist/native/{ui63.js → Sheet.native.tsrx.js} +15 -7
  57. package/dist/native/Skeleton.native.tsrx.js +28 -0
  58. package/dist/native/Slider.native.tsrx.js +98 -0
  59. package/dist/native/{ui13.js → Spacer.native.tsrx.js} +2 -2
  60. package/dist/native/{ui9.js → Stack.native.tsrx.js} +20 -9
  61. package/dist/native/Stepper.native.tsrx.js +75 -0
  62. package/dist/native/Switch.native.tsrx.js +33 -0
  63. package/dist/native/Table.native.tsrx.js +103 -0
  64. package/dist/native/Tabs.native.tsrx.js +163 -0
  65. package/dist/native/{ui14.js → Text.native.tsrx.js} +4 -3
  66. package/dist/native/{ui24.js → TextArea.native.tsrx.js} +17 -16
  67. package/dist/native/{ui23.js → TextInput.native.tsrx.js} +21 -16
  68. package/dist/native/Timeline.native.tsrx.js +112 -0
  69. package/dist/native/Tree.native.tsrx.js +140 -0
  70. package/dist/native/User.native.tsrx.js +95 -0
  71. package/dist/native/Video.native.tsrx.js +248 -0
  72. package/dist/native/View.native.tsrx.js +98 -0
  73. package/dist/native/WebView.native.tsrx.js +110 -0
  74. package/dist/native/aliases.native.tsrx.js +38 -0
  75. package/dist/native/android/BottomNavigationView.android.tsrx.js +171 -0
  76. package/dist/native/android/CircularProgressIndicator.android.tsrx.js +27 -0
  77. package/dist/native/{ui51.js → android/DrawerLayout.android.tsrx.js} +5 -7
  78. package/dist/native/android/MaterialDialog.android.tsrx.js +62 -0
  79. package/dist/native/android/MaterialSwitch.android.tsrx.js +28 -0
  80. package/dist/native/android/RecyclerView.android.tsrx.js +248 -0
  81. package/dist/native/android/SeekBar.android.tsrx.js +34 -0
  82. package/dist/native/android/index.js +9 -0
  83. package/dist/native/android/openModal.android.js +39 -0
  84. package/dist/native/camera-permission.native.js +47 -0
  85. package/dist/native/child-array.js +15 -0
  86. package/dist/native/icons.js +25 -0
  87. package/dist/native/{ui11.js → ios/LiquidGlass.ios.tsrx.js} +4 -4
  88. package/dist/native/{ui12.js → ios/LiquidGlassContainer.ios.tsrx.js} +4 -4
  89. package/dist/native/ios/SideDrawer.ios.tsrx.js +64 -0
  90. package/dist/native/{ui53.js → ios/UIActivityIndicatorView.ios.tsrx.js} +5 -5
  91. package/dist/native/{ui32.js → ios/UIModal.ios.tsrx.js} +10 -6
  92. package/dist/native/{ui56.js → ios/UISlider.ios.tsrx.js} +5 -5
  93. package/dist/native/{ui47.js → ios/UISwitch.ios.tsrx.js} +5 -5
  94. package/dist/native/ios/UITabBar.ios.tsrx.js +166 -0
  95. package/dist/native/ios/UITableView.ios.tsrx.js +270 -0
  96. package/dist/native/ios/index.js +11 -0
  97. package/dist/native/{ui33.js → ios/openModal.ios.js} +5 -4
  98. package/dist/native/modal-presenter.native.js +19 -0
  99. package/dist/native/native/index.js +4 -0
  100. package/dist/native/octane-client-build.json +1 -1
  101. package/dist/native/{ui6.js → pan.native.tsrx.js} +9 -69
  102. package/dist/native/platform.native.js +10 -0
  103. package/dist/native/refresh-metrics.js +9 -0
  104. package/dist/native/refresh.native.js +177 -0
  105. package/dist/native/{ui34.js → root-layout.native.js} +6 -1
  106. package/dist/native/{ui21.js → route.native.js} +96 -12
  107. package/dist/native/sheet-detents.native.js +102 -0
  108. package/dist/native/{ui64.js → sheet-service.native.js} +19 -9
  109. package/dist/native/sheet-snap.js +35 -0
  110. package/dist/native/text-write.native.js +27 -0
  111. package/dist/native/{ui42.js → theme/status-bar-scheme.native.js} +2 -2
  112. package/dist/{web/ui29.js → native/theme/theme-scheme.js} +2 -2
  113. package/dist/native/{ui40.js → toast-anchor.native.tsrx.js} +3 -3
  114. package/dist/native/translate.native.js +11 -0
  115. package/dist/native/ui.js +93 -55
  116. package/dist/native/use-back.native.tsrx.js +9 -0
  117. package/dist/native/{ui52.js → useMeasure.native.tsrx.js} +1 -1
  118. package/dist/native/video-chrome.native.tsrx.js +365 -0
  119. package/dist/web/Absolute.web.tsrx.js +47 -0
  120. package/dist/web/Accordion.web.tsrx.js +85 -0
  121. package/dist/web/{ui48.js → ActivityIndicator.web.tsrx.js} +1 -1
  122. package/dist/web/Alert.web.tsrx.js +79 -0
  123. package/dist/web/Avatar.web.tsrx.js +106 -0
  124. package/dist/web/AvatarGroup.web.tsrx.js +108 -0
  125. package/dist/web/Badge.web.tsrx.js +37 -0
  126. package/dist/web/Banner.web.tsrx.js +79 -0
  127. package/dist/web/Breadcrumb.web.tsrx.js +135 -0
  128. package/dist/web/Button.web.tsrx.js +45 -0
  129. package/dist/web/CameraView.web.tsrx.js +310 -0
  130. package/dist/web/Card.web.tsrx.js +73 -0
  131. package/dist/web/Checkbox.web.tsrx.js +89 -0
  132. package/dist/web/CheckboxGroup.web.tsrx.js +79 -0
  133. package/dist/web/Chip.web.tsrx.js +64 -0
  134. package/dist/web/Collapsible.web.tsrx.js +94 -0
  135. package/dist/web/CommandPalette.web.tsrx.js +125 -0
  136. package/dist/web/ContextMenu.web.tsrx.js +154 -0
  137. package/dist/web/{ui45.js → Drawer.web.tsrx.js} +13 -9
  138. package/dist/web/DropdownMenu.web.tsrx.js +162 -0
  139. package/dist/web/Empty.web.tsrx.js +89 -0
  140. package/dist/web/FieldGroup.web.tsrx.js +57 -0
  141. package/dist/web/FormField.web.tsrx.js +92 -0
  142. package/dist/web/Grid.web.tsrx.js +65 -0
  143. package/dist/web/{ui54.js → Heading.web.tsrx.js} +2 -2
  144. package/dist/web/{ui53.js → Icon.web.tsrx.js} +2 -2
  145. package/dist/web/{ui25.js → Image.web.tsrx.js} +2 -2
  146. package/dist/web/InputNumber.web.tsrx.js +99 -0
  147. package/dist/web/InputRating.web.tsrx.js +72 -0
  148. package/dist/web/InputTags.web.tsrx.js +122 -0
  149. package/dist/web/Kbd.web.tsrx.js +37 -0
  150. package/dist/web/{ui50.js → Meter.web.tsrx.js} +1 -1
  151. package/dist/web/{ui19.js → NavLink.web.tsrx.js} +1 -1
  152. package/dist/web/NavigationMenu.web.tsrx.js +118 -0
  153. package/dist/web/{ui31.js → Overlay.web.tsrx.js} +2 -2
  154. package/dist/web/Pager.web.tsrx.js +337 -0
  155. package/dist/web/Pagination.web.tsrx.js +80 -0
  156. package/dist/web/PinInput.web.tsrx.js +72 -0
  157. package/dist/web/{ui33.js → Popover.web.tsrx.js} +3 -3
  158. package/dist/web/{ui15.js → Pressable.web.tsrx.js} +68 -95
  159. package/dist/web/ProgressGroup.web.tsrx.js +109 -0
  160. package/dist/web/RadioGroup.web.tsrx.js +69 -0
  161. package/dist/web/{ui14.js → RichText.web.tsrx.js} +2 -2
  162. package/dist/web/Row.web.tsrx.js +250 -0
  163. package/dist/web/{ui43.js → SafeArea.web.tsrx.js} +1 -1
  164. package/dist/web/{ui39.js → Screen.web.tsrx.js} +1 -1
  165. package/dist/web/{ui24.js → ScrollBox.web.tsrx.js} +1 -1
  166. package/dist/web/ScrollView.web.tsrx.js +388 -0
  167. package/dist/web/SearchInput.web.tsrx.js +137 -0
  168. package/dist/web/SegmentedControl.web.tsrx.js +75 -0
  169. package/dist/web/Select.web.tsrx.js +149 -0
  170. package/dist/web/Separator.web.tsrx.js +42 -0
  171. package/dist/web/Sheet.web.tsrx.js +81 -0
  172. package/dist/web/Skeleton.web.tsrx.js +56 -0
  173. package/dist/web/Slider.web.tsrx.js +97 -0
  174. package/dist/web/{ui12.js → Spacer.web.tsrx.js} +1 -1
  175. package/dist/web/Stack.web.tsrx.js +47 -0
  176. package/dist/web/Stepper.web.tsrx.js +65 -0
  177. package/dist/web/Switch.web.tsrx.js +59 -0
  178. package/dist/web/Table.web.tsrx.js +161 -0
  179. package/dist/web/{ui40.js → Tabs.web.tsrx.js} +33 -16
  180. package/dist/web/{ui13.js → Text.web.tsrx.js} +18 -50
  181. package/dist/web/{ui21.js → TextArea.web.tsrx.js} +4 -4
  182. package/dist/web/{ui20.js → TextInput.web.tsrx.js} +8 -8
  183. package/dist/web/Timeline.web.tsrx.js +172 -0
  184. package/dist/web/Tree.web.tsrx.js +146 -0
  185. package/dist/web/User.web.tsrx.js +116 -0
  186. package/dist/web/Video.web.tsrx.js +400 -0
  187. package/dist/web/View.web.tsrx.js +250 -0
  188. package/dist/web/WebView.web.tsrx.js +235 -0
  189. package/dist/web/aliases.web.tsrx.js +24 -0
  190. package/dist/web/{ui36.js → anim.web.tsrx.js} +3 -35
  191. package/dist/web/child-array.js +15 -0
  192. package/dist/web/icons.js +25 -0
  193. package/dist/web/octane-client-build.json +1 -1
  194. package/dist/web/pan.web.tsrx.js +66 -0
  195. package/dist/web/platform.web.js +9 -0
  196. package/dist/web/refresh-metrics.js +9 -0
  197. package/dist/web/refresh.web.js +133 -0
  198. package/dist/web/{ui18.js → route.web.js} +14 -2
  199. package/dist/web/sheet-detents.web.js +103 -0
  200. package/dist/web/{ui60.js → sheet-service.web.js} +5 -1
  201. package/dist/web/sheet-snap.js +35 -0
  202. package/dist/{native/ui31.js → web/theme/theme-scheme.js} +2 -2
  203. package/dist/web/{ui35.js → toast-anchor.web.tsrx.js} +3 -3
  204. package/dist/web/transform.web.js +43 -0
  205. package/dist/web/translate.web.js +13 -0
  206. package/dist/web/ui.js +91 -53
  207. package/dist/web/use-back.web.tsrx.js +9 -0
  208. package/dist/web/video-chrome.web.tsrx.js +207 -0
  209. package/dist/web/{ui34.js → web/Hoverable.web.tsrx.js} +6 -6
  210. package/dist/web/web/Tooltip.web.tsrx.js +183 -0
  211. package/dist/web/web/index.js +3 -0
  212. package/package.json +30 -3
  213. package/src/theme/tokens.css +1380 -200
  214. package/types/android.d.ts +53 -0
  215. package/types/index.d.ts +32 -17
  216. package/types/index.native.d.ts +273 -0
  217. package/types/index.web.d.ts +272 -0
  218. package/types/ios.d.ts +59 -0
  219. package/types/native.d.ts +5 -0
  220. package/types/props.d.ts +930 -40
  221. package/types/web.d.ts +17 -0
  222. package/dist/native/ui10.js +0 -32
  223. package/dist/native/ui25.js +0 -141
  224. package/dist/native/ui27.js +0 -61
  225. package/dist/native/ui39.js +0 -103
  226. package/dist/native/ui4.js +0 -24
  227. package/dist/native/ui46.js +0 -267
  228. package/dist/native/ui57.js +0 -19
  229. package/dist/native/ui60.js +0 -14
  230. package/dist/native/ui7.js +0 -52
  231. package/dist/web/ui10.js +0 -46
  232. package/dist/web/ui11.js +0 -42
  233. package/dist/web/ui22.js +0 -108
  234. package/dist/web/ui23.js +0 -96
  235. package/dist/web/ui26.js +0 -45
  236. package/dist/web/ui3.js +0 -31
  237. package/dist/web/ui30.js +0 -34
  238. package/dist/web/ui41.js +0 -43
  239. package/dist/web/ui44.js +0 -42
  240. package/dist/web/ui5.js +0 -168
  241. package/dist/web/ui51.js +0 -47
  242. package/dist/web/ui52.js +0 -19
  243. package/dist/web/ui55.js +0 -17
  244. package/dist/web/ui59.js +0 -44
  245. package/dist/web/ui6.js +0 -94
  246. package/dist/web/ui7.js +0 -62
  247. package/dist/web/ui8.js +0 -46
  248. package/dist/web/ui9.js +0 -46
  249. /package/dist/native/{ui20.js → RouteHost.native.tsrx.js} +0 -0
  250. /package/dist/native/{ui41.js → anim.native.tsrx.js} +0 -0
  251. /package/dist/native/{ui2.js → cx.js} +0 -0
  252. /package/dist/native/{ui3.js → escape-props.native.js} +0 -0
  253. /package/dist/native/{ui5.js → layout-child.native.js} +0 -0
  254. /package/dist/native/{ui54.js → meter-math.js} +0 -0
  255. /package/dist/native/{ui36.js → platformProps.native.js} +0 -0
  256. /package/dist/native/{ui37.js → popover-position.js} +0 -0
  257. /package/dist/native/{ui19.js → route-table.js} +0 -0
  258. /package/dist/native/{ui48.js → safeAreaInsets.native.tsrx.js} +0 -0
  259. /package/dist/native/{ui18.js → stacks.native.js} +0 -0
  260. /package/dist/native/{ui61.js → store.js} +0 -0
  261. /package/dist/native/{ui43.js → styled.native.tsrx.js} +0 -0
  262. /package/dist/native/{ui28.js → svg.native.js} +0 -0
  263. /package/dist/native/{ui30.js → theme/colorScheme.native.js} +0 -0
  264. /package/dist/native/{ui62.js → use-store.native.tsrx.js} +0 -0
  265. /package/dist/native/{ui44.js → windows.native.js} +0 -0
  266. /package/dist/web/{ui16.js → Link.web.tsrx.js} +0 -0
  267. /package/dist/web/{ui28.js → cx.js} +0 -0
  268. /package/dist/web/{ui2.js → escape-props.web.js} +0 -0
  269. /package/dist/web/{ui4.js → layout-child.web.js} +0 -0
  270. /package/dist/web/{ui49.js → meter-math.js} +0 -0
  271. /package/dist/web/{ui47.js → platformProps.web.js} +0 -0
  272. /package/dist/web/{ui32.js → popover-position.js} +0 -0
  273. /package/dist/web/{ui17.js → route-table.js} +0 -0
  274. /package/dist/web/{ui42.js → safeAreaInsets.web.tsrx.js} +0 -0
  275. /package/dist/web/{ui56.js → stacks.web.js} +0 -0
  276. /package/dist/web/{ui57.js → store.js} +0 -0
  277. /package/dist/web/{ui37.js → styled.web.tsrx.js} +0 -0
  278. /package/dist/web/{ui27.js → theme/colorScheme.web.js} +0 -0
  279. /package/dist/web/{ui58.js → use-store.web.tsrx.js} +0 -0
  280. /package/dist/web/{ui46.js → useMeasure.web.tsrx.js} +0 -0
  281. /package/dist/web/{ui38.js → windows.web.js} +0 -0
@@ -0,0 +1,235 @@
1
+ import { applyEscapeProps } from "./escape-props.web.js";
2
+ import { layoutChildProps } from "./layout-child.web.js";
3
+ import { __s, bag16, clone, hookSlots, snapshotSpread, template } from "octane";
4
+ import { bindSignalChild, bindSignalHostPropSources, compilerMemoRegion, enableSignalBindings, hookMemoCreate, hookMemoPublishInvariant } from "octane/internal/client";
5
+ //#region src/WebView.web.tsrx
6
+ enableSignalBindings(1, true);
7
+ var _t$0 = /* @__PURE__ */ template("<iframe></iframe>");
8
+ var _rm$1 = [
9
+ "s",
10
+ "n",
11
+ "m"
12
+ ];
13
+ var _hs$ = /* @__PURE__ */ hookSlots(1);
14
+ var DEFAULT_SANDBOX = "allow-scripts allow-same-origin allow-forms allow-modals";
15
+ var WebView = /* @__PURE__ */ __s(function WebView(props, __s, __extra) {
16
+ const __memoRegion = compilerMemoRegion(__s, _hs$ + 0);
17
+ let __hk = __memoRegion.hooks;
18
+ if (__hk === void 0) __memoRegion.hooks = __hk = hookMemoCreate(1);
19
+ const handle = __hk[0] ?? hookMemoPublishInvariant(__hk, 0, (el) => ({
20
+ reload: () => {
21
+ try {
22
+ el.contentWindow.location.reload();
23
+ } catch {
24
+ if (el.src) el.src = el.src;
25
+ }
26
+ },
27
+ goBack: () => el.contentWindow?.history.back(),
28
+ goForward: () => el.contentWindow?.history.forward(),
29
+ stopLoading: () => {
30
+ try {
31
+ el.contentWindow?.stop();
32
+ } catch {}
33
+ },
34
+ native: el
35
+ }));
36
+ let _b = __s.slots[0];
37
+ if (_b === void 0) {
38
+ let _m0, _m1, _m2, _m3, _m4, _m5, _m6, _m7, _m8, _m9, _m10, _m11, _m12, _m13;
39
+ const _root = clone(_t$0);
40
+ _m0 = (el) => {
41
+ if (!el) return;
42
+ applyEscapeProps(el, props);
43
+ props.bind?.(handle(el));
44
+ };
45
+ _m1 = props.id;
46
+ _m2 = ["vx-webview", props.className];
47
+ _m3 = snapshotSpread(layoutChildProps(props));
48
+ _m4 = props.html;
49
+ _m5 = props.html === void 0 ? props.src : void 0;
50
+ _m6 = props.sandbox === false ? void 0 : props.sandbox ?? DEFAULT_SANDBOX;
51
+ _m7 = props.scrollEnabled === false ? "no" : void 0;
52
+ _m8 = props.accessibilityLabel;
53
+ _m9 = props.accessible === false ? true : void 0;
54
+ _m10 = (e) => props.onLoad?.({ url: props.html === void 0 ? e.currentTarget?.src : void 0 });
55
+ _m11 = (e) => props.onError?.({
56
+ url: props.html === void 0 ? e.currentTarget?.src : void 0,
57
+ error: "iframe failed to load"
58
+ });
59
+ _m12 = _root;
60
+ _m13 = bindSignalHostPropSources(__s, void 0, _root, [
61
+ [
62
+ false,
63
+ "ref",
64
+ _m0
65
+ ],
66
+ [
67
+ false,
68
+ "id",
69
+ _m1
70
+ ],
71
+ [
72
+ false,
73
+ "className",
74
+ _m2
75
+ ],
76
+ [true, _m3],
77
+ [
78
+ false,
79
+ "srcDoc",
80
+ _m4
81
+ ],
82
+ [
83
+ false,
84
+ "src",
85
+ _m5
86
+ ],
87
+ [
88
+ false,
89
+ "sandbox",
90
+ _m6
91
+ ],
92
+ [
93
+ false,
94
+ "scrolling",
95
+ _m7
96
+ ],
97
+ [
98
+ false,
99
+ "title",
100
+ _m8
101
+ ],
102
+ [
103
+ false,
104
+ "aria-hidden",
105
+ _m9
106
+ ],
107
+ [
108
+ false,
109
+ "onLoad",
110
+ _m10
111
+ ],
112
+ [
113
+ false,
114
+ "onError",
115
+ _m11
116
+ ]
117
+ ], "b:adbe378c", false);
118
+ _b = bag16(__s, _root, _m0, _m1, _m2, _m3, _m4, _m5, _m6, _m7, _m8, _m9, _m10, _m11, _m12, _m13, null, void 0);
119
+ __s.refFields = _rm$1;
120
+ } else {
121
+ {
122
+ const _v = (el) => {
123
+ if (!el) return;
124
+ applyEscapeProps(el, props);
125
+ props.bind?.(handle(el));
126
+ };
127
+ if (_b.a !== _v) _b.a = _v;
128
+ }
129
+ {
130
+ const _v = props.id;
131
+ if (_b.b !== _v) _b.b = _v;
132
+ }
133
+ {
134
+ const _v = ["vx-webview", props.className];
135
+ if (_b.c !== _v) _b.c = _v;
136
+ }
137
+ _b.d = snapshotSpread(layoutChildProps(props));
138
+ {
139
+ const _v = props.html;
140
+ if (_b.e !== _v) _b.e = _v;
141
+ }
142
+ {
143
+ const _v = props.html === void 0 ? props.src : void 0;
144
+ if (_b.f !== _v) _b.f = _v;
145
+ }
146
+ {
147
+ const _v = props.sandbox === false ? void 0 : props.sandbox ?? DEFAULT_SANDBOX;
148
+ if (_b.g !== _v) _b.g = _v;
149
+ }
150
+ {
151
+ const _v = props.scrollEnabled === false ? "no" : void 0;
152
+ if (_b.h !== _v) _b.h = _v;
153
+ }
154
+ {
155
+ const _v = props.accessibilityLabel;
156
+ if (_b.i !== _v) _b.i = _v;
157
+ }
158
+ {
159
+ const _v = props.accessible === false ? true : void 0;
160
+ if (_b.j !== _v) _b.j = _v;
161
+ }
162
+ {
163
+ const _v = (e) => props.onLoad?.({ url: props.html === void 0 ? e.currentTarget?.src : void 0 });
164
+ if (_b.k !== _v) _b.k = _v;
165
+ }
166
+ {
167
+ const _v = (e) => props.onError?.({
168
+ url: props.html === void 0 ? e.currentTarget?.src : void 0,
169
+ error: "iframe failed to load"
170
+ });
171
+ if (_b.l !== _v) _b.l = _v;
172
+ }
173
+ _b.n = bindSignalHostPropSources(__s, _b.n, _b.m, [
174
+ [
175
+ false,
176
+ "ref",
177
+ _b.a
178
+ ],
179
+ [
180
+ false,
181
+ "id",
182
+ _b.b
183
+ ],
184
+ [
185
+ false,
186
+ "className",
187
+ _b.c
188
+ ],
189
+ [true, _b.d],
190
+ [
191
+ false,
192
+ "srcDoc",
193
+ _b.e
194
+ ],
195
+ [
196
+ false,
197
+ "src",
198
+ _b.f
199
+ ],
200
+ [
201
+ false,
202
+ "sandbox",
203
+ _b.g
204
+ ],
205
+ [
206
+ false,
207
+ "scrolling",
208
+ _b.h
209
+ ],
210
+ [
211
+ false,
212
+ "title",
213
+ _b.i
214
+ ],
215
+ [
216
+ false,
217
+ "aria-hidden",
218
+ _b.j
219
+ ],
220
+ [
221
+ false,
222
+ "onLoad",
223
+ _b.k
224
+ ],
225
+ [
226
+ false,
227
+ "onError",
228
+ _b.l
229
+ ]
230
+ ], "b:adbe378c", false);
231
+ }
232
+ _b.q = bindSignalChild(__s, _b.q, 1, _b.m, Object.prototype.propertyIsEnumerable.call(_b.n.resolved, "children") ? _b.n.resolved.children : void 0, "b:adbe378c", null, void 0, void 0, void 0, true);
233
+ });
234
+ //#endregion
235
+ export { WebView };
@@ -0,0 +1,24 @@
1
+ import { Select } from "./Select.web.tsrx.js";
2
+ import { createScopedValue } from "octane";
3
+ import { createElementFromConfig } from "octane/internal/client";
4
+ //#region src/aliases.web.tsrx
5
+ var SelectMenu = function SelectMenu(props, __s, __extra) {
6
+ return createScopedValue(() => createElementFromConfig("c:bda11851", Select, {
7
+ ...props,
8
+ multiple: true
9
+ })) ?? null;
10
+ };
11
+ var Combobox = function Combobox(props, __s, __extra) {
12
+ return createScopedValue(() => createElementFromConfig("c:4a0931a9", Select, {
13
+ ...props,
14
+ searchable: true
15
+ })) ?? null;
16
+ };
17
+ var InputMenu = function InputMenu(props, __s, __extra) {
18
+ return createScopedValue(() => createElementFromConfig("c:4bbd50ae", Select, {
19
+ ...props,
20
+ searchable: true
21
+ })) ?? null;
22
+ };
23
+ //#endregion
24
+ export { Combobox, InputMenu, SelectMenu };
@@ -1,46 +1,14 @@
1
+ import { writeTransformProp } from "./transform.web.js";
1
2
  import { hookSlots, useRef } from "octane";
2
3
  //#region src/anim.web.tsrx
3
4
  var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(1));
4
- var transformProps = {
5
- translateX: (v) => `translateX(${v}px)`,
6
- translateY: (v) => `translateY(${v}px)`,
7
- translateZ: (v) => `translateZ(${v}px)`,
8
- scale: (v) => `scale(${v})`,
9
- scaleX: (v) => `scaleX(${v})`,
10
- scaleY: (v) => `scaleY(${v})`,
11
- rotate: (v) => `rotate(${v}deg)`,
12
- rotateX: (v) => `rotateX(${v}deg)`,
13
- rotateY: (v) => `rotateY(${v}deg)`,
14
- skewX: (v) => `skewX(${v}deg)`,
15
- skewY: (v) => `skewY(${v}deg)`
16
- };
17
- var transformStates = /* @__PURE__ */ new WeakMap();
18
- function writeAnimatedValue(el, prop, value) {
19
- if (Object.prototype.hasOwnProperty.call(transformProps, prop)) {
20
- const transformProp = prop;
21
- let state = transformStates.get(el);
22
- if (!state) {
23
- const computed = getComputedStyle(el).transform;
24
- state = {
25
- base: computed === "none" ? "" : computed,
26
- values: /* @__PURE__ */ new Map()
27
- };
28
- transformStates.set(el, state);
29
- }
30
- state.values.set(transformProp, value);
31
- const transforms = Object.entries(transformProps).filter(([name]) => state.values.has(name)).map(([name, toTransform]) => toTransform(state.values.get(name)));
32
- el.style.transform = [state.base, ...transforms].filter(Boolean).join(" ");
33
- return;
34
- }
35
- el.style[prop] = value;
36
- }
37
5
  function createAnimated(initial, prop) {
38
6
  let el = null;
39
7
  let current = initial;
40
8
  let raf = 0;
41
9
  const apply = (v) => {
42
10
  current = v;
43
- if (el) writeAnimatedValue(el, prop, v);
11
+ if (el) writeTransformProp(el, prop, v);
44
12
  };
45
13
  const run = (step) => {
46
14
  cancelAnimationFrame(raf);
@@ -59,7 +27,7 @@ function createAnimated(initial, prop) {
59
27
  },
60
28
  bind(e) {
61
29
  el = e;
62
- if (el) writeAnimatedValue(el, prop, current);
30
+ if (el) writeTransformProp(el, prop, current);
63
31
  },
64
32
  to(target, opts) {
65
33
  const dur = opts?.duration ?? 300;
@@ -0,0 +1,15 @@
1
+ //#region src/child-array.ts
2
+ /** Normalize a JSX children value to a flat array — children may be a
3
+ * single node, an array, or nested arrays from `.map` calls. */
4
+ function toChildArray(children) {
5
+ const out = [];
6
+ const walk = (node) => {
7
+ if (node == null || node === false) return;
8
+ if (Array.isArray(node)) for (const child of node) walk(child);
9
+ else out.push(node);
10
+ };
11
+ walk(children);
12
+ return out;
13
+ }
14
+ //#endregion
15
+ export { toChildArray };
@@ -0,0 +1,25 @@
1
+ //#region src/icons.ts
2
+ /**
3
+ * App-owned icon registry. `svg` is SVG path `d` data (not a full SVG
4
+ * markup string). `src` can carry an image or an SVG source; the leaves only
5
+ * infer SVG from inline markup, SVG data URIs, and `.svg` paths/URLs. Native
6
+ * `font` glyphs render only when the app ships and registers that font.
7
+ */
8
+ var icons = /* @__PURE__ */ new Map();
9
+ function registerIcon(name, glyph) {
10
+ icons.set(name, glyph);
11
+ }
12
+ function registerIcons(record) {
13
+ for (const [name, glyph] of Object.entries(record)) icons.set(name, glyph);
14
+ }
15
+ function getIcon(name) {
16
+ return icons.get(name);
17
+ }
18
+ if (!icons.has("xplat-search")) icons.set("xplat-search", { svg: "M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" });
19
+ if (!icons.has("xplat-clear")) icons.set("xplat-clear", { svg: "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" });
20
+ if (!icons.has("xplat-play")) icons.set("xplat-play", { svg: "M8 5v14l11-7z" });
21
+ if (!icons.has("xplat-pause")) icons.set("xplat-pause", { svg: "M6 19h4V5H6v14zm8-14v14h4V5h-4z" });
22
+ if (!icons.has("xplat-volume")) icons.set("xplat-volume", { svg: "M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z" });
23
+ if (!icons.has("xplat-volume-off")) icons.set("xplat-volume-off", { svg: "M16.5 12c0-1.77-1.02-3.29-2.5-4.03v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51C20.63 14.91 21 13.5 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3L3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06c1.45-.54 2.78-1.32 3.97-2.27L19.73 21 21 19.73l-9-9L4.27 3zM12 4L9.91 6.09 12 8.18V4z" });
24
+ //#endregion
25
+ export { getIcon, registerIcon, registerIcons };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "buildId": "bc136ba4-ca23-4dbc-99a2-c7175a4714db",
3
+ "buildId": "713b80db-403f-439c-98d0-7aed298c257f",
4
4
  "mode": "production",
5
5
  "capabilities": {
6
6
  "independentHydration": false
@@ -0,0 +1,66 @@
1
+ import { hookSlots, useEffect } from "octane";
2
+ //#region src/pan.web.tsrx
3
+ var _h$0 = /* @__PURE__ */ Symbol(/* @__PURE__ */ hookSlots(1));
4
+ function usePan(el, cb) {
5
+ useEffect(() => {
6
+ const node = el.current;
7
+ if (!node || !cb) return;
8
+ let sx = 0, sy = 0, active = false, last = 0, lx = 0, t0 = 0;
9
+ const emit = (e, state) => {
10
+ const now = performance.now();
11
+ const dt = Math.max(now - t0, 1) / 1e3;
12
+ const vx = (e.clientX - lx) / dt;
13
+ const vy = (e.clientY - last) / dt;
14
+ lx = e.clientX;
15
+ last = e.clientY;
16
+ t0 = now;
17
+ cb({
18
+ x: e.clientX - sx,
19
+ y: e.clientY - sy,
20
+ dx: e.clientX - sx,
21
+ dy: e.clientY - sy,
22
+ vx,
23
+ vy,
24
+ state,
25
+ target: node
26
+ });
27
+ };
28
+ const down = (e) => {
29
+ active = true;
30
+ sx = e.clientX;
31
+ sy = e.clientY;
32
+ t0 = performance.now();
33
+ lx = sx;
34
+ last = sy;
35
+ node.setPointerCapture?.(e.pointerId);
36
+ emit(e, "began");
37
+ };
38
+ const move = (e) => {
39
+ if (active) emit(e, "moved");
40
+ };
41
+ const up = (e) => {
42
+ if (active) {
43
+ active = false;
44
+ emit(e, "ended");
45
+ }
46
+ };
47
+ const cancel = (e) => {
48
+ if (active) {
49
+ active = false;
50
+ emit(e, "cancelled");
51
+ }
52
+ };
53
+ node.addEventListener("pointerdown", down);
54
+ node.addEventListener("pointermove", move);
55
+ node.addEventListener("pointerup", up);
56
+ node.addEventListener("pointercancel", cancel);
57
+ return () => {
58
+ node.removeEventListener("pointerdown", down);
59
+ node.removeEventListener("pointermove", move);
60
+ node.removeEventListener("pointerup", up);
61
+ node.removeEventListener("pointercancel", cancel);
62
+ };
63
+ }, [el, cb], _h$0);
64
+ }
65
+ //#endregion
66
+ export { usePan };
@@ -0,0 +1,9 @@
1
+ //#region src/platform.web.ts
2
+ /** Compile-time platform flag — `false` in every web build. Prefer
3
+ * `.web`/`.native` leaves for real divergence; `isNative` covers the
4
+ * render-time cases (conditional JSX, prop selection) where a whole
5
+ * leaf file is heavier than the difference. Bundlers constant-fold it,
6
+ * so `!isNative` branches tree-shake out of web output. */
7
+ var isNative = false;
8
+ //#endregion
9
+ export { isNative };
@@ -0,0 +1,9 @@
1
+ //#region src/refresh-metrics.ts
2
+ /** Finger-travel → content displacement. iOS rubber-band applies ~0.5
3
+ * resistance at small pulls; web/Android drive the same ratio so the
4
+ * affordance reads identically across targets. */
5
+ function dampenPull(dy) {
6
+ return dy * .5;
7
+ }
8
+ //#endregion
9
+ export { dampenPull };
@@ -0,0 +1,133 @@
1
+ import { setTranslate } from "./translate.web.js";
2
+ import { dampenPull } from "./refresh-metrics.js";
3
+ //#region src/refresh.web.ts
4
+ var DOCK_ANIM_MS = 180;
5
+ /** Pointer/touch-driven pull-to-refresh for the DOM leaf — the web has no
6
+ * native overscroll, so drag distance translates the scroller inside the
7
+ * clipped wrapper while the self-drawn indicator slides into the gap.
8
+ * `touchmove` must be non-passive: `preventDefault` is what keeps the
9
+ * browser from taking the gesture as a scroll (or Chrome's own
10
+ * pull-to-refresh on Android). Mouse drags ride the pointer events. */
11
+ function createPullToRefresh(host) {
12
+ const { scroller, indicator, cfg } = host;
13
+ if (!scroller || !indicator) return {
14
+ sync: () => {},
15
+ detach: () => {}
16
+ };
17
+ let pulling = false;
18
+ let y0 = 0;
19
+ let pull = 0;
20
+ let docked = false;
21
+ let grace = null;
22
+ const threshold = () => cfg.current.threshold ?? 64;
23
+ /** Resting gap: the strip stays docked while the gesture docked it OR
24
+ * the controlled `refreshing` prop holds it open. */
25
+ const held = () => docked || !!cfg.current.refreshing;
26
+ const applyReveal = (reveal) => {
27
+ setTranslate(indicator, 0, reveal - 64);
28
+ setTranslate(scroller, 0, reveal);
29
+ };
30
+ const settle = (reveal) => {
31
+ for (const el of [scroller, indicator]) el.style.transition = `transform ${DOCK_ANIM_MS}ms ease-out`;
32
+ applyReveal(reveal);
33
+ setTimeout(() => {
34
+ for (const el of [scroller, indicator]) el.style.transition = "";
35
+ }, DOCK_ANIM_MS);
36
+ };
37
+ const dock = () => {
38
+ docked = true;
39
+ pull = 0;
40
+ settle(64);
41
+ };
42
+ const collapse = () => {
43
+ docked = false;
44
+ pull = 0;
45
+ settle(0);
46
+ };
47
+ /** `pull` is drag distance beyond the held baseline — a release only
48
+ * fires `onRefresh` when the user actually pulled (a resting release
49
+ * inside the dock re-fires nothing). */
50
+ const release = () => {
51
+ pulling = false;
52
+ const reveal = pull + (held() ? 64 : 0);
53
+ if (pull > 0 && reveal >= threshold()) {
54
+ cfg.current.onRefresh?.();
55
+ dock();
56
+ if (grace) clearTimeout(grace);
57
+ grace = setTimeout(() => {
58
+ if (!cfg.current.refreshing) collapse();
59
+ }, 350);
60
+ } else if (held()) {
61
+ docked = true;
62
+ pull = 0;
63
+ settle(64);
64
+ } else collapse();
65
+ };
66
+ const begin = (y, prevent) => {
67
+ if (scroller.scrollTop > 0) return;
68
+ pulling = true;
69
+ y0 = y;
70
+ pull = 0;
71
+ prevent?.();
72
+ };
73
+ const move = (y, prevent) => {
74
+ if (!pulling) return;
75
+ const dy = y - y0;
76
+ if (dy <= 0 || scroller.scrollTop > 0) {
77
+ pulling = false;
78
+ pull = 0;
79
+ applyReveal(held() ? 64 : 0);
80
+ return;
81
+ }
82
+ prevent();
83
+ pull = dampenPull(dy);
84
+ applyReveal(pull + (held() ? 64 : 0));
85
+ };
86
+ const end = () => {
87
+ if (pulling) release();
88
+ };
89
+ const touchStart = (e) => begin(e.touches[0].clientY);
90
+ const touchMove = (e) => move(e.touches[0].clientY, () => e.preventDefault());
91
+ const touchEnd = () => end();
92
+ const pointerDown = (e) => {
93
+ if (e.pointerType === "mouse" && e.button === 0) begin(e.clientY, () => e.preventDefault());
94
+ };
95
+ const pointerMove = (e) => {
96
+ if (e.pointerType === "mouse") move(e.clientY, () => e.preventDefault());
97
+ };
98
+ const pointerUp = (e) => {
99
+ if (e.pointerType === "mouse") end();
100
+ };
101
+ scroller.addEventListener("touchstart", touchStart, { passive: true });
102
+ scroller.addEventListener("touchmove", touchMove, { passive: false });
103
+ scroller.addEventListener("touchend", touchEnd);
104
+ scroller.addEventListener("touchcancel", touchEnd);
105
+ scroller.addEventListener("pointerdown", pointerDown);
106
+ scroller.addEventListener("pointermove", pointerMove);
107
+ scroller.addEventListener("pointerup", pointerUp);
108
+ scroller.addEventListener("pointercancel", pointerUp);
109
+ return {
110
+ sync: () => {
111
+ if (cfg.current.refreshing) {
112
+ if (grace) clearTimeout(grace);
113
+ if (!docked && !pulling) dock();
114
+ } else if (docked && !pulling) collapse();
115
+ },
116
+ detach: () => {
117
+ if (grace) clearTimeout(grace);
118
+ scroller.removeEventListener("touchstart", touchStart);
119
+ scroller.removeEventListener("touchmove", touchMove);
120
+ scroller.removeEventListener("touchend", touchEnd);
121
+ scroller.removeEventListener("touchcancel", touchEnd);
122
+ scroller.removeEventListener("pointerdown", pointerDown);
123
+ scroller.removeEventListener("pointermove", pointerMove);
124
+ scroller.removeEventListener("pointerup", pointerUp);
125
+ scroller.removeEventListener("pointercancel", pointerUp);
126
+ scroller.style.transition = "";
127
+ indicator.style.transition = "";
128
+ applyReveal(0);
129
+ }
130
+ };
131
+ }
132
+ //#endregion
133
+ export { createPullToRefresh };
@@ -1,4 +1,4 @@
1
- import { RouteRedirect, buildRoutePath, layoutChain, linkPath, matchUrl } from "./ui17.js";
1
+ import { RouteRedirect, buildRoutePath, layoutChain, linkPath, matchUrl } from "./route-table.js";
2
2
  import { hookSlots, useSyncExternalStore } from "octane";
3
3
  //#region src/route.web.ts
4
4
  var screens = {};
@@ -162,6 +162,18 @@ function presentationFor(name) {
162
162
  function popRoute(_stack = "root") {
163
163
  history.back();
164
164
  }
165
+ var backInterceptorWarned = false;
166
+ /** No-op twin of the native leaf. Browser back is already real history —
167
+ * there is no hardware-back event to intercept on web, so registered
168
+ * interceptors never fire. Warns once so a mistaken call site isn't
169
+ * silently absent. */
170
+ function addBackInterceptor(_fn) {
171
+ if (!backInterceptorWarned) {
172
+ backInterceptorWarned = true;
173
+ console.warn("[octane-xplat] addBackInterceptor is a no-op on web — browser back is URL history, not an interceptable event.");
174
+ }
175
+ return () => {};
176
+ }
165
177
  window.addEventListener("popstate", () => {
166
178
  saveScroll();
167
179
  historyDepth = history.state?.__octaneXplatDepth ?? 0;
@@ -237,4 +249,4 @@ var _h$0 = /* @__PURE__ */ Symbol(_hs$);
237
249
  var _h$1 = /* @__PURE__ */ Symbol(_hs$ + 1);
238
250
  var _h$2 = /* @__PURE__ */ Symbol(_hs$ + 2);
239
251
  //#endregion
240
- export { canGoBack, currentModalRoute, currentRoute, hrefFor, layoutsFor, popRoute, pushDeepLink, pushRoute, redirect, registerRoutes, registerScreens, routeFor, routeStacks, screenFor, useCanGoBack, useModalRoute, useRoute };
252
+ export { addBackInterceptor, canGoBack, currentModalRoute, currentRoute, hrefFor, layoutsFor, popRoute, pushDeepLink, pushRoute, redirect, registerRoutes, registerScreens, routeFor, routeStacks, screenFor, useCanGoBack, useModalRoute, useRoute };