@corti/dictation-web
Version:
Web component for Corti Dictation
87 lines • 3.46 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
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;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { consume } from "@lit/context";
import { html, LitElement, nothing } from "lit";
import { customElement, property, state } from "lit/decorators.js";
import { recordingStateContext } from "../contexts/dictation-context.js";
import ButtonStyles from "../styles/buttons.js";
import CalloutStyles from "../styles/callout.js";
import SettingsMenuStyles from "../styles/settings-menu.js";
import { commaSeparatedConverter } from "../utils/converters.js";
import "./device-selector.js";
import "./keybinding-selector.js";
import "./language-selector.js";
import "../icons/icons.js";
let DictationSettingsMenu = class DictationSettingsMenu extends LitElement {
constructor() {
super(...arguments);
this._recordingState = "stopped";
this.settingsEnabled = ["device", "language"];
}
render() {
if (this.settingsEnabled?.length === 0) {
return nothing;
}
const isRecording = this._recordingState === "recording";
const showDeviceSelector = this.settingsEnabled.includes("device");
const showLanguageSelector = this.settingsEnabled.includes("language");
const showKeybinding = this.settingsEnabled.includes("keybinding");
return html `
<div class="mic-selector">
<button id="settings-popover-button" popovertarget="settings-popover">
<icon-settings />
</button>
<div id="settings-popover" popover>
<div class="settings-wrapper">
${isRecording
? html `
<div class="callout warn">
Recording is in progress. Stop recording to change settings.
</div>
`
: nothing}
${showDeviceSelector
? html `<dictation-device-selector
?disabled=${isRecording}
/>`
: nothing}
${showLanguageSelector
? html `<dictation-language-selector
?disabled=${isRecording}
/>`
: nothing}
${showKeybinding
? html `<dictation-keybinding-selector
?disabled=${isRecording}
/>`
: nothing}
</div>
</div>
</div>
`;
}
};
DictationSettingsMenu.styles = [
SettingsMenuStyles,
ButtonStyles,
CalloutStyles,
];
__decorate([
consume({ context: recordingStateContext, subscribe: true }),
state()
], DictationSettingsMenu.prototype, "_recordingState", void 0);
__decorate([
property({
converter: commaSeparatedConverter,
type: Array,
})
], DictationSettingsMenu.prototype, "settingsEnabled", void 0);
DictationSettingsMenu = __decorate([
customElement("dictation-settings-menu")
], DictationSettingsMenu);
export { DictationSettingsMenu };
//# sourceMappingURL=settings-menu.js.map