obi-sdk 0.1.10 → 0.2.1

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.
@@ -1,5 +1,6 @@
1
- import { i, n, a as i$1, S as SDKState, x } from "./chunks/obi-widget-ff350828.js";
2
- import { c, C, f, g, D, N, d, b, e } from "./chunks/obi-widget-ff350828.js";
1
+ import { i, n, a as i$1, x } from "./chunks/obi-widget-0970cbbe.js";
2
+ import { A, C, c, d, D, N, b, O, S } from "./chunks/obi-widget-0970cbbe.js";
3
+ import { S as SDKState } from "./chunks/index-2d0b05af.js";
3
4
  var __defProp$1 = Object.defineProperty;
4
5
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
5
6
  var __decorateClass$1 = (decorators, target, key, kind) => {
@@ -226,27 +227,27 @@ const controlPanel = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.define
226
227
  function defineCustomElements() {
227
228
  Promise.resolve().then(() => statusWidget);
228
229
  Promise.resolve().then(() => controlPanel);
229
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.p);
230
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.m);
231
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.o);
232
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.h);
233
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.j);
234
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.s);
235
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.k);
236
- import("./chunks/obi-widget-ff350828.js").then((n2) => n2.l);
230
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.o);
231
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.j);
232
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.k);
233
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.e);
234
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.f);
235
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.s);
236
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.g);
237
+ import("./chunks/obi-widget-0970cbbe.js").then((n2) => n2.h);
237
238
  }
238
239
  export {
239
- c as AudioEqualizer,
240
+ A as AudioEqualizer,
240
241
  C as Course,
241
- f as CourseList,
242
- g as CourseModal,
242
+ c as CourseList,
243
+ d as CourseModal,
243
244
  D as DotLoader,
244
245
  N as NavIcon,
245
- d as NavigationBar,
246
+ b as NavigationBar,
246
247
  ObiControlPanel,
247
248
  ObiStatusWidget,
248
- b as ObiWidget,
249
- e as SearchingLoader,
249
+ O as ObiWidget,
250
+ S as SearchingLoader,
250
251
  defineCustomElements
251
252
  };
252
253
  //# sourceMappingURL=ui.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sources":["../../src/ui/components/status-widget.ts","../../src/ui/components/control-panel.ts","../../src/ui/components/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nimport { SDKState } from \"../../core/types\"\n\nexport class ObiStatusWidget extends LitElement {\n @property({ type: String })\n state: SDKState = SDKState.READY\n\n static styles = css`\n :host {\n display: inline-block;\n font-family: Arial, sans-serif;\n }\n\n .status-container {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-radius: 16px;\n background-color: #f3f4f6;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n .status-indicator {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 8px;\n }\n\n .ready {\n background-color: #10b981;\n }\n\n .active {\n background-color: #3b82f6;\n }\n\n .error {\n background-color: #ef4444;\n }\n\n .status-text {\n font-size: 14px;\n font-weight: 500;\n color: #1f2937;\n }\n `\n\n render() {\n return html`\n <div class=\"status-container\">\n <div class=\"status-indicator ${this.state}\"></div>\n <div class=\"status-text\">${this.getStatusText()}</div>\n </div>\n `\n }\n\n private getStatusText(): string {\n switch (this.state) {\n case SDKState.READY:\n return \"Ready\"\n case SDKState.ERROR:\n return \"Error\"\n default:\n return \"Unknown\"\n }\n }\n}\n\nif (!customElements.get(\"obi-status-widget\")) {\n customElements.define(\"obi-status-widget\", ObiStatusWidget)\n}\n","import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nimport { SDKState } from \"../../core/types\"\n\nexport class ObiControlPanel extends LitElement {\n @property({ type: String })\n state: SDKState = SDKState.READY\n\n @property({ type: Boolean })\n voiceEnabled: boolean = true\n\n @property({ type: Boolean })\n screenEnabled: boolean = true\n\n static styles = css`\n :host {\n display: block;\n font-family: Arial, sans-serif;\n --obi-primary: #3b82f6;\n --obi-danger: #ef4444;\n --obi-gray: #6b7280;\n }\n\n .control-container {\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-radius: 8px;\n background-color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n max-width: 300px;\n }\n\n .control-header {\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n }\n\n .control-buttons {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n button {\n padding: 8px 12px;\n border: none;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition:\n background-color 0.2s,\n opacity 0.2s;\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-voice {\n background-color: var(--obi-primary);\n color: white;\n }\n\n .btn-screen {\n background-color: var(--obi-primary);\n color: white;\n }\n\n .btn-stop {\n background-color: var(--obi-danger);\n color: white;\n }\n `\n\n render() {\n const isActive = this.state === SDKState.AGENT_SPEAKING\n const isReady = this.state === SDKState.READY\n\n return html`\n <div class=\"control-container\">\n <div class=\"control-header\">Obi Controls</div>\n <div class=\"control-buttons\">\n <button\n class=\"btn-voice\"\n ?disabled=${!isReady || !this.voiceEnabled}\n @click=${this.handleVoiceClick}\n >\n Start Voice\n </button>\n\n <button\n class=\"btn-screen\"\n ?disabled=${!isReady || !this.screenEnabled}\n @click=${this.handleScreenClick}\n >\n Capture Screen\n </button>\n\n <button class=\"btn-stop\" ?disabled=${!isActive} @click=${this.handleStopClick}>\n Stop\n </button>\n </div>\n </div>\n `\n }\n\n private handleVoiceClick() {\n this.dispatchEvent(new CustomEvent(\"voice-start\"))\n }\n\n private handleScreenClick() {\n this.dispatchEvent(new CustomEvent(\"screen-start\"))\n }\n\n private handleStopClick() {\n this.dispatchEvent(new CustomEvent(\"stop\"))\n }\n}\n\nif (!customElements.get(\"obi-control-panel\")) {\n customElements.define(\"obi-control-panel\", ObiControlPanel)\n}\n","export * from \"./status-widget\"\nexport * from \"./control-panel\"\nexport * from \"./obi-widget\"\nexport * from \"./audio-equalizer\"\nexport * from \"./dot-loader\"\nexport * from \"./nav-icon\"\nexport * from \"./navigation-bar\"\nexport * from \"./searching-loader\"\nexport * from \"./courses/courses\"\nexport * from \"./courses/course-modal\"\n\n// Function to define all custom elements at once for development\nexport function defineCustomElements() {\n // Import all components to ensure they're registered\n // This is primarily useful for development\n import(\"./status-widget\")\n import(\"./control-panel\")\n import(\"./obi-widget\")\n import(\"./audio-equalizer\")\n import(\"./dot-loader\")\n import(\"./nav-icon\")\n import(\"./navigation-bar\")\n import(\"./searching-loader\")\n import(\"./courses/courses\")\n import(\"./courses/course-modal\")\n}\n"],"names":["LitElement","html","css","__decorateClass","property","n"],"mappings":"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"}
1
+ {"version":3,"file":"ui.js","sources":["../../src/ui/components/status-widget.ts","../../src/ui/components/control-panel.ts","../../src/ui/components/index.ts"],"sourcesContent":["import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nimport { SDKState } from \"../../core/types\"\n\nexport class ObiStatusWidget extends LitElement {\n @property({ type: String })\n state: SDKState = SDKState.READY\n\n static styles = css`\n :host {\n display: inline-block;\n font-family: Arial, sans-serif;\n }\n\n .status-container {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-radius: 16px;\n background-color: #f3f4f6;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n }\n\n .status-indicator {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n margin-right: 8px;\n }\n\n .ready {\n background-color: #10b981;\n }\n\n .active {\n background-color: #3b82f6;\n }\n\n .error {\n background-color: #ef4444;\n }\n\n .status-text {\n font-size: 14px;\n font-weight: 500;\n color: #1f2937;\n }\n `\n\n render() {\n return html`\n <div class=\"status-container\">\n <div class=\"status-indicator ${this.state}\"></div>\n <div class=\"status-text\">${this.getStatusText()}</div>\n </div>\n `\n }\n\n private getStatusText(): string {\n switch (this.state) {\n case SDKState.READY:\n return \"Ready\"\n case SDKState.ERROR:\n return \"Error\"\n default:\n return \"Unknown\"\n }\n }\n}\n\nif (!customElements.get(\"obi-status-widget\")) {\n customElements.define(\"obi-status-widget\", ObiStatusWidget)\n}\n","import { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\n\nimport { SDKState } from \"../../core/types\"\n\nexport class ObiControlPanel extends LitElement {\n @property({ type: String })\n state: SDKState = SDKState.READY\n\n @property({ type: Boolean })\n voiceEnabled: boolean = true\n\n @property({ type: Boolean })\n screenEnabled: boolean = true\n\n static styles = css`\n :host {\n display: block;\n font-family: Arial, sans-serif;\n --obi-primary: #3b82f6;\n --obi-danger: #ef4444;\n --obi-gray: #6b7280;\n }\n\n .control-container {\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-radius: 8px;\n background-color: #ffffff;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n max-width: 300px;\n }\n\n .control-header {\n margin-bottom: 16px;\n font-size: 16px;\n font-weight: 600;\n color: #111827;\n }\n\n .control-buttons {\n display: flex;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n button {\n padding: 8px 12px;\n border: none;\n border-radius: 4px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition:\n background-color 0.2s,\n opacity 0.2s;\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n .btn-voice {\n background-color: var(--obi-primary);\n color: white;\n }\n\n .btn-screen {\n background-color: var(--obi-primary);\n color: white;\n }\n\n .btn-stop {\n background-color: var(--obi-danger);\n color: white;\n }\n `\n\n render() {\n const isActive = this.state === SDKState.AGENT_SPEAKING\n const isReady = this.state === SDKState.READY\n\n return html`\n <div class=\"control-container\">\n <div class=\"control-header\">Obi Controls</div>\n <div class=\"control-buttons\">\n <button\n class=\"btn-voice\"\n ?disabled=${!isReady || !this.voiceEnabled}\n @click=${this.handleVoiceClick}\n >\n Start Voice\n </button>\n\n <button\n class=\"btn-screen\"\n ?disabled=${!isReady || !this.screenEnabled}\n @click=${this.handleScreenClick}\n >\n Capture Screen\n </button>\n\n <button class=\"btn-stop\" ?disabled=${!isActive} @click=${this.handleStopClick}>\n Stop\n </button>\n </div>\n </div>\n `\n }\n\n private handleVoiceClick() {\n this.dispatchEvent(new CustomEvent(\"voice-start\"))\n }\n\n private handleScreenClick() {\n this.dispatchEvent(new CustomEvent(\"screen-start\"))\n }\n\n private handleStopClick() {\n this.dispatchEvent(new CustomEvent(\"stop\"))\n }\n}\n\nif (!customElements.get(\"obi-control-panel\")) {\n customElements.define(\"obi-control-panel\", ObiControlPanel)\n}\n","export * from \"./status-widget\"\nexport * from \"./control-panel\"\nexport * from \"./obi-widget\"\nexport * from \"./audio-equalizer\"\nexport * from \"./dot-loader\"\nexport * from \"./nav-icon\"\nexport * from \"./navigation-bar\"\nexport * from \"./searching-loader\"\nexport * from \"./courses/courses\"\nexport * from \"./courses/course-modal\"\n\n// Function to define all custom elements at once for development\nexport function defineCustomElements() {\n // Import all components to ensure they're registered\n // This is primarily useful for development\n import(\"./status-widget\")\n import(\"./control-panel\")\n import(\"./obi-widget\")\n import(\"./audio-equalizer\")\n import(\"./dot-loader\")\n import(\"./nav-icon\")\n import(\"./navigation-bar\")\n import(\"./searching-loader\")\n import(\"./courses/courses\")\n import(\"./courses/course-modal\")\n}\n"],"names":["LitElement","html","css","__decorateClass","property","n"],"mappings":"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"}