UNPKG

@yume-chan/scrcpy

Version:
110 lines 4.26 kB
import { ScrcpyControlMessageType } from "../base/index.js"; import { EmptyControlMessage } from "./empty.js"; import { ScrcpyInjectKeyCodeControlMessage } from "./inject-key-code.js"; import { ScrcpyInjectTextControlMessage } from "./inject-text.js"; import { ScrcpyControlMessageTypeMap } from "./message-type-map.js"; import { ScrcpySetDisplayPowerControlMessage } from "./set-screen-power-mode.js"; import { ScrcpyStartAppControlMessage } from "./start-app.js"; import { ScrcpyUHidDestroyControlMessage, ScrcpyUHidInputControlMessage, } from "./uhid.js"; export class ScrcpyControlMessageSerializer { #options; #typeMap; #scrollController; constructor(options) { this.#options = options; this.#typeMap = new ScrcpyControlMessageTypeMap(options); this.#scrollController = options.createScrollController(); } injectKeyCode(message) { return ScrcpyInjectKeyCodeControlMessage.serialize(this.#typeMap.fillMessageType(message, ScrcpyControlMessageType.InjectKeyCode)); } injectText(text) { return ScrcpyInjectTextControlMessage.serialize({ text, type: this.#typeMap.get(ScrcpyControlMessageType.InjectText), }); } /** * `pressure` is a float value between 0 and 1. */ injectTouch(message) { return this.#options.serializeInjectTouchControlMessage(this.#typeMap.fillMessageType(message, ScrcpyControlMessageType.InjectTouch)); } /** * `scrollX` and `scrollY` are float values between 0 and 1. */ injectScroll(message) { return this.#scrollController.serializeScrollMessage(this.#typeMap.fillMessageType(message, ScrcpyControlMessageType.InjectScroll)); } backOrScreenOn(action) { return this.#options.serializeBackOrScreenOnControlMessage({ action, type: this.#typeMap.get(ScrcpyControlMessageType.BackOrScreenOn), }); } setDisplayPower(mode) { return ScrcpySetDisplayPowerControlMessage.serialize({ mode, type: this.#typeMap.get(ScrcpyControlMessageType.SetDisplayPower), }); } expandNotificationPanel() { return EmptyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.ExpandNotificationPanel), }); } expandSettingPanel() { return EmptyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.ExpandSettingPanel), }); } collapseNotificationPanel() { return EmptyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.CollapseNotificationPanel), }); } rotateDevice() { return EmptyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.RotateDevice), }); } setClipboard(message) { return this.#options.serializeSetClipboardControlMessage({ ...message, type: this.#typeMap.get(ScrcpyControlMessageType.SetClipboard), }); } uHidCreate(message) { if (!this.#options.serializeUHidCreateControlMessage) { throw new Error("UHid not supported"); } return this.#options.serializeUHidCreateControlMessage(this.#typeMap.fillMessageType(message, ScrcpyControlMessageType.UHidCreate)); } uHidInput(message) { return ScrcpyUHidInputControlMessage.serialize(this.#typeMap.fillMessageType(message, ScrcpyControlMessageType.UHidInput)); } uHidDestroy(id) { return ScrcpyUHidDestroyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.UHidDestroy), id, }); } startApp(name, options) { if (options?.searchByName) { name = "?" + name; } if (options?.forceStop) { name = "+" + name; } return ScrcpyStartAppControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.StartApp), name, }); } resetVideo() { return EmptyControlMessage.serialize({ type: this.#typeMap.get(ScrcpyControlMessageType.ResetVideo), }); } } //# sourceMappingURL=serializer.js.map