cereb 0.3.0 → 0.3.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 +35 -2
- package/dist/browser/single-pointer/default-factory.d.ts +5 -0
- package/dist/browser/single-pointer/default-factory.d.ts.map +1 -0
- package/dist/browser/single-pointer/index.d.ts +1 -1
- package/dist/browser/single-pointer/mouse.d.ts +1 -2
- package/dist/browser/single-pointer/mouse.d.ts.map +1 -1
- package/dist/browser/single-pointer/pointer.d.ts +1 -2
- package/dist/browser/single-pointer/pointer.d.ts.map +1 -1
- package/dist/browser/single-pointer/recognizer-from-mouse.d.ts +8 -0
- package/dist/browser/single-pointer/recognizer-from-mouse.d.ts.map +1 -0
- package/dist/browser/single-pointer/recognizer-from-pointer.d.ts +8 -0
- package/dist/browser/single-pointer/recognizer-from-pointer.d.ts.map +1 -0
- package/dist/browser/single-pointer/recognizer-from-touch.d.ts +8 -0
- package/dist/browser/single-pointer/recognizer-from-touch.d.ts.map +1 -0
- package/dist/browser/single-pointer/recognizer.d.ts +11 -0
- package/dist/browser/single-pointer/recognizer.d.ts.map +1 -0
- package/dist/browser/single-pointer/touch.d.ts +1 -2
- package/dist/browser/single-pointer/touch.d.ts.map +1 -1
- package/dist/browser/single-pointer/types.d.ts +3 -0
- package/dist/browser/single-pointer/types.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/operators/index.d.ts +1 -0
- package/dist/operators/index.d.ts.map +1 -1
- package/dist/operators/session.d.ts +16 -0
- package/dist/operators/session.d.ts.map +1 -0
- package/dist/operators.cjs +1 -1
- package/dist/operators.cjs.map +1 -1
- package/dist/operators.js +70 -46
- package/dist/operators.js.map +1 -1
- package/dist/{emitter-CyT5OiQO.cjs → recognizer-BrqdN-1T.cjs} +2 -2
- package/dist/recognizer-BrqdN-1T.cjs.map +1 -0
- package/dist/{emitter-FFAuyJ19.js → recognizer-FFAuyJ19.js} +1 -1
- package/dist/recognizer-FFAuyJ19.js.map +1 -0
- package/dist/single-pointer/mouse.cjs +1 -1
- package/dist/single-pointer/mouse.cjs.map +1 -1
- package/dist/single-pointer/mouse.js +17 -17
- package/dist/single-pointer/mouse.js.map +1 -1
- package/dist/single-pointer/touch.cjs +1 -1
- package/dist/single-pointer/touch.cjs.map +1 -1
- package/dist/single-pointer/touch.js +9 -9
- package/dist/single-pointer/touch.js.map +1 -1
- package/dist/types-BGR5Mhw9.cjs.map +1 -1
- package/dist/types-Ccnqx90M.js.map +1 -1
- package/package.json +1 -1
- package/dist/browser/single-pointer/emitter.d.ts +0 -13
- package/dist/browser/single-pointer/emitter.d.ts.map +0 -1
- package/dist/browser/single-pointer/mouse-emitter.d.ts +0 -7
- package/dist/browser/single-pointer/mouse-emitter.d.ts.map +0 -1
- package/dist/browser/single-pointer/pointer-emitter.d.ts +0 -8
- package/dist/browser/single-pointer/pointer-emitter.d.ts.map +0 -1
- package/dist/browser/single-pointer/touch-emitter.d.ts +0 -7
- package/dist/browser/single-pointer/touch-emitter.d.ts.map +0 -1
- package/dist/emitter-CyT5OiQO.cjs.map +0 -1
- package/dist/emitter-FFAuyJ19.js.map +0 -1
package/README.md
CHANGED
|
@@ -43,6 +43,39 @@ singlePointer(canvas).subscribe((signal) => {
|
|
|
43
43
|
|
|
44
44
|
## Recipes
|
|
45
45
|
|
|
46
|
+
### Session Filtering
|
|
47
|
+
|
|
48
|
+
Filter events to only emit during active sessions (from pointer down to up/cancel). Events outside a session are ignored.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { pipe, singlePointer, singlePointerSession } from "cereb";
|
|
52
|
+
|
|
53
|
+
// Only emits events from start → end/cancel
|
|
54
|
+
const stream = pipe(
|
|
55
|
+
singlePointer(element),
|
|
56
|
+
singlePointerSession()
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
stream.subscribe((signal) => {
|
|
60
|
+
// Guaranteed to be within an active pointer session
|
|
61
|
+
const { phase, x, y } = signal.value;
|
|
62
|
+
});
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
For custom session boundaries, use `session` directly:
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { pipe, session } from "cereb";
|
|
69
|
+
|
|
70
|
+
const stream = pipe(
|
|
71
|
+
someStream,
|
|
72
|
+
session({
|
|
73
|
+
start: (signal) => signal.value.phase === "start",
|
|
74
|
+
end: (signal) => signal.value.phase === "end",
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
```
|
|
78
|
+
|
|
46
79
|
### DOM Events
|
|
47
80
|
|
|
48
81
|
Cereb includes factories to convert DOM events into streams, and to build higher-level streams by merging mouse/touch/pointer events.
|
|
@@ -58,11 +91,11 @@ You can also build a `singlePointer` stream from touch events:
|
|
|
58
91
|
|
|
59
92
|
```typescript
|
|
60
93
|
import { touchEvents, pipe } from "cereb";
|
|
61
|
-
import {
|
|
94
|
+
import { singlePointerRecognizer } from "cereb/single-pointer/touch";
|
|
62
95
|
|
|
63
96
|
const pointSomething$ = pipe(
|
|
64
97
|
touchEvents(somethingElement),
|
|
65
|
-
|
|
98
|
+
singlePointerRecognizer(),
|
|
66
99
|
);
|
|
67
100
|
|
|
68
101
|
pointSomething$.subscribe((signal) => { /* .. */ });
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Stream } from '../../core/stream.js';
|
|
2
|
+
import { SinglePointerSignal } from './single-pointer-signal.js';
|
|
3
|
+
import { SinglePointerOptions } from './types.js';
|
|
4
|
+
export declare function singlePointer(target: EventTarget, options?: SinglePointerOptions): Stream<SinglePointerSignal>;
|
|
5
|
+
//# sourceMappingURL=default-factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-factory.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/default-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAAC,mBAAmB,CAAC,CAG7B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { singlePointer } from './
|
|
1
|
+
export { singlePointer } from './default-factory.js';
|
|
2
2
|
export type { SINGLE_POINTER_SIGNAL_KIND, SinglePointer, SinglePointerSignal, } from './single-pointer-signal.js';
|
|
3
3
|
export type { SinglePointerButton, SinglePointerPhase, SinglePointerType } from './types.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type { SinglePointer } from './single-pointer-signal.js';
|
|
1
|
+
export { createMouseRecognizer, singlePointerFromMouse as singlePointerRecognizer, } from './recognizer-from-mouse.js';
|
|
3
2
|
//# sourceMappingURL=mouse.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/mouse.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mouse.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/mouse.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,IAAI,uBAAuB,GAClD,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export type {
|
|
2
|
-
export type { SinglePointer } from './single-pointer-signal.js';
|
|
1
|
+
export type { createPointerRecognizer, singlePointerFromPointer as singlePointerRecognizer, } from './recognizer-from-pointer.js';
|
|
3
2
|
//# sourceMappingURL=pointer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pointer.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,
|
|
1
|
+
{"version":3,"file":"pointer.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pointer.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,wBAAwB,IAAI,uBAAuB,GACpD,MAAM,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Operator } from '../../core/stream.js';
|
|
2
|
+
import { DomEventSignal } from '../dom-event/dom-event-signal.js';
|
|
3
|
+
import { SinglePointerRecognizer } from './recognizer.js';
|
|
4
|
+
import { SinglePointerSignal } from './single-pointer-signal.js';
|
|
5
|
+
import { SinglePointerOptions } from './types.js';
|
|
6
|
+
export declare function createMouseRecognizer(options?: SinglePointerOptions): SinglePointerRecognizer<DomEventSignal<MouseEvent>>;
|
|
7
|
+
export declare function singlePointerFromMouse(options?: SinglePointerOptions): Operator<DomEventSignal<MouseEvent>, SinglePointerSignal>;
|
|
8
|
+
//# sourceMappingURL=recognizer-from-mouse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recognizer-from-mouse.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/recognizer-from-mouse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAiC,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAEL,KAAK,oBAAoB,EAG1B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkCrD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,oBAAyB,GACjC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAuB3D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Operator } from '../../core/stream.js';
|
|
2
|
+
import { DomEventSignal } from '../dom-event/dom-event-signal.js';
|
|
3
|
+
import { SinglePointerRecognizer } from './recognizer.js';
|
|
4
|
+
import { SinglePointerSignal } from './single-pointer-signal.js';
|
|
5
|
+
import { SinglePointerOptions } from './types.js';
|
|
6
|
+
export declare function createPointerRecognizer(options?: SinglePointerOptions): SinglePointerRecognizer<DomEventSignal<PointerEvent>>;
|
|
7
|
+
export declare function singlePointerFromPointer(options?: SinglePointerOptions): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal>;
|
|
8
|
+
//# sourceMappingURL=recognizer-from-pointer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recognizer-from-pointer.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/recognizer-from-pointer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAiC,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAEL,KAAK,oBAAoB,EAI1B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA2CvD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,oBAAyB,GACjC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,CAyB7D"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Operator } from '../../core/stream.js';
|
|
2
|
+
import { DomEventSignal } from '../dom-event/dom-event-signal.js';
|
|
3
|
+
import { SinglePointerRecognizer } from './recognizer.js';
|
|
4
|
+
import { SinglePointerSignal } from './single-pointer-signal.js';
|
|
5
|
+
import { SinglePointerOptions } from './types.js';
|
|
6
|
+
export declare function createTouchRecognizer(options?: SinglePointerOptions): SinglePointerRecognizer<DomEventSignal<TouchEvent>>;
|
|
7
|
+
export declare function singlePointerFromTouch(options?: SinglePointerOptions): Operator<DomEventSignal<TouchEvent>, SinglePointerSignal>;
|
|
8
|
+
//# sourceMappingURL=recognizer-from-touch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recognizer-from-touch.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/recognizer-from-touch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAiC,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC9F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,oBAAoB,EAAsB,MAAM,YAAY,CAAC;AAE3E,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkCrD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,oBAAyB,GACjC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAyB3D"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Signal } from '../../core/signal.js';
|
|
2
|
+
import { SinglePointerSignal } from './single-pointer-signal.js';
|
|
3
|
+
import { SinglePointerOptions } from './types.js';
|
|
4
|
+
export interface SinglePointerRecognizer<InputSignal extends Signal> {
|
|
5
|
+
process(event: InputSignal): SinglePointerSignal;
|
|
6
|
+
readonly isActive: boolean;
|
|
7
|
+
reset(): void;
|
|
8
|
+
dispose(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare function createSinglePointerRecognizer<InputSignal extends Signal>(processor: (inputSignal: InputSignal, pointerSignal: SinglePointerSignal) => void, options?: SinglePointerOptions): SinglePointerRecognizer<InputSignal>;
|
|
11
|
+
//# sourceMappingURL=recognizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recognizer.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/recognizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,WAAW,uBAAuB,CAAC,WAAW,SAAS,MAAM;IACjE,OAAO,CAAC,KAAK,EAAE,WAAW,GAAG,mBAAmB,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,6BAA6B,CAAC,WAAW,SAAS,MAAM,EACtE,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,KAAK,IAAI,EACjF,OAAO,GAAE,oBAAyB,GACjC,uBAAuB,CAAC,WAAW,CAAC,CA8CtC"}
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export { createTouchEmitter, touchToSinglePointer as singlePointer } from './touch-emitter.js';
|
|
1
|
+
export { createTouchRecognizer, singlePointerFromTouch as singlePointerRecognizer, } from './recognizer-from-touch.js';
|
|
3
2
|
//# sourceMappingURL=touch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"touch.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/touch.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"touch.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/touch.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,IAAI,uBAAuB,GAClD,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export interface SinglePointerOptions {
|
|
2
|
+
pooling?: boolean;
|
|
3
|
+
}
|
|
1
4
|
export type SinglePointerType = "touch" | "mouse" | "pen" | "unknown";
|
|
2
5
|
export type SinglePointerPhase = "unknown" | "start" | "move" | "end" | "cancel";
|
|
3
6
|
export type SinglePointerButton = "none" | "primary" | "secondary" | "auxiliary" | "back" | "forward";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,MAAM,GACN,SAAS,CAAC;AAEd,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAiBzE"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAEtE,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAEjF,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,SAAS,GACT,WAAW,GACX,WAAW,GACX,MAAM,GACN,SAAS,CAAC;AAEd,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAiBzE"}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const v=require("./recognizer-BrqdN-1T.cjs"),i=require("./stream-Cp6eCZs2.cjs"),m=require("./types-BGR5Mhw9.cjs"),f="dom-event";function p(t){return v.createSignal(f,t)}function h(t,o,c){return i.createStream(n=>{const e=r=>{n.next(p(r))};return t.addEventListener(o,e,c),()=>{t.removeEventListener(o,e,c)}})}const s=["mousedown","mousemove","mouseup"];function S(t,o){return i.createStream(c=>{const n=e=>{c.next(p(e))};for(let e=0;e<s.length;e++){const r=s[e];t.addEventListener(r,n,o)}return()=>{for(let e=0;e<s.length;e++){const r=s[e];t.removeEventListener(r,n,o)}}})}const a=["pointerdown","pointermove","pointerup","pointercancel"];function d(t,o){return i.createStream(c=>{const n=e=>{c.next(p(e))};for(let e=0;e<a.length;e++){const r=a[e];t.addEventListener(r,n,o)}return()=>{for(let e=0;e<a.length;e++){const r=a[e];t.removeEventListener(r,n,o)}}})}const l=["touchstart","touchmove","touchend","touchcancel"];function b(t,o){return i.createStream(c=>{const n=e=>{c.next(p(e))};for(let e=0;e<l.length;e++){const r=l[e];t.addEventListener(r,n,o)}return()=>{for(let e=0;e<l.length;e++){const r=l[e];t.removeEventListener(r,n,o)}}})}function P(t={}){function o(c,n){const e=c.value;if(!e.isPrimary)return;let r,u;switch(e.type){case"pointerdown":r="start",u=m.toSinglePointerButton(e.button);break;case"pointerup":r="end",u=m.toSinglePointerButton(e.button);break;case"pointercancel":r="cancel",u="none";break;default:r="move",u="none"}n.value.id=`${e.pointerType}-${e.pointerId}`,n.value.phase=r,n.value.x=e.clientX,n.value.y=e.clientY,n.value.pageX=e.pageX,n.value.pageY=e.pageY,n.value.pointerType=N(e.pointerType),n.value.button=u,n.value.pressure=e.pressure}return v.createSinglePointerRecognizer(o,t)}function g(t={}){return o=>i.createStream(c=>{const n=P(t),e=o.subscribe({next(r){const u=n.process(r);u&&c.next(u)},error(r){c.error?.(r)},complete(){c.complete?.()}});return()=>{e(),n.dispose()}})}function N(t){switch(t){case"mouse":return"mouse";case"touch":return"touch";case"pen":return"pen";default:return"unknown"}}function T(t,o={}){const c=d(t);return g(o)(c)}function y(...t){return o=>E(o,...t)}function E(t,...o){return o.reduce((c,n)=>n(c),t)}exports.createObjectPool=v.createObjectPool;exports.setCerebDeviceId=v.setCerebDeviceId;exports.createStream=i.createStream;exports.compose=y;exports.domEvent=h;exports.mouseEvents=S;exports.pipe=E;exports.pointerEvents=d;exports.singlePointer=T;exports.touchEvents=b;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/browser/dom-event/dom-event-signal.ts","../src/browser/dom-event/dom-event.ts","../src/browser/dom-event/mouse-events.ts","../src/browser/dom-event/pointer-events.ts","../src/browser/dom-event/touch-events.ts","../src/browser/single-pointer/pointer-emitter.ts","../src/ochestrations/compose.ts","../src/ochestrations/pipe.ts"],"sourcesContent":["import { createSignal, type Signal } from \"../../core/signal.js\";\n\nexport interface DomEventSignal<E extends Event> extends Signal<\"dom-event\", E> {}\n\nexport const DOM_EVENT_SIGNAL_KIND = \"dom-event\" as const;\n\nexport function createDomEventSignal<E extends Event>(event: E): DomEventSignal<E> {\n return createSignal(DOM_EVENT_SIGNAL_KIND, event);\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nexport function domEvent(\n target: EventTarget,\n eventName: string,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<Event>> {\n return createStream<DomEventSignal<Event>>((observer) => {\n const handler = (e: Event) => {\n observer.next(createDomEventSignal(e));\n };\n\n target.addEventListener(eventName, handler, options);\n\n return () => {\n target.removeEventListener(eventName, handler, options);\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseup\"] as const;\n\nexport function mouseEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<MouseEvent>> {\n return createStream<DomEventSignal<MouseEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as MouseEvent));\n };\n\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst POINTER_EVENTS = [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] as const;\n\nexport function pointerEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<PointerEvent>> {\n return createStream<DomEventSignal<PointerEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as PointerEvent));\n };\n\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst TOUCH_EVENTS = [\"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"] as const;\n\nexport function touchEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<TouchEvent>> {\n return createStream((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as TouchEvent));\n };\n\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import type { Operator, Stream } from \"../../core/stream.js\";\nimport { createStream } from \"../../core/stream.js\";\nimport type { DomEventSignal } from \"../dom-event/dom-event-signal.js\";\nimport { pointerEvents } from \"../dom-event/pointer-events.js\";\nimport {\n createSinglePointerEmitter,\n type SinglePointerEmitter,\n type SinglePointerEmitterOptions,\n} from \"./emitter.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport {\n type SinglePointerButton,\n type SinglePointerPhase,\n type SinglePointerType,\n toSinglePointerButton,\n} from \"./types.js\";\n\nexport function createPointerEmitter(\n options: SinglePointerEmitterOptions = {},\n): SinglePointerEmitter<DomEventSignal<PointerEvent>> {\n function processer(\n domEventSignal: DomEventSignal<PointerEvent>,\n signal: SinglePointerSignal,\n ): void {\n const e = domEventSignal.value;\n\n if (!e.isPrimary) {\n return;\n }\n\n let phase: SinglePointerPhase;\n let button: SinglePointerButton;\n switch (e.type) {\n case \"pointerdown\":\n phase = \"start\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointerup\":\n phase = \"end\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointercancel\":\n phase = \"cancel\";\n button = \"none\";\n break;\n default:\n phase = \"move\";\n button = \"none\";\n }\n\n signal.value.id = `${e.pointerType}-${e.pointerId}`;\n signal.value.phase = phase;\n signal.value.x = e.clientX;\n signal.value.y = e.clientY;\n signal.value.pageX = e.pageX;\n signal.value.pageY = e.pageY;\n signal.value.pointerType = normalizePointerType(e.pointerType);\n signal.value.button = button;\n signal.value.pressure = e.pressure;\n }\n\n return createSinglePointerEmitter(processer, options);\n}\n\nexport function pointerToSinglePointer(\n options: SinglePointerEmitterOptions = {},\n): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal> {\n return (source) =>\n createStream((observer) => {\n const emitter = createPointerEmitter(options);\n\n const unsub = source.subscribe({\n next(event) {\n const pointer = emitter.process(event);\n if (pointer) {\n observer.next(pointer);\n }\n },\n error(err) {\n observer.error?.(err);\n },\n complete() {\n observer.complete?.();\n },\n });\n\n return () => {\n unsub();\n emitter.dispose();\n };\n });\n}\n\nexport function singlePointer(target: EventTarget): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return pointerToSinglePointer()(source);\n}\n\nfunction normalizePointerType(type: string): SinglePointerType {\n switch (type) {\n case \"mouse\":\n return \"mouse\";\n case \"touch\":\n return \"touch\";\n case \"pen\":\n return \"pen\";\n default:\n return \"unknown\";\n }\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator } from \"../core/stream.js\";\nimport { pipe } from \"../index.js\";\n\nexport function compose<T extends Signal, A extends Signal>(op1: Operator<T, A>): Operator<T, A>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Operator<T, B>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Operator<T, C>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Operator<T, D>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Operator<T, E>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal> {\n return (source) => pipe(source, ...operators);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator, Stream } from \"../core/stream.js\";\n\nexport function pipe<T extends Signal>(source: Stream<T>): Stream<T>;\nexport function pipe<T extends Signal, A extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n): Stream<A>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n H extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n op8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal> {\n return operators.reduce((prev, op) => op(prev), source as Stream<Signal>);\n}\n"],"names":["DOM_EVENT_SIGNAL_KIND","createDomEventSignal","event","createSignal","domEvent","target","eventName","options","createStream","observer","handler","e","MOUSE_EVENTS","mouseEvents","i","POINTER_EVENTS","pointerEvents","TOUCH_EVENTS","touchEvents","createPointerEmitter","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerEmitter","pointerToSinglePointer","source","emitter","unsub","pointer","err","singlePointer","type","compose","operators","pipe","prev","op"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/browser/dom-event/dom-event-signal.ts","../src/browser/dom-event/dom-event.ts","../src/browser/dom-event/mouse-events.ts","../src/browser/dom-event/pointer-events.ts","../src/browser/dom-event/touch-events.ts","../src/browser/single-pointer/recognizer-from-pointer.ts","../src/browser/single-pointer/default-factory.ts","../src/ochestrations/compose.ts","../src/ochestrations/pipe.ts"],"sourcesContent":["import { createSignal, type Signal } from \"../../core/signal.js\";\n\nexport interface DomEventSignal<E extends Event> extends Signal<\"dom-event\", E> {}\n\nexport const DOM_EVENT_SIGNAL_KIND = \"dom-event\" as const;\n\nexport function createDomEventSignal<E extends Event>(event: E): DomEventSignal<E> {\n return createSignal(DOM_EVENT_SIGNAL_KIND, event);\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nexport function domEvent(\n target: EventTarget,\n eventName: string,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<Event>> {\n return createStream<DomEventSignal<Event>>((observer) => {\n const handler = (e: Event) => {\n observer.next(createDomEventSignal(e));\n };\n\n target.addEventListener(eventName, handler, options);\n\n return () => {\n target.removeEventListener(eventName, handler, options);\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseup\"] as const;\n\nexport function mouseEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<MouseEvent>> {\n return createStream<DomEventSignal<MouseEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as MouseEvent));\n };\n\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst POINTER_EVENTS = [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] as const;\n\nexport function pointerEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<PointerEvent>> {\n return createStream<DomEventSignal<PointerEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as PointerEvent));\n };\n\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst TOUCH_EVENTS = [\"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"] as const;\n\nexport function touchEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<TouchEvent>> {\n return createStream((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as TouchEvent));\n };\n\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import type { Operator } from \"../../core/stream.js\";\nimport { createStream } from \"../../core/stream.js\";\nimport type { DomEventSignal } from \"../dom-event/dom-event-signal.js\";\nimport { createSinglePointerRecognizer, type SinglePointerRecognizer } from \"./recognizer.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport {\n type SinglePointerButton,\n type SinglePointerOptions,\n type SinglePointerPhase,\n type SinglePointerType,\n toSinglePointerButton,\n} from \"./types.js\";\n\nexport function createPointerRecognizer(\n options: SinglePointerOptions = {},\n): SinglePointerRecognizer<DomEventSignal<PointerEvent>> {\n function processer(\n domEventSignal: DomEventSignal<PointerEvent>,\n signal: SinglePointerSignal,\n ): void {\n const e = domEventSignal.value;\n\n if (!e.isPrimary) {\n return;\n }\n\n let phase: SinglePointerPhase;\n let button: SinglePointerButton;\n switch (e.type) {\n case \"pointerdown\":\n phase = \"start\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointerup\":\n phase = \"end\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointercancel\":\n phase = \"cancel\";\n button = \"none\";\n break;\n default:\n phase = \"move\";\n button = \"none\";\n }\n\n signal.value.id = `${e.pointerType}-${e.pointerId}`;\n signal.value.phase = phase;\n signal.value.x = e.clientX;\n signal.value.y = e.clientY;\n signal.value.pageX = e.pageX;\n signal.value.pageY = e.pageY;\n signal.value.pointerType = normalizePointerType(e.pointerType);\n signal.value.button = button;\n signal.value.pressure = e.pressure;\n }\n\n return createSinglePointerRecognizer(processer, options);\n}\n\nexport function singlePointerFromPointer(\n options: SinglePointerOptions = {},\n): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal> {\n return (source) =>\n createStream((observer) => {\n const recognizer = createPointerRecognizer(options);\n\n const unsub = source.subscribe({\n next(event) {\n const pointer = recognizer.process(event);\n if (pointer) {\n observer.next(pointer);\n }\n },\n error(err) {\n observer.error?.(err);\n },\n complete() {\n observer.complete?.();\n },\n });\n\n return () => {\n unsub();\n recognizer.dispose();\n };\n });\n}\n\nfunction normalizePointerType(type: string): SinglePointerType {\n switch (type) {\n case \"mouse\":\n return \"mouse\";\n case \"touch\":\n return \"touch\";\n case \"pen\":\n return \"pen\";\n default:\n return \"unknown\";\n }\n}\n","import type { Stream } from \"../../core/stream.js\";\nimport { pointerEvents } from \"../dom-event/pointer-events.js\";\nimport { singlePointerFromPointer } from \"./recognizer-from-pointer.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport type { SinglePointerOptions } from \"./types.js\";\n\nexport function singlePointer(\n target: EventTarget,\n options: SinglePointerOptions = {},\n): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return singlePointerFromPointer(options)(source);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator } from \"../core/stream.js\";\nimport { pipe } from \"../index.js\";\n\nexport function compose<T extends Signal, A extends Signal>(op1: Operator<T, A>): Operator<T, A>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Operator<T, B>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Operator<T, C>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Operator<T, D>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Operator<T, E>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal> {\n return (source) => pipe(source, ...operators);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator, Stream } from \"../core/stream.js\";\n\nexport function pipe<T extends Signal>(source: Stream<T>): Stream<T>;\nexport function pipe<T extends Signal, A extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n): Stream<A>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n H extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n op8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal> {\n return operators.reduce((prev, op) => op(prev), source as Stream<Signal>);\n}\n"],"names":["DOM_EVENT_SIGNAL_KIND","createDomEventSignal","event","createSignal","domEvent","target","eventName","options","createStream","observer","handler","e","MOUSE_EVENTS","mouseEvents","i","POINTER_EVENTS","pointerEvents","TOUCH_EVENTS","touchEvents","createPointerRecognizer","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerRecognizer","singlePointerFromPointer","source","recognizer","unsub","pointer","err","type","singlePointer","compose","operators","pipe","prev","op"],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { a as v, c as d } from "./
|
|
2
|
-
import { b as k, s as
|
|
1
|
+
import { a as v, c as d } from "./recognizer-FFAuyJ19.js";
|
|
2
|
+
import { b as k, s as z } from "./recognizer-FFAuyJ19.js";
|
|
3
3
|
import { c as i } from "./stream-CDK0RZPi.js";
|
|
4
4
|
import { t as m } from "./types-Ccnqx90M.js";
|
|
5
5
|
const f = "dom-event";
|
|
6
6
|
function l(t) {
|
|
7
7
|
return v(f, t);
|
|
8
8
|
}
|
|
9
|
-
function
|
|
9
|
+
function L(t, o, c) {
|
|
10
10
|
return i((n) => {
|
|
11
11
|
const e = (r) => {
|
|
12
12
|
n.next(l(r));
|
|
@@ -17,7 +17,7 @@ function P(t, o, c) {
|
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
19
|
const s = ["mousedown", "mousemove", "mouseup"];
|
|
20
|
-
function
|
|
20
|
+
function g(t, o) {
|
|
21
21
|
return i((c) => {
|
|
22
22
|
const n = (e) => {
|
|
23
23
|
c.next(l(e));
|
|
@@ -53,7 +53,7 @@ function E(t, o) {
|
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
55
|
const p = ["touchstart", "touchmove", "touchend", "touchcancel"];
|
|
56
|
-
function
|
|
56
|
+
function y(t, o) {
|
|
57
57
|
return i((c) => {
|
|
58
58
|
const n = (e) => {
|
|
59
59
|
c.next(l(e));
|
|
@@ -112,10 +112,6 @@ function N(t = {}) {
|
|
|
112
112
|
};
|
|
113
113
|
});
|
|
114
114
|
}
|
|
115
|
-
function _(t) {
|
|
116
|
-
const o = E(t);
|
|
117
|
-
return N()(o);
|
|
118
|
-
}
|
|
119
115
|
function b(t) {
|
|
120
116
|
switch (t) {
|
|
121
117
|
case "mouse":
|
|
@@ -128,22 +124,26 @@ function b(t) {
|
|
|
128
124
|
return "unknown";
|
|
129
125
|
}
|
|
130
126
|
}
|
|
131
|
-
function
|
|
132
|
-
|
|
127
|
+
function w(t, o = {}) {
|
|
128
|
+
const c = E(t);
|
|
129
|
+
return N(o)(c);
|
|
130
|
+
}
|
|
131
|
+
function _(...t) {
|
|
132
|
+
return (o) => P(o, ...t);
|
|
133
133
|
}
|
|
134
|
-
function
|
|
134
|
+
function P(t, ...o) {
|
|
135
135
|
return o.reduce((c, n) => n(c), t);
|
|
136
136
|
}
|
|
137
137
|
export {
|
|
138
|
-
|
|
138
|
+
_ as compose,
|
|
139
139
|
k as createObjectPool,
|
|
140
140
|
i as createStream,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
L as domEvent,
|
|
142
|
+
g as mouseEvents,
|
|
143
|
+
P as pipe,
|
|
144
144
|
E as pointerEvents,
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
145
|
+
z as setCerebDeviceId,
|
|
146
|
+
w as singlePointer,
|
|
147
|
+
y as touchEvents
|
|
148
148
|
};
|
|
149
149
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/browser/dom-event/dom-event-signal.ts","../src/browser/dom-event/dom-event.ts","../src/browser/dom-event/mouse-events.ts","../src/browser/dom-event/pointer-events.ts","../src/browser/dom-event/touch-events.ts","../src/browser/single-pointer/pointer-emitter.ts","../src/ochestrations/compose.ts","../src/ochestrations/pipe.ts"],"sourcesContent":["import { createSignal, type Signal } from \"../../core/signal.js\";\n\nexport interface DomEventSignal<E extends Event> extends Signal<\"dom-event\", E> {}\n\nexport const DOM_EVENT_SIGNAL_KIND = \"dom-event\" as const;\n\nexport function createDomEventSignal<E extends Event>(event: E): DomEventSignal<E> {\n return createSignal(DOM_EVENT_SIGNAL_KIND, event);\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nexport function domEvent(\n target: EventTarget,\n eventName: string,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<Event>> {\n return createStream<DomEventSignal<Event>>((observer) => {\n const handler = (e: Event) => {\n observer.next(createDomEventSignal(e));\n };\n\n target.addEventListener(eventName, handler, options);\n\n return () => {\n target.removeEventListener(eventName, handler, options);\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseup\"] as const;\n\nexport function mouseEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<MouseEvent>> {\n return createStream<DomEventSignal<MouseEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as MouseEvent));\n };\n\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst POINTER_EVENTS = [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] as const;\n\nexport function pointerEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<PointerEvent>> {\n return createStream<DomEventSignal<PointerEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as PointerEvent));\n };\n\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst TOUCH_EVENTS = [\"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"] as const;\n\nexport function touchEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<TouchEvent>> {\n return createStream((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as TouchEvent));\n };\n\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import type { Operator, Stream } from \"../../core/stream.js\";\nimport { createStream } from \"../../core/stream.js\";\nimport type { DomEventSignal } from \"../dom-event/dom-event-signal.js\";\nimport { pointerEvents } from \"../dom-event/pointer-events.js\";\nimport {\n createSinglePointerEmitter,\n type SinglePointerEmitter,\n type SinglePointerEmitterOptions,\n} from \"./emitter.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport {\n type SinglePointerButton,\n type SinglePointerPhase,\n type SinglePointerType,\n toSinglePointerButton,\n} from \"./types.js\";\n\nexport function createPointerEmitter(\n options: SinglePointerEmitterOptions = {},\n): SinglePointerEmitter<DomEventSignal<PointerEvent>> {\n function processer(\n domEventSignal: DomEventSignal<PointerEvent>,\n signal: SinglePointerSignal,\n ): void {\n const e = domEventSignal.value;\n\n if (!e.isPrimary) {\n return;\n }\n\n let phase: SinglePointerPhase;\n let button: SinglePointerButton;\n switch (e.type) {\n case \"pointerdown\":\n phase = \"start\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointerup\":\n phase = \"end\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointercancel\":\n phase = \"cancel\";\n button = \"none\";\n break;\n default:\n phase = \"move\";\n button = \"none\";\n }\n\n signal.value.id = `${e.pointerType}-${e.pointerId}`;\n signal.value.phase = phase;\n signal.value.x = e.clientX;\n signal.value.y = e.clientY;\n signal.value.pageX = e.pageX;\n signal.value.pageY = e.pageY;\n signal.value.pointerType = normalizePointerType(e.pointerType);\n signal.value.button = button;\n signal.value.pressure = e.pressure;\n }\n\n return createSinglePointerEmitter(processer, options);\n}\n\nexport function pointerToSinglePointer(\n options: SinglePointerEmitterOptions = {},\n): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal> {\n return (source) =>\n createStream((observer) => {\n const emitter = createPointerEmitter(options);\n\n const unsub = source.subscribe({\n next(event) {\n const pointer = emitter.process(event);\n if (pointer) {\n observer.next(pointer);\n }\n },\n error(err) {\n observer.error?.(err);\n },\n complete() {\n observer.complete?.();\n },\n });\n\n return () => {\n unsub();\n emitter.dispose();\n };\n });\n}\n\nexport function singlePointer(target: EventTarget): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return pointerToSinglePointer()(source);\n}\n\nfunction normalizePointerType(type: string): SinglePointerType {\n switch (type) {\n case \"mouse\":\n return \"mouse\";\n case \"touch\":\n return \"touch\";\n case \"pen\":\n return \"pen\";\n default:\n return \"unknown\";\n }\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator } from \"../core/stream.js\";\nimport { pipe } from \"../index.js\";\n\nexport function compose<T extends Signal, A extends Signal>(op1: Operator<T, A>): Operator<T, A>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Operator<T, B>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Operator<T, C>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Operator<T, D>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Operator<T, E>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal> {\n return (source) => pipe(source, ...operators);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator, Stream } from \"../core/stream.js\";\n\nexport function pipe<T extends Signal>(source: Stream<T>): Stream<T>;\nexport function pipe<T extends Signal, A extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n): Stream<A>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n H extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n op8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal> {\n return operators.reduce((prev, op) => op(prev), source as Stream<Signal>);\n}\n"],"names":["DOM_EVENT_SIGNAL_KIND","createDomEventSignal","event","createSignal","domEvent","target","eventName","options","createStream","observer","handler","e","MOUSE_EVENTS","mouseEvents","i","POINTER_EVENTS","pointerEvents","TOUCH_EVENTS","touchEvents","createPointerEmitter","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerEmitter","pointerToSinglePointer","source","emitter","unsub","pointer","err","singlePointer","type","compose","operators","pipe","prev","op"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/browser/dom-event/dom-event-signal.ts","../src/browser/dom-event/dom-event.ts","../src/browser/dom-event/mouse-events.ts","../src/browser/dom-event/pointer-events.ts","../src/browser/dom-event/touch-events.ts","../src/browser/single-pointer/recognizer-from-pointer.ts","../src/browser/single-pointer/default-factory.ts","../src/ochestrations/compose.ts","../src/ochestrations/pipe.ts"],"sourcesContent":["import { createSignal, type Signal } from \"../../core/signal.js\";\n\nexport interface DomEventSignal<E extends Event> extends Signal<\"dom-event\", E> {}\n\nexport const DOM_EVENT_SIGNAL_KIND = \"dom-event\" as const;\n\nexport function createDomEventSignal<E extends Event>(event: E): DomEventSignal<E> {\n return createSignal(DOM_EVENT_SIGNAL_KIND, event);\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nexport function domEvent(\n target: EventTarget,\n eventName: string,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<Event>> {\n return createStream<DomEventSignal<Event>>((observer) => {\n const handler = (e: Event) => {\n observer.next(createDomEventSignal(e));\n };\n\n target.addEventListener(eventName, handler, options);\n\n return () => {\n target.removeEventListener(eventName, handler, options);\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst MOUSE_EVENTS = [\"mousedown\", \"mousemove\", \"mouseup\"] as const;\n\nexport function mouseEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<MouseEvent>> {\n return createStream<DomEventSignal<MouseEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as MouseEvent));\n };\n\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < MOUSE_EVENTS.length; i++) {\n const eventName = MOUSE_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst POINTER_EVENTS = [\"pointerdown\", \"pointermove\", \"pointerup\", \"pointercancel\"] as const;\n\nexport function pointerEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<PointerEvent>> {\n return createStream<DomEventSignal<PointerEvent>>((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as PointerEvent));\n };\n\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < POINTER_EVENTS.length; i++) {\n const eventName = POINTER_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import { createStream, type Stream } from \"../../core/stream.js\";\nimport { createDomEventSignal, type DomEventSignal } from \"./dom-event-signal.js\";\n\nconst TOUCH_EVENTS = [\"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\"] as const;\n\nexport function touchEvents(\n target: EventTarget,\n options?: AddEventListenerOptions,\n): Stream<DomEventSignal<TouchEvent>> {\n return createStream((observer) => {\n const handler = (event: Event) => {\n observer.next(createDomEventSignal(event as TouchEvent));\n };\n\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.addEventListener(eventName, handler, options);\n }\n\n return () => {\n for (let i = 0; i < TOUCH_EVENTS.length; i++) {\n const eventName = TOUCH_EVENTS[i];\n target.removeEventListener(eventName, handler, options);\n }\n };\n });\n}\n","import type { Operator } from \"../../core/stream.js\";\nimport { createStream } from \"../../core/stream.js\";\nimport type { DomEventSignal } from \"../dom-event/dom-event-signal.js\";\nimport { createSinglePointerRecognizer, type SinglePointerRecognizer } from \"./recognizer.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport {\n type SinglePointerButton,\n type SinglePointerOptions,\n type SinglePointerPhase,\n type SinglePointerType,\n toSinglePointerButton,\n} from \"./types.js\";\n\nexport function createPointerRecognizer(\n options: SinglePointerOptions = {},\n): SinglePointerRecognizer<DomEventSignal<PointerEvent>> {\n function processer(\n domEventSignal: DomEventSignal<PointerEvent>,\n signal: SinglePointerSignal,\n ): void {\n const e = domEventSignal.value;\n\n if (!e.isPrimary) {\n return;\n }\n\n let phase: SinglePointerPhase;\n let button: SinglePointerButton;\n switch (e.type) {\n case \"pointerdown\":\n phase = \"start\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointerup\":\n phase = \"end\";\n button = toSinglePointerButton(e.button);\n break;\n case \"pointercancel\":\n phase = \"cancel\";\n button = \"none\";\n break;\n default:\n phase = \"move\";\n button = \"none\";\n }\n\n signal.value.id = `${e.pointerType}-${e.pointerId}`;\n signal.value.phase = phase;\n signal.value.x = e.clientX;\n signal.value.y = e.clientY;\n signal.value.pageX = e.pageX;\n signal.value.pageY = e.pageY;\n signal.value.pointerType = normalizePointerType(e.pointerType);\n signal.value.button = button;\n signal.value.pressure = e.pressure;\n }\n\n return createSinglePointerRecognizer(processer, options);\n}\n\nexport function singlePointerFromPointer(\n options: SinglePointerOptions = {},\n): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal> {\n return (source) =>\n createStream((observer) => {\n const recognizer = createPointerRecognizer(options);\n\n const unsub = source.subscribe({\n next(event) {\n const pointer = recognizer.process(event);\n if (pointer) {\n observer.next(pointer);\n }\n },\n error(err) {\n observer.error?.(err);\n },\n complete() {\n observer.complete?.();\n },\n });\n\n return () => {\n unsub();\n recognizer.dispose();\n };\n });\n}\n\nfunction normalizePointerType(type: string): SinglePointerType {\n switch (type) {\n case \"mouse\":\n return \"mouse\";\n case \"touch\":\n return \"touch\";\n case \"pen\":\n return \"pen\";\n default:\n return \"unknown\";\n }\n}\n","import type { Stream } from \"../../core/stream.js\";\nimport { pointerEvents } from \"../dom-event/pointer-events.js\";\nimport { singlePointerFromPointer } from \"./recognizer-from-pointer.js\";\nimport type { SinglePointerSignal } from \"./single-pointer-signal.js\";\nimport type { SinglePointerOptions } from \"./types.js\";\n\nexport function singlePointer(\n target: EventTarget,\n options: SinglePointerOptions = {},\n): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return singlePointerFromPointer(options)(source);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator } from \"../core/stream.js\";\nimport { pipe } from \"../index.js\";\n\nexport function compose<T extends Signal, A extends Signal>(op1: Operator<T, A>): Operator<T, A>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Operator<T, B>;\nexport function compose<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Operator<T, C>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Operator<T, D>;\nexport function compose<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Operator<T, E>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal>;\nexport function compose(...operators: Operator<Signal, Signal>[]): Operator<Signal, Signal> {\n return (source) => pipe(source, ...operators);\n}\n","import type { Signal } from \"../core/signal.js\";\nimport type { Operator, Stream } from \"../core/stream.js\";\n\nexport function pipe<T extends Signal>(source: Stream<T>): Stream<T>;\nexport function pipe<T extends Signal, A extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n): Stream<A>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n): Stream<B>;\nexport function pipe<T extends Signal, A extends Signal, B extends Signal, C extends Signal>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n): Stream<C>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n): Stream<D>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n): Stream<E>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n): Stream<F>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n): Stream<G>;\nexport function pipe<\n T extends Signal,\n A extends Signal,\n B extends Signal,\n C extends Signal,\n D extends Signal,\n E extends Signal,\n F extends Signal,\n G extends Signal,\n H extends Signal,\n>(\n source: Stream<T>,\n op1: Operator<T, A>,\n op2: Operator<A, B>,\n op3: Operator<B, C>,\n op4: Operator<C, D>,\n op5: Operator<D, E>,\n op6: Operator<E, F>,\n op7: Operator<F, G>,\n op8: Operator<G, H>,\n): Stream<H>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal>;\nexport function pipe<T extends Signal>(\n source: Stream<T>,\n ...operators: Operator<Signal, Signal>[]\n): Stream<Signal> {\n return operators.reduce((prev, op) => op(prev), source as Stream<Signal>);\n}\n"],"names":["DOM_EVENT_SIGNAL_KIND","createDomEventSignal","event","createSignal","domEvent","target","eventName","options","createStream","observer","handler","e","MOUSE_EVENTS","mouseEvents","i","POINTER_EVENTS","pointerEvents","TOUCH_EVENTS","touchEvents","createPointerRecognizer","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerRecognizer","singlePointerFromPointer","source","recognizer","unsub","pointer","err","type","singlePointer","compose","operators","pipe","prev","op"],"mappings":";;;;AAIO,MAAMA,IAAwB;AAE9B,SAASC,EAAsCC,GAA6B;AACjF,SAAOC,EAAaH,GAAuBE,CAAK;AAClD;ACLO,SAASE,EACdC,GACAC,GACAC,GAC+B;AAC/B,SAAOC,EAAoC,CAACC,MAAa;AACvD,UAAMC,IAAU,CAACC,MAAa;AAC5B,MAAAF,EAAS,KAAKR,EAAqBU,CAAC,CAAC;AAAA,IACvC;AAEA,WAAAN,EAAO,iBAAiBC,GAAWI,GAASH,CAAO,GAE5C,MAAM;AACX,MAAAF,EAAO,oBAAoBC,GAAWI,GAASH,CAAO;AAAA,IACxD;AAAA,EACF,CAAC;AACH;AChBA,MAAMK,IAAe,CAAC,aAAa,aAAa,SAAS;AAElD,SAASC,EACdR,GACAE,GACoC;AACpC,SAAOC,EAAyC,CAACC,MAAa;AAC5D,UAAMC,IAAU,CAACR,MAAiB;AAChC,MAAAO,EAAS,KAAKR,EAAqBC,CAAmB,CAAC;AAAA,IACzD;AAEA,aAASY,IAAI,GAAGA,IAAIF,EAAa,QAAQE,KAAK;AAC5C,YAAMR,IAAYM,EAAaE,CAAC;AAChC,MAAAT,EAAO,iBAAiBC,GAAWI,GAASH,CAAO;AAAA,IACrD;AAEA,WAAO,MAAM;AACX,eAASO,IAAI,GAAGA,IAAIF,EAAa,QAAQE,KAAK;AAC5C,cAAMR,IAAYM,EAAaE,CAAC;AAChC,QAAAT,EAAO,oBAAoBC,GAAWI,GAASH,CAAO;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AACH;ACvBA,MAAMQ,IAAiB,CAAC,eAAe,eAAe,aAAa,eAAe;AAE3E,SAASC,EACdX,GACAE,GACsC;AACtC,SAAOC,EAA2C,CAACC,MAAa;AAC9D,UAAMC,IAAU,CAACR,MAAiB;AAChC,MAAAO,EAAS,KAAKR,EAAqBC,CAAqB,CAAC;AAAA,IAC3D;AAEA,aAASY,IAAI,GAAGA,IAAIC,EAAe,QAAQD,KAAK;AAC9C,YAAMR,IAAYS,EAAeD,CAAC;AAClC,MAAAT,EAAO,iBAAiBC,GAAWI,GAASH,CAAO;AAAA,IACrD;AAEA,WAAO,MAAM;AACX,eAASO,IAAI,GAAGA,IAAIC,EAAe,QAAQD,KAAK;AAC9C,cAAMR,IAAYS,EAAeD,CAAC;AAClC,QAAAT,EAAO,oBAAoBC,GAAWI,GAASH,CAAO;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AACH;ACvBA,MAAMU,IAAe,CAAC,cAAc,aAAa,YAAY,aAAa;AAEnE,SAASC,EACdb,GACAE,GACoC;AACpC,SAAOC,EAAa,CAACC,MAAa;AAChC,UAAMC,IAAU,CAACR,MAAiB;AAChC,MAAAO,EAAS,KAAKR,EAAqBC,CAAmB,CAAC;AAAA,IACzD;AAEA,aAASY,IAAI,GAAGA,IAAIG,EAAa,QAAQH,KAAK;AAC5C,YAAMR,IAAYW,EAAaH,CAAC;AAChC,MAAAT,EAAO,iBAAiBC,GAAWI,GAASH,CAAO;AAAA,IACrD;AAEA,WAAO,MAAM;AACX,eAASO,IAAI,GAAGA,IAAIG,EAAa,QAAQH,KAAK;AAC5C,cAAMR,IAAYW,EAAaH,CAAC;AAChC,QAAAT,EAAO,oBAAoBC,GAAWI,GAASH,CAAO;AAAA,MACxD;AAAA,IACF;AAAA,EACF,CAAC;AACH;ACbO,SAASY,EACdZ,IAAgC,IACuB;AACvD,WAASa,EACPC,GACAC,GACM;AACN,UAAM,IAAID,EAAe;AAEzB,QAAI,CAAC,EAAE;AACL;AAGF,QAAIE,GACAC;AACJ,YAAQ,EAAE,MAAA;AAAA,MACR,KAAK;AACH,QAAAD,IAAQ,SACRC,IAASC,EAAsB,EAAE,MAAM;AACvC;AAAA,MACF,KAAK;AACH,QAAAF,IAAQ,OACRC,IAASC,EAAsB,EAAE,MAAM;AACvC;AAAA,MACF,KAAK;AACH,QAAAF,IAAQ,UACRC,IAAS;AACT;AAAA,MACF;AACE,QAAAD,IAAQ,QACRC,IAAS;AAAA,IAAA;AAGb,IAAAF,EAAO,MAAM,KAAK,GAAG,EAAE,WAAW,IAAI,EAAE,SAAS,IACjDA,EAAO,MAAM,QAAQC,GACrBD,EAAO,MAAM,IAAI,EAAE,SACnBA,EAAO,MAAM,IAAI,EAAE,SACnBA,EAAO,MAAM,QAAQ,EAAE,OACvBA,EAAO,MAAM,QAAQ,EAAE,OACvBA,EAAO,MAAM,cAAcI,EAAqB,EAAE,WAAW,GAC7DJ,EAAO,MAAM,SAASE,GACtBF,EAAO,MAAM,WAAW,EAAE;AAAA,EAC5B;AAEA,SAAOK,EAA8BP,GAAWb,CAAO;AACzD;AAEO,SAASqB,EACdrB,IAAgC,IAC6B;AAC7D,SAAO,CAACsB,MACNrB,EAAa,CAACC,MAAa;AACzB,UAAMqB,IAAaX,EAAwBZ,CAAO,GAE5CwB,IAAQF,EAAO,UAAU;AAAA,MAC7B,KAAK3B,GAAO;AACV,cAAM8B,IAAUF,EAAW,QAAQ5B,CAAK;AACxC,QAAI8B,KACFvB,EAAS,KAAKuB,CAAO;AAAA,MAEzB;AAAA,MACA,MAAMC,GAAK;AACT,QAAAxB,EAAS,QAAQwB,CAAG;AAAA,MACtB;AAAA,MACA,WAAW;AACT,QAAAxB,EAAS,WAAA;AAAA,MACX;AAAA,IAAA,CACD;AAED,WAAO,MAAM;AACX,MAAAsB,EAAA,GACAD,EAAW,QAAA;AAAA,IACb;AAAA,EACF,CAAC;AACL;AAEA,SAASJ,EAAqBQ,GAAiC;AAC7D,UAAQA,GAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AC9FO,SAASC,EACd9B,GACAE,IAAgC,IACH;AAC7B,QAAMsB,IAASb,EAAcX,CAAM;AACnC,SAAOuB,EAAyBrB,CAAO,EAAEsB,CAAM;AACjD;AC6BO,SAASO,KAAWC,GAAiE;AAC1F,SAAO,CAACR,MAAWS,EAAKT,GAAQ,GAAGQ,CAAS;AAC9C;ACiEO,SAASC,EACdT,MACGQ,GACa;AAChB,SAAOA,EAAU,OAAO,CAACE,GAAMC,MAAOA,EAAGD,CAAI,GAAGV,CAAwB;AAC1E;"}
|
|
@@ -5,6 +5,7 @@ export { filter } from './filter.js';
|
|
|
5
5
|
export { map } from './map.js';
|
|
6
6
|
export { merge, mergeWith } from './merge.js';
|
|
7
7
|
export { offset } from './offset.js';
|
|
8
|
+
export { session, singlePointerSession } from './session.js';
|
|
8
9
|
export { share, shareReplay } from './share.js';
|
|
9
10
|
export { skip, skipUntil, skipWhile } from './skip.js';
|
|
10
11
|
export { spy, tap } from './spy.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/operators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SinglePointerSignal } from '../browser/single-pointer/single-pointer-signal.js';
|
|
2
|
+
import { Signal } from '../core/signal.js';
|
|
3
|
+
import { Operator } from '../core/stream.js';
|
|
4
|
+
export interface SessionOptions<T extends Signal> {
|
|
5
|
+
start: (signal: T) => boolean;
|
|
6
|
+
end: (signal: T) => boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Filters signals to only emit during active sessions.
|
|
10
|
+
* A session begins when the start predicate returns true and ends when the end predicate returns true.
|
|
11
|
+
* Both start and end signals are included in the output.
|
|
12
|
+
* Sessions can repeat: after an end, the next start begins a new session.
|
|
13
|
+
*/
|
|
14
|
+
export declare function session<T extends Signal>(options: SessionOptions<T>): Operator<T, T>;
|
|
15
|
+
export declare function singlePointerSession(): Operator<SinglePointerSignal, SinglePointerSignal>;
|
|
16
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/operators/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oDAAoD,CAAC;AAC9F,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM;IAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;IAC9B,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,OAAO,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CA2BpF;AAED,wBAAgB,oBAAoB,IAAI,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CAKzF"}
|
package/dist/operators.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./stream-Cp6eCZs2.cjs");function
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./stream-Cp6eCZs2.cjs");function x(c){return r=>i.createStream(e=>{let t=[];return r.subscribe({next(n){t.push(n),t.length>=c&&(e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),t=[])},error:e.error?.bind(e),complete(){t.length>0&&e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),e.complete?.()}})})}function h(c){return r=>i.createStream(e=>{let t=[];const n=setInterval(()=>{t.length>0&&(e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),t=[])},c),u=r.subscribe({next(l){t.push(l)},error:e.error?.bind(e),complete(){clearInterval(n),t.length>0&&e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),e.complete?.()}});return()=>{clearInterval(n),u()}})}function k(c){return r=>i.createStream(e=>{let t=[];const n=c.subscribe(()=>{t.length>0&&(e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),t=[])}),u=r.subscribe({next(l){t.push(l)},error:e.error?.bind(e),complete(){n(),t.length>0&&e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),e.complete?.()}});return()=>{n(),u()}})}function g(c){return r=>i.createStream(e=>{let t=null;const n=r.subscribe({next(u){t!==null&&clearTimeout(t),t=setTimeout(()=>{t=null,e.next(u)},c)},error:e.error?.bind(e),complete(){t!==null&&clearTimeout(t),e.complete?.()}});return()=>{t!==null&&clearTimeout(t),n()}})}function S(c){const r=c??((e,t)=>e.value===t.value);return e=>i.createStream(t=>{let n=!1,u;return e.subscribe({next(l){(!n||!r(u,l))&&(n=!0,u=l,t.next(l))},error:t.error?.bind(t),complete:t.complete?.bind(t)})})}function y(c,r){const e=r??((t,n)=>t===n);return t=>i.createStream(n=>{let u=!1,l;return t.subscribe({next(o){const f=c(o);(!u||!e(l,f))&&(u=!0,l=f,n.next(o))},error:n.error?.bind(n),complete:n.complete?.bind(n)})})}function U(c){return r=>i.createStream(e=>r.subscribe({next(t){try{c(t)&&e.next(t)}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}function w(c){return r=>i.createStream(e=>r.subscribe({next(t){try{e.next(c(t))}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}function I(c){return r=>i.createStream(e=>{let t=0;const n=()=>{t++,t===2&&e.complete?.()},u=r.subscribe({next:o=>e.next(o),error:e.error?.bind(e),complete:n}),l=c.subscribe({next:o=>e.next(o),error:e.error?.bind(e),complete:n});return()=>{u(),l()}})}function T(...c){return i.createStream(r=>{let e=0;const t=c.map(n=>n.subscribe({next:u=>r.next(u),error:r.error?.bind(r),complete:()=>{e++,e===c.length&&r.complete?.()}}));return()=>{for(const n of t)n()}})}function A(c){const{target:r,manual:e=!1}=c;if(!r)throw new Error("offset operator requires a valid target element");let t=null;function n(){return e&&t||(t=r.getBoundingClientRect()),t}function u(){t=r.getBoundingClientRect()}const l=o=>i.createStream(f=>{const d=o.subscribe({next(s){try{const a=n(),m=s.value;m.offsetX=m.x-a.left,m.offsetY=m.y-a.top,f.next(s)}catch(a){f.error?.(a)}},error:f.error?.bind(f),complete(){f.complete?.()}});return()=>{d()}});return l.recalculate=u,l}function p(c){return r=>i.createStream(e=>{let t=!1;return r.subscribe({next(n){try{t?(e.next(n),c.end(n)&&(t=!1)):c.start(n)&&(t=!0,e.next(n))}catch(u){e.error?.(u)}},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function C(){return p({start:c=>c.value.phase==="start",end:c=>c.value.phase==="end"||c.value.phase==="cancel"})}function W(){return c=>{const r=new Set;let e=null,t=!1;return{get isBlocked(){return t},block(){t=!0},unblock(){t=!1},subscribe(n){const u=i.toObserver(n);return r.add(u),r.size===1&&(e=c.subscribe({next(l){if(!t)for(const o of r)o.next(l)},error(l){for(const o of r)o.error?.(l)},complete(){for(const l of r)l.complete?.();r.clear(),e=null}})),()=>{r.delete(u),r.size===0&&e&&(e(),e=null)}}}}}function D(c=1){return r=>{const e=[],t=new Set;let n=null,u=!1,l=!1,o,f=!1;return{get isBlocked(){return f},block(){f=!0},unblock(){f=!1},subscribe(d){const s=i.toObserver(d);for(const a of e)s.next(a);return u?(s.complete?.(),()=>{}):l?(s.error?.(o),()=>{}):(t.add(s),t.size===1&&!n&&(n=r.subscribe({next(a){if(e.push(a),e.length>c&&e.shift(),!f)for(const m of t)m.next(a)},error(a){l=!0,o=a;for(const m of t)m.error?.(a);t.clear(),n=null},complete(){u=!0;for(const a of t)a.complete?.();t.clear(),n=null}})),()=>{t.delete(s),t.size===0&&n&&!u&&!l&&(n(),n=null)})}}}}function R(c){return r=>i.createStream(e=>{let t=0;return r.subscribe({next(n){t<c?t++:e.next(n)},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function q(c){return r=>i.createStream(e=>{let t=!0;return r.subscribe({next(n){t&&!c(n)&&(t=!1),t||e.next(n)},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function z(c){return r=>i.createStream(e=>{let t=!0;const n=c.subscribe(()=>{t=!1,n()}),u=r.subscribe({next(l){t||e.next(l)},error:e.error?.bind(e),complete:e.complete?.bind(e)});return()=>{n(),u()}})}function b(c){return r=>i.createStream(e=>r.subscribe({next(t){try{c(t),e.next(t)}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}const B=b;function E(c){return r=>i.createStream(e=>{let t=0,n;return n=r.subscribe({next(u){t<c&&(t++,e.next(u),t>=c&&(e.complete?.(),n?.()))},error:e.error?.bind(e),complete:e.complete?.bind(e)}),()=>n?.()})}function L(c){return r=>i.createStream(e=>{let t;return t=r.subscribe({next(n){c(n)?e.next(n):(e.complete?.(),t?.())},error:e.error?.bind(e),complete:e.complete?.bind(e)}),()=>t?.()})}function V(c){return r=>i.createStream(e=>{let t=!1;const n=c.subscribe(()=>{t||(t=!0,e.complete?.(),l())}),u=r.subscribe({next(o){t||e.next(o)},error:e.error?.bind(e),complete(){t||(t=!0,e.complete?.())}}),l=()=>{n(),u()};return l})}function K(c){return r=>i.createStream(e=>{let t=null;return r.subscribe({next(n){const u=performance.now();(t===null||u-t>=c)&&(t=u,e.next(n))},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function O(c){return r=>i.createStream(e=>{let t,n=!1,u=null;const l=r.subscribe({next(o){t=o,n=!0,u===null&&(u=setTimeout(()=>{n&&(e.next(t),n=!1),u=null},c))},error:e.error?.bind(e),complete(){u!==null&&(clearTimeout(u),n&&e.next(t)),e.complete?.()}});return()=>{u!==null&&clearTimeout(u),l()}})}exports.buffer=x;exports.bufferTime=h;exports.bufferWhen=k;exports.debounce=g;exports.distinctUntilChanged=S;exports.distinctUntilKeyChanged=y;exports.filter=U;exports.map=w;exports.merge=T;exports.mergeWith=I;exports.offset=A;exports.session=p;exports.share=W;exports.shareReplay=D;exports.singlePointerSession=C;exports.skip=R;exports.skipUntil=z;exports.skipWhile=q;exports.spy=b;exports.take=E;exports.takeUntil=V;exports.takeWhile=L;exports.tap=B;exports.throttle=K;exports.throttleLast=O;
|
|
2
2
|
//# sourceMappingURL=operators.cjs.map
|