@bytebrain.ai/bytebrain-ui 0.0.6 → 0.0.8

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.
package/dist/Bot.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const Bot: () => React.JSX.Element;
3
+ export default Bot;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface ChatAppProps {
3
+ websocketHost?: string;
4
+ websocketPort?: string;
5
+ websocketEndpoint: string;
6
+ }
7
+ declare const ChatApp: React.FC<ChatAppProps>;
8
+ export default ChatApp;
@@ -0,0 +1,18 @@
1
+ import "highlight.js/styles/github.css";
2
+ import React from 'react';
3
+ import { ReferenceItem } from "./References";
4
+ import Message from "./Message";
5
+ import UserTypes from "./UserTypes";
6
+ interface ChatMessageProps {
7
+ id: string;
8
+ chatHistory: Message[];
9
+ highlight: boolean;
10
+ userType: UserTypes;
11
+ text: string;
12
+ setQuestion: React.Dispatch<React.SetStateAction<string>>;
13
+ references: ReferenceItem[];
14
+ baseHttpUrl: string;
15
+ index: number;
16
+ }
17
+ declare const ChatMessage: React.FC<ChatMessageProps>;
18
+ export default ChatMessage;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const ChatApp: (props: any) => React.JSX.Element;
3
+ export default ChatApp;
@@ -0,0 +1,3 @@
1
+ import "highlight.js/styles/github.css";
2
+ declare function ChatMessage(props: any): any;
3
+ export default ChatMessage;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import './ChatPrompt.css';
3
+ export declare const ChatPrompt: (props: any) => React.JSX.Element;
4
+ export default ChatPrompt;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ export default function PopupChatWindow({ visible, onClose, websocketHost, websocketPort, websocketEndpoint }: {
3
+ visible: any;
4
+ onClose: any;
5
+ websocketHost: any;
6
+ websocketPort: any;
7
+ websocketEndpoint: any;
8
+ }): React.JSX.Element;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ type ReferenceItem = {
3
+ page_url: string;
4
+ page_title: string;
5
+ };
6
+ interface ReferencesProps {
7
+ items?: ReferenceItem[];
8
+ }
9
+ export declare const References: React.FC<ReferencesProps>;
10
+ export default References;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import './RelatedQuestions.css';
3
+ type QuestionItem = string;
4
+ interface RelatedQuestionsProps {
5
+ items?: QuestionItem[];
6
+ setQuestion: (question: string) => void;
7
+ }
8
+ export declare const RelatedQuestions: React.FC<RelatedQuestionsProps>;
9
+ export default RelatedQuestions;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import './ChatPrompt.css';
3
+ interface ChatPromptProps {
4
+ title?: string;
5
+ defaultQuestion?: string;
6
+ websocketHost?: string;
7
+ websocketPort?: string;
8
+ websocketEndpoint: string;
9
+ welcomeMessages: string[];
10
+ fullScreen?: boolean;
11
+ }
12
+ export declare const ChatPrompt: (props: ChatPromptProps) => React.JSX.Element;
13
+ export default ChatPrompt;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import './FeedbackForm.css';
3
+ import Message from './Message';
4
+ interface FeedbackFormProps {
5
+ chatHistory: Message[];
6
+ baseHttpUrl: string;
7
+ }
8
+ export declare const FeedbackForm: React.FC<FeedbackFormProps>;
9
+ export default FeedbackForm;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const InsertLink: () => React.JSX.Element;
3
+ export default InsertLink;
@@ -0,0 +1,9 @@
1
+ import { ReferenceItem } from './References';
2
+ import UserTypes from "./UserTypes";
3
+ export interface Message {
4
+ userType: UserTypes;
5
+ message: string;
6
+ completed: boolean;
7
+ references?: ReferenceItem[];
8
+ }
9
+ export default Message;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface PopupChatWindowProps {
3
+ visible: boolean;
4
+ onClose: () => void;
5
+ websocketHost?: string;
6
+ websocketPort?: string;
7
+ websocketEndpoint?: string;
8
+ }
9
+ declare const PopupChatWindow: React.FC<PopupChatWindowProps>;
10
+ export default PopupChatWindow;
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ export type ReferenceItem = {
3
+ page_url: string;
4
+ page_title: string;
5
+ };
6
+ interface ReferencesProps {
7
+ items?: ReferenceItem[];
8
+ }
9
+ export declare const References: React.FC<ReferencesProps>;
10
+ export default References;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import './RelatedQuestions.css';
3
+ type QuestionItem = string;
4
+ interface RelatedQuestionsProps {
5
+ items?: QuestionItem[];
6
+ setQuestion: React.Dispatch<React.SetStateAction<string>>;
7
+ }
8
+ export declare const RelatedQuestions: React.FC<RelatedQuestionsProps>;
9
+ export default RelatedQuestions;
package/dist/User.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const User: () => React.JSX.Element;
3
+ export default User;
@@ -0,0 +1,5 @@
1
+ export declare enum UserTypes {
2
+ User = "user",
3
+ Bot = "bot"
4
+ }
5
+ export default UserTypes;
@@ -0,0 +1,10 @@
1
+ import FeedbackForm from "./FeedbackForm";
2
+ import ThumbsDown from "./thumbs-down";
3
+ import ThumbsUp from "./thumbs-up";
4
+ import RelatedQuestions from "./RelatedQuestions";
5
+ import References from "./References";
6
+ import ChatMessage from "./ChatMessage";
7
+ import ChatPrompt from "./ChatPrompt";
8
+ import ChatApp from "./ChatApp";
9
+ import PopupChatWindow from "./PopupChatWindow";
10
+ export { FeedbackForm, ThumbsDown, ThumbsUp, RelatedQuestions, References, ChatMessage, ChatPrompt, ChatApp, PopupChatWindow };
package/dist/index.js CHANGED
@@ -1 +1,2 @@
1
- import e,{useState as t,useEffect as A,useRef as r}from"react";import o from"highlight.js";import a from"react-markdown";const n=()=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.2,stroke:"currentColor",className:"w-6 h-6"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",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"})),i=()=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.2,stroke:"currentColor",className:"w-6 h-6"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",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"}));function s(e,t){void 0===t&&(t={});var A=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===A&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}s(".feedback-button{border-width:0}");const l=r=>{const[o,a]=t(r.chatHistory),[s,l]=t(null),[g,d]=t(!1);A((()=>{a(r.chatHistory)}),[r]);const c=async e=>{try{if(g)return;l(e);(await fetch(r.baseHttpUrl+"/feedback/",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_history:o,is_useful:e})})).ok?(console.log("Feedback submitted successfully"),d(!0)):console.error("Failed to submit feedback")}catch(e){console.error("Error submitting feedback:",e)}};return e.createElement("form",null,e.createElement("button",{type:"button",title:"It was helpful to me!",className:"feedback-button inline-block ".concat(g&&!s?"hidden":""),onClick:()=>c(!0),disabled:g},e.createElement(n,null)),e.createElement("button",{type:"button",title:"It didn't help me at all!",className:"feedback-button inline-block ".concat(g&&s?"hidden":""),onClick:()=>c(!1),disabled:g},e.createElement(i,null)))};s("pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}\n/*!\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}");var g="data:image/png;base64,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";function d(t){return e.createElement(e.Fragment,null," ",void 0!==t.items&&t.items.length>0?e.createElement("div",{className:"text-xs px-4 py-2 border-b-2 border-blue-600 rounded-br-none bg-blue-500 text-white"},e.createElement("h3",{className:"text-xs font-bold"},"Ask Related Questions"),e.createElement("ol",{className:"list-inside pl-0"},t.items.map(((A,r)=>e.createElement("li",{key:r,className:"mr-2"},e.createElement("a",{className:"underline text-white text-sm",href:"#",onClick:e=>{t.setQuestion(e.target.textContent)}},A)))))):null)}function c(t){return e.createElement(e.Fragment,null," ",void 0!==t.items&&t.items.length>0?e.createElement("div",{className:"text-xs px-4 py-2 rounded-b-lg rounded-br-none bg-blue-500 text-white"},e.createElement("h3",{className:"text-xs font-bold"},"Discover Related Sources"),e.createElement("ol",{className:"flex flex-wrap list-inside pl-0"},t.items.map(((t,A)=>e.createElement("li",{key:A,className:"mr-2"},e.createElement("a",{className:"underline text-white text-sm",href:t.page_url},t.page_title)))))):null)}function w(t){const[r,n]=e.useState(t.chatHistory);let i;if(A((()=>{t.highlight&&"bot"===t.userType&&document.querySelectorAll("#"+t.id+" pre code").forEach((e=>{o.highlightElement(e)}))})),A((()=>{n(t.chatHistory)}),[t]),"user"===t.userType)i=e.createElement("div",{className:"w-full chat-message user-message text-base flex flex-row space-x-2",id:t.id},e.createElement("img",{src:"data:image/png;base64,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",alt:"User Profile",className:"w-6 h-6 rounded-full"}),e.createElement(a,{className:"px-4 py-2 rounded-lg rounded-bl-none bg-gray-300 text-gray-600"},t.text));else if("bot"===t.userType)if(String(t.text).includes("Related Questions:")){let A=t.text.split("Related Questions:"),o=(s=A[1].trim(),s.split(/\n/).filter((e=>e.length>0)).map((e=>e.trim())).filter((e=>/\d+|[*-]/.test(e)))).map((e=>function(e){return e.replace(/^\d+\.|[*-]\s*/,"")}(e)));i=e.createElement("div",{className:"w-full chat-message bot-message text-base flex flex-row space-x-2",id:t.id},e.createElement("img",{src:g,alt:"Robot Profile",className:"w-6 h-6 rounded-full"}),e.createElement("div",{className:"w-full"},e.createElement(a,{className:"px-4 py-2 space-y-2 rounded-t-lg bg-blue-600 text-white"},A[0]),e.createElement(d,{items:o,setQuestion:t.setQuestion}),e.createElement(c,{items:t.references})),e.createElement(l,{chatHistory:r.slice(1,t.index+1),baseHttpUrl:t.baseHttpUrl}))}else i=e.createElement("div",{className:"w-full chat-message bot-message text-base flex flex-row space-x-2",id:t.id},e.createElement("img",{src:g,alt:"Robot Profile",className:"w-6 h-6 rounded-full"}),e.createElement("div",{className:"w-full"},e.createElement(a,{className:"px-4 py-2 space-y-2 rounded-t-lg bg-blue-600 text-white"},t.text),e.createElement(c,{items:t.references})),e.createElement(l,{chatHistory:r.slice(1,t.index+1),baseHttpUrl:t.baseHttpUrl}));var s;return i}s(".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%}.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}.border-b-2{border-bottom-width:2px}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity))}.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}.pl-0{padding-left:0}.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-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-black::placeholder{--tw-placeholder-opacity:1;color:rgb(0 0 0/var(--tw-placeholder-opacity))}.placeholder-gray-500::placeholder{--tw-placeholder-opacity:1;color:rgb(107 114 128/var(--tw-placeholder-opacity))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.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%}}");const m=t=>{const{title:A="ByteBrain ChatBot",defaultQuestion:r="Send your message",websocketHost:o,websocketPort:a,websocketEndpoint:n,welcomeMessages:i,fullScreen:s}=t,l=i.map((e=>({userType:"bot",message:e,completed:!0}))),[g,d]=e.useState(r),[c,m]=e.useState([function(e){const t=Math.floor(Math.random()*e.length);return e.splice(t,1)[0]}(l)]),k=o||window.location.hostname,B="80"===a?"":":"+a,p="80"===a?"wss://":"ws://",u=("80"===a?"https://":"http://")+k+B;const h=()=>{const e=new WebSocket(p+k+B+n);e.onopen=t=>{m((e=>e.concat([{userType:"user",message:g,completed:!0}])));const A=c.map((e=>e.message)).slice(1),r={question:g,history:A};e.send(JSON.stringify(r))},e.onmessage=function(e){const t=JSON.parse(e.data),A=t.token,r=t.references,o=t.completed;m((e=>{if(0===e.length||"user"===e[e.length-1].userType)return[...e,{userType:"bot",message:A,completed:o}];{const t=[...e];return t[t.length-1]={...t[t.length-1],message:t[t.length-1].message+A,references:r,completed:o},t}}))}};return e.createElement("div",{id:"ChatPrompt",className:"justify-between flex flex-col p-5 rounded-md bg-gray-100 max-h-screen ".concat(s?"h-screen":"")},e.createElement("h1",{className:"text-orange-600 text-3xl font-bold mb-6"},A),e.createElement("div",{id:"scroller",className:"flex flex-col space-y-4 overflow-y-scroll scroll-smooth"},c.map(((t,A)=>e.createElement(w,{key:A,id:"chat"+A,index:A,userType:t.userType,text:t.message,references:t.references,highlight:t.completed,chatHistory:c,baseHttpUrl:u,setQuestion:d}))),e.createElement("div",{id:"anchor"})),e.createElement("form",{onSubmit:e=>{e.preventDefault(),h(),e.target.reset(),d(r)},className:"flex bottom-5 left-5 right-5 h-10 mt-4"},e.createElement("input",{type:"text",id:"promptInput",onChange:e=>{d(e.target.value)},className:"w-full px-4 py-2 \n border-0\n rounded-md\n text-base\n text-blac\n bg-gray-200\n focus:outline-none\n font-sans\n font-normal\n ".concat(g===r?"placeholder-gray-500":"placeholder-black","\n "),placeholder:g}),e.createElement("button",{disabled:0!==c.length&&("user"==c[c.length-1].userType||("bot"==c[c.length-1].userType?!c[c.length-1].completed:void 0)),id:"generateBtn",type:"submit",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"},"Send")))};function k(t){let{visible:o,onClose:a,websocketHost:n,websocketPort:i,websocketEndpoint:s}=t;const l=r();((e,t)=>{const r=A=>{if("chat-button"===A.target.id)return null;e.current&&!e.current.contains(A.target)&&t()};A((()=>(document.addEventListener("click",r),()=>{document.removeEventListener("click",r)})))})(l,a);return e.createElement("div",{ref:l,id:"container",className:"fixed 2xl:w-[30%] xl:w-[40%] lg:w-[50%] md:w-[100%] sm:w-[100%] bottom-0 right-0 ".concat(o?"block":"hidden"," ")},e.createElement(m,{title:"ZIO Chat",defaultQuestion:"Write a question about ZIO!",websocketHost:n||"localhost",websocketPort:i||"8081",websocketEndpoint:s||"/chat",welcomeMessages:["🌟 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! 💡🤖"],fullScreen:!1}))}const B=A=>{const[r,o]=t(!1);return e.createElement(e.Fragment,null,e.createElement("button",{id:"chat-button",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",onClick:()=>o(!0)},"ZIO Chat!"),e.createElement(k,{onClose:()=>o(!1),visible:r,websocketHost:A.websocketHost,websocketPort:A.websocketPort,websocketEndpoint:A.websocketEndpoint}))};export{B as ChatApp,w as ChatMessage,m as ChatPrompt,l as FeedbackForm,k as PopupChatWindow,i as ThumbsDown,n as ThumbsUp};
1
+ import e,{useState as t,useEffect as n,useRef as r}from"react";import o from"highlight.js";import a from"react-markdown";function s(e,t,n,r){return new(n||(n=Promise))((function(o,a){function s(e){try{l(r.next(e))}catch(e){a(e)}}function i(e){try{l(r.throw(e))}catch(e){a(e)}}function l(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,i)}l((r=r.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const i=()=>e.createElement(e.Fragment,null,e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.2,stroke:"currentColor",className:"dark:stroke-white w-6 h-6"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",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"}))),l=()=>e.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.2,stroke:"currentColor",className:"dark:stroke-white w-6 h-6"},e.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",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"}));function c(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var r=document.head||document.getElementsByTagName("head")[0],o=document.createElement("style");o.type="text/css","top"===n&&r.firstChild?r.insertBefore(o,r.firstChild):r.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}c(".feedback-button {\n border-width: 0;\n border-top-width: 0;\n border-right-width: 0;\n border-bottom-width: 0;\n border-left-width: 0;\n}\n");const d=({chatHistory:r,baseHttpUrl:o})=>{const[a,c]=t(null),[d,h]=t(!1);n((()=>{c(null),h(!1)}),[]);const m=e=>s(void 0,void 0,void 0,(function*(){try{if(d)return;c(e);(yield fetch(`${o}/feedback/`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_history:r,is_useful:e})})).ok?(console.log("Feedback submitted successfully"),h(!0)):console.error("Failed to submit feedback")}catch(e){console.error("Error submitting feedback:",e)}}));return e.createElement("form",null,e.createElement("button",{type:"button",title:"It was helpful to me!",className:"dark:bg-[#242526] bg-gray-100 feedback-button inline-block "+(d&&!a?"hidden":""),onClick:()=>m(!0),disabled:d},e.createElement(i,null)),e.createElement("button",{type:"button",title:"It didn't help me at all!",className:"dark:bg-[#242526] bg-gray-100 feedback-button inline-block "+(d&&a?"hidden":""),onClick:()=>m(!1),disabled:d},e.createElement(l,null)))};c(".custom-list {\n\n padding-left: 0.5rem;\n\n margin: 0px\n}\n\n\n");const h=({items:t,setQuestion:n})=>e.createElement(e.Fragment,null,t&&t.length>0?e.createElement("div",{className:"text-xs px-4 pt-2 rounded-br-none bg-blue-500 text-white"},e.createElement("h3",{className:"text-xs font-bold"},"Ask Related Questions:"),e.createElement("ol",{className:"list-inside custom-list"},t.map(((t,r)=>e.createElement("li",{key:r,className:"mr-2"},e.createElement("a",{className:"underline text-white text-sm hover:text-black",href:"#",onClick:e=>n(e.target.textContent)},t)))))):null),m=({items:t})=>e.createElement(e.Fragment,null,t&&t.length>0?e.createElement("div",{className:"text-xs px-4 py-2 rounded-b-lg rounded-br-none bg-blue-500 text-white"},e.createElement("h3",{className:"text-xs font-bold"},"Discover Related Sources:"),e.createElement("ol",{className:"flex flex-wrap list-inside pl-0"},t.map(((t,n)=>e.createElement("li",{key:n,className:"mr-2"},e.createElement("a",{className:"underline text-white text-sm hover:text-black",href:t.page_url},t.page_title)))))):null);c("pre code.hljs {\n display: block;\n overflow-x: auto;\n padding: 1em\n}\ncode.hljs {\n padding: 3px 5px\n}\n/*!\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*/\n.hljs {\n color: #24292e;\n background: #ffffff\n}\n.hljs-doctag,\n.hljs-keyword,\n.hljs-meta .hljs-keyword,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-type,\n.hljs-variable.language_ {\n /* prettylights-syntax-keyword */\n color: #d73a49\n}\n.hljs-title,\n.hljs-title.class_,\n.hljs-title.class_.inherited__,\n.hljs-title.function_ {\n /* prettylights-syntax-entity */\n color: #6f42c1\n}\n.hljs-attr,\n.hljs-attribute,\n.hljs-literal,\n.hljs-meta,\n.hljs-number,\n.hljs-operator,\n.hljs-variable,\n.hljs-selector-attr,\n.hljs-selector-class,\n.hljs-selector-id {\n /* prettylights-syntax-constant */\n color: #005cc5\n}\n.hljs-regexp,\n.hljs-string,\n.hljs-meta .hljs-string {\n /* prettylights-syntax-string */\n color: #032f62\n}\n.hljs-built_in,\n.hljs-symbol {\n /* prettylights-syntax-variable */\n color: #e36209\n}\n.hljs-comment,\n.hljs-code,\n.hljs-formula {\n /* prettylights-syntax-comment */\n color: #6a737d\n}\n.hljs-name,\n.hljs-quote,\n.hljs-selector-tag,\n.hljs-selector-pseudo {\n /* prettylights-syntax-entity-tag */\n color: #22863a\n}\n.hljs-subst {\n /* prettylights-syntax-storage-modifier-import */\n color: #24292e\n}\n.hljs-section {\n /* prettylights-syntax-markup-heading */\n color: #005cc5;\n font-weight: bold\n}\n.hljs-bullet {\n /* prettylights-syntax-markup-list */\n color: #735c0f\n}\n.hljs-emphasis {\n /* prettylights-syntax-markup-italic */\n color: #24292e;\n font-style: italic\n}\n.hljs-strong {\n /* prettylights-syntax-markup-bold */\n color: #24292e;\n font-weight: bold\n}\n.hljs-addition {\n /* prettylights-syntax-markup-inserted */\n color: #22863a;\n background-color: #f0fff4\n}\n.hljs-deletion {\n /* prettylights-syntax-markup-deleted */\n color: #b31d28;\n background-color: #ffeef0\n}\n.hljs-char.escape_,\n.hljs-link,\n.hljs-params,\n.hljs-property,\n.hljs-punctuation,\n.hljs-tag {\n /* purposely ignored */\n \n}");const p=()=>e.createElement("svg",{stroke:"currentColor",className:"dark:fill-white w-8 h-8",width:"512",height:"512",strokeWidth:1.2,version:"1.1",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"m251.5 465.47c-2.2-0.79382-4.0658-1.4501-4.1462-1.4584-0.0804-8e-3 -11.213-14.603-24.738-32.433-13.526-17.83-25.783-33.355-27.239-34.5-2.5677-2.0197-3.6988-2.0819-37.881-2.0819-26.502 0-37.311-0.36376-43.615-1.4678-41.84-7.3275-73.739-38.446-83.067-81.032-1.0295-4.7003-1.3141-24.846-1.3141-93 0-87 0-87 2.3606-95.933 4.8879-18.497 12.559-32.605 24.787-45.587 9.2497-9.82 17.894-16.206 29.853-22.055 12.164-5.9487 22.475-8.7238 37-9.9582 14.341-1.2188 250.66-1.2188 265 0 14.525 1.2344 24.836 4.0095 37 9.9582 27.681 13.537 46.498 36.883 54.694 67.859 2.3061 8.7158 2.3061 8.7158 2.3061 95.716 0 91.914 0.0591 90.587-4.7047 105.5-6.7536 21.141-21.967 41.003-40.805 53.271-10.293 6.7034-17.59 10.036-29.49 13.469-8.8282 2.5465-9.7661 2.6072-49.147 3.1783-38.3 0.55544-40.249 0.67425-42.37 2.5822-1.2225 1.1-12.734 15.789-25.581 32.643-22.432 29.428-27.972 35.857-30.897 35.857-0.73782 0-1.9408 0.20627-2.6733 0.45837-0.73249 0.25211-3.1318-0.19112-5.3318-0.98494zm23.537-59.973c10.012-13.2 19.611-25.489 21.333-27.309s6.0438-4.7447 9.605-6.5c6.4748-3.1914 6.4748-3.1914 47.5-3.7939 45.163-0.66322 46.206-0.7918 60.055-7.4041 22.518-10.752 38.146-32.47 41.471-57.628 0.75544-5.7172 0.99241-33.69 0.74856-88.365-0.32659-73.226-0.50777-80.505-2.1398-85.964-7.6316-25.527-24.675-43.653-49.109-52.228-8-2.8078-8-2.8078-148.5-2.8078s-140.5 0-148.5 2.8078c-24.041 8.4376-41.205 26.366-48.686 50.854-2.2293 7.2975-2.2438 7.7874-2.5808 87.339-0.23126 54.58 0.01227 82.658 0.76639 88.365 3.3308 25.208 18.878 46.839 41.391 57.59 13.937 6.655 14.937 6.7788 60.109 7.4426 41 0.60245 41 0.60245 46.5 3.1926 3.025 1.4246 6.9095 3.7825 8.6322 5.2398 1.7227 1.4573 11.848 14.126 22.5 28.154 10.652 14.027 19.668 25.394 20.035 25.26 0.36691-0.13406 8.8583-11.044 18.87-24.244zm-113.54-158.39c-8.0155-2.0869-15.285-7.9248-19.132-15.365-0.91824-1.7757-1.8816-6.1929-2.1409-9.8161-0.7674-10.725 4.3824-20.221 13.724-25.305 18.472-10.054 40.351 2.8809 40.386 23.877 0.0238 14.063-10.461 25.41-24.837 26.879-2.75 0.28104-6.35 0.15949-8-0.2701zm87.306-0.4596c-4.9404-1.3809-6.2234-2.1606-11.678-7.0974-8.3404-7.5483-10.677-21.444-5.3274-31.684 4.7261-9.0467 14.275-14.868 24.388-14.868 19.531 0 32.73 20.777 24.459 38.5-2.5529 5.4705-9.0324 11.927-14.09 14.04-4.9964 2.0876-12.56 2.5602-17.752 1.1091zm88.987-3e-3c-6.3455-1.7731-12.159-5.9747-15.733-11.371-12.497-18.867 2.493-44.045 25.008-42.003 15.041 1.3638 25.769 13.807 24.706 28.656-0.25923 3.6232-1.2226 8.0404-2.1409 9.8161-6.175 11.941-19.731 18.285-31.84 14.902z"})),w=()=>e.createElement("svg",{version:"1.1",stroke:"currentColor",className:"dark:fill-white w-8 h-8 pt-2",width:"546.1333",height:"546.1333",viewBox:"0 0 546.1333 546.1333",xmlns:"http://www.w3.org/2000/svg"},e.createElement("path",{d:"M 248.18949,545.01565 C 140.78277,536.1654 43.347437,457.67748 12.625464,354.27462 -19.122727,256.23986 11.148578,141.59748 88.05005,72.75365 170.6778,-6.3870784 305.25108,-22.727519 404.55416,34.075212 c 90.71756,48.808052 148.5915,152.240698 140.72412,255.265468 -4.721,117.18135 -94.83362,223.7082 -209.03208,249.29175 -28.74608,6.97865 -58.63168,7.99917 -88.05671,6.38322 z m 59.01049,-33.47524 c 44.11214,-6.14054 85.94851,-25.33589 120.34908,-53.46875 -7.50443,-76.23751 -78.33803,-139.58196 -155.13069,-137.4082 -75.87947,-1.11955 -147.39136,61.9662 -153.18566,137.95022 51.92152,43.01255 121.21529,62.41741 187.96727,52.92673 z M 95.23624,417.23455 c 17.04457,-53.94473 60.52333,-97.03721 112.76027,-117.54871 -38.16232,-27.24165 -58.08238,-77.27541 -46.17288,-123.04103 13.97512,-63.62214 88.10784,-103.424302 148.92029,-80.419223 54.27562,17.927063 88.7395,80.021723 73.57777,135.512803 -6.24704,27.51678 -24.27076,50.99914 -46.18838,68.09848 55.60255,21.00409 99.9566,68.92585 115.77754,126.329 11.90975,-0.3504 25.78141,-30.94799 34.70002,-45.64418 C 534.17056,292.25875 516.88138,176.40132 446.32219,106.18998 376.66755,30.895815 256.59496,9.9644804 165.64534,57.566388 73.710219,101.90396 17.392768,209.22775 35.202048,310.08314 c 6.457967,44.14691 25.903239,86.34538 55.464613,119.76818 1.924099,-4.05191 3.127315,-8.38542 4.569579,-12.61677 z m 188.6392,-130.78572 c 51.57064,-4.49807 86.2598,-64.54174 66.52297,-111.81618 -17.42381,-48.17969 -82.7984,-69.2237 -124.13766,-38.07569 -43.14422,27.09101 -48.02204,94.62224 -9.98242,128.12649 17.76999,16.83784 43.29836,25.47902 67.59711,21.76538 z"}));var g;!function(e){e.User="user",e.Bot="bot"}(g||(g={}));var u=g;const b=r=>{const[s,i]=t(r.chatHistory);n((()=>{r.highlight&&r.userType===u.Bot&&document.querySelectorAll("#"+r.id+" pre code").forEach((e=>{o.highlightElement(e)}))}),[r.highlight,r.userType,r.id]),n((()=>{i(r.chatHistory)}),[r]);let l=null;if(r.userType===u.User)l=e.createElement("div",{className:"w-full chat-message user-message text-base flex flex-row space-x-2",id:r.id},e.createElement(w,null),e.createElement(a,{className:"px-4 py-2 rounded-lg rounded-bl-none bg-gray-300 text-gray-600"},r.text));else if(r.userType===u.Bot)if(String(r.text).includes("Related Questions:")){const t=r.text.split("Related Questions:"),n=(c=t[1].trim(),c.split(/\n/).filter((e=>e.length>0)).map((e=>e.trim())).filter((e=>/\d+|[*-]/.test(e)))).map((e=>function(e){return e.replace(/^\d+\.|[*-]\s*/,"")}(e)));l=e.createElement("div",{className:"w-full chat-message bot-message text-base flex flex-row space-x-2",id:r.id},e.createElement(p,null),e.createElement("div",{className:"w-full"},e.createElement(a,{className:"px-4 py-2 space-y-2 rounded-t-lg bg-blue-600 text-white"},t[0]),e.createElement(h,{items:n,setQuestion:r.setQuestion}),e.createElement(m,{items:r.references})),e.createElement(d,{chatHistory:s.slice(1,r.index+1),baseHttpUrl:r.baseHttpUrl}))}else l=e.createElement("div",{className:"w-full chat-message bot-message text-base flex flex-row space-x-2",id:r.id},e.createElement(p,null),e.createElement("div",{className:"w-full"},e.createElement(a,{className:"px-4 py-2 space-y-2 rounded-t-lg bg-blue-600 text-white"},r.text),e.createElement(m,{items:r.references})),e.createElement(d,{chatHistory:s.slice(1,r.index+1),baseHttpUrl:r.baseHttpUrl}));var c;return l};c('*, ::before, ::after {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n::backdrop {\n --tw-border-spacing-x: 0;\n --tw-border-spacing-y: 0;\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n --tw-pan-x: ;\n --tw-pan-y: ;\n --tw-pinch-zoom: ;\n --tw-scroll-snap-strictness: proximity;\n --tw-gradient-from-position: ;\n --tw-gradient-via-position: ;\n --tw-gradient-to-position: ;\n --tw-ordinal: ;\n --tw-slashed-zero: ;\n --tw-numeric-figure: ;\n --tw-numeric-spacing: ;\n --tw-numeric-fraction: ;\n --tw-ring-inset: ;\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgb(59 130 246 / 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n --tw-shadow: 0 0 #0000;\n --tw-shadow-colored: 0 0 #0000;\n --tw-blur: ;\n --tw-brightness: ;\n --tw-contrast: ;\n --tw-grayscale: ;\n --tw-hue-rotate: ;\n --tw-invert: ;\n --tw-saturate: ;\n --tw-sepia: ;\n --tw-drop-shadow: ;\n --tw-backdrop-blur: ;\n --tw-backdrop-brightness: ;\n --tw-backdrop-contrast: ;\n --tw-backdrop-grayscale: ;\n --tw-backdrop-hue-rotate: ;\n --tw-backdrop-invert: ;\n --tw-backdrop-opacity: ;\n --tw-backdrop-saturate: ;\n --tw-backdrop-sepia: ;\n}\n.container {\n width: 100%;\n}\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n.visible {\n visibility: visible;\n}\n.fixed {\n position: fixed;\n}\n.bottom-0 {\n bottom: 0px;\n}\n.bottom-5 {\n bottom: 1.25rem;\n}\n.left-5 {\n left: 1.25rem;\n}\n.right-0 {\n right: 0px;\n}\n.right-5 {\n right: 1.25rem;\n}\n.mb-6 {\n margin-bottom: 1.5rem;\n}\n.mr-2 {\n margin-right: 0.5rem;\n}\n.mt-4 {\n margin-top: 1rem;\n}\n.block {\n display: block;\n}\n.inline-block {\n display: inline-block;\n}\n.flex {\n display: flex;\n}\n.hidden {\n display: none;\n}\n.h-10 {\n height: 2.5rem;\n}\n.h-6 {\n height: 1.5rem;\n}\n.h-8 {\n height: 2rem;\n}\n.h-screen {\n height: 100vh;\n}\n.max-h-screen {\n max-height: 100vh;\n}\n.w-6 {\n width: 1.5rem;\n}\n.w-8 {\n width: 2rem;\n}\n.w-full {\n width: 100%;\n}\n.list-inside {\n list-style-position: inside;\n}\n.flex-row {\n flex-direction: row;\n}\n.flex-col {\n flex-direction: column;\n}\n.flex-wrap {\n flex-wrap: wrap;\n}\n.justify-between {\n justify-content: space-between;\n}\n.space-x-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-x-reverse: 0;\n margin-right: calc(0.5rem * var(--tw-space-x-reverse));\n margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));\n}\n.space-y-2 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));\n}\n.space-y-4 > :not([hidden]) ~ :not([hidden]) {\n --tw-space-y-reverse: 0;\n margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));\n margin-bottom: calc(1rem * var(--tw-space-y-reverse));\n}\n.overflow-y-scroll {\n overflow-y: scroll;\n}\n.scroll-smooth {\n scroll-behavior: smooth;\n}\n.rounded-lg {\n border-radius: 0.5rem;\n}\n.rounded-md {\n border-radius: 0.375rem;\n}\n.rounded-b-lg {\n border-bottom-right-radius: 0.5rem;\n border-bottom-left-radius: 0.5rem;\n}\n.rounded-t-lg {\n border-top-left-radius: 0.5rem;\n border-top-right-radius: 0.5rem;\n}\n.rounded-bl-none {\n border-bottom-left-radius: 0px;\n}\n.rounded-br-none {\n border-bottom-right-radius: 0px;\n}\n.rounded-tl-md {\n border-top-left-radius: 0.375rem;\n}\n.border-0 {\n border-width: 0px;\n}\n.bg-black {\n --tw-bg-opacity: 1;\n background-color: rgb(0 0 0 / var(--tw-bg-opacity));\n}\n.bg-blue-500 {\n --tw-bg-opacity: 1;\n background-color: rgb(59 130 246 / var(--tw-bg-opacity));\n}\n.bg-blue-600 {\n --tw-bg-opacity: 1;\n background-color: rgb(37 99 235 / var(--tw-bg-opacity));\n}\n.bg-gray-100 {\n --tw-bg-opacity: 1;\n background-color: rgb(243 244 246 / var(--tw-bg-opacity));\n}\n.bg-gray-200 {\n --tw-bg-opacity: 1;\n background-color: rgb(229 231 235 / var(--tw-bg-opacity));\n}\n.bg-gray-300 {\n --tw-bg-opacity: 1;\n background-color: rgb(209 213 219 / var(--tw-bg-opacity));\n}\n.bg-orange-400 {\n --tw-bg-opacity: 1;\n background-color: rgb(251 146 60 / var(--tw-bg-opacity));\n}\n.p-5 {\n padding: 1.25rem;\n}\n.px-3 {\n padding-left: 0.75rem;\n padding-right: 0.75rem;\n}\n.px-4 {\n padding-left: 1rem;\n padding-right: 1rem;\n}\n.px-6 {\n padding-left: 1.5rem;\n padding-right: 1.5rem;\n}\n.py-2 {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n}\n.pl-0 {\n padding-left: 0px;\n}\n.pt-2 {\n padding-top: 0.5rem;\n}\n.font-sans {\n 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";\n}\n.text-3xl {\n font-size: 1.875rem;\n line-height: 2.25rem;\n}\n.text-base {\n font-size: 1rem;\n line-height: 1.5rem;\n}\n.text-sm {\n font-size: 0.875rem;\n line-height: 1.25rem;\n}\n.text-xl {\n font-size: 1.25rem;\n line-height: 1.75rem;\n}\n.text-xs {\n font-size: 0.75rem;\n line-height: 1rem;\n}\n.font-bold {\n font-weight: 700;\n}\n.font-normal {\n font-weight: 400;\n}\n.text-\\[red\\] {\n --tw-text-opacity: 1;\n color: rgb(255 0 0 / var(--tw-text-opacity));\n}\n.text-black {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n.text-gray-600 {\n --tw-text-opacity: 1;\n color: rgb(75 85 99 / var(--tw-text-opacity));\n}\n.text-white {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n.underline {\n text-decoration-line: underline;\n}\n.placeholder-black::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(0 0 0 / var(--tw-placeholder-opacity));\n}\n.placeholder-gray-500::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(107 114 128 / var(--tw-placeholder-opacity));\n}\n.filter {\n filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);\n}\n.transition {\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;\n transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n#scroller * {\n overflow-anchor: none;\n}\n\n#anchor {\n overflow-anchor: auto;\n height: 1px;\n}\n\np code {\n border-radius: 3px;\n}\n\n.chat-message p {\n margin: 0;\n}\n\n.user-message p code {\n background-color: aliceblue;\n}\n\n.bot-message p code {\n background-color: cornflowerblue;\n}\n\n.bot-message li > code {\n background-color: cornflowerblue;\n}\n\nol {\n list-style-type: decimal;\n margin: 1.0em;\n}\n\nli {\n padding: 0.2em;\n}\n\n#ChatPrompt ::-webkit-scrollbar {\n display: none;\n}\n\npre {\n color: black;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n.hover\\:scale-95:hover {\n --tw-scale-x: .95;\n --tw-scale-y: .95;\n 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));\n}\n\n.hover\\:bg-gray-900:hover {\n --tw-bg-opacity: 1;\n background-color: rgb(17 24 39 / var(--tw-bg-opacity));\n}\n\n.hover\\:text-black:hover {\n --tw-text-opacity: 1;\n color: rgb(0 0 0 / var(--tw-text-opacity));\n}\n\n.focus\\:outline-none:focus {\n outline: 2px solid transparent;\n outline-offset: 2px;\n}\n\n.disabled\\:cursor-not-allowed:disabled {\n cursor: not-allowed;\n}\n\n.disabled\\:opacity-75:disabled {\n opacity: 0.75;\n}\n\n:is([data-theme="dark"] .dark\\:bg-\\[\\#242526\\]) {\n --tw-bg-opacity: 1;\n background-color: rgb(36 37 38 / var(--tw-bg-opacity));\n}\n\n:is([data-theme="dark"] .dark\\:bg-\\[\\#2b2e30\\]) {\n --tw-bg-opacity: 1;\n background-color: rgb(43 46 48 / var(--tw-bg-opacity));\n}\n\n:is([data-theme="dark"] .dark\\:fill-white) {\n fill: #fff;\n}\n\n:is([data-theme="dark"] .dark\\:stroke-white) {\n stroke: #fff;\n}\n\n:is([data-theme="dark"] .dark\\:text-white) {\n --tw-text-opacity: 1;\n color: rgb(255 255 255 / var(--tw-text-opacity));\n}\n\n:is([data-theme="dark"] .dark\\:placeholder-white)::placeholder {\n --tw-placeholder-opacity: 1;\n color: rgb(255 255 255 / var(--tw-placeholder-opacity));\n}\n\n@media (min-width: 640px) {\n .sm\\:w-\\[100\\%\\] {\n width: 100%;\n }\n}\n\n@media (min-width: 768px) {\n .md\\:w-\\[100\\%\\] {\n width: 100%;\n }\n}\n\n@media (min-width: 1024px) {\n .lg\\:w-\\[50\\%\\] {\n width: 50%;\n }\n}\n\n@media (min-width: 1280px) {\n .xl\\:w-\\[40\\%\\] {\n width: 40%;\n }\n}\n\n@media (min-width: 1536px) {\n .\\32xl\\:w-\\[30\\%\\] {\n width: 30%;\n }\n}\n');const f=t=>{const{title:n="ByteBrain ChatBot",defaultQuestion:r="Send your message",websocketHost:o,websocketPort:a,websocketEndpoint:s,welcomeMessages:i,fullScreen:l}=t,c=i.map((e=>({userType:u.Bot,message:e,completed:!0}))),[d,h]=e.useState(r),[m,p]=e.useState([function(e){const t=Math.floor(Math.random()*e.length);return e.splice(t,1)[0]}(c)]),w=o||window.location.hostname,g="80"===a?"":":"+a,f="80"===a?"wss://":"ws://",y=("80"===a?"https://":"http://")+w+g;const x=()=>{const e=new WebSocket(f+w+g+s);e.onopen=t=>{p((e=>e.concat([{userType:u.User,message:d,completed:!0}])));const n=m.map((e=>e.message)).slice(1),r={question:d,history:n};e.send(JSON.stringify(r))},e.onmessage=function(e){const t=JSON.parse(e.data),n=t.token,r=t.references,o=t.completed;p((e=>{if(0===e.length||e[e.length-1].userType===u.User)return[...e,{userType:u.Bot,message:n,completed:o}];{const t=[...e];return t[t.length-1]=Object.assign(Object.assign({},t[t.length-1]),{message:t[t.length-1].message+n,references:r,completed:o}),t}}))}};return e.createElement("div",{id:"ChatPrompt",className:"dark:bg-[#242526] justify-between flex flex-col p-5 rounded-md bg-gray-100 max-h-screen "+(l?"h-screen":"")},e.createElement("h1",{className:"text-[red] text-3xl font-bold mb-6"},n),e.createElement("div",{id:"scroller",className:"flex flex-col space-y-4 overflow-y-scroll scroll-smooth"},m.map(((t,n)=>e.createElement(b,{key:n,id:"chat"+n,index:n,userType:t.userType,text:t.message,references:t.references,highlight:t.completed,chatHistory:m,baseHttpUrl:y,setQuestion:h}))),e.createElement("div",{id:"anchor"})),e.createElement("form",{onSubmit:e=>{e.preventDefault(),x(),e.target.reset(),h(r)},className:"flex bottom-5 left-5 right-5 h-10 mt-4"},e.createElement("input",{type:"text",id:"promptInput",onChange:e=>{h(e.target.value)},className:`w-full px-4 py-2 \n border-0\n rounded-md\n text-base\n text-black\n dark:text-white\n bg-gray-200\n dark:bg-[#2b2e30]\n focus:outline-none\n font-sans\n font-normal\n ${d===r?"placeholder-gray-500":"placeholder-black dark:placeholder-white"}\n `,placeholder:d}),e.createElement("button",{disabled:0!==m.length&&(m[m.length-1].userType==u.User||(m[m.length-1].userType==u.Bot?!m[m.length-1].completed:void 0)),id:"generateBtn",type:"submit",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"},"Send")))},y=({visible:t,onClose:o,websocketHost:a,websocketPort:s,websocketEndpoint:i})=>{const l=r(null);((e,t)=>{const r=n=>{var r;if("chat-button"===(null===(r=n.target)||void 0===r?void 0:r.id))return null;e.current&&!e.current.contains(n.target)&&t()};n((()=>(document.addEventListener("click",r),()=>{document.removeEventListener("click",r)})),[t,e])})(l,o);return e.createElement("div",{ref:l,id:"container",className:`fixed 2xl:w-[30%] xl:w-[40%] lg:w-[50%] md:w-[100%] sm:w-[100%] bottom-0 right-0 ${t?"block":"hidden"} `},e.createElement(f,{title:"ZIO Chat",defaultQuestion:"Write a question about ZIO!",websocketHost:a||"localhost",websocketPort:s||"8081",websocketEndpoint:i||"/chat",welcomeMessages:["🌟 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! 💡🤖"],fullScreen:!1}))},x=n=>{const[r,o]=t(!1);return e.createElement(e.Fragment,null,e.createElement("button",{id:"chat-button",className:"fixed border-0 font-sans text-xl bg-orange-400 rounded-tl-md text-black px-3 py-2 hover:scale-95 transition text-ms bottom-0 right-0",onClick:()=>o(!0)},"ZIO Chat!"),e.createElement(y,{onClose:()=>o(!1),visible:r,websocketHost:n.websocketHost,websocketPort:n.websocketPort,websocketEndpoint:n.websocketEndpoint}))};export{x as ChatApp,b as ChatMessage,f as ChatPrompt,d as FeedbackForm,y as PopupChatWindow,m as References,h as RelatedQuestions,l as ThumbsDown,i as ThumbsUp};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../node_modules/tslib/tslib.es6.js","../src/src/stories/thumbs-up.tsx","../src/src/stories/thumbs-down.tsx","../node_modules/style-inject/dist/style-inject.es.js","../src/src/stories/FeedbackForm.tsx","../src/src/stories/RelatedQuestions.tsx","../src/src/stories/References.tsx","../src/src/stories/Bot.tsx","../src/src/stories/User.tsx","../src/src/stories/UserTypes.tsx","../src/src/stories/ChatMessage.tsx","../src/src/stories/ChatPrompt.tsx","../src/src/stories/PopupChatWindow.tsx","../src/src/stories/ChatApp.tsx"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n",null,null,"function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n",null,null,null,null,null,null,null,null,null,null],"names":["__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","SuppressedError","ThumbsUp","React","createElement","Fragment","xmlns","fill","viewBox","strokeWidth","stroke","className","strokeLinecap","strokeLinejoin","d","ThumbsDown","styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","FeedbackForm","chatHistory","baseHttpUrl","isUseful","setIsUseful","useState","feedbackSubmitted","setFeedbackSubmitted","useEffect","handleSubmit","fetch","method","headers","body","JSON","stringify","chat_history","is_useful","ok","console","log","error","title","onClick","disabled","RelatedQuestions","items","setQuestion","length","map","item","index","key","href","event","target","textContent","References","page_url","page_title","Bot","width","height","version","User","UserTypes","UserTypes$1","ChatMessage","props","setChatHistory","highlight","userType","querySelectorAll","id","forEach","el","hljs","highlightElement","chatMessage","ReactMarkdown","text","String","includes","response","split","related_questions","string","trim","filter","line","l","test","replace","remove_number_fromHead","references","slice","ChatPrompt","defaultQuestion","websocketHost","websocketPort","websocketEndpoint","welcomeMessages","fullScreen","greetings","m","message","completed","question","messages","setMessages","arr","randomIndex","Math","floor","random","splice","getRandom","host","window","location","hostname","port","protocol","handleClick","ws","WebSocket","onopen","concat","history","data","send","onmessage","parse","word","token","updatedMessages","Object","assign","onSubmit","preventDefault","reset","onChange","placeholder","PopupChatWindow","visible","onClose","useRef","callback","_a","current","contains","addEventListener","removeEventListener","useClickOutside","ChatApp","isOpen","setIsOpen"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ThumbsDown: () => React.JSX.Element;
3
+ export default ThumbsDown;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const ThumbsUp: () => React.JSX.Element;
3
+ export default ThumbsUp;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bytebrain.ai/bytebrain-ui",
3
- "version": "0.0.6",
3
+ "version": "0.0.8",
4
4
  "engines": {
5
5
  "node": ">=16.x"
6
6
  },
@@ -15,7 +15,7 @@
15
15
  "highlight.js": "^11.9.0",
16
16
  "path-browserify": "^1.0.1",
17
17
  "process": "^0.11.10",
18
- "react-markdown": "^8.0.7"
18
+ "react-markdown": "^9.0.0"
19
19
  },
20
20
  "scripts": {
21
21
  "start": "react-scripts start",
@@ -67,6 +67,7 @@
67
67
  "@rollup/plugin-commonjs": "^25.0.7",
68
68
  "@rollup/plugin-image": "^3.0.3",
69
69
  "@rollup/plugin-node-resolve": "^15.2.3",
70
+ "@rollup/plugin-typescript": "^11.1.5",
70
71
  "@storybook/addon-essentials": "^7.0.8",
71
72
  "@storybook/addon-interactions": "^7.0.8",
72
73
  "@storybook/addon-links": "^7.0.8",
@@ -81,9 +82,13 @@
81
82
  "@testing-library/jest-dom": "^5.17.0",
82
83
  "@testing-library/react": "^13.4.0",
83
84
  "@testing-library/user-event": "^13.5.0",
85
+ "@types/react": "^18.2.35",
86
+ "@types/react-dom": "^18.2.14",
87
+ "@wcj/rollup-plugin-less": "^2.0.0",
84
88
  "autoprefixer": "^10.4.16",
85
89
  "babel-plugin-named-exports-order": "^0.0.2",
86
90
  "concurrently": "^7.6.0",
91
+ "less": "^4.2.0",
87
92
  "postcss": "^8.4.31",
88
93
  "postcss-modules": "^6.0.0",
89
94
  "prop-types": "^15.8.1",
@@ -99,8 +104,10 @@
99
104
  "rollup-plugin-terser": "^7.0.2",
100
105
  "storybook": "^7.5.2",
101
106
  "storybook-addon-themes": "^6.1.0",
107
+ "storybook-dark-mode": "^3.0.1",
102
108
  "storybook-tailwind-dark-mode": "^1.0.22",
103
109
  "tailwindcss": "^3.3.5",
110
+ "typescript": "^4.9.5",
104
111
  "web-vitals": "^3.5.0",
105
112
  "webpack": "^5.89.0"
106
113
  },