interaction-system 1.0.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.
- package/README.md +377 -0
- package/USAGE.md +490 -0
- package/dist/index.cjs.js +1983 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.es.js +1983 -0
- package/dist/index.es.js.map +1 -0
- package/dist/input/KeyEvent.d.ts +315 -0
- package/dist/input/KeyEvent.d.ts.map +1 -0
- package/dist/input/KeyInputHandler.d.ts +15 -0
- package/dist/input/KeyInputHandler.d.ts.map +1 -0
- package/dist/input/KeyToCodeMap.d.ts +2 -0
- package/dist/input/KeyToCodeMap.d.ts.map +1 -0
- package/dist/input/UIEventsCode.d.ts +175 -0
- package/dist/input/UIEventsCode.d.ts.map +1 -0
- package/dist/interaction/FeaturedInteractionHandler.d.ts +26 -0
- package/dist/interaction/FeaturedInteractionHandler.d.ts.map +1 -0
- package/dist/interaction/InteractionHandler.d.ts +86 -0
- package/dist/interaction/InteractionHandler.d.ts.map +1 -0
- package/dist/interaction/SimpleInteractionHandler.d.ts +19 -0
- package/dist/interaction/SimpleInteractionHandler.d.ts.map +1 -0
- package/dist/messages/CommandControlMessage.d.ts +49 -0
- package/dist/messages/CommandControlMessage.d.ts.map +1 -0
- package/dist/messages/ControlMessage.d.ts +25 -0
- package/dist/messages/ControlMessage.d.ts.map +1 -0
- package/dist/messages/KeyCodeControlMessage.d.ts +24 -0
- package/dist/messages/KeyCodeControlMessage.d.ts.map +1 -0
- package/dist/messages/ScrollControlMessage.d.ts +23 -0
- package/dist/messages/ScrollControlMessage.d.ts.map +1 -0
- package/dist/messages/TextControlMessage.d.ts +19 -0
- package/dist/messages/TextControlMessage.d.ts.map +1 -0
- package/dist/messages/TouchControlMessage.d.ts +44 -0
- package/dist/messages/TouchControlMessage.d.ts.map +1 -0
- package/dist/models/MotionEvent.d.ts +18 -0
- package/dist/models/MotionEvent.d.ts.map +1 -0
- package/dist/models/Point.d.ts +14 -0
- package/dist/models/Point.d.ts.map +1 -0
- package/dist/models/Position.d.ts +17 -0
- package/dist/models/Position.d.ts.map +1 -0
- package/dist/models/Rect.d.ts +22 -0
- package/dist/models/Rect.d.ts.map +1 -0
- package/dist/models/ScreenInfo.d.ts +14 -0
- package/dist/models/ScreenInfo.d.ts.map +1 -0
- package/dist/models/Size.d.ts +21 -0
- package/dist/models/Size.d.ts.map +1 -0
- package/dist/types/PlayerInterface.d.ts +20 -0
- package/dist/types/PlayerInterface.d.ts.map +1 -0
- package/dist/utils/Util.d.ts +26 -0
- package/dist/utils/Util.d.ts.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { default as ScreenInfo } from '../models/ScreenInfo';
|
|
2
|
+
import { TouchControlMessage } from '../messages/TouchControlMessage';
|
|
3
|
+
import { default as Point } from '../models/Point';
|
|
4
|
+
import { default as Position } from '../models/Position';
|
|
5
|
+
import { IPlayer } from '../types/PlayerInterface';
|
|
6
|
+
|
|
7
|
+
interface Touch {
|
|
8
|
+
action: number;
|
|
9
|
+
position: Position;
|
|
10
|
+
buttons: number;
|
|
11
|
+
invalid: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface TouchOnClient {
|
|
14
|
+
client: {
|
|
15
|
+
width: number;
|
|
16
|
+
height: number;
|
|
17
|
+
};
|
|
18
|
+
touch: Touch;
|
|
19
|
+
}
|
|
20
|
+
interface CommonTouchAndMouse {
|
|
21
|
+
clientX: number;
|
|
22
|
+
clientY: number;
|
|
23
|
+
type: string;
|
|
24
|
+
target: EventTarget | null;
|
|
25
|
+
buttons: number;
|
|
26
|
+
}
|
|
27
|
+
interface MiniMouseEvent extends CommonTouchAndMouse {
|
|
28
|
+
ctrlKey: boolean;
|
|
29
|
+
shiftKey: boolean;
|
|
30
|
+
buttons: number;
|
|
31
|
+
}
|
|
32
|
+
export type TouchEventNames = 'touchstart' | 'touchend' | 'touchmove' | 'touchcancel' | 'mousedown' | 'mouseup' | 'mousemove';
|
|
33
|
+
export type WheelEventNames = 'wheel';
|
|
34
|
+
export type InteractionEvents = TouchEventNames | WheelEventNames;
|
|
35
|
+
export type KeyEventNames = 'keydown' | 'keyup';
|
|
36
|
+
export declare abstract class InteractionHandler {
|
|
37
|
+
readonly player: IPlayer;
|
|
38
|
+
readonly touchEventsNames: InteractionEvents[];
|
|
39
|
+
readonly keyEventsNames: KeyEventNames[];
|
|
40
|
+
protected static readonly SIMULATE_MULTI_TOUCH = "SIMULATE_MULTI_TOUCH";
|
|
41
|
+
protected static readonly STROKE_STYLE: string;
|
|
42
|
+
protected static EVENT_ACTION_MAP: Record<string, number>;
|
|
43
|
+
private static options;
|
|
44
|
+
private static idToPointerMap;
|
|
45
|
+
private static pointerToIdMap;
|
|
46
|
+
private static touchPointRadius;
|
|
47
|
+
private static centerPointRadius;
|
|
48
|
+
private static touchPointImage?;
|
|
49
|
+
private static centerPointImage?;
|
|
50
|
+
private static pointImagesLoaded;
|
|
51
|
+
private static eventListeners;
|
|
52
|
+
private multiTouchActive;
|
|
53
|
+
private multiTouchCenter?;
|
|
54
|
+
private multiTouchShift;
|
|
55
|
+
private dirtyPlace;
|
|
56
|
+
protected readonly ctx: CanvasRenderingContext2D | null;
|
|
57
|
+
protected readonly tag: HTMLCanvasElement;
|
|
58
|
+
protected over: boolean;
|
|
59
|
+
protected lastPosition?: MouseEvent;
|
|
60
|
+
protected constructor(player: IPlayer, touchEventsNames: InteractionEvents[], keyEventsNames: KeyEventNames[]);
|
|
61
|
+
protected abstract onInteraction(event: MouseEvent | TouchEvent): void;
|
|
62
|
+
protected abstract onKey(event: KeyboardEvent): void;
|
|
63
|
+
protected static bindGlobalListeners(interactionHandler: InteractionHandler): void;
|
|
64
|
+
protected static unbindListeners(touchHandler: InteractionHandler): void;
|
|
65
|
+
protected static onInteractionEvent: (event: MouseEvent | TouchEvent) => void;
|
|
66
|
+
protected static onKeyEvent: (event: KeyboardEvent) => void;
|
|
67
|
+
protected static loadImages(): void;
|
|
68
|
+
protected static getPointerId(type: string, identifier: number): number;
|
|
69
|
+
protected static buildTouchOnClient(event: CommonTouchAndMouse, screenInfo: ScreenInfo): TouchOnClient | null;
|
|
70
|
+
private static validateMessage;
|
|
71
|
+
protected static createEmulatedMessage(action: number, event: TouchControlMessage): TouchControlMessage;
|
|
72
|
+
static mapTypeToAction(type: string): number;
|
|
73
|
+
protected getTouch(e: CommonTouchAndMouse, screenInfo: ScreenInfo, ctrlKey: boolean, shiftKey: boolean): Touch[] | null;
|
|
74
|
+
protected drawCircle(ctx: CanvasRenderingContext2D, point: Point, radius: number): void;
|
|
75
|
+
drawLine(point1: Point, point2: Point): void;
|
|
76
|
+
protected drawPoint(point: Point, radius: number, image?: HTMLImageElement): void;
|
|
77
|
+
drawPointer(point: Point): void;
|
|
78
|
+
drawCenter(point: Point): void;
|
|
79
|
+
protected updateDirty(topLeft: Point, bottomRight: Point): void;
|
|
80
|
+
clearCanvas(): void;
|
|
81
|
+
formatTouchEvent(e: TouchEvent, screenInfo: ScreenInfo, storage: Map<number, TouchControlMessage>): TouchControlMessage[];
|
|
82
|
+
buildTouchEvent(e: MiniMouseEvent, screenInfo: ScreenInfo, storage: Map<number, TouchControlMessage>): TouchControlMessage[];
|
|
83
|
+
release(): void;
|
|
84
|
+
}
|
|
85
|
+
export {};
|
|
86
|
+
//# sourceMappingURL=InteractionHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/InteractionHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { InteractionHandler } from './InteractionHandler';
|
|
2
|
+
import { IPlayer } from '../types/PlayerInterface';
|
|
3
|
+
import { default as Position } from '../models/Position';
|
|
4
|
+
|
|
5
|
+
export interface TouchHandlerListener {
|
|
6
|
+
performClick: (position: Position) => void;
|
|
7
|
+
performScroll: (from: Position, to: Position) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare class SimpleInteractionHandler extends InteractionHandler {
|
|
10
|
+
private readonly listener;
|
|
11
|
+
private startPosition?;
|
|
12
|
+
private endPosition?;
|
|
13
|
+
private static readonly touchEventsNames;
|
|
14
|
+
private storage;
|
|
15
|
+
constructor(player: IPlayer, listener: TouchHandlerListener);
|
|
16
|
+
protected onInteraction(event: MouseEvent | TouchEvent): void;
|
|
17
|
+
protected onKey(): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=SimpleInteractionHandler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleInteractionHandler.d.ts","sourceRoot":"","sources":["../../src/interaction/SimpleInteractionHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,OAAO,QAAQ,MAAM,oBAAoB,CAAC;AAE1C,MAAM,WAAW,oBAAoB;IACjC,YAAY,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC3C,aAAa,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzD;AAID,qBAAa,wBAAyB,SAAQ,kBAAkB;IAM/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IALtD,OAAO,CAAC,aAAa,CAAC,CAAW;IACjC,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAA8D;IACtG,OAAO,CAAC,OAAO,CAAa;gBAEhB,MAAM,EAAE,OAAO,EAAmB,QAAQ,EAAE,oBAAoB;IAI5E,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI;IA4D7D,SAAS,CAAC,KAAK,IAAI,IAAI;CAG1B"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { ControlMessage } from './ControlMessage';
|
|
3
|
+
|
|
4
|
+
export declare enum FilePushState {
|
|
5
|
+
NEW = 0,
|
|
6
|
+
START = 1,
|
|
7
|
+
APPEND = 2,
|
|
8
|
+
FINISH = 3,
|
|
9
|
+
CANCEL = 4
|
|
10
|
+
}
|
|
11
|
+
type FilePushParams = {
|
|
12
|
+
id: number;
|
|
13
|
+
state: FilePushState;
|
|
14
|
+
chunk?: Uint8Array;
|
|
15
|
+
fileName?: string;
|
|
16
|
+
fileSize?: number;
|
|
17
|
+
};
|
|
18
|
+
export declare class CommandControlMessage extends ControlMessage {
|
|
19
|
+
readonly type: number;
|
|
20
|
+
static PAYLOAD_LENGTH: number;
|
|
21
|
+
static Commands: Map<number, string>;
|
|
22
|
+
/**
|
|
23
|
+
* 注意: createSetVideoSettingsCommand 方法依赖 VideoSettings 类
|
|
24
|
+
* 该方法未包含在此独立模块中
|
|
25
|
+
* 如需使用,请在应用中自行实现或从原项目导入
|
|
26
|
+
*/
|
|
27
|
+
static createSetClipboardCommand(text: string, paste?: boolean): CommandControlMessage;
|
|
28
|
+
static createSetScreenPowerModeCommand(mode: boolean): CommandControlMessage;
|
|
29
|
+
static createPushFileCommand(params: FilePushParams): CommandControlMessage;
|
|
30
|
+
private static createPushFileStartCommand;
|
|
31
|
+
private static createPushFileChunkCommand;
|
|
32
|
+
private static createPushFileOtherCommand;
|
|
33
|
+
static pushFileCommandFromBuffer(buffer: Buffer): {
|
|
34
|
+
id: number;
|
|
35
|
+
state: FilePushState;
|
|
36
|
+
chunk?: Buffer;
|
|
37
|
+
fileSize?: number;
|
|
38
|
+
fileName?: string;
|
|
39
|
+
};
|
|
40
|
+
private buffer?;
|
|
41
|
+
constructor(type: number);
|
|
42
|
+
/**
|
|
43
|
+
* @override
|
|
44
|
+
*/
|
|
45
|
+
toBuffer(): Buffer;
|
|
46
|
+
toString(): string;
|
|
47
|
+
}
|
|
48
|
+
export {};
|
|
49
|
+
//# sourceMappingURL=CommandControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/CommandControlMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,oBAAY,aAAa;IACrB,GAAG,IAAA;IACH,KAAK,IAAA;IACL,MAAM,IAAA;IACN,MAAM,IAAA;IACN,MAAM,IAAA;CACT;AAED,KAAK,cAAc,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,aAAa,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,cAAc;IAiLzC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAhLjC,OAAc,cAAc,SAAK;IAEjC,OAAc,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAQxC;IAEH;;;;OAIG;WAKW,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,qBAAqB;WAkB7E,+BAA+B,CAAC,IAAI,EAAE,OAAO,GAAG,qBAAqB;WAUrE,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,qBAAqB;IAmBlF,OAAO,CAAC,MAAM,CAAC,0BAA0B;IA+BzC,OAAO,CAAC,MAAM,CAAC,0BAA0B;IAyBzC,OAAO,CAAC,MAAM,CAAC,0BAA0B;WAgB3B,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG;QACrD,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,aAAa,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACrB;IA4BD,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEH,IAAI,EAAE,MAAM;IAIjC;;OAEG;IACI,QAAQ,IAAI,MAAM;IASlB,QAAQ,IAAI,MAAM;CAI5B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface ControlMessageInterface {
|
|
2
|
+
type: number;
|
|
3
|
+
}
|
|
4
|
+
export declare class ControlMessage {
|
|
5
|
+
readonly type: number;
|
|
6
|
+
static TYPE_KEYCODE: number;
|
|
7
|
+
static TYPE_TEXT: number;
|
|
8
|
+
static TYPE_TOUCH: number;
|
|
9
|
+
static TYPE_SCROLL: number;
|
|
10
|
+
static TYPE_BACK_OR_SCREEN_ON: number;
|
|
11
|
+
static TYPE_EXPAND_NOTIFICATION_PANEL: number;
|
|
12
|
+
static TYPE_EXPAND_SETTINGS_PANEL: number;
|
|
13
|
+
static TYPE_COLLAPSE_PANELS: number;
|
|
14
|
+
static TYPE_GET_CLIPBOARD: number;
|
|
15
|
+
static TYPE_SET_CLIPBOARD: number;
|
|
16
|
+
static TYPE_SET_SCREEN_POWER_MODE: number;
|
|
17
|
+
static TYPE_ROTATE_DEVICE: number;
|
|
18
|
+
static TYPE_CHANGE_STREAM_PARAMETERS: number;
|
|
19
|
+
static TYPE_PUSH_FILE: number;
|
|
20
|
+
constructor(type: number);
|
|
21
|
+
toBuffer(): Buffer;
|
|
22
|
+
toString(): string;
|
|
23
|
+
toJSON(): ControlMessageInterface;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=ControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/ControlMessage.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAc;IAgBX,QAAQ,CAAC,IAAI,EAAE,MAAM;IAfjC,OAAc,YAAY,SAAK;IAC/B,OAAc,SAAS,SAAK;IAC5B,OAAc,UAAU,SAAK;IAC7B,OAAc,WAAW,SAAK;IAC9B,OAAc,sBAAsB,SAAK;IACzC,OAAc,8BAA8B,SAAK;IACjD,OAAc,0BAA0B,SAAK;IAC7C,OAAc,oBAAoB,SAAK;IACvC,OAAc,kBAAkB,SAAK;IACrC,OAAc,kBAAkB,SAAK;IACrC,OAAc,0BAA0B,SAAM;IAC9C,OAAc,kBAAkB,SAAM;IACtC,OAAc,6BAA6B,SAAO;IAClD,OAAc,cAAc,SAAO;gBAEd,IAAI,EAAE,MAAM;IAE1B,QAAQ,IAAI,MAAM;IAIlB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,uBAAuB;CAK3C"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { ControlMessage, ControlMessageInterface } from './ControlMessage';
|
|
3
|
+
|
|
4
|
+
export interface KeyCodeControlMessageInterface extends ControlMessageInterface {
|
|
5
|
+
action: number;
|
|
6
|
+
keycode: number;
|
|
7
|
+
repeat: number;
|
|
8
|
+
metaState: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class KeyCodeControlMessage extends ControlMessage {
|
|
11
|
+
readonly action: number;
|
|
12
|
+
readonly keycode: number;
|
|
13
|
+
readonly repeat: number;
|
|
14
|
+
readonly metaState: number;
|
|
15
|
+
static PAYLOAD_LENGTH: number;
|
|
16
|
+
constructor(action: number, keycode: number, repeat: number, metaState: number);
|
|
17
|
+
/**
|
|
18
|
+
* @override
|
|
19
|
+
*/
|
|
20
|
+
toBuffer(): Buffer;
|
|
21
|
+
toString(): string;
|
|
22
|
+
toJSON(): KeyCodeControlMessageInterface;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=KeyCodeControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KeyCodeControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/KeyCodeControlMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,8BAA+B,SAAQ,uBAAuB;IAC3E,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,cAAc;IAIjD,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM;IAN9B,OAAc,cAAc,SAAM;gBAGrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM;IAK9B;;OAEG;IACI,QAAQ,IAAI,MAAM;IAWlB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,8BAA8B;CASlD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { ControlMessage, ControlMessageInterface } from './ControlMessage';
|
|
3
|
+
import { default as Position, PositionInterface } from '../models/Position';
|
|
4
|
+
|
|
5
|
+
export interface ScrollControlMessageInterface extends ControlMessageInterface {
|
|
6
|
+
position: PositionInterface;
|
|
7
|
+
hScroll: number;
|
|
8
|
+
vScroll: number;
|
|
9
|
+
}
|
|
10
|
+
export declare class ScrollControlMessage extends ControlMessage {
|
|
11
|
+
readonly position: Position;
|
|
12
|
+
readonly hScroll: number;
|
|
13
|
+
readonly vScroll: number;
|
|
14
|
+
static PAYLOAD_LENGTH: number;
|
|
15
|
+
constructor(position: Position, hScroll: number, vScroll: number);
|
|
16
|
+
/**
|
|
17
|
+
* @override
|
|
18
|
+
*/
|
|
19
|
+
toBuffer(): Buffer;
|
|
20
|
+
toString(): string;
|
|
21
|
+
toJSON(): ScrollControlMessageInterface;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ScrollControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScrollControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/ScrollControlMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,QAAQ,EAAE,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,WAAW,6BAA8B,SAAQ,uBAAuB;IAC1E,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,oBAAqB,SAAQ,cAAc;IAGxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM;IAF3F,OAAc,cAAc,SAAM;gBAEb,QAAQ,EAAE,QAAQ,EAAW,OAAO,EAAE,MAAM,EAAW,OAAO,EAAE,MAAM;IAI3F;;OAEG;IACI,QAAQ,IAAI,MAAM;IAalB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,6BAA6B;CAQjD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { ControlMessage, ControlMessageInterface } from './ControlMessage';
|
|
3
|
+
|
|
4
|
+
export interface TextControlMessageInterface extends ControlMessageInterface {
|
|
5
|
+
text: string;
|
|
6
|
+
}
|
|
7
|
+
export declare class TextControlMessage extends ControlMessage {
|
|
8
|
+
readonly text: string;
|
|
9
|
+
private static TEXT_SIZE_FIELD_LENGTH;
|
|
10
|
+
constructor(text: string);
|
|
11
|
+
getText(): string;
|
|
12
|
+
/**
|
|
13
|
+
* @override
|
|
14
|
+
*/
|
|
15
|
+
toBuffer(): Buffer;
|
|
16
|
+
toString(): string;
|
|
17
|
+
toJSON(): TextControlMessageInterface;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=TextControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/TextControlMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE3E,MAAM,WAAW,2BAA4B,SAAQ,uBAAuB;IACxE,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,kBAAmB,SAAQ,cAAc;IAEtC,QAAQ,CAAC,IAAI,EAAE,MAAM;IADjC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAK;gBACrB,IAAI,EAAE,MAAM;IAI1B,OAAO,IAAI,MAAM;IAIxB;;OAEG;IACI,QAAQ,IAAI,MAAM;IAUlB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,2BAA2B;CAM/C"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Buffer } from 'buffer';
|
|
2
|
+
import { ControlMessage, ControlMessageInterface } from './ControlMessage';
|
|
3
|
+
import { default as Position, PositionInterface } from '../models/Position';
|
|
4
|
+
|
|
5
|
+
export interface TouchControlMessageInterface extends ControlMessageInterface {
|
|
6
|
+
type: number;
|
|
7
|
+
action: number;
|
|
8
|
+
pointerId: number;
|
|
9
|
+
position: PositionInterface;
|
|
10
|
+
pressure: number;
|
|
11
|
+
buttons: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class TouchControlMessage extends ControlMessage {
|
|
14
|
+
readonly action: number;
|
|
15
|
+
readonly pointerId: number;
|
|
16
|
+
readonly position: Position;
|
|
17
|
+
readonly pressure: number;
|
|
18
|
+
readonly buttons: number;
|
|
19
|
+
static PAYLOAD_LENGTH: number;
|
|
20
|
+
/**
|
|
21
|
+
* - For a touch screen or touch pad, reports the approximate pressure
|
|
22
|
+
* applied to the surface by a finger or other tool. The value is
|
|
23
|
+
* normalized to a range from 0 (no pressure at all) to 1 (normal pressure),
|
|
24
|
+
* although values higher than 1 may be generated depending on the
|
|
25
|
+
* calibration of the input device.
|
|
26
|
+
* - For a trackball, the value is set to 1 if the trackball button is pressed
|
|
27
|
+
* or 0 otherwise.
|
|
28
|
+
* - For a mouse, the value is set to 1 if the primary mouse button is pressed
|
|
29
|
+
* or 0 otherwise.
|
|
30
|
+
*
|
|
31
|
+
* - scrcpy server expects signed short (2 bytes) for a pressure value
|
|
32
|
+
* - in browser TouchEvent has `force` property (values in 0..1 range), we
|
|
33
|
+
* use it as "pressure" for scrcpy
|
|
34
|
+
*/
|
|
35
|
+
static readonly MAX_PRESSURE_VALUE = 65535;
|
|
36
|
+
constructor(action: number, pointerId: number, position: Position, pressure: number, buttons: number);
|
|
37
|
+
/**
|
|
38
|
+
* @override
|
|
39
|
+
*/
|
|
40
|
+
toBuffer(): Buffer;
|
|
41
|
+
toString(): string;
|
|
42
|
+
toJSON(): TouchControlMessageInterface;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=TouchControlMessage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TouchControlMessage.d.ts","sourceRoot":"","sources":["../../src/messages/TouchControlMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,QAAQ,EAAE,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,WAAW,4BAA6B,SAAQ,uBAAuB;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IAoB/C,QAAQ,CAAC,MAAM,EAAE,MAAM;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM;IAC1B,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM;IAvB5B,OAAc,cAAc,SAAM;IAClC;;;;;;;;;;;;;;OAcG;IACH,gBAAuB,kBAAkB,SAAU;gBAGtC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM;IAK5B;;OAEG;IACI,QAAQ,IAAI,MAAM;IAgBlB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,4BAA4B;CAUhD"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export default class MotionEvent {
|
|
2
|
+
static ACTION_DOWN: number;
|
|
3
|
+
static ACTION_UP: number;
|
|
4
|
+
static ACTION_MOVE: number;
|
|
5
|
+
/**
|
|
6
|
+
* Button constant: Primary button (left mouse button).
|
|
7
|
+
*/
|
|
8
|
+
static BUTTON_PRIMARY: number;
|
|
9
|
+
/**
|
|
10
|
+
* Button constant: Secondary button (right mouse button).
|
|
11
|
+
*/
|
|
12
|
+
static BUTTON_SECONDARY: number;
|
|
13
|
+
/**
|
|
14
|
+
* Button constant: Tertiary button (middle mouse button).
|
|
15
|
+
*/
|
|
16
|
+
static BUTTON_TERTIARY: number;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=MotionEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MotionEvent.d.ts","sourceRoot":"","sources":["../../src/models/MotionEvent.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,WAAW;IAC5B,OAAc,WAAW,SAAK;IAC9B,OAAc,SAAS,SAAK;IAC5B,OAAc,WAAW,SAAK;IAC9B;;OAEG;IACH,OAAc,cAAc,EAAE,MAAM,CAAU;IAE9C;;OAEG;IACH,OAAc,gBAAgB,EAAE,MAAM,CAAU;IAEhD;;OAEG;IACH,OAAc,eAAe,EAAE,MAAM,CAAU;CAClD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface PointInterface {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
}
|
|
5
|
+
export default class Point {
|
|
6
|
+
readonly x: number;
|
|
7
|
+
readonly y: number;
|
|
8
|
+
constructor(x: number, y: number);
|
|
9
|
+
equals(o: Point): boolean;
|
|
10
|
+
distance(to: Point): number;
|
|
11
|
+
toString(): string;
|
|
12
|
+
toJSON(): PointInterface;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Point.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Point.d.ts","sourceRoot":"","sources":["../../src/models/Point.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACtB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;gBACP,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM;IAKzB,MAAM,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO;IAUzB,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,MAAM;IAM3B,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,cAAc;CAMlC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { default as Point, PointInterface } from './Point';
|
|
2
|
+
import { default as Size, SizeInterface } from './Size';
|
|
3
|
+
|
|
4
|
+
export interface PositionInterface {
|
|
5
|
+
point: PointInterface;
|
|
6
|
+
screenSize: SizeInterface;
|
|
7
|
+
}
|
|
8
|
+
export default class Position {
|
|
9
|
+
readonly point: Point;
|
|
10
|
+
readonly screenSize: Size;
|
|
11
|
+
constructor(point: Point, screenSize: Size);
|
|
12
|
+
equals(o: Position): boolean;
|
|
13
|
+
rotate(rotation: number): Position;
|
|
14
|
+
toString(): string;
|
|
15
|
+
toJSON(): PositionInterface;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=Position.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Position.d.ts","sourceRoot":"","sources":["../../src/models/Position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAC9B,KAAK,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,aAAa,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,OAAO,QAAQ;IACN,QAAQ,CAAC,KAAK,EAAE,KAAK;IAAE,QAAQ,CAAC,UAAU,EAAE,IAAI;gBAAvC,KAAK,EAAE,KAAK,EAAW,UAAU,EAAE,IAAI;IAE5D,MAAM,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO;IAW5B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAsBlC,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,iBAAiB;CAMrC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface RectInterface {
|
|
2
|
+
left: number;
|
|
3
|
+
top: number;
|
|
4
|
+
right: number;
|
|
5
|
+
bottom: number;
|
|
6
|
+
}
|
|
7
|
+
export default class Rect {
|
|
8
|
+
readonly left: number;
|
|
9
|
+
readonly top: number;
|
|
10
|
+
readonly right: number;
|
|
11
|
+
readonly bottom: number;
|
|
12
|
+
constructor(left: number, top: number, right: number, bottom: number);
|
|
13
|
+
static equals(a?: Rect | null, b?: Rect | null): boolean;
|
|
14
|
+
static copy(a?: Rect | null): Rect | null;
|
|
15
|
+
equals(o: Rect | null): boolean;
|
|
16
|
+
getWidth(): number;
|
|
17
|
+
getHeight(): number;
|
|
18
|
+
toString(): string;
|
|
19
|
+
toJSON(): RectInterface;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=Rect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Rect.d.ts","sourceRoot":"","sources":["../../src/models/Rect.ts"],"names":[],"mappings":"AAAA,UAAU,aAAa;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,IAAI;IACT,QAAQ,CAAC,IAAI,EAAE,MAAM;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;gBAAnF,IAAI,EAAE,MAAM,EAAW,GAAG,EAAE,MAAM,EAAW,KAAK,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;WAM1F,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;WAMjD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IAMzC,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;IAU/B,QAAQ,IAAI,MAAM;IAIlB,SAAS,IAAI,MAAM;IAInB,QAAQ,IAAI,MAAM;IASlB,MAAM,IAAI,aAAa;CAQjC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { default as Rect } from './Rect';
|
|
2
|
+
import { default as Size } from './Size';
|
|
3
|
+
|
|
4
|
+
export default class ScreenInfo {
|
|
5
|
+
readonly contentRect: Rect;
|
|
6
|
+
readonly videoSize: Size;
|
|
7
|
+
readonly deviceRotation: number;
|
|
8
|
+
static readonly BUFFER_LENGTH: number;
|
|
9
|
+
constructor(contentRect: Rect, videoSize: Size, deviceRotation: number);
|
|
10
|
+
static fromBuffer(buffer: Buffer): ScreenInfo;
|
|
11
|
+
equals(o?: ScreenInfo | null): boolean;
|
|
12
|
+
toString(): string;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ScreenInfo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenInfo.d.ts","sourceRoot":"","sources":["../../src/models/ScreenInfo.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,QAAQ,CAAC;AAC1B,OAAO,IAAI,MAAM,QAAQ,CAAC;AAE1B,MAAM,CAAC,OAAO,OAAO,UAAU;IAEf,QAAQ,CAAC,WAAW,EAAE,IAAI;IAAE,QAAQ,CAAC,SAAS,EAAE,IAAI;IAAE,QAAQ,CAAC,cAAc,EAAE,MAAM;IADjG,gBAAuB,aAAa,EAAE,MAAM,CAAM;gBAC7B,WAAW,EAAE,IAAI,EAAW,SAAS,EAAE,IAAI,EAAW,cAAc,EAAE,MAAM;WAEnF,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU;IAW7C,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO;IAWtC,QAAQ,IAAI,MAAM;CAG5B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface SizeInterface {
|
|
2
|
+
width: number;
|
|
3
|
+
height: number;
|
|
4
|
+
}
|
|
5
|
+
export default class Size {
|
|
6
|
+
readonly width: number;
|
|
7
|
+
readonly height: number;
|
|
8
|
+
readonly w: number;
|
|
9
|
+
readonly h: number;
|
|
10
|
+
constructor(width: number, height: number);
|
|
11
|
+
static equals(a?: Size | null, b?: Size | null): boolean;
|
|
12
|
+
static copy(a?: Size | null): Size | null;
|
|
13
|
+
length(): number;
|
|
14
|
+
rotate(): Size;
|
|
15
|
+
equals(o: Size | null | undefined): boolean;
|
|
16
|
+
intersect(o: Size | undefined | null): Size;
|
|
17
|
+
getHalfSize(): Size;
|
|
18
|
+
toString(): string;
|
|
19
|
+
toJSON(): SizeInterface;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=Size.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Size.d.ts","sourceRoot":"","sources":["../../src/models/Size.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,OAAO,IAAI;IAIT,QAAQ,CAAC,KAAK,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM;IAH3D,SAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAgB,CAAC,EAAE,MAAM,CAAC;gBAEL,KAAK,EAAE,MAAM,EAAW,MAAM,EAAE,MAAM;WAK7C,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO;WAOjD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;IAOhD,MAAM,IAAI,MAAM;IAIT,MAAM,IAAI,IAAI;IAId,MAAM,CAAC,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO;IAU3C,SAAS,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI;IAS3C,WAAW,IAAI,IAAI;IAInB,QAAQ,IAAI,MAAM;IAIlB,MAAM,IAAI,aAAa;CAMjC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as ScreenInfo } from '../models/ScreenInfo';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* IPlayer 接口 - 用于交互系统的播放器抽象
|
|
5
|
+
*
|
|
6
|
+
* 任何实现了此接口的类都可以作为交互处理器的目标
|
|
7
|
+
*/
|
|
8
|
+
export interface IPlayer {
|
|
9
|
+
/**
|
|
10
|
+
* 获取可触摸的 Canvas 元素
|
|
11
|
+
* 此元素用于捕获用户的触摸、鼠标等交互事件
|
|
12
|
+
*/
|
|
13
|
+
getTouchableElement(): HTMLCanvasElement;
|
|
14
|
+
/**
|
|
15
|
+
* 获取屏幕信息
|
|
16
|
+
* 包含视频尺寸、内容区域等信息,用于坐标转换
|
|
17
|
+
*/
|
|
18
|
+
getScreenInfo(): ScreenInfo | undefined;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PlayerInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerInterface.d.ts","sourceRoot":"","sources":["../../src/types/PlayerInterface.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,sBAAsB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACpB;;;OAGG;IACH,mBAAmB,IAAI,iBAAiB,CAAC;IAEzC;;;OAGG;IACH,aAAa,IAAI,UAAU,GAAG,SAAS,CAAC;CAC3C"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 工具函数类
|
|
3
|
+
* 提供交互系统所需的辅助功能
|
|
4
|
+
*/
|
|
5
|
+
export default class Util {
|
|
6
|
+
private static supportsPassiveValue;
|
|
7
|
+
/**
|
|
8
|
+
* 将字符串转换为 UTF-8 字节数组
|
|
9
|
+
* @param str 待转换的字符串
|
|
10
|
+
* @returns UTF-8 字节数组
|
|
11
|
+
*/
|
|
12
|
+
static stringToUtf8ByteArray: (str: string) => Uint8Array<ArrayBuffer>;
|
|
13
|
+
/**
|
|
14
|
+
* 将 UTF-8 字节数组转换为 JavaScript 字符串
|
|
15
|
+
* @param bytes UTF-8 字节数组
|
|
16
|
+
* @returns 16位 Unicode 字符串
|
|
17
|
+
*/
|
|
18
|
+
static utf8ByteArrayToString(bytes: Uint8Array): string;
|
|
19
|
+
/**
|
|
20
|
+
* 检测浏览器是否支持 passive 事件监听器
|
|
21
|
+
* 参考: https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md
|
|
22
|
+
* @returns 是否支持 passive 选项
|
|
23
|
+
*/
|
|
24
|
+
static supportsPassive(): boolean;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=Util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Util.d.ts","sourceRoot":"","sources":["../../src/utils/Util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,IAAI;IACrB,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAsB;IAEzD;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,GAAY,KAAK,MAAM,6BA0BjD;IAEF;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IA6BvD;;;;OAIG;IACH,MAAM,CAAC,eAAe,IAAI,OAAO;CAsBpC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "interaction-system",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "独立的用户交互处理和控制消息生成库",
|
|
5
|
+
"main": "dist/index.cjs.js",
|
|
6
|
+
"module": "dist/index.es.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"license": "Apache-2.0",
|
|
9
|
+
"author": "ws-scrcpy contributors",
|
|
10
|
+
"keywords": [
|
|
11
|
+
"interaction",
|
|
12
|
+
"touch",
|
|
13
|
+
"mouse",
|
|
14
|
+
"keyboard",
|
|
15
|
+
"control-message",
|
|
16
|
+
"scrcpy",
|
|
17
|
+
"android",
|
|
18
|
+
"remote-control"
|
|
19
|
+
],
|
|
20
|
+
"repository": {
|
|
21
|
+
"type": "git",
|
|
22
|
+
"url": "https://github.com/NetrisTV/ws-scrcpy.git",
|
|
23
|
+
"directory": "interaction-system"
|
|
24
|
+
},
|
|
25
|
+
"files": [
|
|
26
|
+
"dist",
|
|
27
|
+
"README.md",
|
|
28
|
+
"USAGE.md"
|
|
29
|
+
],
|
|
30
|
+
"exports": {
|
|
31
|
+
".": {
|
|
32
|
+
"import": "./dist/index.es.js",
|
|
33
|
+
"require": "./dist/index.cjs.js",
|
|
34
|
+
"types": "./dist/index.d.ts"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=14.0.0"
|
|
39
|
+
},
|
|
40
|
+
"scripts": {
|
|
41
|
+
"build": "vite build",
|
|
42
|
+
"build:watch": "vite build --watch",
|
|
43
|
+
"build:tsc": "tsc",
|
|
44
|
+
"watch": "vite build --watch",
|
|
45
|
+
"prepublishOnly": "npm run build"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"buffer": "^6.0.3"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^18.0.0",
|
|
52
|
+
"typescript": "^5.0.0",
|
|
53
|
+
"vite": "^5.4.21",
|
|
54
|
+
"vite-plugin-dts": "^3.9.1"
|
|
55
|
+
}
|
|
56
|
+
}
|