@corti/dictation-web 0.0.0-test.571.2 → 0.0.0-test.7
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 +25 -39
- package/dist/bundle.js +1120 -535
- package/dist/components/corti-dictation.d.ts +23 -9
- package/dist/components/corti-dictation.js +36 -17
- package/dist/components/corti-dictation.js.map +1 -1
- package/dist/components/keybinding-input.d.ts +16 -0
- package/dist/components/keybinding-input.js +94 -0
- package/dist/components/keybinding-input.js.map +1 -0
- package/dist/components/keybinding-selector.d.ts +3 -3
- package/dist/components/keybinding-selector.js +21 -49
- package/dist/components/keybinding-selector.js.map +1 -1
- package/dist/components/recording-button.d.ts +5 -3
- package/dist/components/recording-button.js +100 -45
- package/dist/components/recording-button.js.map +1 -1
- package/dist/components/settings-menu.d.ts +0 -1
- package/dist/components/settings-menu.js +4 -17
- package/dist/components/settings-menu.js.map +1 -1
- package/dist/contexts/dictation-context.d.ts +6 -6
- package/dist/contexts/dictation-context.js +24 -23
- package/dist/contexts/dictation-context.js.map +1 -1
- package/dist/controllers/dictation-controller.d.ts +8 -2
- package/dist/controllers/dictation-controller.js +151 -45
- package/dist/controllers/dictation-controller.js.map +1 -1
- package/dist/controllers/keybinding-controller.d.ts +2 -3
- package/dist/controllers/keybinding-controller.js +20 -17
- package/dist/controllers/keybinding-controller.js.map +1 -1
- package/dist/controllers/media-controller.d.ts +2 -1
- package/dist/controllers/media-controller.js +14 -3
- package/dist/controllers/media-controller.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/styles/keybinding-selector.js +10 -4
- package/dist/styles/keybinding-selector.js.map +1 -1
- package/dist/styles/settings-menu.js +0 -8
- package/dist/styles/settings-menu.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types.d.ts +1 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/events.d.ts +13 -7
- package/dist/utils/events.js +26 -12
- package/dist/utils/events.js.map +1 -1
- package/package.json +2 -4
- package/dist/components/mode-selector.d.ts +0 -14
- package/dist/components/mode-selector.js +0 -73
- package/dist/components/mode-selector.js.map +0 -1
- package/dist/package.json +0 -94
- package/dist/styles/mode-selector.d.ts +0 -2
- package/dist/styles/mode-selector.js +0 -56
- package/dist/styles/mode-selector.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybinding-controller.js","sourceRoot":"","sources":["../../src/controllers/keybinding-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"keybinding-controller.js","sourceRoot":"","sources":["../../src/controllers/keybinding-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from \"lit\";\nimport { keybindingActivatedEvent } from \"../utils/events.js\";\nimport {\n matchesKeybinding,\n shouldIgnoreKeybinding,\n} from \"../utils/keybinding.js\";\n\ninterface KeybindingControllerHost extends ReactiveControllerHost {\n _pushToTalkKeybinding?: string | null;\n _toggleToTalkKeybinding?: string | null;\n startRecording(): void;\n stopRecording(): void;\n toggleRecording(): void;\n dispatchEvent(event: Event): boolean;\n}\n\nexport class KeybindingController implements ReactiveController {\n host: KeybindingControllerHost;\n\n #keydownHandler?: (event: KeyboardEvent) => void;\n #keyupHandler?: (event: KeyboardEvent) => void;\n #blurHandler?: () => void;\n #isPushToTalkKeyPressed: boolean = false;\n\n constructor(host: KeybindingControllerHost) {\n this.host = host;\n host.addController(this);\n }\n\n hostConnected(): void {\n this.#setupListeners();\n }\n\n hostDisconnected(): void {\n this.#removeListeners();\n }\n\n #setupListeners(): void {\n this.#removeListeners();\n\n this.#keydownHandler = (event: KeyboardEvent) => {\n if (shouldIgnoreKeybinding(document.activeElement)) {\n return;\n }\n\n if (\n this.host._toggleToTalkKeybinding &&\n matchesKeybinding(event, this.host._toggleToTalkKeybinding) &&\n !this.#isPushToTalkKeyPressed\n ) {\n if (!this.host.dispatchEvent(keybindingActivatedEvent(event))) {\n return;\n }\n\n this.host.toggleRecording();\n return;\n }\n\n if (\n this.host._pushToTalkKeybinding &&\n matchesKeybinding(event, this.host._pushToTalkKeybinding)\n ) {\n if (!this.host.dispatchEvent(keybindingActivatedEvent(event))) {\n return;\n }\n\n this.#isPushToTalkKeyPressed = true;\n this.host.startRecording();\n }\n };\n\n this.#keyupHandler = (event: KeyboardEvent) => {\n if (\n this.host._pushToTalkKeybinding &&\n matchesKeybinding(event, this.host._pushToTalkKeybinding)\n ) {\n if (!this.host.dispatchEvent(keybindingActivatedEvent(event))) {\n return;\n }\n this.#isPushToTalkKeyPressed = false;\n this.host.stopRecording();\n }\n };\n\n this.#blurHandler = () => {\n if (this.#isPushToTalkKeyPressed) {\n this.#isPushToTalkKeyPressed = false;\n this.host.stopRecording();\n }\n };\n\n window.addEventListener(\"keydown\", this.#keydownHandler);\n window.addEventListener(\"keyup\", this.#keyupHandler);\n window.addEventListener(\"blur\", this.#blurHandler);\n }\n\n #removeListeners(): void {\n if (this.#keydownHandler) {\n window.removeEventListener(\"keydown\", this.#keydownHandler);\n this.#keydownHandler = undefined;\n }\n\n if (this.#keyupHandler) {\n window.removeEventListener(\"keyup\", this.#keyupHandler);\n this.#keyupHandler = undefined;\n }\n\n if (this.#blurHandler) {\n window.removeEventListener(\"blur\", this.#blurHandler);\n this.#blurHandler = undefined;\n }\n }\n}\n"]}
|
|
@@ -2,13 +2,14 @@ import type { ReactiveController, ReactiveControllerHost } from "lit";
|
|
|
2
2
|
interface MediaControllerHost extends ReactiveControllerHost {
|
|
3
3
|
_selectedDevice?: MediaDeviceInfo;
|
|
4
4
|
_debug_displayAudio?: boolean;
|
|
5
|
+
dispatchEvent(event: Event): boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare class MediaController implements ReactiveController {
|
|
7
8
|
#private;
|
|
8
9
|
host: MediaControllerHost;
|
|
9
10
|
constructor(host: MediaControllerHost);
|
|
10
11
|
hostDisconnected(): void;
|
|
11
|
-
initialize(onTrackEnded?: () => void): Promise<void>;
|
|
12
|
+
initialize(onTrackEnded?: () => void, dataHandler?: (data: Blob) => void): Promise<void>;
|
|
12
13
|
getAudioLevel(): number;
|
|
13
14
|
startAudioLevelMonitoring(onAudioLevelChange?: (level: number) => void): void;
|
|
14
15
|
stopAudioLevelMonitoring(): void;
|
|
@@ -9,7 +9,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
9
9
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
10
10
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
11
|
};
|
|
12
|
-
var _MediaController_mediaStream, _MediaController_audioContext, _MediaController_analyser, _MediaController_mediaRecorder, _MediaController_visualiserInterval, _MediaController_audioLevel, _MediaController_onTrackEnded, _MediaController_onAudioLevelChange;
|
|
12
|
+
var _MediaController_mediaStream, _MediaController_audioContext, _MediaController_analyser, _MediaController_mediaRecorder, _MediaController_visualiserInterval, _MediaController_audioLevel, _MediaController_onTrackEnded, _MediaController_onAudioLevelChange, _MediaController_dataHandler;
|
|
13
13
|
import { calculateAudioLevel, createAudioAnalyzer, getMediaStream, } from "../utils/media.js";
|
|
14
14
|
export class MediaController {
|
|
15
15
|
constructor(host) {
|
|
@@ -21,15 +21,17 @@ export class MediaController {
|
|
|
21
21
|
_MediaController_audioLevel.set(this, 0);
|
|
22
22
|
_MediaController_onTrackEnded.set(this, void 0);
|
|
23
23
|
_MediaController_onAudioLevelChange.set(this, void 0);
|
|
24
|
+
_MediaController_dataHandler.set(this, void 0);
|
|
24
25
|
this.host = host;
|
|
25
26
|
host.addController(this);
|
|
26
27
|
}
|
|
27
28
|
hostDisconnected() {
|
|
28
29
|
this.cleanup();
|
|
29
30
|
}
|
|
30
|
-
async initialize(onTrackEnded) {
|
|
31
|
+
async initialize(onTrackEnded, dataHandler) {
|
|
31
32
|
await this.cleanup();
|
|
32
33
|
__classPrivateFieldSet(this, _MediaController_onTrackEnded, onTrackEnded, "f");
|
|
34
|
+
__classPrivateFieldSet(this, _MediaController_dataHandler, dataHandler, "f");
|
|
33
35
|
__classPrivateFieldSet(this, _MediaController_mediaStream, await getMediaStream(this.host._selectedDevice?.deviceId, this.host._debug_displayAudio), "f");
|
|
34
36
|
__classPrivateFieldGet(this, _MediaController_mediaStream, "f").getTracks().forEach((track) => {
|
|
35
37
|
track.addEventListener("ended", () => {
|
|
@@ -42,6 +44,11 @@ export class MediaController {
|
|
|
42
44
|
__classPrivateFieldSet(this, _MediaController_audioContext, audioContext, "f");
|
|
43
45
|
__classPrivateFieldSet(this, _MediaController_analyser, analyser, "f");
|
|
44
46
|
__classPrivateFieldSet(this, _MediaController_mediaRecorder, new MediaRecorder(__classPrivateFieldGet(this, _MediaController_mediaStream, "f")), "f");
|
|
47
|
+
__classPrivateFieldGet(this, _MediaController_mediaRecorder, "f").ondataavailable = (event) => {
|
|
48
|
+
if (__classPrivateFieldGet(this, _MediaController_dataHandler, "f")) {
|
|
49
|
+
__classPrivateFieldGet(this, _MediaController_dataHandler, "f").call(this, event.data);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
45
52
|
}
|
|
46
53
|
getAudioLevel() {
|
|
47
54
|
return __classPrivateFieldGet(this, _MediaController_analyser, "f") ? calculateAudioLevel(__classPrivateFieldGet(this, _MediaController_analyser, "f")) : 0;
|
|
@@ -73,6 +80,9 @@ export class MediaController {
|
|
|
73
80
|
if (__classPrivateFieldGet(this, _MediaController_mediaRecorder, "f")?.state === "recording") {
|
|
74
81
|
__classPrivateFieldGet(this, _MediaController_mediaRecorder, "f").stop();
|
|
75
82
|
}
|
|
83
|
+
if (__classPrivateFieldGet(this, _MediaController_mediaRecorder, "f")) {
|
|
84
|
+
__classPrivateFieldGet(this, _MediaController_mediaRecorder, "f").ondataavailable = null;
|
|
85
|
+
}
|
|
76
86
|
if (__classPrivateFieldGet(this, _MediaController_mediaStream, "f")) {
|
|
77
87
|
__classPrivateFieldGet(this, _MediaController_mediaStream, "f").getTracks().forEach((track) => {
|
|
78
88
|
track.stop();
|
|
@@ -87,6 +97,7 @@ export class MediaController {
|
|
|
87
97
|
__classPrivateFieldSet(this, _MediaController_mediaRecorder, null, "f");
|
|
88
98
|
__classPrivateFieldSet(this, _MediaController_onTrackEnded, undefined, "f");
|
|
89
99
|
__classPrivateFieldSet(this, _MediaController_onAudioLevelChange, undefined, "f");
|
|
100
|
+
__classPrivateFieldSet(this, _MediaController_dataHandler, undefined, "f");
|
|
90
101
|
}
|
|
91
102
|
/**
|
|
92
103
|
* Stops the media recorder and waits for all buffered data to be flushed.
|
|
@@ -111,5 +122,5 @@ export class MediaController {
|
|
|
111
122
|
return __classPrivateFieldGet(this, _MediaController_audioLevel, "f");
|
|
112
123
|
}
|
|
113
124
|
}
|
|
114
|
-
_MediaController_mediaStream = new WeakMap(), _MediaController_audioContext = new WeakMap(), _MediaController_analyser = new WeakMap(), _MediaController_mediaRecorder = new WeakMap(), _MediaController_visualiserInterval = new WeakMap(), _MediaController_audioLevel = new WeakMap(), _MediaController_onTrackEnded = new WeakMap(), _MediaController_onAudioLevelChange = new WeakMap();
|
|
125
|
+
_MediaController_mediaStream = new WeakMap(), _MediaController_audioContext = new WeakMap(), _MediaController_analyser = new WeakMap(), _MediaController_mediaRecorder = new WeakMap(), _MediaController_visualiserInterval = new WeakMap(), _MediaController_audioLevel = new WeakMap(), _MediaController_onTrackEnded = new WeakMap(), _MediaController_onAudioLevelChange = new WeakMap(), _MediaController_dataHandler = new WeakMap();
|
|
115
126
|
//# sourceMappingURL=media-controller.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-controller.js","sourceRoot":"","sources":["../../src/controllers/media-controller.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,GACf,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"media-controller.js","sourceRoot":"","sources":["../../src/controllers/media-controller.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ReactiveController, ReactiveControllerHost } from \"lit\";\nimport {\n calculateAudioLevel,\n createAudioAnalyzer,\n getMediaStream,\n} from \"../utils/media.js\";\n\ninterface MediaControllerHost extends ReactiveControllerHost {\n _selectedDevice?: MediaDeviceInfo;\n _debug_displayAudio?: boolean;\n dispatchEvent(event: Event): boolean;\n}\n\nexport class MediaController implements ReactiveController {\n host: MediaControllerHost;\n\n #mediaStream: MediaStream | null = null;\n #audioContext: AudioContext | null = null;\n #analyser: AnalyserNode | null = null;\n #mediaRecorder: MediaRecorder | null = null;\n #visualiserInterval?: number;\n #audioLevel: number = 0;\n #onTrackEnded?: () => void;\n #onAudioLevelChange?: (level: number) => void;\n #dataHandler?: (data: Blob) => void;\n\n constructor(host: MediaControllerHost) {\n this.host = host;\n host.addController(this);\n }\n\n hostDisconnected(): void {\n this.cleanup();\n }\n\n async initialize(\n onTrackEnded?: () => void,\n dataHandler?: (data: Blob) => void,\n ): Promise<void> {\n await this.cleanup();\n\n this.#onTrackEnded = onTrackEnded;\n this.#dataHandler = dataHandler;\n this.#mediaStream = await getMediaStream(\n this.host._selectedDevice?.deviceId,\n this.host._debug_displayAudio,\n );\n\n this.#mediaStream.getTracks().forEach((track: MediaStreamTrack) => {\n track.addEventListener(\"ended\", () => {\n if (this.#onTrackEnded) {\n this.#onTrackEnded();\n }\n });\n });\n\n const { audioContext, analyser } = createAudioAnalyzer(this.#mediaStream);\n\n this.#audioContext = audioContext;\n this.#analyser = analyser;\n\n this.#mediaRecorder = new MediaRecorder(this.#mediaStream);\n this.#mediaRecorder.ondataavailable = (event) => {\n if (this.#dataHandler) {\n this.#dataHandler(event.data);\n }\n };\n }\n\n getAudioLevel(): number {\n return this.#analyser ? calculateAudioLevel(this.#analyser) : 0;\n }\n\n startAudioLevelMonitoring(\n onAudioLevelChange?: (level: number) => void,\n ): void {\n this.stopAudioLevelMonitoring();\n\n this.#onAudioLevelChange = onAudioLevelChange;\n\n this.#visualiserInterval = window.setInterval(() => {\n this.#audioLevel = this.getAudioLevel() * 3;\n this.host.requestUpdate();\n\n if (this.#onAudioLevelChange) {\n this.#onAudioLevelChange(this.#audioLevel);\n }\n }, 150);\n }\n\n stopAudioLevelMonitoring(): void {\n if (this.#visualiserInterval) {\n clearInterval(this.#visualiserInterval);\n this.#visualiserInterval = undefined;\n }\n\n this.#audioLevel = 0;\n this.host.requestUpdate();\n\n if (this.#onAudioLevelChange) {\n this.#onAudioLevelChange(this.#audioLevel);\n }\n }\n\n async cleanup(): Promise<void> {\n this.stopAudioLevelMonitoring();\n\n if (this.#mediaRecorder?.state === \"recording\") {\n this.#mediaRecorder.stop();\n }\n\n if (this.#mediaRecorder) {\n this.#mediaRecorder.ondataavailable = null;\n }\n\n if (this.#mediaStream) {\n this.#mediaStream.getTracks().forEach((track) => {\n track.stop();\n });\n this.#mediaStream = null;\n }\n\n if (this.#audioContext && this.#audioContext.state !== \"closed\") {\n await this.#audioContext.close();\n }\n\n this.#audioContext = null;\n\n this.#analyser = null;\n this.#mediaRecorder = null;\n this.#onTrackEnded = undefined;\n this.#onAudioLevelChange = undefined;\n this.#dataHandler = undefined;\n }\n\n /**\n * Stops the media recorder and waits for all buffered data to be flushed.\n * This ensures the final ondataavailable event fires before resolving.\n */\n async stopRecording(): Promise<void> {\n return new Promise<void>((resolve) => {\n if (!this.#mediaRecorder || this.#mediaRecorder.state !== \"recording\") {\n resolve();\n return;\n }\n\n this.#mediaRecorder.onstop = () => {\n resolve();\n };\n\n this.#mediaRecorder.stop();\n });\n }\n\n get mediaRecorder(): MediaRecorder | null {\n return this.#mediaRecorder;\n }\n\n get audioLevel(): number {\n return this.#audioLevel;\n }\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,10 +3,9 @@ export { CortiDictation } from "./components/corti-dictation.js";
|
|
|
3
3
|
export { DictationDeviceSelector } from "./components/device-selector.js";
|
|
4
4
|
export { DictationKeybindingSelector } from "./components/keybinding-selector.js";
|
|
5
5
|
export { DictationLanguageSelector } from "./components/language-selector.js";
|
|
6
|
-
export { DictationModeSelector } from "./components/mode-selector.js";
|
|
7
6
|
export { DictationRecordingButton } from "./components/recording-button.js";
|
|
8
7
|
export { DictationSettingsMenu } from "./components/settings-menu.js";
|
|
9
8
|
export { DictationRoot } from "./contexts/dictation-context.js";
|
|
10
|
-
export type { ConfigurableSettings,
|
|
11
|
-
export type { AudioLevelChangedEventDetail, CommandEventDetail, ErrorEventDetail, KeybindingActivatedEventDetail, KeybindingChangedEventDetail, LanguageChangedEventDetail, LanguagesChangedEventDetail,
|
|
9
|
+
export type { ConfigurableSettings, Keybinding, RecordingState, } from "./types.js";
|
|
10
|
+
export type { AudioLevelChangedEventDetail, CommandEventDetail, ErrorEventDetail, KeybindingActivatedEventDetail, KeybindingChangedEventDetail, LanguageChangedEventDetail, LanguagesChangedEventDetail, NetworkActivityEventDetail, RecordingDevicesChangedEventDetail, RecordingStateChangedEventDetail, TranscriptEventDetail, UsageEventDetail, } from "./utils/events.js";
|
|
12
11
|
export default CortiDictation;
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,6 @@ import { CortiDictation } from "./components/corti-dictation.js";
|
|
|
2
2
|
import { DictationDeviceSelector } from "./components/device-selector.js";
|
|
3
3
|
import { DictationKeybindingSelector } from "./components/keybinding-selector.js";
|
|
4
4
|
import { DictationLanguageSelector } from "./components/language-selector.js";
|
|
5
|
-
import { DictationModeSelector } from "./components/mode-selector.js";
|
|
6
5
|
import { DictationRecordingButton } from "./components/recording-button.js";
|
|
7
6
|
import { DictationSettingsMenu } from "./components/settings-menu.js";
|
|
8
7
|
import { DictationRoot } from "./contexts/dictation-context.js";
|
|
@@ -18,9 +17,6 @@ if (!customElements.get("dictation-device-selector")) {
|
|
|
18
17
|
if (!customElements.get("dictation-language-selector")) {
|
|
19
18
|
customElements.define("dictation-language-selector", DictationLanguageSelector);
|
|
20
19
|
}
|
|
21
|
-
if (!customElements.get("dictation-mode-selector")) {
|
|
22
|
-
customElements.define("dictation-mode-selector", DictationModeSelector);
|
|
23
|
-
}
|
|
24
20
|
if (!customElements.get("dictation-keybinding-selector")) {
|
|
25
21
|
customElements.define("dictation-keybinding-selector", DictationKeybindingSelector);
|
|
26
22
|
}
|
|
@@ -34,7 +30,6 @@ export { CortiDictation } from "./components/corti-dictation.js";
|
|
|
34
30
|
export { DictationDeviceSelector } from "./components/device-selector.js";
|
|
35
31
|
export { DictationKeybindingSelector } from "./components/keybinding-selector.js";
|
|
36
32
|
export { DictationLanguageSelector } from "./components/language-selector.js";
|
|
37
|
-
export { DictationModeSelector } from "./components/mode-selector.js";
|
|
38
33
|
export { DictationRecordingButton } from "./components/recording-button.js";
|
|
39
34
|
export { DictationSettingsMenu } from "./components/settings-menu.js";
|
|
40
35
|
export { DictationRoot } from "./contexts/dictation-context.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC3C,cAAc,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;AAC3D,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC;IACtD,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,wBAAwB,CAAC,CAAC;AAChF,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC;IACrD,cAAc,CAAC,MAAM,CAAC,2BAA2B,EAAE,uBAAuB,CAAC,CAAC;AAC9E,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC;IACvD,cAAc,CAAC,MAAM,CACnB,6BAA6B,EAC7B,yBAAyB,CAC1B,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAAE,CAAC;IACzD,cAAc,CAAC,MAAM,CACnB,+BAA+B,EAC/B,2BAA2B,CAC5B,CAAC;AACJ,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC;IACnD,cAAc,CAAC,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,CAAC,CAAC;AAC1E,CAAC;AAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC1C,cAAc,CAAC,MAAM,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAsBhE,eAAe,cAAc,CAAC","sourcesContent":["import { CortiDictation } from \"./components/corti-dictation.js\";\nimport { DictationDeviceSelector } from \"./components/device-selector.js\";\nimport { DictationKeybindingSelector } from \"./components/keybinding-selector.js\";\nimport { DictationLanguageSelector } from \"./components/language-selector.js\";\nimport { DictationRecordingButton } from \"./components/recording-button.js\";\nimport { DictationSettingsMenu } from \"./components/settings-menu.js\";\nimport { DictationRoot } from \"./contexts/dictation-context.js\";\n\nif (!customElements.get(\"corti-dictation\")) {\n customElements.define(\"corti-dictation\", CortiDictation);\n}\n\nif (!customElements.get(\"dictation-recording-button\")) {\n customElements.define(\"dictation-recording-button\", DictationRecordingButton);\n}\n\nif (!customElements.get(\"dictation-device-selector\")) {\n customElements.define(\"dictation-device-selector\", DictationDeviceSelector);\n}\n\nif (!customElements.get(\"dictation-language-selector\")) {\n customElements.define(\n \"dictation-language-selector\",\n DictationLanguageSelector,\n );\n}\n\nif (!customElements.get(\"dictation-keybinding-selector\")) {\n customElements.define(\n \"dictation-keybinding-selector\",\n DictationKeybindingSelector,\n );\n}\n\nif (!customElements.get(\"dictation-settings-menu\")) {\n customElements.define(\"dictation-settings-menu\", DictationSettingsMenu);\n}\n\nif (!customElements.get(\"dictation-root\")) {\n customElements.define(\"dictation-root\", DictationRoot);\n}\n\nexport { CortiDictation } from \"./components/corti-dictation.js\";\nexport { DictationDeviceSelector } from \"./components/device-selector.js\";\nexport { DictationKeybindingSelector } from \"./components/keybinding-selector.js\";\nexport { DictationLanguageSelector } from \"./components/language-selector.js\";\nexport { DictationRecordingButton } from \"./components/recording-button.js\";\nexport { DictationSettingsMenu } from \"./components/settings-menu.js\";\nexport { DictationRoot } from \"./contexts/dictation-context.js\";\n\nexport type {\n ConfigurableSettings,\n Keybinding,\n RecordingState,\n} from \"./types.js\";\nexport type {\n AudioLevelChangedEventDetail,\n CommandEventDetail,\n ErrorEventDetail,\n KeybindingActivatedEventDetail,\n KeybindingChangedEventDetail,\n LanguageChangedEventDetail,\n LanguagesChangedEventDetail,\n NetworkActivityEventDetail,\n RecordingDevicesChangedEventDetail,\n RecordingStateChangedEventDetail,\n TranscriptEventDetail,\n UsageEventDetail,\n} from \"./utils/events.js\";\n\nexport default CortiDictation;\n"]}
|
|
@@ -25,7 +25,6 @@ const KeybindingSelectorStyles = [
|
|
|
25
25
|
min-width: 0;
|
|
26
26
|
border: none;
|
|
27
27
|
background: transparent;
|
|
28
|
-
font-size: 14px;
|
|
29
28
|
line-height: 24px;
|
|
30
29
|
color: var(--component-text-color, light-dark(#333, #eee));
|
|
31
30
|
outline: none;
|
|
@@ -50,8 +49,8 @@ const KeybindingSelectorStyles = [
|
|
|
50
49
|
border: 1px solid var(--card-border-color, light-dark(#ddd, #555));
|
|
51
50
|
border-radius: var(--card-inner-border-radius, 6px);
|
|
52
51
|
box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));
|
|
53
|
-
font-size:
|
|
54
|
-
line-height:
|
|
52
|
+
font-size: 14px;
|
|
53
|
+
line-height: 24px;
|
|
55
54
|
color: var(--component-text-color, light-dark(#333, #eee));
|
|
56
55
|
opacity: 0.6;
|
|
57
56
|
text-align: center;
|
|
@@ -64,7 +63,14 @@ const KeybindingSelectorStyles = [
|
|
|
64
63
|
opacity: 0.6;
|
|
65
64
|
margin: 0;
|
|
66
65
|
letter-spacing: 0.01px;
|
|
67
|
-
|
|
66
|
+
}
|
|
67
|
+
.settings-group {
|
|
68
|
+
background: var(--card-background, light-dark(#fafafa, #2a2a2a));
|
|
69
|
+
padding: 12px;
|
|
70
|
+
border-radius: 10px;
|
|
71
|
+
display: flex;
|
|
72
|
+
flex-direction: column;
|
|
73
|
+
gap: 8px;
|
|
68
74
|
}
|
|
69
75
|
`,
|
|
70
76
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keybinding-selector.js","sourceRoot":"","sources":["../../src/styles/keybinding-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,wBAAwB,GAAG;IAC/B,WAAW;IACX,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"keybinding-selector.js","sourceRoot":"","sources":["../../src/styles/keybinding-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,wBAAwB,GAAG;IAC/B,WAAW;IACX,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsEJ;CACA,CAAC;AAEF,eAAe,wBAAwB,CAAC","sourcesContent":["import { css } from \"lit\";\nimport { LabelStyles } from \"./component-styles.js\";\n\nconst KeybindingSelectorStyles = [\n LabelStyles,\n css`\n :host {\n display: block;\n }\n .keybinding-selector-wrapper {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: var(--card-padding, 4px) 8px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-inner-border-radius, 6px);\n overflow: hidden;\n }\n .keybinding-selector-wrapper:focus-within {\n border-color: var(--action-accent-background, light-dark(#007bff, #0056b3));\n outline: 2px solid var(--action-accent-background, light-dark(#007bff, #0056b3));\n }\n .keybinding-selector-input {\n flex: 1;\n min-width: 0;\n border: none;\n background: transparent;\n line-height: 24px;\n color: var(--component-text-color, light-dark(#333, #eee));\n outline: none;\n padding: 0;\n cursor: text;\n }\n .keybinding-selector-input::placeholder {\n opacity: 0.6;\n color: var(--component-text-color, light-dark(#333, #eee));\n }\n .keybinding-selector-input:disabled {\n cursor: not-allowed;\n opacity: 0.5;\n }\n .keybinding-key {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 0.5rem;\n height: 24px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-inner-border-radius, 6px);\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n font-size: 14px;\n line-height: 24px;\n color: var(--component-text-color, light-dark(#333, #eee));\n opacity: 0.6;\n text-align: center;\n flex-shrink: 0;\n }\n .keybinding-help {\n font-size: 12px;\n line-height: 20px;\n color: var(--component-text-color, light-dark(#333, #eee));\n opacity: 0.6;\n margin: 0;\n letter-spacing: 0.01px;\n }\n .settings-group {\n background: var(--card-background, light-dark(#fafafa, #2a2a2a));\n padding: 12px;\n border-radius: 10px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n`,\n];\n\nexport default KeybindingSelectorStyles;\n"]}
|
|
@@ -29,14 +29,6 @@ const SettingsMenuStyles = css `
|
|
|
29
29
|
flex-direction: column;
|
|
30
30
|
gap: 16px;
|
|
31
31
|
}
|
|
32
|
-
.settings-group {
|
|
33
|
-
background: var(--muted-background, light-dark(#fafafa, #2a2a2a));
|
|
34
|
-
padding: 12px;
|
|
35
|
-
border-radius: 10px;
|
|
36
|
-
display: flex;
|
|
37
|
-
flex-direction: column;
|
|
38
|
-
gap: 16px;
|
|
39
|
-
}
|
|
40
32
|
`;
|
|
41
33
|
export default SettingsMenuStyles;
|
|
42
34
|
//# sourceMappingURL=settings-menu.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-menu.js","sourceRoot":"","sources":["../../src/styles/settings-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,kBAAkB,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"settings-menu.js","sourceRoot":"","sources":["../../src/styles/settings-menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8B7B,CAAC;AAEF,eAAe,kBAAkB,CAAC","sourcesContent":["import { css } from \"lit\";\n\nconst SettingsMenuStyles = css`\n :host {\n display: block;\n }\n /* Retain the anchor-name styling for this component */\n #settings-popover-button {\n anchor-name: --settings_popover_btn;\n }\n [popover] {\n margin: 0;\n padding: 16px;\n background: var(--card-background, light-dark(#fff, #333));\n border: 1px solid var(--card-border-color, light-dark(#ddd, #555));\n border-radius: var(--card-border-radius, 8px);\n box-shadow: var(--card-box-shadow, 0 2px 5px rgba(0, 0, 0, 0.1));\n z-index: 1000;\n max-width: 260px;\n width: 100%;\n min-width: 200px;\n position-anchor: --settings_popover_btn;\n position-area: bottom span-right;\n position-visibility: always;\n position-try-fallbacks: flip-inline;\n overflow-x: hidden;\n }\n .settings-wrapper {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n`;\n\nexport default SettingsMenuStyles;\n"]}
|