cereb 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (138) hide show
  1. package/README.md +13 -13
  2. package/dist/browser/dom-event/dom-event-signal.d.ts +6 -0
  3. package/dist/browser/dom-event/dom-event-signal.d.ts.map +1 -0
  4. package/dist/browser/dom-event/dom-event.d.ts +3 -2
  5. package/dist/browser/dom-event/dom-event.d.ts.map +1 -1
  6. package/dist/browser/dom-event/mouse-events.d.ts +3 -2
  7. package/dist/browser/dom-event/mouse-events.d.ts.map +1 -1
  8. package/dist/browser/dom-event/pointer-events.d.ts +3 -2
  9. package/dist/browser/dom-event/pointer-events.d.ts.map +1 -1
  10. package/dist/browser/dom-event/touch-events.d.ts +3 -2
  11. package/dist/browser/dom-event/touch-events.d.ts.map +1 -1
  12. package/dist/browser/single-pointer/emitter.d.ts +13 -0
  13. package/dist/browser/single-pointer/emitter.d.ts.map +1 -0
  14. package/dist/browser/single-pointer/index.d.ts +2 -3
  15. package/dist/browser/single-pointer/index.d.ts.map +1 -1
  16. package/dist/browser/single-pointer/mouse-emitter.d.ts +6 -14
  17. package/dist/browser/single-pointer/mouse-emitter.d.ts.map +1 -1
  18. package/dist/browser/single-pointer/mouse.d.ts +2 -3
  19. package/dist/browser/single-pointer/mouse.d.ts.map +1 -1
  20. package/dist/browser/single-pointer/pointer-emitter.d.ts +7 -18
  21. package/dist/browser/single-pointer/pointer-emitter.d.ts.map +1 -1
  22. package/dist/browser/single-pointer/pointer.d.ts +2 -3
  23. package/dist/browser/single-pointer/pointer.d.ts.map +1 -1
  24. package/dist/browser/single-pointer/pool.d.ts +3 -3
  25. package/dist/browser/single-pointer/pool.d.ts.map +1 -1
  26. package/dist/browser/single-pointer/single-pointer-signal.d.ts +25 -0
  27. package/dist/browser/single-pointer/single-pointer-signal.d.ts.map +1 -0
  28. package/dist/browser/single-pointer/touch-emitter.d.ts +6 -14
  29. package/dist/browser/single-pointer/touch-emitter.d.ts.map +1 -1
  30. package/dist/browser/single-pointer/touch.d.ts +2 -3
  31. package/dist/browser/single-pointer/touch.d.ts.map +1 -1
  32. package/dist/browser/single-pointer/types.d.ts +4 -4
  33. package/dist/browser/single-pointer/types.d.ts.map +1 -1
  34. package/dist/core/index.d.ts +4 -0
  35. package/dist/core/index.d.ts.map +1 -0
  36. package/dist/core/meta.d.ts +3 -0
  37. package/dist/core/meta.d.ts.map +1 -0
  38. package/dist/core/signal.d.ts +9 -0
  39. package/dist/core/signal.d.ts.map +1 -0
  40. package/dist/{stream → core}/stream.d.ts +6 -5
  41. package/dist/core/stream.d.ts.map +1 -0
  42. package/dist/emitter-CyT5OiQO.cjs +2 -0
  43. package/dist/emitter-CyT5OiQO.cjs.map +1 -0
  44. package/dist/emitter-FFAuyJ19.js +101 -0
  45. package/dist/emitter-FFAuyJ19.js.map +1 -0
  46. package/dist/index.cjs +1 -1
  47. package/dist/index.cjs.map +1 -1
  48. package/dist/index.d.ts +1 -2
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +129 -39
  51. package/dist/index.js.map +1 -1
  52. package/dist/internal/subject.d.ts +6 -5
  53. package/dist/internal/subject.d.ts.map +1 -1
  54. package/dist/internal/test-utils.d.ts +10 -0
  55. package/dist/internal/test-utils.d.ts.map +1 -0
  56. package/dist/ochestrations/compose.d.ts +8 -7
  57. package/dist/ochestrations/compose.d.ts.map +1 -1
  58. package/dist/ochestrations/pipe.d.ts +12 -11
  59. package/dist/ochestrations/pipe.d.ts.map +1 -1
  60. package/dist/operators/buffer.d.ts +5 -4
  61. package/dist/operators/buffer.d.ts.map +1 -1
  62. package/dist/operators/debounce.d.ts +3 -2
  63. package/dist/operators/debounce.d.ts.map +1 -1
  64. package/dist/operators/distinct.d.ts +8 -7
  65. package/dist/operators/distinct.d.ts.map +1 -1
  66. package/dist/operators/filter.d.ts +3 -2
  67. package/dist/operators/filter.d.ts.map +1 -1
  68. package/dist/operators/index.d.ts +0 -1
  69. package/dist/operators/index.d.ts.map +1 -1
  70. package/dist/operators/map.d.ts +3 -2
  71. package/dist/operators/map.d.ts.map +1 -1
  72. package/dist/operators/merge.d.ts +4 -3
  73. package/dist/operators/merge.d.ts.map +1 -1
  74. package/dist/operators/share.d.ts +4 -3
  75. package/dist/operators/share.d.ts.map +1 -1
  76. package/dist/operators/skip.d.ts +5 -4
  77. package/dist/operators/skip.d.ts.map +1 -1
  78. package/dist/operators/spy.d.ts +3 -2
  79. package/dist/operators/spy.d.ts.map +1 -1
  80. package/dist/operators/take.d.ts +5 -4
  81. package/dist/operators/take.d.ts.map +1 -1
  82. package/dist/operators/throttle.d.ts +4 -3
  83. package/dist/operators/throttle.d.ts.map +1 -1
  84. package/dist/operators.cjs +1 -1
  85. package/dist/operators.cjs.map +1 -1
  86. package/dist/operators.js +178 -192
  87. package/dist/operators.js.map +1 -1
  88. package/dist/single-pointer/mouse.cjs +1 -1
  89. package/dist/single-pointer/mouse.cjs.map +1 -1
  90. package/dist/single-pointer/mouse.js +31 -60
  91. package/dist/single-pointer/mouse.js.map +1 -1
  92. package/dist/single-pointer/pointer.cjs +1 -1
  93. package/dist/single-pointer/pointer.js +1 -6
  94. package/dist/single-pointer/pointer.js.map +1 -1
  95. package/dist/single-pointer/touch.cjs +1 -1
  96. package/dist/single-pointer/touch.cjs.map +1 -1
  97. package/dist/single-pointer/touch.js +34 -64
  98. package/dist/single-pointer/touch.js.map +1 -1
  99. package/dist/stream-CDK0RZPi.js.map +1 -1
  100. package/dist/stream-Cp6eCZs2.cjs.map +1 -1
  101. package/dist/{types-DkXpfiI3.cjs → types-BGR5Mhw9.cjs} +2 -2
  102. package/dist/types-BGR5Mhw9.cjs.map +1 -0
  103. package/dist/types-Ccnqx90M.js.map +1 -1
  104. package/package.json +1 -1
  105. package/dist/browser/single-pointer/single-pointer.d.ts +0 -22
  106. package/dist/browser/single-pointer/single-pointer.d.ts.map +0 -1
  107. package/dist/factory/defer.d.ts +0 -3
  108. package/dist/factory/defer.d.ts.map +0 -1
  109. package/dist/factory/empty.d.ts +0 -3
  110. package/dist/factory/empty.d.ts.map +0 -1
  111. package/dist/factory/from-promise.d.ts +0 -3
  112. package/dist/factory/from-promise.d.ts.map +0 -1
  113. package/dist/factory/from.d.ts +0 -3
  114. package/dist/factory/from.d.ts.map +0 -1
  115. package/dist/factory/index.d.ts +0 -10
  116. package/dist/factory/index.d.ts.map +0 -1
  117. package/dist/factory/interval.d.ts +0 -3
  118. package/dist/factory/interval.d.ts.map +0 -1
  119. package/dist/factory/never.d.ts +0 -3
  120. package/dist/factory/never.d.ts.map +0 -1
  121. package/dist/factory/of.d.ts +0 -3
  122. package/dist/factory/of.d.ts.map +0 -1
  123. package/dist/factory/throw-error.d.ts +0 -3
  124. package/dist/factory/throw-error.d.ts.map +0 -1
  125. package/dist/factory/timer.d.ts +0 -3
  126. package/dist/factory/timer.d.ts.map +0 -1
  127. package/dist/operators/combine.d.ts +0 -8
  128. package/dist/operators/combine.d.ts.map +0 -1
  129. package/dist/pointer-CX9qwBVm.cjs +0 -2
  130. package/dist/pointer-CX9qwBVm.cjs.map +0 -1
  131. package/dist/pointer-Cq2B2vwv.js +0 -111
  132. package/dist/pointer-Cq2B2vwv.js.map +0 -1
  133. package/dist/pool-CM9teIjt.js +0 -42
  134. package/dist/pool-CM9teIjt.js.map +0 -1
  135. package/dist/pool-Dr67Mz_1.cjs +0 -2
  136. package/dist/pool-Dr67Mz_1.cjs.map +0 -1
  137. package/dist/stream/stream.d.ts.map +0 -1
  138. package/dist/types-DkXpfiI3.cjs.map +0 -1
package/README.md CHANGED
@@ -5,7 +5,7 @@ User input modeling and orchestration with a lightweight reactive stream library
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install @cereb/core
8
+ npm install cereb
9
9
  ```
10
10
 
11
11
  ## Quick Start
@@ -14,7 +14,7 @@ Cereb models user input as lightweight reactive streams—from low-level DOM eve
14
14
  Below is a minimal example for a **single pointer** stream.
15
15
 
16
16
  ```typescript
17
- import { singlePointer } from "@cereb/core";
17
+ import { singlePointer } from "cereb";
18
18
 
19
19
  /**
20
20
  * Provides a stream for a single pointer.
@@ -46,7 +46,7 @@ singlePointer(canvas).subscribe((e) => {
46
46
  Cereb includes factories to convert DOM events into streams, and to build higher-level streams by merging mouse/touch/pointer events.
47
47
 
48
48
  ```typescript
49
- import { domEvent, mouseEvents } from "@cereb/core";
49
+ import { domEvent, mouseEvents } from "cereb";
50
50
 
51
51
  const $touchScrollContainer = domEvent(scrollContainerElement, "touchstart");
52
52
  const $mouseSomething = mouseEvents(somethingElement);
@@ -55,15 +55,15 @@ const $mouseSomething = mouseEvents(somethingElement);
55
55
  You can also build a `singlePointer` stream from touch events:
56
56
 
57
57
  ```typescript
58
- import { touchEvents, pipe } from "@cereb/core";
59
- import { singlePointerEmitter } from "@cereb/core/single-pointer/touch";
58
+ import { touchEvents, pipe } from "cereb";
59
+ import { singlePointerEmitter } from "cereb/single-pointer/touch";
60
60
 
61
- const $pointSomething = pipe(
61
+ const pointSomething$ = pipe(
62
62
  touchEvents(somethingElement),
63
63
  singlePointerEmitter(),
64
64
  );
65
65
 
66
- $pointSomething.subscribe((e) => console.log(e.x, e.y));
66
+ pointSomething$.subscribe((e) => console.log(e.x, e.y));
67
67
  ```
68
68
 
69
69
  ### Blocking Streams
@@ -71,7 +71,7 @@ $pointSomething.subscribe((e) => console.log(e.x, e.y));
71
71
  All streams are blockable - events are silently dropped when blocked:
72
72
 
73
73
  ```typescript
74
- import { singlePointer } from "@cereb/core";
74
+ import { singlePointer } from "cereb";
75
75
 
76
76
  const stream$ = singlePointer(element);
77
77
 
@@ -96,7 +96,7 @@ Core includes common stream operators:
96
96
  | `distinctUntilChanged` | Skip consecutive duplicates |
97
97
 
98
98
  ```typescript
99
- import { pipe, filter, throttle, map } from "@cereb/core";
99
+ import { pipe, filter, throttle, map } from "cereb";
100
100
 
101
101
  const stream = pipe(
102
102
  singlePointer(element),
@@ -109,14 +109,14 @@ const stream = pipe(
109
109
  ### Combining Streams
110
110
 
111
111
  ```typescript
112
- import { pipe, merge, singlePointer, domEvent } from "@cereb/core";
112
+ import { pipe, merge, singlePointer, domEvent } from "cereb";
113
113
 
114
- const keyboard = domEvent(window, "keydown");
115
- const pointer = singlePointer(element);
114
+ const keyboard$ = domEvent(window, "keydown");
115
+ const pointer$ = singlePointer(element);
116
116
 
117
117
  // You can subscribe to events from multiple sources as one stream.
118
118
  // This example simply merges, but you can orchestrate behavior with pipelines and operators.
119
- const combined = merge(keyboard, pointer);
119
+ const combined$ = merge(keyboard$, pointer$);
120
120
  ```
121
121
 
122
122
  ## License
@@ -0,0 +1,6 @@
1
+ import { Signal } from '../../core/signal.js';
2
+ export interface DomEventSignal<E extends Event> extends Signal<"dom-event", E> {
3
+ }
4
+ export declare const DOM_EVENT_SIGNAL_KIND: "dom-event";
5
+ export declare function createDomEventSignal<E extends Event>(event: E): DomEventSignal<E>;
6
+ //# sourceMappingURL=dom-event-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dom-event-signal.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/dom-event-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEjE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,KAAK,CAAE,SAAQ,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;CAAG;AAElF,eAAO,MAAM,qBAAqB,EAAG,WAAoB,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAEjF"}
@@ -1,3 +1,4 @@
1
- import { Stream } from '../../stream/stream.js';
2
- export declare function domEvent<T extends Event>(target: EventTarget, eventName: string, options?: AddEventListenerOptions): Stream<T>;
1
+ import { Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from './dom-event-signal.js';
3
+ export declare function domEvent(target: EventTarget, eventName: string, options?: AddEventListenerOptions): Stream<DomEventSignal<Event>>;
3
4
  //# sourceMappingURL=dom-event.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dom-event.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/dom-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEnE,wBAAgB,QAAQ,CAAC,CAAC,SAAS,KAAK,EACtC,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,CAAC,CAAC,CAYX"}
1
+ {"version":3,"file":"dom-event.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/dom-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAElF,wBAAgB,QAAQ,CACtB,MAAM,EAAE,WAAW,EACnB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAY/B"}
@@ -1,3 +1,4 @@
1
- import { Stream } from '../../stream/stream.js';
2
- export declare function mouseEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<MouseEvent>;
1
+ import { Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from './dom-event-signal.js';
3
+ export declare function mouseEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<DomEventSignal<MouseEvent>>;
3
4
  //# sourceMappingURL=mouse-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mouse-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/mouse-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAInE,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,UAAU,CAAC,CAgBpB"}
1
+ {"version":3,"file":"mouse-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/mouse-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIlF,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkBpC"}
@@ -1,3 +1,4 @@
1
- import { Stream } from '../../stream/stream.js';
2
- export declare function pointerEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<PointerEvent>;
1
+ import { Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from './dom-event-signal.js';
3
+ export declare function pointerEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<DomEventSignal<PointerEvent>>;
3
4
  //# sourceMappingURL=pointer-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pointer-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/pointer-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAInE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,YAAY,CAAC,CAgBtB"}
1
+ {"version":3,"file":"pointer-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/pointer-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIlF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAkBtC"}
@@ -1,3 +1,4 @@
1
- import { Stream } from '../../stream/stream.js';
2
- export declare function touchEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<TouchEvent>;
1
+ import { Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from './dom-event-signal.js';
3
+ export declare function touchEvents(target: EventTarget, options?: AddEventListenerOptions): Stream<DomEventSignal<TouchEvent>>;
3
4
  //# sourceMappingURL=touch-events.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"touch-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/touch-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAInE,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,UAAU,CAAC,CAgBpB"}
1
+ {"version":3,"file":"touch-events.d.ts","sourceRoot":"","sources":["../../../src/browser/dom-event/touch-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAIlF,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,CAAC,EAAE,uBAAuB,GAChC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkBpC"}
@@ -0,0 +1,13 @@
1
+ import { Signal } from '../../core/signal.js';
2
+ import { SinglePointerSignal } from './single-pointer-signal.js';
3
+ export interface SinglePointerEmitter<InputSignal extends Signal> {
4
+ process(event: InputSignal): SinglePointerSignal;
5
+ readonly isActive: boolean;
6
+ reset(): void;
7
+ dispose(): void;
8
+ }
9
+ export interface SinglePointerEmitterOptions {
10
+ pooling?: boolean;
11
+ }
12
+ export declare function createSinglePointerEmitter<InputSignal extends Signal>(processor: (inputSignal: InputSignal, pointerSignal: SinglePointerSignal) => void, options?: SinglePointerEmitterOptions): SinglePointerEmitter<InputSignal>;
13
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAA6B,KAAK,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjG,MAAM,WAAW,oBAAoB,CAAC,WAAW,SAAS,MAAM;IAC9D,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,2BAA2B;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,0BAA0B,CAAC,WAAW,SAAS,MAAM,EACnE,SAAS,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,KAAK,IAAI,EACjF,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAAC,WAAW,CAAC,CA8CnC"}
@@ -1,5 +1,4 @@
1
- export type { SinglePointerOptions } from './pointer-emitter.js';
2
1
  export { singlePointer } from './pointer-emitter.js';
3
- export type { SinglePointer } from './single-pointer.js';
4
- export type { PointerButton, PointerPhase, PointerType } from './types.js';
2
+ export type { SINGLE_POINTER_SIGNAL_KIND, SinglePointer, SinglePointerSignal, } from './single-pointer-signal.js';
3
+ export type { SinglePointerButton, SinglePointerPhase, SinglePointerType } from './types.js';
5
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,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,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,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,15 +1,7 @@
1
- import { Operator } from '../../stream/stream.js';
2
- import { SinglePointer } from './single-pointer.js';
3
- export interface MouseEmitterOptions {
4
- deviceId?: string;
5
- pooling?: boolean;
6
- }
7
- export interface MouseEmitter {
8
- process(event: MouseEvent): SinglePointer;
9
- readonly isActive: boolean;
10
- reset(): void;
11
- dispose(): void;
12
- }
13
- export declare function createMouseEmitter(options?: MouseEmitterOptions): MouseEmitter;
14
- export declare function mouseToSinglePointer(options?: MouseEmitterOptions): Operator<MouseEvent, SinglePointer>;
1
+ import { Operator } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerEmitter, SinglePointerEmitterOptions } from './emitter.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createMouseEmitter(options?: SinglePointerEmitterOptions): SinglePointerEmitter<DomEventSignal<MouseEvent>>;
6
+ export declare function mouseToSinglePointer(options?: SinglePointerEmitterOptions): Operator<DomEventSignal<MouseEvent>, SinglePointerSignal>;
15
7
  //# sourceMappingURL=mouse-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mouse-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/mouse-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CA+ElF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,mBAAwB,GAChC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,CAuBrC"}
1
+ {"version":3,"file":"mouse-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/mouse-emitter.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,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAOtE,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkClD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAuB3D"}
@@ -1,4 +1,3 @@
1
- export type { MouseEmitter, MouseEmitterOptions } from './mouse-emitter.js';
2
- export { createMouseEmitter, mouseToSinglePointer } from './mouse-emitter.js';
3
- export type { SinglePointer } from './single-pointer.js';
1
+ export { createMouseEmitter, mouseToSinglePointer as singlePointer } from './mouse-emitter.js';
2
+ export type { SinglePointer } from './single-pointer-signal.js';
4
3
  //# 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,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC9E,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
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,19 +1,8 @@
1
- import { Operator, Stream } from '../../stream/stream.js';
2
- import { SinglePointer } from './single-pointer.js';
3
- export interface PointerEmitterOptions {
4
- deviceId?: string;
5
- pooling?: boolean;
6
- }
7
- export interface PointerEmitter {
8
- process(event: PointerEvent): SinglePointer | null;
9
- readonly isActive: boolean;
10
- reset(): void;
11
- dispose(): void;
12
- }
13
- export declare function createPointerEmitter(options?: PointerEmitterOptions): PointerEmitter;
14
- export declare function toSinglePointer(options?: PointerEmitterOptions): Operator<PointerEvent, SinglePointer>;
15
- export interface SinglePointerOptions extends PointerEmitterOptions {
16
- listenerOptions?: AddEventListenerOptions;
17
- }
18
- export declare function singlePointer(target: EventTarget, options?: SinglePointerOptions): Stream<SinglePointer>;
1
+ import { Operator, Stream } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerEmitter, SinglePointerEmitterOptions } from './emitter.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createPointerEmitter(options?: SinglePointerEmitterOptions): SinglePointerEmitter<DomEventSignal<PointerEvent>>;
6
+ export declare function pointerToSinglePointer(options?: SinglePointerEmitterOptions): Operator<DomEventSignal<PointerEvent>, SinglePointerSignal>;
7
+ export declare function singlePointer(target: EventTarget): Stream<SinglePointerSignal>;
19
8
  //# sourceMappingURL=pointer-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pointer-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pointer-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAI/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAIzD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,aAAa,GAAG,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,GAAE,qBAA0B,GAAG,cAAc,CAwFxF;AAED,wBAAgB,eAAe,CAC7B,OAAO,GAAE,qBAA0B,GAClC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,CAyBvC;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,oBAAyB,GACjC,MAAM,CAAC,aAAa,CAAC,CAIvB"}
1
+ {"version":3,"file":"pointer-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pointer-emitter.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,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAQtE,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CA2CpD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,GAAE,2BAAgC,GACxC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAC,CAyB7D;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAG9E"}
@@ -1,4 +1,3 @@
1
- export type { PointerEmitter, PointerEmitterOptions, SinglePointerOptions, } from './pointer-emitter.js';
2
- export { createPointerEmitter, singlePointer, toSinglePointer, } from './pointer-emitter.js';
3
- export type { SinglePointer } from './single-pointer.js';
1
+ export type { createPointerEmitter, pointerToSinglePointer, singlePointer, } from './pointer-emitter.js';
2
+ export type { SinglePointer } from './single-pointer-signal.js';
4
3
  //# 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,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
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,4 +1,4 @@
1
- import { SinglePointer } from './single-pointer.js';
2
- export declare const singlePointerPool: import('../../internal/object-pool.js').ObjectPool<SinglePointer>;
3
- export declare function releaseSinglePointer(pointer: SinglePointer): void;
1
+ import { SinglePointerSignal } from './single-pointer-signal.js';
2
+ export declare const singlePointerPool: import('../../internal/object-pool.js').ObjectPool<SinglePointerSignal>;
3
+ export declare function releaseSinglePointer(signal: SinglePointerSignal): void;
4
4
  //# sourceMappingURL=pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pool.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,iBAAiB,mEAG5B,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAEjE"}
1
+ {"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/pool.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,4BAA4B,CAAC;AAEpC,eAAO,MAAM,iBAAiB,yEAO7B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAEtE"}
@@ -0,0 +1,25 @@
1
+ import { Signal } from '../../core/signal.js';
2
+ import { SinglePointerButton, SinglePointerPhase, SinglePointerType } from './types.js';
3
+ export interface SinglePointerSignal extends Signal<"single-pointer", SinglePointer> {
4
+ }
5
+ export declare const SINGLE_POINTER_SIGNAL_KIND: "single-pointer";
6
+ /**
7
+ * Normalized pointer data representing a single point of contact.
8
+ * Abstracts away differences between mouse, touch, and pointer events.
9
+ */
10
+ export interface SinglePointer {
11
+ phase: SinglePointerPhase;
12
+ x: number;
13
+ y: number;
14
+ pageX: number;
15
+ pageY: number;
16
+ pointerType: SinglePointerType;
17
+ button: SinglePointerButton;
18
+ /** 0.0 ~ 1.0, default 0.5 if unsupported */
19
+ pressure: number;
20
+ id: string;
21
+ }
22
+ export declare function createSinglePointerSignal(pointer: SinglePointer): SinglePointerSignal;
23
+ export declare function createDefaultSinglePointerSignal(): SinglePointerSignal;
24
+ export declare function resetSinglePointerSignal(p: SinglePointerSignal): void;
25
+ //# sourceMappingURL=single-pointer-signal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"single-pointer-signal.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/single-pointer-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE7F,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC;CAAG;AAEvF,eAAO,MAAM,0BAA0B,EAAG,gBAAyB,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,iBAAiB,CAAC;IAC/B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,aAAa,GAAG,mBAAmB,CAErF;AAED,wBAAgB,gCAAgC,IAAI,mBAAmB,CAYtE;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAUrE"}
@@ -1,15 +1,7 @@
1
- import { Operator } from '../../stream/stream.js';
2
- import { SinglePointer } from './single-pointer.js';
3
- export interface TouchEmitterOptions {
4
- deviceId?: string;
5
- pooling?: boolean;
6
- }
7
- export interface TouchEmitter {
8
- process(event: TouchEvent): SinglePointer | null;
9
- readonly isActive: boolean;
10
- reset(): void;
11
- dispose(): void;
12
- }
13
- export declare function createTouchEmitter(options?: TouchEmitterOptions): TouchEmitter;
14
- export declare function singlePointerEmitter(options?: TouchEmitterOptions): Operator<TouchEvent, SinglePointer>;
1
+ import { Operator } from '../../core/stream.js';
2
+ import { DomEventSignal } from '../dom-event/dom-event-signal.js';
3
+ import { SinglePointerEmitter, SinglePointerEmitterOptions } from './emitter.js';
4
+ import { SinglePointerSignal } from './single-pointer-signal.js';
5
+ export declare function createTouchEmitter(options?: SinglePointerEmitterOptions): SinglePointerEmitter<DomEventSignal<TouchEvent>>;
6
+ export declare function touchToSinglePointer(options?: SinglePointerEmitterOptions): Operator<DomEventSignal<TouchEvent>, SinglePointerSignal>;
15
7
  //# sourceMappingURL=touch-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"touch-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/touch-emitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,KAAK,EAAE,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,mBAAwB,GAAG,YAAY,CAoFlF;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,mBAAwB,GAChC,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,CAyBrC"}
1
+ {"version":3,"file":"touch-emitter.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/touch-emitter.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,oBAAoB,EACzB,KAAK,2BAA2B,EACjC,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAkClD;AAED,wBAAgB,oBAAoB,CAClC,OAAO,GAAE,2BAAgC,GACxC,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAyB3D"}
@@ -1,4 +1,3 @@
1
- export type { SinglePointer } from './single-pointer.js';
2
- export type { TouchEmitter, TouchEmitterOptions } from './touch-emitter.js';
3
- export { createTouchEmitter, singlePointerEmitter } from './touch-emitter.js';
1
+ export type { SinglePointer } from './single-pointer-signal.js';
2
+ export { createTouchEmitter, touchToSinglePointer as singlePointer } from './touch-emitter.js';
4
3
  //# 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,qBAAqB,CAAC;AACzD,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
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,5 +1,5 @@
1
- export type PointerType = "touch" | "mouse" | "pen" | "unknown";
2
- export type PointerPhase = "start" | "move" | "end" | "cancel";
3
- export type PointerButton = "none" | "primary" | "secondary" | "auxiliary" | "back" | "forward";
4
- export declare function toPointerButton(button: number): PointerButton;
1
+ export type SinglePointerType = "touch" | "mouse" | "pen" | "unknown";
2
+ export type SinglePointerPhase = "unknown" | "start" | "move" | "end" | "cancel";
3
+ export type SinglePointerButton = "none" | "primary" | "secondary" | "auxiliary" | "back" | "forward";
4
+ export declare function toSinglePointerButton(button: number): SinglePointerButton;
5
5
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/browser/single-pointer/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,SAAS,CAAC;AAEhE,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhG,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAiB7D"}
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"}
@@ -0,0 +1,4 @@
1
+ export { setCerebDeviceId } from './meta.js';
2
+ export type { Signal } from './signal.js';
3
+ export { createStream, type Observer, type Operator, type Stream, type Unsubscribe, } from './stream.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ export declare function getCerebDeviceId(): string;
2
+ export declare function setCerebDeviceId(id: string): void;
3
+ //# sourceMappingURL=meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/core/meta.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,9 @@
1
+ export interface Signal<K extends string = string, V = unknown> {
2
+ kind: K;
3
+ value: V;
4
+ deviceId: string;
5
+ createdAt: number;
6
+ updatedAt?: number;
7
+ }
8
+ export declare function createSignal<K extends string = string, V = unknown>(kind: K, value: V): Signal<K, V>;
9
+ //# sourceMappingURL=signal.d.ts.map
@@ -0,0 +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,5 +1,6 @@
1
+ import { Signal } from './signal.js';
1
2
  export type Unsubscribe = () => void;
2
- export interface Observer<T> {
3
+ export interface Observer<T extends Signal> {
3
4
  next(value: T): void;
4
5
  error?(err: unknown): void;
5
6
  complete?(): void;
@@ -9,7 +10,7 @@ export interface Observer<T> {
9
10
  * All streams are blockable - when blocked, events are silently dropped.
10
11
  * By default, streams support a single observer. Use share() for multicast.
11
12
  */
12
- export interface Stream<T> {
13
+ export interface Stream<T extends Signal> {
13
14
  subscribe(observer: Observer<T> | ((value: T) => void)): Unsubscribe;
14
15
  /** Block event propagation. Events are dropped, not queued. */
15
16
  block(): void;
@@ -18,11 +19,11 @@ export interface Stream<T> {
18
19
  /** Returns true if the stream is currently blocked. */
19
20
  readonly isBlocked: boolean;
20
21
  }
21
- export type Operator<T, R> = (source: Stream<T>) => Stream<R>;
22
- export declare function toObserver<T>(observerOrNext: Observer<T> | ((value: T) => void)): Observer<T>;
22
+ export type Operator<T extends Signal, R extends Signal> = (source: Stream<T>) => Stream<R>;
23
+ export declare function toObserver<T extends Signal>(observerOrNext: Observer<T> | ((value: T) => void)): Observer<T>;
23
24
  /**
24
25
  * Creates a Stream from a subscribe function.
25
26
  * The stream can be blocked/unblocked to control event flow.
26
27
  */
27
- export declare function createStream<T>(subscribeFn: (observer: Observer<T>) => Unsubscribe | void): Stream<T>;
28
+ export declare function createStream<T extends Signal>(subscribeFn: (observer: Observer<T>) => Unsubscribe | void): Stream<T>;
28
29
  //# sourceMappingURL=stream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/core/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC;AAErC,MAAM,WAAW,QAAQ,CAAC,CAAC,SAAS,MAAM;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,IAAI,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC,SAAS,MAAM;IACtC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC;IAErE,+DAA+D;IAC/D,KAAK,IAAI,IAAI,CAAC;IAEd,uDAAuD;IACvD,OAAO,IAAI,IAAI,CAAC;IAEhB,uDAAuD;IACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;AAE5F,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EACzC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,GACjD,QAAQ,CAAC,CAAC,CAAC,CAKb;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,WAAW,GAAG,IAAI,GACzD,MAAM,CAAC,CAAC,CAAC,CAiCX"}
@@ -0,0 +1,2 @@
1
+ "use strict";let c="";function f(){return c}function v(e){c=e}function s(e,i){return{kind:e,value:i,deviceId:f(),createdAt:performance.now()}}function g(e,i,o={}){const{initialSize:t=0,maxSize:u=100}=o,n=[];for(let r=0;r<t;r++)n.push(e());return{get size(){return n.length},acquire(){return n.length>0?n.pop():e()},release(r){n.length<u&&(i(r),n.push(r))}}}const S="single-pointer";function p(e){return s(S,e)}function d(){return p({id:"",phase:"move",x:0,y:0,pageX:0,pageY:0,pointerType:"unknown",button:"none",pressure:.5})}function P(e){e.value.phase="move",e.value.x=0,e.value.y=0,e.value.pageX=0,e.value.pageY=0,e.value.pointerType="unknown",e.value.button="none",e.value.pressure=.5,e.updatedAt=performance.now()}const l=g(d,P,{initialSize:20,maxSize:100});function h(e,i={}){const{pooling:o=!1}=i;let t=null;function u(){return o?l.acquire():p({id:"",phase:"move",x:0,y:0,pageX:0,pageY:0,pointerType:"mouse",button:"none",pressure:.5})}function n(){t&&o&&l.release(t),t=null}return{process:r=>{const a=u();return e(r,a),n(),t=a,a},get isActive(){return t!==null},reset(){n()},dispose(){this.reset()}}}exports.createObjectPool=g;exports.createSignal=s;exports.createSinglePointerEmitter=h;exports.setCerebDeviceId=v;
2
+ //# sourceMappingURL=emitter-CyT5OiQO.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter-CyT5OiQO.cjs","sources":["../src/core/meta.ts","../src/core/signal.ts","../src/internal/object-pool.ts","../src/browser/single-pointer/single-pointer-signal.ts","../src/browser/single-pointer/pool.ts","../src/browser/single-pointer/emitter.ts"],"sourcesContent":["let deviceId: string = \"\";\n\nexport function getCerebDeviceId(): string {\n return deviceId;\n}\n\nexport function setCerebDeviceId(id: string): void {\n deviceId = id;\n}\n","import { getCerebDeviceId } from \"./meta.js\";\n\nexport interface Signal<K extends string = string, V = unknown> {\n kind: K;\n value: V;\n deviceId: string;\n createdAt: number;\n updatedAt?: number;\n}\n\nexport function createSignal<K extends string = string, V = unknown>(\n kind: K,\n value: V,\n): Signal<K, V> {\n return {\n kind,\n value,\n deviceId: getCerebDeviceId(),\n createdAt: performance.now(),\n };\n}\n","export interface ObjectPool<T> {\n acquire(): T;\n release(item: T): void;\n readonly size: number;\n}\n\nexport interface ObjectPoolOptions {\n initialSize?: number;\n maxSize?: number;\n}\n\n/**\n * Generic object pool for reusing objects and reducing GC pressure.\n * Useful for high-frequency scenarios like pointer/touch events.\n */\nexport function createObjectPool<T>(\n create: () => T,\n reset: (item: T) => void,\n options: ObjectPoolOptions = {},\n): ObjectPool<T> {\n const { initialSize = 0, maxSize = 100 } = options;\n const pool: T[] = [];\n\n for (let i = 0; i < initialSize; i++) {\n pool.push(create());\n }\n\n return {\n get size() {\n return pool.length;\n },\n\n acquire(): T {\n if (pool.length > 0) {\n return pool.pop()!;\n }\n return create();\n },\n\n release(item: T): void {\n if (pool.length < maxSize) {\n reset(item);\n pool.push(item);\n }\n },\n };\n}\n","import { createSignal, type Signal } from \"../../core/signal.js\";\nimport type { SinglePointerButton, SinglePointerPhase, SinglePointerType } from \"./types.js\";\n\nexport interface SinglePointerSignal extends Signal<\"single-pointer\", SinglePointer> {}\n\nexport const SINGLE_POINTER_SIGNAL_KIND = \"single-pointer\" as const;\n\n/**\n * Normalized pointer data representing a single point of contact.\n * Abstracts away differences between mouse, touch, and pointer events.\n */\nexport interface SinglePointer {\n phase: SinglePointerPhase;\n x: number;\n y: number;\n pageX: number;\n pageY: number;\n pointerType: SinglePointerType;\n button: SinglePointerButton;\n /** 0.0 ~ 1.0, default 0.5 if unsupported */\n pressure: number;\n id: string;\n}\n\nexport function createSinglePointerSignal(pointer: SinglePointer): SinglePointerSignal {\n return createSignal(SINGLE_POINTER_SIGNAL_KIND, pointer);\n}\n\nexport function createDefaultSinglePointerSignal(): SinglePointerSignal {\n return createSinglePointerSignal({\n id: \"\",\n phase: \"move\",\n x: 0,\n y: 0,\n pageX: 0,\n pageY: 0,\n pointerType: \"unknown\",\n button: \"none\",\n pressure: 0.5,\n });\n}\n\nexport function resetSinglePointerSignal(p: SinglePointerSignal): void {\n p.value.phase = \"move\";\n p.value.x = 0;\n p.value.y = 0;\n p.value.pageX = 0;\n p.value.pageY = 0;\n p.value.pointerType = \"unknown\";\n p.value.button = \"none\";\n p.value.pressure = 0.5;\n p.updatedAt = performance.now();\n}\n","import { createObjectPool } from \"../../internal/object-pool.js\";\nimport {\n createDefaultSinglePointerSignal,\n resetSinglePointerSignal,\n type SinglePointerSignal,\n} from \"./single-pointer-signal.js\";\n\nexport const singlePointerPool = createObjectPool<SinglePointerSignal>(\n createDefaultSinglePointerSignal,\n resetSinglePointerSignal,\n {\n initialSize: 20,\n maxSize: 100,\n },\n);\n\nexport function releaseSinglePointer(signal: SinglePointerSignal): void {\n singlePointerPool.release(signal);\n}\n","import type { Signal } from \"../../core/signal.js\";\nimport { singlePointerPool } from \"./pool.js\";\nimport { createSinglePointerSignal, type SinglePointerSignal } from \"./single-pointer-signal.js\";\n\nexport interface SinglePointerEmitter<InputSignal extends Signal> {\n process(event: InputSignal): SinglePointerSignal;\n readonly isActive: boolean;\n reset(): void;\n dispose(): void;\n}\n\nexport interface SinglePointerEmitterOptions {\n pooling?: boolean;\n}\n\nexport function createSinglePointerEmitter<InputSignal extends Signal>(\n processor: (inputSignal: InputSignal, pointerSignal: SinglePointerSignal) => void,\n options: SinglePointerEmitterOptions = {},\n): SinglePointerEmitter<InputSignal> {\n const { pooling = false } = options;\n let current: SinglePointerSignal | null = null;\n\n function acquireSignal(): SinglePointerSignal {\n if (pooling) {\n return singlePointerPool.acquire();\n }\n return createSinglePointerSignal({\n id: \"\",\n phase: \"move\",\n x: 0,\n y: 0,\n pageX: 0,\n pageY: 0,\n pointerType: \"mouse\",\n button: \"none\",\n pressure: 0.5,\n });\n }\n\n function releaseCurrentPointer(): void {\n if (current && pooling) {\n singlePointerPool.release(current);\n }\n current = null;\n }\n\n return {\n process: (inputSignal) => {\n const signal = acquireSignal();\n processor(inputSignal, signal);\n releaseCurrentPointer();\n current = signal;\n return signal;\n },\n get isActive(): boolean {\n return current !== null;\n },\n reset(): void {\n releaseCurrentPointer();\n },\n dispose(): void {\n this.reset();\n },\n };\n}\n"],"names":["deviceId","getCerebDeviceId","setCerebDeviceId","id","createSignal","kind","value","createObjectPool","create","reset","options","initialSize","maxSize","pool","i","item","SINGLE_POINTER_SIGNAL_KIND","createSinglePointerSignal","pointer","createDefaultSinglePointerSignal","resetSinglePointerSignal","p","singlePointerPool","createSinglePointerEmitter","processor","pooling","current","acquireSignal","releaseCurrentPointer","inputSignal","signal"],"mappings":"aAAA,IAAIA,EAAmB,GAEhB,SAASC,GAA2B,CACzC,OAAOD,CACT,CAEO,SAASE,EAAiBC,EAAkB,CACjDH,EAAWG,CACb,CCEO,SAASC,EACdC,EACAC,EACc,CACd,MAAO,CACL,KAAAD,EACA,MAAAC,EACA,SAAUL,EAAA,EACV,UAAW,YAAY,IAAA,CAAI,CAE/B,CCLO,SAASM,EACdC,EACAC,EACAC,EAA6B,CAAA,EACd,CACf,KAAM,CAAE,YAAAC,EAAc,EAAG,QAAAC,EAAU,KAAQF,EACrCG,EAAY,CAAA,EAElB,QAASC,EAAI,EAAGA,EAAIH,EAAaG,IAC/BD,EAAK,KAAKL,GAAQ,EAGpB,MAAO,CACL,IAAI,MAAO,CACT,OAAOK,EAAK,MACd,EAEA,SAAa,CACX,OAAIA,EAAK,OAAS,EACTA,EAAK,IAAA,EAEPL,EAAA,CACT,EAEA,QAAQO,EAAe,CACjBF,EAAK,OAASD,IAChBH,EAAMM,CAAI,EACVF,EAAK,KAAKE,CAAI,EAElB,CAAA,CAEJ,CCzCO,MAAMC,EAA6B,iBAmBnC,SAASC,EAA0BC,EAA6C,CACrF,OAAOd,EAAaY,EAA4BE,CAAO,CACzD,CAEO,SAASC,GAAwD,CACtE,OAAOF,EAA0B,CAC/B,GAAI,GACJ,MAAO,OACP,EAAG,EACH,EAAG,EACH,MAAO,EACP,MAAO,EACP,YAAa,UACb,OAAQ,OACR,SAAU,EAAA,CACX,CACH,CAEO,SAASG,EAAyBC,EAA8B,CACrEA,EAAE,MAAM,MAAQ,OAChBA,EAAE,MAAM,EAAI,EACZA,EAAE,MAAM,EAAI,EACZA,EAAE,MAAM,MAAQ,EAChBA,EAAE,MAAM,MAAQ,EAChBA,EAAE,MAAM,YAAc,UACtBA,EAAE,MAAM,OAAS,OACjBA,EAAE,MAAM,SAAW,GACnBA,EAAE,UAAY,YAAY,IAAA,CAC5B,CC7CO,MAAMC,EAAoBf,EAC/BY,EACAC,EACA,CACE,YAAa,GACb,QAAS,GAAA,CAEb,ECCO,SAASG,EACdC,EACAd,EAAuC,GACJ,CACnC,KAAM,CAAE,QAAAe,EAAU,EAAA,EAAUf,EAC5B,IAAIgB,EAAsC,KAE1C,SAASC,GAAqC,CAC5C,OAAIF,EACKH,EAAkB,QAAA,EAEpBL,EAA0B,CAC/B,GAAI,GACJ,MAAO,OACP,EAAG,EACH,EAAG,EACH,MAAO,EACP,MAAO,EACP,YAAa,QACb,OAAQ,OACR,SAAU,EAAA,CACX,CACH,CAEA,SAASW,GAA8B,CACjCF,GAAWD,GACbH,EAAkB,QAAQI,CAAO,EAEnCA,EAAU,IACZ,CAEA,MAAO,CACL,QAAUG,GAAgB,CACxB,MAAMC,EAASH,EAAA,EACf,OAAAH,EAAUK,EAAaC,CAAM,EAC7BF,EAAA,EACAF,EAAUI,EACHA,CACT,EACA,IAAI,UAAoB,CACtB,OAAOJ,IAAY,IACrB,EACA,OAAc,CACZE,EAAA,CACF,EACA,SAAgB,CACd,KAAK,MAAA,CACP,CAAA,CAEJ"}
@@ -0,0 +1,101 @@
1
+ let s = "";
2
+ function g() {
3
+ return s;
4
+ }
5
+ function h(e) {
6
+ s = e;
7
+ }
8
+ function p(e, i) {
9
+ return {
10
+ kind: e,
11
+ value: i,
12
+ deviceId: g(),
13
+ createdAt: performance.now()
14
+ };
15
+ }
16
+ function f(e, i, o = {}) {
17
+ const { initialSize: t = 0, maxSize: u = 100 } = o, n = [];
18
+ for (let r = 0; r < t; r++)
19
+ n.push(e());
20
+ return {
21
+ get size() {
22
+ return n.length;
23
+ },
24
+ acquire() {
25
+ return n.length > 0 ? n.pop() : e();
26
+ },
27
+ release(r) {
28
+ n.length < u && (i(r), n.push(r));
29
+ }
30
+ };
31
+ }
32
+ const v = "single-pointer";
33
+ function c(e) {
34
+ return p(v, e);
35
+ }
36
+ function S() {
37
+ return c({
38
+ id: "",
39
+ phase: "move",
40
+ x: 0,
41
+ y: 0,
42
+ pageX: 0,
43
+ pageY: 0,
44
+ pointerType: "unknown",
45
+ button: "none",
46
+ pressure: 0.5
47
+ });
48
+ }
49
+ function d(e) {
50
+ e.value.phase = "move", e.value.x = 0, e.value.y = 0, e.value.pageX = 0, e.value.pageY = 0, e.value.pointerType = "unknown", e.value.button = "none", e.value.pressure = 0.5, e.updatedAt = performance.now();
51
+ }
52
+ const l = f(
53
+ S,
54
+ d,
55
+ {
56
+ initialSize: 20,
57
+ maxSize: 100
58
+ }
59
+ );
60
+ function P(e, i = {}) {
61
+ const { pooling: o = !1 } = i;
62
+ let t = null;
63
+ function u() {
64
+ return o ? l.acquire() : c({
65
+ id: "",
66
+ phase: "move",
67
+ x: 0,
68
+ y: 0,
69
+ pageX: 0,
70
+ pageY: 0,
71
+ pointerType: "mouse",
72
+ button: "none",
73
+ pressure: 0.5
74
+ });
75
+ }
76
+ function n() {
77
+ t && o && l.release(t), t = null;
78
+ }
79
+ return {
80
+ process: (r) => {
81
+ const a = u();
82
+ return e(r, a), n(), t = a, a;
83
+ },
84
+ get isActive() {
85
+ return t !== null;
86
+ },
87
+ reset() {
88
+ n();
89
+ },
90
+ dispose() {
91
+ this.reset();
92
+ }
93
+ };
94
+ }
95
+ export {
96
+ p as a,
97
+ f as b,
98
+ P as c,
99
+ h as s
100
+ };
101
+ //# sourceMappingURL=emitter-FFAuyJ19.js.map