@corti/dictation-web 0.7.0-ambient.9 → 0.7.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/LICENSE +21 -0
- package/README.md +110 -0
- package/dist/.tsbuildinfo +1 -0
- package/{bundle.js → dist/bundle.js} +4459 -4823
- package/{components → dist/components}/corti-dictation.d.ts +3 -3
- package/{components → dist/components}/corti-dictation.js +5 -4
- package/dist/components/corti-dictation.js.map +1 -0
- package/dist/components/dictation-device-selector.d.ts +8 -0
- package/dist/components/dictation-device-selector.js +15 -0
- package/dist/components/dictation-device-selector.js.map +1 -0
- package/dist/components/dictation-keybinding-selector.d.ts +8 -0
- package/dist/components/dictation-keybinding-selector.js +15 -0
- package/dist/components/dictation-keybinding-selector.js.map +1 -0
- package/dist/components/dictation-language-selector.d.ts +8 -0
- package/dist/components/dictation-language-selector.js +15 -0
- package/dist/components/dictation-language-selector.js.map +1 -0
- package/{components → dist/components}/dictation-recording-button.d.ts +2 -1
- package/{components → dist/components}/dictation-recording-button.js +9 -4
- package/dist/components/dictation-recording-button.js.map +1 -0
- package/dist/components/dictation-settings-menu.d.ts +15 -0
- package/dist/components/dictation-settings-menu.js +34 -0
- package/dist/components/dictation-settings-menu.js.map +1 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.js +6 -0
- package/dist/constants.js.map +1 -0
- package/{contexts → dist/contexts}/dictation-context.d.ts +1 -1
- package/{contexts → dist/contexts}/dictation-context.js +4 -3
- package/dist/contexts/dictation-context.js.map +1 -0
- package/{controllers → dist/controllers}/dictation-controller.d.ts +4 -4
- package/{controllers → dist/controllers}/dictation-controller.js +1 -1
- package/dist/controllers/dictation-controller.js.map +1 -0
- package/dist/core/.tsbuildinfo +1 -0
- package/{components → dist/core/components}/corti-root.d.ts +1 -1
- package/dist/core/components/corti-root.js.map +1 -0
- package/dist/core/components/device-selector-base.d.ts +9 -0
- package/{components/device-selector.js → dist/core/components/device-selector-base.js} +11 -17
- package/dist/core/components/device-selector-base.js.map +1 -0
- package/dist/core/components/keybinding-selector-base.d.ts +10 -0
- package/{components/keybinding-selector.js → dist/core/components/keybinding-selector-base.js} +21 -21
- package/dist/core/components/keybinding-selector-base.js.map +1 -0
- package/dist/core/components/language-selector-base.d.ts +10 -0
- package/{components/language-selector.js → dist/core/components/language-selector-base.js} +11 -18
- package/dist/core/components/language-selector-base.js.map +1 -0
- package/{components → dist/core/components}/recording-button-base.d.ts +10 -7
- package/{components → dist/core/components}/recording-button-base.js +17 -15
- package/dist/core/components/recording-button-base.js.map +1 -0
- package/dist/core/components/settings-menu-base.d.ts +13 -0
- package/{components/settings-menu.js → dist/core/components/settings-menu-base.js} +14 -36
- package/dist/core/components/settings-menu-base.js.map +1 -0
- package/{components/audio-visualiser.d.ts → dist/core/components/speech-audio-visualiser.d.ts} +3 -4
- package/{components/audio-visualiser.js → dist/core/components/speech-audio-visualiser.js} +11 -12
- package/dist/core/components/speech-audio-visualiser.js.map +1 -0
- package/{components/keybinding-input.d.ts → dist/core/components/speech-keybinding-input.d.ts} +3 -4
- package/{components/keybinding-input.js → dist/core/components/speech-keybinding-input.js} +22 -22
- package/dist/core/components/speech-keybinding-input.js.map +1 -0
- package/{constants.d.ts → dist/core/constants.d.ts} +0 -2
- package/{constants.js → dist/core/constants.js} +0 -14
- package/dist/core/constants.js.map +1 -0
- package/dist/core/contexts/mixins/auth-context.js.map +1 -0
- package/dist/core/contexts/mixins/devices-context.js.map +1 -0
- package/{contexts → dist/core/contexts}/mixins/keybindings-context.js +3 -2
- package/dist/core/contexts/mixins/keybindings-context.js.map +1 -0
- package/dist/core/contexts/mixins/languages-context.js.map +1 -0
- package/dist/core/contexts/mixins/proxy-context.js.map +1 -0
- package/dist/core/contexts/mixins/recording-state-context.js.map +1 -0
- package/dist/core/contexts/mixins/types.js.map +1 -0
- package/{contexts → dist/core/contexts}/root-context.d.ts +1 -1
- package/dist/core/contexts/root-context.js.map +1 -0
- package/dist/core/controllers/devices-controller.js.map +1 -0
- package/dist/core/controllers/keybinding-controller.js.map +1 -0
- package/dist/core/controllers/languages-controller.js.map +1 -0
- package/dist/core/controllers/media-controller.js.map +1 -0
- package/dist/core/controllers/socket-controller.js.map +1 -0
- package/{icons → dist/core/icons}/icons.d.ts +6 -6
- package/{icons → dist/core/icons}/icons.js +7 -7
- package/dist/core/icons/icons.js.map +1 -0
- package/dist/core/icons/index.js.map +1 -0
- package/dist/core/socket-messages.d.ts +4 -0
- package/dist/core/socket-messages.js +2 -0
- package/dist/core/socket-messages.js.map +1 -0
- package/dist/core/styles/audio-visualiser.js.map +1 -0
- package/dist/core/styles/buttons.js.map +1 -0
- package/dist/core/styles/callout.js.map +1 -0
- package/dist/core/styles/component-styles.js.map +1 -0
- package/dist/core/styles/keybinding-selector.js.map +1 -0
- package/dist/core/styles/recording-button.js.map +1 -0
- package/dist/core/styles/select.js.map +1 -0
- package/dist/core/styles/settings-menu.js.map +1 -0
- package/{types.d.ts → dist/core/types.d.ts} +0 -3
- package/dist/core/types.js.map +1 -0
- package/dist/core/utils/auth.js.map +1 -0
- package/dist/core/utils/converters.js.map +1 -0
- package/dist/core/utils/custom-elements.d.ts +6 -0
- package/dist/core/utils/custom-elements.js +23 -0
- package/dist/core/utils/custom-elements.js.map +1 -0
- package/dist/core/utils/devices.js.map +1 -0
- package/dist/core/utils/events.js.map +1 -0
- package/dist/core/utils/keybinding.js.map +1 -0
- package/dist/core/utils/languages.js.map +1 -0
- package/dist/core/utils/media.js.map +1 -0
- package/dist/core/utils/token.js.map +1 -0
- package/dist/core/utils/validation.js.map +1 -0
- package/{index.d.ts → dist/index.d.ts} +6 -6
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/package.json +19 -13
- package/.tsbuildinfo +0 -1
- package/components/ambient-recording-button.d.ts +0 -16
- package/components/ambient-recording-button.js +0 -68
- package/components/ambient-recording-button.js.map +0 -1
- package/components/ambient-virtual-mode-selector.d.ts +0 -14
- package/components/ambient-virtual-mode-selector.js +0 -69
- package/components/ambient-virtual-mode-selector.js.map +0 -1
- package/components/audio-visualiser.js.map +0 -1
- package/components/corti-ambient.d.ts +0 -35
- package/components/corti-ambient.js +0 -126
- package/components/corti-ambient.js.map +0 -1
- package/components/corti-dictation.js.map +0 -1
- package/components/corti-root.js.map +0 -1
- package/components/device-selector.d.ts +0 -15
- package/components/device-selector.js.map +0 -1
- package/components/dictation-recording-button.js.map +0 -1
- package/components/keybinding-input.js.map +0 -1
- package/components/keybinding-selector.d.ts +0 -15
- package/components/keybinding-selector.js.map +0 -1
- package/components/language-selector.d.ts +0 -16
- package/components/language-selector.js.map +0 -1
- package/components/recording-button-base.js.map +0 -1
- package/components/settings-menu.d.ts +0 -19
- package/components/settings-menu.js.map +0 -1
- package/constants.js.map +0 -1
- package/contexts/ambient-context.d.ts +0 -24
- package/contexts/ambient-context.js +0 -93
- package/contexts/ambient-context.js.map +0 -1
- package/contexts/dictation-context.js.map +0 -1
- package/contexts/mixins/auth-context.js.map +0 -1
- package/contexts/mixins/devices-context.js.map +0 -1
- package/contexts/mixins/keybindings-context.js.map +0 -1
- package/contexts/mixins/languages-context.js.map +0 -1
- package/contexts/mixins/proxy-context.js.map +0 -1
- package/contexts/mixins/recording-state-context.js.map +0 -1
- package/contexts/mixins/types.js.map +0 -1
- package/contexts/root-context.js.map +0 -1
- package/controllers/ambient-controller.d.ts +0 -16
- package/controllers/ambient-controller.js +0 -24
- package/controllers/ambient-controller.js.map +0 -1
- package/controllers/devices-controller.js.map +0 -1
- package/controllers/dictation-controller.js.map +0 -1
- package/controllers/keybinding-controller.js.map +0 -1
- package/controllers/languages-controller.js.map +0 -1
- package/controllers/media-controller.js.map +0 -1
- package/controllers/socket-controller.js.map +0 -1
- package/icons/icons.js.map +0 -1
- package/icons/index.js.map +0 -1
- package/index.js +0 -8
- package/index.js.map +0 -1
- package/styles/ambient-virtual-mode-selector.d.ts +0 -2
- package/styles/ambient-virtual-mode-selector.js +0 -101
- package/styles/ambient-virtual-mode-selector.js.map +0 -1
- package/styles/audio-visualiser.js.map +0 -1
- package/styles/buttons.js.map +0 -1
- package/styles/callout.js.map +0 -1
- package/styles/component-styles.js.map +0 -1
- package/styles/keybinding-selector.js.map +0 -1
- package/styles/recording-button.js.map +0 -1
- package/styles/select.js.map +0 -1
- package/styles/settings-menu.js.map +0 -1
- package/types.js.map +0 -1
- package/utils/auth.js.map +0 -1
- package/utils/converters.js.map +0 -1
- package/utils/custom-elements.d.ts +0 -6
- package/utils/custom-elements.js +0 -11
- package/utils/custom-elements.js.map +0 -1
- package/utils/devices.js.map +0 -1
- package/utils/events.js.map +0 -1
- package/utils/keybinding.js.map +0 -1
- package/utils/languages.js.map +0 -1
- package/utils/media.js.map +0 -1
- package/utils/token.js.map +0 -1
- package/utils/validation.js.map +0 -1
- /package/{components → dist/core/components}/corti-root.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/auth-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/auth-context.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/devices-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/devices-context.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/keybindings-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/languages-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/languages-context.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/proxy-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/proxy-context.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/recording-state-context.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/recording-state-context.js +0 -0
- /package/{contexts → dist/core/contexts}/mixins/types.d.ts +0 -0
- /package/{contexts → dist/core/contexts}/mixins/types.js +0 -0
- /package/{contexts → dist/core/contexts}/root-context.js +0 -0
- /package/{controllers → dist/core/controllers}/devices-controller.d.ts +0 -0
- /package/{controllers → dist/core/controllers}/devices-controller.js +0 -0
- /package/{controllers → dist/core/controllers}/keybinding-controller.d.ts +0 -0
- /package/{controllers → dist/core/controllers}/keybinding-controller.js +0 -0
- /package/{controllers → dist/core/controllers}/languages-controller.d.ts +0 -0
- /package/{controllers → dist/core/controllers}/languages-controller.js +0 -0
- /package/{controllers → dist/core/controllers}/media-controller.d.ts +0 -0
- /package/{controllers → dist/core/controllers}/media-controller.js +0 -0
- /package/{controllers → dist/core/controllers}/socket-controller.d.ts +0 -0
- /package/{controllers → dist/core/controllers}/socket-controller.js +0 -0
- /package/{icons → dist/core/icons}/index.d.ts +0 -0
- /package/{icons → dist/core/icons}/index.js +0 -0
- /package/{styles → dist/core/styles}/audio-visualiser.d.ts +0 -0
- /package/{styles → dist/core/styles}/audio-visualiser.js +0 -0
- /package/{styles → dist/core/styles}/buttons.d.ts +0 -0
- /package/{styles → dist/core/styles}/buttons.js +0 -0
- /package/{styles → dist/core/styles}/callout.d.ts +0 -0
- /package/{styles → dist/core/styles}/callout.js +0 -0
- /package/{styles → dist/core/styles}/component-styles.d.ts +0 -0
- /package/{styles → dist/core/styles}/component-styles.js +0 -0
- /package/{styles → dist/core/styles}/keybinding-selector.d.ts +0 -0
- /package/{styles → dist/core/styles}/keybinding-selector.js +0 -0
- /package/{styles → dist/core/styles}/recording-button.d.ts +0 -0
- /package/{styles → dist/core/styles}/recording-button.js +0 -0
- /package/{styles → dist/core/styles}/select.d.ts +0 -0
- /package/{styles → dist/core/styles}/select.js +0 -0
- /package/{styles → dist/core/styles}/settings-menu.d.ts +0 -0
- /package/{styles → dist/core/styles}/settings-menu.js +0 -0
- /package/{types.js → dist/core/types.js} +0 -0
- /package/{utils → dist/core/utils}/auth.d.ts +0 -0
- /package/{utils → dist/core/utils}/auth.js +0 -0
- /package/{utils → dist/core/utils}/converters.d.ts +0 -0
- /package/{utils → dist/core/utils}/converters.js +0 -0
- /package/{utils → dist/core/utils}/devices.d.ts +0 -0
- /package/{utils → dist/core/utils}/devices.js +0 -0
- /package/{utils → dist/core/utils}/events.d.ts +0 -0
- /package/{utils → dist/core/utils}/events.js +0 -0
- /package/{utils → dist/core/utils}/keybinding.d.ts +0 -0
- /package/{utils → dist/core/utils}/keybinding.js +0 -0
- /package/{utils → dist/core/utils}/languages.d.ts +0 -0
- /package/{utils → dist/core/utils}/languages.js +0 -0
- /package/{utils → dist/core/utils}/media.d.ts +0 -0
- /package/{utils → dist/core/utils}/media.js +0 -0
- /package/{utils → dist/core/utils}/token.d.ts +0 -0
- /package/{utils → dist/core/utils}/token.js +0 -0
- /package/{utils → dist/core/utils}/validation.d.ts +0 -0
- /package/{utils → dist/core/utils}/validation.js +0 -0
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AmbientController, type AmbientStreamSessionConfig, type StreamAmbientMessage } from "../controllers/ambient-controller.js";
|
|
2
|
-
import { RecordingButtonBase } from "./recording-button-base.js";
|
|
3
|
-
export declare class AmbientRecordingButton extends RecordingButtonBase<AmbientStreamSessionConfig, StreamAmbientMessage> {
|
|
4
|
-
#private;
|
|
5
|
-
private _ambientConfig?;
|
|
6
|
-
private _interactionId?;
|
|
7
|
-
protected _socketController: AmbientController;
|
|
8
|
-
startRecording(): void;
|
|
9
|
-
openConnection(): Promise<void>;
|
|
10
|
-
protected _getConnectConfig(): AmbientStreamSessionConfig;
|
|
11
|
-
}
|
|
12
|
-
declare global {
|
|
13
|
-
interface HTMLElementTagNameMap {
|
|
14
|
-
"ambient-recording-button": AmbientRecordingButton;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _AmbientRecordingButton_instances, _AmbientRecordingButton_trimmedInteractionId;
|
|
13
|
-
import { consume } from "@lit/context";
|
|
14
|
-
import { customElement, state } from "lit/decorators.js";
|
|
15
|
-
import { DEFAULT_STREAM_CONFIG } from "../constants.js";
|
|
16
|
-
import { ambientConfigContext, interactionIdContext, } from "../contexts/ambient-context.js";
|
|
17
|
-
import { AmbientController, } from "../controllers/ambient-controller.js";
|
|
18
|
-
import { errorEvent } from "../utils/events.js";
|
|
19
|
-
import { RecordingButtonBase } from "./recording-button-base.js";
|
|
20
|
-
const interactionIdRequiredError = () => new Error("interactionId is required. Set interactionId on corti-ambient or ambient-root.");
|
|
21
|
-
let AmbientRecordingButton = class AmbientRecordingButton extends RecordingButtonBase {
|
|
22
|
-
constructor() {
|
|
23
|
-
super(...arguments);
|
|
24
|
-
_AmbientRecordingButton_instances.add(this);
|
|
25
|
-
this._socketController = new AmbientController(this);
|
|
26
|
-
}
|
|
27
|
-
startRecording() {
|
|
28
|
-
if (!__classPrivateFieldGet(this, _AmbientRecordingButton_instances, "m", _AmbientRecordingButton_trimmedInteractionId).call(this)) {
|
|
29
|
-
this.dispatchEvent(errorEvent(interactionIdRequiredError()));
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
super.startRecording();
|
|
33
|
-
}
|
|
34
|
-
async openConnection() {
|
|
35
|
-
if (!__classPrivateFieldGet(this, _AmbientRecordingButton_instances, "m", _AmbientRecordingButton_trimmedInteractionId).call(this)) {
|
|
36
|
-
this.dispatchEvent(errorEvent(interactionIdRequiredError()));
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
await super.openConnection();
|
|
40
|
-
}
|
|
41
|
-
_getConnectConfig() {
|
|
42
|
-
const interactionId = __classPrivateFieldGet(this, _AmbientRecordingButton_instances, "m", _AmbientRecordingButton_trimmedInteractionId).call(this);
|
|
43
|
-
if (!interactionId) {
|
|
44
|
-
throw interactionIdRequiredError();
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
configuration: this._ambientConfig ?? DEFAULT_STREAM_CONFIG,
|
|
48
|
-
interactionId,
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
_AmbientRecordingButton_instances = new WeakSet();
|
|
53
|
-
_AmbientRecordingButton_trimmedInteractionId = function _AmbientRecordingButton_trimmedInteractionId() {
|
|
54
|
-
return this._interactionId?.trim();
|
|
55
|
-
};
|
|
56
|
-
__decorate([
|
|
57
|
-
consume({ context: ambientConfigContext, subscribe: true }),
|
|
58
|
-
state()
|
|
59
|
-
], AmbientRecordingButton.prototype, "_ambientConfig", void 0);
|
|
60
|
-
__decorate([
|
|
61
|
-
consume({ context: interactionIdContext, subscribe: true }),
|
|
62
|
-
state()
|
|
63
|
-
], AmbientRecordingButton.prototype, "_interactionId", void 0);
|
|
64
|
-
AmbientRecordingButton = __decorate([
|
|
65
|
-
customElement("ambient-recording-button")
|
|
66
|
-
], AmbientRecordingButton);
|
|
67
|
-
export { AmbientRecordingButton };
|
|
68
|
-
//# sourceMappingURL=ambient-recording-button.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ambient-recording-button.js","sourceRoot":"","sources":["../../../src/components/ambient-recording-button.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,iBAAiB,GAGlB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,0BAA0B,GAAG,GAAG,EAAE,CACtC,IAAI,KAAK,CACP,gFAAgF,CACjF,CAAC;AAGG,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,mBAG3C;IAHM;;;QAYK,sBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAoC5D,CAAC;IAlCiB,cAAc;QAC5B,IAAI,CAAC,uBAAA,IAAI,uFAAsB,MAA1B,IAAI,CAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;IACzB,CAAC;IAEe,KAAK,CAAC,cAAc;QAClC,IAAI,CAAC,uBAAA,IAAI,uFAAsB,MAA1B,IAAI,CAAwB,EAAE,CAAC;YAClC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAES,iBAAiB;QACzB,MAAM,aAAa,GAAG,uBAAA,IAAI,uFAAsB,MAA1B,IAAI,CAAwB,CAAC;QAEnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,0BAA0B,EAAE,CAAC;QACrC,CAAC;QAED,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,cAAc,IAAI,qBAAqB;YAC3D,aAAa;SACd,CAAC;IACJ,CAAC;CAKF,CAAA;;;IAFG,OAAO,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC;AAzCO;IAFP,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3D,KAAK,EAAE;8DACoC;AAIpC;IAFP,OAAO,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC3D,KAAK,EAAE;8DACwB;AAVrB,sBAAsB;IADlC,aAAa,CAAC,0BAA0B,CAAC;GAC7B,sBAAsB,CAgDlC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { DEFAULT_STREAM_CONFIG } from \"../constants.js\";\nimport {\n ambientConfigContext,\n interactionIdContext,\n} from \"../contexts/ambient-context.js\";\nimport {\n AmbientController,\n type AmbientStreamSessionConfig,\n type StreamAmbientMessage,\n} from \"../controllers/ambient-controller.js\";\nimport { errorEvent } from \"../utils/events.js\";\nimport { RecordingButtonBase } from \"./recording-button-base.js\";\n\nconst interactionIdRequiredError = () =>\n new Error(\n \"interactionId is required. Set interactionId on corti-ambient or ambient-root.\",\n );\n\n@customElement(\"ambient-recording-button\")\nexport class AmbientRecordingButton extends RecordingButtonBase<\n AmbientStreamSessionConfig,\n StreamAmbientMessage\n> {\n @consume({ context: ambientConfigContext, subscribe: true })\n @state()\n private _ambientConfig?: Corti.StreamConfig;\n\n @consume({ context: interactionIdContext, subscribe: true })\n @state()\n private _interactionId?: string;\n\n protected _socketController = new AmbientController(this);\n\n public override startRecording(): void {\n if (!this.#trimmedInteractionId()) {\n this.dispatchEvent(errorEvent(interactionIdRequiredError()));\n return;\n }\n\n super.startRecording();\n }\n\n public override async openConnection(): Promise<void> {\n if (!this.#trimmedInteractionId()) {\n this.dispatchEvent(errorEvent(interactionIdRequiredError()));\n return;\n }\n\n await super.openConnection();\n }\n\n protected _getConnectConfig(): AmbientStreamSessionConfig {\n const interactionId = this.#trimmedInteractionId();\n\n if (!interactionId) {\n throw interactionIdRequiredError();\n }\n\n return {\n configuration: this._ambientConfig ?? DEFAULT_STREAM_CONFIG,\n interactionId,\n };\n }\n\n #trimmedInteractionId(): string | undefined {\n return this._interactionId?.trim();\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-recording-button\": AmbientRecordingButton;\n }\n}\n"]}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
2
|
-
import "../icons/icons.js";
|
|
3
|
-
export declare class AmbientVirtualModeSelector extends LitElement {
|
|
4
|
-
#private;
|
|
5
|
-
_virtualMode: boolean;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
static styles: import("lit").CSSResult;
|
|
8
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
9
|
-
}
|
|
10
|
-
declare global {
|
|
11
|
-
interface HTMLElementTagNameMap {
|
|
12
|
-
"ambient-virtual-mode-selector": AmbientVirtualModeSelector;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
-
};
|
|
12
|
-
var _AmbientVirtualModeSelector_handleToggle;
|
|
13
|
-
import { consume } from "@lit/context";
|
|
14
|
-
import { html, LitElement } from "lit";
|
|
15
|
-
import { customElement, property, state } from "lit/decorators.js";
|
|
16
|
-
import { virtualModeContext } from "../contexts/ambient-context.js";
|
|
17
|
-
import AmbientVirtualModeSelectorStyles from "../styles/ambient-virtual-mode-selector.js";
|
|
18
|
-
import { virtualModeChangedEvent } from "../utils/events.js";
|
|
19
|
-
import "../icons/icons.js";
|
|
20
|
-
let AmbientVirtualModeSelector = class AmbientVirtualModeSelector extends LitElement {
|
|
21
|
-
constructor() {
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this._virtualMode = false;
|
|
24
|
-
this.disabled = false;
|
|
25
|
-
_AmbientVirtualModeSelector_handleToggle.set(this, (e) => {
|
|
26
|
-
const checked = e.target.checked;
|
|
27
|
-
this.dispatchEvent(virtualModeChangedEvent(checked));
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
render() {
|
|
31
|
-
return html `
|
|
32
|
-
<div class="virtual-mode-row">
|
|
33
|
-
<div class="virtual-mode-content">
|
|
34
|
-
<div class="virtual-mode-header">
|
|
35
|
-
<icon-headset></icon-headset>
|
|
36
|
-
<span class="virtual-mode-title">Virtual mode</span>
|
|
37
|
-
</div>
|
|
38
|
-
<span class="virtual-mode-description">
|
|
39
|
-
Share audio from another window or tab
|
|
40
|
-
</span>
|
|
41
|
-
</div>
|
|
42
|
-
<input
|
|
43
|
-
id="virtual-mode-toggle"
|
|
44
|
-
class="switch"
|
|
45
|
-
type="checkbox"
|
|
46
|
-
role="switch"
|
|
47
|
-
aria-label="Enable virtual mode"
|
|
48
|
-
.checked=${this._virtualMode}
|
|
49
|
-
?disabled=${this.disabled}
|
|
50
|
-
@change=${__classPrivateFieldGet(this, _AmbientVirtualModeSelector_handleToggle, "f")}
|
|
51
|
-
/>
|
|
52
|
-
</div>
|
|
53
|
-
`;
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
_AmbientVirtualModeSelector_handleToggle = new WeakMap();
|
|
57
|
-
AmbientVirtualModeSelector.styles = AmbientVirtualModeSelectorStyles;
|
|
58
|
-
__decorate([
|
|
59
|
-
consume({ context: virtualModeContext, subscribe: true }),
|
|
60
|
-
state()
|
|
61
|
-
], AmbientVirtualModeSelector.prototype, "_virtualMode", void 0);
|
|
62
|
-
__decorate([
|
|
63
|
-
property({ type: Boolean })
|
|
64
|
-
], AmbientVirtualModeSelector.prototype, "disabled", void 0);
|
|
65
|
-
AmbientVirtualModeSelector = __decorate([
|
|
66
|
-
customElement("ambient-virtual-mode-selector")
|
|
67
|
-
], AmbientVirtualModeSelector);
|
|
68
|
-
export { AmbientVirtualModeSelector };
|
|
69
|
-
//# sourceMappingURL=ambient-virtual-mode-selector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ambient-virtual-mode-selector.js","sourceRoot":"","sources":["../../../src/components/ambient-virtual-mode-selector.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,gCAAgC,MAAM,4CAA4C,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,mBAAmB,CAAC;AAGpB,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,UAAU;IAAnD;;QAGL,iBAAY,GAAY,KAAK,CAAC;QAG9B,aAAQ,GAAY,KAAK,CAAC;QAI1B,mDAAgB,CAAC,CAAQ,EAAQ,EAAE;YACjC,MAAM,OAAO,GAAI,CAAC,CAAC,MAA2B,CAAC,OAAO,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC,EAAC;IA2BJ,CAAC;IAzBC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;qBAiBM,IAAI,CAAC,YAAY;sBAChB,IAAI,CAAC,QAAQ;oBACf,uBAAA,IAAI,gDAAc;;;KAGjC,CAAC;IACJ,CAAC;;;AA/BM,iCAAM,GAAG,gCAAgC,AAAnC,CAAoC;AALjD;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzD,KAAK,EAAE;gEACsB;AAG9B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;4DACF;AANf,0BAA0B;IADtC,aAAa,CAAC,+BAA+B,CAAC;GAClC,0BAA0B,CAwCtC","sourcesContent":["import { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { virtualModeContext } from \"../contexts/ambient-context.js\";\nimport AmbientVirtualModeSelectorStyles from \"../styles/ambient-virtual-mode-selector.js\";\nimport { virtualModeChangedEvent } from \"../utils/events.js\";\n\nimport \"../icons/icons.js\";\n\n@customElement(\"ambient-virtual-mode-selector\")\nexport class AmbientVirtualModeSelector extends LitElement {\n @consume({ context: virtualModeContext, subscribe: true })\n @state()\n _virtualMode: boolean = false;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n static styles = AmbientVirtualModeSelectorStyles;\n\n #handleToggle = (e: Event): void => {\n const checked = (e.target as HTMLInputElement).checked;\n this.dispatchEvent(virtualModeChangedEvent(checked));\n };\n\n render() {\n return html`\n <div class=\"virtual-mode-row\">\n <div class=\"virtual-mode-content\">\n <div class=\"virtual-mode-header\">\n <icon-headset></icon-headset>\n <span class=\"virtual-mode-title\">Virtual mode</span>\n </div>\n <span class=\"virtual-mode-description\">\n Share audio from another window or tab\n </span>\n </div>\n <input\n id=\"virtual-mode-toggle\"\n class=\"switch\"\n type=\"checkbox\"\n role=\"switch\"\n aria-label=\"Enable virtual mode\"\n .checked=${this._virtualMode}\n ?disabled=${this.disabled}\n @change=${this.#handleToggle}\n />\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-virtual-mode-selector\": AmbientVirtualModeSelector;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audio-visualiser.js","sourceRoot":"","sources":["../../../src/components/audio-visualiser.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,qBAAqB,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGnD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAU;IAAjD;;QAEL,UAAK,GAAW,CAAC,CAAC;QAGlB,WAAM,GAAY,KAAK,CAAC;QAGxB,iBAAY,GAAW,CAAC,CAAC;IA+B3B,CAAC;IA3BC,UAAU,CAAC,iBAAuC;QAChD,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,MAAM;QACJ,kEAAkE;QAClE,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,GAAG,CAClB,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EACxB,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,CAAA,cAAc,QAAQ,CAAC;YACzB,MAAM,EAAE,CAAC,GAAG,cAAc;YAC1B,OAAO,EAAE,IAAI;SACd,CAAC,KAAK,CACV,CAAC;QAEF,OAAO,IAAI,CAAA;mBACI,QAAQ,CAAC;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI;SAChB,CAAC;UACE,QAAQ;;KAEb,CAAC;IACJ,CAAC;;AA5BM,+BAAM,GAAG,qBAAqB,AAAxB,CAAyB;AARtC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uDACT;AAGlB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;wDACJ;AAGxB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8DACF;AARd,wBAAwB;IADpC,iBAAiB,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;GAC/D,wBAAwB,CAuCpC","sourcesContent":["import { html, LitElement, type PropertyValues } from \"lit\";\nimport { property } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { map } from \"lit/directives/map.js\";\nimport { range } from \"lit/directives/range.js\";\nimport AudioVisualiserStyles from \"../styles/audio-visualiser.js\";\nimport { dualCustomElement } from \"../utils/custom-elements.js\";\nimport { normalizeToRange } from \"../utils/validation.js\";\n\n@dualCustomElement(\"dictation-audio-visualiser\", \"ambient-audio-visualiser\")\nexport class DictationAudioVisualiser extends LitElement {\n @property({ type: Number })\n level: number = 0;\n\n @property({ type: Boolean })\n active: boolean = false;\n\n @property({ type: Number })\n segmentCount: number = 5;\n\n static styles = AudioVisualiserStyles;\n\n willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has(\"level\")) {\n this.level = normalizeToRange(this.level);\n }\n }\n\n render() {\n // Each segment represents 20%. Using Math.round to fill segments.\n const activeSegments = Math.round(this.level * this.segmentCount);\n const segments = map(\n range(this.segmentCount),\n (i) =>\n html`<div class=${classMap({\n active: i < activeSegments,\n segment: true,\n })} />`,\n );\n\n return html`\n <div class=${classMap({\n active: this.active,\n container: true,\n })}>\n ${segments}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-audio-visualiser\": DictationAudioVisualiser;\n \"dictation-audio-visualiser\": DictationAudioVisualiser;\n }\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { Corti } from "@corti/sdk";
|
|
2
|
-
import type { AmbientRoot } from "../contexts/ambient-context.js";
|
|
3
|
-
import type { ConfigurableSettings } from "../types.js";
|
|
4
|
-
import type { AmbientRecordingButton } from "./ambient-recording-button.js";
|
|
5
|
-
import { CortiRoot } from "./corti-root.js";
|
|
6
|
-
import "../contexts/ambient-context.js";
|
|
7
|
-
import "./ambient-recording-button.js";
|
|
8
|
-
import "./settings-menu.js";
|
|
9
|
-
export declare class CortiAmbient extends CortiRoot<AmbientRoot, AmbientRecordingButton> {
|
|
10
|
-
settingsEnabled: ConfigurableSettings[];
|
|
11
|
-
/**
|
|
12
|
-
* Stream configuration for ambient capture (modes, transcription, etc.).
|
|
13
|
-
*/
|
|
14
|
-
set ambientConfig(value: Corti.StreamConfig);
|
|
15
|
-
get ambientConfig(): Corti.StreamConfig;
|
|
16
|
-
_ambientConfig: Corti.StreamConfig;
|
|
17
|
-
/**
|
|
18
|
-
* Stream interaction id passed to `stream.connect` for this session.
|
|
19
|
-
*/
|
|
20
|
-
set interactionId(value: string | undefined);
|
|
21
|
-
get interactionId(): string | undefined;
|
|
22
|
-
_interactionId?: string;
|
|
23
|
-
/**
|
|
24
|
-
* Enables virtual mode behavior for ambient recording.
|
|
25
|
-
*/
|
|
26
|
-
set virtualMode(value: boolean);
|
|
27
|
-
get virtualMode(): boolean;
|
|
28
|
-
_virtualMode: boolean;
|
|
29
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
30
|
-
}
|
|
31
|
-
declare global {
|
|
32
|
-
interface HTMLElementTagNameMap {
|
|
33
|
-
"corti-ambient": CortiAmbient;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
-
};
|
|
7
|
-
import { html, nothing } from "lit";
|
|
8
|
-
import { customElement, property, state } from "lit/decorators.js";
|
|
9
|
-
import { classMap } from "lit/directives/class-map.js";
|
|
10
|
-
import { ref } from "lit/directives/ref.js";
|
|
11
|
-
import { DEFAULT_STREAM_CONFIG } from "../constants.js";
|
|
12
|
-
import { commaSeparatedConverter } from "../utils/converters.js";
|
|
13
|
-
import { CortiRoot } from "./corti-root.js";
|
|
14
|
-
import "../contexts/ambient-context.js";
|
|
15
|
-
import "./ambient-recording-button.js";
|
|
16
|
-
import "./settings-menu.js";
|
|
17
|
-
let CortiAmbient = class CortiAmbient extends CortiRoot {
|
|
18
|
-
constructor() {
|
|
19
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
20
|
-
// Properties
|
|
21
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
22
|
-
super(...arguments);
|
|
23
|
-
this.settingsEnabled = [
|
|
24
|
-
"device",
|
|
25
|
-
"language",
|
|
26
|
-
"virtualMode",
|
|
27
|
-
];
|
|
28
|
-
this._ambientConfig = DEFAULT_STREAM_CONFIG;
|
|
29
|
-
this._virtualMode = false;
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* Stream configuration for ambient capture (modes, transcription, etc.).
|
|
33
|
-
*/
|
|
34
|
-
set ambientConfig(value) {
|
|
35
|
-
this._ambientConfig = value;
|
|
36
|
-
}
|
|
37
|
-
get ambientConfig() {
|
|
38
|
-
return (this._contextProviderRef.value?.ambientConfig ??
|
|
39
|
-
this._ambientConfig ??
|
|
40
|
-
DEFAULT_STREAM_CONFIG);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Stream interaction id passed to `stream.connect` for this session.
|
|
44
|
-
*/
|
|
45
|
-
set interactionId(value) {
|
|
46
|
-
this._interactionId = value;
|
|
47
|
-
}
|
|
48
|
-
get interactionId() {
|
|
49
|
-
return this._contextProviderRef.value?.interactionId ?? this._interactionId;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Enables virtual mode behavior for ambient recording.
|
|
53
|
-
*/
|
|
54
|
-
set virtualMode(value) {
|
|
55
|
-
this._virtualMode = value;
|
|
56
|
-
}
|
|
57
|
-
get virtualMode() {
|
|
58
|
-
return this._contextProviderRef.value?.virtualMode ?? this._virtualMode;
|
|
59
|
-
}
|
|
60
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
61
|
-
// Render
|
|
62
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
63
|
-
render() {
|
|
64
|
-
const isHidden = !this.accessToken &&
|
|
65
|
-
!this.authConfig &&
|
|
66
|
-
!this.socketUrl &&
|
|
67
|
-
!this.socketProxy;
|
|
68
|
-
return html `
|
|
69
|
-
<ambient-root
|
|
70
|
-
${ref(this._contextProviderRef)}
|
|
71
|
-
class=${classMap({ hidden: isHidden })}
|
|
72
|
-
.accessToken=${this.accessToken}
|
|
73
|
-
.authConfig=${this.authConfig}
|
|
74
|
-
.socketUrl=${this.socketUrl}
|
|
75
|
-
.socketProxy=${this.socketProxy}
|
|
76
|
-
.ambientConfig=${this._ambientConfig}
|
|
77
|
-
.interactionId=${this._interactionId}
|
|
78
|
-
?virtualMode=${this.virtualMode}
|
|
79
|
-
.languages=${this._languagesSupported}
|
|
80
|
-
.devices=${this._devices}
|
|
81
|
-
.selectedDevice=${this._selectedDevice}
|
|
82
|
-
.pushToTalkKeybinding=${this._pushToTalkKeybinding}
|
|
83
|
-
.toggleToTalkKeybinding=${this._toggleToTalkKeybinding}
|
|
84
|
-
>
|
|
85
|
-
<ambient-recording-button
|
|
86
|
-
${ref(this._recordingButtonRef)}
|
|
87
|
-
?allowButtonFocus=${this.allowButtonFocus}
|
|
88
|
-
></ambient-recording-button>
|
|
89
|
-
${this.settingsEnabled?.length > 0
|
|
90
|
-
? html `<ambient-settings-menu
|
|
91
|
-
.settingsEnabled=${this.settingsEnabled}
|
|
92
|
-
></ambient-settings-menu>`
|
|
93
|
-
: nothing}
|
|
94
|
-
</ambient-root>
|
|
95
|
-
`;
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
__decorate([
|
|
99
|
-
property({
|
|
100
|
-
converter: commaSeparatedConverter,
|
|
101
|
-
type: Array,
|
|
102
|
-
})
|
|
103
|
-
], CortiAmbient.prototype, "settingsEnabled", void 0);
|
|
104
|
-
__decorate([
|
|
105
|
-
property({ attribute: false, type: Object })
|
|
106
|
-
], CortiAmbient.prototype, "ambientConfig", null);
|
|
107
|
-
__decorate([
|
|
108
|
-
state()
|
|
109
|
-
], CortiAmbient.prototype, "_ambientConfig", void 0);
|
|
110
|
-
__decorate([
|
|
111
|
-
property({ type: String })
|
|
112
|
-
], CortiAmbient.prototype, "interactionId", null);
|
|
113
|
-
__decorate([
|
|
114
|
-
state()
|
|
115
|
-
], CortiAmbient.prototype, "_interactionId", void 0);
|
|
116
|
-
__decorate([
|
|
117
|
-
property({ attribute: "virtualMode", type: Boolean })
|
|
118
|
-
], CortiAmbient.prototype, "virtualMode", null);
|
|
119
|
-
__decorate([
|
|
120
|
-
state()
|
|
121
|
-
], CortiAmbient.prototype, "_virtualMode", void 0);
|
|
122
|
-
CortiAmbient = __decorate([
|
|
123
|
-
customElement("corti-ambient")
|
|
124
|
-
], CortiAmbient);
|
|
125
|
-
export { CortiAmbient };
|
|
126
|
-
//# sourceMappingURL=corti-ambient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corti-ambient.js","sourceRoot":"","sources":["../../../src/components/corti-ambient.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { html, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { DEFAULT_STREAM_CONFIG } from \"../constants.js\";\nimport type { AmbientRoot } from \"../contexts/ambient-context.js\";\nimport type { ConfigurableSettings } from \"../types.js\";\nimport { commaSeparatedConverter } from \"../utils/converters.js\";\nimport type { AmbientRecordingButton } from \"./ambient-recording-button.js\";\nimport { CortiRoot } from \"./corti-root.js\";\n\nimport \"../contexts/ambient-context.js\";\nimport \"./ambient-recording-button.js\";\nimport \"./settings-menu.js\";\n\n@customElement(\"corti-ambient\")\nexport class CortiAmbient extends CortiRoot<\n AmbientRoot,\n AmbientRecordingButton\n> {\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n @property({\n converter: commaSeparatedConverter,\n type: Array,\n })\n override settingsEnabled: ConfigurableSettings[] = [\n \"device\",\n \"language\",\n \"virtualMode\",\n ];\n\n /**\n * Stream configuration for ambient capture (modes, transcription, etc.).\n */\n @property({ attribute: false, type: Object })\n set ambientConfig(value: Corti.StreamConfig) {\n this._ambientConfig = value;\n }\n\n get ambientConfig(): Corti.StreamConfig {\n return (\n this._contextProviderRef.value?.ambientConfig ??\n this._ambientConfig ??\n DEFAULT_STREAM_CONFIG\n );\n }\n\n @state()\n _ambientConfig: Corti.StreamConfig = DEFAULT_STREAM_CONFIG;\n\n /**\n * Stream interaction id passed to `stream.connect` for this session.\n */\n @property({ type: String })\n set interactionId(value: string | undefined) {\n this._interactionId = value;\n }\n\n get interactionId(): string | undefined {\n return this._contextProviderRef.value?.interactionId ?? this._interactionId;\n }\n\n @state()\n _interactionId?: string;\n\n /**\n * Enables virtual mode behavior for ambient recording.\n */\n @property({ attribute: \"virtualMode\", type: Boolean })\n set virtualMode(value: boolean) {\n this._virtualMode = value;\n }\n\n get virtualMode(): boolean {\n return this._contextProviderRef.value?.virtualMode ?? this._virtualMode;\n }\n\n @state()\n _virtualMode: boolean = false;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Render\n // ─────────────────────────────────────────────────────────────────────────────\n\n render() {\n const isHidden =\n !this.accessToken &&\n !this.authConfig &&\n !this.socketUrl &&\n !this.socketProxy;\n\n return html`\n <ambient-root\n ${ref(this._contextProviderRef)}\n class=${classMap({ hidden: isHidden })}\n .accessToken=${this.accessToken}\n .authConfig=${this.authConfig}\n .socketUrl=${this.socketUrl}\n .socketProxy=${this.socketProxy}\n .ambientConfig=${this._ambientConfig}\n .interactionId=${this._interactionId}\n ?virtualMode=${this.virtualMode}\n .languages=${this._languagesSupported}\n .devices=${this._devices}\n .selectedDevice=${this._selectedDevice}\n .pushToTalkKeybinding=${this._pushToTalkKeybinding}\n .toggleToTalkKeybinding=${this._toggleToTalkKeybinding}\n >\n <ambient-recording-button\n ${ref(this._recordingButtonRef)}\n ?allowButtonFocus=${this.allowButtonFocus}\n ></ambient-recording-button>\n ${\n this.settingsEnabled?.length > 0\n ? html`<ambient-settings-menu\n .settingsEnabled=${this.settingsEnabled}\n ></ambient-settings-menu>`\n : nothing\n }\n </ambient-root>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"corti-ambient\": CortiAmbient;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corti-dictation.js","sourceRoot":"","sources":["../../../src/components/corti-dictation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti, CortiAuth } from \"@corti/sdk\";\nimport { html, nothing } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { classMap } from \"lit/directives/class-map.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { DEFAULT_DICTATION_CONFIG } from \"../constants.js\";\nimport type { DictationRoot } from \"../contexts/dictation-context.js\";\nimport { CortiRoot } from \"./corti-root.js\";\nimport type { DictationRecordingButton } from \"./dictation-recording-button.js\";\n\nimport \"../contexts/dictation-context.js\";\nimport \"./dictation-recording-button.js\";\nimport \"./settings-menu.js\";\n\n@customElement(\"corti-dictation\")\nexport class CortiDictation extends CortiRoot<\n DictationRoot,\n DictationRecordingButton\n> {\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Overrides any device selection and instead uses getDisplayMedia to stream system audio.\n * Should only be used for debugging.\n */\n @property({ attribute: \"debug-display-audio\", type: Boolean })\n debug_displayAudio: boolean = false;\n\n /**\n * Configuration settings for dictation\n */\n @property({ attribute: false, type: Object })\n set dictationConfig(value: Corti.TranscribeConfig) {\n this._dictationConfig = value;\n }\n\n get dictationConfig(): Corti.TranscribeConfig {\n return (\n this._contextProviderRef.value?.dictationConfig || this._dictationConfig\n );\n }\n\n @state()\n _dictationConfig: Corti.TranscribeConfig = DEFAULT_DICTATION_CONFIG;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public methods\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Set the latest access token.\n * @returns ServerConfig with environment, tenant, and accessToken\n * @deprecated Use 'accessToken' property instead.\n */\n public setAccessToken(token: string) {\n this.accessToken = token;\n\n return (\n this._contextProviderRef.value?.setAccessToken(token) ?? {\n accessToken: token,\n environment: undefined,\n tenant: undefined,\n }\n );\n }\n\n /**\n * Set the auth configuration for OAuth flows.\n * @returns Promise with ServerConfig containing environment, tenant, and accessToken\n * @deprecated Use 'authConfig' property instead.\n */\n public async setAuthConfig(config: CortiAuth.AuthTokenDerivable) {\n this.authConfig = config;\n\n return (\n this._contextProviderRef.value?.setAuthConfig(config) ?? {\n accessToken: undefined,\n environment: undefined,\n tenant: undefined,\n }\n );\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Render\n // ─────────────────────────────────────────────────────────────────────────────\n\n render() {\n const isHidden =\n !this.accessToken &&\n !this.authConfig &&\n !this.socketUrl &&\n !this.socketProxy;\n\n return html`\n <dictation-root\n ${ref(this._contextProviderRef)}\n class=${classMap({ hidden: isHidden })}\n .accessToken=${this.accessToken}\n .authConfig=${this.authConfig}\n .socketUrl=${this.socketUrl}\n .socketProxy=${this.socketProxy}\n .dictationConfig=${this._dictationConfig}\n .languages=${this._languagesSupported}\n .devices=${this._devices}\n .selectedDevice=${this._selectedDevice}\n .debug_displayAudio=${this.debug_displayAudio}\n .pushToTalkKeybinding=${this._pushToTalkKeybinding}\n .toggleToTalkKeybinding=${this._toggleToTalkKeybinding}\n >\n <dictation-recording-button\n ${ref(this._recordingButtonRef)}\n ?allowButtonFocus=${this.allowButtonFocus}\n ></dictation-recording-button>\n ${\n this.settingsEnabled?.length > 0\n ? html`<dictation-settings-menu\n .settingsEnabled=${this.settingsEnabled}\n ></dictation-settings-menu>`\n : nothing\n }\n </dictation-root>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"corti-dictation\": CortiDictation;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corti-root.js","sourceRoot":"","sources":["../../../src/components/corti-root.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti, CortiAuth } from \"@corti/sdk\";\nimport { css, html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { createRef, type Ref } from \"lit/directives/ref.js\";\nimport type {\n ConfigurableSettings,\n ProxyOptions,\n RecordingState,\n} from \"../types.js\";\nimport { commaSeparatedConverter } from \"../utils/converters.js\";\n\ntype CortiProviderRoot = LitElement & {\n recordingState?: RecordingState;\n languages?: Corti.TranscribeSupportedLanguage[];\n devices?: MediaDeviceInfo[];\n selectedDevice?: MediaDeviceInfo | undefined;\n pushToTalkKeybinding?: string | null | undefined;\n toggleToTalkKeybinding?: string | null | undefined;\n};\n\ntype CortiRecordingButtonHost = LitElement & {\n startRecording(): void;\n stopRecording(): void;\n toggleRecording(): void;\n openConnection(): Promise<void>;\n closeConnection(): Promise<void>;\n};\n\n/**\n * Shared base for all-in-one Corti host elements (e.g. corti-dictation, corti-ambient).\n * Intentionally minimal; shared behavior will move here incrementally.\n */\nexport class CortiRoot<\n TRoot extends CortiProviderRoot = CortiProviderRoot,\n TRecordingButton extends CortiRecordingButtonHost = CortiRecordingButtonHost,\n> extends LitElement {\n static styles = css`\n .hidden {\n display: none;\n }\n `;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Latest access token\n */\n @property({ type: String })\n accessToken?: string;\n\n /**\n * Authentication configuration with optional refresh mechanism.\n */\n @property({ attribute: false, type: Object })\n authConfig?: CortiAuth.AuthTokenDerivable;\n\n /**\n * WebSocket URL for proxy connection. When provided, uses CortiWebSocketProxyClient instead of CortiClient.\n */\n @property({ type: String })\n socketUrl?: string;\n\n /**\n * Socket proxy configuration object. When provided, uses CortiWebSocketProxyClient instead of CortiClient.\n */\n @property({ attribute: false, type: Object })\n socketProxy?: ProxyOptions;\n\n /**\n * Which settings should be available in the UI.\n * If an empty array is passed, the settings will be disabled entirely.\n */\n @property({\n converter: commaSeparatedConverter,\n type: Array,\n })\n settingsEnabled: ConfigurableSettings[] = [\"device\", \"language\"];\n\n /**\n * When false (default), clicking the start/stop button does not move focus\n * to the button, allowing textareas or other input elements to keep focus.\n * Set to true to allow the button to receive focus on click.\n */\n @property({ type: Boolean })\n allowButtonFocus: boolean = false;\n\n /**\n * List of all language codes available for use with the Web Component.\n * Default list depends on the accessToken\n */\n @property({\n converter: commaSeparatedConverter,\n type: Array,\n })\n set languagesSupported(value:\n | Corti.TranscribeSupportedLanguage[]\n | undefined) {\n this._languagesSupported = value;\n }\n\n get languagesSupported(): Corti.TranscribeSupportedLanguage[] {\n return (\n this._contextProviderRef.value?.languages ||\n this._languagesSupported ||\n []\n );\n }\n\n @state()\n protected _languagesSupported?: Corti.TranscribeSupportedLanguage[];\n\n /**\n * List of available recording devices\n */\n @property({ attribute: false, type: Array })\n set devices(value: MediaDeviceInfo[] | undefined) {\n this._devices = value;\n }\n\n get devices(): MediaDeviceInfo[] {\n return this._contextProviderRef.value?.devices || this._devices || [];\n }\n\n @state()\n protected _devices?: MediaDeviceInfo[];\n\n /**\n * The selected device used for recording (MediaDeviceInfo).\n */\n @property({ attribute: false, type: Object })\n set selectedDevice(value: MediaDeviceInfo | undefined) {\n this._selectedDevice = value;\n }\n\n get selectedDevice(): MediaDeviceInfo | undefined {\n return (\n this._contextProviderRef.value?.selectedDevice || this._selectedDevice\n );\n }\n\n @state()\n protected _selectedDevice?: MediaDeviceInfo;\n\n /**\n * Push-to-talk keybinding for keyboard shortcut. Single key only (e.g., \"Space\", \"k\", \"meta\", \"ctrl\").\n * Combinations with \"+\" are not supported.\n * Keydown starts recording, keyup stops recording.\n * Defaults to \"Space\" if keybinding is in settingsEnabled, otherwise undefined\n */\n @property({ type: String })\n set pushToTalkKeybinding(value: string | null | undefined) {\n this._pushToTalkKeybinding = value;\n }\n\n get pushToTalkKeybinding(): string | null | undefined {\n return (\n this._contextProviderRef.value?.pushToTalkKeybinding ||\n this._pushToTalkKeybinding\n );\n }\n\n @state()\n protected _pushToTalkKeybinding?: string | null;\n\n /**\n * Toggle-to-talk keybinding for keyboard shortcut. Single key only (e.g., \"`\", \"k\", \"meta\", \"ctrl\").\n * Combinations with \"+\" are not supported.\n * Pressing the key toggles recording on/off.\n * Defaults to \"Enter\" if keybinding is in settingsEnabled, otherwise undefined\n */\n @property({ type: String })\n set toggleToTalkKeybinding(value: string | null | undefined) {\n this._toggleToTalkKeybinding = value;\n }\n\n get toggleToTalkKeybinding(): string | null | undefined {\n return (\n this._contextProviderRef.value?.toggleToTalkKeybinding ||\n this._toggleToTalkKeybinding\n );\n }\n\n @state()\n protected _toggleToTalkKeybinding?: string | null;\n\n protected _contextProviderRef: Ref<TRoot> = createRef();\n protected _recordingButtonRef: Ref<TRecordingButton> = createRef();\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public methods\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Current state of recording (stopped, recording, initializing and stopping, ).\n */\n get recordingState(): RecordingState {\n return this._contextProviderRef.value?.recordingState ?? \"stopped\";\n }\n\n /**\n * Starts a recording.\n */\n public startRecording(): void {\n this._recordingButtonRef.value?.startRecording();\n }\n\n /**\n * Stops a recording.\n */\n public stopRecording(): void {\n this._recordingButtonRef.value?.stopRecording();\n }\n\n /**\n * Starts or stops recording. Convenience layer on top of the start/stop methods.\n */\n public toggleRecording(): void {\n this._recordingButtonRef.value?.toggleRecording();\n }\n\n /**\n * Opens the WebSocket connection without starting recording.\n * Use this to pre-establish the connection before recording starts.\n */\n public async openConnection(): Promise<void> {\n await this._recordingButtonRef.value?.openConnection();\n }\n\n /**\n * Closes the WebSocket connection by sending \"end\" and waiting for \"ended\".\n * Call this to receive \"usage\" statistics or when done with the connection.\n */\n public async closeConnection(): Promise<void> {\n await this._recordingButtonRef.value?.closeConnection();\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Render\n // ─────────────────────────────────────────────────────────────────────────────\n\n render() {\n return html``;\n }\n}\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
2
|
-
export declare class DictationDeviceSelector extends LitElement {
|
|
3
|
-
#private;
|
|
4
|
-
_devices?: MediaDeviceInfo[];
|
|
5
|
-
_selectedDevice?: MediaDeviceInfo;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
static styles: import("lit").CSSResult[];
|
|
8
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
9
|
-
}
|
|
10
|
-
declare global {
|
|
11
|
-
interface HTMLElementTagNameMap {
|
|
12
|
-
"ambient-device-selector": DictationDeviceSelector;
|
|
13
|
-
"dictation-device-selector": DictationDeviceSelector;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"device-selector.js","sourceRoot":"","sources":["../../../src/components/device-selector.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,qBAAqB,GACtB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oBAAoB,CAAC;AAG3D,IAAM,uBAAuB,GAA7B,MAAM,uBAAwB,SAAQ,UAAU;IAAhD;;;QAUL,aAAQ,GAAY,KAAK,CAAC;IA2C5B,CAAC;IA1BC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;oBAQK,uBAAA,IAAI,uFAAoB;sBACtB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;;YAEvE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAClB,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAA;;wBAEJ,MAAM,CAAC,QAAQ;4BACX,IAAI,CAAC,eAAe,EAAE,QAAQ,KAAK,MAAM,CAAC,QAAQ;;kBAE5D,MAAM,CAAC,KAAK,IAAI,gBAAgB;;aAErC,CACF;;;KAGN,CAAC;IACJ,CAAC;;;mGAtCmB,CAAQ;IAC1B,MAAM,QAAQ,GAAI,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;IAEnE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,IAAI,CAAC,aAAa,CAChB,4BAA4B,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,CAC1D,CAAC;AACJ,CAAC;AAbM,8BAAM,GAAG,YAAY,AAAf,CAAgB;AAT7B;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACrD,KAAK,EAAE;yDACqB;AAI7B;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC5D,KAAK,EAAE;gEAC0B;AAGlC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;yDACF;AAVf,uBAAuB;IADnC,iBAAiB,CAAC,2BAA2B,EAAE,yBAAyB,CAAC;GAC7D,uBAAuB,CAqDnC","sourcesContent":["import { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport {\n devicesContext,\n selectedDeviceContext,\n} from \"../contexts/mixins/devices-context.js\";\nimport SelectStyles from \"../styles/select.js\";\nimport { dualCustomElement } from \"../utils/custom-elements.js\";\nimport { recordingDevicesChangedEvent } from \"../utils/events.js\";\n\n@dualCustomElement(\"dictation-device-selector\", \"ambient-device-selector\")\nexport class DictationDeviceSelector extends LitElement {\n @consume({ context: devicesContext, subscribe: true })\n @state()\n _devices?: MediaDeviceInfo[];\n\n @consume({ context: selectedDeviceContext, subscribe: true })\n @state()\n _selectedDevice?: MediaDeviceInfo;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n static styles = SelectStyles;\n\n #handleSelectDevice(e: Event): void {\n const deviceId = (e.target as HTMLSelectElement).value;\n const device = this._devices?.find((d) => d.deviceId === deviceId);\n\n if (!device) {\n return;\n }\n\n this.dispatchEvent(\n recordingDevicesChangedEvent(this._devices || [], device),\n );\n }\n\n render() {\n return html`\n <div>\n <label id=\"device-select-label\" for=\"device-select\">\n Microphone\n </label>\n <select\n id=\"device-select\"\n aria-labelledby=\"device-select-label\"\n @change=${this.#handleSelectDevice}\n ?disabled=${this.disabled || !this._devices || this._devices.length === 0}\n >\n ${this._devices?.map(\n (device) => html`\n <option\n value=${device.deviceId}\n ?selected=${this._selectedDevice?.deviceId === device.deviceId}\n >\n ${device.label || \"Unknown Device\"}\n </option>\n `,\n )}\n </select>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-device-selector\": DictationDeviceSelector;\n \"dictation-device-selector\": DictationDeviceSelector;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dictation-recording-button.js","sourceRoot":"","sources":["../../../src/components/dictation-recording-button.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EACL,mBAAmB,GAEpB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG1D,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,mBAG7C;IAHM;;QAQK,sBAAiB,GAAG,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAK9D,CAAC;IAHW,iBAAiB;QACzB,OAAO,IAAI,CAAC,gBAAgB,IAAI,wBAAwB,CAAC;IAC3D,CAAC;CACF,CAAA;AAPW;IAFT,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7D,KAAK,EAAE;kEAC4C;AANzC,wBAAwB;IADpC,aAAa,CAAC,4BAA4B,CAAC;GAC/B,wBAAwB,CAapC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport { customElement, state } from \"lit/decorators.js\";\nimport { DEFAULT_DICTATION_CONFIG } from \"../constants.js\";\nimport { dictationConfigContext } from \"../contexts/dictation-context.js\";\nimport {\n DictationController,\n type TranscribeMessage,\n} from \"../controllers/dictation-controller.js\";\nimport { RecordingButtonBase } from \"./recording-button-base.js\";\n\n@customElement(\"dictation-recording-button\")\nexport class DictationRecordingButton extends RecordingButtonBase<\n Corti.TranscribeConfig,\n TranscribeMessage\n> {\n @consume({ context: dictationConfigContext, subscribe: true })\n @state()\n protected _dictationConfig?: Corti.TranscribeConfig;\n\n protected _socketController = new DictationController(this);\n\n protected _getConnectConfig(): Corti.TranscribeConfig {\n return this._dictationConfig ?? DEFAULT_DICTATION_CONFIG;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-recording-button\": DictationRecordingButton;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keybinding-input.js","sourceRoot":"","sources":["../../../src/components/keybinding-input.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,2CAA2C,CAAC;AACnD,OAAO,wBAAwB,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAGtD,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAU;IAAjD;;;QAEL,mBAAc,GAAsC,gBAAgB,CAAC;QAWrE,aAAQ,GAAY,KAAK,CAAC;QAG1B,2BAAsB,GAAY,KAAK,CAAC;IA8D1C,CAAC;IA9BC,MAAM;QACJ,MAAM,UAAU,GACd,IAAI,CAAC,cAAc,KAAK,cAAc;YACpC,CAAC,CAAC,IAAI,CAAC,qBAAqB;YAC5B,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;QACnC,MAAM,KAAK,GACT,IAAI,CAAC,cAAc,KAAK,cAAc;YACpC,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,2BAA2B,CAAC;QAElC,OAAO,IAAI,CAAA;;iBAEE,KAAK;;YAEV,UAAU,IAAI,IAAI,CAAA,+BAA+B,UAAU,QAAQ;;;;;;;uBAOxD,uBAAA,IAAI,iGAA4B;wBAC/B,uBAAA,IAAI,gGAA2B;uBAChC,uBAAA,IAAI,8FAAyB;wBAC5B,IAAI,CAAC,QAAQ;;;;KAIhC,CAAC;IACJ,CAAC;;;;IAxDC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACrC,CAAC;;IAGC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACtC,CAAC;+GAEwB,KAAoB;IAC3C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,KAAK,CAAC,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,eAAe,EAAE,CAAC;IAExB,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAElD,IAAI,CAAC,aAAa,CAChB,sBAAsB,CACpB,KAAK,CAAC,GAAG,EACT,KAAK,CAAC,IAAI,EACV,UAAU,EACV,IAAI,CAAC,cAAc,CACpB,CACF,CAAC;AACJ,CAAC;AA5BM,+BAAM,GAAG,wBAAwB,AAA3B,CAA4B;AAhBzC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gEAC0C;AAIrE;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAClE,KAAK,EAAE;uEAC8B;AAItC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpE,KAAK,EAAE;yEACgC;AAGxC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0DACF;AAG1B;IADC,KAAK,EAAE;wEACgC;AAhB7B,wBAAwB;IADpC,iBAAiB,CAAC,4BAA4B,EAAE,0BAA0B,CAAC;GAC/D,wBAAwB,CA8EpC","sourcesContent":["import { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport {\n pushToTalkKeybindingContext,\n toggleToTalkKeybindingContext,\n} from \"../contexts/mixins/keybindings-context.js\";\nimport KeybindingSelectorStyles from \"../styles/keybinding-selector.js\";\nimport { dualCustomElement } from \"../utils/custom-elements.js\";\nimport { keybindingChangedEvent } from \"../utils/events.js\";\nimport { normalizeKeybinding } from \"../utils/keybinding.js\";\n\n@dualCustomElement(\"dictation-keybinding-input\", \"ambient-keybinding-input\")\nexport class DictationKeybindingInput extends LitElement {\n @property({ type: String })\n keybindingType: \"push-to-talk\" | \"toggle-to-talk\" = \"toggle-to-talk\";\n\n @consume({ context: pushToTalkKeybindingContext, subscribe: true })\n @state()\n _pushToTalkKeybinding?: string | null;\n\n @consume({ context: toggleToTalkKeybindingContext, subscribe: true })\n @state()\n _toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n @state()\n _isCapturingKeybinding: boolean = false;\n\n static styles = KeybindingSelectorStyles;\n\n #handleKeybindingInputFocus(): void {\n this._isCapturingKeybinding = true;\n }\n\n #handleKeybindingInputBlur(): void {\n this._isCapturingKeybinding = false;\n }\n\n #handleKeybindingKeyDown(event: KeyboardEvent): void {\n if (!this._isCapturingKeybinding) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const keybinding = normalizeKeybinding(event.key);\n\n this.dispatchEvent(\n keybindingChangedEvent(\n event.key,\n event.code,\n keybinding,\n this.keybindingType,\n ),\n );\n }\n\n render() {\n const keybinding =\n this.keybindingType === \"push-to-talk\"\n ? this._pushToTalkKeybinding\n : this._toggleToTalkKeybinding;\n const label =\n this.keybindingType === \"push-to-talk\"\n ? \"Push-to-Talk keybinding\"\n : \"Toggle-to-Talk keybinding\";\n\n return html`\n <div>\n <label>${label}</label>\n <div class=\"keybinding-selector-wrapper\">\n ${keybinding && html`<div class=\"keybinding-key\">${keybinding}</div>`}\n <input\n type=\"text\"\n class=\"keybinding-selector-input\"\n .value=\"\"\n placeholder=\"Click and press a key...\"\n readonly\n @focusin=${this.#handleKeybindingInputFocus}\n @focusout=${this.#handleKeybindingInputBlur}\n @keydown=${this.#handleKeybindingKeyDown}\n ?disabled=${this.disabled}\n />\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-keybinding-input\": DictationKeybindingInput;\n \"dictation-keybinding-input\": DictationKeybindingInput;\n }\n}\n"]}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { LitElement } from "lit";
|
|
2
|
-
import "./keybinding-input.js";
|
|
3
|
-
export declare class DictationKeybindingSelector extends LitElement {
|
|
4
|
-
_pushToTalkKeybinding?: string | null;
|
|
5
|
-
_toggleToTalkKeybinding?: string | null;
|
|
6
|
-
disabled: boolean;
|
|
7
|
-
static styles: import("lit").CSSResult[];
|
|
8
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
9
|
-
}
|
|
10
|
-
declare global {
|
|
11
|
-
interface HTMLElementTagNameMap {
|
|
12
|
-
"ambient-keybinding-selector": DictationKeybindingSelector;
|
|
13
|
-
"dictation-keybinding-selector": DictationKeybindingSelector;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keybinding-selector.js","sourceRoot":"","sources":["../../../src/components/keybinding-selector.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,GAC9B,MAAM,2CAA2C,CAAC;AACnD,OAAO,wBAAwB,MAAM,kCAAkC,CAAC;AAExE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,uBAAuB,CAAC;AAMxB,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,UAAU;IAApD;;QAUL,aAAQ,GAAY,KAAK,CAAC;IAwB5B,CAAC;IApBC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;sBAIO,IAAI,CAAC,QAAQ;;;;sBAIb,IAAI,CAAC,QAAQ;;UAGzB,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,qBAAqB,CAAC;YAC5D,IAAI,CAAA;cACA,IAAI,CAAA,SAAS,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,0BAA0B;eAEpH;;KAEH,CAAC;IACJ,CAAC;;AArBM,kCAAM,GAAG,wBAAwB,AAA3B,CAA4B;AATzC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAClE,KAAK,EAAE;0EAC8B;AAItC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACpE,KAAK,EAAE;4EACgC;AAGxC;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;6DACF;AAVf,2BAA2B;IAJvC,iBAAiB,CAChB,+BAA+B,EAC/B,6BAA6B,CAC9B;GACY,2BAA2B,CAkCvC","sourcesContent":["import { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport {\n pushToTalkKeybindingContext,\n toggleToTalkKeybindingContext,\n} from \"../contexts/mixins/keybindings-context.js\";\nimport KeybindingSelectorStyles from \"../styles/keybinding-selector.js\";\n\nimport { dualCustomElement } from \"../utils/custom-elements.js\";\n\nimport \"./keybinding-input.js\";\n\n@dualCustomElement(\n \"dictation-keybinding-selector\",\n \"ambient-keybinding-selector\",\n)\nexport class DictationKeybindingSelector extends LitElement {\n @consume({ context: pushToTalkKeybindingContext, subscribe: true })\n @state()\n _pushToTalkKeybinding?: string | null;\n\n @consume({ context: toggleToTalkKeybindingContext, subscribe: true })\n @state()\n _toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n static styles = KeybindingSelectorStyles;\n\n render() {\n return html`\n <div class=\"settings-group\">\n <dictation-keybinding-input\n keybindingType=\"toggle-to-talk\"\n ?disabled=${this.disabled}\n ></dictation-keybinding-input>\n <dictation-keybinding-input\n keybindingType=\"push-to-talk\"\n ?disabled=${this.disabled}\n ></dictation-keybinding-input>\n ${\n (this._toggleToTalkKeybinding || this._pushToTalkKeybinding) &&\n html`<p class=\"keybinding-help\">\n ${html`Press ${[this._toggleToTalkKeybinding, this._pushToTalkKeybinding].join(\" or \")} to start/stop recording`}\n </p>`\n }\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-keybinding-selector\": DictationKeybindingSelector;\n \"dictation-keybinding-selector\": DictationKeybindingSelector;\n }\n}\n"]}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { Corti } from "@corti/sdk";
|
|
2
|
-
import { LitElement } from "lit";
|
|
3
|
-
export declare class DictationLanguageSelector extends LitElement {
|
|
4
|
-
#private;
|
|
5
|
-
_languages?: Corti.TranscribeSupportedLanguage[];
|
|
6
|
-
_selectedLanguage?: Corti.TranscribeSupportedLanguage;
|
|
7
|
-
disabled: boolean;
|
|
8
|
-
static styles: import("lit").CSSResult[];
|
|
9
|
-
render(): import("lit-html").TemplateResult<1>;
|
|
10
|
-
}
|
|
11
|
-
declare global {
|
|
12
|
-
interface HTMLElementTagNameMap {
|
|
13
|
-
"ambient-language-selector": DictationLanguageSelector;
|
|
14
|
-
"dictation-language-selector": DictationLanguageSelector;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"language-selector.js","sourceRoot":"","sources":["../../../src/components/language-selector.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,yCAAyC,CAAC;AACjD,OAAO,YAAY,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjD,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,UAAU;IAAlD;;;QAUL,aAAQ,GAAY,KAAK,CAAC;IAwC5B,CAAC;IA3BC,MAAM;QACJ,OAAO,IAAI,CAAA;;;;;;;;oBAQK,uBAAA,IAAI,6FAAsB;mBAC3B,IAAI,CAAC,iBAAiB,IAAI,EAAE;sBACzB,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;;YAE3E,IAAI,CAAC,UAAU,EAAE,GAAG,CACpB,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAA;;wBAEN,QAAQ;4BACJ,IAAI,CAAC,iBAAiB,KAAK,QAAQ;;kBAE7C,eAAe,CAAC,QAAQ,CAAC;;aAE9B,CACF;;;KAGN,CAAC;IACJ,CAAC;;;2GAnCqB,CAAQ;IAC5B,MAAM,QAAQ,GAAI,CAAC,CAAC,MAA4B,CAAC,KAAK,CAAC;IAEvD,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE3E,qCAAqC;IACrC,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;AACrD,CAAC;AATM,gCAAM,GAAG,YAAY,AAAf,CAAgB;AAT7B;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACvD,KAAK,EAAE;6DACyC;AAIjD;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9D,KAAK,EAAE;oEAC8C;AAGtD;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;2DACF;AAVf,yBAAyB;IADrC,iBAAiB,CAAC,6BAA6B,EAAE,2BAA2B,CAAC;GACjE,yBAAyB,CAkDrC","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport { html, LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport {\n languagesContext,\n selectedLanguageContext,\n} from \"../contexts/mixins/languages-context.js\";\nimport SelectStyles from \"../styles/select.js\";\nimport { dualCustomElement } from \"../utils/custom-elements.js\";\nimport {\n languageChangedEvent,\n languagesChangedEvent,\n} from \"../utils/events.js\";\nimport { getLanguageName } from \"../utils/languages.js\";\n\n@dualCustomElement(\"dictation-language-selector\", \"ambient-language-selector\")\nexport class DictationLanguageSelector extends LitElement {\n @consume({ context: languagesContext, subscribe: true })\n @state()\n _languages?: Corti.TranscribeSupportedLanguage[];\n\n @consume({ context: selectedLanguageContext, subscribe: true })\n @state()\n _selectedLanguage?: Corti.TranscribeSupportedLanguage;\n\n @property({ type: Boolean })\n disabled: boolean = false;\n\n static styles = SelectStyles;\n\n #handleSelectLanguage(e: Event): void {\n const language = (e.target as HTMLSelectElement).value;\n\n this.dispatchEvent(languagesChangedEvent(this._languages || [], language));\n\n // Dispatch backward compatible event\n this.dispatchEvent(languageChangedEvent(language));\n }\n\n render() {\n return html`\n <div>\n <label id=\"language-select-label\" for=\"language-select\">\n Spoken language\n </label>\n <select\n id=\"language-select\"\n aria-labelledby=\"language-select-label\"\n @change=${this.#handleSelectLanguage}\n .value=${this._selectedLanguage ?? \"\"}\n ?disabled=${this.disabled || !this._languages || this._languages.length === 0}\n >\n ${this._languages?.map(\n (language) => html`\n <option\n value=${language}\n ?selected=${this._selectedLanguage === language}\n >\n ${getLanguageName(language)}\n </option>\n `,\n )}\n </select>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"ambient-language-selector\": DictationLanguageSelector;\n \"dictation-language-selector\": DictationLanguageSelector;\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"recording-button-base.js","sourceRoot":"","sources":["../../../src/components/recording-button-base.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CortiAuth } from \"@corti/sdk\";\nimport { consume } from \"@lit/context\";\nimport {\n type CSSResultGroup,\n html,\n LitElement,\n type PropertyValues,\n} from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { AUDIO_CHUNK_INTERVAL_MS } from \"../constants.js\";\nimport { virtualModeContext } from \"../contexts/ambient-context.js\";\nimport { debugDisplayAudioContext } from \"../contexts/dictation-context.js\";\nimport {\n accessTokenContext,\n authConfigContext,\n regionContext,\n tenantNameContext,\n} from \"../contexts/mixins/auth-context.js\";\nimport { selectedDeviceContext } from \"../contexts/mixins/devices-context.js\";\nimport {\n pushToTalkKeybindingContext,\n toggleToTalkKeybindingContext,\n} from \"../contexts/mixins/keybindings-context.js\";\nimport {\n socketProxyContext,\n socketUrlContext,\n} from \"../contexts/mixins/proxy-context.js\";\nimport { recordingStateContext } from \"../contexts/mixins/recording-state-context.js\";\nimport type { TranscribeMessage } from \"../controllers/dictation-controller.js\";\nimport { KeybindingController } from \"../controllers/keybinding-controller.js\";\nimport { MediaController } from \"../controllers/media-controller.js\";\nimport type {\n SocketController,\n SocketControllerOutboundItem,\n SocketControllerWebSocket,\n} from \"../controllers/socket-controller.js\";\nimport ButtonStyles from \"../styles/buttons.js\";\nimport RecordingButtonStyles from \"../styles/recording-button.js\";\nimport type {\n ProxyOptions,\n RecordingSocketInboundMessage,\n RecordingState,\n} from \"../types.js\";\nimport {\n audioEventEvent,\n audioLevelChangedEvent,\n commandEvent,\n deltaUsageEvent,\n errorEvent,\n factsEvent,\n networkActivityEvent,\n type RecordingStateChangedEventDetail,\n recordingStateChangedEvent,\n streamClosedEvent,\n transcriptEvent,\n usageEvent,\n} from \"../utils/events.js\";\n\nimport \"./audio-visualiser.js\";\nimport \"../icons/icons.js\";\n\nexport abstract class RecordingButtonBase<\n TConfig,\n TMessage extends RecordingSocketInboundMessage = TranscribeMessage,\n> extends LitElement {\n @consume({ context: recordingStateContext, subscribe: true })\n @state()\n _recordingState: RecordingState = \"stopped\";\n\n @consume({ context: selectedDeviceContext, subscribe: true })\n @state()\n _selectedDevice?: MediaDeviceInfo;\n\n @consume({ context: accessTokenContext, subscribe: true })\n @state()\n _accessToken?: string;\n\n @consume({ context: authConfigContext, subscribe: true })\n @state()\n _authConfig?: CortiAuth.AuthTokenDerivable;\n\n @consume({ context: regionContext, subscribe: true })\n @state()\n _region?: string;\n\n @consume({ context: tenantNameContext, subscribe: true })\n @state()\n _tenantName?: string;\n\n @consume({ context: socketUrlContext, subscribe: true })\n @state()\n _socketUrl?: string;\n\n @consume({ context: socketProxyContext, subscribe: true })\n @state()\n _socketProxy?: ProxyOptions;\n\n @consume({ context: debugDisplayAudioContext, subscribe: true })\n @state()\n _debug_displayAudio?: boolean;\n\n @consume({ context: virtualModeContext, subscribe: true })\n @state()\n _virtualMode?: boolean;\n\n @consume({ context: pushToTalkKeybindingContext, subscribe: true })\n @state()\n _pushToTalkKeybinding?: string | null;\n\n @consume({ context: toggleToTalkKeybindingContext, subscribe: true })\n @state()\n _toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n allowButtonFocus: boolean = false;\n\n protected abstract _socketController: SocketController<\n SocketControllerOutboundItem,\n TMessage,\n TConfig,\n SocketControllerWebSocket\n >;\n\n protected abstract _getConnectConfig(): TConfig;\n\n #mediaController = new MediaController(this);\n // biome-ignore lint/correctness/noUnusedPrivateClassMembers: Controller self-registers in constructor (addController).\n #keybindingController = new KeybindingController(this);\n #closeConnectionOnInit = false;\n #processing = false;\n #connection: RecordingStateChangedEventDetail[\"connection\"] = \"CLOSED\";\n\n static styles: CSSResultGroup = [RecordingButtonStyles, ButtonStyles];\n\n protected update(changedProperties: PropertyValues) {\n if (\n changedProperties.has(\"_recordingState\") &&\n this._recordingState === \"recording\" &&\n this.#closeConnectionOnInit\n ) {\n this.#closeConnectionOnInit = false;\n this.#handleStop();\n }\n\n super.update(changedProperties);\n }\n\n #handleClick(event: MouseEvent): void {\n if (!this.allowButtonFocus) {\n event.preventDefault();\n }\n\n this.toggleRecording();\n }\n\n #handleWebSocketMessage = (message: TMessage): void => {\n switch (message.type) {\n case \"CONFIG_DENIED\":\n this.dispatchEvent(\n errorEvent(`Config denied: ${message.reason ?? \"Unknown reason\"}`),\n );\n this.#handleStop();\n break;\n case \"CONFIG_TIMEOUT\":\n this.dispatchEvent(errorEvent(\"Config timeout\"));\n this.#handleStop();\n break;\n case \"transcript\":\n this.dispatchEvent(transcriptEvent(message));\n break;\n case \"command\":\n this.dispatchEvent(commandEvent(message));\n break;\n case \"facts\":\n this.dispatchEvent(factsEvent(message));\n break;\n case \"usage\":\n this.dispatchEvent(usageEvent(message));\n break;\n case \"delta_usage\":\n this.dispatchEvent(deltaUsageEvent(message));\n break;\n case \"audioEvent\":\n this.dispatchEvent(audioEventEvent(message));\n break;\n case \"error\":\n this.dispatchEvent(errorEvent(message.error));\n this.#handleStop();\n break;\n case \"ended\":\n case \"ENDED\":\n this.#processing = false;\n this.#dispatchRecordingStateChanged(this._recordingState);\n break;\n case \"flushed\":\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n this.#processing = false;\n this.#dispatchRecordingStateChanged(this._recordingState);\n }\n break;\n }\n };\n\n #handleWebSocketError = (error: Error): void => {\n this.dispatchEvent(errorEvent(`Socket error: ${error.message}`));\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.#handleStop();\n };\n\n #handleWebSocketClose = (event: unknown): void => {\n if (\n this._socketController.isConnectionOpen() ||\n this._socketController.isConnecting()\n ) {\n return;\n }\n\n this.#processing = false;\n this.#connection = \"CLOSED\";\n this.dispatchEvent(streamClosedEvent(event));\n this.#dispatchRecordingStateChanged(this._recordingState);\n };\n\n #dispatchRecordingStateChanged(state: RecordingState): void {\n this.dispatchEvent(\n recordingStateChangedEvent(state, {\n connection: this.#connection,\n processing: this.#processing,\n }),\n );\n }\n\n async #handleStart(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"initializing\");\n\n try {\n await this.#mediaController.initialize(() => {\n if (this._recordingState === \"recording\") {\n this.dispatchEvent(errorEvent(\"Recording device access was lost.\"));\n this.#handleStop();\n }\n }, this._socketController.mediaRecorderHandler);\n this.#mediaController.mediaRecorder?.start(AUDIO_CHUNK_INTERVAL_MS);\n this.#mediaController.startAudioLevelMonitoring((level) => {\n this.dispatchEvent(audioLevelChangedEvent(level));\n });\n\n this.#processing = true;\n\n if (this.#connection !== \"OPEN\") {\n this.#connection = \"CONNECTING\";\n }\n\n this.#dispatchRecordingStateChanged(\"recording\");\n\n const isNewConnection = await this._socketController.connect(\n this._getConnectConfig(),\n {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n },\n );\n\n if (isNewConnection === \"superseded\") {\n return;\n }\n\n this.#connection = \"OPEN\";\n\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n await this.#handleStop();\n }\n }\n\n async #handleStop(): Promise<void> {\n this.#dispatchRecordingStateChanged(\"stopping\");\n\n try {\n this.#mediaController.stopAudioLevelMonitoring();\n await this.#mediaController.stopRecording();\n await this._socketController.stopRecording();\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n try {\n await this.#mediaController.cleanup();\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n this.#dispatchRecordingStateChanged(\"stopped\");\n }\n\n public startRecording(): void {\n if (this._recordingState !== \"stopped\") {\n return;\n }\n\n this.#handleStart();\n }\n\n public stopRecording(): void {\n if (\n this._recordingState === \"stopped\" ||\n this._recordingState === \"stopping\"\n ) {\n return;\n }\n\n if (this._recordingState === \"initializing\") {\n this.#closeConnectionOnInit = true;\n return;\n }\n\n this.#handleStop();\n }\n\n public toggleRecording(): void {\n if (this._recordingState === \"stopped\") {\n this.startRecording();\n } else if (this._recordingState === \"recording\") {\n this.stopRecording();\n }\n }\n\n public async openConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this._socketController.isConnectionOpen()) {\n return;\n }\n\n try {\n this.#connection = \"CONNECTING\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n\n await this._socketController.connect(this._getConnectConfig(), {\n onClose: this.#handleWebSocketClose,\n onError: this.#handleWebSocketError,\n onMessage: this.#handleWebSocketMessage,\n onNetworkActivity: (direction, data) => {\n this.dispatchEvent(networkActivityEvent(direction, data));\n },\n });\n\n this.#connection = \"OPEN\";\n this.#dispatchRecordingStateChanged(this._recordingState);\n } catch (error) {\n this.#connection = \"CLOSED\";\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n public async closeConnection(): Promise<void> {\n if (this._recordingState !== \"stopped\" || this.#processing) {\n return;\n }\n\n if (this._socketController.isConnecting()) {\n await this._socketController.waitForConnection();\n }\n\n if (!this._socketController.isConnectionOpen()) {\n this.#connection = \"CLOSED\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n return;\n }\n\n try {\n this.#connection = \"CLOSING\";\n this.#dispatchRecordingStateChanged(\"stopped\");\n await this._socketController.closeConnection(this.#handleWebSocketClose);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n }\n\n render() {\n const isLoading =\n this._recordingState === \"initializing\" ||\n this._recordingState === \"stopping\";\n const isRecording = this._recordingState === \"recording\";\n\n return html`\n <button\n @click=${this.#handleClick}\n ?disabled=${isLoading}\n class=${isRecording ? \"red\" : \"accent\"}\n aria-label=${isRecording ? \"Stop recording\" : \"Start recording\"}\n aria-pressed=${isRecording}\n >\n ${\n isLoading\n ? html`<icon-loading-spinner />`\n : isRecording\n ? html`<icon-recording />`\n : html`<icon-mic-on />`\n }\n <dictation-audio-visualiser\n .level=${this.#mediaController.audioLevel}\n ?active=${isRecording}\n />\n </button>\n `;\n }\n}\n"]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { type CSSResultGroup, LitElement, nothing } from "lit";
|
|
2
|
-
import type { ConfigurableSettings, RecordingState } from "../types.js";
|
|
3
|
-
import "./ambient-virtual-mode-selector.js";
|
|
4
|
-
import "./device-selector.js";
|
|
5
|
-
import "./keybinding-selector.js";
|
|
6
|
-
import "./language-selector.js";
|
|
7
|
-
import "../icons/icons.js";
|
|
8
|
-
export declare class DictationSettingsMenu extends LitElement {
|
|
9
|
-
_recordingState: RecordingState;
|
|
10
|
-
settingsEnabled: ConfigurableSettings[];
|
|
11
|
-
static styles: CSSResultGroup;
|
|
12
|
-
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
13
|
-
}
|
|
14
|
-
declare global {
|
|
15
|
-
interface HTMLElementTagNameMap {
|
|
16
|
-
"ambient-settings-menu": DictationSettingsMenu;
|
|
17
|
-
"dictation-settings-menu": DictationSettingsMenu;
|
|
18
|
-
}
|
|
19
|
-
}
|