obi-sdk 0.2.1 → 0.3.2

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 (42) hide show
  1. package/dist/core/constants.d.ts +1 -0
  2. package/dist/core/index.d.ts +3 -0
  3. package/dist/core/init.d.ts +1 -0
  4. package/dist/core/types.d.ts +46 -0
  5. package/dist/empty-loader.d.ts +5 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/loader.d.ts +29 -0
  8. package/dist/modular/chunks/obi-widget-f072b7c6.js +11147 -0
  9. package/dist/modular/chunks/obi-widget-f072b7c6.js.map +1 -0
  10. package/dist/modular/chunks/{index-2d0b05af.js → types-8887aa66.js} +449 -4756
  11. package/dist/modular/chunks/types-8887aa66.js.map +1 -0
  12. package/dist/modular/core.js +4081 -4
  13. package/dist/modular/core.js.map +1 -1
  14. package/dist/modular/index.js +26 -5
  15. package/dist/modular/index.js.map +1 -1
  16. package/dist/modular/ui.js +11 -11
  17. package/dist/modular/ui.js.map +1 -1
  18. package/dist/obi-sdk.es.js +13633 -11080
  19. package/dist/obi-sdk.standalone.iife.js +53 -49
  20. package/dist/obi-sdk.standalone.iife.js.map +1 -1
  21. package/dist/obi-sdk.umd.js +106 -94
  22. package/dist/ui/components/audio-equalizer.d.ts +20 -0
  23. package/dist/ui/components/control-panel.d.ts +12 -0
  24. package/dist/ui/components/courses/course-modal.d.ts +18 -0
  25. package/dist/ui/components/courses/courses.d.ts +26 -0
  26. package/dist/ui/components/courses/index.d.ts +1 -0
  27. package/dist/ui/components/dot-loader.d.ts +20 -0
  28. package/dist/ui/components/icons.d.ts +6 -0
  29. package/dist/ui/components/index.d.ts +11 -0
  30. package/dist/ui/components/nav-icon.d.ts +10 -0
  31. package/dist/ui/components/navigation-bar.d.ts +19 -0
  32. package/dist/ui/components/obi-widget.d.ts +50 -0
  33. package/dist/ui/components/searching-loader.d.ts +5 -0
  34. package/dist/ui/components/status-widget.d.ts +8 -0
  35. package/dist/ui/index.d.ts +1 -0
  36. package/dist/utils/index.d.ts +1 -0
  37. package/dist/utils/storage.d.ts +45 -0
  38. package/package.json +21 -19
  39. package/dist/modular/chunks/index-2d0b05af.js.map +0 -1
  40. package/dist/modular/chunks/obi-widget-0970cbbe.js +0 -2221
  41. package/dist/modular/chunks/obi-widget-0970cbbe.js.map +0 -1
  42. package/dist/obi-loader.js +0 -8
@@ -1,8 +1,23 @@
1
- import { O as ObiWidget } from "./chunks/obi-widget-0970cbbe.js";
2
- import { E, S } from "./chunks/index-2d0b05af.js";
1
+ import { O as ObiWidget } from "./chunks/obi-widget-f072b7c6.js";
2
+ import "./chunks/types-8887aa66.js";
3
3
  if (!customElements.get("obi-widget")) {
4
4
  customElements.define("obi-widget", ObiWidget);
5
5
  }
6
+ function mountSDK() {
7
+ const w = window;
8
+ if (typeof w.ObiSDK === "function" || typeof w.ObiSDK === "object") {
9
+ return;
10
+ }
11
+ w.ObiSDK = function(command, config) {
12
+ if (command === "update" && config) {
13
+ w.obiWidgetConfig = {
14
+ ...w.obiWidgetConfig,
15
+ ...config
16
+ };
17
+ }
18
+ };
19
+ w.ObiSDK.q = [];
20
+ }
6
21
  function mountWidget() {
7
22
  if (!document.querySelector("obi-widget")) {
8
23
  const widget = document.createElement("obi-widget");
@@ -25,14 +40,20 @@ function processQueue() {
25
40
  w.ObiSDK.q = [];
26
41
  }
27
42
  }
43
+ function loadFonts() {
44
+ const link = document.createElement("link");
45
+ link.href = "https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Syne:wght@400..800&display=swap";
46
+ link.rel = "stylesheet";
47
+ document.head.appendChild(link);
48
+ }
28
49
  function initializeObiWidget() {
50
+ loadFonts();
51
+ mountSDK();
29
52
  mountWidget();
30
53
  processQueue();
31
54
  }
32
55
  initializeObiWidget();
33
56
  export {
34
- E as EventType,
35
- ObiWidget,
36
- S as SDKState
57
+ ObiWidget
37
58
  };
38
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/core/init.ts"],"sourcesContent":["import { ObiWidget } from \"../ui/components/obi-widget\"\n\nif (!customElements.get(\"obi-widget\")) {\n customElements.define(\"obi-widget\", ObiWidget)\n}\n\n// Mount the widget if not already present\nfunction mountWidget() {\n if (!document.querySelector(\"obi-widget\")) {\n const widget = document.createElement(\"obi-widget\")\n document.body.appendChild(widget)\n console.log(\"Obi Widget mounted\")\n }\n}\n\n// Optionally process a queue if you want to support it\nfunction processQueue() {\n const w = window as any\n if (w.ObiSDK && Array.isArray(w.ObiSDK.q)) {\n // Process each command in the queue\n w.ObiSDK.q.forEach((args: any[]) => {\n const [command, config] = args\n if (command === \"update\" && config) {\n w.obiWidgetConfig = {\n ...w.obiWidgetConfig,\n ...config,\n }\n }\n })\n w.ObiSDK.q = []\n }\n}\n\n// Main init\nexport function initializeObiWidget() {\n mountWidget()\n processQueue()\n}\n\n// Auto-initialize\ninitializeObiWidget()\n"],"names":[],"mappings":";;AAEA,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG;AACtB,iBAAA,OAAO,cAAc,SAAS;AAC/C;AAGA,SAAS,cAAc;AACrB,MAAI,CAAC,SAAS,cAAc,YAAY,GAAG;AACnC,UAAA,SAAS,SAAS,cAAc,YAAY;AACzC,aAAA,KAAK,YAAY,MAAM;AAChC,YAAQ,IAAI,oBAAoB;AAAA,EAClC;AACF;AAGA,SAAS,eAAe;AACtB,QAAM,IAAI;AACV,MAAI,EAAE,UAAU,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG;AAEzC,MAAE,OAAO,EAAE,QAAQ,CAAC,SAAgB;AAC5B,YAAA,CAAC,SAAS,MAAM,IAAI;AACtB,UAAA,YAAY,YAAY,QAAQ;AAClC,UAAE,kBAAkB;AAAA,UAClB,GAAG,EAAE;AAAA,UACL,GAAG;AAAA,QAAA;AAAA,MAEP;AAAA,IAAA,CACD;AACC,MAAA,OAAO,IAAI;EACf;AACF;AAGO,SAAS,sBAAsB;AACxB;AACC;AACf;AAGA,oBAAoB;"}
1
+ {"version":3,"file":"index.js","sources":["../../src/core/init.ts"],"sourcesContent":["import { ObiWidget } from \"../ui/components/obi-widget\"\n\nif (!customElements.get(\"obi-widget\")) {\n customElements.define(\"obi-widget\", ObiWidget)\n}\n\nfunction mountSDK(): void {\n const w = window as any\n if (typeof w.ObiSDK === \"function\" || typeof w.ObiSDK === \"object\") {\n return\n }\n\n // Initialize the SDK\n w.ObiSDK = function (command: string, config?: any) {\n if (command === \"update\" && config) {\n w.obiWidgetConfig = {\n ...w.obiWidgetConfig,\n ...config,\n }\n }\n }\n w.ObiSDK.q = []\n}\n\n// Mount the widget if not already present\nfunction mountWidget() {\n if (!document.querySelector(\"obi-widget\")) {\n const widget = document.createElement(\"obi-widget\")\n document.body.appendChild(widget)\n console.log(\"Obi Widget mounted\")\n }\n}\n\n// Optionally process a queue if you want to support it\nfunction processQueue() {\n const w = window as any\n if (w.ObiSDK && Array.isArray(w.ObiSDK.q)) {\n // Process each command in the queue\n w.ObiSDK.q.forEach((args: any[]) => {\n const [command, config] = args\n if (command === \"update\" && config) {\n w.obiWidgetConfig = {\n ...w.obiWidgetConfig,\n ...config,\n }\n }\n })\n w.ObiSDK.q = []\n }\n}\n\nfunction loadFonts() {\n const link = document.createElement(\"link\")\n link.href =\n \"https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&family=Syne:wght@400..800&display=swap\"\n link.rel = \"stylesheet\"\n document.head.appendChild(link)\n}\n\n// Main init\nexport function initializeObiWidget() {\n loadFonts()\n mountSDK()\n mountWidget()\n processQueue()\n}\n\n// Auto-initialize\ninitializeObiWidget()\n"],"names":[],"mappings":";;AAEA,IAAI,CAAC,eAAe,IAAI,YAAY,GAAG;AACtB,iBAAA,OAAO,cAAc,SAAS;AAC/C;AAEA,SAAS,WAAiB;AACxB,QAAM,IAAI;AACV,MAAI,OAAO,EAAE,WAAW,cAAc,OAAO,EAAE,WAAW,UAAU;AAClE;AAAA,EACF;AAGE,IAAA,SAAS,SAAU,SAAiB,QAAc;AAC9C,QAAA,YAAY,YAAY,QAAQ;AAClC,QAAE,kBAAkB;AAAA,QAClB,GAAG,EAAE;AAAA,QACL,GAAG;AAAA,MAAA;AAAA,IAEP;AAAA,EAAA;AAEA,IAAA,OAAO,IAAI;AACf;AAGA,SAAS,cAAc;AACrB,MAAI,CAAC,SAAS,cAAc,YAAY,GAAG;AACnC,UAAA,SAAS,SAAS,cAAc,YAAY;AACzC,aAAA,KAAK,YAAY,MAAM;AAChC,YAAQ,IAAI,oBAAoB;AAAA,EAClC;AACF;AAGA,SAAS,eAAe;AACtB,QAAM,IAAI;AACV,MAAI,EAAE,UAAU,MAAM,QAAQ,EAAE,OAAO,CAAC,GAAG;AAEzC,MAAE,OAAO,EAAE,QAAQ,CAAC,SAAgB;AAC5B,YAAA,CAAC,SAAS,MAAM,IAAI;AACtB,UAAA,YAAY,YAAY,QAAQ;AAClC,UAAE,kBAAkB;AAAA,UAClB,GAAG,EAAE;AAAA,UACL,GAAG;AAAA,QAAA;AAAA,MAEP;AAAA,IAAA,CACD;AACC,MAAA,OAAO,IAAI;EACf;AACF;AAEA,SAAS,YAAY;AACb,QAAA,OAAO,SAAS,cAAc,MAAM;AAC1C,OAAK,OACH;AACF,OAAK,MAAM;AACF,WAAA,KAAK,YAAY,IAAI;AAChC;AAGO,SAAS,sBAAsB;AAC1B;AACD;AACG;AACC;AACf;AAGA,oBAAoB;"}
@@ -1,6 +1,6 @@
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";
1
+ import { S as SDKState } from "./chunks/types-8887aa66.js";
2
+ import { i, n, a as i$1, x } from "./chunks/obi-widget-f072b7c6.js";
3
+ import { A, C, c, d, D, N, b, O, S } from "./chunks/obi-widget-f072b7c6.js";
4
4
  var __defProp$1 = Object.defineProperty;
5
5
  var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
6
6
  var __decorateClass$1 = (decorators, target, key, kind) => {
@@ -227,14 +227,14 @@ const controlPanel = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.define
227
227
  function defineCustomElements() {
228
228
  Promise.resolve().then(() => statusWidget);
229
229
  Promise.resolve().then(() => controlPanel);
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);
230
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.o);
231
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.j);
232
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.k);
233
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.e);
234
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.f);
235
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.s);
236
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.g);
237
+ import("./chunks/obi-widget-f072b7c6.js").then((n2) => n2.h);
238
238
  }
239
239
  export {
240
240
  A as AudioEqualizer,
@@ -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 { SDKState } from \"@obi/obi-session\"\nimport { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\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 { SDKState } from \"@obi/obi-session\"\nimport { LitElement, html, css } from \"lit\"\nimport { property } from \"lit/decorators.js\"\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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"}