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.
Files changed (57) hide show
  1. package/README.md +35 -2
  2. package/dist/browser/single-pointer/default-factory.d.ts +5 -0
  3. package/dist/browser/single-pointer/default-factory.d.ts.map +1 -0
  4. package/dist/browser/single-pointer/index.d.ts +1 -1
  5. package/dist/browser/single-pointer/mouse.d.ts +1 -2
  6. package/dist/browser/single-pointer/mouse.d.ts.map +1 -1
  7. package/dist/browser/single-pointer/pointer.d.ts +1 -2
  8. package/dist/browser/single-pointer/pointer.d.ts.map +1 -1
  9. package/dist/browser/single-pointer/recognizer-from-mouse.d.ts +8 -0
  10. package/dist/browser/single-pointer/recognizer-from-mouse.d.ts.map +1 -0
  11. package/dist/browser/single-pointer/recognizer-from-pointer.d.ts +8 -0
  12. package/dist/browser/single-pointer/recognizer-from-pointer.d.ts.map +1 -0
  13. package/dist/browser/single-pointer/recognizer-from-touch.d.ts +8 -0
  14. package/dist/browser/single-pointer/recognizer-from-touch.d.ts.map +1 -0
  15. package/dist/browser/single-pointer/recognizer.d.ts +11 -0
  16. package/dist/browser/single-pointer/recognizer.d.ts.map +1 -0
  17. package/dist/browser/single-pointer/touch.d.ts +1 -2
  18. package/dist/browser/single-pointer/touch.d.ts.map +1 -1
  19. package/dist/browser/single-pointer/types.d.ts +3 -0
  20. package/dist/browser/single-pointer/types.d.ts.map +1 -1
  21. package/dist/index.cjs +1 -1
  22. package/dist/index.cjs.map +1 -1
  23. package/dist/index.js +19 -19
  24. package/dist/index.js.map +1 -1
  25. package/dist/operators/index.d.ts +1 -0
  26. package/dist/operators/index.d.ts.map +1 -1
  27. package/dist/operators/session.d.ts +16 -0
  28. package/dist/operators/session.d.ts.map +1 -0
  29. package/dist/operators.cjs +1 -1
  30. package/dist/operators.cjs.map +1 -1
  31. package/dist/operators.js +70 -46
  32. package/dist/operators.js.map +1 -1
  33. package/dist/{emitter-CyT5OiQO.cjs → recognizer-BrqdN-1T.cjs} +2 -2
  34. package/dist/recognizer-BrqdN-1T.cjs.map +1 -0
  35. package/dist/{emitter-FFAuyJ19.js → recognizer-FFAuyJ19.js} +1 -1
  36. package/dist/recognizer-FFAuyJ19.js.map +1 -0
  37. package/dist/single-pointer/mouse.cjs +1 -1
  38. package/dist/single-pointer/mouse.cjs.map +1 -1
  39. package/dist/single-pointer/mouse.js +17 -17
  40. package/dist/single-pointer/mouse.js.map +1 -1
  41. package/dist/single-pointer/touch.cjs +1 -1
  42. package/dist/single-pointer/touch.cjs.map +1 -1
  43. package/dist/single-pointer/touch.js +9 -9
  44. package/dist/single-pointer/touch.js.map +1 -1
  45. package/dist/types-BGR5Mhw9.cjs.map +1 -1
  46. package/dist/types-Ccnqx90M.js.map +1 -1
  47. package/package.json +1 -1
  48. package/dist/browser/single-pointer/emitter.d.ts +0 -13
  49. package/dist/browser/single-pointer/emitter.d.ts.map +0 -1
  50. package/dist/browser/single-pointer/mouse-emitter.d.ts +0 -7
  51. package/dist/browser/single-pointer/mouse-emitter.d.ts.map +0 -1
  52. package/dist/browser/single-pointer/pointer-emitter.d.ts +0 -8
  53. package/dist/browser/single-pointer/pointer-emitter.d.ts.map +0 -1
  54. package/dist/browser/single-pointer/touch-emitter.d.ts +0 -7
  55. package/dist/browser/single-pointer/touch-emitter.d.ts.map +0 -1
  56. package/dist/emitter-CyT5OiQO.cjs.map +0 -1
  57. 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 { singlePointerEmitter } from "cereb/single-pointer/touch";
94
+ import { singlePointerRecognizer } from "cereb/single-pointer/touch";
62
95
 
63
96
  const pointSomething$ = pipe(
64
97
  touchEvents(somethingElement),
65
- singlePointerEmitter(),
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 './pointer-emitter.js';
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 { createMouseEmitter, mouseToSinglePointer as singlePointer } from './mouse-emitter.js';
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,EAAE,kBAAkB,EAAE,oBAAoB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC/F,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
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 { createPointerEmitter, pointerToSinglePointer, singlePointer, } from './pointer-emitter.js';
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,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC"}
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 type { SinglePointer } from './single-pointer-signal.js';
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,YAAY,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
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 m=require("./emitter-CyT5OiQO.cjs"),i=require("./stream-Cp6eCZs2.cjs"),v=require("./types-BGR5Mhw9.cjs"),f="dom-event";function p(t){return m.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=v.toSinglePointerButton(e.button);break;case"pointerup":r="end",u=v.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=y(e.pointerType),n.value.button=u,n.value.pressure=e.pressure}return m.createSinglePointerEmitter(o,t)}function N(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 T(t){const o=d(t);return N()(o)}function y(t){switch(t){case"mouse":return"mouse";case"touch":return"touch";case"pen":return"pen";default:return"unknown"}}function L(...t){return o=>E(o,...t)}function E(t,...o){return o.reduce((c,n)=>n(c),t)}exports.createObjectPool=m.createObjectPool;exports.setCerebDeviceId=m.setCerebDeviceId;exports.createStream=i.createStream;exports.compose=L;exports.domEvent=h;exports.mouseEvents=S;exports.pipe=E;exports.pointerEvents=d;exports.singlePointer=T;exports.touchEvents=b;
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
@@ -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 "./emitter-FFAuyJ19.js";
2
- import { b as k, s as D } from "./emitter-FFAuyJ19.js";
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 P(t, o, c) {
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 y(t, o) {
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 w(t, o) {
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 I(...t) {
132
- return (o) => S(o, ...t);
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 S(t, ...o) {
134
+ function P(t, ...o) {
135
135
  return o.reduce((c, n) => n(c), t);
136
136
  }
137
137
  export {
138
- I as compose,
138
+ _ as compose,
139
139
  k as createObjectPool,
140
140
  i as createStream,
141
- P as domEvent,
142
- y as mouseEvents,
143
- S as pipe,
141
+ L as domEvent,
142
+ g as mouseEvents,
143
+ P as pipe,
144
144
  E as pointerEvents,
145
- D as setCerebDeviceId,
146
- _ as singlePointer,
147
- w as touchEvents
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":"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"}
@@ -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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./stream-Cp6eCZs2.cjs");function b(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 x(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 h(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 k(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 g(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 S(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 y(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 w(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 I(...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 T(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 A(){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 C(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 W(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 D(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 R(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 p(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 q=p;function z(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 B(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 E(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 L(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 V(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=b;exports.bufferTime=x;exports.bufferWhen=h;exports.debounce=k;exports.distinctUntilChanged=g;exports.distinctUntilKeyChanged=S;exports.filter=U;exports.map=y;exports.merge=I;exports.mergeWith=w;exports.offset=T;exports.share=A;exports.shareReplay=C;exports.skip=W;exports.skipUntil=R;exports.skipWhile=D;exports.spy=p;exports.take=z;exports.takeUntil=E;exports.takeWhile=B;exports.tap=q;exports.throttle=L;exports.throttleLast=V;
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