cereb 0.2.0 → 0.3.1

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 (56) hide show
  1. package/README.md +28 -7
  2. package/dist/browser/single-pointer/index.d.ts +1 -1
  3. package/dist/browser/single-pointer/index.d.ts.map +1 -1
  4. package/dist/browser/single-pointer/mouse.d.ts +1 -2
  5. package/dist/browser/single-pointer/mouse.d.ts.map +1 -1
  6. package/dist/browser/single-pointer/pointer.d.ts +1 -2
  7. package/dist/browser/single-pointer/pointer.d.ts.map +1 -1
  8. package/dist/browser/single-pointer/recognizer-from-mouse.d.ts +7 -0
  9. package/dist/browser/single-pointer/recognizer-from-mouse.d.ts.map +1 -0
  10. package/dist/browser/single-pointer/recognizer-from-pointer.d.ts +8 -0
  11. package/dist/browser/single-pointer/recognizer-from-pointer.d.ts.map +1 -0
  12. package/dist/browser/single-pointer/recognizer-from-touch.d.ts +7 -0
  13. package/dist/browser/single-pointer/recognizer-from-touch.d.ts.map +1 -0
  14. package/dist/browser/single-pointer/recognizer.d.ts +13 -0
  15. package/dist/browser/single-pointer/recognizer.d.ts.map +1 -0
  16. package/dist/browser/single-pointer/touch.d.ts +1 -2
  17. package/dist/browser/single-pointer/touch.d.ts.map +1 -1
  18. package/dist/core/index.d.ts +1 -1
  19. package/dist/core/index.d.ts.map +1 -1
  20. package/dist/core/signal.d.ts +10 -0
  21. package/dist/core/signal.d.ts.map +1 -1
  22. package/dist/index.cjs +1 -1
  23. package/dist/index.cjs.map +1 -1
  24. package/dist/index.js +16 -16
  25. package/dist/index.js.map +1 -1
  26. package/dist/operators/index.d.ts +1 -0
  27. package/dist/operators/index.d.ts.map +1 -1
  28. package/dist/operators/offset.d.ts +24 -0
  29. package/dist/operators/offset.d.ts.map +1 -0
  30. package/dist/operators.cjs +1 -1
  31. package/dist/operators.cjs.map +1 -1
  32. package/dist/operators.js +121 -88
  33. package/dist/operators.js.map +1 -1
  34. package/dist/{emitter-CyT5OiQO.cjs → recognizer-BrqdN-1T.cjs} +2 -2
  35. package/dist/recognizer-BrqdN-1T.cjs.map +1 -0
  36. package/dist/{emitter-FFAuyJ19.js → recognizer-FFAuyJ19.js} +1 -1
  37. package/dist/recognizer-FFAuyJ19.js.map +1 -0
  38. package/dist/single-pointer/mouse.cjs +1 -1
  39. package/dist/single-pointer/mouse.cjs.map +1 -1
  40. package/dist/single-pointer/mouse.js +17 -17
  41. package/dist/single-pointer/mouse.js.map +1 -1
  42. package/dist/single-pointer/touch.cjs +1 -1
  43. package/dist/single-pointer/touch.cjs.map +1 -1
  44. package/dist/single-pointer/touch.js +9 -9
  45. package/dist/single-pointer/touch.js.map +1 -1
  46. package/package.json +1 -1
  47. package/dist/browser/single-pointer/emitter.d.ts +0 -13
  48. package/dist/browser/single-pointer/emitter.d.ts.map +0 -1
  49. package/dist/browser/single-pointer/mouse-emitter.d.ts +0 -7
  50. package/dist/browser/single-pointer/mouse-emitter.d.ts.map +0 -1
  51. package/dist/browser/single-pointer/pointer-emitter.d.ts +0 -8
  52. package/dist/browser/single-pointer/pointer-emitter.d.ts.map +0 -1
  53. package/dist/browser/single-pointer/touch-emitter.d.ts +0 -7
  54. package/dist/browser/single-pointer/touch-emitter.d.ts.map +0 -1
  55. package/dist/emitter-CyT5OiQO.cjs.map +0 -1
  56. package/dist/emitter-FFAuyJ19.js.map +0 -1
package/README.md CHANGED
@@ -23,10 +23,12 @@ import { singlePointer } from "cereb";
23
23
  * - Keeps pointer handling clear and purpose-driven—no need to juggle multiple DOM event shapes.
24
24
  * - Lets you coordinate and control priority across multiple input streams.
25
25
  */
26
- singlePointer(canvas).subscribe((e) => {
27
- switch (e.phase) {
26
+ singlePointer(canvas).subscribe((signal) => {
27
+ const { phase, x, y } = signal.value;
28
+
29
+ switch (phase) {
28
30
  case "move":
29
- point.style.setProperty("transform", `translateX(${e.x}, ${e.y})`);
31
+ point.style.setProperty("transform", `translateX(${x}, ${y})`);
30
32
  break;
31
33
  }
32
34
  });
@@ -56,14 +58,14 @@ You can also build a `singlePointer` stream from touch events:
56
58
 
57
59
  ```typescript
58
60
  import { touchEvents, pipe } from "cereb";
59
- import { singlePointerEmitter } from "cereb/single-pointer/touch";
61
+ import { singlePointerRecognizer } from "cereb/single-pointer/touch";
60
62
 
61
63
  const pointSomething$ = pipe(
62
64
  touchEvents(somethingElement),
63
- singlePointerEmitter(),
65
+ singlePointerRecognizer(),
64
66
  );
65
67
 
66
- pointSomething$.subscribe((e) => console.log(e.x, e.y));
68
+ pointSomething$.subscribe((signal) => { /* .. */ });
67
69
  ```
68
70
 
69
71
  ### Blocking Streams
@@ -80,7 +82,26 @@ stream$.block(); // Pause event processing
80
82
  stream$.unblock(); // Resume event processing
81
83
  ```
82
84
 
83
- ## Operators
85
+ ## Cereb Operators
86
+
87
+ | Operator | Description |
88
+ |----------|-------------|
89
+ | `offset` | Add element-relative `offsetX`, `offsetY` to pointer signals |
90
+
91
+ ```typescript
92
+ import { pipe, singlePointer, offset } from "cereb";
93
+
94
+ const stream = pipe(
95
+ singlePointer(element),
96
+ offset({ target: element }) // includes offsetX, offsetY relative to target element
97
+ );
98
+
99
+ stream.subscribe((signal) => {
100
+ const { x, y, offsetX, offsetY } = signal.value;
101
+ });
102
+ ```
103
+
104
+ ## General Operators
84
105
 
85
106
  Core includes common stream operators:
86
107
 
@@ -1,4 +1,4 @@
1
- export { singlePointer } from './pointer-emitter.js';
1
+ export { singlePointer } from './recognizer-from-pointer.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 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,YAAY,EACV,0BAA0B,EAC1B,aAAa,EACb,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
@@ -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,7 @@
1
+ import { Operator } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerRecognizer, SinglePointerRecognizerOptions } from './recognizer.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createMouseRecognizer(options?: SinglePointerRecognizerOptions): SinglePointerRecognizer<DomEventSignal<MouseEvent>>;
6
+ export declare function singlePointerFromMouse(options?: SinglePointerRecognizerOptions): Operator<DomEventSignal<MouseEvent>, SinglePointerSignal>;
7
+ //# 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,EAEL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkCrD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,8BAAmC,GAC3C,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAuB3D"}
@@ -0,0 +1,8 @@
1
+ import { Operator, Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerRecognizer, SinglePointerRecognizerOptions } from './recognizer.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createPointerRecognizer(options?: SinglePointerRecognizerOptions): SinglePointerRecognizer<DomEventSignal<PointerEvent>>;
6
+ export declare function singlePointerFromPointer(options?: SinglePointerRecognizerOptions): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal>;
7
+ export declare function singlePointer(target: EventTarget): Stream<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,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAQtE,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA2CvD;AAED,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,8BAAmC,GAC3C,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,CAyB7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAG9E"}
@@ -0,0 +1,7 @@
1
+ import { Operator } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerRecognizer, SinglePointerRecognizerOptions } from './recognizer.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createTouchRecognizer(options?: SinglePointerRecognizerOptions): SinglePointerRecognizer<DomEventSignal<TouchEvent>>;
6
+ export declare function singlePointerFromTouch(options?: SinglePointerRecognizerOptions): Operator<DomEventSignal<TouchEvent>, SinglePointerSignal>;
7
+ //# 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,EAEL,KAAK,uBAAuB,EAC5B,KAAK,8BAA8B,EACpC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,wBAAgB,qBAAqB,CACnC,OAAO,GAAE,8BAAmC,GAC3C,uBAAuB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkCrD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,8BAAmC,GAC3C,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAyB3D"}
@@ -0,0 +1,13 @@
1
+ import { Signal } from '../../core/signal.js';
2
+ import { SinglePointerSignal } from './single-pointer-signal.js';
3
+ export interface SinglePointerRecognizer<InputSignal extends Signal> {
4
+ process(event: InputSignal): SinglePointerSignal;
5
+ readonly isActive: boolean;
6
+ reset(): void;
7
+ dispose(): void;
8
+ }
9
+ export interface SinglePointerRecognizerOptions {
10
+ pooling?: boolean;
11
+ }
12
+ export declare function createSinglePointerRecognizer<InputSignal extends Signal>(processor: (inputSignal: InputSignal, pointerSignal: SinglePointerSignal) => void, options?: SinglePointerRecognizerOptions): SinglePointerRecognizer<InputSignal>;
13
+ //# 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;AAEjG,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,MAAM,WAAW,8BAA8B;IAC7C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,6BAA6B,CAAC,WAAW,SAAS,MAAM,EACtE,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,KAAK,IAAI,EACjF,OAAO,GAAE,8BAAmC,GAC3C,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,4 +1,4 @@
1
1
  export { setCerebDeviceId } from './meta.js';
2
- export type { Signal } from './signal.js';
2
+ export type { ExtendSignalValue, Signal } from './signal.js';
3
3
  export { createStream, type Observer, type Operator, type Stream, type Unsubscribe, } from './stream.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,YAAY,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,KAAK,WAAW,GACjB,MAAM,aAAa,CAAC"}
@@ -5,5 +5,15 @@ export interface Signal<K extends string = string, V = unknown> {
5
5
  createdAt: number;
6
6
  updatedAt?: number;
7
7
  }
8
+ /**
9
+ * Utility type to extend a Signal's value type with additional properties.
10
+ * Used by operators that add computed properties to signals.
11
+ */
12
+ export type ExtendSignalValue<T extends Signal, Additional> = Signal<T["kind"], T["value"] & Additional>;
13
+ /**
14
+ * Utility type to constrain a Signal to have specific value properties.
15
+ * Used by operators that require certain properties in the input signal.
16
+ */
17
+ export type SignalWith<V> = Signal<string, V>;
8
18
  export declare function createSignal<K extends string = string, V = unknown>(kind: K, value: V): Signal<K, V>;
9
19
  //# sourceMappingURL=signal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/core/signal.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,EACjE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,GACP,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAOd"}
1
+ {"version":3,"file":"signal.d.ts","sourceRoot":"","sources":["../../src/core/signal.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,IAAI,MAAM,CAClE,CAAC,CAAC,MAAM,CAAC,EACT,CAAC,CAAC,OAAO,CAAC,GAAG,UAAU,CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAE9C,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,OAAO,EACjE,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,GACP,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAOd"}
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=T(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){const o=d(t);return g()(o)}function T(t){switch(t){case"mouse":return"mouse";case"touch":return"touch";case"pen":return"pen";default:return"unknown"}}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=N;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":"+LAIaA,EAAwB,YAE9B,SAASC,EAAsCC,EAA6B,CACjF,OAAOC,EAAAA,aAAaH,EAAuBE,CAAK,CAClD,CCLO,SAASE,EACdC,EACAC,EACAC,EAC+B,CAC/B,OAAOC,EAAAA,aAAqCC,GAAa,CACvD,MAAMC,EAAWC,GAAa,CAC5BF,EAAS,KAAKR,EAAqBU,CAAC,CAAC,CACvC,EAEA,OAAAN,EAAO,iBAAiBC,EAAWI,EAASH,CAAO,EAE5C,IAAM,CACXF,EAAO,oBAAoBC,EAAWI,EAASH,CAAO,CACxD,CACF,CAAC,CACH,CChBA,MAAMK,EAAe,CAAC,YAAa,YAAa,SAAS,EAElD,SAASC,EACdR,EACAE,EACoC,CACpC,OAAOC,EAAAA,aAA0CC,GAAa,CAC5D,MAAMC,EAAWR,GAAiB,CAChCO,EAAS,KAAKR,EAAqBC,CAAmB,CAAC,CACzD,EAEA,QAASY,EAAI,EAAGA,EAAIF,EAAa,OAAQE,IAAK,CAC5C,MAAMR,EAAYM,EAAaE,CAAC,EAChCT,EAAO,iBAAiBC,EAAWI,EAASH,CAAO,CACrD,CAEA,MAAO,IAAM,CACX,QAASO,EAAI,EAAGA,EAAIF,EAAa,OAAQE,IAAK,CAC5C,MAAMR,EAAYM,EAAaE,CAAC,EAChCT,EAAO,oBAAoBC,EAAWI,EAASH,CAAO,CACxD,CACF,CACF,CAAC,CACH,CCvBA,MAAMQ,EAAiB,CAAC,cAAe,cAAe,YAAa,eAAe,EAE3E,SAASC,EACdX,EACAE,EACsC,CACtC,OAAOC,EAAAA,aAA4CC,GAAa,CAC9D,MAAMC,EAAWR,GAAiB,CAChCO,EAAS,KAAKR,EAAqBC,CAAqB,CAAC,CAC3D,EAEA,QAASY,EAAI,EAAGA,EAAIC,EAAe,OAAQD,IAAK,CAC9C,MAAMR,EAAYS,EAAeD,CAAC,EAClCT,EAAO,iBAAiBC,EAAWI,EAASH,CAAO,CACrD,CAEA,MAAO,IAAM,CACX,QAASO,EAAI,EAAGA,EAAIC,EAAe,OAAQD,IAAK,CAC9C,MAAMR,EAAYS,EAAeD,CAAC,EAClCT,EAAO,oBAAoBC,EAAWI,EAASH,CAAO,CACxD,CACF,CACF,CAAC,CACH,CCvBA,MAAMU,EAAe,CAAC,aAAc,YAAa,WAAY,aAAa,EAEnE,SAASC,EACdb,EACAE,EACoC,CACpC,OAAOC,EAAAA,aAAcC,GAAa,CAChC,MAAMC,EAAWR,GAAiB,CAChCO,EAAS,KAAKR,EAAqBC,CAAmB,CAAC,CACzD,EAEA,QAASY,EAAI,EAAGA,EAAIG,EAAa,OAAQH,IAAK,CAC5C,MAAMR,EAAYW,EAAaH,CAAC,EAChCT,EAAO,iBAAiBC,EAAWI,EAASH,CAAO,CACrD,CAEA,MAAO,IAAM,CACX,QAASO,EAAI,EAAGA,EAAIG,EAAa,OAAQH,IAAK,CAC5C,MAAMR,EAAYW,EAAaH,CAAC,EAChCT,EAAO,oBAAoBC,EAAWI,EAASH,CAAO,CACxD,CACF,CACF,CAAC,CACH,CCTO,SAASY,EACdZ,EAAuC,GACa,CACpD,SAASa,EACPC,EACAC,EACM,CACN,MAAM,EAAID,EAAe,MAEzB,GAAI,CAAC,EAAE,UACL,OAGF,IAAIE,EACAC,EACJ,OAAQ,EAAE,KAAA,CACR,IAAK,cACHD,EAAQ,QACRC,EAASC,EAAAA,sBAAsB,EAAE,MAAM,EACvC,MACF,IAAK,YACHF,EAAQ,MACRC,EAASC,EAAAA,sBAAsB,EAAE,MAAM,EACvC,MACF,IAAK,gBACHF,EAAQ,SACRC,EAAS,OACT,MACF,QACED,EAAQ,OACRC,EAAS,MAAA,CAGbF,EAAO,MAAM,GAAK,GAAG,EAAE,WAAW,IAAI,EAAE,SAAS,GACjDA,EAAO,MAAM,MAAQC,EACrBD,EAAO,MAAM,EAAI,EAAE,QACnBA,EAAO,MAAM,EAAI,EAAE,QACnBA,EAAO,MAAM,MAAQ,EAAE,MACvBA,EAAO,MAAM,MAAQ,EAAE,MACvBA,EAAO,MAAM,YAAcI,EAAqB,EAAE,WAAW,EAC7DJ,EAAO,MAAM,OAASE,EACtBF,EAAO,MAAM,SAAW,EAAE,QAC5B,CAEA,OAAOK,EAAAA,2BAA2BP,EAAWb,CAAO,CACtD,CAEO,SAASqB,EACdrB,EAAuC,GACsB,CAC7D,OAAQsB,GACNrB,eAAcC,GAAa,CACzB,MAAMqB,EAAUX,EAAqBZ,CAAO,EAEtCwB,EAAQF,EAAO,UAAU,CAC7B,KAAK3B,EAAO,CACV,MAAM8B,EAAUF,EAAQ,QAAQ5B,CAAK,EACjC8B,GACFvB,EAAS,KAAKuB,CAAO,CAEzB,EACA,MAAMC,EAAK,CACTxB,EAAS,QAAQwB,CAAG,CACtB,EACA,UAAW,CACTxB,EAAS,WAAA,CACX,CAAA,CACD,EAED,MAAO,IAAM,CACXsB,EAAA,EACAD,EAAQ,QAAA,CACV,CACF,CAAC,CACL,CAEO,SAASI,EAAc7B,EAAkD,CAC9E,MAAMwB,EAASb,EAAcX,CAAM,EACnC,OAAOuB,EAAA,EAAyBC,CAAM,CACxC,CAEA,SAASH,EAAqBS,EAAiC,CAC7D,OAAQA,EAAA,CACN,IAAK,QACH,MAAO,QACT,IAAK,QACH,MAAO,QACT,IAAK,MACH,MAAO,MACT,QACE,MAAO,SAAA,CAEb,CCpEO,SAASC,KAAWC,EAAiE,CAC1F,OAAQR,GAAWS,EAAKT,EAAQ,GAAGQ,CAAS,CAC9C,CCiEO,SAASC,EACdT,KACGQ,EACa,CAChB,OAAOA,EAAU,OAAO,CAACE,EAAMC,IAAOA,EAAGD,CAAI,EAAGV,CAAwB,CAC1E"}
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/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 createSinglePointerRecognizer,\n type SinglePointerRecognizer,\n type SinglePointerRecognizerOptions,\n} from \"./recognizer.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 createPointerRecognizer(\n options: SinglePointerRecognizerOptions = {},\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: SinglePointerRecognizerOptions = {},\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\nexport function singlePointer(target: EventTarget): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return singlePointerFromPointer()(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","createPointerRecognizer","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerRecognizer","singlePointerFromPointer","source","recognizer","unsub","pointer","err","singlePointer","type","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,7 +112,7 @@ function N(t = {}) {
112
112
  };
113
113
  });
114
114
  }
115
- function _(t) {
115
+ function w(t) {
116
116
  const o = E(t);
117
117
  return N()(o);
118
118
  }
@@ -128,22 +128,22 @@ function b(t) {
128
128
  return "unknown";
129
129
  }
130
130
  }
131
- function I(...t) {
132
- return (o) => S(o, ...t);
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/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 createSinglePointerRecognizer,\n type SinglePointerRecognizer,\n type SinglePointerRecognizerOptions,\n} from \"./recognizer.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 createPointerRecognizer(\n options: SinglePointerRecognizerOptions = {},\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: SinglePointerRecognizerOptions = {},\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\nexport function singlePointer(target: EventTarget): Stream<SinglePointerSignal> {\n const source = pointerEvents(target);\n return singlePointerFromPointer()(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","createPointerRecognizer","processer","domEventSignal","signal","phase","button","toSinglePointerButton","normalizePointerType","createSinglePointerRecognizer","singlePointerFromPointer","source","recognizer","unsub","pointer","err","singlePointer","type","compose","operators","pipe","prev","op"],"mappings":"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"}
@@ -4,6 +4,7 @@ export { distinctUntilChanged, distinctUntilKeyChanged } from './distinct.js';
4
4
  export { filter } from './filter.js';
5
5
  export { map } from './map.js';
6
6
  export { merge, mergeWith } from './merge.js';
7
+ export { offset } from './offset.js';
7
8
  export { share, shareReplay } from './share.js';
8
9
  export { skip, skipUntil, skipWhile } from './skip.js';
9
10
  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,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,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,24 @@
1
+ import { ExtendSignalValue, SignalWith } from '../core/signal.js';
2
+ import { Operator } from '../core/stream.js';
3
+ export interface OffsetOptions {
4
+ target: Element;
5
+ manual?: boolean;
6
+ }
7
+ export interface PointerValue {
8
+ x: number;
9
+ y: number;
10
+ }
11
+ export interface OffsetValue {
12
+ offsetX: number;
13
+ offsetY: number;
14
+ }
15
+ export type OffsetOperatorResult<T extends SignalWith<PointerValue>> = ExtendSignalValue<T, OffsetValue>;
16
+ export interface OffsetOperator<T extends SignalWith<PointerValue>> extends Operator<T, ExtendSignalValue<T, OffsetValue>> {
17
+ recalculate(): void;
18
+ }
19
+ /**
20
+ * Creates an operator that adds element-relative offset coordinates to pointer signals.
21
+ * Uses getBoundingClientRect() to calculate offsetX and offsetY relative to the target element.
22
+ */
23
+ export declare function offset<T extends SignalWith<PointerValue>>(options: OffsetOptions): OffsetOperator<T>;
24
+ //# sourceMappingURL=offset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offset.d.ts","sourceRoot":"","sources":["../../src/operators/offset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,UAAU,CAAC,YAAY,CAAC,IAAI,iBAAiB,CACtF,CAAC,EACD,WAAW,CACZ,CAAC;AAEF,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,UAAU,CAAC,YAAY,CAAC,CAChE,SAAQ,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACtD,WAAW,IAAI,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,CAAC,YAAY,CAAC,EACvD,OAAO,EAAE,aAAa,GACrB,cAAc,CAAC,CAAC,CAAC,CAmDnB"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./stream-Cp6eCZs2.cjs");function b(u){return r=>i.createStream(e=>{let t=[];return r.subscribe({next(n){t.push(n),t.length>=u&&(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(u){return r=>i.createStream(e=>{let t=[];const n=setInterval(()=>{t.length>0&&(e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),t=[])},u),c=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),c()}})}function h(u){return r=>i.createStream(e=>{let t=[];const n=u.subscribe(()=>{t.length>0&&(e.next({kind:"buffer",value:t,deviceId:"",createdAt:Date.now()}),t=[])}),c=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(),c()}})}function k(u){return r=>i.createStream(e=>{let t=null;const n=r.subscribe({next(c){t!==null&&clearTimeout(t),t=setTimeout(()=>{t=null,e.next(c)},u)},error:e.error?.bind(e),complete(){t!==null&&clearTimeout(t),e.complete?.()}});return()=>{t!==null&&clearTimeout(t),n()}})}function S(u){const r=u??((e,t)=>e.value===t.value);return e=>i.createStream(t=>{let n=!1,c;return e.subscribe({next(l){(!n||!r(c,l))&&(n=!0,c=l,t.next(l))},error:t.error?.bind(t),complete:t.complete?.bind(t)})})}function g(u,r){const e=r??((t,n)=>t===n);return t=>i.createStream(n=>{let c=!1,l;return t.subscribe({next(o){const a=u(o);(!c||!e(l,a))&&(c=!0,l=a,n.next(o))},error:n.error?.bind(n),complete:n.complete?.bind(n)})})}function U(u){return r=>i.createStream(e=>r.subscribe({next(t){try{u(t)&&e.next(t)}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}function y(u){return r=>i.createStream(e=>r.subscribe({next(t){try{e.next(u(t))}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}function I(u){return r=>i.createStream(e=>{let t=0;const n=()=>{t++,t===2&&e.complete?.()},c=r.subscribe({next:o=>e.next(o),error:e.error?.bind(e),complete:n}),l=u.subscribe({next:o=>e.next(o),error:e.error?.bind(e),complete:n});return()=>{c(),l()}})}function T(...u){return i.createStream(r=>{let e=0;const t=u.map(n=>n.subscribe({next:c=>r.next(c),error:r.error?.bind(r),complete:()=>{e++,e===u.length&&r.complete?.()}}));return()=>{for(const n of t)n()}})}function w(){return u=>{const r=new Set;let e=null,t=!1;return{get isBlocked(){return t},block(){t=!0},unblock(){t=!1},subscribe(n){const c=i.toObserver(n);return r.add(c),r.size===1&&(e=u.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(c),r.size===0&&e&&(e(),e=null)}}}}}function A(u=1){return r=>{const e=[],t=new Set;let n=null,c=!1,l=!1,o,a=!1;return{get isBlocked(){return a},block(){a=!0},unblock(){a=!1},subscribe(p){const s=i.toObserver(p);for(const f of e)s.next(f);return c?(s.complete?.(),()=>{}):l?(s.error?.(o),()=>{}):(t.add(s),t.size===1&&!n&&(n=r.subscribe({next(f){if(e.push(f),e.length>u&&e.shift(),!a)for(const m of t)m.next(f)},error(f){l=!0,o=f;for(const m of t)m.error?.(f);t.clear(),n=null},complete(){c=!0;for(const f of t)f.complete?.();t.clear(),n=null}})),()=>{t.delete(s),t.size===0&&n&&!c&&!l&&(n(),n=null)})}}}}function W(u){return r=>i.createStream(e=>{let t=0;return r.subscribe({next(n){t<u?t++:e.next(n)},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function C(u){return r=>i.createStream(e=>{let t=!0;return r.subscribe({next(n){t&&!u(n)&&(t=!1),t||e.next(n)},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function D(u){return r=>i.createStream(e=>{let t=!0;const n=u.subscribe(()=>{t=!1,n()}),c=r.subscribe({next(l){t||e.next(l)},error:e.error?.bind(e),complete:e.complete?.bind(e)});return()=>{n(),c()}})}function d(u){return r=>i.createStream(e=>r.subscribe({next(t){try{u(t),e.next(t)}catch(n){e.error?.(n)}},error:e.error?.bind(e),complete:e.complete?.bind(e)}))}const z=d;function L(u){return r=>i.createStream(e=>{let t=0,n;return n=r.subscribe({next(c){t<u&&(t++,e.next(c),t>=u&&(e.complete?.(),n?.()))},error:e.error?.bind(e),complete:e.complete?.bind(e)}),()=>n?.()})}function V(u){return r=>i.createStream(e=>{let t;return t=r.subscribe({next(n){u(n)?e.next(n):(e.complete?.(),t?.())},error:e.error?.bind(e),complete:e.complete?.bind(e)}),()=>t?.()})}function q(u){return r=>i.createStream(e=>{let t=!1;const n=u.subscribe(()=>{t||(t=!0,e.complete?.(),l())}),c=r.subscribe({next(o){t||e.next(o)},error:e.error?.bind(e),complete(){t||(t=!0,e.complete?.())}}),l=()=>{n(),c()};return l})}function E(u){return r=>i.createStream(e=>{let t=null;return r.subscribe({next(n){const c=performance.now();(t===null||c-t>=u)&&(t=c,e.next(n))},error:e.error?.bind(e),complete:e.complete?.bind(e)})})}function K(u){return r=>i.createStream(e=>{let t,n=!1,c=null;const l=r.subscribe({next(o){t=o,n=!0,c===null&&(c=setTimeout(()=>{n&&(e.next(t),n=!1),c=null},u))},error:e.error?.bind(e),complete(){c!==null&&(clearTimeout(c),n&&e.next(t)),e.complete?.()}});return()=>{c!==null&&clearTimeout(c),l()}})}exports.buffer=b;exports.bufferTime=x;exports.bufferWhen=h;exports.debounce=k;exports.distinctUntilChanged=S;exports.distinctUntilKeyChanged=g;exports.filter=U;exports.map=y;exports.merge=T;exports.mergeWith=I;exports.share=w;exports.shareReplay=A;exports.skip=W;exports.skipUntil=D;exports.skipWhile=C;exports.spy=d;exports.take=L;exports.takeUntil=q;exports.takeWhile=V;exports.tap=z;exports.throttle=E;exports.throttleLast=K;
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;
2
2
  //# sourceMappingURL=operators.cjs.map