@corti/dictation-web 0.6.0 → 0.7.0-ambient

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.
Files changed (91) hide show
  1. package/dist/bundle.js +1838 -1455
  2. package/dist/components/ambient-recording-button.d.ts +16 -0
  3. package/dist/components/ambient-recording-button.js +68 -0
  4. package/dist/components/ambient-recording-button.js.map +1 -0
  5. package/dist/components/corti-ambient.d.ts +27 -0
  6. package/dist/components/corti-ambient.js +97 -0
  7. package/dist/components/corti-ambient.js.map +1 -0
  8. package/dist/components/corti-dictation.d.ts +9 -109
  9. package/dist/components/corti-dictation.js +12 -187
  10. package/dist/components/corti-dictation.js.map +1 -1
  11. package/dist/components/corti-root.d.ts +121 -0
  12. package/dist/components/corti-root.js +196 -0
  13. package/dist/components/corti-root.js.map +1 -0
  14. package/dist/components/device-selector.js +1 -1
  15. package/dist/components/device-selector.js.map +1 -1
  16. package/dist/components/dictation-recording-button.d.ts +13 -0
  17. package/dist/components/dictation-recording-button.js +30 -0
  18. package/dist/components/dictation-recording-button.js.map +1 -0
  19. package/dist/components/keybinding-input.js +1 -1
  20. package/dist/components/keybinding-input.js.map +1 -1
  21. package/dist/components/keybinding-selector.js +1 -1
  22. package/dist/components/keybinding-selector.js.map +1 -1
  23. package/dist/components/language-selector.js +2 -1
  24. package/dist/components/language-selector.js.map +1 -1
  25. package/dist/components/{recording-button.d.ts → recording-button-base.d.ts} +7 -9
  26. package/dist/components/recording-button-base.js +321 -0
  27. package/dist/components/recording-button-base.js.map +1 -0
  28. package/dist/components/settings-menu.js +1 -1
  29. package/dist/components/settings-menu.js.map +1 -1
  30. package/dist/constants.d.ts +1 -0
  31. package/dist/constants.js +9 -0
  32. package/dist/constants.js.map +1 -1
  33. package/dist/contexts/ambient-context.d.ts +18 -0
  34. package/dist/contexts/ambient-context.js +48 -0
  35. package/dist/contexts/ambient-context.js.map +1 -0
  36. package/dist/contexts/dictation-context.d.ts +3 -92
  37. package/dist/contexts/dictation-context.js +5 -257
  38. package/dist/contexts/dictation-context.js.map +1 -1
  39. package/dist/contexts/mixins/auth-context.d.ts +32 -0
  40. package/dist/contexts/mixins/auth-context.js +116 -0
  41. package/dist/contexts/mixins/auth-context.js.map +1 -0
  42. package/dist/contexts/mixins/devices-context.d.ts +14 -0
  43. package/dist/contexts/mixins/devices-context.js +58 -0
  44. package/dist/contexts/mixins/devices-context.js.map +1 -0
  45. package/dist/contexts/mixins/keybindings-context.d.ts +13 -0
  46. package/dist/contexts/mixins/keybindings-context.js +62 -0
  47. package/dist/contexts/mixins/keybindings-context.js.map +1 -0
  48. package/dist/contexts/mixins/languages-context.d.ts +11 -0
  49. package/dist/contexts/mixins/languages-context.js +54 -0
  50. package/dist/contexts/mixins/languages-context.js.map +1 -0
  51. package/dist/contexts/mixins/proxy-context.d.ts +14 -0
  52. package/dist/contexts/mixins/proxy-context.js +24 -0
  53. package/dist/contexts/mixins/proxy-context.js.map +1 -0
  54. package/dist/contexts/mixins/recording-state-context.d.ts +13 -0
  55. package/dist/contexts/mixins/recording-state-context.js +30 -0
  56. package/dist/contexts/mixins/recording-state-context.js.map +1 -0
  57. package/dist/contexts/mixins/types.d.ts +5 -0
  58. package/dist/contexts/mixins/types.js +2 -0
  59. package/dist/contexts/mixins/types.js.map +1 -0
  60. package/dist/contexts/root-context.d.ts +8 -0
  61. package/dist/contexts/root-context.js +34 -0
  62. package/dist/contexts/root-context.js.map +1 -0
  63. package/dist/controllers/ambient-controller.d.ts +16 -0
  64. package/dist/controllers/ambient-controller.js +24 -0
  65. package/dist/controllers/ambient-controller.js.map +1 -0
  66. package/dist/controllers/dictation-controller.d.ts +8 -31
  67. package/dist/controllers/dictation-controller.js +17 -283
  68. package/dist/controllers/dictation-controller.js.map +1 -1
  69. package/dist/controllers/languages-controller.js +0 -4
  70. package/dist/controllers/languages-controller.js.map +1 -1
  71. package/dist/controllers/socket-controller.d.ts +51 -0
  72. package/dist/controllers/socket-controller.js +281 -0
  73. package/dist/controllers/socket-controller.js.map +1 -0
  74. package/dist/index.d.ts +5 -2
  75. package/dist/index.js +12 -2
  76. package/dist/index.js.map +1 -1
  77. package/dist/tsconfig.tsbuildinfo +1 -1
  78. package/dist/types.d.ts +3 -0
  79. package/dist/types.js.map +1 -1
  80. package/dist/utils/devices.d.ts +12 -8
  81. package/dist/utils/devices.js +39 -28
  82. package/dist/utils/devices.js.map +1 -1
  83. package/dist/utils/events.d.ts +5 -3
  84. package/dist/utils/events.js +7 -0
  85. package/dist/utils/events.js.map +1 -1
  86. package/dist/utils/keybinding.d.ts +2 -1
  87. package/dist/utils/keybinding.js +12 -6
  88. package/dist/utils/keybinding.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/components/recording-button.js +0 -331
  91. package/dist/components/recording-button.js.map +0 -1
@@ -4,286 +4,34 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
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
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
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 _DictationRoot_languagesController, _DictationRoot_devicesController, _DictationRoot_handleLanguageChanged, _DictationRoot_handleDeviceChanged, _DictationRoot_handleRecordingStateChanged, _DictationRoot_handleContextRequest, _DictationRoot_handleKeybindingChanged;
13
7
  import { createContext, provide } from "@lit/context";
14
- import { html, LitElement } from "lit";
15
- import { customElement, property, state } from "lit/decorators.js";
16
- import { DevicesController } from "../controllers/devices-controller.js";
17
- import { LanguagesController } from "../controllers/languages-controller.js";
18
- import ComponentStyles from "../styles/component-styles.js";
19
- import { getInitialToken } from "../utils/auth.js";
20
- import { commaSeparatedConverter } from "../utils/converters.js";
21
- import { errorEvent, keybindingChangedEvent, } from "../utils/events.js";
22
- import { decodeToken } from "../utils/token.js";
23
- export const regionContext = createContext(Symbol("region"));
24
- export const tenantNameContext = createContext(Symbol("tenantName"));
25
- export const languagesContext = createContext(Symbol("languages"));
26
- export const devicesContext = createContext(Symbol("devices"));
27
- export const selectedDeviceContext = createContext(Symbol("selectedDevice"));
28
- export const recordingStateContext = createContext(Symbol("recordingState"));
29
- export const accessTokenContext = createContext(Symbol("accessToken"));
8
+ import { customElement, property } from "lit/decorators.js";
9
+ import { RootContext } from "./root-context.js";
30
10
  export const dictationConfigContext = createContext(Symbol("dictationConfig"));
31
- export const authConfigContext = createContext(Symbol("authConfig"));
32
- export const socketUrlContext = createContext(Symbol("socketUrl"));
33
- export const socketProxyContext = createContext(Symbol("socketProxy"));
34
11
  export const debugDisplayAudioContext = createContext(Symbol("debugDisplayAudio"));
35
- export const pushToTalkKeybindingContext = createContext(Symbol("pushToTalkKeybinding"));
36
- export const toggleToTalkKeybindingContext = createContext(Symbol("toggleToTalkKeybinding"));
37
- let DictationRoot = class DictationRoot extends LitElement {
38
- set accessToken(token) {
39
- this.setAccessToken(token);
40
- }
41
- get accessToken() {
42
- return this._accessToken;
43
- }
44
- set authConfig(config) {
45
- this.setAuthConfig(config);
46
- }
47
- get authConfig() {
48
- return this._authConfig;
49
- }
50
- set languages(value) {
51
- this._languages = value;
52
- // Clear auto-loaded flag when languages are set via property
53
- if (value !== undefined) {
54
- __classPrivateFieldGet(this, _DictationRoot_languagesController, "f").clearAutoLoadedFlag();
55
- }
56
- }
57
- get languages() {
58
- return this._languages;
59
- }
60
- set devices(value) {
61
- this._devices = value;
62
- // Clear auto-loaded flag when devices are set via property
63
- if (value !== undefined) {
64
- __classPrivateFieldGet(this, _DictationRoot_devicesController, "f").clearAutoLoadedFlag();
65
- }
66
- }
67
- get devices() {
68
- return this._devices;
69
- }
12
+ let DictationRoot = class DictationRoot extends RootContext {
70
13
  // ─────────────────────────────────────────────────────────────────────────────
71
14
  // Lifecycle
72
15
  // ─────────────────────────────────────────────────────────────────────────────
73
16
  constructor() {
74
17
  super();
75
- this.recordingState = "stopped";
76
- _DictationRoot_languagesController.set(this, new LanguagesController(this));
77
- _DictationRoot_devicesController.set(this, new DevicesController(this));
78
- this.noWrapper = false;
79
- // ─────────────────────────────────────────────────────────────────────────────
80
- // Private event handlers
81
- // ─────────────────────────────────────────────────────────────────────────────
82
- _DictationRoot_handleLanguageChanged.set(this, (e) => {
18
+ this.addEventListener("languages-changed", (e) => {
83
19
  const event = e;
84
20
  this.dictationConfig = {
85
21
  ...this.dictationConfig,
86
- primaryLanguage: event.detail.selectedLanguage,
22
+ primaryLanguage: event.detail.selectedLanguage ?? "en",
87
23
  };
88
24
  });
89
- _DictationRoot_handleDeviceChanged.set(this, (e) => {
90
- const event = e;
91
- this.selectedDevice = event.detail.selectedDevice;
92
- });
93
- _DictationRoot_handleRecordingStateChanged.set(this, (e) => {
94
- const event = e;
95
- this.recordingState = event.detail.state;
96
- });
97
- _DictationRoot_handleContextRequest.set(this, (e) => {
98
- if (e.context === languagesContext) {
99
- __classPrivateFieldGet(this, _DictationRoot_languagesController, "f").initialize();
100
- }
101
- else if (e.context === devicesContext) {
102
- __classPrivateFieldGet(this, _DictationRoot_devicesController, "f").initialize();
103
- }
104
- else if (e.contextTarget.tagName.toLowerCase() === "dictation-keybinding-selector") {
105
- if (e.context === pushToTalkKeybindingContext &&
106
- this.pushToTalkKeybinding === undefined) {
107
- this.pushToTalkKeybinding = "Space";
108
- this.dispatchEvent(keybindingChangedEvent(" ", "Space", "Space", "push-to-talk"));
109
- }
110
- if (e.context === toggleToTalkKeybindingContext &&
111
- this.toggleToTalkKeybinding === undefined) {
112
- this.toggleToTalkKeybinding = "Enter";
113
- this.dispatchEvent(keybindingChangedEvent("Enter", "Enter", "Enter", "toggle-to-talk"));
114
- }
115
- }
116
- });
117
- _DictationRoot_handleKeybindingChanged.set(this, (e) => {
118
- const event = e;
119
- const keybinding = event.detail.keybinding;
120
- if (event.detail.type === "push-to-talk") {
121
- this.pushToTalkKeybinding = keybinding;
122
- }
123
- else if (event.detail.type === "toggle-to-talk") {
124
- this.toggleToTalkKeybinding = keybinding;
125
- }
126
- });
127
- this.addEventListener("languages-changed", __classPrivateFieldGet(this, _DictationRoot_handleLanguageChanged, "f"));
128
- this.addEventListener("recording-devices-changed", __classPrivateFieldGet(this, _DictationRoot_handleDeviceChanged, "f"));
129
- this.addEventListener("recording-state-changed", __classPrivateFieldGet(this, _DictationRoot_handleRecordingStateChanged, "f"));
130
- this.addEventListener("context-request", __classPrivateFieldGet(this, _DictationRoot_handleContextRequest, "f"));
131
- this.addEventListener("keybinding-changed", __classPrivateFieldGet(this, _DictationRoot_handleKeybindingChanged, "f"));
132
- }
133
- // ─────────────────────────────────────────────────────────────────────────────
134
- // Public methods
135
- // ─────────────────────────────────────────────────────────────────────────────
136
- /**
137
- * Sets the access token and parses region/tenant from it.
138
- * @returns ServerConfig with environment, tenant, and accessToken
139
- * @deprecated Use 'accessToken' property instead.
140
- */
141
- setAccessToken(token) {
142
- this._accessToken = token;
143
- this.region = undefined;
144
- this.tenantName = undefined;
145
- if (!token) {
146
- return { accessToken: token, environment: undefined, tenant: undefined };
147
- }
148
- try {
149
- const decoded = decodeToken(token);
150
- this.region = decoded?.environment;
151
- this.tenantName = decoded?.tenant;
152
- return {
153
- accessToken: token,
154
- environment: decoded?.environment,
155
- tenant: decoded?.tenant,
156
- };
157
- }
158
- catch (error) {
159
- this.dispatchEvent(errorEvent(error));
160
- }
161
- return { accessToken: token, environment: undefined, tenant: undefined };
162
- }
163
- /**
164
- * Sets the auth config and parses region/tenant from the initial token.
165
- * @returns Promise with ServerConfig containing environment, tenant, and accessToken
166
- * @deprecated Use 'authConfig' property instead.
167
- */
168
- async setAuthConfig(config) {
169
- this._authConfig = config;
170
- if (!config) {
171
- return {
172
- accessToken: undefined,
173
- environment: undefined,
174
- tenant: undefined,
175
- };
176
- }
177
- try {
178
- const { accessToken } = await getInitialToken(config);
179
- return this.setAccessToken(accessToken);
180
- }
181
- catch (error) {
182
- this.dispatchEvent(errorEvent(error));
183
- }
184
- return {
185
- accessToken: undefined,
186
- environment: undefined,
187
- tenant: undefined,
188
- };
189
- }
190
- // ─────────────────────────────────────────────────────────────────────────────
191
- // Render
192
- // ─────────────────────────────────────────────────────────────────────────────
193
- render() {
194
- if (this.noWrapper) {
195
- return html `<slot></slot>`;
196
- }
197
- return html `<div class="wrapper">
198
- <slot></slot>
199
- </div>`;
200
25
  }
201
26
  };
202
- _DictationRoot_languagesController = new WeakMap();
203
- _DictationRoot_devicesController = new WeakMap();
204
- _DictationRoot_handleLanguageChanged = new WeakMap();
205
- _DictationRoot_handleDeviceChanged = new WeakMap();
206
- _DictationRoot_handleRecordingStateChanged = new WeakMap();
207
- _DictationRoot_handleContextRequest = new WeakMap();
208
- _DictationRoot_handleKeybindingChanged = new WeakMap();
209
- // ─────────────────────────────────────────────────────────────────────────────
210
- // Static
211
- // ─────────────────────────────────────────────────────────────────────────────
212
- DictationRoot.styles = [ComponentStyles];
213
- __decorate([
214
- provide({ context: regionContext }),
215
- state()
216
- ], DictationRoot.prototype, "region", void 0);
217
- __decorate([
218
- provide({ context: tenantNameContext }),
219
- state()
220
- ], DictationRoot.prototype, "tenantName", void 0);
221
- __decorate([
222
- provide({ context: recordingStateContext }),
223
- state()
224
- ], DictationRoot.prototype, "recordingState", void 0);
225
- __decorate([
226
- provide({ context: accessTokenContext }),
227
- state()
228
- ], DictationRoot.prototype, "_accessToken", void 0);
229
- __decorate([
230
- property({ type: String })
231
- ], DictationRoot.prototype, "accessToken", null);
232
- __decorate([
233
- provide({ context: authConfigContext }),
234
- state()
235
- ], DictationRoot.prototype, "_authConfig", void 0);
236
- __decorate([
237
- property({ attribute: false, type: Object })
238
- ], DictationRoot.prototype, "authConfig", null);
239
- __decorate([
240
- provide({ context: socketUrlContext }),
241
- property({ type: String })
242
- ], DictationRoot.prototype, "socketUrl", void 0);
243
- __decorate([
244
- provide({ context: socketProxyContext }),
245
- property({ attribute: false, type: Object })
246
- ], DictationRoot.prototype, "socketProxy", void 0);
247
27
  __decorate([
248
28
  provide({ context: dictationConfigContext }),
249
29
  property({ attribute: false, type: Object })
250
30
  ], DictationRoot.prototype, "dictationConfig", void 0);
251
- __decorate([
252
- provide({ context: languagesContext }),
253
- state()
254
- ], DictationRoot.prototype, "_languages", void 0);
255
- __decorate([
256
- property({
257
- converter: commaSeparatedConverter,
258
- type: Array,
259
- })
260
- ], DictationRoot.prototype, "languages", null);
261
- __decorate([
262
- provide({ context: devicesContext }),
263
- state()
264
- ], DictationRoot.prototype, "_devices", void 0);
265
- __decorate([
266
- property({ attribute: false, type: Array })
267
- ], DictationRoot.prototype, "devices", null);
268
- __decorate([
269
- provide({ context: selectedDeviceContext }),
270
- property({ attribute: false, type: Object })
271
- ], DictationRoot.prototype, "selectedDevice", void 0);
272
31
  __decorate([
273
32
  provide({ context: debugDisplayAudioContext }),
274
33
  property({ attribute: "debug-display-audio", type: Boolean })
275
34
  ], DictationRoot.prototype, "debug_displayAudio", void 0);
276
- __decorate([
277
- provide({ context: pushToTalkKeybindingContext }),
278
- property({ type: String })
279
- ], DictationRoot.prototype, "pushToTalkKeybinding", void 0);
280
- __decorate([
281
- provide({ context: toggleToTalkKeybindingContext }),
282
- property({ type: String })
283
- ], DictationRoot.prototype, "toggleToTalkKeybinding", void 0);
284
- __decorate([
285
- property({ type: Boolean })
286
- ], DictationRoot.prototype, "noWrapper", void 0);
287
35
  DictationRoot = __decorate([
288
36
  customElement("dictation-root")
289
37
  ], DictationRoot);
@@ -1 +1 @@
1
- {"version":3,"file":"dictation-context.js","sourceRoot":"","sources":["../../src/contexts/dictation-context.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Corti, CortiAuth } from \"@corti/sdk\";\nimport { type ContextEvent, createContext, provide } from \"@lit/context\";\nimport { type CSSResultGroup, html, LitElement } from \"lit\";\nimport { customElement, property, state } from \"lit/decorators.js\";\nimport { DevicesController } from \"../controllers/devices-controller.js\";\nimport { LanguagesController } from \"../controllers/languages-controller.js\";\nimport ComponentStyles from \"../styles/component-styles.js\";\nimport type { ProxyOptions, RecordingState } from \"../types.js\";\nimport { getInitialToken } from \"../utils/auth.js\";\nimport { commaSeparatedConverter } from \"../utils/converters.js\";\nimport {\n errorEvent,\n type KeybindingChangedEventDetail,\n keybindingChangedEvent,\n} from \"../utils/events.js\";\nimport { decodeToken } from \"../utils/token.js\";\n\nexport const regionContext = createContext<string | undefined>(\n Symbol(\"region\"),\n);\nexport const tenantNameContext = createContext<string | undefined>(\n Symbol(\"tenantName\"),\n);\nexport const languagesContext = createContext<\n Corti.TranscribeSupportedLanguage[] | undefined\n>(Symbol(\"languages\"));\nexport const devicesContext = createContext<MediaDeviceInfo[] | undefined>(\n Symbol(\"devices\"),\n);\nexport const selectedDeviceContext = createContext<MediaDeviceInfo | undefined>(\n Symbol(\"selectedDevice\"),\n);\nexport const recordingStateContext = createContext<RecordingState>(\n Symbol(\"recordingState\"),\n);\nexport const accessTokenContext = createContext<string | undefined>(\n Symbol(\"accessToken\"),\n);\nexport const dictationConfigContext = createContext<\n Corti.TranscribeConfig | undefined\n>(Symbol(\"dictationConfig\"));\nexport const authConfigContext = createContext<\n CortiAuth.AuthTokenDerivable | undefined\n>(Symbol(\"authConfig\"));\nexport const socketUrlContext = createContext<string | undefined>(\n Symbol(\"socketUrl\"),\n);\nexport const socketProxyContext = createContext<ProxyOptions | undefined>(\n Symbol(\"socketProxy\"),\n);\nexport const debugDisplayAudioContext = createContext<boolean | undefined>(\n Symbol(\"debugDisplayAudio\"),\n);\nexport const pushToTalkKeybindingContext = createContext<\n string | null | undefined\n>(Symbol(\"pushToTalkKeybinding\"));\nexport const toggleToTalkKeybindingContext = createContext<\n string | null | undefined\n>(Symbol(\"toggleToTalkKeybinding\"));\n\n@customElement(\"dictation-root\")\nexport class DictationRoot extends LitElement {\n // ─────────────────────────────────────────────────────────────────────────────\n // Context state\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: regionContext })\n @state()\n region?: string;\n\n @provide({ context: tenantNameContext })\n @state()\n tenantName?: string;\n\n @provide({ context: recordingStateContext })\n @state()\n recordingState: RecordingState = \"stopped\";\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: accessTokenContext })\n @state()\n _accessToken?: string;\n\n @property({ type: String })\n set accessToken(token: string | undefined) {\n this.setAccessToken(token);\n }\n\n get accessToken(): string | undefined {\n return this._accessToken;\n }\n\n @provide({ context: authConfigContext })\n @state()\n _authConfig?: CortiAuth.AuthTokenDerivable;\n\n @property({ attribute: false, type: Object })\n set authConfig(config: CortiAuth.AuthTokenDerivable | undefined) {\n this.setAuthConfig(config);\n }\n\n get authConfig(): CortiAuth.AuthTokenDerivable | undefined {\n return this._authConfig;\n }\n\n @provide({ context: socketUrlContext })\n @property({ type: String })\n socketUrl?: string;\n\n @provide({ context: socketProxyContext })\n @property({ attribute: false, type: Object })\n socketProxy?: ProxyOptions;\n\n @provide({ context: dictationConfigContext })\n @property({ attribute: false, type: Object })\n dictationConfig?: Corti.TranscribeConfig;\n\n #languagesController = new LanguagesController(this);\n #devicesController = new DevicesController(this);\n\n @provide({ context: languagesContext })\n @state()\n _languages?: Corti.TranscribeSupportedLanguage[];\n\n @property({\n converter: commaSeparatedConverter,\n type: Array,\n })\n set languages(value: Corti.TranscribeSupportedLanguage[] | undefined) {\n this._languages = value;\n\n // Clear auto-loaded flag when languages are set via property\n if (value !== undefined) {\n this.#languagesController.clearAutoLoadedFlag();\n }\n }\n\n get languages(): Corti.TranscribeSupportedLanguage[] | undefined {\n return this._languages;\n }\n\n @provide({ context: devicesContext })\n @state()\n _devices?: MediaDeviceInfo[];\n\n @property({ attribute: false, type: Array })\n set devices(value: MediaDeviceInfo[] | undefined) {\n this._devices = value;\n\n // Clear auto-loaded flag when devices are set via property\n if (value !== undefined) {\n this.#devicesController.clearAutoLoadedFlag();\n }\n }\n\n get devices(): MediaDeviceInfo[] | undefined {\n return this._devices;\n }\n\n @provide({ context: selectedDeviceContext })\n @property({ attribute: false, type: Object })\n selectedDevice?: MediaDeviceInfo;\n\n @provide({ context: debugDisplayAudioContext })\n @property({ attribute: \"debug-display-audio\", type: Boolean })\n debug_displayAudio?: boolean;\n\n @provide({ context: pushToTalkKeybindingContext })\n @property({ type: String })\n pushToTalkKeybinding?: string | null;\n\n @provide({ context: toggleToTalkKeybindingContext })\n @property({ type: String })\n toggleToTalkKeybinding?: string | null;\n\n @property({ type: Boolean })\n noWrapper: boolean = false;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Static\n // ─────────────────────────────────────────────────────────────────────────────\n\n static styles: CSSResultGroup = [ComponentStyles];\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Lifecycle\n // ─────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n super();\n this.addEventListener(\"languages-changed\", this.#handleLanguageChanged);\n this.addEventListener(\n \"recording-devices-changed\",\n this.#handleDeviceChanged,\n );\n this.addEventListener(\n \"recording-state-changed\",\n this.#handleRecordingStateChanged,\n );\n this.addEventListener(\"context-request\", this.#handleContextRequest);\n this.addEventListener(\"keybinding-changed\", this.#handleKeybindingChanged);\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public methods\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Sets the access token and parses region/tenant from it.\n * @returns ServerConfig with environment, tenant, and accessToken\n * @deprecated Use 'accessToken' property instead.\n */\n public setAccessToken(token: string | undefined) {\n this._accessToken = token;\n this.region = undefined;\n this.tenantName = undefined;\n\n if (!token) {\n return { accessToken: token, environment: undefined, tenant: undefined };\n }\n\n try {\n const decoded = decodeToken(token);\n\n this.region = decoded?.environment;\n this.tenantName = decoded?.tenant;\n\n return {\n accessToken: token,\n environment: decoded?.environment,\n tenant: decoded?.tenant,\n };\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n return { accessToken: token, environment: undefined, tenant: undefined };\n }\n\n /**\n * Sets the auth config and parses region/tenant from the initial token.\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 if (!config) {\n return {\n accessToken: undefined,\n environment: undefined,\n tenant: undefined,\n };\n }\n\n try {\n const { accessToken } = await getInitialToken(config);\n\n return this.setAccessToken(accessToken);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n return {\n accessToken: undefined,\n environment: undefined,\n tenant: undefined,\n };\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Private event handlers\n // ─────────────────────────────────────────────────────────────────────────────\n\n #handleLanguageChanged = (e: Event) => {\n const event = e as CustomEvent;\n\n this.dictationConfig = {\n ...this.dictationConfig,\n primaryLanguage: event.detail.selectedLanguage,\n };\n };\n\n #handleDeviceChanged = (e: Event) => {\n const event = e as CustomEvent;\n\n this.selectedDevice = event.detail.selectedDevice;\n };\n\n #handleRecordingStateChanged = (e: Event) => {\n const event = e as CustomEvent;\n\n this.recordingState = event.detail.state;\n };\n\n #handleContextRequest = (e: ContextEvent<any>) => {\n if (e.context === languagesContext) {\n this.#languagesController.initialize();\n } else if (e.context === devicesContext) {\n this.#devicesController.initialize();\n } else if (\n e.contextTarget.tagName.toLowerCase() === \"dictation-keybinding-selector\"\n ) {\n if (\n e.context === pushToTalkKeybindingContext &&\n this.pushToTalkKeybinding === undefined\n ) {\n this.pushToTalkKeybinding = \"Space\";\n this.dispatchEvent(\n keybindingChangedEvent(\" \", \"Space\", \"Space\", \"push-to-talk\"),\n );\n }\n\n if (\n e.context === toggleToTalkKeybindingContext &&\n this.toggleToTalkKeybinding === undefined\n ) {\n this.toggleToTalkKeybinding = \"Enter\";\n this.dispatchEvent(\n keybindingChangedEvent(\"Enter\", \"Enter\", \"Enter\", \"toggle-to-talk\"),\n );\n }\n }\n };\n\n #handleKeybindingChanged = (e: Event) => {\n const event = e as CustomEvent<KeybindingChangedEventDetail>;\n\n const keybinding = event.detail.keybinding;\n\n if (event.detail.type === \"push-to-talk\") {\n this.pushToTalkKeybinding = keybinding;\n } else if (event.detail.type === \"toggle-to-talk\") {\n this.toggleToTalkKeybinding = keybinding;\n }\n };\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Render\n // ─────────────────────────────────────────────────────────────────────────────\n\n render() {\n if (this.noWrapper) {\n return html`<slot></slot>`;\n }\n\n return html`<div class=\"wrapper\">\n <slot></slot>\n </div>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-root\": DictationRoot;\n }\n}\n"]}
1
+ {"version":3,"file":"dictation-context.js","sourceRoot":"","sources":["../../src/contexts/dictation-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,CAAC,MAAM,sBAAsB,GAAG,aAAa,CAEjD,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,wBAAwB,GAAG,aAAa,CACnD,MAAM,CAAC,mBAAmB,CAAC,CAC5B,CAAC;AAEK,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,WAAW;IAa5C,gFAAgF;IAChF,YAAY;IACZ,gFAAgF;IAEhF;QACE,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,CAAQ,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAgB,CAAC;YAE/B,IAAI,CAAC,eAAe,GAAG;gBACrB,GAAG,IAAI,CAAC,eAAe;gBACvB,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI;aACvD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAtBC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDACJ;AAIzC;IAFC,OAAO,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;IAC9C,QAAQ,CAAC,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;yDACjC;AAXlB,aAAa;IADzB,aAAa,CAAC,gBAAgB,CAAC;GACnB,aAAa,CA6BzB","sourcesContent":["import type { Corti } from \"@corti/sdk\";\nimport { createContext, provide } from \"@lit/context\";\nimport { customElement, property } from \"lit/decorators.js\";\nimport { RootContext } from \"./root-context.js\";\n\nexport const dictationConfigContext = createContext<\n Corti.TranscribeConfig | undefined\n>(Symbol(\"dictationConfig\"));\nexport const debugDisplayAudioContext = createContext<boolean | undefined>(\n Symbol(\"debugDisplayAudio\"),\n);\n@customElement(\"dictation-root\")\nexport class DictationRoot extends RootContext {\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: dictationConfigContext })\n @property({ attribute: false, type: Object })\n dictationConfig?: Corti.TranscribeConfig;\n\n @provide({ context: debugDisplayAudioContext })\n @property({ attribute: \"debug-display-audio\", type: Boolean })\n debug_displayAudio?: boolean;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Lifecycle\n // ─────────────────────────────────────────────────────────────────────────────\n\n constructor() {\n super();\n\n this.addEventListener(\"languages-changed\", (e: Event) => {\n const event = e as CustomEvent;\n\n this.dictationConfig = {\n ...this.dictationConfig,\n primaryLanguage: event.detail.selectedLanguage ?? \"en\",\n };\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"dictation-root\": DictationRoot;\n }\n}\n"]}
@@ -0,0 +1,32 @@
1
+ import type { CortiAuth } from "@corti/sdk";
2
+ import type { LitElement } from "lit";
3
+ import type { Constructor } from "./types.js";
4
+ export declare const regionContext: {
5
+ __context__: string | undefined;
6
+ };
7
+ export declare const tenantNameContext: {
8
+ __context__: string | undefined;
9
+ };
10
+ export declare const accessTokenContext: {
11
+ __context__: string | undefined;
12
+ };
13
+ export declare const authConfigContext: {
14
+ __context__: CortiAuth.AuthTokenDerivable | undefined;
15
+ };
16
+ export declare class AuthContextInterface {
17
+ region?: string;
18
+ tenantName?: string;
19
+ accessToken?: string;
20
+ authConfig?: CortiAuth.AuthTokenDerivable | undefined;
21
+ setAccessToken(token: string | undefined): {
22
+ accessToken: string | undefined;
23
+ environment: string | undefined;
24
+ tenant: string | undefined;
25
+ };
26
+ setAuthConfig(config?: CortiAuth.AuthTokenDerivable): Promise<{
27
+ accessToken: string | undefined;
28
+ environment: string | undefined;
29
+ tenant: string | undefined;
30
+ }>;
31
+ }
32
+ export declare function AuthContextMixin<T extends Constructor<LitElement>>(superclass: T): Constructor<AuthContextInterface> & T;
@@ -0,0 +1,116 @@
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 { createContext, provide } from "@lit/context";
8
+ import { property, state } from "lit/decorators.js";
9
+ import { getInitialToken } from "../../utils/auth.js";
10
+ import { errorEvent } from "../../utils/events.js";
11
+ import { decodeToken } from "../../utils/token.js";
12
+ export const regionContext = createContext(Symbol("region"));
13
+ export const tenantNameContext = createContext(Symbol("tenantName"));
14
+ export const accessTokenContext = createContext(Symbol("accessToken"));
15
+ export const authConfigContext = createContext(Symbol("authConfig"));
16
+ export function AuthContextMixin(superclass) {
17
+ class AuthContextMixinClass extends superclass {
18
+ set accessToken(token) {
19
+ this.setAccessToken(token);
20
+ }
21
+ get accessToken() {
22
+ return this._accessToken;
23
+ }
24
+ set authConfig(config) {
25
+ this.setAuthConfig(config);
26
+ }
27
+ get authConfig() {
28
+ return this._authConfig;
29
+ }
30
+ // ─────────────────────────────────────────────────────────────────────────────
31
+ // Public methods
32
+ // ─────────────────────────────────────────────────────────────────────────────
33
+ /**
34
+ * Sets the access token and parses region/tenant from it.
35
+ * @returns ServerConfig with environment, tenant, and accessToken
36
+ * @deprecated Use 'accessToken' property instead.
37
+ */
38
+ setAccessToken(token) {
39
+ this._accessToken = token;
40
+ this.region = undefined;
41
+ this.tenantName = undefined;
42
+ if (!token) {
43
+ return {
44
+ accessToken: token,
45
+ environment: undefined,
46
+ tenant: undefined,
47
+ };
48
+ }
49
+ try {
50
+ const decoded = decodeToken(token);
51
+ this.region = decoded?.environment;
52
+ this.tenantName = decoded?.tenant;
53
+ return {
54
+ accessToken: token,
55
+ environment: decoded?.environment,
56
+ tenant: decoded?.tenant,
57
+ };
58
+ }
59
+ catch (error) {
60
+ this.dispatchEvent(errorEvent(error));
61
+ }
62
+ return { accessToken: token, environment: undefined, tenant: undefined };
63
+ }
64
+ /**
65
+ * Sets the auth config and parses region/tenant from the initial token.
66
+ * @returns Promise with ServerConfig containing environment, tenant, and accessToken
67
+ * @deprecated Use 'authConfig' property instead.
68
+ */
69
+ async setAuthConfig(config) {
70
+ this._authConfig = config;
71
+ if (!config) {
72
+ return {
73
+ accessToken: undefined,
74
+ environment: undefined,
75
+ tenant: undefined,
76
+ };
77
+ }
78
+ try {
79
+ const { accessToken } = await getInitialToken(config);
80
+ return this.setAccessToken(accessToken);
81
+ }
82
+ catch (error) {
83
+ this.dispatchEvent(errorEvent(error));
84
+ }
85
+ return {
86
+ accessToken: undefined,
87
+ environment: undefined,
88
+ tenant: undefined,
89
+ };
90
+ }
91
+ }
92
+ __decorate([
93
+ provide({ context: regionContext }),
94
+ state()
95
+ ], AuthContextMixinClass.prototype, "region", void 0);
96
+ __decorate([
97
+ provide({ context: tenantNameContext }),
98
+ state()
99
+ ], AuthContextMixinClass.prototype, "tenantName", void 0);
100
+ __decorate([
101
+ provide({ context: accessTokenContext }),
102
+ state()
103
+ ], AuthContextMixinClass.prototype, "_accessToken", void 0);
104
+ __decorate([
105
+ property({ type: String })
106
+ ], AuthContextMixinClass.prototype, "accessToken", null);
107
+ __decorate([
108
+ provide({ context: authConfigContext }),
109
+ state()
110
+ ], AuthContextMixinClass.prototype, "_authConfig", void 0);
111
+ __decorate([
112
+ property({ attribute: false, type: Object })
113
+ ], AuthContextMixinClass.prototype, "authConfig", null);
114
+ return AuthContextMixinClass;
115
+ }
116
+ //# sourceMappingURL=auth-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-context.js","sourceRoot":"","sources":["../../../src/contexts/mixins/auth-context.ts"],"names":[],"mappings":";;;;;;AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CACxC,MAAM,CAAC,QAAQ,CAAC,CACjB,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAC5C,MAAM,CAAC,YAAY,CAAC,CACrB,CAAC;AACF,MAAM,CAAC,MAAM,kBAAkB,GAAG,aAAa,CAC7C,MAAM,CAAC,aAAa,CAAC,CACtB,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAG,aAAa,CAE5C,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAmBxB,MAAM,UAAU,gBAAgB,CAC9B,UAAa;IAEb,MAAM,qBAAsB,SAAQ,UAAU;QAsB5C,IAAI,WAAW,CAAC,KAAyB;YACvC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,WAAW;YACb,OAAO,IAAI,CAAC,YAAY,CAAC;QAC3B,CAAC;QAOD,IAAI,UAAU,CAAC,MAAgD;YAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,UAAU;YACZ,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QAED,gFAAgF;QAChF,iBAAiB;QACjB,gFAAgF;QAEhF;;;;WAIG;QACI,cAAc,CAAC,KAAyB;YAC7C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAE5B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,OAAO;oBACL,WAAW,EAAE,KAAK;oBAClB,WAAW,EAAE,SAAS;oBACtB,MAAM,EAAE,SAAS;iBAClB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;gBAEnC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,WAAW,CAAC;gBACnC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,MAAM,CAAC;gBAElC,OAAO;oBACL,WAAW,EAAE,KAAK;oBAClB,WAAW,EAAE,OAAO,EAAE,WAAW;oBACjC,MAAM,EAAE,OAAO,EAAE,MAAM;iBACxB,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAC3E,CAAC;QAED;;;;WAIG;QACI,KAAK,CAAC,aAAa,CAAC,MAAqC;YAC9D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;YAE1B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACL,WAAW,EAAE,SAAS;oBACtB,WAAW,EAAE,SAAS;oBACtB,MAAM,EAAE,SAAS;iBAClB,CAAC;YACJ,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC;gBAEtD,OAAO,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,OAAO;gBACL,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,SAAS;gBACtB,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;KACF;IA1GC;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QACnC,KAAK,EAAE;yDACQ;IAIhB;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QACvC,KAAK,EAAE;6DACY;IAQpB;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QACxC,KAAK,EAAE;+DACc;IAGtB;QADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4DAG1B;IAQD;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QACvC,KAAK,EAAE;8DACmC;IAG3C;QADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2DAG5C;IA8EH,OAAO,qBAA8D,CAAC;AACxE,CAAC","sourcesContent":["import type { CortiAuth } from \"@corti/sdk\";\nimport { createContext, provide } from \"@lit/context\";\nimport type { LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { getInitialToken } from \"../../utils/auth.js\";\nimport { errorEvent } from \"../../utils/events.js\";\nimport { decodeToken } from \"../../utils/token.js\";\nimport type { Constructor } from \"./types.js\";\n\nexport const regionContext = createContext<string | undefined>(\n Symbol(\"region\"),\n);\nexport const tenantNameContext = createContext<string | undefined>(\n Symbol(\"tenantName\"),\n);\nexport const accessTokenContext = createContext<string | undefined>(\n Symbol(\"accessToken\"),\n);\nexport const authConfigContext = createContext<\n CortiAuth.AuthTokenDerivable | undefined\n>(Symbol(\"authConfig\"));\n\nexport declare class AuthContextInterface {\n region?: string;\n tenantName?: string;\n accessToken?: string;\n authConfig?: CortiAuth.AuthTokenDerivable | undefined;\n setAccessToken(token: string | undefined): {\n accessToken: string | undefined;\n environment: string | undefined;\n tenant: string | undefined;\n };\n setAuthConfig(config?: CortiAuth.AuthTokenDerivable): Promise<{\n accessToken: string | undefined;\n environment: string | undefined;\n tenant: string | undefined;\n }>;\n}\n\nexport function AuthContextMixin<T extends Constructor<LitElement>>(\n superclass: T,\n): Constructor<AuthContextInterface> & T {\n class AuthContextMixinClass extends superclass {\n // ─────────────────────────────────────────────────────────────────────────────\n // Context state\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: regionContext })\n @state()\n region?: string;\n\n @provide({ context: tenantNameContext })\n @state()\n tenantName?: string;\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Properties\n // ─────────────────────────────────────────────────────────────────────────────\n\n @provide({ context: accessTokenContext })\n @state()\n _accessToken?: string;\n\n @property({ type: String })\n set accessToken(token: string | undefined) {\n this.setAccessToken(token);\n }\n\n get accessToken(): string | undefined {\n return this._accessToken;\n }\n\n @provide({ context: authConfigContext })\n @state()\n _authConfig?: CortiAuth.AuthTokenDerivable;\n\n @property({ attribute: false, type: Object })\n set authConfig(config: CortiAuth.AuthTokenDerivable | undefined) {\n this.setAuthConfig(config);\n }\n\n get authConfig(): CortiAuth.AuthTokenDerivable | undefined {\n return this._authConfig;\n }\n\n // ─────────────────────────────────────────────────────────────────────────────\n // Public methods\n // ─────────────────────────────────────────────────────────────────────────────\n\n /**\n * Sets the access token and parses region/tenant from it.\n * @returns ServerConfig with environment, tenant, and accessToken\n * @deprecated Use 'accessToken' property instead.\n */\n public setAccessToken(token: string | undefined) {\n this._accessToken = token;\n this.region = undefined;\n this.tenantName = undefined;\n\n if (!token) {\n return {\n accessToken: token,\n environment: undefined,\n tenant: undefined,\n };\n }\n\n try {\n const decoded = decodeToken(token);\n\n this.region = decoded?.environment;\n this.tenantName = decoded?.tenant;\n\n return {\n accessToken: token,\n environment: decoded?.environment,\n tenant: decoded?.tenant,\n };\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n return { accessToken: token, environment: undefined, tenant: undefined };\n }\n\n /**\n * Sets the auth config and parses region/tenant from the initial token.\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 if (!config) {\n return {\n accessToken: undefined,\n environment: undefined,\n tenant: undefined,\n };\n }\n\n try {\n const { accessToken } = await getInitialToken(config);\n\n return this.setAccessToken(accessToken);\n } catch (error) {\n this.dispatchEvent(errorEvent(error));\n }\n\n return {\n accessToken: undefined,\n environment: undefined,\n tenant: undefined,\n };\n }\n }\n\n return AuthContextMixinClass as Constructor<AuthContextInterface> & T;\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import type { LitElement } from "lit";
2
+ import type { Constructor } from "./types.js";
3
+ export declare const devicesContext: {
4
+ __context__: MediaDeviceInfo[] | undefined;
5
+ };
6
+ export declare const selectedDeviceContext: {
7
+ __context__: MediaDeviceInfo | undefined;
8
+ };
9
+ export declare class DevicesContextInterface {
10
+ _devices?: MediaDeviceInfo[];
11
+ devices?: MediaDeviceInfo[];
12
+ selectedDevice?: MediaDeviceInfo;
13
+ }
14
+ export declare function DevicesContextMixin<T extends Constructor<LitElement>>(superclass: T): Constructor<DevicesContextInterface> & T;
@@ -0,0 +1,58 @@
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
+ import { createContext, provide } from "@lit/context";
13
+ import { property, state } from "lit/decorators.js";
14
+ import { DevicesController } from "../../controllers/devices-controller.js";
15
+ export const devicesContext = createContext(Symbol("devices"));
16
+ export const selectedDeviceContext = createContext(Symbol("selectedDevice"));
17
+ export function DevicesContextMixin(superclass) {
18
+ var _DevicesContextMixinClass_devicesController;
19
+ class DevicesContextMixinClass extends superclass {
20
+ set devices(value) {
21
+ this._devices = value;
22
+ // Clear auto-loaded flag when devices are set via property
23
+ if (value !== undefined) {
24
+ __classPrivateFieldGet(this, _DevicesContextMixinClass_devicesController, "f").clearAutoLoadedFlag();
25
+ }
26
+ }
27
+ get devices() {
28
+ return this._devices;
29
+ }
30
+ constructor(...args) {
31
+ super(...args);
32
+ _DevicesContextMixinClass_devicesController.set(this, new DevicesController(this));
33
+ this.addEventListener("recording-devices-changed", (e) => {
34
+ const event = e;
35
+ this.selectedDevice = event.detail.selectedDevice;
36
+ });
37
+ this.addEventListener("context-request", (ev) => {
38
+ if (ev.context === devicesContext) {
39
+ __classPrivateFieldGet(this, _DevicesContextMixinClass_devicesController, "f").initialize();
40
+ }
41
+ });
42
+ }
43
+ }
44
+ _DevicesContextMixinClass_devicesController = new WeakMap();
45
+ __decorate([
46
+ provide({ context: devicesContext }),
47
+ state()
48
+ ], DevicesContextMixinClass.prototype, "_devices", void 0);
49
+ __decorate([
50
+ property({ attribute: false, type: Array })
51
+ ], DevicesContextMixinClass.prototype, "devices", null);
52
+ __decorate([
53
+ provide({ context: selectedDeviceContext }),
54
+ property({ attribute: false, type: Object })
55
+ ], DevicesContextMixinClass.prototype, "selectedDevice", void 0);
56
+ return DevicesContextMixinClass;
57
+ }
58
+ //# sourceMappingURL=devices-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"devices-context.js","sourceRoot":"","sources":["../../../src/contexts/mixins/devices-context.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAqB,aAAa,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CACzC,MAAM,CAAC,SAAS,CAAC,CAClB,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,aAAa,CAChD,MAAM,CAAC,gBAAgB,CAAC,CACzB,CAAC;AAQF,MAAM,UAAU,mBAAmB,CACjC,UAAa;;IAEb,MAAM,wBAAyB,SAAQ,UAAU;QAQ/C,IAAI,OAAO,CAAC,KAAoC;YAC9C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YAEtB,2DAA2D;YAC3D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,uBAAA,IAAI,mDAAmB,CAAC,mBAAmB,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;QAED,IAAI,OAAO;YACT,OAAO,IAAI,CAAC,QAAQ,CAAC;QACvB,CAAC;QAMD,YAAY,GAAG,IAAW;YACxB,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAzBjB,sDAAqB,IAAI,iBAAiB,CAAC,IAAI,CAAC,EAAC;YA2B/C,IAAI,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,CAAC,CAAQ,EAAE,EAAE;gBAC9D,MAAM,KAAK,GAAG,CAAgB,CAAC;gBAE/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;YACpD,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,EAAqB,EAAE,EAAE;gBACjE,IAAI,EAAE,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;oBAClC,uBAAA,IAAI,mDAAmB,CAAC,UAAU,EAAE,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;KACF;;IAlCC;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;QACpC,KAAK,EAAE;8DACqB;IAG7B;QADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;2DAQ3C;IAQD;QAFC,OAAO,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,CAAC;QAC3C,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oEACZ;IAkBnC,OAAO,wBAAoE,CAAC;AAC9E,CAAC","sourcesContent":["import { type ContextEvent, createContext, provide } from \"@lit/context\";\nimport type { LitElement } from \"lit\";\nimport { property, state } from \"lit/decorators.js\";\nimport { DevicesController } from \"../../controllers/devices-controller.js\";\nimport type { Constructor } from \"./types.js\";\n\nexport const devicesContext = createContext<MediaDeviceInfo[] | undefined>(\n Symbol(\"devices\"),\n);\n\nexport const selectedDeviceContext = createContext<MediaDeviceInfo | undefined>(\n Symbol(\"selectedDevice\"),\n);\n\nexport declare class DevicesContextInterface {\n _devices?: MediaDeviceInfo[];\n devices?: MediaDeviceInfo[];\n selectedDevice?: MediaDeviceInfo;\n}\n\nexport function DevicesContextMixin<T extends Constructor<LitElement>>(\n superclass: T,\n): Constructor<DevicesContextInterface> & T {\n class DevicesContextMixinClass extends superclass {\n #devicesController = new DevicesController(this);\n\n @provide({ context: devicesContext })\n @state()\n _devices?: MediaDeviceInfo[];\n\n @property({ attribute: false, type: Array })\n set devices(value: MediaDeviceInfo[] | undefined) {\n this._devices = value;\n\n // Clear auto-loaded flag when devices are set via property\n if (value !== undefined) {\n this.#devicesController.clearAutoLoadedFlag();\n }\n }\n\n get devices(): MediaDeviceInfo[] | undefined {\n return this._devices;\n }\n\n @provide({ context: selectedDeviceContext })\n @property({ attribute: false, type: Object })\n selectedDevice?: MediaDeviceInfo;\n\n constructor(...args: any[]) {\n super(...args);\n\n this.addEventListener(\"recording-devices-changed\", (e: Event) => {\n const event = e as CustomEvent;\n\n this.selectedDevice = event.detail.selectedDevice;\n });\n this.addEventListener(\"context-request\", (ev: ContextEvent<any>) => {\n if (ev.context === devicesContext) {\n this.#devicesController.initialize();\n }\n });\n }\n }\n\n return DevicesContextMixinClass as Constructor<DevicesContextInterface> & T;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { LitElement } from "lit";
2
+ import type { Constructor } from "./types.js";
3
+ export declare const pushToTalkKeybindingContext: {
4
+ __context__: string | null | undefined;
5
+ };
6
+ export declare const toggleToTalkKeybindingContext: {
7
+ __context__: string | null | undefined;
8
+ };
9
+ export declare class KeybindingsContextInterface {
10
+ pushToTalkKeybinding?: string | null;
11
+ toggleToTalkKeybinding?: string | null;
12
+ }
13
+ export declare function KeybindingsContextMixin<T extends Constructor<LitElement>>(superclass: T): Constructor<KeybindingsContextInterface> & T;