@bytebrain.ai/bytebrain-ui 0.0.1-alpha-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 (3) hide show
  1. package/README.md +70 -0
  2. package/dist/index.js +853 -0
  3. package/package.json +106 -0
package/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # Getting Started with Create React App
2
+
3
+ This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4
+
5
+ ## Available Scripts
6
+
7
+ In the project directory, you can run:
8
+
9
+ ### `npm start`
10
+
11
+ Runs the app in the development mode.\
12
+ Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13
+
14
+ The page will reload when you make changes.\
15
+ You may also see any lint errors in the console.
16
+
17
+ ### `npm test`
18
+
19
+ Launches the test runner in the interactive watch mode.\
20
+ See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21
+
22
+ ### `npm run build`
23
+
24
+ Builds the app for production to the `build` folder.\
25
+ It correctly bundles React in production mode and optimizes the build for the best performance.
26
+
27
+ The build is minified and the filenames include the hashes.\
28
+ Your app is ready to be deployed!
29
+
30
+ See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31
+
32
+ ### `npm run eject`
33
+
34
+ **Note: this is a one-way operation. Once you `eject`, you can't go back!**
35
+
36
+ If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37
+
38
+ Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39
+
40
+ You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41
+
42
+ ## Learn More
43
+
44
+ You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45
+
46
+ To learn React, check out the [React documentation](https://reactjs.org/).
47
+
48
+ ### Code Splitting
49
+
50
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51
+
52
+ ### Analyzing the Bundle Size
53
+
54
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55
+
56
+ ### Making a Progressive Web App
57
+
58
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59
+
60
+ ### Advanced Configuration
61
+
62
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63
+
64
+ ### Deployment
65
+
66
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67
+
68
+ ### `npm run build` fails to minify
69
+
70
+ This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
package/dist/index.js ADDED
@@ -0,0 +1,853 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import hljs from 'highlight.js';
3
+ import ReactMarkdown from 'react-markdown';
4
+
5
+ var ThumbsUp = function ThumbsUp() {
6
+ return /*#__PURE__*/React.createElement("svg", {
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ fill: "none",
9
+ viewBox: "0 0 24 24",
10
+ strokeWidth: 1.5,
11
+ stroke: "currentColor",
12
+ className: "w-6 h-6"
13
+ }, /*#__PURE__*/React.createElement("path", {
14
+ strokeLinecap: "round",
15
+ strokeLinejoin: "round",
16
+ d: "M6.633 10.5c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75A2.25 2.25 0 0116.5 4.5c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23H5.904M14.25 9h2.25M5.904 18.75c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 01-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 10.203 4.167 9.75 5 9.75h1.053c.472 0 .745.556.5.96a8.958 8.958 0 00-1.302 4.665c0 1.194.232 2.333.654 3.375z"
17
+ }));
18
+ };
19
+
20
+ var ThumbsDown = function ThumbsDown() {
21
+ return /*#__PURE__*/React.createElement("svg", {
22
+ xmlns: "http://www.w3.org/2000/svg",
23
+ fill: "none",
24
+ viewBox: "0 0 24 24",
25
+ strokeWidth: 1.5,
26
+ stroke: "currentColor",
27
+ className: "w-6 h-6"
28
+ }, /*#__PURE__*/React.createElement("path", {
29
+ strokeLinecap: "round",
30
+ strokeLinejoin: "round",
31
+ d: "M7.5 15h2.25m8.024-9.75c.011.05.028.1.052.148.591 1.2.924 2.55.924 3.977a8.96 8.96 0 01-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398C20.613 14.547 19.833 15 19 15h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 00.303-.54m.023-8.25H16.48a4.5 4.5 0 01-1.423-.23l-3.114-1.04a4.5 4.5 0 00-1.423-.23H6.504c-.618 0-1.217.247-1.605.729A11.95 11.95 0 002.25 12c0 .434.023.863.068 1.285C2.427 14.306 3.346 15 4.372 15h3.126c.618 0 .991.724.725 1.282A7.471 7.471 0 007.5 19.5a2.25 2.25 0 002.25 2.25.75.75 0 00.75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 002.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384"
32
+ }));
33
+ };
34
+
35
+ function _iterableToArrayLimit(r, l) {
36
+ var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
37
+ if (null != t) {
38
+ var e,
39
+ n,
40
+ i,
41
+ u,
42
+ a = [],
43
+ f = !0,
44
+ o = !1;
45
+ try {
46
+ if (i = (t = t.call(r)).next, 0 === l) {
47
+ if (Object(t) !== t) return;
48
+ f = !1;
49
+ } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
50
+ } catch (r) {
51
+ o = !0, n = r;
52
+ } finally {
53
+ try {
54
+ if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
55
+ } finally {
56
+ if (o) throw n;
57
+ }
58
+ }
59
+ return a;
60
+ }
61
+ }
62
+ function ownKeys(e, r) {
63
+ var t = Object.keys(e);
64
+ if (Object.getOwnPropertySymbols) {
65
+ var o = Object.getOwnPropertySymbols(e);
66
+ r && (o = o.filter(function (r) {
67
+ return Object.getOwnPropertyDescriptor(e, r).enumerable;
68
+ })), t.push.apply(t, o);
69
+ }
70
+ return t;
71
+ }
72
+ function _objectSpread2(e) {
73
+ for (var r = 1; r < arguments.length; r++) {
74
+ var t = null != arguments[r] ? arguments[r] : {};
75
+ r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {
76
+ _defineProperty(e, r, t[r]);
77
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {
78
+ Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));
79
+ });
80
+ }
81
+ return e;
82
+ }
83
+ function _regeneratorRuntime() {
84
+ _regeneratorRuntime = function () {
85
+ return e;
86
+ };
87
+ var t,
88
+ e = {},
89
+ r = Object.prototype,
90
+ n = r.hasOwnProperty,
91
+ o = Object.defineProperty || function (t, e, r) {
92
+ t[e] = r.value;
93
+ },
94
+ i = "function" == typeof Symbol ? Symbol : {},
95
+ a = i.iterator || "@@iterator",
96
+ c = i.asyncIterator || "@@asyncIterator",
97
+ u = i.toStringTag || "@@toStringTag";
98
+ function define(t, e, r) {
99
+ return Object.defineProperty(t, e, {
100
+ value: r,
101
+ enumerable: !0,
102
+ configurable: !0,
103
+ writable: !0
104
+ }), t[e];
105
+ }
106
+ try {
107
+ define({}, "");
108
+ } catch (t) {
109
+ define = function (t, e, r) {
110
+ return t[e] = r;
111
+ };
112
+ }
113
+ function wrap(t, e, r, n) {
114
+ var i = e && e.prototype instanceof Generator ? e : Generator,
115
+ a = Object.create(i.prototype),
116
+ c = new Context(n || []);
117
+ return o(a, "_invoke", {
118
+ value: makeInvokeMethod(t, r, c)
119
+ }), a;
120
+ }
121
+ function tryCatch(t, e, r) {
122
+ try {
123
+ return {
124
+ type: "normal",
125
+ arg: t.call(e, r)
126
+ };
127
+ } catch (t) {
128
+ return {
129
+ type: "throw",
130
+ arg: t
131
+ };
132
+ }
133
+ }
134
+ e.wrap = wrap;
135
+ var h = "suspendedStart",
136
+ l = "suspendedYield",
137
+ f = "executing",
138
+ s = "completed",
139
+ y = {};
140
+ function Generator() {}
141
+ function GeneratorFunction() {}
142
+ function GeneratorFunctionPrototype() {}
143
+ var p = {};
144
+ define(p, a, function () {
145
+ return this;
146
+ });
147
+ var d = Object.getPrototypeOf,
148
+ v = d && d(d(values([])));
149
+ v && v !== r && n.call(v, a) && (p = v);
150
+ var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
151
+ function defineIteratorMethods(t) {
152
+ ["next", "throw", "return"].forEach(function (e) {
153
+ define(t, e, function (t) {
154
+ return this._invoke(e, t);
155
+ });
156
+ });
157
+ }
158
+ function AsyncIterator(t, e) {
159
+ function invoke(r, o, i, a) {
160
+ var c = tryCatch(t[r], t, o);
161
+ if ("throw" !== c.type) {
162
+ var u = c.arg,
163
+ h = u.value;
164
+ return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
165
+ invoke("next", t, i, a);
166
+ }, function (t) {
167
+ invoke("throw", t, i, a);
168
+ }) : e.resolve(h).then(function (t) {
169
+ u.value = t, i(u);
170
+ }, function (t) {
171
+ return invoke("throw", t, i, a);
172
+ });
173
+ }
174
+ a(c.arg);
175
+ }
176
+ var r;
177
+ o(this, "_invoke", {
178
+ value: function (t, n) {
179
+ function callInvokeWithMethodAndArg() {
180
+ return new e(function (e, r) {
181
+ invoke(t, n, e, r);
182
+ });
183
+ }
184
+ return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
185
+ }
186
+ });
187
+ }
188
+ function makeInvokeMethod(e, r, n) {
189
+ var o = h;
190
+ return function (i, a) {
191
+ if (o === f) throw new Error("Generator is already running");
192
+ if (o === s) {
193
+ if ("throw" === i) throw a;
194
+ return {
195
+ value: t,
196
+ done: !0
197
+ };
198
+ }
199
+ for (n.method = i, n.arg = a;;) {
200
+ var c = n.delegate;
201
+ if (c) {
202
+ var u = maybeInvokeDelegate(c, n);
203
+ if (u) {
204
+ if (u === y) continue;
205
+ return u;
206
+ }
207
+ }
208
+ if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
209
+ if (o === h) throw o = s, n.arg;
210
+ n.dispatchException(n.arg);
211
+ } else "return" === n.method && n.abrupt("return", n.arg);
212
+ o = f;
213
+ var p = tryCatch(e, r, n);
214
+ if ("normal" === p.type) {
215
+ if (o = n.done ? s : l, p.arg === y) continue;
216
+ return {
217
+ value: p.arg,
218
+ done: n.done
219
+ };
220
+ }
221
+ "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
222
+ }
223
+ };
224
+ }
225
+ function maybeInvokeDelegate(e, r) {
226
+ var n = r.method,
227
+ o = e.iterator[n];
228
+ if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
229
+ var i = tryCatch(o, e.iterator, r.arg);
230
+ if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
231
+ var a = i.arg;
232
+ return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
233
+ }
234
+ function pushTryEntry(t) {
235
+ var e = {
236
+ tryLoc: t[0]
237
+ };
238
+ 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
239
+ }
240
+ function resetTryEntry(t) {
241
+ var e = t.completion || {};
242
+ e.type = "normal", delete e.arg, t.completion = e;
243
+ }
244
+ function Context(t) {
245
+ this.tryEntries = [{
246
+ tryLoc: "root"
247
+ }], t.forEach(pushTryEntry, this), this.reset(!0);
248
+ }
249
+ function values(e) {
250
+ if (e || "" === e) {
251
+ var r = e[a];
252
+ if (r) return r.call(e);
253
+ if ("function" == typeof e.next) return e;
254
+ if (!isNaN(e.length)) {
255
+ var o = -1,
256
+ i = function next() {
257
+ for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
258
+ return next.value = t, next.done = !0, next;
259
+ };
260
+ return i.next = i;
261
+ }
262
+ }
263
+ throw new TypeError(typeof e + " is not iterable");
264
+ }
265
+ return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
266
+ value: GeneratorFunctionPrototype,
267
+ configurable: !0
268
+ }), o(GeneratorFunctionPrototype, "constructor", {
269
+ value: GeneratorFunction,
270
+ configurable: !0
271
+ }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
272
+ var e = "function" == typeof t && t.constructor;
273
+ return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
274
+ }, e.mark = function (t) {
275
+ return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
276
+ }, e.awrap = function (t) {
277
+ return {
278
+ __await: t
279
+ };
280
+ }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
281
+ return this;
282
+ }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
283
+ void 0 === i && (i = Promise);
284
+ var a = new AsyncIterator(wrap(t, r, n, o), i);
285
+ return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
286
+ return t.done ? t.value : a.next();
287
+ });
288
+ }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
289
+ return this;
290
+ }), define(g, "toString", function () {
291
+ return "[object Generator]";
292
+ }), e.keys = function (t) {
293
+ var e = Object(t),
294
+ r = [];
295
+ for (var n in e) r.push(n);
296
+ return r.reverse(), function next() {
297
+ for (; r.length;) {
298
+ var t = r.pop();
299
+ if (t in e) return next.value = t, next.done = !1, next;
300
+ }
301
+ return next.done = !0, next;
302
+ };
303
+ }, e.values = values, Context.prototype = {
304
+ constructor: Context,
305
+ reset: function (e) {
306
+ if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
307
+ },
308
+ stop: function () {
309
+ this.done = !0;
310
+ var t = this.tryEntries[0].completion;
311
+ if ("throw" === t.type) throw t.arg;
312
+ return this.rval;
313
+ },
314
+ dispatchException: function (e) {
315
+ if (this.done) throw e;
316
+ var r = this;
317
+ function handle(n, o) {
318
+ return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
319
+ }
320
+ for (var o = this.tryEntries.length - 1; o >= 0; --o) {
321
+ var i = this.tryEntries[o],
322
+ a = i.completion;
323
+ if ("root" === i.tryLoc) return handle("end");
324
+ if (i.tryLoc <= this.prev) {
325
+ var c = n.call(i, "catchLoc"),
326
+ u = n.call(i, "finallyLoc");
327
+ if (c && u) {
328
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
329
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
330
+ } else if (c) {
331
+ if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
332
+ } else {
333
+ if (!u) throw new Error("try statement without catch or finally");
334
+ if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
335
+ }
336
+ }
337
+ }
338
+ },
339
+ abrupt: function (t, e) {
340
+ for (var r = this.tryEntries.length - 1; r >= 0; --r) {
341
+ var o = this.tryEntries[r];
342
+ if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
343
+ var i = o;
344
+ break;
345
+ }
346
+ }
347
+ i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
348
+ var a = i ? i.completion : {};
349
+ return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
350
+ },
351
+ complete: function (t, e) {
352
+ if ("throw" === t.type) throw t.arg;
353
+ return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
354
+ },
355
+ finish: function (t) {
356
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
357
+ var r = this.tryEntries[e];
358
+ if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
359
+ }
360
+ },
361
+ catch: function (t) {
362
+ for (var e = this.tryEntries.length - 1; e >= 0; --e) {
363
+ var r = this.tryEntries[e];
364
+ if (r.tryLoc === t) {
365
+ var n = r.completion;
366
+ if ("throw" === n.type) {
367
+ var o = n.arg;
368
+ resetTryEntry(r);
369
+ }
370
+ return o;
371
+ }
372
+ }
373
+ throw new Error("illegal catch attempt");
374
+ },
375
+ delegateYield: function (e, r, n) {
376
+ return this.delegate = {
377
+ iterator: values(e),
378
+ resultName: r,
379
+ nextLoc: n
380
+ }, "next" === this.method && (this.arg = t), y;
381
+ }
382
+ }, e;
383
+ }
384
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
385
+ try {
386
+ var info = gen[key](arg);
387
+ var value = info.value;
388
+ } catch (error) {
389
+ reject(error);
390
+ return;
391
+ }
392
+ if (info.done) {
393
+ resolve(value);
394
+ } else {
395
+ Promise.resolve(value).then(_next, _throw);
396
+ }
397
+ }
398
+ function _asyncToGenerator(fn) {
399
+ return function () {
400
+ var self = this,
401
+ args = arguments;
402
+ return new Promise(function (resolve, reject) {
403
+ var gen = fn.apply(self, args);
404
+ function _next(value) {
405
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
406
+ }
407
+ function _throw(err) {
408
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
409
+ }
410
+ _next(undefined);
411
+ });
412
+ };
413
+ }
414
+ function _defineProperty(obj, key, value) {
415
+ key = _toPropertyKey(key);
416
+ if (key in obj) {
417
+ Object.defineProperty(obj, key, {
418
+ value: value,
419
+ enumerable: true,
420
+ configurable: true,
421
+ writable: true
422
+ });
423
+ } else {
424
+ obj[key] = value;
425
+ }
426
+ return obj;
427
+ }
428
+ function _slicedToArray(arr, i) {
429
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
430
+ }
431
+ function _toConsumableArray(arr) {
432
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
433
+ }
434
+ function _arrayWithoutHoles(arr) {
435
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
436
+ }
437
+ function _arrayWithHoles(arr) {
438
+ if (Array.isArray(arr)) return arr;
439
+ }
440
+ function _iterableToArray(iter) {
441
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
442
+ }
443
+ function _unsupportedIterableToArray(o, minLen) {
444
+ if (!o) return;
445
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
446
+ var n = Object.prototype.toString.call(o).slice(8, -1);
447
+ if (n === "Object" && o.constructor) n = o.constructor.name;
448
+ if (n === "Map" || n === "Set") return Array.from(o);
449
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
450
+ }
451
+ function _arrayLikeToArray(arr, len) {
452
+ if (len == null || len > arr.length) len = arr.length;
453
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
454
+ return arr2;
455
+ }
456
+ function _nonIterableSpread() {
457
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
458
+ }
459
+ function _nonIterableRest() {
460
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
461
+ }
462
+ function _toPrimitive(input, hint) {
463
+ if (typeof input !== "object" || input === null) return input;
464
+ var prim = input[Symbol.toPrimitive];
465
+ if (prim !== undefined) {
466
+ var res = prim.call(input, hint || "default");
467
+ if (typeof res !== "object") return res;
468
+ throw new TypeError("@@toPrimitive must return a primitive value.");
469
+ }
470
+ return (hint === "string" ? String : Number)(input);
471
+ }
472
+ function _toPropertyKey(arg) {
473
+ var key = _toPrimitive(arg, "string");
474
+ return typeof key === "symbol" ? key : String(key);
475
+ }
476
+
477
+ var FeedbackForm = function FeedbackForm(props) {
478
+ var _useState = useState(props.chatHistory),
479
+ _useState2 = _slicedToArray(_useState, 2),
480
+ chatHistory = _useState2[0],
481
+ setChatHistory = _useState2[1];
482
+ var _useState3 = useState(null),
483
+ _useState4 = _slicedToArray(_useState3, 2),
484
+ isUseful = _useState4[0],
485
+ setIsUseful = _useState4[1];
486
+ var _useState5 = useState(false),
487
+ _useState6 = _slicedToArray(_useState5, 2),
488
+ feedbackSubmitted = _useState6[0],
489
+ setFeedbackSubmitted = _useState6[1];
490
+ useEffect(function () {
491
+ setChatHistory(props.chatHistory);
492
+ }, [props]);
493
+ var handleSubmit = /*#__PURE__*/function () {
494
+ var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(value) {
495
+ var response;
496
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
497
+ while (1) switch (_context.prev = _context.next) {
498
+ case 0:
499
+ _context.prev = 0;
500
+ if (!feedbackSubmitted) {
501
+ _context.next = 3;
502
+ break;
503
+ }
504
+ return _context.abrupt("return");
505
+ case 3:
506
+ setIsUseful(value);
507
+ _context.next = 6;
508
+ return fetch(props.baseHttpUrl + '/feedback/', {
509
+ method: 'POST',
510
+ headers: {
511
+ 'Content-Type': 'application/json'
512
+ },
513
+ body: JSON.stringify({
514
+ chat_history: chatHistory,
515
+ is_useful: value
516
+ })
517
+ });
518
+ case 6:
519
+ response = _context.sent;
520
+ if (response.ok) {
521
+ console.log('Feedback submitted successfully');
522
+ setFeedbackSubmitted(true);
523
+ } else {
524
+ console.error('Failed to submit feedback');
525
+ }
526
+ _context.next = 13;
527
+ break;
528
+ case 10:
529
+ _context.prev = 10;
530
+ _context.t0 = _context["catch"](0);
531
+ console.error('Error submitting feedback:', _context.t0);
532
+ case 13:
533
+ case "end":
534
+ return _context.stop();
535
+ }
536
+ }, _callee, null, [[0, 10]]);
537
+ }));
538
+ return function handleSubmit(_x) {
539
+ return _ref.apply(this, arguments);
540
+ };
541
+ }();
542
+ return /*#__PURE__*/React.createElement("form", null, /*#__PURE__*/React.createElement("button", {
543
+ type: "button",
544
+ title: "It was helpful to me!",
545
+ className: "inline-block ".concat(feedbackSubmitted && !isUseful ? 'hidden' : ''),
546
+ onClick: function onClick() {
547
+ return handleSubmit(true);
548
+ },
549
+ disabled: feedbackSubmitted
550
+ }, /*#__PURE__*/React.createElement(ThumbsUp, null)), /*#__PURE__*/React.createElement("button", {
551
+ type: "button",
552
+ title: "It didn't help me at all!",
553
+ className: "inline-block ".concat(feedbackSubmitted && isUseful ? 'hidden' : ''),
554
+ onClick: function onClick() {
555
+ return handleSubmit(false);
556
+ },
557
+ disabled: feedbackSubmitted
558
+ }, /*#__PURE__*/React.createElement(ThumbsDown, null)));
559
+ };
560
+
561
+ function styleInject(css, ref) {
562
+ if ( ref === void 0 ) ref = {};
563
+ var insertAt = ref.insertAt;
564
+
565
+ if (!css || typeof document === 'undefined') { return; }
566
+
567
+ var head = document.head || document.getElementsByTagName('head')[0];
568
+ var style = document.createElement('style');
569
+ style.type = 'text/css';
570
+
571
+ if (insertAt === 'top') {
572
+ if (head.firstChild) {
573
+ head.insertBefore(style, head.firstChild);
574
+ } else {
575
+ head.appendChild(style);
576
+ }
577
+ } else {
578
+ head.appendChild(style);
579
+ }
580
+
581
+ if (style.styleSheet) {
582
+ style.styleSheet.cssText = css;
583
+ } else {
584
+ style.appendChild(document.createTextNode(css));
585
+ }
586
+ }
587
+
588
+ var css_248z$1 = "pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!\n Theme: GitHub\n Description: Light theme as seen on github.com\n Author: github.com\n Maintainer: @Hirse\n Updated: 2021-05-15\n\n Outdated base version: https://github.com/primer/github-syntax-light\n Current colors taken from GitHub's CSS\n*/.hljs{background:#fff;color:#24292e}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#d73a49}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#6f42c1}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id,.hljs-variable{color:#005cc5}.hljs-meta .hljs-string,.hljs-regexp,.hljs-string{color:#032f62}.hljs-built_in,.hljs-symbol{color:#e36209}.hljs-code,.hljs-comment,.hljs-formula{color:#6a737d}.hljs-name,.hljs-quote,.hljs-selector-pseudo,.hljs-selector-tag{color:#22863a}.hljs-subst{color:#24292e}.hljs-section{color:#005cc5;font-weight:700}.hljs-bullet{color:#735c0f}.hljs-emphasis{color:#24292e;font-style:italic}.hljs-strong{color:#24292e;font-weight:700}.hljs-addition{background-color:#f0fff4;color:#22863a}.hljs-deletion{background-color:#ffeef0;color:#b31d28}";
589
+ styleInject(css_248z$1);
590
+
591
+ var img$1 = "data:image/png;base64,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";
592
+
593
+ var img = "data:image/png;base64,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";
594
+
595
+ function ChatMessage(props) {
596
+ var _React$useState = React.useState(props.chatHistory),
597
+ _React$useState2 = _slicedToArray(_React$useState, 2),
598
+ chatHistory = _React$useState2[0],
599
+ setChatHistory = _React$useState2[1];
600
+ useEffect(function () {
601
+ if (props.highlight && props.userType === "bot") {
602
+ document.querySelectorAll("#" + props.id + " pre code").forEach(function (el) {
603
+ hljs.highlightElement(el);
604
+ });
605
+ }
606
+ });
607
+ useEffect(function () {
608
+ setChatHistory(props.chatHistory);
609
+ }, [props]);
610
+ var chatMessage;
611
+ if (props.userType === "user") {
612
+ chatMessage = /*#__PURE__*/React.createElement("div", {
613
+ className: "max-w-[60%] text-gray-900 chat-message user-message text-base flex flex-row space-x-2",
614
+ id: props.id
615
+ }, /*#__PURE__*/React.createElement("img", {
616
+ src: img,
617
+ alt: "User Profile",
618
+ className: "w-6 h-6 rounded-full"
619
+ }), /*#__PURE__*/React.createElement(ReactMarkdown, {
620
+ className: "px-4 py-2 rounded-lg rounded-bl-none bg-gray-300 text-gray-600"
621
+ }, props.text));
622
+ } else if (props.userType === "bot") {
623
+ chatMessage = /*#__PURE__*/React.createElement("div", {
624
+ className: "max-w-[60%] chat-message bot-message text-base flex flex-row space-x-2",
625
+ id: props.id
626
+ }, /*#__PURE__*/React.createElement("img", {
627
+ src: img$1,
628
+ alt: "Robot Profile",
629
+ className: "w-6 h-6 rounded-full"
630
+ }), /*#__PURE__*/React.createElement("div", {
631
+ className: "w-full"
632
+ }, /*#__PURE__*/React.createElement(ReactMarkdown, {
633
+ className: "px-4 py-2 space-y-2 rounded-t-lg bg-blue-600 text-white"
634
+ }, props.text), /*#__PURE__*/React.createElement(References, {
635
+ items: props.references
636
+ })), /*#__PURE__*/React.createElement(FeedbackForm, {
637
+ chatHistory: chatHistory.slice(1, props.index + 1),
638
+ baseHttpUrl: props.baseHttpUrl
639
+ }));
640
+ }
641
+ return chatMessage;
642
+ }
643
+ function References(props) {
644
+ return /*#__PURE__*/React.createElement(React.Fragment, null, " ", props.items !== undefined && props.items.length > 0 ? /*#__PURE__*/React.createElement("div", {
645
+ className: "flex flex-wrap text-xs px-4 py-2 rounded-b-lg rounded-br-none bg-blue-500 text-white"
646
+ }, /*#__PURE__*/React.createElement("p", {
647
+ className: "text-sm"
648
+ }, "You can discover more information by checking out the pages mentioned below:"), /*#__PURE__*/React.createElement("ol", {
649
+ className: "flex flex-wrap list-inside"
650
+ }, props.items.map(function (item, index) {
651
+ return /*#__PURE__*/React.createElement("li", {
652
+ key: index,
653
+ className: "mr-2"
654
+ }, /*#__PURE__*/React.createElement("a", {
655
+ className: "underline text-white text-sm",
656
+ href: item.page_url
657
+ }, item.page_title));
658
+ }))) : null);
659
+ }
660
+
661
+ var css_248z = "/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:\"\"}html{-webkit-text-size-adjust:100%;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-variation-settings:normal;line-height:1.5;tab-size:4}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.visible{visibility:visible}.fixed{position:fixed}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.left-5{left:1.25rem}.right-0{right:0}.right-5{right:1.25rem}.mb-6{margin-bottom:1.5rem}.mr-2{margin-right:.5rem}.mt-4{margin-top:1rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.hidden{display:none}.h-10{height:2.5rem}.h-6{height:1.5rem}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.w-6{width:1.5rem}.w-full{width:100%}.max-w-\\[60\\%\\]{max-width:60%}.list-inside{list-style-position:inside}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.justify-between{justify-content:space-between}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.overflow-y-scroll{overflow-y:scroll}.scroll-smooth{scroll-behavior:smooth}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-b-lg{border-bottom-left-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-bl-none{border-bottom-left-radius:0}.rounded-br-none{border-bottom-right-radius:0}.rounded-tl-md{border-top-left-radius:.375rem}.border-0{border-width:0}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity))}.p-5{padding:1.25rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-normal{font-weight:400}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.transition{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}#scroller *{overflow-anchor:none}#anchor{height:1px;overflow-anchor:auto}p code{border-radius:3px}.chat-message p{margin:0}.user-message p code{background-color:#f0f8ff}.bot-message li>code,.bot-message p code{background-color:#6495ed}ol{list-style-type:decimal;margin:1em}li{padding:.2em}#ChatPrompt ::-webkit-scrollbar{display:none}pre{color:#000;white-space:pre-wrap;word-break:break-word}.hover\\:scale-95:hover{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity))}.focus\\:outline-none:focus{outline:2px solid #0000;outline-offset:2px}.disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\\:opacity-75:disabled{opacity:.75}@media (min-width:640px){.sm\\:w-\\[100\\%\\]{width:100%}}@media (min-width:768px){.md\\:w-\\[100\\%\\]{width:100%}}@media (min-width:1024px){.lg\\:w-\\[50\\%\\]{width:50%}}@media (min-width:1280px){.xl\\:w-\\[40\\%\\]{width:40%}}@media (min-width:1536px){.\\32xl\\:w-\\[30\\%\\]{width:30%}}";
662
+ styleInject(css_248z);
663
+
664
+ var ChatPrompt = function ChatPrompt(props) {
665
+ function getRandom(arr) {
666
+ var randomIndex = Math.floor(Math.random() * arr.length);
667
+ return arr.splice(randomIndex, 1)[0];
668
+ }
669
+ var _props$title = props.title,
670
+ title = _props$title === void 0 ? 'ByteBrain ChatBot' : _props$title,
671
+ _props$defaultQuestio = props.defaultQuestion,
672
+ defaultQuestion = _props$defaultQuestio === void 0 ? 'Send your message' : _props$defaultQuestio,
673
+ websocketHost = props.websocketHost,
674
+ websocketPort = props.websocketPort,
675
+ websocketEndpoint = props.websocketEndpoint,
676
+ welcomeMessages = props.welcomeMessages,
677
+ fullScreen = props.fullScreen;
678
+ var greetings = welcomeMessages.map(function (m) {
679
+ return {
680
+ userType: "bot",
681
+ message: m,
682
+ completed: true
683
+ };
684
+ });
685
+ var _React$useState = React.useState(''),
686
+ _React$useState2 = _slicedToArray(_React$useState, 2),
687
+ question = _React$useState2[0],
688
+ setQuestion = _React$useState2[1];
689
+ var _React$useState3 = React.useState([getRandom(greetings)]),
690
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
691
+ messages = _React$useState4[0],
692
+ setMessages = _React$useState4[1];
693
+ var host = websocketHost || window.location.hostname;
694
+ var port = websocketPort === "80" ? "" : ":" + websocketPort;
695
+ var protocol = websocketPort === "80" ? "wss://" : "ws://";
696
+ var httpProtocol = websocketPort === "80" ? 'https://' : "http://";
697
+ var baseHttpUrl = httpProtocol + host + port;
698
+ var handleChange = function handleChange(event) {
699
+ setQuestion(event.target.value);
700
+ };
701
+ var handleSubmit = function handleSubmit(event) {
702
+ event.preventDefault();
703
+ handleClick();
704
+ event.target.reset();
705
+ };
706
+ function isButtonDisabled() {
707
+ if (messages.length === 0) {
708
+ return false;
709
+ } else if (messages[messages.length - 1].userType == "user") {
710
+ return true;
711
+ } else if (messages[messages.length - 1].userType == "bot") {
712
+ return !messages[messages.length - 1].completed ? true : false;
713
+ }
714
+ }
715
+ var handleClick = function handleClick() {
716
+ var ws = new WebSocket(protocol + host + port + websocketEndpoint);
717
+ ws.onopen = function (event) {
718
+ setMessages(function (messages) {
719
+ return messages.concat([{
720
+ userType: "user",
721
+ message: question,
722
+ completed: true
723
+ }]);
724
+ });
725
+ var history = messages.map(function (m) {
726
+ return m.message;
727
+ }).slice(1);
728
+ var data = {
729
+ "question": question,
730
+ "history": history
731
+ };
732
+ ws.send(JSON.stringify(data));
733
+ };
734
+ ws.onmessage = function (event) {
735
+ var result = JSON.parse(event.data);
736
+ var word = result.token;
737
+ var references = result.references;
738
+ var completed = result.completed;
739
+ setMessages(function (messages) {
740
+ if (messages.length === 0 || messages[messages.length - 1].userType === "user") {
741
+ return [].concat(_toConsumableArray(messages), [{
742
+ userType: "bot",
743
+ message: word,
744
+ completed: completed
745
+ }]);
746
+ } else {
747
+ var updatedMessages = _toConsumableArray(messages);
748
+ updatedMessages[updatedMessages.length - 1] = _objectSpread2(_objectSpread2({}, updatedMessages[updatedMessages.length - 1]), {}, {
749
+ message: updatedMessages[updatedMessages.length - 1].message + word,
750
+ references: references,
751
+ completed: completed
752
+ });
753
+ return updatedMessages;
754
+ }
755
+ });
756
+ };
757
+ };
758
+ return /*#__PURE__*/React.createElement("div", {
759
+ id: "ChatPrompt",
760
+ className: "justify-between flex flex-col p-5 rounded-md bg-gray-100 max-h-screen ".concat(fullScreen ? "h-screen" : "")
761
+ }, /*#__PURE__*/React.createElement("h1", {
762
+ className: "text-orange-600 text-3xl font-bold mb-6"
763
+ }, title), /*#__PURE__*/React.createElement("div", {
764
+ id: "scroller",
765
+ className: "flex flex-col space-y-4 overflow-y-scroll scroll-smooth"
766
+ }, messages.map(function (m, id) {
767
+ return /*#__PURE__*/React.createElement(ChatMessage, {
768
+ key: id,
769
+ id: "chat" + id,
770
+ index: id,
771
+ userType: m.userType,
772
+ text: m.message,
773
+ references: m.references,
774
+ highlight: m.completed,
775
+ chatHistory: messages,
776
+ baseHttpUrl: baseHttpUrl
777
+ });
778
+ }), /*#__PURE__*/React.createElement("div", {
779
+ id: "anchor"
780
+ })), /*#__PURE__*/React.createElement("form", {
781
+ onSubmit: handleSubmit,
782
+ className: "flex bottom-5 left-5 right-5 h-10 mt-4"
783
+ }, /*#__PURE__*/React.createElement("input", {
784
+ type: "text",
785
+ id: "promptInput",
786
+ onChange: handleChange,
787
+ className: "w-full px-4 py-2 border-0 rounded-md text-base text-black bg-gray-200 placeholder-gray-500 focus:outline-none font-sans font-normal",
788
+ placeholder: defaultQuestion
789
+ }), /*#__PURE__*/React.createElement("button", {
790
+ disabled: isButtonDisabled(),
791
+ id: "generateBtn",
792
+ type: "submit",
793
+ className: "px-6 rounded-md border-0 bg-black text-base text-white hover:bg-gray-900 focus:outline-none disabled:opacity-75 disabled:cursor-not-allowed font-sans font-normal"
794
+ }, "Send")));
795
+ };
796
+
797
+ var useClickOutside = function useClickOutside(ref, callback) {
798
+ var handleClick = function handleClick(event) {
799
+ if (event.target.id === "chat-button") return null;
800
+ if (ref.current && !ref.current.contains(event.target)) {
801
+ callback();
802
+ }
803
+ };
804
+ useEffect(function () {
805
+ document.addEventListener('click', handleClick);
806
+ return function () {
807
+ document.removeEventListener('click', handleClick);
808
+ };
809
+ });
810
+ };
811
+ function PopupChatWindow(_ref) {
812
+ var visible = _ref.visible,
813
+ onClose = _ref.onClose;
814
+ var ref = useRef();
815
+ useClickOutside(ref, onClose);
816
+ var welcome_messages = ["🌟 Greetings from ZIO Chat! 🌟 Have questions about ZIO? Look no further! I'm here to be your ZIO guru. Whether you're a seasoned pro or just starting out, I've got answers tailored just for you. Fire away with your ZIO queries, and I'll hit you back with the best insights I've got. Let's dive into the world of ZIO together!", "🔥 Ignite your ZIO journey with ZIO Chat! 🔥 Ready to unravel the intricacies of ZIO? As your trusty sidekick, I'm here to light the way. No matter if you're wandering through functional forests or traversing effectful landscapes, I've got answers to keep you on track. Your ZIO adventure starts here – ask me anything and let's explore together!", "Hello! 😊 I'm your ZIO Chat Bot, designed to be your go-to resource for all things ZIO! Whether you're new to this powerful functional effect system or a seasoned pro, I'm here to assist you. ZIO empowers you to build concurrent and resilient applications in Scala, offering referential transparency, composable data types, type-safety, and more. So, go ahead and ask me anything about ZIO – I'm here to provide the answers you need! 🤖", "Hi there! 👋 I'm ZIO Chat, your friendly neighborhood ZIO expert. I'm here to help you navigate the world of ZIO. Whether you're a seasoned pro or just starting out, fire away with your ZIO questions. I will hit you back with the best insights I've got. Let's dive into the world of ZIO together!", "🎉 Hey there, ZIO aficionado! 🎉 Step into the ZIO wonderland with me as your guide. Whether you're a functional fanatic or just dipping your toes into the ZIO ecosystem, I'm here to make your journey smooth. Got ZIO questions? I've got answers! Let's navigate the ZIO universe together and unlock its infinite possibilities!", "Hi, fellow coder! 🌟 Welcome to your ZIO adventure with the ZIO Chat Bot. 🚀 Let's master functional Scala together. From referential transparency to concurrent prowess, I've got your back. Ready to dive in? Your questions, my insights – let's conquer ZIO! 💡🤖"];
817
+ return /*#__PURE__*/React.createElement("div", {
818
+ ref: ref,
819
+ id: "container",
820
+ className: "fixed 2xl:w-[30%] xl:w-[40%] lg:w-[50%] md:w-[100%] sm:w-[100%] bottom-0 right-0 ".concat(visible ? 'block' : 'hidden', " ")
821
+ }, /*#__PURE__*/React.createElement(ChatPrompt, {
822
+ title: "ZIO Chat",
823
+ defaultQuestion: "Write a question about ZIO!",
824
+ websocketHost: "localhost",
825
+ websocketPort: "8081",
826
+ websocketEndpoint: "/chat",
827
+ welcomeMessages: welcome_messages,
828
+ fullScreen: false
829
+ }));
830
+ }
831
+
832
+ var ChatApp = function ChatApp(props) {
833
+ var _useState = useState(false),
834
+ _useState2 = _slicedToArray(_useState, 2),
835
+ isOpen = _useState2[0],
836
+ setIsOpen = _useState2[1];
837
+ var close = function close() {
838
+ return setIsOpen(false);
839
+ };
840
+ var open = function open() {
841
+ return setIsOpen(true);
842
+ };
843
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("button", {
844
+ id: "chat-button",
845
+ className: "fixed border-0 font-sans bg-orange-400 rounded-tl-md text-black px-3 py-2 hover:scale-95 transition text-ms bottom-0 right-0",
846
+ onClick: open
847
+ }, "ZIO Chat!"), /*#__PURE__*/React.createElement(PopupChatWindow, {
848
+ onClose: close,
849
+ visible: isOpen
850
+ }));
851
+ };
852
+
853
+ export { ChatApp, ChatMessage, ChatPrompt, FeedbackForm, PopupChatWindow, ThumbsDown, ThumbsUp };
package/package.json ADDED
@@ -0,0 +1,106 @@
1
+ {
2
+ "name": "@bytebrain.ai/bytebrain-ui",
3
+ "version": "0.0.1-alpha-1",
4
+ "engines": {
5
+ "node": "18.x"
6
+ },
7
+ "main": "dist/index.js",
8
+ "module": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "dependencies": {
15
+ "highlight.js": "^11.8.0",
16
+ "path-browserify": "^1.0.1",
17
+ "process": "^0.11.10",
18
+ "react-markdown": "^8.0.7",
19
+ "rollup-plugin-replace": "^2.2.0"
20
+ },
21
+ "scripts": {
22
+ "start": "react-scripts start",
23
+ "build": "react-scripts build",
24
+ "test": "react-scripts test",
25
+ "eject": "react-scripts eject",
26
+ "storybook": "concurrently \"yarn:watch:*\"",
27
+ "build-storybook": "concurrently \"yarn:build:*\"",
28
+ "watch:storybook": "storybook dev -p 6006",
29
+ "build:storybook": "storybook build",
30
+ "build:lib": "rm -rf dist && babel src/stories --out-dir dist --copy-files --presets @babel/preset-env,@babel/preset-react",
31
+ "build:tsc": "tsc",
32
+ "build-lib": "rollup --config"
33
+ },
34
+ "eslintConfig": {
35
+ "extends": [
36
+ "react-app",
37
+ "react-app/jest"
38
+ ],
39
+ "overrides": [
40
+ {
41
+ "files": [
42
+ "**/*.stories.*"
43
+ ],
44
+ "rules": {
45
+ "import/no-anonymous-default-export": "off"
46
+ }
47
+ }
48
+ ]
49
+ },
50
+ "browserslist": {
51
+ "production": [
52
+ ">0.2%",
53
+ "not dead",
54
+ "not op_mini all"
55
+ ],
56
+ "development": [
57
+ "last 1 chrome version",
58
+ "last 1 firefox version",
59
+ "last 1 safari version"
60
+ ]
61
+ },
62
+ "devDependencies": {
63
+ "@babel/cli": "^7.23.0",
64
+ "@babel/core": "^7.23.2",
65
+ "@babel/preset-env": "^7.23.2",
66
+ "@babel/preset-react": "^7.22.15",
67
+ "@rollup/plugin-babel": "^6.0.4",
68
+ "@rollup/plugin-commonjs": "^25.0.7",
69
+ "@rollup/plugin-image": "^3.0.3",
70
+ "@rollup/plugin-node-resolve": "^15.2.3",
71
+ "@storybook/addon-essentials": "^7.0.8",
72
+ "@storybook/addon-interactions": "^7.0.8",
73
+ "@storybook/addon-links": "^7.0.8",
74
+ "@storybook/addon-postcss": "^2.0.0",
75
+ "@storybook/addon-styling": "^1.0.6",
76
+ "@storybook/blocks": "^7.0.8",
77
+ "@storybook/preset-create-react-app": "^7.0.8",
78
+ "@storybook/react": "^7.0.8",
79
+ "@storybook/react-webpack5": "^7.0.8",
80
+ "@storybook/testing-library": "^0.0.14-next.2",
81
+ "@testing-library/jest-dom": "^5.16.5",
82
+ "@testing-library/react": "^13.4.0",
83
+ "@testing-library/user-event": "^13.5.0",
84
+ "autoprefixer": "^10.4.14",
85
+ "babel-plugin-named-exports-order": "^0.0.2",
86
+ "concurrently": "^7.6.0",
87
+ "postcss": "^8.4.23",
88
+ "prop-types": "^15.8.1",
89
+ "react": "^18.2.0",
90
+ "react-dom": "^18.2.0",
91
+ "react-scripts": "5.0.1",
92
+ "rollup": "^2.79.1",
93
+ "rollup-plugin-node-globals": "^1.4.0",
94
+ "rollup-plugin-peer-deps-external": "^2.2.4",
95
+ "rollup-plugin-polyfill-node": "^0.12.0",
96
+ "rollup-plugin-postcss": "^4.0.2",
97
+ "rollup-plugin-terser": "^7.0.2",
98
+ "storybook": "^7.0.8",
99
+ "tailwindcss": "^3.3.2",
100
+ "webpack": "^5.81.0"
101
+ },
102
+ "peerDependencies": {
103
+ "react": "^18.2.0",
104
+ "react-dom": "^18.2.0"
105
+ }
106
+ }