1- import type { AlgLeaf } from "../../alg/alg-nodes/AlgNode" ;
21import type { KPattern } from "../../kpuzzle/KPattern" ;
2+ import type {
3+ ExperimentalAlgLeafEvent ,
4+ ExperimentalOrientationEvent ,
5+ } from "../../stream" ;
36import {
47 BasicRotationTransformer ,
58 type StreamTransformer ,
69} from "../transformer" ;
710
811/******** BluetoothPuzzle ********/
912
10- // TODO: Use actual `CustomEvent`s?
11- // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent
12- /** @category Smart Puzzles */
13- export interface AlgLeafEvent {
14- latestAlgLeaf : AlgLeaf ;
15- timeStamp : number ;
16- debug ?: Record < string , unknown > ;
17- pattern ?: KPattern ;
18- quaternion ?: any ; // TODO: Unused
19- }
20-
21- // TODO: Only use the `quaternion` field in the `AlgLeafEvent`?
22- /** @category Smart Puzzles */
23- export interface OrientationEvent {
24- quaternion : {
25- x : number ;
26- y : number ;
27- z : number ;
28- w : number ;
29- } ;
30- timeStamp : number ;
31- debug ?: Record < string , unknown > ;
32- }
33-
3413export interface BluetoothConfig < T > {
3514 connect :
3615 | ( (
@@ -52,8 +31,10 @@ export interface BluetoothConfig<T> {
5231/** @category Smart Puzzles */
5332export abstract class BluetoothPuzzle extends EventTarget {
5433 public transformers : StreamTransformer [ ] = [ ] ;
55- protected listeners : Array < ( e : AlgLeafEvent ) => void > = [ ] ; // TODO: type
56- protected orientationListeners : Array < ( e : OrientationEvent ) => void > = [ ] ; // TODO: type
34+ protected listeners : Array < ( e : ExperimentalAlgLeafEvent ) => void > = [ ] ; // TODO: type
35+ protected orientationListeners : Array <
36+ ( e : ExperimentalOrientationEvent ) => void
37+ > = [ ] ; // TODO: type
5738
5839 public abstract name ( ) : string | undefined ;
5940 public abstract disconnect ( ) : void ; // TODO: Can we make this reutrn (async) on success?
@@ -63,19 +44,23 @@ export abstract class BluetoothPuzzle extends EventTarget {
6344 throw new Error ( "cannot get pattern" ) ;
6445 }
6546
66- public addAlgLeafListener ( listener : ( e : AlgLeafEvent ) => void ) : void {
47+ public addAlgLeafListener (
48+ listener : ( e : ExperimentalAlgLeafEvent ) => void ,
49+ ) : void {
6750 this . listeners . push ( listener ) ;
6851 }
6952
70- public addOrientationListener ( listener : ( e : OrientationEvent ) => void ) : void {
53+ public addOrientationListener (
54+ listener : ( e : ExperimentalOrientationEvent ) => void ,
55+ ) : void {
7156 this . orientationListeners . push ( listener ) ;
7257 }
7358
7459 public experimentalAddBasicRotationTransformer ( ) : void {
7560 this . transformers . push ( new BasicRotationTransformer ( ) ) ;
7661 }
7762
78- protected dispatchAlgLeaf ( algLeaf : AlgLeafEvent ) : void {
63+ protected dispatchAlgLeaf ( algLeaf : ExperimentalAlgLeafEvent ) : void {
7964 for ( const transformer of this . transformers ) {
8065 transformer . transformAlgLeaf ( algLeaf ) ;
8166 }
@@ -84,7 +69,9 @@ export abstract class BluetoothPuzzle extends EventTarget {
8469 }
8570 }
8671
87- protected dispatchOrientation ( orientationEvent : OrientationEvent ) : void {
72+ protected dispatchOrientation (
73+ orientationEvent : ExperimentalOrientationEvent ,
74+ ) : void {
8875 for ( const transformer of this . transformers ) {
8976 transformer . transformOrientation ( orientationEvent ) ;
9077 }
0 commit comments