react-native-gtkx 0.1.0-alpha.4 → 0.2.0-alpha.2

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 (257) hide show
  1. package/README.md +22 -9
  2. package/dist/adw/index.d.ts +3 -0
  3. package/dist/adw/index.js +41 -0
  4. package/dist/adw/index.js.map +1 -0
  5. package/dist/adw/widgets.generated.d.ts +63 -0
  6. package/dist/adw/widgets.generated.js +125 -0
  7. package/dist/adw/widgets.generated.js.map +1 -0
  8. package/dist/animated/create-animated.d.ts +2 -0
  9. package/dist/animated/create-animated.js +2 -0
  10. package/dist/animated/create-animated.js.map +1 -1
  11. package/dist/animated/index.d.ts +2 -0
  12. package/dist/animated/index.js +1 -0
  13. package/dist/animated/index.js.map +1 -1
  14. package/dist/animated/value-xy.d.ts +41 -0
  15. package/dist/animated/value-xy.js +90 -0
  16. package/dist/animated/value-xy.js.map +1 -0
  17. package/dist/animated/value.d.ts +9 -0
  18. package/dist/animated/value.js +30 -2
  19. package/dist/animated/value.js.map +1 -1
  20. package/dist/common/content.d.ts +69 -0
  21. package/dist/common/content.js +84 -0
  22. package/dist/common/content.js.map +1 -0
  23. package/dist/common/icon.d.ts +23 -0
  24. package/dist/common/icon.js +14 -0
  25. package/dist/common/icon.js.map +1 -0
  26. package/dist/common/index.d.ts +5 -0
  27. package/dist/common/index.js +21 -0
  28. package/dist/common/index.js.map +1 -0
  29. package/dist/common/list.d.ts +82 -0
  30. package/dist/common/list.js +166 -0
  31. package/dist/common/list.js.map +1 -0
  32. package/dist/common/navigation-stack.d.ts +84 -0
  33. package/dist/common/navigation-stack.js +313 -0
  34. package/dist/common/navigation-stack.js.map +1 -0
  35. package/dist/common/widget.d.ts +62 -0
  36. package/dist/common/widget.js +209 -0
  37. package/dist/common/widget.js.map +1 -0
  38. package/dist/components/animated.d.ts +7 -4
  39. package/dist/components/animated.js +88 -67
  40. package/dist/components/animated.js.map +1 -1
  41. package/dist/components/app-registry.d.ts +36 -1
  42. package/dist/components/app-registry.js +8 -3
  43. package/dist/components/app-registry.js.map +1 -1
  44. package/dist/components/host-node.d.ts +7 -0
  45. package/dist/components/host-node.js +26 -1
  46. package/dist/components/host-node.js.map +1 -1
  47. package/dist/components/index.d.ts +6 -2
  48. package/dist/components/index.js +2 -1
  49. package/dist/components/index.js.map +1 -1
  50. package/dist/components/measure.d.ts +13 -0
  51. package/dist/components/measure.js +51 -0
  52. package/dist/components/measure.js.map +1 -0
  53. package/dist/components/modal.d.ts +1 -1
  54. package/dist/components/press-event.d.ts +28 -0
  55. package/dist/components/press-event.js +46 -0
  56. package/dist/components/press-event.js.map +1 -0
  57. package/dist/components/pressable.d.ts +2 -6
  58. package/dist/components/pressable.js +119 -20
  59. package/dist/components/pressable.js.map +1 -1
  60. package/dist/components/rect-store.d.ts +11 -1
  61. package/dist/components/rect-store.js +27 -3
  62. package/dist/components/rect-store.js.map +1 -1
  63. package/dist/components/scroll-view.d.ts +4 -0
  64. package/dist/components/scroll-view.js +8 -2
  65. package/dist/components/scroll-view.js.map +1 -1
  66. package/dist/components/svg/animated-support.d.ts +19 -0
  67. package/dist/components/svg/animated-support.js +64 -0
  68. package/dist/components/svg/animated-support.js.map +1 -0
  69. package/dist/components/svg/context.d.ts +8 -0
  70. package/dist/components/svg/context.js +15 -0
  71. package/dist/components/svg/context.js.map +1 -0
  72. package/dist/components/svg/gradients.d.ts +31 -0
  73. package/dist/components/svg/gradients.js +93 -0
  74. package/dist/components/svg/gradients.js.map +1 -0
  75. package/dist/components/svg/group.d.ts +8 -0
  76. package/dist/components/svg/group.js +30 -0
  77. package/dist/components/svg/group.js.map +1 -0
  78. package/dist/components/svg/index.d.ts +6 -0
  79. package/dist/components/svg/index.js +5 -0
  80. package/dist/components/svg/index.js.map +1 -0
  81. package/dist/components/svg/node.d.ts +7 -0
  82. package/dist/components/svg/node.js +7 -0
  83. package/dist/components/svg/node.js.map +1 -0
  84. package/dist/components/svg/paint.d.ts +24 -0
  85. package/dist/components/svg/paint.js +57 -0
  86. package/dist/components/svg/paint.js.map +1 -0
  87. package/dist/components/svg/shapes.d.ts +47 -0
  88. package/dist/components/svg/shapes.js +51 -0
  89. package/dist/components/svg/shapes.js.map +1 -0
  90. package/dist/components/svg/svg.d.ts +14 -0
  91. package/dist/components/svg/svg.js +48 -0
  92. package/dist/components/svg/svg.js.map +1 -0
  93. package/dist/components/svg/use-shape-node.d.ts +12 -0
  94. package/dist/components/svg/use-shape-node.js +52 -0
  95. package/dist/components/svg/use-shape-node.js.map +1 -0
  96. package/dist/components/text-input.js +1 -1
  97. package/dist/components/text-input.js.map +1 -1
  98. package/dist/components/text.js +36 -3
  99. package/dist/components/text.js.map +1 -1
  100. package/dist/components/use-layout-child.js +50 -4
  101. package/dist/components/use-layout-child.js.map +1 -1
  102. package/dist/components/view.d.ts +9 -4
  103. package/dist/components/view.js +8 -2
  104. package/dist/components/view.js.map +1 -1
  105. package/dist/contracts.d.ts +31 -4
  106. package/dist/contracts.js.map +1 -1
  107. package/dist/gtk/index.d.ts +7 -0
  108. package/dist/gtk/index.js +46 -0
  109. package/dist/gtk/index.js.map +1 -0
  110. package/dist/gtk/widgets.generated.d.ts +103 -0
  111. package/dist/gtk/widgets.generated.js +205 -0
  112. package/dist/gtk/widgets.generated.js.map +1 -0
  113. package/dist/gtk/window-actions.d.ts +77 -0
  114. package/dist/gtk/window-actions.js +193 -0
  115. package/dist/gtk/window-actions.js.map +1 -0
  116. package/dist/gtkx/bridge/geometry.d.ts +15 -0
  117. package/dist/gtkx/bridge/geometry.js +38 -0
  118. package/dist/gtkx/bridge/geometry.js.map +1 -0
  119. package/dist/gtkx/bridge/index.d.ts +11 -4
  120. package/dist/gtkx/bridge/index.js +47 -6
  121. package/dist/gtkx/bridge/index.js.map +1 -1
  122. package/dist/gtkx/bridge/layout-manager.d.ts +2 -1
  123. package/dist/gtkx/bridge/layout-manager.js +31 -9
  124. package/dist/gtkx/bridge/layout-manager.js.map +1 -1
  125. package/dist/gtkx/bridge/slot-portal.d.ts +12 -0
  126. package/dist/gtkx/bridge/slot-portal.js +17 -0
  127. package/dist/gtkx/bridge/slot-portal.js.map +1 -0
  128. package/dist/gtkx/bridge/svg-node.d.ts +79 -0
  129. package/dist/gtkx/bridge/svg-node.js +323 -0
  130. package/dist/gtkx/bridge/svg-node.js.map +1 -0
  131. package/dist/gtkx/bridge/use-signal.js +19 -9
  132. package/dist/gtkx/bridge/use-signal.js.map +1 -1
  133. package/dist/gtkx/bridge/widgets.generated.d.ts +2 -0
  134. package/dist/gtkx/bridge/widgets.generated.js +14 -0
  135. package/dist/gtkx/bridge/widgets.generated.js.map +1 -0
  136. package/dist/index.d.ts +2 -2
  137. package/dist/index.js +1 -1
  138. package/dist/index.js.map +1 -1
  139. package/dist/mcp/bin.d.ts +2 -0
  140. package/dist/mcp/bin.js +17 -0
  141. package/dist/mcp/bin.js.map +1 -0
  142. package/dist/mcp/data/generated.d.ts +1304 -0
  143. package/dist/mcp/data/generated.js +1179 -0
  144. package/dist/mcp/data/generated.js.map +1 -0
  145. package/dist/mcp/index.d.ts +5 -0
  146. package/dist/mcp/index.js +9 -0
  147. package/dist/mcp/index.js.map +1 -0
  148. package/dist/mcp/list.d.ts +4 -0
  149. package/dist/mcp/list.js +56 -0
  150. package/dist/mcp/list.js.map +1 -0
  151. package/dist/mcp/resolve.d.ts +55 -0
  152. package/dist/mcp/resolve.js +151 -0
  153. package/dist/mcp/resolve.js.map +1 -0
  154. package/dist/mcp/search.d.ts +13 -0
  155. package/dist/mcp/search.js +48 -0
  156. package/dist/mcp/search.js.map +1 -0
  157. package/dist/mcp/server.d.ts +7 -0
  158. package/dist/mcp/server.js +135 -0
  159. package/dist/mcp/server.js.map +1 -0
  160. package/dist/mcp/tool.d.ts +21 -0
  161. package/dist/mcp/tool.js +36 -0
  162. package/dist/mcp/tool.js.map +1 -0
  163. package/dist/metro/index.js +10 -0
  164. package/dist/metro/index.js.map +1 -1
  165. package/dist/navigation/index.d.ts +50 -13
  166. package/dist/navigation/index.js +183 -148
  167. package/dist/navigation/index.js.map +1 -1
  168. package/dist/navigation/option-warnings.js +9 -1
  169. package/dist/navigation/option-warnings.js.map +1 -1
  170. package/dist/navigation/sidebar.d.ts +207 -9
  171. package/dist/navigation/sidebar.js +294 -10
  172. package/dist/navigation/sidebar.js.map +1 -1
  173. package/dist/responder/system.d.ts +27 -0
  174. package/dist/responder/system.js +184 -0
  175. package/dist/responder/system.js.map +1 -0
  176. package/dist/responder/touch-history.d.ts +10 -0
  177. package/dist/responder/touch-history.js +78 -0
  178. package/dist/responder/touch-history.js.map +1 -0
  179. package/dist/responder/types.d.ts +63 -0
  180. package/dist/responder/types.js +29 -0
  181. package/dist/responder/types.js.map +1 -0
  182. package/dist/responder/use-responder.d.ts +12 -0
  183. package/dist/responder/use-responder.js +98 -0
  184. package/dist/responder/use-responder.js.map +1 -0
  185. package/dist/runner/host-dev.js +3 -1
  186. package/dist/runner/host-dev.js.map +1 -1
  187. package/dist/runner/host.js +5 -1
  188. package/dist/runner/host.js.map +1 -1
  189. package/dist/runner/index.d.ts +22 -2
  190. package/dist/runner/index.js +163 -13
  191. package/dist/runner/index.js.map +1 -1
  192. package/dist/sea/assemble.d.ts +29 -0
  193. package/dist/sea/assemble.js +129 -0
  194. package/dist/sea/assemble.js.map +1 -0
  195. package/dist/sea/bundle.d.ts +61 -0
  196. package/dist/sea/bundle.js +202 -0
  197. package/dist/sea/bundle.js.map +1 -0
  198. package/dist/sea/gtkx-config-module.d.ts +18 -0
  199. package/dist/sea/gtkx-config-module.js +67 -0
  200. package/dist/sea/gtkx-config-module.js.map +1 -0
  201. package/dist/sea/native-shim.d.ts +40 -0
  202. package/dist/sea/native-shim.js +121 -0
  203. package/dist/sea/native-shim.js.map +1 -0
  204. package/dist/sea/react-anchor-plugin.d.ts +2 -0
  205. package/dist/sea/react-anchor-plugin.js +30 -0
  206. package/dist/sea/react-anchor-plugin.js.map +1 -0
  207. package/dist/style/box-shadow.d.ts +7 -0
  208. package/dist/style/box-shadow.js +197 -0
  209. package/dist/style/box-shadow.js.map +1 -0
  210. package/dist/style/index.d.ts +3 -0
  211. package/dist/style/index.js +3 -0
  212. package/dist/style/index.js.map +1 -1
  213. package/dist/style/split-style.d.ts +5 -2
  214. package/dist/style/split-style.js +33 -5
  215. package/dist/style/split-style.js.map +1 -1
  216. package/dist/style/text-decoration.d.ts +15 -0
  217. package/dist/style/text-decoration.js +26 -0
  218. package/dist/style/text-decoration.js.map +1 -0
  219. package/dist/style/transform.d.ts +22 -0
  220. package/dist/style/transform.js +137 -0
  221. package/dist/style/transform.js.map +1 -0
  222. package/dist/style/visual-css.js +40 -3
  223. package/dist/style/visual-css.js.map +1 -1
  224. package/dist/svg/geometry.d.ts +19 -0
  225. package/dist/svg/geometry.js +80 -0
  226. package/dist/svg/geometry.js.map +1 -0
  227. package/dist/svg/gradient-geometry.d.ts +15 -0
  228. package/dist/svg/gradient-geometry.js +15 -0
  229. package/dist/svg/gradient-geometry.js.map +1 -0
  230. package/dist/svg/transform.d.ts +22 -0
  231. package/dist/svg/transform.js +74 -0
  232. package/dist/svg/transform.js.map +1 -0
  233. package/dist/svg/view-box.d.ts +34 -0
  234. package/dist/svg/view-box.js +108 -0
  235. package/dist/svg/view-box.js.map +1 -0
  236. package/dist/svg-compat/index.d.ts +1 -0
  237. package/dist/svg-compat/index.js +16 -0
  238. package/dist/svg-compat/index.js.map +1 -0
  239. package/dist/testing/index.d.ts +14 -0
  240. package/dist/testing/index.js +14 -0
  241. package/dist/testing/index.js.map +1 -0
  242. package/dist/vendor/react-native/pan-responder.d.ts +102 -0
  243. package/dist/vendor/react-native/pan-responder.js +196 -0
  244. package/dist/vendor/react-native/pan-responder.js.map +1 -0
  245. package/dist/vendor/react-native/touch-history-math.d.ts +18 -0
  246. package/dist/vendor/react-native/touch-history-math.js +102 -0
  247. package/dist/vendor/react-native/touch-history-math.js.map +1 -0
  248. package/dist/vite/index.d.ts +7 -3
  249. package/dist/vite/index.js +16 -4
  250. package/dist/vite/index.js.map +1 -1
  251. package/dist/vitest/index.d.ts +52 -0
  252. package/dist/vitest/index.js +58 -0
  253. package/dist/vitest/index.js.map +1 -0
  254. package/dist/vitest/setup.d.ts +4 -0
  255. package/dist/vitest/setup.js +22 -0
  256. package/dist/vitest/setup.js.map +1 -0
  257. package/package.json +52 -13
package/README.md CHANGED
@@ -31,7 +31,7 @@ And the portability proof — `examples/profile` renders ONE source file with bo
31
31
 
32
32
  - [x] Yoga + GtkFixed spike — **GO** (0 px accuracy, 500-node reflow in 0.17 ms, 60 fps — `docs/research/yoga-gtk-spike.md`)
33
33
  - [x] Dev environment (UTM VM with a native GNOME session, headless sway for tests) and dev workflow
34
- - [x] gtkx bridge (isolation from the RC API; [workaround catalog](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/gtkx-rc2-notes.md))
34
+ - [x] gtkx bridge (isolation from the RC API; [workaround catalog](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/gtkx-rc3-notes.md))
35
35
  - [x] Layout engine (Yoga shadow tree, measure via Pango, batching, diffing, onLayout)
36
36
  - [x] StyleSheet: layout/visual split, CSS Color 4 colors, PlatformColor → Adwaita
37
37
  - [x] View / Text / Image / AppRegistry — first RN render in GTK
@@ -44,15 +44,13 @@ And the portability proof — `examples/profile` renders ONE source file with bo
44
44
  - [x] **Fast Refresh on both toolchains**: `run-linux --dev` (Metro dev server + HMR in the GTK host, state preserved) and `gtkx dev` (vite)
45
45
  - [x] **Navigation on real Adwaita widgets**: react-navigation navigators backed by `Adw.NavigationView` and `Adw.NavigationSplitView` — see below
46
46
 
47
- Verified live: `examples/hn-app` (a Hacker News reader on the Metro path), `examples/gallery` (the whole surface) and the interactive `examples/playground` — 448 tests (unit + component tests under headless Wayland).
47
+ Verified live: `examples/hn-app` (a Hacker News reader on the Metro path), `examples/gallery` (the whole surface), the interactive `examples/playground`, and `examples/tasks-app` (a full GNOME task manager a port of the [gtkx tutorial](https://gtkx.dev/tutorial/)'s Tasks app, and the platform's most demanding app so far) — 921 tests (unit + component tests under headless Wayland).
48
48
 
49
49
  ## Navigation is native, not redrawn
50
50
 
51
51
  ```tsx
52
- import {
53
- createStackNavigator,
54
- NavigationContainer,
55
- } from "react-native-gtkx/navigation"
52
+ import { NavigationContainer } from "@react-navigation/native"
53
+ import { createStackNavigator } from "react-native-gtkx/navigation"
56
54
  ```
57
55
 
58
56
  Screens are real `Adw.NavigationPage`s inside an `Adw.NavigationView`, and
@@ -74,8 +72,13 @@ to the JS drawer; react-native-macos is not supported by it at all, because
74
72
  AppKit has no navigation-stack primitive to bind to. GTK4/libadwaita does have
75
73
  one, so the model here is the iOS `native-stack` one:
76
74
  [docs/research/navigation-extensibility.md](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/research/navigation-extensibility.md)
77
- maps every native-stack option against what we support, what is coming, and
78
- what is meaningless on a desktop.
75
+ lays out the split, what an app can reach, and what is meaningless on a
76
+ desktop.
77
+
78
+ Underneath it, [`react-native-gtkx/gtk` and `react-native-gtkx/adw`](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/platform-layer.md) exposes the
79
+ widgets themselves — including a navigation stack that needs no router at
80
+ all, and GTK widgets that take a React Native `style` for position and
81
+ appearance. react-navigation is a convenience here, not the ceiling.
79
82
 
80
83
  ## Performance architecture
81
84
 
@@ -95,11 +98,21 @@ GTK allocation. Two orders of magnitude of headroom against a 60 fps frame
95
98
  budget, measured, not estimated (see docs/research/yoga-gtk-spike.md and
96
99
  docs/research/layout-manager.md).
97
100
 
101
+ Those are this layer's own costs, and a scrolling-list study measured what
102
+ share of a real frame they are: 0.6 ms of a 44.5 ms frame at full screen,
103
+ where the rest is software rasterization on a GPU-less test VM. Windowed,
104
+ a `FlatList` is indistinguishable from a native `GtkScrolledWindow`. Read
105
+ that as "the compatibility layer is not what costs frames on that rig"
106
+ rather than as an absolute — the same study retracted an earlier headline
107
+ number that had compared two different window sizes
108
+ (docs/research/scroll-performance.md).
109
+
98
110
  ## Documentation
99
111
 
100
112
  - [Getting Started](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/getting-started.md) — a new project in a minute, and adding Linux to an existing RN app;
101
113
  - [API v1](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/api.md) — the full surface and differences from RN;
102
- - [Navigation research](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/research/navigation-extensibility.md) — every native-stack option mapped, how an existing react-navigation app ports, and why the other desktop RN platforms never got native navigation;
114
+ - [The platform layer](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/platform-layer.md) — `react-native-gtkx/gtk` and `react-native-gtkx/adw`: Adwaita and GTK widgets as React components, driven by React Native style, usable with your own router or none at all;
115
+ - [Navigation research](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/research/navigation-extensibility.md) — the two layers, how an existing react-navigation app ports, and why the other desktop RN platforms never got native navigation;
103
116
  - [What we need from gtkx](https://github.com/itsmepetrov/react-native-gtkx/blob/main/docs/upstream-gtkx.md) — the standing upstream agenda (bugs with repros, API asks, workarounds we want to delete);
104
117
  - [CONTRIBUTING](https://github.com/itsmepetrov/react-native-gtkx/blob/main/CONTRIBUTING.md) — developing the library (from macOS — via the UTM VM).
105
118
 
@@ -0,0 +1,3 @@
1
+ export * from "./widgets.generated";
2
+ export { Adw } from "../gtkx/bridge/index";
3
+ export { AdwBreakpoint, AdwShortcutsItem, AdwShortcutsSection, AdwToggle, } from "../gtkx/bridge/index";
@@ -0,0 +1,41 @@
1
+ // react-native-gtkx/adw — libadwaita widgets as React components.
2
+ //
3
+ // The Adwaita half of the platform layer; its GTK counterpart is
4
+ // react-native-gtkx/gtk, and what we wrote ourselves lives in
5
+ // react-native-gtkx/common (NavigationStack, SlotContent, wrapReactNative). Nothing here
6
+ // imports react-navigation.
7
+ //
8
+ // NAMING, one rule across both subpaths: a name carrying a `Gtk` or `Adw`
9
+ // prefix IS that widget, as gtkx binds it. A name without a prefix is ours.
10
+ //
11
+ // The layering mirrors the React Native ecosystem: react-native-screens
12
+ // exposes primitives, @react-navigation/native-stack binds them to a router.
13
+ // Here, this subpath exposes primitives and react-native-gtkx/navigation
14
+ // binds them to react-navigation. You can skip the binding entirely — drive
15
+ // NavigationStack from useState, from your own router, from anything.
16
+ // The raw widgets, exactly as gtkx binds them — every GObject property and
17
+ // signal, including ones added after this file was written.
18
+ //
19
+ // AdwNavigationView and AdwNavigationPage are the imperative originals:
20
+ // NavigationStack above is a declarative alternative, NOT a replacement, and
21
+ // a standard widget must never become unreachable because we wrapped it.
22
+ // The full Adwaita widget surface lives in a generated file: every
23
+ // Adw.Widget subclass gtkx binds, wrapped so React Native drives it. The raw
24
+ // AdwNavigationView and AdwNavigationPage are in there too — NavigationStack
25
+ // in react-native-gtkx/common is a declarative alternative, never a
26
+ // replacement, and a standard widget must stay reachable.
27
+ export * from "./widgets.generated";
28
+ // Exported as a value: it carries both the enums you need at runtime and the
29
+ // types you need for refs — `useRef<Adw.NavigationView | null>(null)`.
30
+ export { Adw } from "../gtkx/bridge/index";
31
+ // Auxiliary JSX elements that are not Adw.Widget subclasses, so the
32
+ // generated widget surface above never sees them: a responsive breakpoint
33
+ // (the `breakpoints` prop of AdwApplicationWindow/AdwBreakpointBin/AdwDialog
34
+ // takes one of these as a child) and the two leaf elements a
35
+ // AdwShortcutsDialog's AdwShortcutsSection is built from. See
36
+ // docs/platform-layer.md "Unwrapped by necessity" and "Two ways to react
37
+ // to size" — createSidebarNavigator's own collapse
38
+ // (src/navigation/sidebar.tsx) pairs AdwBreakpoint with AdwBreakpointBin
39
+ // (a real widget, wrapped above) to scope a breakpoint to a subtree.
40
+ export { AdwBreakpoint, AdwShortcutsItem, AdwShortcutsSection, AdwToggle, } from "../gtkx/bridge/index";
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adw/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,EAAE;AACF,iEAAiE;AACjE,8DAA8D;AAC9D,yFAAyF;AACzF,4BAA4B;AAC5B,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,sEAAsE;AAEtE,2EAA2E;AAC3E,4DAA4D;AAC5D,EAAE;AACF,wEAAwE;AACxE,6EAA6E;AAC7E,yEAAyE;AACzE,mEAAmE;AACnE,6EAA6E;AAC7E,6EAA6E;AAC7E,oEAAoE;AACpE,0DAA0D;AAC1D,cAAc,qBAAqB,CAAA;AAEnC,6EAA6E;AAC7E,uEAAuE;AACvE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE1C,oEAAoE;AACpE,0EAA0E;AAC1E,6EAA6E;AAC7E,6DAA6D;AAC7D,8DAA8D;AAC9D,yEAAyE;AACzE,mDAAmD;AACnD,yEAAyE;AACzE,qEAAqE;AACrE,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,GACV,MAAM,sBAAsB,CAAA","sourcesContent":["// react-native-gtkx/adw — libadwaita widgets as React components.\n//\n// The Adwaita half of the platform layer; its GTK counterpart is\n// react-native-gtkx/gtk, and what we wrote ourselves lives in\n// react-native-gtkx/common (NavigationStack, SlotContent, wrapReactNative). Nothing here\n// imports react-navigation.\n//\n// NAMING, one rule across both subpaths: a name carrying a `Gtk` or `Adw`\n// prefix IS that widget, as gtkx binds it. A name without a prefix is ours.\n//\n// The layering mirrors the React Native ecosystem: react-native-screens\n// exposes primitives, @react-navigation/native-stack binds them to a router.\n// Here, this subpath exposes primitives and react-native-gtkx/navigation\n// binds them to react-navigation. You can skip the binding entirely — drive\n// NavigationStack from useState, from your own router, from anything.\n\n// The raw widgets, exactly as gtkx binds them — every GObject property and\n// signal, including ones added after this file was written.\n//\n// AdwNavigationView and AdwNavigationPage are the imperative originals:\n// NavigationStack above is a declarative alternative, NOT a replacement, and\n// a standard widget must never become unreachable because we wrapped it.\n// The full Adwaita widget surface lives in a generated file: every\n// Adw.Widget subclass gtkx binds, wrapped so React Native drives it. The raw\n// AdwNavigationView and AdwNavigationPage are in there too — NavigationStack\n// in react-native-gtkx/common is a declarative alternative, never a\n// replacement, and a standard widget must stay reachable.\nexport * from \"./widgets.generated\"\n\n// Exported as a value: it carries both the enums you need at runtime and the\n// types you need for refs — `useRef<Adw.NavigationView | null>(null)`.\nexport { Adw } from \"../gtkx/bridge/index\"\n\n// Auxiliary JSX elements that are not Adw.Widget subclasses, so the\n// generated widget surface above never sees them: a responsive breakpoint\n// (the `breakpoints` prop of AdwApplicationWindow/AdwBreakpointBin/AdwDialog\n// takes one of these as a child) and the two leaf elements a\n// AdwShortcutsDialog's AdwShortcutsSection is built from. See\n// docs/platform-layer.md \"Unwrapped by necessity\" and \"Two ways to react\n// to size\" — createSidebarNavigator's own collapse\n// (src/navigation/sidebar.tsx) pairs AdwBreakpoint with AdwBreakpointBin\n// (a real widget, wrapped above) to scope a breakpoint to a subtree.\nexport {\n AdwBreakpoint,\n AdwShortcutsItem,\n AdwShortcutsSection,\n AdwToggle,\n} from \"../gtkx/bridge/index\"\n"]}
@@ -0,0 +1,63 @@
1
+ export declare const AdwAboutDialog: React.ComponentType<import("@gtkx/jsx/adw").AdwAboutDialogProps<import("@gtkx/gi/adw").AboutDialog> & import("../common").ReactNativeLayoutProps>;
2
+ export declare const AdwAlertDialog: React.ComponentType<import("@gtkx/jsx/adw").AdwAlertDialogProps<import("@gtkx/gi/adw").AlertDialog> & import("../common").ReactNativeLayoutProps>;
3
+ export declare const AdwAvatar: React.ComponentType<import("@gtkx/jsx/adw").AdwAvatarProps<import("@gtkx/gi/adw").Avatar> & import("../common").ReactNativeLayoutProps>;
4
+ export declare const AdwBanner: React.ComponentType<import("@gtkx/jsx/adw").AdwBannerProps<import("@gtkx/gi/adw").Banner> & import("../common").ReactNativeLayoutProps>;
5
+ export declare const AdwBin: React.ComponentType<import("@gtkx/jsx/adw").AdwBinProps<import("@gtkx/gi/adw").Bin> & import("../common").ReactNativeLayoutProps>;
6
+ export declare const AdwBottomSheet: React.ComponentType<import("@gtkx/jsx/adw").AdwBottomSheetProps<import("@gtkx/gi/adw").BottomSheet> & import("../common").ReactNativeLayoutProps>;
7
+ export declare const AdwBreakpointBin: React.ComponentType<import("@gtkx/jsx/adw").AdwBreakpointBinProps<import("@gtkx/gi/adw").BreakpointBin> & import("../common").ReactNativeLayoutProps>;
8
+ export declare const AdwButtonContent: React.ComponentType<import("@gtkx/jsx/adw").AdwButtonContentProps<import("@gtkx/gi/adw").ButtonContent> & import("../common").ReactNativeLayoutProps>;
9
+ export declare const AdwCarousel: React.ComponentType<import("@gtkx/jsx/adw").AdwCarouselProps<import("@gtkx/gi/adw").Carousel> & import("../common").ReactNativeLayoutProps>;
10
+ export declare const AdwCarouselIndicatorDots: React.ComponentType<import("@gtkx/jsx/adw").AdwCarouselIndicatorDotsProps<import("@gtkx/gi/adw").CarouselIndicatorDots> & import("../common").ReactNativeLayoutProps>;
11
+ export declare const AdwCarouselIndicatorLines: React.ComponentType<import("@gtkx/jsx/adw").AdwCarouselIndicatorLinesProps<import("@gtkx/gi/adw").CarouselIndicatorLines> & import("../common").ReactNativeLayoutProps>;
12
+ export declare const AdwClamp: React.ComponentType<import("@gtkx/jsx/adw").AdwClampProps<import("@gtkx/gi/adw").Clamp> & import("../common").ReactNativeLayoutProps>;
13
+ export declare const AdwClampScrollable: React.ComponentType<import("@gtkx/jsx/adw").AdwClampScrollableProps<import("@gtkx/gi/adw").ClampScrollable> & import("../common").ReactNativeLayoutProps>;
14
+ export declare const AdwDialog: React.ComponentType<import("@gtkx/jsx/adw").AdwDialogProps<import("@gtkx/gi/adw").Dialog> & import("../common").ReactNativeLayoutProps>;
15
+ export declare const AdwFlap: React.ComponentType<import("@gtkx/jsx/adw").AdwFlapProps<import("@gtkx/gi/adw").Flap> & import("../common").ReactNativeLayoutProps>;
16
+ export declare const AdwHeaderBar: React.ComponentType<import("@gtkx/jsx/adw").AdwHeaderBarProps<import("@gtkx/gi/adw").HeaderBar> & import("../common").ReactNativeLayoutProps>;
17
+ export declare const AdwInlineViewSwitcher: React.ComponentType<import("@gtkx/jsx/adw").AdwInlineViewSwitcherProps<import("@gtkx/gi/adw").InlineViewSwitcher> & import("../common").ReactNativeLayoutProps>;
18
+ export declare const AdwLayoutSlot: React.ComponentType<import("@gtkx/jsx/adw").AdwLayoutSlotProps<import("@gtkx/gi/adw").LayoutSlot> & import("../common").ReactNativeLayoutProps>;
19
+ export declare const AdwLeaflet: React.ComponentType<import("@gtkx/jsx/adw").AdwLeafletProps<import("@gtkx/gi/adw").Leaflet> & import("../common").ReactNativeLayoutProps>;
20
+ export declare const AdwMultiLayoutView: React.ComponentType<import("@gtkx/jsx/adw").AdwMultiLayoutViewProps<import("@gtkx/gi/adw").MultiLayoutView> & import("../common").ReactNativeLayoutProps>;
21
+ export declare const AdwNavigationSplitView: React.ComponentType<import("@gtkx/jsx/adw").AdwNavigationSplitViewProps<import("@gtkx/gi/adw").NavigationSplitView> & import("../common").ReactNativeLayoutProps>;
22
+ export declare const AdwNavigationView: React.ComponentType<import("@gtkx/jsx/adw").AdwNavigationViewProps<import("@gtkx/gi/adw").NavigationView> & import("../common").ReactNativeLayoutProps>;
23
+ export declare const AdwOverlaySplitView: React.ComponentType<import("@gtkx/jsx/adw").AdwOverlaySplitViewProps<import("@gtkx/gi/adw").OverlaySplitView> & import("../common").ReactNativeLayoutProps>;
24
+ export declare const AdwPreferencesDialog: React.ComponentType<import("@gtkx/jsx/adw").AdwPreferencesDialogProps<import("@gtkx/gi/adw").PreferencesDialog> & import("../common").ReactNativeLayoutProps>;
25
+ export declare const AdwPreferencesGroup: React.ComponentType<import("@gtkx/jsx/adw").AdwPreferencesGroupProps<import("@gtkx/gi/adw").PreferencesGroup> & import("../common").ReactNativeLayoutProps>;
26
+ export declare const AdwShortcutLabel: React.ComponentType<import("@gtkx/jsx/adw").AdwShortcutLabelProps<import("@gtkx/gi/adw").ShortcutLabel> & import("../common").ReactNativeLayoutProps>;
27
+ export declare const AdwShortcutsDialog: React.ComponentType<import("@gtkx/jsx/adw").AdwShortcutsDialogProps<import("@gtkx/gi/adw").ShortcutsDialog> & import("../common").ReactNativeLayoutProps>;
28
+ export declare const AdwSidebar: React.ComponentType<import("@gtkx/jsx/adw").AdwSidebarProps<import("@gtkx/gi/adw").Sidebar> & import("../common").ReactNativeLayoutProps>;
29
+ export declare const AdwSpinner: React.ComponentType<import("@gtkx/jsx/adw").AdwSpinnerProps<import("@gtkx/gi/adw").Spinner> & import("../common").ReactNativeLayoutProps>;
30
+ export declare const AdwSplitButton: React.ComponentType<import("@gtkx/jsx/adw").AdwSplitButtonProps<import("@gtkx/gi/adw").SplitButton> & import("../common").ReactNativeLayoutProps>;
31
+ export declare const AdwSqueezer: React.ComponentType<import("@gtkx/jsx/adw").AdwSqueezerProps<import("@gtkx/gi/adw").Squeezer> & import("../common").ReactNativeLayoutProps>;
32
+ export declare const AdwStatusPage: React.ComponentType<import("@gtkx/jsx/adw").AdwStatusPageProps<import("@gtkx/gi/adw").StatusPage> & import("../common").ReactNativeLayoutProps>;
33
+ export declare const AdwTabBar: React.ComponentType<import("@gtkx/jsx/adw").AdwTabBarProps<import("@gtkx/gi/adw").TabBar> & import("../common").ReactNativeLayoutProps>;
34
+ export declare const AdwTabButton: React.ComponentType<import("@gtkx/jsx/adw").AdwTabButtonProps<import("@gtkx/gi/adw").TabButton> & import("../common").ReactNativeLayoutProps>;
35
+ export declare const AdwTabOverview: React.ComponentType<import("@gtkx/jsx/adw").AdwTabOverviewProps<import("@gtkx/gi/adw").TabOverview> & import("../common").ReactNativeLayoutProps>;
36
+ export declare const AdwTabView: React.ComponentType<import("@gtkx/jsx/adw").AdwTabViewProps<import("@gtkx/gi/adw").TabView> & import("../common").ReactNativeLayoutProps>;
37
+ export declare const AdwToastOverlay: React.ComponentType<import("@gtkx/jsx/adw").AdwToastOverlayProps<import("@gtkx/gi/adw").ToastOverlay> & import("../common").ReactNativeLayoutProps>;
38
+ export declare const AdwToggleGroup: React.ComponentType<import("@gtkx/jsx/adw").AdwToggleGroupProps<import("@gtkx/gi/adw").ToggleGroup> & import("../common").ReactNativeLayoutProps>;
39
+ export declare const AdwToolbarView: React.ComponentType<import("@gtkx/jsx/adw").AdwToolbarViewProps<import("@gtkx/gi/adw").ToolbarView> & import("../common").ReactNativeLayoutProps>;
40
+ export declare const AdwViewStack: React.ComponentType<import("@gtkx/jsx/adw").AdwViewStackProps<import("@gtkx/gi/adw").ViewStack> & import("../common").ReactNativeLayoutProps>;
41
+ export declare const AdwViewSwitcher: React.ComponentType<import("@gtkx/jsx/adw").AdwViewSwitcherProps<import("@gtkx/gi/adw").ViewSwitcher> & import("../common").ReactNativeLayoutProps>;
42
+ export declare const AdwViewSwitcherBar: React.ComponentType<import("@gtkx/jsx/adw").AdwViewSwitcherBarProps<import("@gtkx/gi/adw").ViewSwitcherBar> & import("../common").ReactNativeLayoutProps>;
43
+ export declare const AdwViewSwitcherSidebar: React.ComponentType<import("@gtkx/jsx/adw").AdwViewSwitcherSidebarProps<import("@gtkx/gi/adw").ViewSwitcherSidebar> & import("../common").ReactNativeLayoutProps>;
44
+ export declare const AdwViewSwitcherTitle: React.ComponentType<import("@gtkx/jsx/adw").AdwViewSwitcherTitleProps<import("@gtkx/gi/adw").ViewSwitcherTitle> & import("../common").ReactNativeLayoutProps>;
45
+ export declare const AdwWindowTitle: React.ComponentType<import("@gtkx/jsx/adw").AdwWindowTitleProps<import("@gtkx/gi/adw").WindowTitle> & import("../common").ReactNativeLayoutProps>;
46
+ export declare const AdwWrapBox: React.ComponentType<import("@gtkx/jsx/adw").AdwWrapBoxProps<import("@gtkx/gi/adw").WrapBox> & import("../common").ReactNativeLayoutProps>;
47
+ export { AdwAboutWindow, // toplevel (implements GtkRoot)
48
+ AdwActionRow, // child-only (derives Gtk.ListBoxRow)
49
+ AdwApplicationWindow, // toplevel (implements GtkRoot)
50
+ AdwButtonRow, // child-only (derives Gtk.ListBoxRow)
51
+ AdwComboRow, // child-only (derives Gtk.ListBoxRow)
52
+ AdwEntryRow, // child-only (derives Gtk.ListBoxRow)
53
+ AdwExpanderRow, // child-only (derives Gtk.ListBoxRow)
54
+ AdwMessageDialog, // toplevel (implements GtkRoot)
55
+ AdwNavigationPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
56
+ AdwPasswordEntryRow, // child-only (derives Gtk.ListBoxRow)
57
+ AdwPreferencesPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
58
+ AdwPreferencesRow, // child-only (derives Gtk.ListBoxRow)
59
+ AdwPreferencesWindow, // toplevel (implements GtkRoot)
60
+ AdwSpinRow, // child-only (derives Gtk.ListBoxRow)
61
+ AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)
62
+ AdwWindow, } from "../gtkx/bridge/widgets.generated";
63
+ export declare const ADW_WRAPPED_WIDGET_NAMES: readonly ["AdwAboutDialog", "AdwAlertDialog", "AdwAvatar", "AdwBanner", "AdwBin", "AdwBottomSheet", "AdwBreakpointBin", "AdwButtonContent", "AdwCarousel", "AdwCarouselIndicatorDots", "AdwCarouselIndicatorLines", "AdwClamp", "AdwClampScrollable", "AdwDialog", "AdwFlap", "AdwHeaderBar", "AdwInlineViewSwitcher", "AdwLayoutSlot", "AdwLeaflet", "AdwMultiLayoutView", "AdwNavigationSplitView", "AdwNavigationView", "AdwOverlaySplitView", "AdwPreferencesDialog", "AdwPreferencesGroup", "AdwShortcutLabel", "AdwShortcutsDialog", "AdwSidebar", "AdwSpinner", "AdwSplitButton", "AdwSqueezer", "AdwStatusPage", "AdwTabBar", "AdwTabButton", "AdwTabOverview", "AdwTabView", "AdwToastOverlay", "AdwToggleGroup", "AdwToolbarView", "AdwViewStack", "AdwViewSwitcher", "AdwViewSwitcherBar", "AdwViewSwitcherSidebar", "AdwViewSwitcherTitle", "AdwWindowTitle", "AdwWrapBox"];
@@ -0,0 +1,125 @@
1
+ // GENERATED FILE — do not edit by hand.
2
+ // Produced by scripts/generate-widget-surface.ts. Re-run it inside the VM
3
+ // after `npm run codegen` picks up a gtkx update; see
4
+ // scripts/widget-surface/classification.json for the full classification
5
+ // and .claude/epics/widget-surface/ for the rules behind it.
6
+ //
7
+ // Wrapped: RN layout + a GTK CSS class from the style prop, steps aside and
8
+ // renders bare outside RN layout (see wrapReactNative in ../common/widget).
9
+ // Raw: toplevels and child-only widgets, where a wrapper box would be
10
+ // invalid GTK rather than a convenience — exported as gtkx binds them, same
11
+ // as the hand-picked ones were before this file existed.
12
+ import { wrapReactNative } from "../common/widget";
13
+ import { AdwAboutDialog as RawAdwAboutDialog, AdwAlertDialog as RawAdwAlertDialog, AdwAvatar as RawAdwAvatar, AdwBanner as RawAdwBanner, AdwBin as RawAdwBin, AdwBottomSheet as RawAdwBottomSheet, AdwBreakpointBin as RawAdwBreakpointBin, AdwButtonContent as RawAdwButtonContent, AdwCarousel as RawAdwCarousel, AdwCarouselIndicatorDots as RawAdwCarouselIndicatorDots, AdwCarouselIndicatorLines as RawAdwCarouselIndicatorLines, AdwClamp as RawAdwClamp, AdwClampScrollable as RawAdwClampScrollable, AdwDialog as RawAdwDialog, AdwFlap as RawAdwFlap, AdwHeaderBar as RawAdwHeaderBar, AdwInlineViewSwitcher as RawAdwInlineViewSwitcher, AdwLayoutSlot as RawAdwLayoutSlot, AdwLeaflet as RawAdwLeaflet, AdwMultiLayoutView as RawAdwMultiLayoutView, AdwNavigationSplitView as RawAdwNavigationSplitView, AdwNavigationView as RawAdwNavigationView, AdwOverlaySplitView as RawAdwOverlaySplitView, AdwPreferencesDialog as RawAdwPreferencesDialog, AdwPreferencesGroup as RawAdwPreferencesGroup, AdwShortcutLabel as RawAdwShortcutLabel, AdwShortcutsDialog as RawAdwShortcutsDialog, AdwSidebar as RawAdwSidebar, AdwSpinner as RawAdwSpinner, AdwSplitButton as RawAdwSplitButton, AdwSqueezer as RawAdwSqueezer, AdwStatusPage as RawAdwStatusPage, AdwTabBar as RawAdwTabBar, AdwTabButton as RawAdwTabButton, AdwTabOverview as RawAdwTabOverview, AdwTabView as RawAdwTabView, AdwToastOverlay as RawAdwToastOverlay, AdwToggleGroup as RawAdwToggleGroup, AdwToolbarView as RawAdwToolbarView, AdwViewStack as RawAdwViewStack, AdwViewSwitcher as RawAdwViewSwitcher, AdwViewSwitcherBar as RawAdwViewSwitcherBar, AdwViewSwitcherSidebar as RawAdwViewSwitcherSidebar, AdwViewSwitcherTitle as RawAdwViewSwitcherTitle, AdwWindowTitle as RawAdwWindowTitle, AdwWrapBox as RawAdwWrapBox, } from "../gtkx/bridge/widgets.generated";
14
+ export const AdwAboutDialog = wrapReactNative(RawAdwAboutDialog, "AdwAboutDialog");
15
+ export const AdwAlertDialog = wrapReactNative(RawAdwAlertDialog, "AdwAlertDialog");
16
+ export const AdwAvatar = wrapReactNative(RawAdwAvatar, "AdwAvatar");
17
+ export const AdwBanner = wrapReactNative(RawAdwBanner, "AdwBanner");
18
+ export const AdwBin = wrapReactNative(RawAdwBin, "AdwBin");
19
+ export const AdwBottomSheet = wrapReactNative(RawAdwBottomSheet, "AdwBottomSheet");
20
+ export const AdwBreakpointBin = wrapReactNative(RawAdwBreakpointBin, "AdwBreakpointBin");
21
+ export const AdwButtonContent = wrapReactNative(RawAdwButtonContent, "AdwButtonContent");
22
+ export const AdwCarousel = wrapReactNative(RawAdwCarousel, "AdwCarousel");
23
+ export const AdwCarouselIndicatorDots = wrapReactNative(RawAdwCarouselIndicatorDots, "AdwCarouselIndicatorDots");
24
+ export const AdwCarouselIndicatorLines = wrapReactNative(RawAdwCarouselIndicatorLines, "AdwCarouselIndicatorLines");
25
+ export const AdwClamp = wrapReactNative(RawAdwClamp, "AdwClamp");
26
+ export const AdwClampScrollable = wrapReactNative(RawAdwClampScrollable, "AdwClampScrollable");
27
+ export const AdwDialog = wrapReactNative(RawAdwDialog, "AdwDialog");
28
+ export const AdwFlap = wrapReactNative(RawAdwFlap, "AdwFlap");
29
+ export const AdwHeaderBar = wrapReactNative(RawAdwHeaderBar, "AdwHeaderBar");
30
+ export const AdwInlineViewSwitcher = wrapReactNative(RawAdwInlineViewSwitcher, "AdwInlineViewSwitcher");
31
+ export const AdwLayoutSlot = wrapReactNative(RawAdwLayoutSlot, "AdwLayoutSlot");
32
+ export const AdwLeaflet = wrapReactNative(RawAdwLeaflet, "AdwLeaflet");
33
+ export const AdwMultiLayoutView = wrapReactNative(RawAdwMultiLayoutView, "AdwMultiLayoutView");
34
+ export const AdwNavigationSplitView = wrapReactNative(RawAdwNavigationSplitView, "AdwNavigationSplitView");
35
+ export const AdwNavigationView = wrapReactNative(RawAdwNavigationView, "AdwNavigationView");
36
+ export const AdwOverlaySplitView = wrapReactNative(RawAdwOverlaySplitView, "AdwOverlaySplitView");
37
+ export const AdwPreferencesDialog = wrapReactNative(RawAdwPreferencesDialog, "AdwPreferencesDialog");
38
+ export const AdwPreferencesGroup = wrapReactNative(RawAdwPreferencesGroup, "AdwPreferencesGroup");
39
+ export const AdwShortcutLabel = wrapReactNative(RawAdwShortcutLabel, "AdwShortcutLabel");
40
+ export const AdwShortcutsDialog = wrapReactNative(RawAdwShortcutsDialog, "AdwShortcutsDialog");
41
+ export const AdwSidebar = wrapReactNative(RawAdwSidebar, "AdwSidebar");
42
+ export const AdwSpinner = wrapReactNative(RawAdwSpinner, "AdwSpinner");
43
+ export const AdwSplitButton = wrapReactNative(RawAdwSplitButton, "AdwSplitButton");
44
+ export const AdwSqueezer = wrapReactNative(RawAdwSqueezer, "AdwSqueezer");
45
+ export const AdwStatusPage = wrapReactNative(RawAdwStatusPage, "AdwStatusPage");
46
+ export const AdwTabBar = wrapReactNative(RawAdwTabBar, "AdwTabBar");
47
+ export const AdwTabButton = wrapReactNative(RawAdwTabButton, "AdwTabButton");
48
+ export const AdwTabOverview = wrapReactNative(RawAdwTabOverview, "AdwTabOverview");
49
+ export const AdwTabView = wrapReactNative(RawAdwTabView, "AdwTabView");
50
+ export const AdwToastOverlay = wrapReactNative(RawAdwToastOverlay, "AdwToastOverlay");
51
+ export const AdwToggleGroup = wrapReactNative(RawAdwToggleGroup, "AdwToggleGroup");
52
+ export const AdwToolbarView = wrapReactNative(RawAdwToolbarView, "AdwToolbarView");
53
+ export const AdwViewStack = wrapReactNative(RawAdwViewStack, "AdwViewStack");
54
+ export const AdwViewSwitcher = wrapReactNative(RawAdwViewSwitcher, "AdwViewSwitcher");
55
+ export const AdwViewSwitcherBar = wrapReactNative(RawAdwViewSwitcherBar, "AdwViewSwitcherBar");
56
+ export const AdwViewSwitcherSidebar = wrapReactNative(RawAdwViewSwitcherSidebar, "AdwViewSwitcherSidebar");
57
+ export const AdwViewSwitcherTitle = wrapReactNative(RawAdwViewSwitcherTitle, "AdwViewSwitcherTitle");
58
+ export const AdwWindowTitle = wrapReactNative(RawAdwWindowTitle, "AdwWindowTitle");
59
+ export const AdwWrapBox = wrapReactNative(RawAdwWrapBox, "AdwWrapBox");
60
+ export { AdwAboutWindow, // toplevel (implements GtkRoot)
61
+ AdwActionRow, // child-only (derives Gtk.ListBoxRow)
62
+ AdwApplicationWindow, // toplevel (implements GtkRoot)
63
+ AdwButtonRow, // child-only (derives Gtk.ListBoxRow)
64
+ AdwComboRow, // child-only (derives Gtk.ListBoxRow)
65
+ AdwEntryRow, // child-only (derives Gtk.ListBoxRow)
66
+ AdwExpanderRow, // child-only (derives Gtk.ListBoxRow)
67
+ AdwMessageDialog, // toplevel (implements GtkRoot)
68
+ AdwNavigationPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
69
+ AdwPasswordEntryRow, // child-only (derives Gtk.ListBoxRow)
70
+ AdwPreferencesPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
71
+ AdwPreferencesRow, // child-only (derives Gtk.ListBoxRow)
72
+ AdwPreferencesWindow, // toplevel (implements GtkRoot)
73
+ AdwSpinRow, // child-only (derives Gtk.ListBoxRow)
74
+ AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)
75
+ AdwWindow, // toplevel (implements GtkRoot)
76
+ } from "../gtkx/bridge/widgets.generated";
77
+ export const ADW_WRAPPED_WIDGET_NAMES = [
78
+ "AdwAboutDialog",
79
+ "AdwAlertDialog",
80
+ "AdwAvatar",
81
+ "AdwBanner",
82
+ "AdwBin",
83
+ "AdwBottomSheet",
84
+ "AdwBreakpointBin",
85
+ "AdwButtonContent",
86
+ "AdwCarousel",
87
+ "AdwCarouselIndicatorDots",
88
+ "AdwCarouselIndicatorLines",
89
+ "AdwClamp",
90
+ "AdwClampScrollable",
91
+ "AdwDialog",
92
+ "AdwFlap",
93
+ "AdwHeaderBar",
94
+ "AdwInlineViewSwitcher",
95
+ "AdwLayoutSlot",
96
+ "AdwLeaflet",
97
+ "AdwMultiLayoutView",
98
+ "AdwNavigationSplitView",
99
+ "AdwNavigationView",
100
+ "AdwOverlaySplitView",
101
+ "AdwPreferencesDialog",
102
+ "AdwPreferencesGroup",
103
+ "AdwShortcutLabel",
104
+ "AdwShortcutsDialog",
105
+ "AdwSidebar",
106
+ "AdwSpinner",
107
+ "AdwSplitButton",
108
+ "AdwSqueezer",
109
+ "AdwStatusPage",
110
+ "AdwTabBar",
111
+ "AdwTabButton",
112
+ "AdwTabOverview",
113
+ "AdwTabView",
114
+ "AdwToastOverlay",
115
+ "AdwToggleGroup",
116
+ "AdwToolbarView",
117
+ "AdwViewStack",
118
+ "AdwViewSwitcher",
119
+ "AdwViewSwitcherBar",
120
+ "AdwViewSwitcherSidebar",
121
+ "AdwViewSwitcherTitle",
122
+ "AdwWindowTitle",
123
+ "AdwWrapBox",
124
+ ];
125
+ //# sourceMappingURL=widgets.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widgets.generated.js","sourceRoot":"","sources":["../../src/adw/widgets.generated.ts"],"names":[],"mappings":"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","sourcesContent":["// GENERATED FILE — do not edit by hand.\n// Produced by scripts/generate-widget-surface.ts. Re-run it inside the VM\n// after `npm run codegen` picks up a gtkx update; see\n// scripts/widget-surface/classification.json for the full classification\n// and .claude/epics/widget-surface/ for the rules behind it.\n//\n// Wrapped: RN layout + a GTK CSS class from the style prop, steps aside and\n// renders bare outside RN layout (see wrapReactNative in ../common/widget).\n// Raw: toplevels and child-only widgets, where a wrapper box would be\n// invalid GTK rather than a convenience — exported as gtkx binds them, same\n// as the hand-picked ones were before this file existed.\n\nimport { wrapReactNative } from \"../common/widget\"\nimport {\n AdwAboutDialog as RawAdwAboutDialog,\n AdwAlertDialog as RawAdwAlertDialog,\n AdwAvatar as RawAdwAvatar,\n AdwBanner as RawAdwBanner,\n AdwBin as RawAdwBin,\n AdwBottomSheet as RawAdwBottomSheet,\n AdwBreakpointBin as RawAdwBreakpointBin,\n AdwButtonContent as RawAdwButtonContent,\n AdwCarousel as RawAdwCarousel,\n AdwCarouselIndicatorDots as RawAdwCarouselIndicatorDots,\n AdwCarouselIndicatorLines as RawAdwCarouselIndicatorLines,\n AdwClamp as RawAdwClamp,\n AdwClampScrollable as RawAdwClampScrollable,\n AdwDialog as RawAdwDialog,\n AdwFlap as RawAdwFlap,\n AdwHeaderBar as RawAdwHeaderBar,\n AdwInlineViewSwitcher as RawAdwInlineViewSwitcher,\n AdwLayoutSlot as RawAdwLayoutSlot,\n AdwLeaflet as RawAdwLeaflet,\n AdwMultiLayoutView as RawAdwMultiLayoutView,\n AdwNavigationSplitView as RawAdwNavigationSplitView,\n AdwNavigationView as RawAdwNavigationView,\n AdwOverlaySplitView as RawAdwOverlaySplitView,\n AdwPreferencesDialog as RawAdwPreferencesDialog,\n AdwPreferencesGroup as RawAdwPreferencesGroup,\n AdwShortcutLabel as RawAdwShortcutLabel,\n AdwShortcutsDialog as RawAdwShortcutsDialog,\n AdwSidebar as RawAdwSidebar,\n AdwSpinner as RawAdwSpinner,\n AdwSplitButton as RawAdwSplitButton,\n AdwSqueezer as RawAdwSqueezer,\n AdwStatusPage as RawAdwStatusPage,\n AdwTabBar as RawAdwTabBar,\n AdwTabButton as RawAdwTabButton,\n AdwTabOverview as RawAdwTabOverview,\n AdwTabView as RawAdwTabView,\n AdwToastOverlay as RawAdwToastOverlay,\n AdwToggleGroup as RawAdwToggleGroup,\n AdwToolbarView as RawAdwToolbarView,\n AdwViewStack as RawAdwViewStack,\n AdwViewSwitcher as RawAdwViewSwitcher,\n AdwViewSwitcherBar as RawAdwViewSwitcherBar,\n AdwViewSwitcherSidebar as RawAdwViewSwitcherSidebar,\n AdwViewSwitcherTitle as RawAdwViewSwitcherTitle,\n AdwWindowTitle as RawAdwWindowTitle,\n AdwWrapBox as RawAdwWrapBox,\n} from \"../gtkx/bridge/widgets.generated\"\n\nexport const AdwAboutDialog = wrapReactNative(\n RawAdwAboutDialog,\n \"AdwAboutDialog\",\n)\nexport const AdwAlertDialog = wrapReactNative(\n RawAdwAlertDialog,\n \"AdwAlertDialog\",\n)\nexport const AdwAvatar = wrapReactNative(RawAdwAvatar, \"AdwAvatar\")\nexport const AdwBanner = wrapReactNative(RawAdwBanner, \"AdwBanner\")\nexport const AdwBin = wrapReactNative(RawAdwBin, \"AdwBin\")\nexport const AdwBottomSheet = wrapReactNative(\n RawAdwBottomSheet,\n \"AdwBottomSheet\",\n)\nexport const AdwBreakpointBin = wrapReactNative(\n RawAdwBreakpointBin,\n \"AdwBreakpointBin\",\n)\nexport const AdwButtonContent = wrapReactNative(\n RawAdwButtonContent,\n \"AdwButtonContent\",\n)\nexport const AdwCarousel = wrapReactNative(RawAdwCarousel, \"AdwCarousel\")\nexport const AdwCarouselIndicatorDots = wrapReactNative(\n RawAdwCarouselIndicatorDots,\n \"AdwCarouselIndicatorDots\",\n)\nexport const AdwCarouselIndicatorLines = wrapReactNative(\n RawAdwCarouselIndicatorLines,\n \"AdwCarouselIndicatorLines\",\n)\nexport const AdwClamp = wrapReactNative(RawAdwClamp, \"AdwClamp\")\nexport const AdwClampScrollable = wrapReactNative(\n RawAdwClampScrollable,\n \"AdwClampScrollable\",\n)\nexport const AdwDialog = wrapReactNative(RawAdwDialog, \"AdwDialog\")\nexport const AdwFlap = wrapReactNative(RawAdwFlap, \"AdwFlap\")\nexport const AdwHeaderBar = wrapReactNative(RawAdwHeaderBar, \"AdwHeaderBar\")\nexport const AdwInlineViewSwitcher = wrapReactNative(\n RawAdwInlineViewSwitcher,\n \"AdwInlineViewSwitcher\",\n)\nexport const AdwLayoutSlot = wrapReactNative(RawAdwLayoutSlot, \"AdwLayoutSlot\")\nexport const AdwLeaflet = wrapReactNative(RawAdwLeaflet, \"AdwLeaflet\")\nexport const AdwMultiLayoutView = wrapReactNative(\n RawAdwMultiLayoutView,\n \"AdwMultiLayoutView\",\n)\nexport const AdwNavigationSplitView = wrapReactNative(\n RawAdwNavigationSplitView,\n \"AdwNavigationSplitView\",\n)\nexport const AdwNavigationView = wrapReactNative(\n RawAdwNavigationView,\n \"AdwNavigationView\",\n)\nexport const AdwOverlaySplitView = wrapReactNative(\n RawAdwOverlaySplitView,\n \"AdwOverlaySplitView\",\n)\nexport const AdwPreferencesDialog = wrapReactNative(\n RawAdwPreferencesDialog,\n \"AdwPreferencesDialog\",\n)\nexport const AdwPreferencesGroup = wrapReactNative(\n RawAdwPreferencesGroup,\n \"AdwPreferencesGroup\",\n)\nexport const AdwShortcutLabel = wrapReactNative(\n RawAdwShortcutLabel,\n \"AdwShortcutLabel\",\n)\nexport const AdwShortcutsDialog = wrapReactNative(\n RawAdwShortcutsDialog,\n \"AdwShortcutsDialog\",\n)\nexport const AdwSidebar = wrapReactNative(RawAdwSidebar, \"AdwSidebar\")\nexport const AdwSpinner = wrapReactNative(RawAdwSpinner, \"AdwSpinner\")\nexport const AdwSplitButton = wrapReactNative(\n RawAdwSplitButton,\n \"AdwSplitButton\",\n)\nexport const AdwSqueezer = wrapReactNative(RawAdwSqueezer, \"AdwSqueezer\")\nexport const AdwStatusPage = wrapReactNative(RawAdwStatusPage, \"AdwStatusPage\")\nexport const AdwTabBar = wrapReactNative(RawAdwTabBar, \"AdwTabBar\")\nexport const AdwTabButton = wrapReactNative(RawAdwTabButton, \"AdwTabButton\")\nexport const AdwTabOverview = wrapReactNative(\n RawAdwTabOverview,\n \"AdwTabOverview\",\n)\nexport const AdwTabView = wrapReactNative(RawAdwTabView, \"AdwTabView\")\nexport const AdwToastOverlay = wrapReactNative(\n RawAdwToastOverlay,\n \"AdwToastOverlay\",\n)\nexport const AdwToggleGroup = wrapReactNative(\n RawAdwToggleGroup,\n \"AdwToggleGroup\",\n)\nexport const AdwToolbarView = wrapReactNative(\n RawAdwToolbarView,\n \"AdwToolbarView\",\n)\nexport const AdwViewStack = wrapReactNative(RawAdwViewStack, \"AdwViewStack\")\nexport const AdwViewSwitcher = wrapReactNative(\n RawAdwViewSwitcher,\n \"AdwViewSwitcher\",\n)\nexport const AdwViewSwitcherBar = wrapReactNative(\n RawAdwViewSwitcherBar,\n \"AdwViewSwitcherBar\",\n)\nexport const AdwViewSwitcherSidebar = wrapReactNative(\n RawAdwViewSwitcherSidebar,\n \"AdwViewSwitcherSidebar\",\n)\nexport const AdwViewSwitcherTitle = wrapReactNative(\n RawAdwViewSwitcherTitle,\n \"AdwViewSwitcherTitle\",\n)\nexport const AdwWindowTitle = wrapReactNative(\n RawAdwWindowTitle,\n \"AdwWindowTitle\",\n)\nexport const AdwWrapBox = wrapReactNative(RawAdwWrapBox, \"AdwWrapBox\")\n\nexport {\n AdwAboutWindow, // toplevel (implements GtkRoot)\n AdwActionRow, // child-only (derives Gtk.ListBoxRow)\n AdwApplicationWindow, // toplevel (implements GtkRoot)\n AdwButtonRow, // child-only (derives Gtk.ListBoxRow)\n AdwComboRow, // child-only (derives Gtk.ListBoxRow)\n AdwEntryRow, // child-only (derives Gtk.ListBoxRow)\n AdwExpanderRow, // child-only (derives Gtk.ListBoxRow)\n AdwMessageDialog, // toplevel (implements GtkRoot)\n AdwNavigationPage, // child-only (denylist — see scripts/widget-surface/classify.ts)\n AdwPasswordEntryRow, // child-only (derives Gtk.ListBoxRow)\n AdwPreferencesPage, // child-only (denylist — see scripts/widget-surface/classify.ts)\n AdwPreferencesRow, // child-only (derives Gtk.ListBoxRow)\n AdwPreferencesWindow, // toplevel (implements GtkRoot)\n AdwSpinRow, // child-only (derives Gtk.ListBoxRow)\n AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)\n AdwWindow, // toplevel (implements GtkRoot)\n} from \"../gtkx/bridge/widgets.generated\"\n\nexport const ADW_WRAPPED_WIDGET_NAMES = [\n \"AdwAboutDialog\",\n \"AdwAlertDialog\",\n \"AdwAvatar\",\n \"AdwBanner\",\n \"AdwBin\",\n \"AdwBottomSheet\",\n \"AdwBreakpointBin\",\n \"AdwButtonContent\",\n \"AdwCarousel\",\n \"AdwCarouselIndicatorDots\",\n \"AdwCarouselIndicatorLines\",\n \"AdwClamp\",\n \"AdwClampScrollable\",\n \"AdwDialog\",\n \"AdwFlap\",\n \"AdwHeaderBar\",\n \"AdwInlineViewSwitcher\",\n \"AdwLayoutSlot\",\n \"AdwLeaflet\",\n \"AdwMultiLayoutView\",\n \"AdwNavigationSplitView\",\n \"AdwNavigationView\",\n \"AdwOverlaySplitView\",\n \"AdwPreferencesDialog\",\n \"AdwPreferencesGroup\",\n \"AdwShortcutLabel\",\n \"AdwShortcutsDialog\",\n \"AdwSidebar\",\n \"AdwSpinner\",\n \"AdwSplitButton\",\n \"AdwSqueezer\",\n \"AdwStatusPage\",\n \"AdwTabBar\",\n \"AdwTabButton\",\n \"AdwTabOverview\",\n \"AdwTabView\",\n \"AdwToastOverlay\",\n \"AdwToggleGroup\",\n \"AdwToolbarView\",\n \"AdwViewStack\",\n \"AdwViewSwitcher\",\n \"AdwViewSwitcherBar\",\n \"AdwViewSwitcherSidebar\",\n \"AdwViewSwitcherTitle\",\n \"AdwWindowTitle\",\n \"AdwWrapBox\",\n] as const\n"]}
@@ -1,7 +1,9 @@
1
1
  import type { CompositeAnimation, FrameScheduler, LoopConfig, ParallelConfig, SpringConfig, TimingConfig } from "./types";
2
2
  import { AnimatedValue } from "./value";
3
+ import { AnimatedValueXY } from "./value-xy";
3
4
  export type AnimatedApi = {
4
5
  Value: typeof AnimatedValue;
6
+ ValueXY: typeof AnimatedValueXY;
5
7
  timing(value: AnimatedValue, config: TimingConfig): CompositeAnimation;
6
8
  spring(value: AnimatedValue, config: SpringConfig): CompositeAnimation;
7
9
  sequence(animations: CompositeAnimation[]): CompositeAnimation;
@@ -5,8 +5,10 @@ import { createDelay, loop, parallel, sequence } from "./composite";
5
5
  import { createSpring } from "./spring";
6
6
  import { createTiming } from "./timing";
7
7
  import { AnimatedValue } from "./value";
8
+ import { AnimatedValueXY } from "./value-xy";
8
9
  export const createAnimated = (scheduler) => ({
9
10
  Value: AnimatedValue,
11
+ ValueXY: AnimatedValueXY,
10
12
  timing: (value, config) => createTiming(scheduler, value, config),
11
13
  spring: (value, config) => createSpring(scheduler, value, config),
12
14
  sequence,
@@ -1 +1 @@
1
- {"version":3,"file":"create-animated.js","sourceRoot":"","sources":["../../src/animated/create-animated.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gDAAgD;AAChD,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AASvC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAevC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAyB,EAAe,EAAE,CAAC,CAAC;IACzE,KAAK,EAAE,aAAa;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACjE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACjE,QAAQ;IACR,QAAQ;IACR,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;IACzC,IAAI;CACL,CAAC,CAAA","sourcesContent":["// Factory wiring the frame driver into the whole Animated API. The GTK side\n// passes a scheduler backed by the frame clock;\n// tests pass a manual scheduler and drive frames by hand.\n\nimport { createDelay, loop, parallel, sequence } from \"./composite\"\nimport { createSpring } from \"./spring\"\nimport { createTiming } from \"./timing\"\nimport type {\n CompositeAnimation,\n FrameScheduler,\n LoopConfig,\n ParallelConfig,\n SpringConfig,\n TimingConfig,\n} from \"./types\"\nimport { AnimatedValue } from \"./value\"\n\nexport type AnimatedApi = {\n Value: typeof AnimatedValue\n timing(value: AnimatedValue, config: TimingConfig): CompositeAnimation\n spring(value: AnimatedValue, config: SpringConfig): CompositeAnimation\n sequence(animations: CompositeAnimation[]): CompositeAnimation\n parallel(\n animations: CompositeAnimation[],\n config?: ParallelConfig,\n ): CompositeAnimation\n delay(ms: number): CompositeAnimation\n loop(animation: CompositeAnimation, config?: LoopConfig): CompositeAnimation\n}\n\nexport const createAnimated = (scheduler: FrameScheduler): AnimatedApi => ({\n Value: AnimatedValue,\n timing: (value, config) => createTiming(scheduler, value, config),\n spring: (value, config) => createSpring(scheduler, value, config),\n sequence,\n parallel,\n delay: (ms) => createDelay(scheduler, ms),\n loop,\n})\n"]}
1
+ {"version":3,"file":"create-animated.js","sourceRoot":"","sources":["../../src/animated/create-animated.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,gDAAgD;AAChD,0DAA0D;AAE1D,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AASvC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAgB5C,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAyB,EAAe,EAAE,CAAC,CAAC;IACzE,KAAK,EAAE,aAAa;IACpB,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACjE,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC;IACjE,QAAQ;IACR,QAAQ;IACR,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE,CAAC;IACzC,IAAI;CACL,CAAC,CAAA","sourcesContent":["// Factory wiring the frame driver into the whole Animated API. The GTK side\n// passes a scheduler backed by the frame clock;\n// tests pass a manual scheduler and drive frames by hand.\n\nimport { createDelay, loop, parallel, sequence } from \"./composite\"\nimport { createSpring } from \"./spring\"\nimport { createTiming } from \"./timing\"\nimport type {\n CompositeAnimation,\n FrameScheduler,\n LoopConfig,\n ParallelConfig,\n SpringConfig,\n TimingConfig,\n} from \"./types\"\nimport { AnimatedValue } from \"./value\"\nimport { AnimatedValueXY } from \"./value-xy\"\n\nexport type AnimatedApi = {\n Value: typeof AnimatedValue\n ValueXY: typeof AnimatedValueXY\n timing(value: AnimatedValue, config: TimingConfig): CompositeAnimation\n spring(value: AnimatedValue, config: SpringConfig): CompositeAnimation\n sequence(animations: CompositeAnimation[]): CompositeAnimation\n parallel(\n animations: CompositeAnimation[],\n config?: ParallelConfig,\n ): CompositeAnimation\n delay(ms: number): CompositeAnimation\n loop(animation: CompositeAnimation, config?: LoopConfig): CompositeAnimation\n}\n\nexport const createAnimated = (scheduler: FrameScheduler): AnimatedApi => ({\n Value: AnimatedValue,\n ValueXY: AnimatedValueXY,\n timing: (value, config) => createTiming(scheduler, value, config),\n spring: (value, config) => createSpring(scheduler, value, config),\n sequence,\n parallel,\n delay: (ms) => createDelay(scheduler, ms),\n loop,\n})\n"]}
@@ -4,3 +4,5 @@ export type { EasingFunction } from "./easing";
4
4
  export { Easing } from "./easing";
5
5
  export type { CompositeAnimation, EndCallback, EndResult, ExtrapolateType, FrameScheduler, InterpolationConfig, InterpolationListener, LoopConfig, ParallelConfig, SpringConfig, TimingConfig, ValueListener, } from "./types";
6
6
  export { AnimatedInterpolation, AnimatedValue } from "./value";
7
+ export { AnimatedValueXY } from "./value-xy";
8
+ export type { ValueXYListener, ValueXYLiteral } from "./value-xy";
@@ -4,4 +4,5 @@
4
4
  export { createAnimated } from "./create-animated";
5
5
  export { Easing } from "./easing";
6
6
  export { AnimatedInterpolation, AnimatedValue } from "./value";
7
+ export { AnimatedValueXY } from "./value-xy";
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/animated/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,mCAAmC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAejC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA","sourcesContent":["// Animated module entry point. Pure by contract: everything is driven by an\n// injected FrameScheduler — the GTK frame clock is connected where the\n// Animated.* components are built.\n\nexport type { AnimatedApi } from \"./create-animated\"\nexport { createAnimated } from \"./create-animated\"\nexport type { EasingFunction } from \"./easing\"\nexport { Easing } from \"./easing\"\nexport type {\n CompositeAnimation,\n EndCallback,\n EndResult,\n ExtrapolateType,\n FrameScheduler,\n InterpolationConfig,\n InterpolationListener,\n LoopConfig,\n ParallelConfig,\n SpringConfig,\n TimingConfig,\n ValueListener,\n} from \"./types\"\nexport { AnimatedInterpolation, AnimatedValue } from \"./value\"\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/animated/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,mCAAmC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAElD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAejC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA","sourcesContent":["// Animated module entry point. Pure by contract: everything is driven by an\n// injected FrameScheduler — the GTK frame clock is connected where the\n// Animated.* components are built.\n\nexport type { AnimatedApi } from \"./create-animated\"\nexport { createAnimated } from \"./create-animated\"\nexport type { EasingFunction } from \"./easing\"\nexport { Easing } from \"./easing\"\nexport type {\n CompositeAnimation,\n EndCallback,\n EndResult,\n ExtrapolateType,\n FrameScheduler,\n InterpolationConfig,\n InterpolationListener,\n LoopConfig,\n ParallelConfig,\n SpringConfig,\n TimingConfig,\n ValueListener,\n} from \"./types\"\nexport { AnimatedInterpolation, AnimatedValue } from \"./value\"\nexport { AnimatedValueXY } from \"./value-xy\"\nexport type { ValueXYListener, ValueXYLiteral } from \"./value-xy\"\n"]}
@@ -0,0 +1,41 @@
1
+ import { AnimatedValue } from "./value";
2
+ export type ValueXYLiteral = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ export type ValueXYListener = (value: ValueXYLiteral) => void;
7
+ export declare class AnimatedValueXY {
8
+ readonly x: AnimatedValue;
9
+ readonly y: AnimatedValue;
10
+ private readonly _listeners;
11
+ private _nextListenerId;
12
+ constructor(value?: ValueXYLiteral);
13
+ setValue(value: ValueXYLiteral): void;
14
+ setOffset(offset: ValueXYLiteral): void;
15
+ flattenOffset(): void;
16
+ extractOffset(): void;
17
+ /**
18
+ * Fires on movement of EITHER axis, with both current values — RN's
19
+ * contract. Both subscriptions are kept so removeListener can undo them.
20
+ */
21
+ addListener(listener: ValueXYListener): string;
22
+ removeListener(id: string): void;
23
+ removeAllListeners(): void;
24
+ stopAnimation(callback?: (value: ValueXYLiteral) => void): void;
25
+ resetAnimation(callback?: (value: ValueXYLiteral) => void): void;
26
+ /** RN's absolute-positioning helper. */
27
+ getLayout(): {
28
+ left: AnimatedValue;
29
+ top: AnimatedValue;
30
+ };
31
+ /** The transform array a dragged view spreads into its style. */
32
+ getTranslateTransform(): [
33
+ {
34
+ translateX: AnimatedValue;
35
+ },
36
+ {
37
+ translateY: AnimatedValue;
38
+ }
39
+ ];
40
+ __getValue(): ValueXYLiteral;
41
+ }
@@ -0,0 +1,90 @@
1
+ // Animated.ValueXY — two Animated.Values that move together.
2
+ //
3
+ // It exists because it is the other half of PanResponder: essentially every
4
+ // React Native drag in the wild is `new Animated.ValueXY()` plus
5
+ // `pan.setValue({ x: gesture.dx, y: gesture.dy })`, and the transform comes
6
+ // from `getTranslateTransform()`. Shipping the responder system without this
7
+ // meant portable drag code still did not run — which the gallery found the
8
+ // moment it was pointed at a real screen.
9
+ //
10
+ // There is no new machinery here: every method delegates to the two values,
11
+ // which is exactly how RN implements it.
12
+ import { AnimatedValue } from "./value";
13
+ export class AnimatedValueXY {
14
+ x;
15
+ y;
16
+ _listeners = new Map();
17
+ _nextListenerId = 1;
18
+ constructor(value = { x: 0, y: 0 }) {
19
+ this.x = new AnimatedValue(value.x);
20
+ this.y = new AnimatedValue(value.y);
21
+ }
22
+ setValue(value) {
23
+ this.x.setValue(value.x);
24
+ this.y.setValue(value.y);
25
+ }
26
+ setOffset(offset) {
27
+ this.x.setOffset(offset.x);
28
+ this.y.setOffset(offset.y);
29
+ }
30
+ flattenOffset() {
31
+ this.x.flattenOffset();
32
+ this.y.flattenOffset();
33
+ }
34
+ extractOffset() {
35
+ this.x.extractOffset();
36
+ this.y.extractOffset();
37
+ }
38
+ /**
39
+ * Fires on movement of EITHER axis, with both current values — RN's
40
+ * contract. Both subscriptions are kept so removeListener can undo them.
41
+ */
42
+ addListener(listener) {
43
+ const id = String(this._nextListenerId++);
44
+ const emit = () => {
45
+ listener({ x: this.x.__getValue(), y: this.y.__getValue() });
46
+ };
47
+ this._listeners.set(id, {
48
+ x: this.x.addListener(emit),
49
+ y: this.y.addListener(emit),
50
+ listener,
51
+ });
52
+ return id;
53
+ }
54
+ removeListener(id) {
55
+ const entry = this._listeners.get(id);
56
+ if (!entry) {
57
+ return;
58
+ }
59
+ this.x.removeListener(entry.x);
60
+ this.y.removeListener(entry.y);
61
+ this._listeners.delete(id);
62
+ }
63
+ removeAllListeners() {
64
+ for (const id of [...this._listeners.keys()]) {
65
+ this.removeListener(id);
66
+ }
67
+ }
68
+ stopAnimation(callback) {
69
+ this.x.stopAnimation();
70
+ this.y.stopAnimation();
71
+ callback?.(this.__getValue());
72
+ }
73
+ resetAnimation(callback) {
74
+ this.x.resetAnimation();
75
+ this.y.resetAnimation();
76
+ callback?.(this.__getValue());
77
+ }
78
+ /** RN's absolute-positioning helper. */
79
+ getLayout() {
80
+ return { left: this.x, top: this.y };
81
+ }
82
+ /** The transform array a dragged view spreads into its style. */
83
+ getTranslateTransform() {
84
+ return [{ translateX: this.x }, { translateY: this.y }];
85
+ }
86
+ __getValue() {
87
+ return { x: this.x.__getValue(), y: this.y.__getValue() };
88
+ }
89
+ }
90
+ //# sourceMappingURL=value-xy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"value-xy.js","sourceRoot":"","sources":["../../src/animated/value-xy.ts"],"names":[],"mappings":"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","sourcesContent":["// Animated.ValueXY — two Animated.Values that move together.\n//\n// It exists because it is the other half of PanResponder: essentially every\n// React Native drag in the wild is `new Animated.ValueXY()` plus\n// `pan.setValue({ x: gesture.dx, y: gesture.dy })`, and the transform comes\n// from `getTranslateTransform()`. Shipping the responder system without this\n// meant portable drag code still did not run — which the gallery found the\n// moment it was pointed at a real screen.\n//\n// There is no new machinery here: every method delegates to the two values,\n// which is exactly how RN implements it.\nimport { AnimatedValue } from \"./value\"\n\nexport type ValueXYLiteral = { x: number; y: number }\n\nexport type ValueXYListener = (value: ValueXYLiteral) => void\n\nexport class AnimatedValueXY {\n readonly x: AnimatedValue\n readonly y: AnimatedValue\n private readonly _listeners = new Map<\n string,\n { x: string; y: string; listener: ValueXYListener }\n >()\n private _nextListenerId = 1\n\n constructor(value: ValueXYLiteral = { x: 0, y: 0 }) {\n this.x = new AnimatedValue(value.x)\n this.y = new AnimatedValue(value.y)\n }\n\n setValue(value: ValueXYLiteral): void {\n this.x.setValue(value.x)\n this.y.setValue(value.y)\n }\n\n setOffset(offset: ValueXYLiteral): void {\n this.x.setOffset(offset.x)\n this.y.setOffset(offset.y)\n }\n\n flattenOffset(): void {\n this.x.flattenOffset()\n this.y.flattenOffset()\n }\n\n extractOffset(): void {\n this.x.extractOffset()\n this.y.extractOffset()\n }\n\n /**\n * Fires on movement of EITHER axis, with both current values — RN's\n * contract. Both subscriptions are kept so removeListener can undo them.\n */\n addListener(listener: ValueXYListener): string {\n const id = String(this._nextListenerId++)\n const emit = (): void => {\n listener({ x: this.x.__getValue(), y: this.y.__getValue() })\n }\n this._listeners.set(id, {\n x: this.x.addListener(emit),\n y: this.y.addListener(emit),\n listener,\n })\n return id\n }\n\n removeListener(id: string): void {\n const entry = this._listeners.get(id)\n if (!entry) {\n return\n }\n this.x.removeListener(entry.x)\n this.y.removeListener(entry.y)\n this._listeners.delete(id)\n }\n\n removeAllListeners(): void {\n for (const id of [...this._listeners.keys()]) {\n this.removeListener(id)\n }\n }\n\n stopAnimation(callback?: (value: ValueXYLiteral) => void): void {\n this.x.stopAnimation()\n this.y.stopAnimation()\n callback?.(this.__getValue())\n }\n\n resetAnimation(callback?: (value: ValueXYLiteral) => void): void {\n this.x.resetAnimation()\n this.y.resetAnimation()\n callback?.(this.__getValue())\n }\n\n /** RN's absolute-positioning helper. */\n getLayout(): { left: AnimatedValue; top: AnimatedValue } {\n return { left: this.x, top: this.y }\n }\n\n /** The transform array a dragged view spreads into its style. */\n getTranslateTransform(): [\n { translateX: AnimatedValue },\n { translateY: AnimatedValue },\n ] {\n return [{ translateX: this.x }, { translateY: this.y }]\n }\n\n __getValue(): ValueXYLiteral {\n return { x: this.x.__getValue(), y: this.y.__getValue() }\n }\n}\n"]}
@@ -9,12 +9,19 @@ type InterpolationParent = {
9
9
  };
10
10
  export declare class AnimatedValue {
11
11
  private _value;
12
+ private _offset;
12
13
  private readonly _startingValue;
13
14
  private readonly _listeners;
14
15
  private _nextListenerId;
15
16
  private _animation;
16
17
  constructor(value: number);
17
18
  setValue(value: number): void;
19
+ /** Sets the static part. The animated part is left where it is. */
20
+ setOffset(offset: number): void;
21
+ /** Folds the offset into the value, leaving the sum unchanged. */
22
+ flattenOffset(): void;
23
+ /** The mirror of flattenOffset: moves the value into the offset. */
24
+ extractOffset(): void;
18
25
  addListener(listener: ValueListener): string;
19
26
  removeListener(id: string): void;
20
27
  removeAllListeners(): void;
@@ -24,6 +31,8 @@ export declare class AnimatedValue {
24
31
  __getValue(): number;
25
32
  /** @internal Called by the animation runner on every frame. */
26
33
  __updateValue(value: number): void;
34
+ /** @internal Publishes the current sum to every listener. */
35
+ private __notify;
27
36
  /** @internal Registers a running animation, preempting the previous one. */
28
37
  __startAnimation(handle: AnimationHandle): void;
29
38
  /** @internal */