New mobile/ directory with Capacitor project: - Configurable server URL launcher (default: app.pedshub.com) - Android: foreground service + wake lock for background recording (AudioRecordingService preserved from existing TWA) - iOS: background audio mode + microphone permission - App ID: com.pedshub.scribe - Both platforms initialized and synced Existing android/ TWA project untouched — this is a separate project. Build: cd mobile && npx cap open android (or ios)
33 lines
1 KiB
JavaScript
33 lines
1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.EscapeCode = void 0;
|
|
const ESC = '\u001B[';
|
|
/**
|
|
* ANSI escape codes (WIP)
|
|
*
|
|
* @see https://en.wikipedia.org/wiki/ANSI_escape_code
|
|
*/
|
|
class EscapeCode {
|
|
}
|
|
exports.EscapeCode = EscapeCode;
|
|
EscapeCode.cursorLeft = () => `${ESC}G`;
|
|
EscapeCode.cursorUp = (count = 1) => `${ESC}${count}A`;
|
|
EscapeCode.cursorDown = (count = 1) => `${ESC}${count}B`;
|
|
EscapeCode.cursorForward = (count = 1) => `${ESC}${count}C`;
|
|
EscapeCode.cursorBackward = (count = 1) => `${ESC}${count}D`;
|
|
EscapeCode.cursorHide = () => `${ESC}?25l`;
|
|
EscapeCode.cursorShow = () => `${ESC}?25h`;
|
|
EscapeCode.eraseLine = () => `${ESC}2K`;
|
|
EscapeCode.eraseLines = (count) => {
|
|
let seq = '';
|
|
for (let i = 0; i < count; i++) {
|
|
seq += EscapeCode.eraseLine();
|
|
if (i < count - 1) {
|
|
seq += EscapeCode.cursorUp();
|
|
}
|
|
}
|
|
return `${seq}${EscapeCode.cursorLeft()}`;
|
|
};
|
|
EscapeCode.eraseUp = () => `${ESC}1J`;
|
|
EscapeCode.eraseDown = () => `${ESC}J`;
|
|
EscapeCode.eraseScreen = () => `${ESC}2J`;
|