@effect-tui/react 0.12.3 → 0.13.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.
- package/README.md +21 -1
- package/dist/src/dev.d.ts +22 -32
- package/dist/src/dev.d.ts.map +1 -1
- package/dist/src/dev.js +42 -96
- package/dist/src/dev.js.map +1 -1
- package/dist/src/hooks/index.d.ts +3 -0
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/hooks/index.js +1 -0
- package/dist/src/hooks/index.js.map +1 -1
- package/dist/src/hooks/use-mouse.d.ts +10 -1
- package/dist/src/hooks/use-mouse.d.ts.map +1 -1
- package/dist/src/hooks/use-mouse.js +10 -2
- package/dist/src/hooks/use-mouse.js.map +1 -1
- package/dist/src/hooks/use-paste.d.ts +13 -3
- package/dist/src/hooks/use-paste.d.ts.map +1 -1
- package/dist/src/hooks/use-paste.js +15 -5
- package/dist/src/hooks/use-paste.js.map +1 -1
- package/dist/src/hooks/use-scroll.d.ts +59 -24
- package/dist/src/hooks/use-scroll.d.ts.map +1 -1
- package/dist/src/hooks/use-scroll.js +238 -79
- package/dist/src/hooks/use-scroll.js.map +1 -1
- package/dist/src/hooks/use-shortcut.d.ts +16 -0
- package/dist/src/hooks/use-shortcut.d.ts.map +1 -0
- package/dist/src/hooks/use-shortcut.js +29 -0
- package/dist/src/hooks/use-shortcut.js.map +1 -0
- package/dist/src/hosts/scroll.d.ts +4 -0
- package/dist/src/hosts/scroll.d.ts.map +1 -1
- package/dist/src/hosts/scroll.js +18 -2
- package/dist/src/hosts/scroll.js.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/renderer/input/InputProcessor.d.ts.map +1 -1
- package/dist/src/renderer/input/InputProcessor.js +8 -1
- package/dist/src/renderer/input/InputProcessor.js.map +1 -1
- package/dist/src/renderer/lifecycle/EventBus.d.ts +2 -2
- package/dist/src/renderer/lifecycle/EventBus.d.ts.map +1 -1
- package/dist/src/renderer/lifecycle/EventBus.js +13 -1
- package/dist/src/renderer/lifecycle/EventBus.js.map +1 -1
- package/dist/src/renderer-types.d.ts +8 -1
- package/dist/src/renderer-types.d.ts.map +1 -1
- package/dist/src/renderer.d.ts +13 -2
- package/dist/src/renderer.d.ts.map +1 -1
- package/dist/src/renderer.js +48 -7
- package/dist/src/renderer.js.map +1 -1
- package/dist/src/shortcuts.d.ts +15 -0
- package/dist/src/shortcuts.d.ts.map +1 -0
- package/dist/src/shortcuts.js +149 -0
- package/dist/src/shortcuts.js.map +1 -0
- package/dist/src/test/mock-streams.d.ts.map +1 -1
- package/dist/src/test/mock-streams.js +0 -3
- package/dist/src/test/mock-streams.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/dev.tsx +59 -107
- package/src/hooks/index.ts +3 -0
- package/src/hooks/use-mouse.ts +19 -3
- package/src/hooks/use-paste.ts +24 -5
- package/src/hooks/use-scroll.ts +345 -105
- package/src/hooks/use-shortcut.ts +54 -0
- package/src/hosts/scroll.ts +21 -2
- package/src/index.ts +19 -6
- package/src/renderer/input/InputProcessor.ts +8 -1
- package/src/renderer/lifecycle/EventBus.ts +14 -4
- package/src/renderer-types.ts +9 -1
- package/src/renderer.ts +96 -9
- package/src/shortcuts.ts +180 -0
- package/src/test/mock-streams.ts +0 -3
package/README.md
CHANGED
|
@@ -34,6 +34,19 @@ function App() {
|
|
|
34
34
|
render(<App />)
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
+
## Dev / HMR
|
|
38
|
+
|
|
39
|
+
Enable hot reload by passing `dev: true` and `importMeta`:
|
|
40
|
+
|
|
41
|
+
```tsx
|
|
42
|
+
export default function App() { ... }
|
|
43
|
+
|
|
44
|
+
render(<App />, { dev: true, importMeta: import.meta })
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Note:** When `dev: true`, the entry module's **default export** is re-imported
|
|
48
|
+
on each change. Keep your app as the default export for reliable HMR.
|
|
49
|
+
|
|
37
50
|
## JSX Elements
|
|
38
51
|
|
|
39
52
|
- `<vstack>` - Vertical flex layout
|
|
@@ -46,7 +59,7 @@ render(<App />)
|
|
|
46
59
|
## Hooks
|
|
47
60
|
|
|
48
61
|
- `useKeyboard(callback)` - Handle keyboard input
|
|
49
|
-
- `usePaste(callback)` - Handle paste events
|
|
62
|
+
- `usePaste(callback)` - Handle paste events (callback receives `{ text }`)
|
|
50
63
|
- `useTerminalSize()` - Get terminal dimensions (re-renders on resize)
|
|
51
64
|
- `useSpring(initial, options)` - Spring animation
|
|
52
65
|
- `useSprings(count, fn)` - Multiple springs
|
|
@@ -119,7 +132,14 @@ it("renders and handles input", () => {
|
|
|
119
132
|
|
|
120
133
|
### Options
|
|
121
134
|
|
|
135
|
+
`importMeta` is required whenever you pass the options object.
|
|
136
|
+
|
|
122
137
|
```ts
|
|
138
|
+
type RenderOptions = RendererOptions & {
|
|
139
|
+
dev?: boolean
|
|
140
|
+
importMeta: ImportMetaLike
|
|
141
|
+
}
|
|
142
|
+
|
|
123
143
|
interface RendererOptions {
|
|
124
144
|
fps?: number // Default: 60
|
|
125
145
|
mode?: "fullscreen" | "inline"
|
package/dist/src/dev.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Development utilities for hot module replacement (HMR).
|
|
3
3
|
*
|
|
4
|
+
* Use render(..., { dev: true, importMeta: import.meta }) to enable HMR.
|
|
5
|
+
*
|
|
4
6
|
* Enables hot reload during development:
|
|
5
7
|
* - File changes trigger re-render without process restart
|
|
6
8
|
* - Terminal stays stable (no screen flash)
|
|
@@ -9,7 +11,6 @@
|
|
|
9
11
|
* - Remote control when EFFECT_TUI_REMOTE=1
|
|
10
12
|
*/
|
|
11
13
|
import React from "react";
|
|
12
|
-
import { type Root } from "./renderer.js";
|
|
13
14
|
import type { RendererOptions, TuiRenderer } from "./renderer-types.js";
|
|
14
15
|
/**
|
|
15
16
|
* Pipeable combinator that makes an atom persist across hot reloads.
|
|
@@ -20,7 +21,7 @@ import type { RendererOptions, TuiRenderer } from "./renderer-types.js";
|
|
|
20
21
|
* @example
|
|
21
22
|
* ```tsx
|
|
22
23
|
* import { Atom } from "@effect-atom/atom-react"
|
|
23
|
-
* import { hmr,
|
|
24
|
+
* import { hmr, render } from "@effect-tui/react"
|
|
24
25
|
*
|
|
25
26
|
* // Just pipe hmr() - that's it!
|
|
26
27
|
* const countAtom = Atom.make(0).pipe(hmr("count"))
|
|
@@ -30,6 +31,8 @@ import type { RendererOptions, TuiRenderer } from "./renderer-types.js";
|
|
|
30
31
|
* const count = useAtomValue(countAtom)
|
|
31
32
|
* // Edit this file - count persists!
|
|
32
33
|
* }
|
|
34
|
+
*
|
|
35
|
+
* render(<App />, { dev: true, importMeta: import.meta })
|
|
33
36
|
* ```
|
|
34
37
|
*/
|
|
35
38
|
export declare function hmr(key: string): <A>(self: A) => A;
|
|
@@ -42,25 +45,6 @@ export declare function hmr(key: string): <A>(self: A) => A;
|
|
|
42
45
|
* ```
|
|
43
46
|
*/
|
|
44
47
|
export declare function hmrState<T>(key: string, create: () => T): T;
|
|
45
|
-
/**
|
|
46
|
-
* Simple self-running dev mode. Just add this at the bottom of your file:
|
|
47
|
-
*
|
|
48
|
-
* @example
|
|
49
|
-
* ```tsx
|
|
50
|
-
* export default function App() { ... }
|
|
51
|
-
*
|
|
52
|
-
* devMain(import.meta)
|
|
53
|
-
* ```
|
|
54
|
-
*
|
|
55
|
-
* That's it! Handles:
|
|
56
|
-
* - Only runs when file is the entry point (import.meta.main)
|
|
57
|
-
* - Only initializes once across HMR reloads
|
|
58
|
-
* - Automatically finds the file path
|
|
59
|
-
*/
|
|
60
|
-
export declare function devMain(importMeta: {
|
|
61
|
-
main?: boolean;
|
|
62
|
-
url: string;
|
|
63
|
-
}, options?: Omit<DevRenderOptions, never>): void;
|
|
64
48
|
/**
|
|
65
49
|
* Auto-keyed HMR persistence for atoms.
|
|
66
50
|
*
|
|
@@ -71,7 +55,7 @@ export declare function devMain(importMeta: {
|
|
|
71
55
|
* @example
|
|
72
56
|
* ```tsx
|
|
73
57
|
* import { Atom } from "@effect-atom/atom-react"
|
|
74
|
-
* import { autoHmr,
|
|
58
|
+
* import { autoHmr, render } from "@effect-tui/react"
|
|
75
59
|
*
|
|
76
60
|
* // No manual key needed - derived from variable name!
|
|
77
61
|
* const countAtom = Atom.make(0).pipe(autoHmr)
|
|
@@ -82,7 +66,7 @@ export declare function devMain(importMeta: {
|
|
|
82
66
|
* ```
|
|
83
67
|
*/
|
|
84
68
|
export declare function autoHmr<A>(self: A): A;
|
|
85
|
-
export interface
|
|
69
|
+
export interface DevOptions {
|
|
86
70
|
/** Directories to watch (defaults to entry file's directory) */
|
|
87
71
|
watchDirs?: string[];
|
|
88
72
|
/** File extensions to watch (defaults to [".ts", ".tsx"]) */
|
|
@@ -102,12 +86,12 @@ export interface DevRenderOptions extends RendererOptions {
|
|
|
102
86
|
/** Override diagnostics panel title. */
|
|
103
87
|
statsTitle?: string;
|
|
104
88
|
}
|
|
105
|
-
export interface
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
/** Manually trigger a reload */
|
|
109
|
-
|
|
110
|
-
/** Stop watching and cleanup */
|
|
89
|
+
export interface DevRuntime {
|
|
90
|
+
/** Promise that resolves after the first render + watcher setup. */
|
|
91
|
+
ready: Promise<void>;
|
|
92
|
+
/** Manually trigger a reload. */
|
|
93
|
+
reload: () => Promise<void>;
|
|
94
|
+
/** Stop watching and cleanup. */
|
|
111
95
|
stop: () => Promise<void>;
|
|
112
96
|
}
|
|
113
97
|
export interface DevWrapperProps {
|
|
@@ -124,9 +108,15 @@ export interface DevWrapperProps {
|
|
|
124
108
|
* - Auto-show console on errors
|
|
125
109
|
* - Optional renderer stats overlay (showStats)
|
|
126
110
|
*
|
|
127
|
-
* Use this to wrap your app when you need dev features
|
|
128
|
-
* (e.g., when you need to pass props
|
|
111
|
+
* Use this to wrap your app when you need dev UI features without the dev runtime
|
|
112
|
+
* (e.g., when you need to pass props or load the app manually).
|
|
129
113
|
*/
|
|
130
114
|
export declare function DevWrapper({ children, showStats, statsSampleMs, statsTitle, mode, }: DevWrapperProps): React.ReactNode;
|
|
131
|
-
|
|
115
|
+
type DevRoot = {
|
|
116
|
+
render(element: React.ReactNode, sync?: boolean): void;
|
|
117
|
+
};
|
|
118
|
+
export declare function startDevRuntime(entryPath: string, renderer: TuiRenderer, root: DevRoot, options?: DevOptions & {
|
|
119
|
+
mode?: RendererOptions["mode"];
|
|
120
|
+
}): DevRuntime;
|
|
121
|
+
export {};
|
|
132
122
|
//# sourceMappingURL=dev.d.ts.map
|
package/dist/src/dev.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/dev.tsx"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../src/dev.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEvE;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,EAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAanD;AAED;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAE3D;AAmCD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CA6BrC;AAED,MAAM,WAAW,UAAU;IAC1B,gEAAgE;IAChE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,uBAAuB;IACvB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAChC,yCAAyC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,UAAU;IAC1B,oEAAoE;IACpE,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,iCAAiC;IACjC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3B,iCAAiC;IACjC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AA4FD,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAAA;CAC9B;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAC1B,QAAQ,EACR,SAAS,EACT,aAAa,EACb,UAAU,EACV,IAAI,GACJ,EAAE,eAAe,mBA2CjB;AAED,KAAK,OAAO,GAAG;IACd,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACtD,CAAA;AAED,wBAAgB,eAAe,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;CAAE,GACvD,UAAU,CAmGZ"}
|
package/dist/src/dev.js
CHANGED
|
@@ -10,6 +10,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "@effect-tui/react/jsx-runtime";
|
|
|
10
10
|
/**
|
|
11
11
|
* Development utilities for hot module replacement (HMR).
|
|
12
12
|
*
|
|
13
|
+
* Use render(..., { dev: true, importMeta: import.meta }) to enable HMR.
|
|
14
|
+
*
|
|
13
15
|
* Enables hot reload during development:
|
|
14
16
|
* - File changes trigger re-render without process restart
|
|
15
17
|
* - Terminal stays stable (no screen flash)
|
|
@@ -32,7 +34,6 @@ import { DiagnosticsPanel } from "./debug/DiagnosticsPanel.js";
|
|
|
32
34
|
import { ToastContainer, ToastProvider, useToast } from "./dev/Toast.js";
|
|
33
35
|
import { useKeyboard } from "./hooks/use-keyboard.js";
|
|
34
36
|
import { enableRemote } from "./remote/index.js";
|
|
35
|
-
import { createRenderer, createRoot } from "./renderer.js";
|
|
36
37
|
import { useRenderer, useTerminalSize } from "./renderer-context.js";
|
|
37
38
|
/**
|
|
38
39
|
* Pipeable combinator that makes an atom persist across hot reloads.
|
|
@@ -43,7 +44,7 @@ import { useRenderer, useTerminalSize } from "./renderer-context.js";
|
|
|
43
44
|
* @example
|
|
44
45
|
* ```tsx
|
|
45
46
|
* import { Atom } from "@effect-atom/atom-react"
|
|
46
|
-
* import { hmr,
|
|
47
|
+
* import { hmr, render } from "@effect-tui/react"
|
|
47
48
|
*
|
|
48
49
|
* // Just pipe hmr() - that's it!
|
|
49
50
|
* const countAtom = Atom.make(0).pipe(hmr("count"))
|
|
@@ -53,6 +54,8 @@ import { useRenderer, useTerminalSize } from "./renderer-context.js";
|
|
|
53
54
|
* const count = useAtomValue(countAtom)
|
|
54
55
|
* // Edit this file - count persists!
|
|
55
56
|
* }
|
|
57
|
+
*
|
|
58
|
+
* render(<App />, { dev: true, importMeta: import.meta })
|
|
56
59
|
* ```
|
|
57
60
|
*/
|
|
58
61
|
export function hmr(key) {
|
|
@@ -80,36 +83,6 @@ export function hmr(key) {
|
|
|
80
83
|
export function hmrState(key, create) {
|
|
81
84
|
return globalValue(Symbol.for(`hmr/${key}`), create);
|
|
82
85
|
}
|
|
83
|
-
/**
|
|
84
|
-
* Simple self-running dev mode. Just add this at the bottom of your file:
|
|
85
|
-
*
|
|
86
|
-
* @example
|
|
87
|
-
* ```tsx
|
|
88
|
-
* export default function App() { ... }
|
|
89
|
-
*
|
|
90
|
-
* devMain(import.meta)
|
|
91
|
-
* ```
|
|
92
|
-
*
|
|
93
|
-
* That's it! Handles:
|
|
94
|
-
* - Only runs when file is the entry point (import.meta.main)
|
|
95
|
-
* - Only initializes once across HMR reloads
|
|
96
|
-
* - Automatically finds the file path
|
|
97
|
-
*/
|
|
98
|
-
export function devMain(importMeta, options) {
|
|
99
|
-
// Skip if not main entry point
|
|
100
|
-
if (!importMeta.main)
|
|
101
|
-
return;
|
|
102
|
-
// Skip if this is a HMR re-import (has cache-busting query string)
|
|
103
|
-
if (importMeta.url.includes("?"))
|
|
104
|
-
return;
|
|
105
|
-
const key = `devMain/${importMeta.url}`;
|
|
106
|
-
const initialized = hmrState(key, () => ({ done: false }));
|
|
107
|
-
if (!initialized.done) {
|
|
108
|
-
initialized.done = true;
|
|
109
|
-
const filePath = new URL(importMeta.url).pathname;
|
|
110
|
-
devRender(filePath, options);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
86
|
// Cache for runtime key extraction
|
|
114
87
|
const keyCache = new Map();
|
|
115
88
|
/**
|
|
@@ -150,7 +123,7 @@ function extractVarName(source, line) {
|
|
|
150
123
|
* @example
|
|
151
124
|
* ```tsx
|
|
152
125
|
* import { Atom } from "@effect-atom/atom-react"
|
|
153
|
-
* import { autoHmr,
|
|
126
|
+
* import { autoHmr, render } from "@effect-tui/react"
|
|
154
127
|
*
|
|
155
128
|
* // No manual key needed - derived from variable name!
|
|
156
129
|
* const countAtom = Atom.make(0).pipe(autoHmr)
|
|
@@ -226,30 +199,6 @@ async function awaitWriteFinish(path, stabilityMs) {
|
|
|
226
199
|
await new Promise((r) => setTimeout(r, checkInterval));
|
|
227
200
|
}
|
|
228
201
|
}
|
|
229
|
-
/**
|
|
230
|
-
* Render a TUI app with hot module replacement support.
|
|
231
|
-
*
|
|
232
|
-
* Uses @parcel/watcher for reliable, cross-platform file watching.
|
|
233
|
-
* When files change, the module is re-imported and the app re-renders
|
|
234
|
-
* without restarting the process or tearing down the terminal.
|
|
235
|
-
*
|
|
236
|
-
* For state preservation, use effect-atom with the hmr() combinator:
|
|
237
|
-
*
|
|
238
|
-
* @example
|
|
239
|
-
* ```tsx
|
|
240
|
-
* import { Atom, useAtomValue } from "@effect-atom/atom-react"
|
|
241
|
-
* import { hmr, devRender } from "@effect-tui/react"
|
|
242
|
-
*
|
|
243
|
-
* const countAtom = Atom.make(0).pipe(hmr("count"))
|
|
244
|
-
*
|
|
245
|
-
* export default function App() {
|
|
246
|
-
* const count = useAtomValue(countAtom)
|
|
247
|
-
* return <text>Count: {count}</text>
|
|
248
|
-
* }
|
|
249
|
-
*
|
|
250
|
-
* devRender(import.meta.path, { mode: "inline" })
|
|
251
|
-
* ```
|
|
252
|
-
*/
|
|
253
202
|
/**
|
|
254
203
|
* Internal component that handles screenshot with toast notification
|
|
255
204
|
*/
|
|
@@ -290,8 +239,8 @@ function StatsOverlay({ sampleMs, title }) {
|
|
|
290
239
|
* - Auto-show console on errors
|
|
291
240
|
* - Optional renderer stats overlay (showStats)
|
|
292
241
|
*
|
|
293
|
-
* Use this to wrap your app when you need dev features
|
|
294
|
-
* (e.g., when you need to pass props
|
|
242
|
+
* Use this to wrap your app when you need dev UI features without the dev runtime
|
|
243
|
+
* (e.g., when you need to pass props or load the app manually).
|
|
295
244
|
*/
|
|
296
245
|
export function DevWrapper({ children, showStats, statsSampleMs, statsTitle, mode, }) {
|
|
297
246
|
const { visible } = useConsole({ autoShowOnError: true, initiallyVisible: false });
|
|
@@ -302,12 +251,10 @@ export function DevWrapper({ children, showStats, statsSampleMs, statsTitle, mod
|
|
|
302
251
|
// Fullscreen mode: Overlay with toast/console positioned by alignment
|
|
303
252
|
return (_jsx(ToastProvider, { children: _jsxs(Overlay, { children: [_jsx(ScreenshotHandler, {}), children, visible && (_jsx(Overlay.Item, { alignment: { v: "bottom" }, children: _jsx(ConsolePopover, { fixedHeight: 12 }) })), showStats && (_jsx(Overlay.Item, { alignment: { v: "top", h: "right" }, children: _jsx(StatsOverlay, { sampleMs: statsSampleMs, title: statsTitle }) })), _jsx(Overlay.Item, { alignment: { v: "top" }, children: _jsx(ToastContainer, {}) })] }) }));
|
|
304
253
|
}
|
|
305
|
-
export
|
|
254
|
+
export function startDevRuntime(entryPath, renderer, root, options) {
|
|
306
255
|
const watchExtensions = options?.watchExtensions ?? [".ts", ".tsx"];
|
|
307
256
|
const debounceMs = options?.debounce ?? 150;
|
|
308
257
|
const stabilityMs = options?.awaitWriteFinish ?? 50;
|
|
309
|
-
const renderer = createRenderer(options);
|
|
310
|
-
const root = createRoot(renderer);
|
|
311
258
|
// Dev mode always enables remote control with entry path for identification
|
|
312
259
|
const stopRemote = enableRemote(renderer, { entryPath });
|
|
313
260
|
let debounceTimer = null;
|
|
@@ -315,8 +262,7 @@ export async function devRender(entryPath, options) {
|
|
|
315
262
|
let subscription = null;
|
|
316
263
|
// Determine project root for cache clearing
|
|
317
264
|
const projectRoot = options?.watchDirs?.[0] ?? dirname(entryPath);
|
|
318
|
-
|
|
319
|
-
const render = async () => {
|
|
265
|
+
const reload = async () => {
|
|
320
266
|
const thisVersion = ++version;
|
|
321
267
|
try {
|
|
322
268
|
// Clear module cache for project files before re-importing
|
|
@@ -330,7 +276,7 @@ export async function devRender(entryPath, options) {
|
|
|
330
276
|
if (!App) {
|
|
331
277
|
const err = new Error(`No default export found in ${entryPath}`);
|
|
332
278
|
options?.onError?.(err);
|
|
333
|
-
console.error("[
|
|
279
|
+
console.error("[effect-tui] Dev render failed:", err.message);
|
|
334
280
|
return;
|
|
335
281
|
}
|
|
336
282
|
// Render the component wrapped in DevWrapper for console panel
|
|
@@ -346,38 +292,38 @@ export async function devRender(entryPath, options) {
|
|
|
346
292
|
catch (err) {
|
|
347
293
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
348
294
|
options?.onError?.(error);
|
|
349
|
-
console.error("[
|
|
295
|
+
console.error("[effect-tui] Dev render error:", error.message);
|
|
350
296
|
}
|
|
351
297
|
};
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
}
|
|
298
|
+
const ready = (async () => {
|
|
299
|
+
await reload();
|
|
300
|
+
try {
|
|
301
|
+
subscription = await watcher.subscribe(projectRoot, async (err, events) => {
|
|
302
|
+
if (err) {
|
|
303
|
+
options?.onError?.(err);
|
|
304
|
+
console.error("[effect-tui] Dev watcher error:", err);
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
// Filter to relevant file extensions
|
|
308
|
+
const relevantEvents = events.filter((event) => watchExtensions.some((ext) => event.path.endsWith(ext)));
|
|
309
|
+
if (relevantEvents.length === 0)
|
|
310
|
+
return;
|
|
311
|
+
// Debounce rapid changes
|
|
312
|
+
if (debounceTimer)
|
|
313
|
+
clearTimeout(debounceTimer);
|
|
314
|
+
debounceTimer = setTimeout(async () => {
|
|
315
|
+
// Wait for file writes to stabilize
|
|
316
|
+
const changedPath = relevantEvents[0].path;
|
|
317
|
+
await awaitWriteFinish(changedPath, stabilityMs);
|
|
318
|
+
options?.onReload?.();
|
|
319
|
+
await reload();
|
|
320
|
+
}, debounceMs);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
catch (err) {
|
|
324
|
+
console.error(`[effect-tui] Failed to watch ${projectRoot}:`, err);
|
|
325
|
+
}
|
|
326
|
+
})();
|
|
381
327
|
const stop = async () => {
|
|
382
328
|
if (debounceTimer)
|
|
383
329
|
clearTimeout(debounceTimer);
|
|
@@ -387,6 +333,6 @@ export async function devRender(entryPath, options) {
|
|
|
387
333
|
stopRemote();
|
|
388
334
|
renderer.stop();
|
|
389
335
|
};
|
|
390
|
-
return {
|
|
336
|
+
return { ready, reload, stop };
|
|
391
337
|
}
|
|
392
338
|
//# sourceMappingURL=dev.js.map
|
package/dist/src/dev.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/dev.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev.js","sourceRoot":"","sources":["../../src/dev.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,10 @@ export type { UseKeyboardOptions } from "./use-keyboard.js";
|
|
|
2
2
|
export { useKeyboard } from "./use-keyboard.js";
|
|
3
3
|
export type { UseMouseOptions } from "./use-mouse.js";
|
|
4
4
|
export { useMouse } from "./use-mouse.js";
|
|
5
|
+
export type { UsePasteOptions } from "./use-paste.js";
|
|
5
6
|
export { usePaste } from "./use-paste.js";
|
|
7
|
+
export type { ShortcutHandler, ShortcutMap, UseShortcutOptions } from "./use-shortcut.js";
|
|
8
|
+
export { useShortcut } from "./use-shortcut.js";
|
|
6
9
|
export { useQuit } from "./use-quit.js";
|
|
7
10
|
export type { ScrollState, UseScrollOptions, UseScrollReturn } from "./use-scroll.js";
|
|
8
11
|
export { useScroll } from "./use-scroll.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACrF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/src/hooks/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { useKeyboard } from "./use-keyboard.js";
|
|
2
2
|
export { useMouse } from "./use-mouse.js";
|
|
3
3
|
export { usePaste } from "./use-paste.js";
|
|
4
|
+
export { useShortcut } from "./use-shortcut.js";
|
|
4
5
|
export { useQuit } from "./use-quit.js";
|
|
5
6
|
export { useScroll } from "./use-scroll.js";
|
|
6
7
|
export { useTimer } from "./use-timer.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import type { MouseButton, MouseMsg } from "@effect-tui/core";
|
|
2
2
|
export type UseMouseOptions = {
|
|
3
|
-
/** Filter by action type */
|
|
3
|
+
/** Filter by action type (alias: phase) */
|
|
4
4
|
action?: "press" | "release" | "drag" | "move" | "any";
|
|
5
|
+
/** Filter by action type */
|
|
6
|
+
phase?: "press" | "release" | "drag" | "move" | "any";
|
|
5
7
|
/** Filter by button */
|
|
6
8
|
button?: MouseButton | MouseButton[];
|
|
9
|
+
/** Optional predicate to drop events before they reach the handler. */
|
|
10
|
+
filter?: (mouse: MouseMsg) => boolean;
|
|
11
|
+
/**
|
|
12
|
+
* If true, call preventDefault when available before invoking handler.
|
|
13
|
+
* This stops further renderer-level handlers.
|
|
14
|
+
*/
|
|
15
|
+
stopPropagation?: boolean;
|
|
7
16
|
};
|
|
8
17
|
/**
|
|
9
18
|
* Subscribe to mouse events.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-mouse.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAI7D,MAAM,MAAM,eAAe,GAAG;IAC7B,
|
|
1
|
+
{"version":3,"file":"use-mouse.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAI7D,MAAM,MAAM,eAAe,GAAG;IAC7B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IACtD,4BAA4B;IAC5B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAA;IACrD,uBAAuB;IACvB,MAAM,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAA;IACpC,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CA+BzF"}
|
|
@@ -17,11 +17,15 @@ import { useRenderer } from "../renderer.js";
|
|
|
17
17
|
*/
|
|
18
18
|
export function useMouse(handler, opts) {
|
|
19
19
|
const renderer = useRenderer();
|
|
20
|
-
const action = opts?.action ?? "any";
|
|
20
|
+
const action = opts?.phase ?? opts?.action ?? "any";
|
|
21
21
|
const button = opts?.button;
|
|
22
|
+
const filter = opts?.filter;
|
|
23
|
+
const stopPropagation = opts?.stopPropagation ?? false;
|
|
22
24
|
// Store handler in ref so we always call the latest version
|
|
23
25
|
const handlerRef = useRef(handler);
|
|
24
26
|
handlerRef.current = handler;
|
|
27
|
+
const filterRef = useRef(filter);
|
|
28
|
+
filterRef.current = filter;
|
|
25
29
|
useEffect(() => {
|
|
26
30
|
const wrapped = (mouse) => {
|
|
27
31
|
// Filter by action
|
|
@@ -33,9 +37,13 @@ export function useMouse(handler, opts) {
|
|
|
33
37
|
if (!buttons.includes(mouse.button))
|
|
34
38
|
return;
|
|
35
39
|
}
|
|
40
|
+
if (filterRef.current && !filterRef.current(mouse))
|
|
41
|
+
return;
|
|
42
|
+
if (stopPropagation && mouse.preventDefault)
|
|
43
|
+
mouse.preventDefault();
|
|
36
44
|
handlerRef.current(mouse);
|
|
37
45
|
};
|
|
38
46
|
return renderer.onMouse(wrapped);
|
|
39
|
-
}, [renderer, action, button]);
|
|
47
|
+
}, [renderer, action, button, stopPropagation]);
|
|
40
48
|
}
|
|
41
49
|
//# sourceMappingURL=use-mouse.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-mouse.js","sourceRoot":"","sources":["../../../src/hooks/use-mouse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"use-mouse.js","sourceRoot":"","sources":["../../../src/hooks/use-mouse.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAkB5C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAkC,EAAE,IAAsB;IAClF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,MAAM,IAAI,KAAK,CAAA;IACnD,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;IAC3B,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;IAC3B,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe,IAAI,KAAK,CAAA;IAEtD,4DAA4D;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,OAAO,GAAG,CAAC,KAAe,EAAE,EAAE;YACnC,mBAAmB;YACnB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK,CAAC,MAAM;gBAAE,OAAM;YAEvD,mBAAmB;YACnB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;oBAAE,OAAM;YAC5C,CAAC;YAED,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC1D,IAAI,eAAe,IAAI,KAAK,CAAC,cAAc;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;YAEnE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAA;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAA;AAChD,CAAC"}
|
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
import type { PasteMsg } from "../renderer-types.js";
|
|
2
|
+
export type UsePasteOptions = {
|
|
3
|
+
/** Optional predicate to drop events before they reach the handler. */
|
|
4
|
+
filter?: (paste: PasteMsg) => boolean;
|
|
5
|
+
/**
|
|
6
|
+
* If true, call preventDefault when available before invoking handler.
|
|
7
|
+
* This stops further renderer-level handlers.
|
|
8
|
+
*/
|
|
9
|
+
stopPropagation?: boolean;
|
|
10
|
+
};
|
|
1
11
|
/**
|
|
2
12
|
* Subscribe to bracketed paste events (if supported by renderer/terminal).
|
|
3
13
|
*
|
|
@@ -7,10 +17,10 @@
|
|
|
7
17
|
* @example
|
|
8
18
|
* ```tsx
|
|
9
19
|
* // No useCallback needed - just pass your handler directly
|
|
10
|
-
* usePaste((
|
|
11
|
-
* insertText(text, cursorPosition)
|
|
20
|
+
* usePaste((paste) => {
|
|
21
|
+
* insertText(paste.text, cursorPosition)
|
|
12
22
|
* })
|
|
13
23
|
* ```
|
|
14
24
|
*/
|
|
15
|
-
export declare function usePaste(handler: (
|
|
25
|
+
export declare function usePaste(handler: (paste: PasteMsg) => void, opts?: UsePasteOptions): void;
|
|
16
26
|
//# sourceMappingURL=use-paste.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-paste.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-paste.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-paste.d.ts","sourceRoot":"","sources":["../../../src/hooks/use-paste.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAGpD,MAAM,MAAM,eAAe,GAAG;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAA;IACrC;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI,CAmBzF"}
|
|
@@ -9,20 +9,30 @@ import { useRenderer } from "../renderer.js";
|
|
|
9
9
|
* @example
|
|
10
10
|
* ```tsx
|
|
11
11
|
* // No useCallback needed - just pass your handler directly
|
|
12
|
-
* usePaste((
|
|
13
|
-
* insertText(text, cursorPosition)
|
|
12
|
+
* usePaste((paste) => {
|
|
13
|
+
* insertText(paste.text, cursorPosition)
|
|
14
14
|
* })
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export function usePaste(handler) {
|
|
17
|
+
export function usePaste(handler, opts) {
|
|
18
18
|
const renderer = useRenderer();
|
|
19
|
+
const filter = opts?.filter;
|
|
20
|
+
const stopPropagation = opts?.stopPropagation ?? false;
|
|
19
21
|
// Store handler in ref so we always call the latest version
|
|
20
22
|
const handlerRef = useRef(handler);
|
|
21
23
|
handlerRef.current = handler;
|
|
24
|
+
const filterRef = useRef(filter);
|
|
25
|
+
filterRef.current = filter;
|
|
22
26
|
useEffect(() => {
|
|
23
27
|
if (!renderer.onPaste)
|
|
24
28
|
return;
|
|
25
|
-
return renderer.onPaste((
|
|
26
|
-
|
|
29
|
+
return renderer.onPaste((paste) => {
|
|
30
|
+
if (filterRef.current && !filterRef.current(paste))
|
|
31
|
+
return;
|
|
32
|
+
if (stopPropagation && paste.preventDefault)
|
|
33
|
+
paste.preventDefault();
|
|
34
|
+
handlerRef.current(paste);
|
|
35
|
+
});
|
|
36
|
+
}, [renderer, stopPropagation]);
|
|
27
37
|
}
|
|
28
38
|
//# sourceMappingURL=use-paste.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-paste.js","sourceRoot":"","sources":["../../../src/hooks/use-paste.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"use-paste.js","sourceRoot":"","sources":["../../../src/hooks/use-paste.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAY5C;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,OAAkC,EAAE,IAAsB;IAClF,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAA;IAC3B,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe,IAAI,KAAK,CAAA;IAEtD,4DAA4D;IAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;IAChC,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;IAE1B,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ,CAAC,OAAO;YAAE,OAAM;QAC7B,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAM;YAC1D,IAAI,eAAe,IAAI,KAAK,CAAC,cAAc;gBAAE,KAAK,CAAC,cAAc,EAAE,CAAA;YACnE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAA;AAChC,CAAC"}
|