chat-assistant-dit
Version:
A lightweight, customizable chat assistant widget for web and React apps.
1 lines • 7.78 kB
JavaScript
!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.ChatBot=n():e.ChatBot=n()}(self,(()=>(()=>{"use strict";var e={56:(e,n,t)=>{e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},72:e=>{var n=[];function t(e){for(var t=-1,o=0;o<n.length;o++)if(n[o].identifier===e){t=o;break}return t}function o(e,o){for(var a={},i=[],c=0;c<e.length;c++){var s=e[c],d=o.base?s[0]+o.base:s[0],u=a[d]||0,l="".concat(d," ").concat(u);a[d]=u+1;var p=t(l),f={css:s[1],media:s[2],sourceMap:s[3],supports:s[4],layer:s[5]};if(-1!==p)n[p].references++,n[p].updater(f);else{var h=r(f,o);o.byIndex=c,n.splice(c,0,{identifier:l,updater:h,references:1})}i.push(l)}return i}function r(e,n){var t=n.domAPI(n);return t.update(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;t.update(e=n)}else t.remove()}}e.exports=function(e,r){var a=o(e=e||[],r=r||{});return function(e){e=e||[];for(var i=0;i<a.length;i++){var c=t(a[i]);n[c].references--}for(var s=o(e,r),d=0;d<a.length;d++){var u=t(a[d]);0===n[u].references&&(n[u].updater(),n.splice(u,1))}a=s}}},113:e=>{e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},314:e=>{e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",o=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),o&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),o&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,o,r,a){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(o)for(var c=0;c<this.length;c++){var s=this[c][0];null!=s&&(i[s]=!0)}for(var d=0;d<e.length;d++){var u=[].concat(e[d]);o&&i[u[0]]||(void 0!==a&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=a),t&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=t):u[2]=t),r&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=r):u[4]="".concat(r)),n.push(u))}},n}},365:(e,n,t)=>{t.d(n,{A:()=>c});var o=t(601),r=t.n(o),a=t(314),i=t.n(a)()(r());i.push([e.id,"#chat-widget-container {\n position: fixed;\n bottom: 20px;\n right: 20px;\n font-family: Arial, sans-serif;\n z-index: 10000;\n}\n\n/* Chat Bubble */\n.chat-button {\n background: #007bff;\n color: #fff;\n width: 56px;\n height: 56px;\n border-radius: 50%;\n font-size: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n box-shadow: 0 4px 10px rgba(0,0,0,0.2);\n transition: background 0.3s ease;\n}\n\n.chat-button:hover {\n background: #0056b3;\n}\n\n/* Chat Window */\n.chat-box {\n position: absolute;\n bottom: 70px;\n right: 0;\n width: 320px;\n height: 420px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 6px 18px rgba(0,0,0,0.3);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transition: all 0.3s ease;\n}\n\n.hidden {\n display: none;\n}\n\n.chat-header {\n background: #007bff;\n color: white;\n padding: 12px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.chat-messages {\n flex: 1;\n padding: 12px;\n overflow-y: auto;\n background: #f7f7f7;\n}\n\n.chat-message {\n margin-bottom: 10px;\n padding: 8px 10px;\n border-radius: 8px;\n max-width: 85%;\n}\n\n.chat-message.user {\n background: #d1e7ff;\n align-self: flex-end;\n}\n\n.chat-message.bot {\n background: #eaeaea;\n align-self: flex-start;\n}\n\n.chat-form {\n display: flex;\n border-top: 1px solid #ddd;\n}\n\n.chat-form input {\n flex: 1;\n padding: 10px;\n border: none;\n font-size: 14px;\n}\n\n.chat-form button {\n padding: 10px 16px;\n border: none;\n background: #007bff;\n color: white;\n cursor: pointer;\n}\n\n.chat-form button:hover {\n background: #0056b3;\n}\n",""]);const c=i},540:e=>{e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},601:e=>{e.exports=function(e){return e[1]}},659:e=>{var n={};e.exports=function(e,t){var o=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(t)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var o="";t.supports&&(o+="@supports (".concat(t.supports,") {")),t.media&&(o+="@media ".concat(t.media," {"));var r=void 0!==t.layer;r&&(o+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),o+=t.css,r&&(o+="}"),t.media&&(o+="}"),t.supports&&(o+="}");var a=t.sourceMap;a&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),n.styleTagTransform(o,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}}},n={};function t(o){var r=n[o];if(void 0!==r)return r.exports;var a=n[o]={id:o,exports:{}};return e[o](a,a.exports,t),a.exports}t.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return t.d(n,{a:n}),n},t.d=(e,n)=>{for(var o in n)t.o(n,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:n[o]})},t.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),t.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.nc=void 0;var o={};t.r(o),t.d(o,{initChatBot:()=>g});var r=t(72),a=t.n(r),i=t(825),c=t.n(i),s=t(659),d=t.n(s),u=t(56),l=t.n(u),p=t(540),f=t.n(p),h=t(113),m=t.n(h),b=t(365),v={};function g(){!function(e={}){if(document.getElementById("chat-widget-container"))return;const n=document.createElement("div");n.id="chat-widget-container",document.body.appendChild(n),n.innerHTML='\n <div class="chat-button" id="chat-toggle">💬</div>\n\n <div class="chat-box hidden" id="chat-box">\n <div class="chat-header">\n <span>AI Assistant</span>\n <button id="chat-close">×</button>\n </div>\n <div class="chat-messages" id="chat-messages"></div>\n <form class="chat-form" id="chat-form">\n <input type="text" id="chat-input" placeholder="Type your message..." />\n <button type="submit">Send</button>\n </form>\n </div>\n ';const t=n.querySelector("#chat-toggle"),o=n.querySelector("#chat-box"),r=n.querySelector("#chat-close"),a=n.querySelector("#chat-form"),i=n.querySelector("#chat-input"),c=n.querySelector("#chat-messages");function s(e,n){const t=document.createElement("div");t.className="chat-message "+("You"===e?"user":"bot"),t.textContent=`${e}: ${n}`,c.appendChild(t),c.scrollTop=c.scrollHeight}t.addEventListener("click",(()=>{o.classList.remove("hidden"),c.dataset.welcomeShown||(s("Bot",e.welcomeMessage||"👋 Hello! How can I help you today?"),c.dataset.welcomeShown="true")})),r.addEventListener("click",(()=>o.classList.add("hidden"))),a.addEventListener("submit",(e=>{e.preventDefault();const n=i.value.trim();n&&(s("You",n),i.value="",setTimeout((()=>{s("Bot",`You said: "${n}"`)}),600))}))}()}return v.styleTagTransform=m(),v.setAttributes=l(),v.insert=d().bind(null,"head"),v.domAPI=c(),v.insertStyleElement=f(),a()(b.A,v),b.A&&b.A.locals&&b.A.locals,o})()));