react-native-gtkx 0.2.0-alpha.1 → 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.
- package/README.md +11 -2
- package/dist/adw/widgets.generated.d.ts +4 -4
- package/dist/adw/widgets.generated.js +51 -51
- package/dist/adw/widgets.generated.js.map +1 -1
- package/dist/animated/create-animated.d.ts +2 -0
- package/dist/animated/create-animated.js +2 -0
- package/dist/animated/create-animated.js.map +1 -1
- package/dist/animated/index.d.ts +2 -0
- package/dist/animated/index.js +1 -0
- package/dist/animated/index.js.map +1 -1
- package/dist/animated/value-xy.d.ts +41 -0
- package/dist/animated/value-xy.js +90 -0
- package/dist/animated/value-xy.js.map +1 -0
- package/dist/animated/value.d.ts +9 -0
- package/dist/animated/value.js +30 -2
- package/dist/animated/value.js.map +1 -1
- package/dist/common/icon.d.ts +23 -0
- package/dist/common/icon.js +14 -0
- package/dist/common/icon.js.map +1 -0
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.js +2 -0
- package/dist/common/index.js.map +1 -1
- package/dist/common/list.d.ts +82 -0
- package/dist/common/list.js +166 -0
- package/dist/common/list.js.map +1 -0
- package/dist/common/widget.d.ts +1 -22
- package/dist/common/widget.js +75 -8
- package/dist/common/widget.js.map +1 -1
- package/dist/components/animated.d.ts +4 -2
- package/dist/components/animated.js +3 -1
- package/dist/components/animated.js.map +1 -1
- package/dist/components/app-registry.d.ts +26 -0
- package/dist/components/app-registry.js.map +1 -1
- package/dist/components/host-node.d.ts +7 -0
- package/dist/components/host-node.js +26 -1
- package/dist/components/host-node.js.map +1 -1
- package/dist/components/index.d.ts +6 -2
- package/dist/components/index.js +2 -1
- package/dist/components/index.js.map +1 -1
- package/dist/components/measure.d.ts +13 -0
- package/dist/components/measure.js +51 -0
- package/dist/components/measure.js.map +1 -0
- package/dist/components/modal.d.ts +1 -1
- package/dist/components/press-event.d.ts +28 -0
- package/dist/components/press-event.js +46 -0
- package/dist/components/press-event.js.map +1 -0
- package/dist/components/pressable.d.ts +2 -6
- package/dist/components/pressable.js +14 -8
- package/dist/components/pressable.js.map +1 -1
- package/dist/components/scroll-view.d.ts +4 -0
- package/dist/components/scroll-view.js +8 -2
- package/dist/components/scroll-view.js.map +1 -1
- package/dist/components/text-input.js +1 -1
- package/dist/components/text-input.js.map +1 -1
- package/dist/components/text.js +25 -1
- package/dist/components/text.js.map +1 -1
- package/dist/components/use-layout-child.js +17 -14
- package/dist/components/use-layout-child.js.map +1 -1
- package/dist/components/view.d.ts +9 -4
- package/dist/components/view.js +8 -2
- package/dist/components/view.js.map +1 -1
- package/dist/contracts.d.ts +19 -3
- package/dist/contracts.js.map +1 -1
- package/dist/gtk/index.d.ts +2 -1
- package/dist/gtk/index.js +8 -1
- package/dist/gtk/index.js.map +1 -1
- package/dist/gtk/widgets.generated.d.ts +14 -14
- package/dist/gtk/widgets.generated.js +101 -102
- package/dist/gtk/widgets.generated.js.map +1 -1
- package/dist/gtk/window-actions.d.ts +77 -0
- package/dist/gtk/window-actions.js +193 -0
- package/dist/gtk/window-actions.js.map +1 -0
- package/dist/gtkx/bridge/geometry.d.ts +15 -0
- package/dist/gtkx/bridge/geometry.js +38 -0
- package/dist/gtkx/bridge/geometry.js.map +1 -0
- package/dist/gtkx/bridge/index.d.ts +2 -0
- package/dist/gtkx/bridge/index.js +7 -2
- package/dist/gtkx/bridge/index.js.map +1 -1
- package/dist/gtkx/bridge/slot-portal.d.ts +12 -0
- package/dist/gtkx/bridge/slot-portal.js +17 -0
- package/dist/gtkx/bridge/slot-portal.js.map +1 -0
- package/dist/gtkx/bridge/svg-node.js +10 -54
- package/dist/gtkx/bridge/svg-node.js.map +1 -1
- package/dist/gtkx/bridge/use-signal.js +2 -2
- package/dist/gtkx/bridge/use-signal.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/data/generated.d.ts +99 -77
- package/dist/mcp/data/generated.js +107 -76
- package/dist/mcp/data/generated.js.map +1 -1
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/navigation/sidebar.d.ts +31 -1
- package/dist/navigation/sidebar.js +12 -2
- package/dist/navigation/sidebar.js.map +1 -1
- package/dist/responder/system.d.ts +27 -0
- package/dist/responder/system.js +184 -0
- package/dist/responder/system.js.map +1 -0
- package/dist/responder/touch-history.d.ts +10 -0
- package/dist/responder/touch-history.js +78 -0
- package/dist/responder/touch-history.js.map +1 -0
- package/dist/responder/types.d.ts +63 -0
- package/dist/responder/types.js +29 -0
- package/dist/responder/types.js.map +1 -0
- package/dist/responder/use-responder.d.ts +12 -0
- package/dist/responder/use-responder.js +98 -0
- package/dist/responder/use-responder.js.map +1 -0
- package/dist/runner/host-dev.js +3 -1
- package/dist/runner/host-dev.js.map +1 -1
- package/dist/runner/host.js +5 -1
- package/dist/runner/host.js.map +1 -1
- package/dist/runner/index.js +1 -1
- package/dist/runner/index.js.map +1 -1
- package/dist/sea/gtkx-config-module.js +1 -1
- package/dist/sea/gtkx-config-module.js.map +1 -1
- package/dist/style/box-shadow.d.ts +7 -0
- package/dist/style/box-shadow.js +197 -0
- package/dist/style/box-shadow.js.map +1 -0
- package/dist/style/index.d.ts +2 -0
- package/dist/style/index.js +2 -0
- package/dist/style/index.js.map +1 -1
- package/dist/style/split-style.d.ts +5 -2
- package/dist/style/split-style.js +31 -3
- package/dist/style/split-style.js.map +1 -1
- package/dist/style/text-decoration.d.ts +15 -0
- package/dist/style/text-decoration.js +26 -0
- package/dist/style/text-decoration.js.map +1 -0
- package/dist/style/visual-css.js +37 -1
- package/dist/style/visual-css.js.map +1 -1
- package/dist/svg/gradient-geometry.js +2 -5
- package/dist/svg/gradient-geometry.js.map +1 -1
- package/dist/testing/index.js.map +1 -1
- package/dist/vendor/react-native/pan-responder.d.ts +102 -0
- package/dist/vendor/react-native/pan-responder.js +196 -0
- package/dist/vendor/react-native/pan-responder.js.map +1 -0
- package/dist/vendor/react-native/touch-history-math.d.ts +18 -0
- package/dist/vendor/react-native/touch-history-math.js +102 -0
- package/dist/vendor/react-native/touch-history-math.js.map +1 -0
- package/dist/vite/index.js +1 -1
- package/dist/vite/index.js.map +1 -1
- package/dist/vitest/index.d.ts +1 -1
- package/dist/vitest/index.js.map +1 -1
- package/package.json +9 -9
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-
|
|
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,7 +44,7 @@ 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), 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) —
|
|
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
|
|
|
@@ -98,6 +98,15 @@ GTK allocation. Two orders of magnitude of headroom against a 60 fps frame
|
|
|
98
98
|
budget, measured, not estimated (see docs/research/yoga-gtk-spike.md and
|
|
99
99
|
docs/research/layout-manager.md).
|
|
100
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
|
+
|
|
101
110
|
## Documentation
|
|
102
111
|
|
|
103
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;
|
|
@@ -44,19 +44,19 @@ export declare const AdwViewSwitcherSidebar: React.ComponentType<import("@gtkx/j
|
|
|
44
44
|
export declare const AdwViewSwitcherTitle: React.ComponentType<import("@gtkx/jsx/adw").AdwViewSwitcherTitleProps<import("@gtkx/gi/adw").ViewSwitcherTitle> & import("../common").ReactNativeLayoutProps>;
|
|
45
45
|
export declare const AdwWindowTitle: React.ComponentType<import("@gtkx/jsx/adw").AdwWindowTitleProps<import("@gtkx/gi/adw").WindowTitle> & import("../common").ReactNativeLayoutProps>;
|
|
46
46
|
export declare const AdwWrapBox: React.ComponentType<import("@gtkx/jsx/adw").AdwWrapBoxProps<import("@gtkx/gi/adw").WrapBox> & import("../common").ReactNativeLayoutProps>;
|
|
47
|
-
export { AdwAboutWindow, // toplevel (
|
|
47
|
+
export { AdwAboutWindow, // toplevel (implements GtkRoot)
|
|
48
48
|
AdwActionRow, // child-only (derives Gtk.ListBoxRow)
|
|
49
|
-
AdwApplicationWindow, // toplevel (
|
|
49
|
+
AdwApplicationWindow, // toplevel (implements GtkRoot)
|
|
50
50
|
AdwButtonRow, // child-only (derives Gtk.ListBoxRow)
|
|
51
51
|
AdwComboRow, // child-only (derives Gtk.ListBoxRow)
|
|
52
52
|
AdwEntryRow, // child-only (derives Gtk.ListBoxRow)
|
|
53
53
|
AdwExpanderRow, // child-only (derives Gtk.ListBoxRow)
|
|
54
|
-
AdwMessageDialog, // toplevel (
|
|
54
|
+
AdwMessageDialog, // toplevel (implements GtkRoot)
|
|
55
55
|
AdwNavigationPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
|
|
56
56
|
AdwPasswordEntryRow, // child-only (derives Gtk.ListBoxRow)
|
|
57
57
|
AdwPreferencesPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
|
|
58
58
|
AdwPreferencesRow, // child-only (derives Gtk.ListBoxRow)
|
|
59
|
-
AdwPreferencesWindow, // toplevel (
|
|
59
|
+
AdwPreferencesWindow, // toplevel (implements GtkRoot)
|
|
60
60
|
AdwSpinRow, // child-only (derives Gtk.ListBoxRow)
|
|
61
61
|
AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)
|
|
62
62
|
AdwWindow, } from "../gtkx/bridge/widgets.generated";
|
|
@@ -11,68 +11,68 @@
|
|
|
11
11
|
// as the hand-picked ones were before this file existed.
|
|
12
12
|
import { wrapReactNative } from "../common/widget";
|
|
13
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);
|
|
15
|
-
export const AdwAlertDialog = wrapReactNative(RawAdwAlertDialog);
|
|
16
|
-
export const AdwAvatar = wrapReactNative(RawAdwAvatar);
|
|
17
|
-
export const AdwBanner = wrapReactNative(RawAdwBanner);
|
|
18
|
-
export const AdwBin = wrapReactNative(RawAdwBin);
|
|
19
|
-
export const AdwBottomSheet = wrapReactNative(RawAdwBottomSheet);
|
|
20
|
-
export const AdwBreakpointBin = wrapReactNative(RawAdwBreakpointBin);
|
|
21
|
-
export const AdwButtonContent = wrapReactNative(RawAdwButtonContent);
|
|
22
|
-
export const AdwCarousel = wrapReactNative(RawAdwCarousel);
|
|
23
|
-
export const AdwCarouselIndicatorDots = wrapReactNative(RawAdwCarouselIndicatorDots);
|
|
24
|
-
export const AdwCarouselIndicatorLines = wrapReactNative(RawAdwCarouselIndicatorLines);
|
|
25
|
-
export const AdwClamp = wrapReactNative(RawAdwClamp);
|
|
26
|
-
export const AdwClampScrollable = wrapReactNative(RawAdwClampScrollable);
|
|
27
|
-
export const AdwDialog = wrapReactNative(RawAdwDialog);
|
|
28
|
-
export const AdwFlap = wrapReactNative(RawAdwFlap);
|
|
29
|
-
export const AdwHeaderBar = wrapReactNative(RawAdwHeaderBar);
|
|
30
|
-
export const AdwInlineViewSwitcher = wrapReactNative(RawAdwInlineViewSwitcher);
|
|
31
|
-
export const AdwLayoutSlot = wrapReactNative(RawAdwLayoutSlot);
|
|
32
|
-
export const AdwLeaflet = wrapReactNative(RawAdwLeaflet);
|
|
33
|
-
export const AdwMultiLayoutView = wrapReactNative(RawAdwMultiLayoutView);
|
|
34
|
-
export const AdwNavigationSplitView = wrapReactNative(RawAdwNavigationSplitView);
|
|
35
|
-
export const AdwNavigationView = wrapReactNative(RawAdwNavigationView);
|
|
36
|
-
export const AdwOverlaySplitView = wrapReactNative(RawAdwOverlaySplitView);
|
|
37
|
-
export const AdwPreferencesDialog = wrapReactNative(RawAdwPreferencesDialog);
|
|
38
|
-
export const AdwPreferencesGroup = wrapReactNative(RawAdwPreferencesGroup);
|
|
39
|
-
export const AdwShortcutLabel = wrapReactNative(RawAdwShortcutLabel);
|
|
40
|
-
export const AdwShortcutsDialog = wrapReactNative(RawAdwShortcutsDialog);
|
|
41
|
-
export const AdwSidebar = wrapReactNative(RawAdwSidebar);
|
|
42
|
-
export const AdwSpinner = wrapReactNative(RawAdwSpinner);
|
|
43
|
-
export const AdwSplitButton = wrapReactNative(RawAdwSplitButton);
|
|
44
|
-
export const AdwSqueezer = wrapReactNative(RawAdwSqueezer);
|
|
45
|
-
export const AdwStatusPage = wrapReactNative(RawAdwStatusPage);
|
|
46
|
-
export const AdwTabBar = wrapReactNative(RawAdwTabBar);
|
|
47
|
-
export const AdwTabButton = wrapReactNative(RawAdwTabButton);
|
|
48
|
-
export const AdwTabOverview = wrapReactNative(RawAdwTabOverview);
|
|
49
|
-
export const AdwTabView = wrapReactNative(RawAdwTabView);
|
|
50
|
-
export const AdwToastOverlay = wrapReactNative(RawAdwToastOverlay);
|
|
51
|
-
export const AdwToggleGroup = wrapReactNative(RawAdwToggleGroup);
|
|
52
|
-
export const AdwToolbarView = wrapReactNative(RawAdwToolbarView);
|
|
53
|
-
export const AdwViewStack = wrapReactNative(RawAdwViewStack);
|
|
54
|
-
export const AdwViewSwitcher = wrapReactNative(RawAdwViewSwitcher);
|
|
55
|
-
export const AdwViewSwitcherBar = wrapReactNative(RawAdwViewSwitcherBar);
|
|
56
|
-
export const AdwViewSwitcherSidebar = wrapReactNative(RawAdwViewSwitcherSidebar);
|
|
57
|
-
export const AdwViewSwitcherTitle = wrapReactNative(RawAdwViewSwitcherTitle);
|
|
58
|
-
export const AdwWindowTitle = wrapReactNative(RawAdwWindowTitle);
|
|
59
|
-
export const AdwWrapBox = wrapReactNative(RawAdwWrapBox);
|
|
60
|
-
export { AdwAboutWindow, // toplevel (
|
|
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
61
|
AdwActionRow, // child-only (derives Gtk.ListBoxRow)
|
|
62
|
-
AdwApplicationWindow, // toplevel (
|
|
62
|
+
AdwApplicationWindow, // toplevel (implements GtkRoot)
|
|
63
63
|
AdwButtonRow, // child-only (derives Gtk.ListBoxRow)
|
|
64
64
|
AdwComboRow, // child-only (derives Gtk.ListBoxRow)
|
|
65
65
|
AdwEntryRow, // child-only (derives Gtk.ListBoxRow)
|
|
66
66
|
AdwExpanderRow, // child-only (derives Gtk.ListBoxRow)
|
|
67
|
-
AdwMessageDialog, // toplevel (
|
|
67
|
+
AdwMessageDialog, // toplevel (implements GtkRoot)
|
|
68
68
|
AdwNavigationPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
|
|
69
69
|
AdwPasswordEntryRow, // child-only (derives Gtk.ListBoxRow)
|
|
70
70
|
AdwPreferencesPage, // child-only (denylist — see scripts/widget-surface/classify.ts)
|
|
71
71
|
AdwPreferencesRow, // child-only (derives Gtk.ListBoxRow)
|
|
72
|
-
AdwPreferencesWindow, // toplevel (
|
|
72
|
+
AdwPreferencesWindow, // toplevel (implements GtkRoot)
|
|
73
73
|
AdwSpinRow, // child-only (derives Gtk.ListBoxRow)
|
|
74
74
|
AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)
|
|
75
|
-
AdwWindow, // toplevel (
|
|
75
|
+
AdwWindow, // toplevel (implements GtkRoot)
|
|
76
76
|
} from "../gtkx/bridge/widgets.generated";
|
|
77
77
|
export const ADW_WRAPPED_WIDGET_NAMES = [
|
|
78
78
|
"AdwAboutDialog",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widgets.generated.js","sourceRoot":"","sources":["../../src/adw/widgets.generated.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,0EAA0E;AAC1E,sDAAsD;AACtD,yEAAyE;AACzE,6DAA6D;AAC7D,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,yDAAyD;AAEzD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EACL,cAAc,IAAI,iBAAiB,EACnC,cAAc,IAAI,iBAAiB,EACnC,SAAS,IAAI,YAAY,EACzB,SAAS,IAAI,YAAY,EACzB,MAAM,IAAI,SAAS,EACnB,cAAc,IAAI,iBAAiB,EACnC,gBAAgB,IAAI,mBAAmB,EACvC,gBAAgB,IAAI,mBAAmB,EACvC,WAAW,IAAI,cAAc,EAC7B,wBAAwB,IAAI,2BAA2B,EACvD,yBAAyB,IAAI,4BAA4B,EACzD,QAAQ,IAAI,WAAW,EACvB,kBAAkB,IAAI,qBAAqB,EAC3C,SAAS,IAAI,YAAY,EACzB,OAAO,IAAI,UAAU,EACrB,YAAY,IAAI,eAAe,EAC/B,qBAAqB,IAAI,wBAAwB,EACjD,aAAa,IAAI,gBAAgB,EACjC,UAAU,IAAI,aAAa,EAC3B,kBAAkB,IAAI,qBAAqB,EAC3C,sBAAsB,IAAI,yBAAyB,EACnD,iBAAiB,IAAI,oBAAoB,EACzC,mBAAmB,IAAI,sBAAsB,EAC7C,oBAAoB,IAAI,uBAAuB,EAC/C,mBAAmB,IAAI,sBAAsB,EAC7C,gBAAgB,IAAI,mBAAmB,EACvC,kBAAkB,IAAI,qBAAqB,EAC3C,UAAU,IAAI,aAAa,EAC3B,UAAU,IAAI,aAAa,EAC3B,cAAc,IAAI,iBAAiB,EACnC,WAAW,IAAI,cAAc,EAC7B,aAAa,IAAI,gBAAgB,EACjC,SAAS,IAAI,YAAY,EACzB,YAAY,IAAI,eAAe,EAC/B,cAAc,IAAI,iBAAiB,EACnC,UAAU,IAAI,aAAa,EAC3B,eAAe,IAAI,kBAAkB,EACrC,cAAc,IAAI,iBAAiB,EACnC,cAAc,IAAI,iBAAiB,EACnC,YAAY,IAAI,eAAe,EAC/B,eAAe,IAAI,kBAAkB,EACrC,kBAAkB,IAAI,qBAAqB,EAC3C,sBAAsB,IAAI,yBAAyB,EACnD,oBAAoB,IAAI,uBAAuB,EAC/C,cAAc,IAAI,iBAAiB,EACnC,UAAU,IAAI,aAAa,GAC5B,MAAM,kCAAkC,CAAA;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CACrD,2BAA2B,CAC5B,CAAA;AACD,MAAM,CAAC,MAAM,yBAAyB,GAAG,eAAe,CACtD,4BAA4B,CAC7B,CAAA;AACD,MAAM,CAAC,MAAM,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,wBAAwB,CAAC,CAAA;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAA;AAChF,MAAM,CAAC,MAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,CAAC,CAAA;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAA;AAC1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAAC,sBAAsB,CAAC,CAAA;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAA;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAA;AAC1D,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,SAAS,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,YAAY,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,CAAA;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,CAAC,CAAA;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,eAAe,CAAC,yBAAyB,CAAC,CAAA;AAChF,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC,uBAAuB,CAAC,CAAA;AAC5E,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC,iBAAiB,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC,aAAa,CAAC,CAAA;AAExD,OAAO,EACL,cAAc,EAAE,gCAAgC;AAChD,YAAY,EAAE,sCAAsC;AACpD,oBAAoB,EAAE,gCAAgC;AACtD,YAAY,EAAE,sCAAsC;AACpD,WAAW,EAAE,sCAAsC;AACnD,WAAW,EAAE,sCAAsC;AACnD,cAAc,EAAE,sCAAsC;AACtD,gBAAgB,EAAE,gCAAgC;AAClD,iBAAiB,EAAE,iEAAiE;AACpF,mBAAmB,EAAE,sCAAsC;AAC3D,kBAAkB,EAAE,iEAAiE;AACrF,iBAAiB,EAAE,sCAAsC;AACzD,oBAAoB,EAAE,gCAAgC;AACtD,UAAU,EAAE,sCAAsC;AAClD,YAAY,EAAE,sCAAsC;AACpD,SAAS,EAAE,gCAAgC;EAC5C,MAAM,kCAAkC,CAAA;AAEzC,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,gBAAgB;IAChB,gBAAgB;IAChB,WAAW;IACX,WAAW;IACX,QAAQ;IACR,gBAAgB;IAChB,kBAAkB;IAClB,kBAAkB;IAClB,aAAa;IACb,0BAA0B;IAC1B,2BAA2B;IAC3B,UAAU;IACV,oBAAoB;IACpB,WAAW;IACX,SAAS;IACT,cAAc;IACd,uBAAuB;IACvB,eAAe;IACf,YAAY;IACZ,oBAAoB;IACpB,wBAAwB;IACxB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;IAClB,oBAAoB;IACpB,YAAY;IACZ,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,WAAW;IACX,cAAc;IACd,gBAAgB;IAChB,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,oBAAoB;IACpB,wBAAwB;IACxB,sBAAsB;IACtB,gBAAgB;IAChB,YAAY;CACJ,CAAA","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(RawAdwAboutDialog)\nexport const AdwAlertDialog = wrapReactNative(RawAdwAlertDialog)\nexport const AdwAvatar = wrapReactNative(RawAdwAvatar)\nexport const AdwBanner = wrapReactNative(RawAdwBanner)\nexport const AdwBin = wrapReactNative(RawAdwBin)\nexport const AdwBottomSheet = wrapReactNative(RawAdwBottomSheet)\nexport const AdwBreakpointBin = wrapReactNative(RawAdwBreakpointBin)\nexport const AdwButtonContent = wrapReactNative(RawAdwButtonContent)\nexport const AdwCarousel = wrapReactNative(RawAdwCarousel)\nexport const AdwCarouselIndicatorDots = wrapReactNative(\n RawAdwCarouselIndicatorDots,\n)\nexport const AdwCarouselIndicatorLines = wrapReactNative(\n RawAdwCarouselIndicatorLines,\n)\nexport const AdwClamp = wrapReactNative(RawAdwClamp)\nexport const AdwClampScrollable = wrapReactNative(RawAdwClampScrollable)\nexport const AdwDialog = wrapReactNative(RawAdwDialog)\nexport const AdwFlap = wrapReactNative(RawAdwFlap)\nexport const AdwHeaderBar = wrapReactNative(RawAdwHeaderBar)\nexport const AdwInlineViewSwitcher = wrapReactNative(RawAdwInlineViewSwitcher)\nexport const AdwLayoutSlot = wrapReactNative(RawAdwLayoutSlot)\nexport const AdwLeaflet = wrapReactNative(RawAdwLeaflet)\nexport const AdwMultiLayoutView = wrapReactNative(RawAdwMultiLayoutView)\nexport const AdwNavigationSplitView = wrapReactNative(RawAdwNavigationSplitView)\nexport const AdwNavigationView = wrapReactNative(RawAdwNavigationView)\nexport const AdwOverlaySplitView = wrapReactNative(RawAdwOverlaySplitView)\nexport const AdwPreferencesDialog = wrapReactNative(RawAdwPreferencesDialog)\nexport const AdwPreferencesGroup = wrapReactNative(RawAdwPreferencesGroup)\nexport const AdwShortcutLabel = wrapReactNative(RawAdwShortcutLabel)\nexport const AdwShortcutsDialog = wrapReactNative(RawAdwShortcutsDialog)\nexport const AdwSidebar = wrapReactNative(RawAdwSidebar)\nexport const AdwSpinner = wrapReactNative(RawAdwSpinner)\nexport const AdwSplitButton = wrapReactNative(RawAdwSplitButton)\nexport const AdwSqueezer = wrapReactNative(RawAdwSqueezer)\nexport const AdwStatusPage = wrapReactNative(RawAdwStatusPage)\nexport const AdwTabBar = wrapReactNative(RawAdwTabBar)\nexport const AdwTabButton = wrapReactNative(RawAdwTabButton)\nexport const AdwTabOverview = wrapReactNative(RawAdwTabOverview)\nexport const AdwTabView = wrapReactNative(RawAdwTabView)\nexport const AdwToastOverlay = wrapReactNative(RawAdwToastOverlay)\nexport const AdwToggleGroup = wrapReactNative(RawAdwToggleGroup)\nexport const AdwToolbarView = wrapReactNative(RawAdwToolbarView)\nexport const AdwViewStack = wrapReactNative(RawAdwViewStack)\nexport const AdwViewSwitcher = wrapReactNative(RawAdwViewSwitcher)\nexport const AdwViewSwitcherBar = wrapReactNative(RawAdwViewSwitcherBar)\nexport const AdwViewSwitcherSidebar = wrapReactNative(RawAdwViewSwitcherSidebar)\nexport const AdwViewSwitcherTitle = wrapReactNative(RawAdwViewSwitcherTitle)\nexport const AdwWindowTitle = wrapReactNative(RawAdwWindowTitle)\nexport const AdwWrapBox = wrapReactNative(RawAdwWrapBox)\n\nexport {\n AdwAboutWindow, // toplevel (derives Gtk.Window)\n AdwActionRow, // child-only (derives Gtk.ListBoxRow)\n AdwApplicationWindow, // toplevel (derives Gtk.Window)\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 (derives Gtk.Window)\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 (derives Gtk.Window)\n AdwSpinRow, // child-only (derives Gtk.ListBoxRow)\n AdwSwitchRow, // child-only (derives Gtk.ListBoxRow)\n AdwWindow, // toplevel (derives Gtk.Window)\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
|
+
{"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;
|
|
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"]}
|
package/dist/animated/index.d.ts
CHANGED
|
@@ -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";
|
package/dist/animated/index.js
CHANGED
|
@@ -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"]}
|
package/dist/animated/value.d.ts
CHANGED
|
@@ -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 */
|
package/dist/animated/value.js
CHANGED
|
@@ -9,6 +9,12 @@ import { createInterpolator } from "./interpolate";
|
|
|
9
9
|
const numeric = (value) => typeof value === "number" ? value : parseFloat(value);
|
|
10
10
|
export class AnimatedValue {
|
|
11
11
|
_value;
|
|
12
|
+
// RN splits a value into an animated part and a static offset: a drag sets
|
|
13
|
+
// the offset to where the last gesture ended, so dx/dy can keep starting
|
|
14
|
+
// from zero. Everything observable is the SUM; the animation runner only
|
|
15
|
+
// ever drives `_value`, so an untouched offset (0) leaves behaviour
|
|
16
|
+
// byte-identical to before it existed.
|
|
17
|
+
_offset = 0;
|
|
12
18
|
_startingValue;
|
|
13
19
|
_listeners = new Map();
|
|
14
20
|
_nextListenerId = 1;
|
|
@@ -23,6 +29,23 @@ export class AnimatedValue {
|
|
|
23
29
|
this._animation?.stop();
|
|
24
30
|
this.__updateValue(value);
|
|
25
31
|
}
|
|
32
|
+
/** Sets the static part. The animated part is left where it is. */
|
|
33
|
+
setOffset(offset) {
|
|
34
|
+
this._offset = offset;
|
|
35
|
+
this.__notify();
|
|
36
|
+
}
|
|
37
|
+
/** Folds the offset into the value, leaving the sum unchanged. */
|
|
38
|
+
flattenOffset() {
|
|
39
|
+
this._value += this._offset;
|
|
40
|
+
this._offset = 0;
|
|
41
|
+
this.__notify();
|
|
42
|
+
}
|
|
43
|
+
/** The mirror of flattenOffset: moves the value into the offset. */
|
|
44
|
+
extractOffset() {
|
|
45
|
+
this._offset += this._value;
|
|
46
|
+
this._value = 0;
|
|
47
|
+
this.__notify();
|
|
48
|
+
}
|
|
26
49
|
addListener(listener) {
|
|
27
50
|
const id = String(this._nextListenerId++);
|
|
28
51
|
this._listeners.set(id, listener);
|
|
@@ -39,7 +62,7 @@ export class AnimatedValue {
|
|
|
39
62
|
// { finished: false }.
|
|
40
63
|
stopAnimation(callback) {
|
|
41
64
|
this._animation?.stop();
|
|
42
|
-
callback?.(this.
|
|
65
|
+
callback?.(this.__getValue());
|
|
43
66
|
}
|
|
44
67
|
// Stops any running animation, then snaps back to the construction-time
|
|
45
68
|
// value. Unlike RN we do notify listeners about the snap-back: the direct
|
|
@@ -53,11 +76,16 @@ export class AnimatedValue {
|
|
|
53
76
|
return new AnimatedInterpolation(this, config);
|
|
54
77
|
}
|
|
55
78
|
__getValue() {
|
|
56
|
-
return this._value;
|
|
79
|
+
return this._value + this._offset;
|
|
57
80
|
}
|
|
58
81
|
/** @internal Called by the animation runner on every frame. */
|
|
59
82
|
__updateValue(value) {
|
|
60
83
|
this._value = value;
|
|
84
|
+
this.__notify();
|
|
85
|
+
}
|
|
86
|
+
/** @internal Publishes the current sum to every listener. */
|
|
87
|
+
__notify() {
|
|
88
|
+
const value = this.__getValue();
|
|
61
89
|
for (const listener of [...this._listeners.values()]) {
|
|
62
90
|
listener({ value });
|
|
63
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/animated/value.ts"],"names":[],"mappings":"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","sourcesContent":["// Animated.Value and the read-only interpolation node. Values are observable\n// numbers; the animation runner (value-animation.ts) drives them frame by\n// frame through the __-prefixed internal hooks. Interpolation nodes subscribe\n// to their parent lazily (only while they have listeners themselves) and can\n// be interpolated again, cascading from the parent's numeric value.\n\nimport { createInterpolator } from \"./interpolate\"\nimport type {\n InterpolationConfig,\n InterpolationListener,\n ValueListener,\n} from \"./types\"\n\n// Internal handle a running animation registers on its value; the value calls\n// stop() to preempt it when a newer animation (or setValue) takes over — the\n// preempted animation ends with { finished: false }, matching RN.\nexport type AnimationHandle = { stop(): void }\n\n// Minimal parent protocol shared by AnimatedValue and AnimatedInterpolation,\n// enabling cascaded interpolate() chains over either kind of node.\ntype InterpolationParent = {\n __getValue(): number | string\n addListener(listener: InterpolationListener): string\n removeListener(id: string): void\n}\n\n// Cascading from a string-producing parent (\"45deg\") interpolates over its\n// numeric part.\nconst numeric = (value: number | string): number =>\n typeof value === \"number\" ? value : parseFloat(value)\n\nexport class AnimatedValue {\n private _value: number\n private readonly _startingValue: number\n private readonly _listeners = new Map<string, ValueListener>()\n private _nextListenerId = 1\n private _animation: AnimationHandle | null = null\n\n constructor(value: number) {\n this._value = value\n this._startingValue = value\n }\n\n // Stops the running animation (its callback gets { finished: false }, as in\n // RN) and jumps to the new value.\n setValue(value: number): void {\n this._animation?.stop()\n this.__updateValue(value)\n }\n\n addListener(listener: ValueListener): string {\n const id = String(this._nextListenerId++)\n this._listeners.set(id, listener)\n return id\n }\n\n removeListener(id: string): void {\n this._listeners.delete(id)\n }\n\n removeAllListeners(): void {\n this._listeners.clear()\n }\n\n // Stops the running animation where it stands and reports the current value\n // to the callback. The stopped animation's own callback gets\n // { finished: false }.\n stopAnimation(callback?: (value: number) => void): void {\n this._animation?.stop()\n callback?.(this._value)\n }\n\n // Stops any running animation, then snaps back to the construction-time\n // value. Unlike RN we do notify listeners about the snap-back: the direct\n // GTK path renders from listener events, so a silent reset would leave\n // widgets stale until the next animation frame.\n resetAnimation(callback?: (value: number) => void): void {\n this.stopAnimation(callback)\n this.__updateValue(this._startingValue)\n }\n\n interpolate(config: InterpolationConfig): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config)\n }\n\n __getValue(): number {\n return this._value\n }\n\n /** @internal Called by the animation runner on every frame. */\n __updateValue(value: number): void {\n this._value = value\n for (const listener of [...this._listeners.values()]) {\n listener({ value })\n }\n }\n\n /** @internal Registers a running animation, preempting the previous one. */\n __startAnimation(handle: AnimationHandle): void {\n const previous = this._animation\n this._animation = handle\n if (previous && previous !== handle) {\n previous.stop()\n }\n }\n\n /** @internal */\n __endAnimation(handle: AnimationHandle): void {\n if (this._animation === handle) {\n this._animation = null\n }\n }\n}\n\nexport class AnimatedInterpolation {\n private readonly _parent: InterpolationParent\n private readonly _interpolator: (input: number) => number | string\n private readonly _listeners = new Map<string, InterpolationListener>()\n private _nextListenerId = 1\n private _parentSubscription: string | null = null\n\n constructor(parent: InterpolationParent, config: InterpolationConfig) {\n this._parent = parent\n this._interpolator = createInterpolator(config)\n }\n\n __getValue(): number | string {\n return this._interpolator(numeric(this._parent.__getValue()))\n }\n\n addListener(listener: InterpolationListener): string {\n const id = String(this._nextListenerId++)\n this._listeners.set(id, listener)\n if (this._parentSubscription === null) {\n // Lazy upstream subscription (same leak policy as the API emitters):\n // attach with the first listener, detach with the last one.\n this._parentSubscription = this._parent.addListener(({ value }) => {\n const output = this._interpolator(numeric(value))\n for (const entry of [...this._listeners.values()]) {\n entry({ value: output })\n }\n })\n }\n return id\n }\n\n removeListener(id: string): void {\n if (!this._listeners.delete(id)) {\n return\n }\n if (this._listeners.size === 0) {\n this._detachFromParent()\n }\n }\n\n removeAllListeners(): void {\n this._listeners.clear()\n this._detachFromParent()\n }\n\n interpolate(config: InterpolationConfig): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config)\n }\n\n private _detachFromParent(): void {\n if (this._parentSubscription !== null) {\n this._parent.removeListener(this._parentSubscription)\n this._parentSubscription = null\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"value.js","sourceRoot":"","sources":["../../src/animated/value.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,oEAAoE;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAoBlD,2EAA2E;AAC3E,gBAAgB;AAChB,MAAM,OAAO,GAAG,CAAC,KAAsB,EAAU,EAAE,CACjD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;AAEvD,MAAM,OAAO,aAAa;IAChB,MAAM,CAAQ;IACtB,2EAA2E;IAC3E,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,uCAAuC;IAC/B,OAAO,GAAG,CAAC,CAAA;IACF,cAAc,CAAQ;IACtB,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAA;IACtD,eAAe,GAAG,CAAC,CAAA;IACnB,UAAU,GAA2B,IAAI,CAAA;IAEjD,YAAY,KAAa;QACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAA;IAC7B,CAAC;IAED,4EAA4E;IAC5E,kCAAkC;IAClC,QAAQ,CAAC,KAAa;QACpB,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,mEAAmE;IACnE,SAAS,CAAC,MAAc;QACtB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,kEAAkE;IAClE,aAAa;QACX,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAA;QAC3B,IAAI,CAAC,OAAO,GAAG,CAAC,CAAA;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,oEAAoE;IACpE,aAAa;QACX,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAA;QAC3B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAA;QACf,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,WAAW,CAAC,QAAuB;QACjC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;IAED,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC5B,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;IAED,4EAA4E;IAC5E,6DAA6D;IAC7D,uBAAuB;IACvB,aAAa,CAAC,QAAkC;QAC9C,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;QACvB,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/B,CAAC;IAED,wEAAwE;IACxE,0EAA0E;IAC1E,uEAAuE;IACvE,gDAAgD;IAChD,cAAc,CAAC,QAAkC;QAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACzC,CAAC;IAED,WAAW,CAAC,MAA2B;QACrC,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAA;IACnC,CAAC;IAED,+DAA+D;IAC/D,aAAa,CAAC,KAAa;QACzB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,EAAE,CAAA;IACjB,CAAC;IAED,6DAA6D;IACrD,QAAQ;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC/B,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;QACrB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,gBAAgB,CAAC,MAAuB;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAA;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAA;QACxB,IAAI,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,cAAc,CAAC,MAAuB;QACpC,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,qBAAqB;IACf,OAAO,CAAqB;IAC5B,aAAa,CAAoC;IACjD,UAAU,GAAG,IAAI,GAAG,EAAiC,CAAA;IAC9D,eAAe,GAAG,CAAC,CAAA;IACnB,mBAAmB,GAAkB,IAAI,CAAA;IAEjD,YAAY,MAA2B,EAAE,MAA2B;QAClE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,WAAW,CAAC,QAA+B;QACzC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;QACjC,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,qEAAqE;YACrE,4DAA4D;YAC5D,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBAChE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;gBACjD,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;oBAClD,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAA;gBAC1B,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,EAAE,CAAA;IACX,CAAC;IAED,cAAc,CAAC,EAAU;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAM;QACR,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;QACvB,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC1B,CAAC;IAED,WAAW,CAAC,MAA2B;QACrC,OAAO,IAAI,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAChD,CAAC;IAEO,iBAAiB;QACvB,IAAI,IAAI,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;YACrD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAA;QACjC,CAAC;IACH,CAAC;CACF","sourcesContent":["// Animated.Value and the read-only interpolation node. Values are observable\n// numbers; the animation runner (value-animation.ts) drives them frame by\n// frame through the __-prefixed internal hooks. Interpolation nodes subscribe\n// to their parent lazily (only while they have listeners themselves) and can\n// be interpolated again, cascading from the parent's numeric value.\n\nimport { createInterpolator } from \"./interpolate\"\nimport type {\n InterpolationConfig,\n InterpolationListener,\n ValueListener,\n} from \"./types\"\n\n// Internal handle a running animation registers on its value; the value calls\n// stop() to preempt it when a newer animation (or setValue) takes over — the\n// preempted animation ends with { finished: false }, matching RN.\nexport type AnimationHandle = { stop(): void }\n\n// Minimal parent protocol shared by AnimatedValue and AnimatedInterpolation,\n// enabling cascaded interpolate() chains over either kind of node.\ntype InterpolationParent = {\n __getValue(): number | string\n addListener(listener: InterpolationListener): string\n removeListener(id: string): void\n}\n\n// Cascading from a string-producing parent (\"45deg\") interpolates over its\n// numeric part.\nconst numeric = (value: number | string): number =>\n typeof value === \"number\" ? value : parseFloat(value)\n\nexport class AnimatedValue {\n private _value: number\n // RN splits a value into an animated part and a static offset: a drag sets\n // the offset to where the last gesture ended, so dx/dy can keep starting\n // from zero. Everything observable is the SUM; the animation runner only\n // ever drives `_value`, so an untouched offset (0) leaves behaviour\n // byte-identical to before it existed.\n private _offset = 0\n private readonly _startingValue: number\n private readonly _listeners = new Map<string, ValueListener>()\n private _nextListenerId = 1\n private _animation: AnimationHandle | null = null\n\n constructor(value: number) {\n this._value = value\n this._startingValue = value\n }\n\n // Stops the running animation (its callback gets { finished: false }, as in\n // RN) and jumps to the new value.\n setValue(value: number): void {\n this._animation?.stop()\n this.__updateValue(value)\n }\n\n /** Sets the static part. The animated part is left where it is. */\n setOffset(offset: number): void {\n this._offset = offset\n this.__notify()\n }\n\n /** Folds the offset into the value, leaving the sum unchanged. */\n flattenOffset(): void {\n this._value += this._offset\n this._offset = 0\n this.__notify()\n }\n\n /** The mirror of flattenOffset: moves the value into the offset. */\n extractOffset(): void {\n this._offset += this._value\n this._value = 0\n this.__notify()\n }\n\n addListener(listener: ValueListener): string {\n const id = String(this._nextListenerId++)\n this._listeners.set(id, listener)\n return id\n }\n\n removeListener(id: string): void {\n this._listeners.delete(id)\n }\n\n removeAllListeners(): void {\n this._listeners.clear()\n }\n\n // Stops the running animation where it stands and reports the current value\n // to the callback. The stopped animation's own callback gets\n // { finished: false }.\n stopAnimation(callback?: (value: number) => void): void {\n this._animation?.stop()\n callback?.(this.__getValue())\n }\n\n // Stops any running animation, then snaps back to the construction-time\n // value. Unlike RN we do notify listeners about the snap-back: the direct\n // GTK path renders from listener events, so a silent reset would leave\n // widgets stale until the next animation frame.\n resetAnimation(callback?: (value: number) => void): void {\n this.stopAnimation(callback)\n this.__updateValue(this._startingValue)\n }\n\n interpolate(config: InterpolationConfig): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config)\n }\n\n __getValue(): number {\n return this._value + this._offset\n }\n\n /** @internal Called by the animation runner on every frame. */\n __updateValue(value: number): void {\n this._value = value\n this.__notify()\n }\n\n /** @internal Publishes the current sum to every listener. */\n private __notify(): void {\n const value = this.__getValue()\n for (const listener of [...this._listeners.values()]) {\n listener({ value })\n }\n }\n\n /** @internal Registers a running animation, preempting the previous one. */\n __startAnimation(handle: AnimationHandle): void {\n const previous = this._animation\n this._animation = handle\n if (previous && previous !== handle) {\n previous.stop()\n }\n }\n\n /** @internal */\n __endAnimation(handle: AnimationHandle): void {\n if (this._animation === handle) {\n this._animation = null\n }\n }\n}\n\nexport class AnimatedInterpolation {\n private readonly _parent: InterpolationParent\n private readonly _interpolator: (input: number) => number | string\n private readonly _listeners = new Map<string, InterpolationListener>()\n private _nextListenerId = 1\n private _parentSubscription: string | null = null\n\n constructor(parent: InterpolationParent, config: InterpolationConfig) {\n this._parent = parent\n this._interpolator = createInterpolator(config)\n }\n\n __getValue(): number | string {\n return this._interpolator(numeric(this._parent.__getValue()))\n }\n\n addListener(listener: InterpolationListener): string {\n const id = String(this._nextListenerId++)\n this._listeners.set(id, listener)\n if (this._parentSubscription === null) {\n // Lazy upstream subscription (same leak policy as the API emitters):\n // attach with the first listener, detach with the last one.\n this._parentSubscription = this._parent.addListener(({ value }) => {\n const output = this._interpolator(numeric(value))\n for (const entry of [...this._listeners.values()]) {\n entry({ value: output })\n }\n })\n }\n return id\n }\n\n removeListener(id: string): void {\n if (!this._listeners.delete(id)) {\n return\n }\n if (this._listeners.size === 0) {\n this._detachFromParent()\n }\n }\n\n removeAllListeners(): void {\n this._listeners.clear()\n this._detachFromParent()\n }\n\n interpolate(config: InterpolationConfig): AnimatedInterpolation {\n return new AnimatedInterpolation(this, config)\n }\n\n private _detachFromParent(): void {\n if (this._parentSubscription !== null) {\n this._parent.removeListener(this._parentSubscription)\n this._parentSubscription = null\n }\n }\n}\n"]}
|