@ghia/react 0.0.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/LICENSE +201 -0
  2. package/dist/automation/client.d.ts +2 -0
  3. package/dist/automation/client.d.ts.map +1 -0
  4. package/dist/automation/client.js +2 -0
  5. package/dist/automation/client.js.map +1 -0
  6. package/dist/automation/index.d.ts +2 -0
  7. package/dist/automation/index.d.ts.map +1 -0
  8. package/dist/automation/index.js +2 -0
  9. package/dist/automation/index.js.map +1 -0
  10. package/dist/automation/protocol.d.ts +2 -0
  11. package/dist/automation/protocol.d.ts.map +1 -0
  12. package/dist/automation/protocol.js +2 -0
  13. package/dist/automation/protocol.js.map +1 -0
  14. package/dist/components/animate-presence.d.ts +35 -0
  15. package/dist/components/animate-presence.d.ts.map +1 -0
  16. package/dist/components/animate-presence.js +184 -0
  17. package/dist/components/animate-presence.js.map +1 -0
  18. package/dist/components/button.d.ts +32 -0
  19. package/dist/components/button.d.ts.map +1 -0
  20. package/dist/components/button.js +62 -0
  21. package/dist/components/button.js.map +1 -0
  22. package/dist/components/combobox.d.ts +63 -0
  23. package/dist/components/combobox.d.ts.map +1 -0
  24. package/dist/components/combobox.js +279 -0
  25. package/dist/components/combobox.js.map +1 -0
  26. package/dist/components/dialog.d.ts +49 -0
  27. package/dist/components/dialog.d.ts.map +1 -0
  28. package/dist/components/dialog.js +157 -0
  29. package/dist/components/dialog.js.map +1 -0
  30. package/dist/components/floating.d.ts +54 -0
  31. package/dist/components/floating.d.ts.map +1 -0
  32. package/dist/components/floating.js +199 -0
  33. package/dist/components/floating.js.map +1 -0
  34. package/dist/components/index.d.ts +135 -0
  35. package/dist/components/index.d.ts.map +1 -0
  36. package/dist/components/index.js +190 -0
  37. package/dist/components/index.js.map +1 -0
  38. package/dist/components/layout-group.d.ts +10 -0
  39. package/dist/components/layout-group.d.ts.map +1 -0
  40. package/dist/components/layout-group.js +10 -0
  41. package/dist/components/layout-group.js.map +1 -0
  42. package/dist/components/motion-config.d.ts +24 -0
  43. package/dist/components/motion-config.d.ts.map +1 -0
  44. package/dist/components/motion-config.js +31 -0
  45. package/dist/components/motion-config.js.map +1 -0
  46. package/dist/components/reorder.d.ts +44 -0
  47. package/dist/components/reorder.d.ts.map +1 -0
  48. package/dist/components/reorder.js +123 -0
  49. package/dist/components/reorder.js.map +1 -0
  50. package/dist/components/select.d.ts +61 -0
  51. package/dist/components/select.d.ts.map +1 -0
  52. package/dist/components/select.js +267 -0
  53. package/dist/components/select.js.map +1 -0
  54. package/dist/components/tooltip.d.ts +30 -0
  55. package/dist/components/tooltip.d.ts.map +1 -0
  56. package/dist/components/tooltip.js +138 -0
  57. package/dist/components/tooltip.js.map +1 -0
  58. package/dist/components/universal-style.d.ts +12 -0
  59. package/dist/components/universal-style.d.ts.map +1 -0
  60. package/dist/components/universal-style.js +45 -0
  61. package/dist/components/universal-style.js.map +1 -0
  62. package/dist/components/variant-context.d.ts +4 -0
  63. package/dist/components/variant-context.d.ts.map +1 -0
  64. package/dist/components/variant-context.js +4 -0
  65. package/dist/components/variant-context.js.map +1 -0
  66. package/dist/cpu-throttle.d.ts +3 -0
  67. package/dist/cpu-throttle.d.ts.map +1 -0
  68. package/dist/cpu-throttle.js +2 -0
  69. package/dist/cpu-throttle.js.map +1 -0
  70. package/dist/floating.d.ts +4 -0
  71. package/dist/floating.d.ts.map +1 -0
  72. package/dist/floating.js +3 -0
  73. package/dist/floating.js.map +1 -0
  74. package/dist/hooks/index.d.ts +6 -0
  75. package/dist/hooks/index.d.ts.map +1 -0
  76. package/dist/hooks/index.js +6 -0
  77. package/dist/hooks/index.js.map +1 -0
  78. package/dist/hooks/use-gpuix.d.ts +17 -0
  79. package/dist/hooks/use-gpuix.d.ts.map +1 -0
  80. package/dist/hooks/use-gpuix.js +22 -0
  81. package/dist/hooks/use-gpuix.js.map +1 -0
  82. package/dist/hooks/use-media-query.d.ts +15 -0
  83. package/dist/hooks/use-media-query.d.ts.map +1 -0
  84. package/dist/hooks/use-media-query.js +30 -0
  85. package/dist/hooks/use-media-query.js.map +1 -0
  86. package/dist/hooks/use-motion-value.d.ts +31 -0
  87. package/dist/hooks/use-motion-value.d.ts.map +1 -0
  88. package/dist/hooks/use-motion-value.js +105 -0
  89. package/dist/hooks/use-motion-value.js.map +1 -0
  90. package/dist/hooks/use-text-search.d.ts +16 -0
  91. package/dist/hooks/use-text-search.d.ts.map +1 -0
  92. package/dist/hooks/use-text-search.js +17 -0
  93. package/dist/hooks/use-text-search.js.map +1 -0
  94. package/dist/hooks/use-window-size.d.ts +11 -0
  95. package/dist/hooks/use-window-size.d.ts.map +1 -0
  96. package/dist/hooks/use-window-size.js +20 -0
  97. package/dist/hooks/use-window-size.js.map +1 -0
  98. package/dist/idle-gc.d.ts +3 -0
  99. package/dist/idle-gc.d.ts.map +1 -0
  100. package/dist/idle-gc.js +2 -0
  101. package/dist/idle-gc.js.map +1 -0
  102. package/dist/index.d.ts +47 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +28 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/reconciler/event-registry.d.ts +10 -0
  107. package/dist/reconciler/event-registry.d.ts.map +1 -0
  108. package/dist/reconciler/event-registry.js +32 -0
  109. package/dist/reconciler/event-registry.js.map +1 -0
  110. package/dist/reconciler/host-config.d.ts +68 -0
  111. package/dist/reconciler/host-config.d.ts.map +1 -0
  112. package/dist/reconciler/host-config.js +539 -0
  113. package/dist/reconciler/host-config.js.map +1 -0
  114. package/dist/reconciler/index.d.ts +3 -0
  115. package/dist/reconciler/index.d.ts.map +1 -0
  116. package/dist/reconciler/index.js +3 -0
  117. package/dist/reconciler/index.js.map +1 -0
  118. package/dist/reconciler/motion-bindings.d.ts +5 -0
  119. package/dist/reconciler/motion-bindings.d.ts.map +1 -0
  120. package/dist/reconciler/motion-bindings.js +10 -0
  121. package/dist/reconciler/motion-bindings.js.map +1 -0
  122. package/dist/reconciler/portal.d.ts +24 -0
  123. package/dist/reconciler/portal.d.ts.map +1 -0
  124. package/dist/reconciler/portal.js +32 -0
  125. package/dist/reconciler/portal.js.map +1 -0
  126. package/dist/reconciler/reconciler.d.ts +14 -0
  127. package/dist/reconciler/reconciler.d.ts.map +1 -0
  128. package/dist/reconciler/reconciler.js +126 -0
  129. package/dist/reconciler/reconciler.js.map +1 -0
  130. package/dist/reconciler/renderer.d.ts +42 -0
  131. package/dist/reconciler/renderer.d.ts.map +1 -0
  132. package/dist/reconciler/renderer.js +320 -0
  133. package/dist/reconciler/renderer.js.map +1 -0
  134. package/dist/testing.d.ts +14 -0
  135. package/dist/testing.d.ts.map +1 -0
  136. package/dist/testing.js +43 -0
  137. package/dist/testing.js.map +1 -0
  138. package/dist/types/host.d.ts +215 -0
  139. package/dist/types/host.d.ts.map +1 -0
  140. package/dist/types/host.js +3 -0
  141. package/dist/types/host.js.map +1 -0
  142. package/dist/types/index.d.ts +2 -0
  143. package/dist/types/index.d.ts.map +1 -0
  144. package/dist/types/index.js +2 -0
  145. package/dist/types/index.js.map +1 -0
  146. package/jsx-dev-runtime.d.ts +143 -0
  147. package/jsx-dev-runtime.js +3 -0
  148. package/jsx-runtime.d.ts +145 -0
  149. package/jsx-runtime.js +1 -0
  150. package/package.json +104 -4
@@ -0,0 +1,30 @@
1
+ /** Headless shadcn-shaped Tooltip components over GPUIX anchored layers. */
2
+ import React from "react";
3
+ import type { ReactElement, ReactNode } from "react";
4
+ import type { Props, PublicInstance } from "../types/host.js";
5
+ import type { FloatingContentProps } from "./floating.js";
6
+ export interface TooltipProviderProps {
7
+ children: ReactNode;
8
+ delayDuration?: number;
9
+ skipDelayDuration?: number;
10
+ disableHoverableContent?: boolean;
11
+ }
12
+ export declare function TooltipProvider({ children, delayDuration, skipDelayDuration, disableHoverableContent, }: TooltipProviderProps): ReactElement;
13
+ export interface TooltipProps extends Omit<Props, "children"> {
14
+ children?: ReactNode;
15
+ open?: boolean;
16
+ defaultOpen?: boolean;
17
+ onOpenChange?: (open: boolean) => void;
18
+ delayDuration?: number;
19
+ disableHoverableContent?: boolean;
20
+ }
21
+ export declare function Tooltip({ children, open: openProp, defaultOpen, onOpenChange, delayDuration, disableHoverableContent, style, ...props }: TooltipProps): ReactElement;
22
+ export interface TooltipTriggerProps extends Props {
23
+ asChild?: boolean;
24
+ }
25
+ export declare const TooltipTrigger: React.ForwardRefExoticComponent<Omit<TooltipTriggerProps, "ref"> & React.RefAttributes<PublicInstance>>;
26
+ export interface TooltipContentProps extends FloatingContentProps {
27
+ }
28
+ export declare const TooltipContent: React.ForwardRefExoticComponent<Omit<TooltipContentProps, "ref"> & React.RefAttributes<PublicInstance>>;
29
+ export { Tooltip as Root, TooltipContent as Content, TooltipProvider as Provider, TooltipTrigger as Trigger, };
30
+ //# sourceMappingURL=tooltip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.d.ts","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"AAAA,4EAA4E;AAE5E,OAAO,KAON,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAQ7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAkBzD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,SAAS,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,aAAiB,EACjB,iBAAuB,EACvB,uBAA+B,GAChC,EAAE,oBAAoB,GAAG,YAAY,CAOrC;AAoBD,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3D,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,uBAAuB,CAAC,EAAE,OAAO,CAAA;CAClC;AAED,wBAAgB,OAAO,CAAC,EACtB,QAAQ,EACR,IAAI,EAAE,QAAQ,EACd,WAAmB,EACnB,YAAY,EACZ,aAAa,EACb,uBAAuB,EACvB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,YAAY,GAAG,YAAY,CAoE7B;AAED,MAAM,WAAW,mBAAoB,SAAQ,KAAK;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,cAAc,yGAkD1B,CAAA;AAED,MAAM,WAAW,mBAAoB,SAAQ,oBAAoB;CAAG;AAEpE,eAAO,MAAM,cAAc,yGA6B1B,CAAA;AAED,OAAO,EACL,OAAO,IAAI,IAAI,EACf,cAAc,IAAI,OAAO,EACzB,eAAe,IAAI,QAAQ,EAC3B,cAAc,IAAI,OAAO,GAC1B,CAAA"}
@@ -0,0 +1,138 @@
1
+ import { jsx as _jsx } from "@ghia/react/jsx-runtime";
2
+ /** Headless shadcn-shaped Tooltip components over GPUIX anchored layers. */
3
+ import React, { createContext, forwardRef, useContext, useEffect, useMemo, useRef, } from "react";
4
+ import { FloatingLayer, floatingRootStyle, renderSlot, useControllableState, DismissableLayer, } from "./floating.js";
5
+ const defaultProvider = {
6
+ delayDuration: 0,
7
+ skipDelayDuration: 300,
8
+ disableHoverableContent: false,
9
+ lastClosedAt: { current: Number.NEGATIVE_INFINITY },
10
+ };
11
+ const TooltipProviderContext = createContext(defaultProvider);
12
+ export function TooltipProvider({ children, delayDuration = 0, skipDelayDuration = 300, disableHoverableContent = false, }) {
13
+ const lastClosedAt = useRef(Number.NEGATIVE_INFINITY);
14
+ const value = useMemo(() => ({ delayDuration, skipDelayDuration, disableHoverableContent, lastClosedAt }), [delayDuration, skipDelayDuration, disableHoverableContent]);
15
+ return _jsx(TooltipProviderContext.Provider, { value: value, children: children });
16
+ }
17
+ const TooltipContext = createContext(null);
18
+ function useTooltipContext(name) {
19
+ const context = useContext(TooltipContext);
20
+ if (!context)
21
+ throw new Error(`${name} must be used inside Tooltip`);
22
+ return context;
23
+ }
24
+ export function Tooltip({ children, open: openProp, defaultOpen = false, onOpenChange, delayDuration, disableHoverableContent, style, ...props }) {
25
+ const provider = useContext(TooltipProviderContext);
26
+ const [open, setOpenState] = useControllableState({
27
+ value: openProp,
28
+ defaultValue: defaultOpen,
29
+ onChange: onOpenChange,
30
+ });
31
+ const openTimer = useRef(null);
32
+ const closeTimer = useRef(null);
33
+ const hoverableDisabled = disableHoverableContent ?? provider.disableHoverableContent;
34
+ const cancelOpen = () => {
35
+ if (openTimer.current !== null)
36
+ clearTimeout(openTimer.current);
37
+ openTimer.current = null;
38
+ };
39
+ const cancelClose = () => {
40
+ if (closeTimer.current !== null)
41
+ clearTimeout(closeTimer.current);
42
+ closeTimer.current = null;
43
+ };
44
+ const setOpen = (nextOpen) => {
45
+ cancelOpen();
46
+ cancelClose();
47
+ setOpenState(nextOpen);
48
+ if (!nextOpen)
49
+ provider.lastClosedAt.current = Date.now();
50
+ };
51
+ const openImmediately = () => setOpen(true);
52
+ const scheduleOpen = () => {
53
+ cancelClose();
54
+ const recentlyClosed = Date.now() - provider.lastClosedAt.current <= provider.skipDelayDuration;
55
+ const delay = recentlyClosed ? 0 : (delayDuration ?? provider.delayDuration);
56
+ if (delay <= 0) {
57
+ setOpen(true);
58
+ return;
59
+ }
60
+ cancelOpen();
61
+ openTimer.current = setTimeout(() => setOpen(true), delay);
62
+ };
63
+ const close = () => setOpen(false);
64
+ const scheduleClose = () => {
65
+ cancelOpen();
66
+ if (hoverableDisabled) {
67
+ close();
68
+ return;
69
+ }
70
+ cancelClose();
71
+ closeTimer.current = setTimeout(close, 80);
72
+ };
73
+ useEffect(() => () => {
74
+ cancelOpen();
75
+ cancelClose();
76
+ }, []);
77
+ const context = {
78
+ open,
79
+ disableHoverableContent: hoverableDisabled,
80
+ openImmediately,
81
+ scheduleOpen,
82
+ scheduleClose,
83
+ cancelClose,
84
+ close,
85
+ };
86
+ return (_jsx(TooltipContext.Provider, { value: context, children: _jsx("div", { ...props, style: floatingRootStyle(style), children: children }) }));
87
+ }
88
+ export const TooltipTrigger = forwardRef(function TooltipTrigger({ asChild, children, onMouseEnter, onMouseLeave, onMouseDown, onClick, onFocus, onBlur, ...props }, ref) {
89
+ const context = useTooltipContext("TooltipTrigger");
90
+ return renderSlot({
91
+ asChild,
92
+ children,
93
+ props: {
94
+ ...props,
95
+ onMouseEnter: (event) => {
96
+ onMouseEnter?.(event);
97
+ context.scheduleOpen();
98
+ },
99
+ onMouseLeave: (event) => {
100
+ onMouseLeave?.(event);
101
+ context.scheduleClose();
102
+ },
103
+ onMouseDown: (event) => {
104
+ onMouseDown?.(event);
105
+ context.close();
106
+ },
107
+ onClick: (event) => {
108
+ onClick?.(event);
109
+ context.close();
110
+ },
111
+ onFocus: (event) => {
112
+ onFocus?.(event);
113
+ context.openImmediately();
114
+ },
115
+ onBlur: (event) => {
116
+ onBlur?.(event);
117
+ context.close();
118
+ },
119
+ },
120
+ ref,
121
+ defaultTabIndex: 0,
122
+ });
123
+ });
124
+ export const TooltipContent = forwardRef(function TooltipContent({ children, side = "top", align = "center", sideOffset = 0, onMouseEnter, onMouseLeave, ...props }, ref) {
125
+ const context = useTooltipContext("TooltipContent");
126
+ if (!context.open)
127
+ return null;
128
+ return (_jsx(DismissableLayer, { onEscapeKeyDown: context.close, children: _jsx(FloatingLayer, { ...props, ref: ref, side: side, align: align, sideOffset: sideOffset, onMouseEnter: (event) => {
129
+ onMouseEnter?.(event);
130
+ if (!context.disableHoverableContent)
131
+ context.cancelClose();
132
+ }, onMouseLeave: (event) => {
133
+ onMouseLeave?.(event);
134
+ context.scheduleClose();
135
+ }, children: children }) }));
136
+ });
137
+ export { Tooltip as Root, TooltipContent as Content, TooltipProvider as Provider, TooltipTrigger as Trigger, };
138
+ //# sourceMappingURL=tooltip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooltip.js","sourceRoot":"","sources":["../../src/components/tooltip.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { StyleDesc } from "@ghia/native/host";
2
+ export interface UniversalStyleProps {
3
+ style: StyleDesc;
4
+ }
5
+ /**
6
+ * Renders nothing. Puts `style` under every element's own style while mounted,
7
+ * as a CSS `* { ... }` rule would: the lowest precedence, so an element's own
8
+ * style and state styles win per property. Several mounted at once are spread
9
+ * over each other, later ones winning, and unmounting one leaves the others.
10
+ */
11
+ export declare function UniversalStyle(props: UniversalStyleProps): null;
12
+ //# sourceMappingURL=universal-style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-style.d.ts","sourceRoot":"","sources":["../../src/components/universal-style.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,mBAAmB,CAAA;AAGvE,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,SAAS,CAAA;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,CAoC/D"}
@@ -0,0 +1,45 @@
1
+ import { useLayoutEffect, useRef } from "react";
2
+ import { pushUniversalStyle } from "@ghia/native/host";
3
+ import { useGpuix } from "../hooks/use-gpuix.js";
4
+ /**
5
+ * Renders nothing. Puts `style` under every element's own style while mounted,
6
+ * as a CSS `* { ... }` rule would: the lowest precedence, so an element's own
7
+ * style and state styles win per property. Several mounted at once are spread
8
+ * over each other, later ones winning, and unmounting one leaves the others.
9
+ */
10
+ export function UniversalStyle(props) {
11
+ const gpuix = useGpuix();
12
+ const renderer = gpuix.renderer;
13
+ const mutations = gpuix.mutations;
14
+ if (!renderer || !mutations) {
15
+ throw new Error("UniversalStyle must be used inside a GPUIX root");
16
+ }
17
+ const entry = useRef(null);
18
+ // Native only sees a batch that is flushed, and a layout effect runs after the
19
+ // commit's own flush.
20
+ useLayoutEffect(() => {
21
+ const mounted = pushUniversalStyle(renderer, mutations, props.style);
22
+ entry.current = mounted;
23
+ const unmount = () => {
24
+ entry.current = null;
25
+ mounted.remove();
26
+ mutations.flushMutations();
27
+ };
28
+ try {
29
+ mutations.flushMutations();
30
+ }
31
+ catch (error) {
32
+ // React runs no cleanup for an effect that threw, and native rejected the style.
33
+ entry.current = null;
34
+ mounted.remove();
35
+ throw error;
36
+ }
37
+ return unmount;
38
+ }, [renderer, mutations]);
39
+ useLayoutEffect(() => {
40
+ entry.current?.update(props.style);
41
+ mutations.flushMutations();
42
+ }, [props.style]);
43
+ return null;
44
+ }
45
+ //# sourceMappingURL=universal-style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"universal-style.js","sourceRoot":"","sources":["../../src/components/universal-style.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAMhD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAA;IACjC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAA6B,IAAI,CAAC,CAAA;IAEtD,+EAA+E;IAC/E,sBAAsB;IACtB,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACpE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAA;QACvB,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;YACpB,OAAO,CAAC,MAAM,EAAE,CAAA;YAChB,SAAS,CAAC,cAAc,EAAE,CAAA;QAC5B,CAAC,CAAA;QACD,IAAI,CAAC;YACH,SAAS,CAAC,cAAc,EAAE,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iFAAiF;YACjF,KAAK,CAAC,OAAO,GAAG,IAAI,CAAA;YACpB,OAAO,CAAC,MAAM,EAAE,CAAA;YAChB,MAAM,KAAK,CAAA;QACb,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAA;IAEzB,eAAe,CAAC,GAAG,EAAE;QACnB,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAClC,SAAS,CAAC,cAAc,EAAE,CAAA;IAC5B,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAEjB,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { MotionVariantContext } from "@ghia/native/host";
2
+ /** The variant names the nearest `motion.*` that controls variants hands down. */
3
+ export declare const VariantContext: import("react").Context<MotionVariantContext | undefined>;
4
+ //# sourceMappingURL=variant-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-context.d.ts","sourceRoot":"","sources":["../../src/components/variant-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAE7D,kFAAkF;AAClF,eAAO,MAAM,cAAc,2DAA6D,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { createContext } from "react";
2
+ /** The variant names the nearest `motion.*` that controls variants hands down. */
3
+ export const VariantContext = createContext(undefined);
4
+ //# sourceMappingURL=variant-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"variant-context.js","sourceRoot":"","sources":["../../src/components/variant-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGrC,kFAAkF;AAClF,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CAAmC,SAAS,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ export { applyMacCpuThrottleFromEnv, MAC_CPU_THROTTLES, readMacCpuThrottle, } from "@ghia/native/cpu-throttle";
2
+ export type { MacCpuThrottle } from "@ghia/native/cpu-throttle";
3
+ //# sourceMappingURL=cpu-throttle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpu-throttle.d.ts","sourceRoot":"","sources":["../src/cpu-throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,2 @@
1
+ export { applyMacCpuThrottleFromEnv, MAC_CPU_THROTTLES, readMacCpuThrottle, } from "@ghia/native/cpu-throttle";
2
+ //# sourceMappingURL=cpu-throttle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpu-throttle.js","sourceRoot":"","sources":["../src/cpu-throttle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,4 @@
1
+ /** Public helpers for headless floating layers. */
2
+ export { FloatingLayer, floatingRootStyle, mergeStyles, renderSlot, resolveStyle, setRefs, } from "./components/floating.js";
3
+ export type { FloatingAlign, FloatingContentProps, FloatingSide, StateStyle, } from "./components/floating.js";
4
+ //# sourceMappingURL=floating.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating.d.ts","sourceRoot":"","sources":["../src/floating.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,OAAO,GACR,MAAM,0BAA0B,CAAA;AACjC,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,UAAU,GACX,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Public helpers for headless floating layers. */
2
+ export { FloatingLayer, floatingRootStyle, mergeStyles, renderSlot, resolveStyle, setRefs, } from "./components/floating.js";
3
+ //# sourceMappingURL=floating.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floating.js","sourceRoot":"","sources":["../src/floating.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,OAAO,GACR,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from "./use-gpuix.js";
2
+ export * from "./use-media-query.js";
3
+ export * from "./use-motion-value.js";
4
+ export * from "./use-text-search.js";
5
+ export * from "./use-window-size.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from "./use-gpuix.js";
2
+ export * from "./use-media-query.js";
3
+ export * from "./use-motion-value.js";
4
+ export * from "./use-text-search.js";
5
+ export * from "./use-window-size.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,sBAAsB,CAAA;AACpC,cAAc,sBAAsB,CAAA"}
@@ -0,0 +1,17 @@
1
+ import type { MutationRenderer } from "@ghia/native/host";
2
+ import type { NativeRenderer } from "../types/host.js";
3
+ export interface GpuixContextValue {
4
+ renderer: NativeRenderer | null;
5
+ /** The root's mutation queue, for what must be ordered with its element mutations. */
6
+ mutations: MutationRenderer | null;
7
+ }
8
+ export declare const GpuixContext: import("react").Context<GpuixContextValue>;
9
+ /**
10
+ * Access the GPUIX renderer from within a component
11
+ */
12
+ export declare function useGpuix(): GpuixContextValue;
13
+ /**
14
+ * Access the GPUIX renderer, throwing if not available
15
+ */
16
+ export declare function useGpuixRequired(): NativeRenderer;
17
+ //# sourceMappingURL=use-gpuix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-gpuix.d.ts","sourceRoot":"","sources":["../../src/hooks/use-gpuix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEtD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAA;IAC/B,sFAAsF;IACtF,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAA;CACnC;AAED,eAAO,MAAM,YAAY,4CAGvB,CAAA;AAEF;;GAEG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAE5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,cAAc,CAMjD"}
@@ -0,0 +1,22 @@
1
+ import { useContext, createContext } from "react";
2
+ export const GpuixContext = createContext({
3
+ renderer: null,
4
+ mutations: null,
5
+ });
6
+ /**
7
+ * Access the GPUIX renderer from within a component
8
+ */
9
+ export function useGpuix() {
10
+ return useContext(GpuixContext);
11
+ }
12
+ /**
13
+ * Access the GPUIX renderer, throwing if not available
14
+ */
15
+ export function useGpuixRequired() {
16
+ const { renderer } = useGpuix();
17
+ if (!renderer) {
18
+ throw new Error("useGpuixRequired must be used within a GpuixProvider");
19
+ }
20
+ return renderer;
21
+ }
22
+ //# sourceMappingURL=use-gpuix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-gpuix.js","sourceRoot":"","sources":["../../src/hooks/use-gpuix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAUjD,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAoB;IAC3D,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AAEF;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,OAAO,UAAU,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAA;IAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { MatchMedia } from "@ghia/native/host";
2
+ /**
3
+ * `window.matchMedia` bound to the window this component is rendered in. The
4
+ * same function comes back while the window is the same.
5
+ */
6
+ export declare function useMatchMedia(): MatchMedia;
7
+ /** Whether the media query matches, re-rendering when that changes. */
8
+ export declare function useMediaQuery(query: string): boolean;
9
+ /**
10
+ * True when the OS asks for reduced motion. Same contract as Framer Motion's
11
+ * `useReducedMotion`, except it is never `null`: the answer is known on the
12
+ * first render.
13
+ */
14
+ export declare function useReducedMotion(): boolean;
15
+ //# sourceMappingURL=use-media-query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-media-query.d.ts","sourceRoot":"","sources":["../../src/hooks/use-media-query.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAE1C;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYpD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
@@ -0,0 +1,30 @@
1
+ import { useCallback, useMemo, useSyncExternalStore } from "react";
2
+ import { REDUCED_MOTION_QUERY, matchMediaFor } from "@ghia/native/host";
3
+ import { useGpuixRequired } from "./use-gpuix.js";
4
+ /**
5
+ * `window.matchMedia` bound to the window this component is rendered in. The
6
+ * same function comes back while the window is the same.
7
+ */
8
+ export function useMatchMedia() {
9
+ return matchMediaFor(useGpuixRequired());
10
+ }
11
+ /** Whether the media query matches, re-rendering when that changes. */
12
+ export function useMediaQuery(query) {
13
+ const matchMedia = useMatchMedia();
14
+ const list = useMemo(() => matchMedia(query), [matchMedia, query]);
15
+ // A new subscribe function every render would unsubscribe and resubscribe.
16
+ const subscribe = useCallback((onChange) => {
17
+ list.addEventListener("change", onChange);
18
+ return () => list.removeEventListener("change", onChange);
19
+ }, [list]);
20
+ return useSyncExternalStore(subscribe, () => list.matches);
21
+ }
22
+ /**
23
+ * True when the OS asks for reduced motion. Same contract as Framer Motion's
24
+ * `useReducedMotion`, except it is never `null`: the answer is known on the
25
+ * first render.
26
+ */
27
+ export function useReducedMotion() {
28
+ return useMediaQuery(REDUCED_MOTION_QUERY);
29
+ }
30
+ //# sourceMappingURL=use-media-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-media-query.js","sourceRoot":"","sources":["../../src/hooks/use-media-query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,OAAO,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD;;;GAGG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,aAAa,CAAC,gBAAgB,EAAE,CAAC,CAAA;AAC1C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IAClE,2EAA2E;IAC3E,MAAM,SAAS,GAAG,WAAW,CAC3B,CAAC,QAAoB,EAAE,EAAE;QACvB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACzC,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC3D,CAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAA;IACD,OAAO,oBAAoB,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,oBAAoB,CAAC,CAAA;AAC5C,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { MotionData, MotionSpringConfig, MotionTransformOptions, MotionValue, MotionValueEvents, Widen } from "@ghia/native/host";
2
+ /** A motion value that lives as long as the component, like Framer's `useMotionValue`. */
3
+ export declare function useMotionValue<Data extends MotionData>(initial: Data): MotionValue<Widen<Data>>;
4
+ /** Maps `input` through the ranges natively, so it moves with `input` in the same frame. */
5
+ export declare function useTransform<Out extends MotionData>(input: MotionValue<number>, inputRange: number[], outputRange: Out[], options?: MotionTransformOptions): MotionValue<Widen<Out>>;
6
+ /** Computed in JS from `input`: it trails by a frame and is not native-linked. */
7
+ export declare function useTransform<In extends MotionData, Out extends MotionData>(input: MotionValue<In>, transform: (latest: In) => Out): MotionValue<Widen<Out>>;
8
+ /** Computed in JS from every value in `inputs`. */
9
+ export declare function useTransform<In extends MotionData, Out extends MotionData>(inputs: MotionValue<In>[], transform: (latest: In[]) => Out): MotionValue<Widen<Out>>;
10
+ /**
11
+ * Computed in JS from the motion values `compute` reads with `get()`. State
12
+ * and props it captures are not tracked: it re-runs when a value it read changes.
13
+ */
14
+ export declare function useTransform<Out extends MotionData>(compute: () => Out): MotionValue<Widen<Out>>;
15
+ /**
16
+ * A spring that follows `source`. Given a plain value, a spring with its own
17
+ * target that `set` moves. Changing `config` makes a new spring that starts
18
+ * from where the old one was.
19
+ */
20
+ export declare function useSpring<Data extends MotionData>(source: MotionValue<Data>, config?: MotionSpringConfig): MotionValue<Data>;
21
+ export declare function useSpring<Data extends MotionData>(initial: Data, config?: MotionSpringConfig): MotionValue<Widen<Data>>;
22
+ /** The velocity of `value` in units per second, as a motion value. */
23
+ export declare function useVelocity(value: MotionValue<number>): MotionValue<number>;
24
+ /**
25
+ * Calls `callback` when `value` emits `event`. The value is bound to this
26
+ * window while listening, so a derived value with no element still reports.
27
+ * The callback runs outside React's scheduler, in a batch, so its `setState`
28
+ * calls from one frame render once.
29
+ */
30
+ export declare function useMotionValueEvent<Data extends MotionData, Event extends keyof MotionValueEvents<Data>>(value: MotionValue<Data>, event: Event, callback: MotionValueEvents<Data>[Event]): void;
31
+ //# sourceMappingURL=use-motion-value.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-motion-value.d.ts","sourceRoot":"","sources":["../../src/hooks/use-motion-value.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,sBAAsB,EACtB,WAAW,EACX,iBAAiB,EACjB,KAAK,EACN,MAAM,mBAAmB,CAAA;AAgC1B,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,IAAI,SAAS,UAAU,EAAE,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAI/F;AAED,4FAA4F;AAC5F,wBAAgB,YAAY,CAAC,GAAG,SAAS,UAAU,EACjD,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,EAAE,GAAG,EAAE,EAClB,OAAO,CAAC,EAAE,sBAAsB,GAC/B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1B,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,UAAU,EACxE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EACtB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,KAAK,GAAG,GAC7B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1B,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,EAAE,SAAS,UAAU,EAAE,GAAG,SAAS,UAAU,EACxE,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,EACzB,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,GAC/B,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAC1B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;AAkDjG;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,IAAI,SAAS,UAAU,EAC/C,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,EACzB,MAAM,CAAC,EAAE,kBAAkB,GAC1B,WAAW,CAAC,IAAI,CAAC,CAAA;AACpB,wBAAgB,SAAS,CAAC,IAAI,SAAS,UAAU,EAC/C,OAAO,EAAE,IAAI,EACb,MAAM,CAAC,EAAE,kBAAkB,GAC1B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAgB3B,sEAAsE;AACtE,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAI3E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,SAAS,UAAU,EACvB,KAAK,SAAS,MAAM,iBAAiB,CAAC,IAAI,CAAC,EAC3C,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAgBxF"}
@@ -0,0 +1,105 @@
1
+ import { useEffect, useRef, useState } from "react";
2
+ import { computedValue, isMotionValue, motionValue, sameMutationValue, springValue, transformValue, velocityValue, } from "@ghia/native/host";
3
+ import { reconciler } from "../reconciler/reconciler.js";
4
+ import { useGpuixRequired } from "./use-gpuix.js";
5
+ /**
6
+ * Keeps the value this window's renderer samples for as long as the component
7
+ * is mounted. A value with no element, listener or reader bound to it has no
8
+ * node, so it could neither be read when it derives from other values nor be
9
+ * animated.
10
+ */
11
+ function useBound(value) {
12
+ const renderer = useGpuixRequired();
13
+ useEffect(() => value.bind(renderer), [value, renderer]);
14
+ }
15
+ /**
16
+ * The value `create` made last time, while `deps` are unchanged. An inline
17
+ * `[0, 100]` or `{ clamp: false }` is a new object on every render, so it is
18
+ * compared by content: a new value each render would rebind its elements.
19
+ */
20
+ function useStable(deps, create) {
21
+ const cache = useRef(undefined);
22
+ const cached = cache.current;
23
+ if (cached && sameMutationValue(cached.deps, deps))
24
+ return cached.value;
25
+ const value = create(cached?.value);
26
+ cache.current = { deps, value };
27
+ return value;
28
+ }
29
+ /** A motion value that lives as long as the component, like Framer's `useMotionValue`. */
30
+ export function useMotionValue(initial) {
31
+ const [value] = useState(() => motionValue(initial));
32
+ useBound(value);
33
+ return value;
34
+ }
35
+ export function useTransform(first, second, third, fourth) {
36
+ const fn = [first, second].find((arg) => typeof arg === "function");
37
+ // The latest render's function, so a computed value does not run a stale closure.
38
+ const latest = useRef(fn);
39
+ useEffect(() => {
40
+ latest.current = fn;
41
+ });
42
+ const value = useStable(fn
43
+ ? [isMotionValue(first) || Array.isArray(first) ? first : undefined]
44
+ : [first, second, third, fourth], () => {
45
+ const run = (...args) => {
46
+ const current = latest.current;
47
+ if (!current)
48
+ throw new Error("useTransform lost its function");
49
+ return current(...args);
50
+ };
51
+ if (typeof first === "function")
52
+ return computedValue(() => run());
53
+ if (typeof second === "function") {
54
+ if (Array.isArray(first)) {
55
+ const inputs = first;
56
+ return computedValue(() => run(inputs.map((input) => input.get())));
57
+ }
58
+ if (isMotionValue(first))
59
+ return computedValue(() => run(first.get()));
60
+ }
61
+ else if (isMotionValue(first) && Array.isArray(second) && Array.isArray(third)) {
62
+ return transformValue(first, second, third, fourth);
63
+ }
64
+ throw new Error("useTransform takes (value, inputRange, outputRange, options?), (value | values, transform) or (compute)");
65
+ });
66
+ useBound(value);
67
+ return value;
68
+ }
69
+ export function useSpring(source, config) {
70
+ const value = useStable([isMotionValue(source) ? source : undefined, config], (previous) => isMotionValue(source)
71
+ ? springValue(source, config)
72
+ : springValue(previous ? previous.get() : source, config));
73
+ useBound(value);
74
+ return value;
75
+ }
76
+ /** The velocity of `value` in units per second, as a motion value. */
77
+ export function useVelocity(value) {
78
+ const velocity = useStable([value], () => velocityValue(value));
79
+ useBound(velocity);
80
+ return velocity;
81
+ }
82
+ /**
83
+ * Calls `callback` when `value` emits `event`. The value is bound to this
84
+ * window while listening, so a derived value with no element still reports.
85
+ * The callback runs outside React's scheduler, in a batch, so its `setState`
86
+ * calls from one frame render once.
87
+ */
88
+ export function useMotionValueEvent(value, event, callback) {
89
+ const renderer = useGpuixRequired();
90
+ const latest = useRef(callback);
91
+ useEffect(() => {
92
+ latest.current = callback;
93
+ });
94
+ useEffect(() => {
95
+ const release = value.bind(renderer);
96
+ const stop = value.on(event, ((...args) => {
97
+ reconciler.batchedUpdates(() => latest.current(...args), undefined);
98
+ }));
99
+ return () => {
100
+ stop();
101
+ release();
102
+ };
103
+ }, [value, event, renderer]);
104
+ }
105
+ //# sourceMappingURL=use-motion-value.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-motion-value.js","sourceRoot":"","sources":["../../src/hooks/use-motion-value.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EACL,aAAa,EACb,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAA;AAS1B,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD;;;;;GAKG;AACH,SAAS,QAAQ,CAAC,KAA8B;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;IACnC,SAAS,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,SAAS,CAChB,IAAwB,EACxB,MAA8C;IAE9C,MAAM,KAAK,GAAG,MAAM,CAAyD,SAAS,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAA;IAC5B,IAAI,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAA;IACvE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACnC,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAC/B,OAAO,KAAK,CAAA;AACd,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,cAAc,CAA0B,OAAa;IACnE,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;IACpD,QAAQ,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,CAAA;AACd,CAAC;AAwBD,MAAM,UAAU,YAAY,CAC1B,KAAc,EACd,MAAgB,EAChB,KAAe,EACf,MAAgB;IAEhB,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,UAAU,CAErD,CAAA;IACb,kFAAkF;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,GAAG,EAAE,CAAA;IACrB,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,SAAS,CACrB,EAAE;QACA,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACpE,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,EAClC,GAAG,EAAE;QACH,MAAM,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACjC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;YAC9B,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;YAC/D,OAAO,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;QACzB,CAAC,CAAA;QACD,IAAI,OAAO,KAAK,KAAK,UAAU;YAAE,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QAClE,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,KAAkC,CAAA;gBACjD,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;YACrE,CAAC;YACD,IAAI,aAAa,CAAC,KAAK,CAAC;gBAAE,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC;aAAM,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,OAAO,cAAc,CACnB,KAA4B,EAC5B,MAAkB,EAClB,KAAqB,EACrB,MAA4C,CAC7C,CAAA;QACH,CAAC;QACD,MAAM,IAAI,KAAK,CACb,yGAAyG,CAC1G,CAAA;IACH,CAAC,CACF,CAAA;IACD,QAAQ,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,CAAA;AACd,CAAC;AAeD,MAAM,UAAU,SAAS,CACvB,MAA4C,EAC5C,MAA2B;IAE3B,MAAM,KAAK,GAAG,SAAS,CACrB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,EACpD,CAAC,QAAQ,EAAE,EAAE,CACX,aAAa,CAAC,MAAM,CAAC;QACnB,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;QAC7B,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAC9D,CAAA;IACD,QAAQ,CAAC,KAAK,CAAC,CAAA;IACf,OAAO,KAAK,CAAA;AACd,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,KAA0B;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAC/D,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAClB,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAGjC,KAAwB,EAAE,KAAY,EAAE,QAAwC;IAChF,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAA;IAC3B,CAAC,CAAC,CAAA;IACF,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,IAAe,EAAE,EAAE;YACnD,UAAU,CAAC,cAAc,CAAC,GAAG,EAAE,CAAE,MAAM,CAAC,OAAwC,CAAC,GAAG,IAAI,CAAC,EAAE,SAAS,CAAC,CAAA;QACvG,CAAC,CAAmC,CAAC,CAAA;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,EAAE,CAAA;YACN,OAAO,EAAE,CAAA;QACX,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;AAC9B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { findRanges } from "@ghia/native/host";
2
+ import type { FindRangesOptions, TextSearchOptions } from "@ghia/native/host";
3
+ import type { Props } from "../types/host.js";
4
+ export type { FindRangesOptions, TextSearchOptions };
5
+ export { findRanges };
6
+ export interface TextSearch {
7
+ props: Pick<Props, "highlight" | "onHighlight">;
8
+ total: number;
9
+ active: number;
10
+ next(): void;
11
+ previous(): void;
12
+ goTo(index: number): void;
13
+ }
14
+ /** React adapter for the framework-neutral text-search controller. */
15
+ export declare function useTextSearch(options: TextSearchOptions): TextSearch;
16
+ //# sourceMappingURL=use-text-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-text-search.d.ts","sourceRoot":"","sources":["../../src/hooks/use-text-search.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,UAAU,EACX,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAE7C,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAAC,CAAA;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,IAAI,IAAI,CAAA;IACZ,QAAQ,IAAI,IAAI,CAAA;IAChB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAcpE"}