biel-search 0.0.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.
Files changed (136) hide show
  1. package/LICENSE +21 -0
  2. package/dist/biel-search/biel-search.css +1 -0
  3. package/dist/biel-search/biel-search.esm.js +2 -0
  4. package/dist/biel-search/biel-search.esm.js.map +1 -0
  5. package/dist/biel-search/index.esm.js +2 -0
  6. package/dist/biel-search/index.esm.js.map +1 -0
  7. package/dist/biel-search/p-1b3c90ca.js +3 -0
  8. package/dist/biel-search/p-1b3c90ca.js.map +1 -0
  9. package/dist/biel-search/p-e1255160.js +2 -0
  10. package/dist/biel-search/p-e1255160.js.map +1 -0
  11. package/dist/biel-search/p-fe900c87.entry.js +3 -0
  12. package/dist/biel-search/p-fe900c87.entry.js.map +1 -0
  13. package/dist/cjs/app-globals-3a1e7e63.js +7 -0
  14. package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
  15. package/dist/cjs/biel-bot_8.cjs.entry.js +63952 -0
  16. package/dist/cjs/biel-bot_8.cjs.entry.js.map +1 -0
  17. package/dist/cjs/biel-search.cjs.js +27 -0
  18. package/dist/cjs/biel-search.cjs.js.map +1 -0
  19. package/dist/cjs/index-05fc01fd.js +1281 -0
  20. package/dist/cjs/index-05fc01fd.js.map +1 -0
  21. package/dist/cjs/index.cjs.js +11 -0
  22. package/dist/cjs/index.cjs.js.map +1 -0
  23. package/dist/cjs/loader.cjs.js +17 -0
  24. package/dist/cjs/loader.cjs.js.map +1 -0
  25. package/dist/collection/collection-manifest.json +19 -0
  26. package/dist/collection/components/biel-bot/biel-bot.css +189 -0
  27. package/dist/collection/components/biel-bot/biel-bot.js +338 -0
  28. package/dist/collection/components/biel-bot/biel-bot.js.map +1 -0
  29. package/dist/collection/components/biel-button/biel-button.css +63 -0
  30. package/dist/collection/components/biel-button/biel-button.js +301 -0
  31. package/dist/collection/components/biel-button/biel-button.js.map +1 -0
  32. package/dist/collection/components/biel-chat/biel-chat.css +75 -0
  33. package/dist/collection/components/biel-chat/biel-chat.js +119 -0
  34. package/dist/collection/components/biel-chat/biel-chat.js.map +1 -0
  35. package/dist/collection/components/biel-header/biel-header.css +49 -0
  36. package/dist/collection/components/biel-header/biel-header.js +165 -0
  37. package/dist/collection/components/biel-header/biel-header.js.map +1 -0
  38. package/dist/collection/components/biel-input/biel-input.css +55 -0
  39. package/dist/collection/components/biel-input/biel-input.js +164 -0
  40. package/dist/collection/components/biel-input/biel-input.js.map +1 -0
  41. package/dist/collection/components/biel-message/biel-message.css +38 -0
  42. package/dist/collection/components/biel-message/biel-message.js +98 -0
  43. package/dist/collection/components/biel-message/biel-message.js.map +1 -0
  44. package/dist/collection/components/biel-table/biel-table.css +37 -0
  45. package/dist/collection/components/biel-table/biel-table.js +43 -0
  46. package/dist/collection/components/biel-table/biel-table.js.map +1 -0
  47. package/dist/collection/components/code-snippet/code-snippet.css +162 -0
  48. package/dist/collection/components/code-snippet/code-snippet.js +101 -0
  49. package/dist/collection/components/code-snippet/code-snippet.js.map +1 -0
  50. package/dist/collection/index.js +11 -0
  51. package/dist/collection/index.js.map +1 -0
  52. package/dist/collection/services/biel-service.js +33 -0
  53. package/dist/collection/services/biel-service.js.map +1 -0
  54. package/dist/collection/services/biel-websocket-service.js +64 -0
  55. package/dist/collection/services/biel-websocket-service.js.map +1 -0
  56. package/dist/collection/utils/utils.js +4 -0
  57. package/dist/collection/utils/utils.js.map +1 -0
  58. package/dist/components/biel-bot.d.ts +11 -0
  59. package/dist/components/biel-bot.js +8 -0
  60. package/dist/components/biel-bot.js.map +1 -0
  61. package/dist/components/biel-button.d.ts +11 -0
  62. package/dist/components/biel-button.js +152 -0
  63. package/dist/components/biel-button.js.map +1 -0
  64. package/dist/components/biel-chat.d.ts +11 -0
  65. package/dist/components/biel-chat.js +8 -0
  66. package/dist/components/biel-chat.js.map +1 -0
  67. package/dist/components/biel-header.d.ts +11 -0
  68. package/dist/components/biel-header.js +8 -0
  69. package/dist/components/biel-header.js.map +1 -0
  70. package/dist/components/biel-input.d.ts +11 -0
  71. package/dist/components/biel-input.js +8 -0
  72. package/dist/components/biel-input.js.map +1 -0
  73. package/dist/components/biel-message.d.ts +11 -0
  74. package/dist/components/biel-message.js +8 -0
  75. package/dist/components/biel-message.js.map +1 -0
  76. package/dist/components/biel-table.d.ts +11 -0
  77. package/dist/components/biel-table.js +8 -0
  78. package/dist/components/biel-table.js.map +1 -0
  79. package/dist/components/code-snippet.d.ts +11 -0
  80. package/dist/components/code-snippet.js +8 -0
  81. package/dist/components/code-snippet.js.map +1 -0
  82. package/dist/components/index.d.ts +33 -0
  83. package/dist/components/index.js +9 -0
  84. package/dist/components/index.js.map +1 -0
  85. package/dist/components/p-09743aa7.js +88 -0
  86. package/dist/components/p-09743aa7.js.map +1 -0
  87. package/dist/components/p-5a2466bd.js +59456 -0
  88. package/dist/components/p-5a2466bd.js.map +1 -0
  89. package/dist/components/p-7b8b1ac3.js +1098 -0
  90. package/dist/components/p-7b8b1ac3.js.map +1 -0
  91. package/dist/components/p-8e08748d.js +4158 -0
  92. package/dist/components/p-8e08748d.js.map +1 -0
  93. package/dist/components/p-b920c67f.js +239 -0
  94. package/dist/components/p-b920c67f.js.map +1 -0
  95. package/dist/components/p-c94c3bd6.js +59 -0
  96. package/dist/components/p-c94c3bd6.js.map +1 -0
  97. package/dist/components/p-f4016e6d.js +37 -0
  98. package/dist/components/p-f4016e6d.js.map +1 -0
  99. package/dist/components/p-fe8bcdeb.js +86 -0
  100. package/dist/components/p-fe8bcdeb.js.map +1 -0
  101. package/dist/esm/app-globals-0f993ce5.js +5 -0
  102. package/dist/esm/app-globals-0f993ce5.js.map +1 -0
  103. package/dist/esm/biel-bot_8.entry.js +63941 -0
  104. package/dist/esm/biel-bot_8.entry.js.map +1 -0
  105. package/dist/esm/biel-search.js +22 -0
  106. package/dist/esm/biel-search.js.map +1 -0
  107. package/dist/esm/index-6ad604ca.js +1252 -0
  108. package/dist/esm/index-6ad604ca.js.map +1 -0
  109. package/dist/esm/index.js +7 -0
  110. package/dist/esm/index.js.map +1 -0
  111. package/dist/esm/loader.js +13 -0
  112. package/dist/esm/loader.js.map +1 -0
  113. package/dist/index.cjs.js +1 -0
  114. package/dist/index.js +1 -0
  115. package/dist/types/components/biel-bot/biel-bot.d.ts +35 -0
  116. package/dist/types/components/biel-button/biel-button.d.ts +23 -0
  117. package/dist/types/components/biel-chat/biel-chat.d.ts +15 -0
  118. package/dist/types/components/biel-header/biel-header.d.ts +15 -0
  119. package/dist/types/components/biel-input/biel-input.d.ts +17 -0
  120. package/dist/types/components/biel-message/biel-message.d.ts +10 -0
  121. package/dist/types/components/biel-table/biel-table.d.ts +4 -0
  122. package/dist/types/components/code-snippet/code-snippet.d.ts +10 -0
  123. package/dist/types/components.d.ts +248 -0
  124. package/dist/types/index.d.ts +11 -0
  125. package/dist/types/services/biel-service.d.ts +11 -0
  126. package/dist/types/services/biel-websocket-service.d.ts +17 -0
  127. package/dist/types/stencil-public-runtime.d.ts +1674 -0
  128. package/dist/types/utils/utils.d.ts +1 -0
  129. package/loader/cdn.js +1 -0
  130. package/loader/index.cjs.js +1 -0
  131. package/loader/index.d.ts +24 -0
  132. package/loader/index.es2017.js +1 -0
  133. package/loader/index.js +2 -0
  134. package/loader/package.json +11 -0
  135. package/package.json +55 -0
  136. package/readme.md +22 -0
@@ -0,0 +1,239 @@
1
+ import { p as proxyCustomElement, H, h } from './p-7b8b1ac3.js';
2
+ import { d as defineCustomElement$6 } from './p-fe8bcdeb.js';
3
+ import { d as defineCustomElement$5 } from './p-c94c3bd6.js';
4
+ import { d as defineCustomElement$4 } from './p-09743aa7.js';
5
+ import { d as defineCustomElement$3 } from './p-8e08748d.js';
6
+ import { d as defineCustomElement$2 } from './p-f4016e6d.js';
7
+ import { d as defineCustomElement$1 } from './p-5a2466bd.js';
8
+
9
+ const WS_URL = 'ws://app.biel.ai/ws/messages';
10
+ class BielWebSocketService {
11
+ constructor(projectId, errorMessage) {
12
+ this.messageHandlers = [];
13
+ this.isConnected = false;
14
+ this.chatId = '';
15
+ this.projectId = projectId;
16
+ this.errorMessage = errorMessage;
17
+ this.connect();
18
+ }
19
+ connect() {
20
+ this.ws = new WebSocket(`${WS_URL}/${this.projectId}/`);
21
+ this.ws.onopen = () => {
22
+ this.isConnected = true;
23
+ };
24
+ this.ws.onmessage = (event) => {
25
+ const message = JSON.parse(event.data);
26
+ if (!this.chatId && message.chatId) {
27
+ this.chatId = message.chatId;
28
+ }
29
+ if (message.from) {
30
+ this.loadingEndHandler();
31
+ this.messageHandlers.forEach(handler => handler(message));
32
+ }
33
+ };
34
+ this.ws.onclose = () => {
35
+ this.isConnected = false;
36
+ };
37
+ this.ws.onerror = (error) => {
38
+ console.error('WebSocket error:', error);
39
+ this.isConnected = false;
40
+ this.loadingEndHandler();
41
+ };
42
+ }
43
+ sendMessage(message) {
44
+ const payload = {
45
+ projectId: this.projectId,
46
+ chatId: this.chatId,
47
+ url: window.location.href,
48
+ from: 'user',
49
+ message: message,
50
+ };
51
+ if (this.isConnected) {
52
+ this.ws.send(JSON.stringify(payload));
53
+ this.loadingStartHandler();
54
+ }
55
+ else {
56
+ this.messageHandlers.forEach(handler => handler({ message: this.errorMessage, from: 'ai' }));
57
+ }
58
+ }
59
+ closeSocket() {
60
+ this.ws.close();
61
+ }
62
+ onMessage(handler) {
63
+ this.messageHandlers.push(handler);
64
+ }
65
+ onLoadingStart(handler) {
66
+ this.loadingStartHandler = handler;
67
+ }
68
+ onLoadingEnd(handler) {
69
+ this.loadingEndHandler = handler;
70
+ }
71
+ }
72
+
73
+ const BASE_URL = "https://app.biel.ai/api/v1";
74
+ class BielService {
75
+ constructor(project, errorMessage404, errorMessage403, errorMessageDefault) {
76
+ this.project = project;
77
+ this.errorMessage404 = errorMessage404;
78
+ this.errorMessage403 = errorMessage403;
79
+ this.errorMessageDefault = errorMessageDefault;
80
+ }
81
+ async getProjectDetails() {
82
+ try {
83
+ const response = await fetch(`${BASE_URL}/projects/${this.project}`);
84
+ if (response.status === 404) {
85
+ return this.errorMessage404;
86
+ }
87
+ if (response.status === 403) {
88
+ return this.errorMessage403;
89
+ }
90
+ if (!response.ok) {
91
+ return this.errorMessageDefault;
92
+ }
93
+ const data = await response.json();
94
+ return {
95
+ whitelabel: data.whitelabel,
96
+ initialMessage: data.initial_message
97
+ };
98
+ }
99
+ catch (error) {
100
+ console.error('Error fetching project details:', error);
101
+ return this.errorMessageDefault;
102
+ }
103
+ }
104
+ }
105
+
106
+ const bielBotCss = ".text-center{flex-grow:1;text-align:center}.biel-bot-wrapper{position:absolute;z-index:var(--biel-bot-wrapper-z-index)}.biel-overlay{background-color:var(--biel-bot-screenshot-bg-color);height:100%;left:0;position:fixed;top:0;width:100%;z-index:var(--biel-bot-screnshot-z-index)}.biel-bot{display:inline-block;position:relative}.biel-bot-content{background-color:var(--biel-bot-content-bg-color);border:1px solid var(--biel-bot-header-text-color);border-radius:var(--biel-bot-content-border-radius);box-shadow:0px 1px 2px 0px rgba(60, 64, 67, .30), 0px 2px 6px 2px rgba(60, 64, 67, .15);box-sizing:border-box;color:var(--biel-bot-content-text-color);display:flex;flex-direction:column;font-family:var(--biel-bot-content-font-family);left:50%;max-width:90%;max-height:80vh;overflow:hidden;padding:20px;position:fixed;top:50%;transform:translate(-50%, -50%);width:100%;z-index:var(--biel-bot-content-z-index)}.biel-bot-header{margin-bottom:20px}.biel-bot-footer{font-size:var(--biel-footer-font-size);text-align:center}.biel-bot-footer a{color:var(--biel-bot-footer-link);font-weight:500;text-decoration:none}.biel-logo{align-items:center;display:flex;justify-content:center;margin-top:5px}.biel-logo a{margin-left:3px}.biel-bot-close{background-color:var(--biel-bot-close-bg-color);border:0;border-radius:50%;cursor:pointer;height:22px;margin-left:auto;padding:0;width:22px}.biel-bot-close svg{stroke:var(--biel-bot-close-color)}.biel-bot-content.fullscreen{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0;padding:20px 5vw;left:50%;top:50%;max-width:100vw;transform:translate(-50%, -50%)}@media screen and (min-width: 768px){.biel-bot-content{max-width:600px;max-height:82vh}.biel-bot-content.biel-bot-content--bottom-right{bottom:var(--biel-bot-content-position-bottom);left:initial;right:var(--biel-bot-content-position-right);top:initial;transform:initial}.biel-bot-content.biel-bot-content--bottom-left{bottom:var(--biel-bot-content-position-bottom);left:var(--biel-bot-content-position-left);top:initial;transform:initial}.biel-bot-content.biel-bot-content--top-right{right:var(--biel-bot-content-position-right);top:var(--biel-bot-content-position-top);transform:initial}.biel-bot-content.biel-bot-content--top-left{left:var(--biel-bot-content-position-left);top:var(--biel-bot-content-position-top);transform:initial}.biel-bot-content.biel-bot-content--center-left{left:5px;right:auto;top:50%;transform:translateY(-50%)}.biel-bot-content.biel-bot-content--center-right{left:auto;right:5px;top:50%;transform:translateY(-50%)}.biel-bot-content.biel-bot-content--sidebar-left.biel-bot-content--open,.biel-bot-content.biel-bot-content--sidebar-right.biel-bot-content--open{transform:translateX(0)}.biel-bot-content.biel-bot-content--sidebar-left{max-width:300px;left:0;right:auto;height:100vh;top:0;transform:translateX(-100%);transition:transform 0.5s ease-in-out;border-radius:0}.biel-bot-content.biel-bot-content--sidebar-right{max-width:300px;left:auto;right:0;height:100vh;top:0;transform:translateX(100%);transition:transform 0.5s ease-in-out;border-radius:0}.biel-bot-content.fullscreen{width:100vw;max-width:100vw;height:100vh;max-height:100vh;border-radius:0;padding:20px 25vw;left:50%;top:50%;max-width:100vw;transform:translate(-50%, -50%)}}";
107
+ const BielBotStyle0 = bielBotCss;
108
+
109
+ const BielBot = /*@__PURE__*/ proxyCustomElement(class BielBot extends H {
110
+ handleClose() {
111
+ this.showModal = false;
112
+ document.body.style.overflow = '';
113
+ }
114
+ handleFullscreenClicked() {
115
+ this.isFullscreen = !this.isFullscreen;
116
+ document.body.style.overflow = this.isFullscreen ? 'hidden' : '';
117
+ }
118
+ constructor() {
119
+ super();
120
+ this.__registerHost();
121
+ this.__attachShadow();
122
+ this.modalPosition = 'center';
123
+ this.project = '';
124
+ this.showModal = false;
125
+ this.fetchData = true;
126
+ this.headerTitle = 'Company Name AI';
127
+ this.inputPlaceholderText = 'Type your message';
128
+ this.sendButtonText = 'Send';
129
+ this.hideExpandButton = false;
130
+ this.expandModal = false;
131
+ this.errorMessage404 = "Oops! We could not find the provided project ID.";
132
+ this.errorMessage403 = "Oops! The request URL does not match the one defined for this project.";
133
+ this.errorMessageDefault = "Oops! Please try again later.";
134
+ this.footerText = "AI generated answers. Always verify the sources before using them.";
135
+ this.isFullscreen = this.expandModal;
136
+ this.isLoading = false;
137
+ this.showPoweredBy = true;
138
+ this.welcomeMessage = undefined;
139
+ this.messages = [];
140
+ this.webSocketService = new BielWebSocketService(this.project, this.errorMessageDefault);
141
+ this.webSocketService.onMessage(this.handleIncomingMessage.bind(this));
142
+ this.webSocketService.onLoadingStart(() => this.isLoading = true);
143
+ this.webSocketService.onLoadingEnd(() => this.isLoading = false);
144
+ }
145
+ handleIncomingMessage(message) {
146
+ this.messages = [...this.messages, { sender: message.from, text: message.message }];
147
+ }
148
+ async componentWillLoad() {
149
+ if (this.fetchData) {
150
+ this.bielService = new BielService(this.project, this.errorMessage404, this.errorMessage403, this.errorMessageDefault);
151
+ const result = await this.bielService.getProjectDetails();
152
+ if (typeof result === 'string') {
153
+ this.welcomeMessage = result;
154
+ }
155
+ else {
156
+ this.showPoweredBy = result.whitelabel;
157
+ this.welcomeMessage = result.initialMessage;
158
+ }
159
+ if (this.welcomeMessage) {
160
+ this.messages = [{ text: this.welcomeMessage, sender: 'ai' }];
161
+ }
162
+ }
163
+ }
164
+ handleMessageSent(event) {
165
+ this.messages = [...this.messages, { text: event.detail, sender: 'user' }];
166
+ this.webSocketService.sendMessage(event.detail);
167
+ }
168
+ render() {
169
+ return (h("div", { key: '0779ac463e2d1daf5e7d1f6d92ed9592776972bf', class: 'biel-bot-wrapper' }, this.showModal && (h("div", { key: '39c72fbe3b17de2b2b881d8a39bd8bec270cac13', class: "feedback-overlay" })), this.showModal && (h("div", { key: '692eccc43cd4dbc39ba510f8422ab13c083aa782', class: `biel-bot-content biel-bot-content--${this.modalPosition} ${this.showModal ? 'biel-bot-content--open' : ''} ${this.isFullscreen ? 'fullscreen' : ''}`, ref: el => (this.modalContent = el) }, h("div", { key: '01240aab4b14cd6a24bc59c1d951ed679ce8a53c', class: "biel-bot-header" }, h("biel-header", { key: 'c4624af08036041b033cc70c02b508e76787dd0b', headerTitle: this.headerTitle, project: this.project, showPoweredBy: this.showPoweredBy, hideExpandButton: this.hideExpandButton, fullscreen: this.isFullscreen })), h("div", { key: '54d8b6290f60c5b9427b92f89770cda198b06be5', class: "biel-bot-body" }, h("biel-chat", { key: 'd811b46f4dfdd5b41087839f60915f452272ebbf', messages: this.messages, isFullscreen: this.isFullscreen, isLoading: this.isLoading }), h("biel-input", { key: 'fa83a2a460f30367062ecebe5c8f2d36964f8758', placeholderText: this.inputPlaceholderText, sendButtonText: this.sendButtonText, onMessageSent: (event) => this.handleMessageSent(event), isDisabled: this.isLoading })), h("div", { key: '25b1bfa2642d542c621821f5502db5467ab33d8c', class: "biel-bot-footer" }, this.footerText)))));
170
+ }
171
+ static get style() { return BielBotStyle0; }
172
+ }, [1, "biel-bot", {
173
+ "modalPosition": [1, "modal-position"],
174
+ "project": [1],
175
+ "showModal": [1540, "show-modal"],
176
+ "fetchData": [4, "fetch-data"],
177
+ "headerTitle": [1, "header-title"],
178
+ "inputPlaceholderText": [1, "input-placeholder-text"],
179
+ "sendButtonText": [1, "send-button-text"],
180
+ "hideExpandButton": [4, "hide-expand-button"],
181
+ "expandModal": [4, "expand-modal"],
182
+ "errorMessage404": [1, "error-message-4-0-4"],
183
+ "errorMessage403": [1, "error-message-4-0-3"],
184
+ "errorMessageDefault": [1, "error-message-default"],
185
+ "footerText": [1, "footer-text"],
186
+ "isFullscreen": [32],
187
+ "isLoading": [32],
188
+ "showPoweredBy": [32],
189
+ "welcomeMessage": [32],
190
+ "messages": [32]
191
+ }, [[16, "closeClicked", "handleClose"], [16, "fullscreenClicked", "handleFullscreenClicked"]]]);
192
+ function defineCustomElement() {
193
+ if (typeof customElements === "undefined") {
194
+ return;
195
+ }
196
+ const components = ["biel-bot", "biel-chat", "biel-header", "biel-input", "biel-message", "biel-table", "code-snippet"];
197
+ components.forEach(tagName => { switch (tagName) {
198
+ case "biel-bot":
199
+ if (!customElements.get(tagName)) {
200
+ customElements.define(tagName, BielBot);
201
+ }
202
+ break;
203
+ case "biel-chat":
204
+ if (!customElements.get(tagName)) {
205
+ defineCustomElement$6();
206
+ }
207
+ break;
208
+ case "biel-header":
209
+ if (!customElements.get(tagName)) {
210
+ defineCustomElement$5();
211
+ }
212
+ break;
213
+ case "biel-input":
214
+ if (!customElements.get(tagName)) {
215
+ defineCustomElement$4();
216
+ }
217
+ break;
218
+ case "biel-message":
219
+ if (!customElements.get(tagName)) {
220
+ defineCustomElement$3();
221
+ }
222
+ break;
223
+ case "biel-table":
224
+ if (!customElements.get(tagName)) {
225
+ defineCustomElement$2();
226
+ }
227
+ break;
228
+ case "code-snippet":
229
+ if (!customElements.get(tagName)) {
230
+ defineCustomElement$1();
231
+ }
232
+ break;
233
+ } });
234
+ }
235
+ defineCustomElement();
236
+
237
+ export { BielBot as B, defineCustomElement as d };
238
+
239
+ //# sourceMappingURL=p-b920c67f.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-b920c67f.js","mappings":"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","names":[],"sources":["src/services/biel-websocket-service.ts","src/services/biel-service.ts","src/components/biel-bot/biel-bot.css?tag=biel-bot&encapsulation=shadow","src/components/biel-bot/biel-bot.tsx"],"sourcesContent":["const WS_URL = 'ws://app.biel.ai/ws/messages';\n\nexport class BielWebSocketService {\n private ws: WebSocket;\n private messageHandlers: ((message: any) => void)[] = [];\n private isConnected: boolean = false;\n private projectId: string;\n private chatId: string = '';\n private errorMessage: string;\n private loadingStartHandler: () => void;\n private loadingEndHandler: () => void;\n\n constructor(projectId: string, errorMessage: string) {\n this.projectId = projectId;\n this.errorMessage = errorMessage;\n this.connect();\n }\n\n private connect(): void {\n this.ws = new WebSocket(`${WS_URL}/${this.projectId}/`);\n\n this.ws.onopen = () => {\n this.isConnected = true;\n };\n\n this.ws.onmessage = (event) => {\n const message = JSON.parse(event.data);\n if (!this.chatId && message.chatId) {\n this.chatId = message.chatId;\n }\n if (message.from) {\n this.loadingEndHandler();\n this.messageHandlers.forEach(handler => handler(message));\n }\n };\n\n this.ws.onclose = () => {\n this.isConnected = false;\n };\n\n this.ws.onerror = (error) => {\n console.error('WebSocket error:', error);\n this.isConnected = false;\n this.loadingEndHandler();\n };\n }\n\n public sendMessage(message: string): void {\n const payload = {\n projectId: this.projectId,\n chatId: this.chatId,\n url: window.location.href,\n from: 'user',\n message: message,\n };\n if (this.isConnected) {\n this.ws.send(JSON.stringify(payload));\n this.loadingStartHandler();\n } else {\n this.messageHandlers.forEach(handler => handler({ message: this.errorMessage, from: 'ai' }));\n }\n }\n\n public closeSocket(): void {\n this.ws.close();\n }\n\n public onMessage(handler: (message: any) => void): void {\n this.messageHandlers.push(handler);\n }\n\n public onLoadingStart(handler: () => void): void {\n this.loadingStartHandler = handler;\n }\n\n public onLoadingEnd(handler: () => void): void {\n this.loadingEndHandler = handler;\n }\n}\n","const BASE_URL = \"https://app.biel.ai/api/v1\";\n\nexport class BielService {\n private project: string;\n private errorMessage404: string;\n private errorMessage403: string;\n private errorMessageDefault: string;\n\n constructor(project: string, errorMessage404: string, errorMessage403: string, errorMessageDefault: string) {\n this.project = project;\n this.errorMessage404 = errorMessage404;\n this.errorMessage403 = errorMessage403;\n this.errorMessageDefault = errorMessageDefault;\n }\n\n async getProjectDetails(): Promise<{ whitelabel: boolean, initialMessage: string } | string> {\n try {\n const response = await fetch(`${BASE_URL}/projects/${this.project}`);\n\n if (response.status === 404) {\n return this.errorMessage404;\n }\n\n if (response.status === 403) {\n return this.errorMessage403;\n }\n\n if (!response.ok) {\n return this.errorMessageDefault;\n }\n\n const data = await response.json();\n return {\n whitelabel: data.whitelabel,\n initialMessage: data.initial_message\n };\n } catch (error) {\n console.error('Error fetching project details:', error);\n return this.errorMessageDefault;\n }\n }\n}\n",".text-center {\n flex-grow: 1;\n text-align: center;\n}\n\n.biel-bot-wrapper {\n position: absolute;\n z-index: var(--biel-bot-wrapper-z-index);\n}\n\n.biel-overlay {\n background-color: var(--biel-bot-screenshot-bg-color);\n height: 100%;\n left: 0;\n position: fixed;\n top: 0;\n width: 100%;\n z-index: var(--biel-bot-screnshot-z-index);\n}\n\n.biel-bot {\n display: inline-block;\n position: relative;\n}\n\n.biel-bot-content {\n background-color: var(--biel-bot-content-bg-color);\n border: 1px solid var(--biel-bot-header-text-color);\n border-radius: var(--biel-bot-content-border-radius);\n box-shadow: 0px 1px 2px 0px rgba(60, 64, 67, .30), 0px 2px 6px 2px rgba(60, 64, 67, .15);\n box-sizing: border-box;\n color: var(--biel-bot-content-text-color);\n display: flex;\n flex-direction: column;\n font-family: var(--biel-bot-content-font-family);\n left: 50%;\n max-width: 90%;\n max-height: 80vh;\n overflow: hidden;\n padding: 20px;\n position: fixed;\n top: 50%;\n transform: translate(-50%, -50%);\n width: 100%;\n z-index: var(--biel-bot-content-z-index);\n}\n\n.biel-bot-header {\n margin-bottom: 20px;\n}\n\n.biel-bot-footer {\n font-size: var(--biel-footer-font-size);\n text-align: center;\n}\n\n.biel-bot-footer a {\n color: var(--biel-bot-footer-link);\n font-weight: 500;\n text-decoration: none;\n}\n\n.biel-logo {\n align-items: center;\n display: flex;\n justify-content: center;\n margin-top: 5px;\n}\n\n.biel-logo a {\n margin-left: 3px;\n}\n\n.biel-bot-close {\n background-color: var(--biel-bot-close-bg-color);\n border: 0;\n border-radius: 50%;\n cursor: pointer;\n height: 22px;\n margin-left: auto;\n padding: 0;\n width: 22px;\n}\n\n.biel-bot-close svg {\n stroke: var(--biel-bot-close-color);\n}\n\n.biel-bot-content.fullscreen {\n width: 100vw;\n max-width: 100vw;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n padding: 20px 5vw;\n left: 50%;\n top: 50%;\n max-width: 100vw;\n transform: translate(-50%, -50%);\n}\n\n@media screen and (min-width: 768px) {\n\n .biel-bot-content {\n max-width: 600px;\n max-height: 82vh;\n }\n\n .biel-bot-content.biel-bot-content--bottom-right {\n bottom: var(--biel-bot-content-position-bottom);\n left: initial;\n right: var(--biel-bot-content-position-right);\n top: initial;\n transform: initial;\n }\n\n .biel-bot-content.biel-bot-content--bottom-left {\n bottom: var(--biel-bot-content-position-bottom);\n left: var(--biel-bot-content-position-left);\n top: initial;\n transform: initial;\n }\n\n .biel-bot-content.biel-bot-content--top-right {\n right: var(--biel-bot-content-position-right);\n top: var(--biel-bot-content-position-top);\n transform: initial;\n }\n\n .biel-bot-content.biel-bot-content--top-left {\n left: var(--biel-bot-content-position-left);\n top: var(--biel-bot-content-position-top);\n transform: initial;\n }\n\n .biel-bot-content.biel-bot-content--center-left {\n left: 5px;\n right: auto;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .biel-bot-content.biel-bot-content--center-right {\n left: auto;\n right: 5px;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .biel-bot-content.biel-bot-content--sidebar-left.biel-bot-content--open,\n .biel-bot-content.biel-bot-content--sidebar-right.biel-bot-content--open {\n transform: translateX(0);\n }\n\n .biel-bot-content.biel-bot-content--sidebar-left {\n max-width: 300px;\n left: 0;\n right: auto;\n height: 100vh;\n top: 0;\n transform: translateX(-100%);\n transition: transform 0.5s ease-in-out;\n border-radius: 0;\n }\n\n .biel-bot-content.biel-bot-content--sidebar-right {\n max-width: 300px;\n left: auto;\n right: 0;\n height: 100vh;\n top: 0;\n transform: translateX(100%);\n transition: transform 0.5s ease-in-out;\n border-radius: 0;\n }\n\n .biel-bot-content.fullscreen {\n width: 100vw;\n max-width: 100vw;\n height: 100vh;\n max-height: 100vh;\n border-radius: 0;\n padding: 20px 25vw;\n left: 50%;\n top: 50%;\n max-width: 100vw;\n transform: translate(-50%, -50%);\n }\n}","import { Component, h, Listen, Prop, State } from '@stencil/core';\nimport { BielWebSocketService } from '../../services/biel-websocket-service';\nimport { BielService } from '../../services/biel-service';\n\n@Component({\n tag: 'biel-bot',\n styleUrl: 'biel-bot.css',\n shadow: true\n})\nexport class BielBot {\n\n // Define the component properties\n @Prop() modalPosition: string = 'center';\n @Prop() project: string = '';\n @Prop({ mutable: true, reflect: true }) showModal: boolean = false;\n @Prop() fetchData: boolean = true;\n @Prop() headerTitle: string = 'Company Name AI';\n @Prop() inputPlaceholderText: string = 'Type your message';\n @Prop() sendButtonText: string = 'Send';\n @Prop() hideExpandButton: boolean = false;\n @Prop() expandModal: boolean = false;\n @Prop() errorMessage404: string = \"Oops! We could not find the provided project ID.\";\n @Prop() errorMessage403: string = \"Oops! The request URL does not match the one defined for this project.\";\n @Prop() errorMessageDefault: string = \"Oops! Please try again later.\";\n @Prop() footerText: string = \"AI generated answers. Always verify the sources before using them.\";\n\n @State() isFullscreen: boolean = this.expandModal;\n @State() isLoading: boolean = false;\n @State() showPoweredBy: boolean = true;\n @State() welcomeMessage: string;\n @State() messages: { text: string, sender: 'user' | 'ai' }[] = [];\n\n @Listen('closeClicked', { target: 'body' })\n handleClose() {\n this.showModal = false;\n document.body.style.overflow = '';\n }\n @Listen('fullscreenClicked', { target: 'body' })\n handleFullscreenClicked() {\n this.isFullscreen = !this.isFullscreen;\n document.body.style.overflow = this.isFullscreen ? 'hidden' : '';\n }\n\n // Define the accesible and modificable divs in the screenshot\n modalContent: HTMLElement;\n webSocketService: BielWebSocketService;\n bielService: BielService;\n\n constructor() {\n this.webSocketService = new BielWebSocketService(this.project, this.errorMessageDefault);\n this.webSocketService.onMessage(this.handleIncomingMessage.bind(this));\n this.webSocketService.onLoadingStart(() => this.isLoading = true);\n this.webSocketService.onLoadingEnd(() => this.isLoading = false);\n }\n\n handleIncomingMessage(message: any) {\n this.messages = [...this.messages, { sender: message.from, text: message.message }];\n }\n\n async componentWillLoad() {\n if (this.fetchData) {\n this.bielService = new BielService(\n this.project,\n this.errorMessage404,\n this.errorMessage403,\n this.errorMessageDefault\n );\n const result = await this.bielService.getProjectDetails();\n\n if (typeof result === 'string') {\n this.welcomeMessage = result;\n } else {\n this.showPoweredBy = result.whitelabel;\n this.welcomeMessage = result.initialMessage;\n }\n if (this.welcomeMessage) {\n this.messages = [{ text: this.welcomeMessage, sender: 'ai' }];\n }\n }\n }\n\n handleMessageSent(event: CustomEvent<string>) {\n this.messages = [...this.messages, { text: event.detail, sender: 'user' }];\n this.webSocketService.sendMessage(event.detail);\n }\n\n render() {\n return (\n <div class='biel-bot-wrapper'>\n {this.showModal && (<div class=\"feedback-overlay\"></div>)}\n {this.showModal && (\n <div class={`biel-bot-content biel-bot-content--${this.modalPosition} ${this.showModal ? 'biel-bot-content--open' : ''} ${this.isFullscreen ? 'fullscreen' : ''}`} ref={el => (this.modalContent = el)}>\n <div class=\"biel-bot-header\">\n <biel-header headerTitle={this.headerTitle} project={this.project} showPoweredBy={this.showPoweredBy} hideExpandButton={this.hideExpandButton} fullscreen={this.isFullscreen}></biel-header>\n </div>\n <div class=\"biel-bot-body\">\n <biel-chat messages={this.messages} isFullscreen={this.isFullscreen} isLoading={this.isLoading}></biel-chat>\n <biel-input\n placeholderText={this.inputPlaceholderText}\n sendButtonText={this.sendButtonText}\n onMessageSent={(event) => this.handleMessageSent(event)}\n isDisabled={this.isLoading}>\n </biel-input>\n </div>\n <div class=\"biel-bot-footer\">\n {this.footerText}\n </div>\n </div>\n )}\n </div>\n );\n }\n}"],"version":3}
@@ -0,0 +1,59 @@
1
+ import { p as proxyCustomElement, H, c as createEvent, h } from './p-7b8b1ac3.js';
2
+
3
+ const bielHeaderCss = ".biel-header{display:flex;padding-bottom:10px;color:var(--biel-header-text-color);border-bottom:1px solid var(--biel-header-border-color);flex-direction:column;text-align:center}.biel-header__title-container{display:flex;flex-direction:column;align-items:center;flex-grow:1}.biel-header__title{font-size:var(--biel-header-font-size);font-weight:var(--biel-header-font-weight)}.biel-header__powered-by{color:var(--biel-header-powered-by-text-color);padding-top:5px;font-size:12px;height:12px}.biel-header__powered-by a{color:var(--biel-header-powered-by-link-color);font-weight:500;text-decoration:none}.biel-header__icons{display:flex;justify-content:flex-end}.biel-header__icon{color:var(--biel-header-text-color);background:none;border:none;cursor:pointer;display:flex;padding:3px;padding-top:0;margin-left:5px}";
4
+ const BielHeaderStyle0 = bielHeaderCss;
5
+
6
+ const BielHeader = /*@__PURE__*/ proxyCustomElement(class BielHeader extends H {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ this.closeClicked = createEvent(this, "closeClicked", 7);
12
+ this.fullscreenClicked = createEvent(this, "fullscreenClicked", 7);
13
+ this.headerTitle = undefined;
14
+ this.project = undefined;
15
+ this.hideExpandButton = undefined;
16
+ this.showPoweredBy = true;
17
+ this.fullscreen = undefined;
18
+ this.isFullscreen = undefined;
19
+ }
20
+ componentWillLoad() {
21
+ this.isFullscreen = this.fullscreen;
22
+ }
23
+ handleCloseClick() {
24
+ this.closeClicked.emit();
25
+ }
26
+ handleFullscreenClick() {
27
+ this.isFullscreen = !this.isFullscreen;
28
+ this.fullscreenClicked.emit();
29
+ }
30
+ render() {
31
+ return (h("header", { key: 'fc462fd7a8aa72181e535f4569342a423e481df4', class: "biel-header" }, h("div", { key: 'bf12e4fa2b9f99b647fbcbe6441a53b3cee569e3', class: "biel-header__icons" }, !this.hideExpandButton && (h("button", { key: 'b44aee795fb5efbd169a01d225d5b61a6a8479c6', class: "biel-header__icon", onClick: () => this.handleFullscreenClick() }, this.isFullscreen ? (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", class: "feather feather-minimize-2" }, h("polyline", { points: "4 14 10 14 10 20" }), h("polyline", { points: "20 10 14 10 14 4" }), h("line", { x1: "14", y1: "10", x2: "21", y2: "3" }), h("line", { x1: "3", y1: "21", x2: "10", y2: "14" }))) : (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", class: "feather feather-maximize-2" }, h("polyline", { points: "15 3 21 3 21 9" }), h("polyline", { points: "9 21 3 21 3 15" }), h("line", { x1: "21", y1: "3", x2: "14", y2: "10" }), h("line", { x1: "3", y1: "21", x2: "10", y2: "14" }))))), h("button", { key: 'd28e4abcc8f59fb6aa68e3cd9e969dff0657d2c7', class: "biel-header__icon", onClick: () => this.handleCloseClick() }, h("svg", { key: '4be80a2be30cff0a3471cb30e7be8fba533299e2', xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", class: "feather feather-x" }, h("line", { key: '8a772eb8e271d28ecde92fb28e72493eaad40a72', x1: "18", y1: "6", x2: "6", y2: "18" }), h("line", { key: 'df432a2d7722fe4b9d472bad197a3bf6bf76e529', x1: "6", y1: "6", x2: "18", y2: "18" })))), h("div", { key: '66d17239178ca6f6eb015e0db2b4d46101736e94', class: "biel-header__title-container" }, h("div", { key: '051e8fff6205f423a568e6ea10f800f069494ead', class: "biel-header__title" }, this.headerTitle), h("div", { key: '5a701624cf8c81e3747ecd577d00a3d927013311', class: "biel-header__powered-by" }, this.showPoweredBy && (h("span", { key: '5e52419e22f00f8d787414ec16aa2f0fa44388ab' }, "Powered by ", h("a", { key: '5af1a69e17666c3b8f3cfbba11b92dc9118d2fba', target: "_blank", href: "https://biel.ai" }, "biel.ai")))))));
32
+ }
33
+ static get style() { return BielHeaderStyle0; }
34
+ }, [1, "biel-header", {
35
+ "headerTitle": [1, "header-title"],
36
+ "project": [1],
37
+ "hideExpandButton": [4, "hide-expand-button"],
38
+ "showPoweredBy": [4, "show-powered-by"],
39
+ "fullscreen": [4],
40
+ "isFullscreen": [32]
41
+ }]);
42
+ function defineCustomElement() {
43
+ if (typeof customElements === "undefined") {
44
+ return;
45
+ }
46
+ const components = ["biel-header"];
47
+ components.forEach(tagName => { switch (tagName) {
48
+ case "biel-header":
49
+ if (!customElements.get(tagName)) {
50
+ customElements.define(tagName, BielHeader);
51
+ }
52
+ break;
53
+ } });
54
+ }
55
+ defineCustomElement();
56
+
57
+ export { BielHeader as B, defineCustomElement as d };
58
+
59
+ //# sourceMappingURL=p-c94c3bd6.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-c94c3bd6.js","mappings":"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","names":[],"sources":["src/components/biel-header/biel-header.css?tag=biel-header&encapsulation=shadow","src/components/biel-header/biel-header.tsx"],"sourcesContent":[".biel-header {\n display: flex;\n padding-bottom: 10px;\n color: var(--biel-header-text-color);\n border-bottom: 1px solid var(--biel-header-border-color);\n flex-direction: column;\n text-align: center;\n}\n\n.biel-header__title-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n flex-grow: 1;\n}\n\n.biel-header__title {\n font-size: var(--biel-header-font-size);\n font-weight: var(--biel-header-font-weight);\n}\n\n.biel-header__powered-by {\n color: var(--biel-header-powered-by-text-color);\n padding-top: 5px;\n font-size: 12px;\n height: 12px;\n}\n\n.biel-header__powered-by a {\n color: var(--biel-header-powered-by-link-color);\n font-weight: 500;\n text-decoration: none;\n}\n\n.biel-header__icons {\n display: flex;\n justify-content: flex-end;\n}\n\n.biel-header__icon {\n color: var(--biel-header-text-color);\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n padding: 3px;\n padding-top: 0;\n margin-left: 5px;\n}\n","import { Component, Event, EventEmitter, h, Prop, State } from '@stencil/core';\n\n@Component({\n tag: 'biel-header',\n styleUrl: 'biel-header.css',\n shadow: true\n})\nexport class BielHeader {\n @Prop() headerTitle: string;\n @Prop() project: string;\n @Prop() hideExpandButton: boolean;\n @Prop() showPoweredBy: boolean = true;\n @Prop() fullscreen: boolean;\n\n @State() isFullscreen: boolean;\n\n @Event() closeClicked: EventEmitter<void>;\n @Event() fullscreenClicked: EventEmitter<void>;\n\n componentWillLoad() {\n this.isFullscreen = this.fullscreen;\n }\n\n handleCloseClick() {\n this.closeClicked.emit();\n }\n\n handleFullscreenClick() {\n this.isFullscreen = !this.isFullscreen;\n this.fullscreenClicked.emit();\n }\n\n render() {\n return (\n <header class=\"biel-header\">\n <div class=\"biel-header__icons\">\n {!this.hideExpandButton && (\n <button class=\"biel-header__icon\" onClick={() => this.handleFullscreenClick()}>\n {this.isFullscreen ? (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-minimize-2\"><polyline points=\"4 14 10 14 10 20\"></polyline><polyline points=\"20 10 14 10 14 4\"></polyline><line x1=\"14\" y1=\"10\" x2=\"21\" y2=\"3\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line></svg>\n ) : (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-maximize-2\"><polyline points=\"15 3 21 3 21 9\"></polyline><polyline points=\"9 21 3 21 3 15\"></polyline><line x1=\"21\" y1=\"3\" x2=\"14\" y2=\"10\"></line><line x1=\"3\" y1=\"21\" x2=\"10\" y2=\"14\"></line></svg>\n )}\n </button>\n )}\n <button class=\"biel-header__icon\" onClick={() => this.handleCloseClick()}>\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"feather feather-x\"><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line></svg>\n </button>\n </div>\n <div class=\"biel-header__title-container\">\n <div class=\"biel-header__title\">{this.headerTitle}</div>\n <div class=\"biel-header__powered-by\">\n {this.showPoweredBy && (\n <span>Powered by <a target=\"_blank\" href=\"https://biel.ai\">biel.ai</a></span>\n )}\n </div>\n </div>\n </header>\n );\n }\n}"],"version":3}
@@ -0,0 +1,37 @@
1
+ import { p as proxyCustomElement, H, h } from './p-7b8b1ac3.js';
2
+
3
+ const bielTableCss = ".biel-table-container{margin:20px 0;overflow-x:auto;background-color:var(--biel-table-bg-color);border-radius:6px}.biel-table-container table{width:100%;border-collapse:collapse;overflow:hidden;color:var(--biel-table-content-text-color)}.biel-table-container th,.biel-table-container td{padding:8px;border:1px solid #303030}.biel-table-container th{background-color:var(--biel-table-th-bg-color)}.biel-table-container::-webkit-scrollbar{height:8px}.biel-table-container::-webkit-scrollbar-thumb:horizontal{background-color:var(--biel-chat-scrollbar-color);border-radius:10px;border:3px solid transparent}.biel-table-container::-webkit-scrollbar-thumb:hover{background-color:var(--biel-chat-scrollbar-hover-color)}";
4
+ const BielTableStyle0 = bielTableCss;
5
+
6
+ const BielTable = /*@__PURE__*/ proxyCustomElement(class BielTable extends H {
7
+ constructor() {
8
+ super();
9
+ this.__registerHost();
10
+ this.__attachShadow();
11
+ this.tableData = undefined;
12
+ }
13
+ render() {
14
+ return (h("div", { key: '15cbaba67350b4cce43f122cbce944a8662792d7', class: "biel-table-container", innerHTML: this.tableData }));
15
+ }
16
+ static get style() { return BielTableStyle0; }
17
+ }, [1, "biel-table", {
18
+ "tableData": [1, "table-data"]
19
+ }]);
20
+ function defineCustomElement() {
21
+ if (typeof customElements === "undefined") {
22
+ return;
23
+ }
24
+ const components = ["biel-table"];
25
+ components.forEach(tagName => { switch (tagName) {
26
+ case "biel-table":
27
+ if (!customElements.get(tagName)) {
28
+ customElements.define(tagName, BielTable);
29
+ }
30
+ break;
31
+ } });
32
+ }
33
+ defineCustomElement();
34
+
35
+ export { BielTable as B, defineCustomElement as d };
36
+
37
+ //# sourceMappingURL=p-f4016e6d.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-f4016e6d.js","mappings":";;AAAA,MAAM,YAAY,GAAG,2sBAA2sB,CAAC;AACjuB,wBAAe,YAAY;;MCMd,SAAS;;;;;;;IAIpB,MAAM;QACJ,QACE,4DAAK,KAAK,EAAC,sBAAsB,EAAC,SAAS,EAAE,IAAI,CAAC,SAAS,GAAQ,EACnE;KACH;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/biel-table/biel-table.css?tag=biel-table&encapsulation=shadow","src/components/biel-table/biel-table.tsx"],"sourcesContent":[".biel-table-container {\n margin: 20px 0;\n overflow-x: auto;\n background-color: var(--biel-table-bg-color);\n border-radius: 6px;\n}\n\n.biel-table-container table {\n width: 100%;\n border-collapse: collapse;\n overflow: hidden;\n color: var(--biel-table-content-text-color);\n}\n\n.biel-table-container th,\n.biel-table-container td {\n padding: 8px;\n border: 1px solid #303030;\n}\n\n.biel-table-container th {\n background-color: var(--biel-table-th-bg-color);\n}\n\n.biel-table-container::-webkit-scrollbar {\n height: 8px;\n}\n\n.biel-table-container::-webkit-scrollbar-thumb:horizontal {\n background-color: var(--biel-chat-scrollbar-color);\n border-radius: 10px;\n border: 3px solid transparent;\n}\n\n.biel-table-container::-webkit-scrollbar-thumb:hover {\n background-color: var(--biel-chat-scrollbar-hover-color);\n}","import { Component, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'biel-table',\n styleUrl: 'biel-table.css',\n shadow: true,\n})\nexport class BielTable {\n\n @Prop() tableData: string;\n\n render() {\n return (\n <div class=\"biel-table-container\" innerHTML={this.tableData}></div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,86 @@
1
+ import { p as proxyCustomElement, H, h } from './p-7b8b1ac3.js';
2
+ import { d as defineCustomElement$3 } from './p-8e08748d.js';
3
+ import { d as defineCustomElement$2 } from './p-f4016e6d.js';
4
+ import { d as defineCustomElement$1 } from './p-5a2466bd.js';
5
+
6
+ const bielChatCss = ".biel-chat-container{display:flex;flex-direction:column;max-height:50vh;overflow-y:auto;padding:10px}.biel-chat-container.fullscreen{height:calc(100vh - (200px + var(--biel-footer-font-size) + 12px));max-height:calc(100vh - (200px + var(--biel-footer-font-size) + 12px))}.biel-chat-container::-webkit-scrollbar{width:6px}.biel-chat-container::-webkit-scrollbar-thumb{background-color:var(--biel-chat-scrollbar-color);border-radius:10px;border:3px solid transparent}.biel-chat-container::-webkit-scrollbar-thumb:hover{background-color:var(--biel-chat-scrollbar-hover-color)}.loading-animation{display:flex;align-items:center;justify-content:center;height:40px;margin-top:10px}.loading-animation .dot{width:8px;height:8px;margin:0 5px;background-color:var(--biel-text-color);border-radius:50%;animation:bounce 1.2s infinite ease-in-out}.loading-animation .dot:nth-child(1){animation-delay:-0.32s}.loading-animation .dot:nth-child(2){animation-delay:-0.16s}.loading-animation .dot:nth-child(3){animation-delay:0s}@keyframes bounce{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}}@media screen and (min-width: 768px){.biel-chat-container.fullscreen{height:calc(100vh - (200px + 12px));max-height:calc(100vh - (200px + 12px))}}";
7
+ const BielChatStyle0 = bielChatCss;
8
+
9
+ const BielChat = /*@__PURE__*/ proxyCustomElement(class BielChat extends H {
10
+ constructor() {
11
+ super();
12
+ this.__registerHost();
13
+ this.__attachShadow();
14
+ this.offset = 0;
15
+ this.messages = [];
16
+ this.isFullscreen = undefined;
17
+ this.isLoading = false;
18
+ }
19
+ handleTextareaHeightChanged(event) {
20
+ this.offset += event.detail;
21
+ if (this.isFullscreen) {
22
+ this.adjustChatHeight();
23
+ }
24
+ }
25
+ adjustChatHeight() {
26
+ const chatContainer = this.el.shadowRoot.querySelector('.biel-chat-container');
27
+ chatContainer.style.height = '';
28
+ if (this.isFullscreen) {
29
+ const previousHeight = parseInt(getComputedStyle(chatContainer).getPropertyValue('height'));
30
+ chatContainer.style.height = `${previousHeight - this.offset}px`;
31
+ }
32
+ }
33
+ componentDidUpdate() {
34
+ this.scrollToBottom();
35
+ this.adjustChatHeight();
36
+ }
37
+ scrollToBottom() {
38
+ const container = this.el.shadowRoot.querySelector('.biel-chat-container');
39
+ if (container) {
40
+ container.scrollTop = container.scrollHeight;
41
+ }
42
+ }
43
+ render() {
44
+ return (h("div", { key: '4bdea230464e58db6f7fb8726bdd5451be57d19c', class: `biel-chat-container ${this.isFullscreen ? 'fullscreen' : ''}` }, this.messages.map((message) => (h("biel-message", { text: message.text, sender: message.sender }))), this.isLoading && (h("div", { key: '148478d5d3dfbd23fa1f18599270bc8d501d3444', class: "loading-animation" }, h("div", { key: '1c95aeff506a63f5f47e7c89f62f032af60d63c9', class: "dot" }), h("div", { key: '505b689618bde42bfeaa362211086af52481d410', class: "dot" }), h("div", { key: '7f53dd97cdc665bb9747a39f128ede88838b7a6a', class: "dot" })))));
45
+ }
46
+ get el() { return this; }
47
+ static get style() { return BielChatStyle0; }
48
+ }, [1, "biel-chat", {
49
+ "messages": [16],
50
+ "isFullscreen": [4, "is-fullscreen"],
51
+ "isLoading": [4, "is-loading"],
52
+ "offset": [32]
53
+ }, [[16, "textareaHeightChanged", "handleTextareaHeightChanged"]]]);
54
+ function defineCustomElement() {
55
+ if (typeof customElements === "undefined") {
56
+ return;
57
+ }
58
+ const components = ["biel-chat", "biel-message", "biel-table", "code-snippet"];
59
+ components.forEach(tagName => { switch (tagName) {
60
+ case "biel-chat":
61
+ if (!customElements.get(tagName)) {
62
+ customElements.define(tagName, BielChat);
63
+ }
64
+ break;
65
+ case "biel-message":
66
+ if (!customElements.get(tagName)) {
67
+ defineCustomElement$3();
68
+ }
69
+ break;
70
+ case "biel-table":
71
+ if (!customElements.get(tagName)) {
72
+ defineCustomElement$2();
73
+ }
74
+ break;
75
+ case "code-snippet":
76
+ if (!customElements.get(tagName)) {
77
+ defineCustomElement$1();
78
+ }
79
+ break;
80
+ } });
81
+ }
82
+ defineCustomElement();
83
+
84
+ export { BielChat as B, defineCustomElement as d };
85
+
86
+ //# sourceMappingURL=p-fe8bcdeb.js.map
@@ -0,0 +1 @@
1
+ {"file":"p-fe8bcdeb.js","mappings":";;;;;AAAA,MAAM,WAAW,GAAG,+sCAA+sC,CAAC;AACpuC,uBAAe,WAAW;;MCMb,QAAQ;;;;;sBAEO,CAAC;wBAEmC,EAAE;;yBAEnC,KAAK;;IAKlC,2BAA2B,CAAC,KAA0B;QACpD,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAC5B,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;KACF;IAED,gBAAgB;QACd,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAc,sBAAsB,CAAC,CAAC;QAC5F,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC5F,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,cAAc,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC;SAClE;KACF;IAED,kBAAkB;QAChB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,cAAc;QACZ,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC3E,IAAI,SAAS,EAAE;YACb,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC,YAAY,CAAC;SAC9C;KACF;IAED,MAAM;QACJ,QACE,4DAAK,KAAK,EAAE,uBAAuB,IAAI,CAAC,YAAY,GAAG,YAAY,GAAG,EAAE,EAAE,IACvE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MACzB,oBAAc,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,GAAiB,CAC1E,CAAC,EACD,IAAI,CAAC,SAAS,KACb,4DAAK,KAAK,EAAC,mBAAmB,IAC5B,4DAAK,KAAK,EAAC,KAAK,GAAO,EACvB,4DAAK,KAAK,EAAC,KAAK,GAAO,EACvB,4DAAK,KAAK,EAAC,KAAK,GAAO,CACnB,CACP,CACG,EACN;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/biel-chat/biel-chat.css?tag=biel-chat&encapsulation=shadow","src/components/biel-chat/biel-chat.tsx"],"sourcesContent":[".biel-chat-container {\n display: flex;\n flex-direction: column;\n max-height: 50vh;\n overflow-y: auto;\n padding: 10px;\n}\n\n.biel-chat-container.fullscreen {\n height: calc(100vh - (200px + var(--biel-footer-font-size) + 12px));\n max-height: calc(100vh - (200px + var(--biel-footer-font-size) + 12px));\n}\n\n.biel-chat-container::-webkit-scrollbar {\n width: 6px;\n}\n\n.biel-chat-container::-webkit-scrollbar-thumb {\n background-color: var(--biel-chat-scrollbar-color);\n border-radius: 10px;\n border: 3px solid transparent;\n}\n\n.biel-chat-container::-webkit-scrollbar-thumb:hover {\n background-color: var(--biel-chat-scrollbar-hover-color);\n}\n\n.loading-animation {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 40px;\n margin-top: 10px;\n}\n\n.loading-animation .dot {\n width: 8px;\n height: 8px;\n margin: 0 5px;\n background-color: var(--biel-text-color);\n border-radius: 50%;\n animation: bounce 1.2s infinite ease-in-out;\n}\n\n.loading-animation .dot:nth-child(1) {\n animation-delay: -0.32s;\n}\n\n.loading-animation .dot:nth-child(2) {\n animation-delay: -0.16s;\n}\n\n.loading-animation .dot:nth-child(3) {\n animation-delay: 0s;\n}\n\n@keyframes bounce {\n\n 0%,\n 80%,\n 100% {\n transform: scale(0);\n }\n\n 40% {\n transform: scale(1);\n }\n}\n\n@media screen and (min-width: 768px) {\n .biel-chat-container.fullscreen {\n height: calc(100vh - (200px + 12px));\n max-height: calc(100vh - (200px + 12px));\n }\n}","import { Component, Element, Prop, h, Listen, State } from '@stencil/core';\n\n@Component({\n tag: 'biel-chat',\n styleUrl: 'biel-chat.css',\n shadow: true,\n})\nexport class BielChat {\n\n @State() offset: number = 0;\n\n @Prop() messages: { text: string, sender: 'user' | 'ai' }[] = [];\n @Prop() isFullscreen: boolean;\n @Prop() isLoading: boolean = false;\n\n @Element() el: HTMLElement;\n\n @Listen('textareaHeightChanged', { target: 'body' })\n handleTextareaHeightChanged(event: CustomEvent<number>) {\n this.offset += event.detail;\n if (this.isFullscreen) {\n this.adjustChatHeight();\n }\n }\n\n adjustChatHeight() {\n const chatContainer = this.el.shadowRoot.querySelector<HTMLElement>('.biel-chat-container');\n chatContainer.style.height = '';\n if (this.isFullscreen) {\n const previousHeight = parseInt(getComputedStyle(chatContainer).getPropertyValue('height'));\n chatContainer.style.height = `${previousHeight - this.offset}px`;\n }\n }\n\n componentDidUpdate() {\n this.scrollToBottom();\n this.adjustChatHeight();\n }\n\n scrollToBottom() {\n const container = this.el.shadowRoot.querySelector('.biel-chat-container');\n if (container) {\n container.scrollTop = container.scrollHeight;\n }\n }\n\n render() {\n return (\n <div class={`biel-chat-container ${this.isFullscreen ? 'fullscreen' : ''}`}>\n {this.messages.map((message) => (\n <biel-message text={message.text} sender={message.sender}></biel-message>\n ))}\n {this.isLoading && (\n <div class=\"loading-animation\">\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n <div class=\"dot\"></div>\n </div>\n )}\n </div>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1,5 @@
1
+ const globalScripts = () => {};
2
+
3
+ export { globalScripts as g };
4
+
5
+ //# sourceMappingURL=app-globals-0f993ce5.js.map
@@ -0,0 +1 @@
1
+ {"file":"app-globals-0f993ce5.js","mappings":"AAAY,MAAC,aAAa,GAAG,MAAM;;;;","names":[],"sources":["@stencil/core/internal/app-globals"],"sourcesContent":["export const globalScripts = () => {};\n"],"version":3}