@n8n/chat 0.57.0 → 0.58.0

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.
@@ -1,7 +1,7 @@
1
1
  var Hy = Object.defineProperty;
2
2
  var jy = (e, t, n) => t in e ? Hy(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var Ts = (e, t, n) => jy(e, typeof t != "symbol" ? t + "" : t, n);
4
- /*! Package version @n8n/chat@0.57.0 */
4
+ /*! Package version @n8n/chat@0.58.0 */
5
5
  /**
6
6
  * @vue/shared v3.5.13
7
7
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
@@ -1,4 +1,4 @@
1
- (function(vt,qt){typeof exports=="object"&&typeof module<"u"?qt(exports):typeof define=="function"&&define.amd?define(["exports"],qt):(vt=typeof globalThis<"u"?globalThis:vt||self,qt(vt.N8nChat={}))})(this,(function(vt){"use strict";var FN=Object.defineProperty;var zN=(vt,qt,Ue)=>qt in vt?FN(vt,qt,{enumerable:!0,configurable:!0,writable:!0,value:Ue}):vt[qt]=Ue;var pa=(vt,qt,Ue)=>zN(vt,typeof qt!="symbol"?qt+"":qt,Ue);/*! Package version @n8n/chat@0.57.0 *//**
1
+ (function(vt,qt){typeof exports=="object"&&typeof module<"u"?qt(exports):typeof define=="function"&&define.amd?define(["exports"],qt):(vt=typeof globalThis<"u"?globalThis:vt||self,qt(vt.N8nChat={}))})(this,(function(vt){"use strict";var FN=Object.defineProperty;var zN=(vt,qt,Ue)=>qt in vt?FN(vt,qt,{enumerable:!0,configurable:!0,writable:!0,value:Ue}):vt[qt]=Ue;var pa=(vt,qt,Ue)=>zN(vt,typeof qt!="symbol"?qt+"":qt,Ue);/*! Package version @n8n/chat@0.58.0 *//**
2
2
  * @vue/shared v3.5.13
3
3
  * (c) 2018-present Yuxi (Evan) You and Vue contributors
4
4
  * @license MIT
package/dist/chat.es.js CHANGED
@@ -2,7 +2,7 @@ var _v = Object.defineProperty;
2
2
  var bv = (e, t, n) => t in e ? _v(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var bo = (e, t, n) => bv(e, typeof t != "symbol" ? t + "" : t, n);
4
4
  import { nextTick as Me, ref as D, computed as I, createElementBlock as C, openBlock as b, createElementVNode as p, renderSlot as ae, inject as Le, isRef as Cp, defineComponent as Z, createVNode as he, withCtx as J, createTextVNode as mr, toDisplayString as ke, unref as _, createCommentVNode as te, getCurrentScope as Sp, onScopeDispose as Ep, readonly as Ap, createBlock as Y, withModifiers as tt, onMounted as je, onUnmounted as $p, normalizeStyle as Ue, withDirectives as rt, withKeys as ft, vModelText as Mp, Fragment as He, renderList as ot, onBeforeUnmount as Ft, getCurrentInstance as lt, watch as ue, warn as yv, shallowRef as mn, onBeforeMount as wv, provide as St, mergeProps as We, toRef as Bt, useAttrs as ao, useSlots as Ip, normalizeClass as H, resolveDynamicComponent as ht, vShow as Qt, Transition as er, reactive as zn, onUpdated as kv, cloneVNode as xv, Text as Tp, Comment as Cv, Teleport as Sv, onDeactivated as Ev, watchEffect as Gc, toRaw as Vo, toRefs as ss, triggerRef as Rr, resolveComponent as $n, resolveDirective as Kc, createSlots as Kr, h as Rt, normalizeProps as Xr, createStaticVNode as Dn, useCssModule as is, pushScopeId as Av, popScopeId as $v, guardReactiveProps as Lp, mergeDefaults as Op, createApp as Mv } from "vue";
5
- /*! Package version @n8n/chat@0.57.0 */
5
+ /*! Package version @n8n/chat@0.58.0 */
6
6
  const Pr = {
7
7
  webhookUrl: "http://localhost:5678",
8
8
  webhookConfig: {
package/dist/chat.umd.js CHANGED
@@ -1,4 +1,4 @@
1
- (function(Ae,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(Ae=typeof globalThis<"u"?globalThis:Ae||self,n(Ae.N8nChat={},Ae.Vue))})(this,(function(Ae,n){"use strict";var xR=Object.defineProperty;var vR=(Ae,n,Bt)=>n in Ae?xR(Ae,n,{enumerable:!0,configurable:!0,writable:!0,value:Bt}):Ae[n]=Bt;var qr=(Ae,n,Bt)=>vR(Ae,typeof n!="symbol"?n+"":n,Bt);/*! Package version @n8n/chat@0.57.0 */const Bt={webhookUrl:"http://localhost:5678",webhookConfig:{method:"POST",headers:{}},target:"#n8n-chat",mode:"window",loadPreviousSession:!0,chatInputKey:"chatInput",chatSessionKey:"sessionId",defaultLanguage:"en",showWelcomeScreen:!1,initialMessages:["Hi there! 👋","My name is Nathan. How can I assist you today?"],i18n:{en:{title:"Hi there! 👋",subtitle:"Start a chat. We're here to help you 24/7.",footer:"",getStarted:"New Conversation",inputPlaceholder:"Type your question..",closeButtonTooltip:"Close chat"}},theme:{},enableStreaming:!1},Qg="#n8n-chat",Yc="n8n-chat/sessionId",Jc="Chat",Qc="ChatOptions";for(var Ve=[],Dr=0;Dr<256;++Dr)Ve.push((Dr+256).toString(16).slice(1));function e1(e,t=0){return(Ve[e[t+0]]+Ve[e[t+1]]+Ve[e[t+2]]+Ve[e[t+3]]+"-"+Ve[e[t+4]]+Ve[e[t+5]]+"-"+Ve[e[t+6]]+Ve[e[t+7]]+"-"+Ve[e[t+8]]+Ve[e[t+9]]+"-"+Ve[e[t+10]]+Ve[e[t+11]]+Ve[e[t+12]]+Ve[e[t+13]]+Ve[e[t+14]]+Ve[e[t+15]]).toLowerCase()}var No,t1=new Uint8Array(16);function n1(){if(!No&&(No=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!No))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return No(t1)}var o1=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const el={randomUUID:o1};function an(e,t,o){if(el.randomUUID&&!e)return el.randomUUID();e=e||{};var r=e.random||(e.rng||n1)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,e1(r)}async function r1(){return""}async function Pr(...e){var i,c;const t=await r1(),o=(i=e[1])==null?void 0:i.body,r={...t?{authorization:`Bearer ${t}`}:{},...(c=e[1])==null?void 0:c.headers};o instanceof FormData?delete r["Content-Type"]:r["Content-Type"]="application/json";const a=await fetch(e[0],{...e[1],mode:"cors",cache:"no-cache",headers:r});let s;try{s=await a.clone().json()}catch{s=await a.text()}return s}async function tl(e,t={},o={}){let r=e;return Object.keys(t).length>0&&(r=`${r}?${new URLSearchParams(t).toString()}`),await Pr(r,{...o,method:"GET"})}async function nl(e,t={},o={}){return await Pr(e,{...o,method:"POST",body:JSON.stringify(t)})}async function s1(e,t={},o=[],r={}){const a=new FormData;for(const s in t){const i=t[s];typeof i=="object"&&i!==null?a.append(s,JSON.stringify(i)):a.append(s,i)}for(const s of o)a.append("files",s);return await Pr(e,{...r,method:"POST",body:a})}async function a1(e,t){var r,a;return await(((r=t.webhookConfig)==null?void 0:r.method)==="POST"?nl:tl)(`${t.webhookUrl}`,{action:"loadPreviousSession",[t.chatSessionKey]:e,...t.metadata?{metadata:t.metadata}:{}},{headers:(a=t.webhookConfig)==null?void 0:a.headers})}async function i1(e,t,o,r){var s,i,c;return t.length>0?await s1(`${r.webhookUrl}`,{action:"sendMessage",[r.chatSessionKey]:o,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},t,{headers:(s=r.webhookConfig)==null?void 0:s.headers}):await(((i=r.webhookConfig)==null?void 0:i.method)==="POST"?nl:tl)(`${r.webhookUrl}`,{action:"sendMessage",[r.chatSessionKey]:o,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},{headers:(c=r.webhookConfig)==null?void 0:c.headers})}function c1(){let e="";const t=new TextDecoder;return new TransformStream({transform(o,r){e+=t.decode(o,{stream:!0});const a=e.split(`
1
+ (function(Ae,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(Ae=typeof globalThis<"u"?globalThis:Ae||self,n(Ae.N8nChat={},Ae.Vue))})(this,(function(Ae,n){"use strict";var xR=Object.defineProperty;var vR=(Ae,n,Bt)=>n in Ae?xR(Ae,n,{enumerable:!0,configurable:!0,writable:!0,value:Bt}):Ae[n]=Bt;var qr=(Ae,n,Bt)=>vR(Ae,typeof n!="symbol"?n+"":n,Bt);/*! Package version @n8n/chat@0.58.0 */const Bt={webhookUrl:"http://localhost:5678",webhookConfig:{method:"POST",headers:{}},target:"#n8n-chat",mode:"window",loadPreviousSession:!0,chatInputKey:"chatInput",chatSessionKey:"sessionId",defaultLanguage:"en",showWelcomeScreen:!1,initialMessages:["Hi there! 👋","My name is Nathan. How can I assist you today?"],i18n:{en:{title:"Hi there! 👋",subtitle:"Start a chat. We're here to help you 24/7.",footer:"",getStarted:"New Conversation",inputPlaceholder:"Type your question..",closeButtonTooltip:"Close chat"}},theme:{},enableStreaming:!1},Qg="#n8n-chat",Yc="n8n-chat/sessionId",Jc="Chat",Qc="ChatOptions";for(var Ve=[],Dr=0;Dr<256;++Dr)Ve.push((Dr+256).toString(16).slice(1));function e1(e,t=0){return(Ve[e[t+0]]+Ve[e[t+1]]+Ve[e[t+2]]+Ve[e[t+3]]+"-"+Ve[e[t+4]]+Ve[e[t+5]]+"-"+Ve[e[t+6]]+Ve[e[t+7]]+"-"+Ve[e[t+8]]+Ve[e[t+9]]+"-"+Ve[e[t+10]]+Ve[e[t+11]]+Ve[e[t+12]]+Ve[e[t+13]]+Ve[e[t+14]]+Ve[e[t+15]]).toLowerCase()}var No,t1=new Uint8Array(16);function n1(){if(!No&&(No=typeof crypto<"u"&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto),!No))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return No(t1)}var o1=typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto);const el={randomUUID:o1};function an(e,t,o){if(el.randomUUID&&!e)return el.randomUUID();e=e||{};var r=e.random||(e.rng||n1)();return r[6]=r[6]&15|64,r[8]=r[8]&63|128,e1(r)}async function r1(){return""}async function Pr(...e){var i,c;const t=await r1(),o=(i=e[1])==null?void 0:i.body,r={...t?{authorization:`Bearer ${t}`}:{},...(c=e[1])==null?void 0:c.headers};o instanceof FormData?delete r["Content-Type"]:r["Content-Type"]="application/json";const a=await fetch(e[0],{...e[1],mode:"cors",cache:"no-cache",headers:r});let s;try{s=await a.clone().json()}catch{s=await a.text()}return s}async function tl(e,t={},o={}){let r=e;return Object.keys(t).length>0&&(r=`${r}?${new URLSearchParams(t).toString()}`),await Pr(r,{...o,method:"GET"})}async function nl(e,t={},o={}){return await Pr(e,{...o,method:"POST",body:JSON.stringify(t)})}async function s1(e,t={},o=[],r={}){const a=new FormData;for(const s in t){const i=t[s];typeof i=="object"&&i!==null?a.append(s,JSON.stringify(i)):a.append(s,i)}for(const s of o)a.append("files",s);return await Pr(e,{...r,method:"POST",body:a})}async function a1(e,t){var r,a;return await(((r=t.webhookConfig)==null?void 0:r.method)==="POST"?nl:tl)(`${t.webhookUrl}`,{action:"loadPreviousSession",[t.chatSessionKey]:e,...t.metadata?{metadata:t.metadata}:{}},{headers:(a=t.webhookConfig)==null?void 0:a.headers})}async function i1(e,t,o,r){var s,i,c;return t.length>0?await s1(`${r.webhookUrl}`,{action:"sendMessage",[r.chatSessionKey]:o,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},t,{headers:(s=r.webhookConfig)==null?void 0:s.headers}):await(((i=r.webhookConfig)==null?void 0:i.method)==="POST"?nl:tl)(`${r.webhookUrl}`,{action:"sendMessage",[r.chatSessionKey]:o,[r.chatInputKey]:e,...r.metadata?{metadata:r.metadata}:{}},{headers:(c=r.webhookConfig)==null?void 0:c.headers})}function c1(){let e="";const t=new TextDecoder;return new TransformStream({transform(o,r){e+=t.decode(o,{stream:!0});const a=e.split(`
2
2
  `);e=a.pop()??"";for(const s of a)if(s.trim())try{const i=JSON.parse(s);r.enqueue(i)}catch{r.enqueue({type:"item",content:s})}},flush(o){if(e.trim())try{const r=JSON.parse(e);o.enqueue(r)}catch{o.enqueue({type:"item",content:e})}}})}async function l1(e,t,o,r,a){var l,d;const s=await(t.length>0?u1(e,t,o,r):d1(e,o,r));if(!s.ok){const f=await s.text();throw console.error("HTTP error response:",s.status,f),new Error(`Error while sending message. Error: ${f}`)}if(!s.body)throw new Error("Response body is not readable");const i=s.body.pipeThrough(c1()).getReader();let c=!1;try{for(;;){const{done:f,value:u}=await i.read();if(f)break;const g=((l=u.metadata)==null?void 0:l.nodeId)||"unknown",p=(d=u.metadata)==null?void 0:d.runIndex;switch(u.type){case"begin":a.onBeginMessage(g,p);break;case"item":c=!0,a.onChunk(u.content??"",g,p);break;case"end":a.onEndMessage(g,p);break;case"error":c=!0,a.onChunk(`Error: ${u.content??"Unknown error"}`,g,p),a.onEndMessage(g,p);break}}}finally{i.releaseLock()}return{hasReceivedChunks:c}}async function u1(e,t,o,r){var s;const a=new FormData;a.append("action","sendMessage"),a.append(r.chatSessionKey,o),a.append(r.chatInputKey,e),r.metadata&&a.append("metadata",JSON.stringify(r.metadata));for(const i of t)a.append("files",i);return await fetch(r.webhookUrl,{method:"POST",headers:{Accept:"text/plain",...(s=r.webhookConfig)==null?void 0:s.headers},body:a})}async function d1(e,t,o){var a;const r={action:"sendMessage",[o.chatSessionKey]:t,[o.chatInputKey]:e,...o.metadata?{metadata:o.metadata}:{}};return await fetch(o.webhookUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"text/plain",...(a=o.webhookConfig)==null?void 0:a.headers},body:JSON.stringify(r)})}function f1(){const e=new Map;function t(a,s){const i=e.get(a);i&&i.splice(i.indexOf(s)>>>0,1)}function o(a,s){let i=e.get(a);return i?i.push(s):i=[s],e.set(a,i),()=>t(a,s)}function r(a,s){const i=e.get(a);i&&i.slice().forEach(async c=>{await c(s)})}return{on:o,off:t,emit:r}}function p1(e){if(!document.querySelector(e)){const o=document.createElement("div");e.startsWith("#")&&(o.id=e.replace("#","")),e.startsWith(".")&&o.classList.add(e.replace(".","")),document.body.appendChild(o)}}function h1(e,t,o,r){const a=new URL(e).origin,s=a.startsWith("https")?"wss":"ws";return`${a.replace(/^https?/,s)}/chat?sessionId=${o}&executionId=${t}&isPublic=true`}const Ge=f1();class m1{constructor(){qr(this,"nodeRuns",new Map);qr(this,"runOrder",[]);qr(this,"activeRuns",new Set)}getRunKey(t,o){return o!==void 0?`${t}-${o}`:t}initializeRun(t,o){const r=this.getRunKey(t,o);if(!this.nodeRuns.has(r)){const a=xn();return this.nodeRuns.set(r,{content:"",isComplete:!1,message:a}),this.runOrder.push(r),a}return this.nodeRuns.get(r).message}registerRunStart(t,o){const r=this.getRunKey(t,o);this.activeRuns.add(r)}addRunToActive(t,o){const r=this.getRunKey(t,o);return this.activeRuns.add(r),this.initializeRun(t,o)}removeRunFromActive(t,o){const r=this.getRunKey(t,o);this.activeRuns.delete(r);const a=this.nodeRuns.get(r);a&&(a.isComplete=!0)}addChunkToRun(t,o,r){const a=this.getRunKey(t,r),s=this.nodeRuns.get(a);if(s){s.content+=o;const i={...s.message,text:s.content};return s.message=i,i}return null}getRunMessage(t,o){const r=this.getRunKey(t,o),a=this.nodeRuns.get(r);return(a==null?void 0:a.message)??null}areAllRunsComplete(){return Array.from(this.nodeRuns.values()).every(t=>t.isComplete)}getRunCount(){return this.runOrder.length}getActiveRunCount(){return this.activeRuns.size}getAllMessages(){return this.runOrder.map(t=>{var o;return(o=this.nodeRuns.get(t))==null?void 0:o.message}).filter(t=>t!==void 0)}reset(){this.nodeRuns.clear(),this.runOrder=[],this.activeRuns.clear()}}function xn(e){return{id:e??an(),type:"text",text:"",sender:"bot"}}function ol(e,t,o){const r=e.findIndex(a=>a.id===t);if(r===-1)throw new Error(`Can't update message. No message with id ${t} found`);e[r]=o}function g1(e,t,o,r,a,s){try{if(e==="")return;if(t){let i=o.getRunMessage(t,s);i||(i=o.addRunToActive(t,s),a.value.push(i));const c=o.addChunkToRun(t,e,s);c&&ol(a.value,c.id,c)}else{r.value||(r.value=xn(),a.value.push(r.value));const i={...r.value,text:r.value.text+e};ol(a.value,r.value.id,i),r.value=i}n.nextTick(()=>{Ge.emit("scrollToBottom")})}catch(i){console.error("Error handling stream chunk:",i)}}function _1(e,t,o){try{t.registerRunStart(e,o)}catch(r){console.error("Error handling node start:",r)}}function b1(e,t,o){try{t.removeRunFromActive(e,o)}catch(r){console.error("Error handling node complete:",r)}}function k1(e,t=[]){return{id:an(),text:e,sender:"user",files:t}}function w1(e){let t=e.output??e.text??e.message??"";if(t===""&&Object.keys(e).length>0)try{t=JSON.stringify(e,null,2)}catch{}return t}function y1(e){const{receivedMessage:t,messages:o}=e;t.value&&o.value.some(a=>a.sender==="bot"&&"text"in a&&a.text.trim().length>0)||(t.value=xn(),o.value.push(t.value)),t.value.text="[No response received. This could happen if streaming is enabled in the trigger but disabled in agent node(s)]"}function C1(e){const{error:t,receivedMessage:o,messages:r}=e;o.value??(o.value=xn()),o.value.text="Error: Failed to receive response",r.value.includes(o.value)||r.value.push(o.value),console.error("Chat API error:",t)}async function E1(e){const{text:t,files:o,sessionId:r,options:a,messages:s,receivedMessage:i,streamingManager:c}=e,l={onChunk:(f,u,g)=>{g1(f,u,c,i,s,g)},onBeginMessage:(f,u)=>{_1(f,c,u)},onEndMessage:(f,u)=>{b1(f,c,u)}},{hasReceivedChunks:d}=await l1(t,o,r,a,l);d||y1({receivedMessage:i,messages:s})}async function x1(e){const{text:t,files:o,sessionId:r,options:a}=e,s=await i1(t,o,r,a);if(s!=null&&s.executionStarted)return{response:s};const i=xn();return i.text=w1(s),{botMessage:i}}const v1={install(e,t){e.provide(Qc,t);const o=n.ref([]),r=n.ref(null),a=n.ref(!1),s=n.computed(()=>(t.initialMessages??[]).map(f=>({id:an(),text:f,sender:"bot"})));async function i(f,u=[]){var m;const g=k1(f,u);o.value.push(g),a.value=!0,n.nextTick(()=>{Ge.emit("scrollToBottom")});const p=n.ref(null),_=new m1;try{if(t!=null&&t.enableStreaming)await E1({text:f,files:u,sessionId:r.value,options:t,messages:o,receivedMessage:p,streamingManager:_});else{const b=await x1({text:f,files:u,sessionId:r.value,options:t});if((m=b.response)!=null&&m.executionStarted)return a.value=!1,b.response;b.botMessage&&(p.value=b.botMessage,o.value.push(b.botMessage))}}catch(b){C1({error:b,receivedMessage:p,messages:o})}finally{a.value=!1}return n.nextTick(()=>{Ge.emit("scrollToBottom")}),null}async function c(){if(!t.loadPreviousSession)return;const f=localStorage.getItem(Yc)??an(),u=await a1(f,t);return o.value=((u==null?void 0:u.data)||[]).map((g,p)=>({id:`${p}`,text:g.kwargs.content,sender:g.id.includes("HumanMessage")?"user":"bot"})),o.value.length&&(r.value=f),f}async function l(){r.value=an(),localStorage.setItem(Yc,r.value)}const d={initialMessages:s,messages:o,currentSessionId:r,waitingForResponse:a,loadPreviousSession:c,startNewSession:l,sendMessage:i};e.provide(Jc,d),e.config.globalProperties.$chat=d}};var vn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function Sn(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Fr,rl;function S1(){if(rl)return Fr;rl=1;function e(E){return E instanceof Map?E.clear=E.delete=E.set=function(){throw new Error("map is read-only")}:E instanceof Set&&(E.add=E.clear=E.delete=function(){throw new Error("set is read-only")}),Object.freeze(E),Object.getOwnPropertyNames(E).forEach(N=>{const R=E[N],Y=typeof R;(Y==="object"||Y==="function")&&!Object.isFrozen(R)&&e(R)}),E}class t{constructor(N){N.data===void 0&&(N.data={}),this.data=N.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function o(E){return E.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}function r(E,...N){const R=Object.create(null);for(const Y in E)R[Y]=E[Y];return N.forEach(function(Y){for(const ue in Y)R[ue]=Y[ue]}),R}const a="</span>",s=E=>!!E.scope,i=(E,{prefix:N})=>{if(E.startsWith("language:"))return E.replace("language:","language-");if(E.includes(".")){const R=E.split(".");return[`${N}${R.shift()}`,...R.map((Y,ue)=>`${Y}${"_".repeat(ue+1)}`)].join(" ")}return`${N}${E}`};class c{constructor(N,R){this.buffer="",this.classPrefix=R.classPrefix,N.walk(this)}addText(N){this.buffer+=o(N)}openNode(N){if(!s(N))return;const R=i(N.scope,{prefix:this.classPrefix});this.span(R)}closeNode(N){s(N)&&(this.buffer+=a)}value(){return this.buffer}span(N){this.buffer+=`<span class="${N}">`}}const l=(E={})=>{const N={children:[]};return Object.assign(N,E),N};class d{constructor(){this.rootNode=l(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(N){this.top.children.push(N)}openNode(N){const R=l({scope:N});this.add(R),this.stack.push(R)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(N){return this.constructor._walk(N,this.rootNode)}static _walk(N,R){return typeof R=="string"?N.addText(R):R.children&&(N.openNode(R),R.children.forEach(Y=>this._walk(N,Y)),N.closeNode(R)),N}static _collapse(N){typeof N!="string"&&N.children&&(N.children.every(R=>typeof R=="string")?N.children=[N.children.join("")]:N.children.forEach(R=>{d._collapse(R)}))}}class f extends d{constructor(N){super(),this.options=N}addText(N){N!==""&&this.add(N)}startScope(N){this.openNode(N)}endScope(){this.closeNode()}__addSublanguage(N,R){const Y=N.root;R&&(Y.scope=`language:${R}`),this.add(Y)}toHTML(){return new c(this,this.options).value()}finalize(){return this.closeAllNodes(),!0}}function u(E){return E?typeof E=="string"?E:E.source:null}function g(E){return m("(?=",E,")")}function p(E){return m("(?:",E,")*")}function _(E){return m("(?:",E,")?")}function m(...E){return E.map(R=>u(R)).join("")}function b(E){const N=E[E.length-1];return typeof N=="object"&&N.constructor===Object?(E.splice(E.length-1,1),N):{}}function h(...E){return"("+(b(E).capture?"":"?:")+E.map(Y=>u(Y)).join("|")+")"}function k(E){return new RegExp(E.toString()+"|").exec("").length-1}function w(E,N){const R=E&&E.exec(N);return R&&R.index===0}const y=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function x(E,{joinWith:N}){let R=0;return E.map(Y=>{R+=1;const ue=R;let me=u(Y),W="";for(;me.length>0;){const U=y.exec(me);if(!U){W+=me;break}W+=me.substring(0,U.index),me=me.substring(U.index+U[0].length),U[0][0]==="\\"&&U[1]?W+="\\"+String(Number(U[1])+ue):(W+=U[0],U[0]==="("&&R++)}return W}).map(Y=>`(${Y})`).join(N)}const C=/\b\B/,v="[a-zA-Z]\\w*",S="[a-zA-Z_]\\w*",T="\\b\\d+(\\.\\d+)?",$="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",M="\\b(0b[01]+)",V="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",X=(E={})=>{const N=/^#![ ]*\//;return E.binary&&(E.begin=m(N,/.*\b/,E.binary,/\b.*/)),r({scope:"meta",begin:N,end:/$/,relevance:0,"on:begin":(R,Y)=>{R.index!==0&&Y.ignoreMatch()}},E)},I={begin:"\\\\[\\s\\S]",relevance:0},H={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[I]},L={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[I]},z={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},O=function(E,N,R={}){const Y=r({scope:"comment",begin:E,end:N,contains:[]},R);Y.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const ue=h("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return Y.contains.push({begin:m(/[ ]+/,"(",ue,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),Y},P=O("//","$"),B=O("/\\*","\\*/"),D=O("#","$"),q={scope:"number",begin:T,relevance:0},K={scope:"number",begin:$,relevance:0},Q={scope:"number",begin:M,relevance:0},re={scope:"regexp",begin:/\/(?=[^/\n]*\/)/,end:/\/[gimuy]*/,contains:[I,{begin:/\[/,end:/\]/,relevance:0,contains:[I]}]},ce={scope:"title",begin:v,relevance:0},we={scope:"title",begin:S,relevance:0},_e={begin:"\\.\\s*"+S,relevance:0};var Z=Object.freeze({__proto__:null,APOS_STRING_MODE:H,BACKSLASH_ESCAPE:I,BINARY_NUMBER_MODE:Q,BINARY_NUMBER_RE:M,COMMENT:O,C_BLOCK_COMMENT_MODE:B,C_LINE_COMMENT_MODE:P,C_NUMBER_MODE:K,C_NUMBER_RE:$,END_SAME_AS_BEGIN:function(E){return Object.assign(E,{"on:begin":(N,R)=>{R.data._beginMatch=N[1]},"on:end":(N,R)=>{R.data._beginMatch!==N[1]&&R.ignoreMatch()}})},HASH_COMMENT_MODE:D,IDENT_RE:v,MATCH_NOTHING_RE:C,METHOD_GUARD:_e,NUMBER_MODE:q,NUMBER_RE:T,PHRASAL_WORDS_MODE:z,QUOTE_STRING_MODE:L,REGEXP_MODE:re,RE_STARTERS_RE:V,SHEBANG:X,TITLE_MODE:ce,UNDERSCORE_IDENT_RE:S,UNDERSCORE_TITLE_MODE:we});function te(E,N){E.input[E.index-1]==="."&&N.ignoreMatch()}function de(E,N){E.className!==void 0&&(E.scope=E.className,delete E.className)}function ye(E,N){N&&E.beginKeywords&&(E.begin="\\b("+E.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",E.__beforeBegin=te,E.keywords=E.keywords||E.beginKeywords,delete E.beginKeywords,E.relevance===void 0&&(E.relevance=0))}function Ne(E,N){Array.isArray(E.illegal)&&(E.illegal=h(...E.illegal))}function Ie(E,N){if(E.match){if(E.begin||E.end)throw new Error("begin & end are not supported with match");E.begin=E.match,delete E.match}}function qe(E,N){E.relevance===void 0&&(E.relevance=1)}const Mt=(E,N)=>{if(!E.beforeMatch)return;if(E.starts)throw new Error("beforeMatch cannot be used with starts");const R=Object.assign({},E);Object.keys(E).forEach(Y=>{delete E[Y]}),E.keywords=R.keywords,E.begin=m(R.beforeMatch,g(R.begin)),E.starts={relevance:0,contains:[Object.assign(R,{endsParent:!0})]},E.relevance=0,delete R.beforeMatch},ot=["of","and","for","in","not","or","if","then","parent","list","value"],Et="keyword";function He(E,N,R=Et){const Y=Object.create(null);return typeof E=="string"?ue(R,E.split(" ")):Array.isArray(E)?ue(R,E):Object.keys(E).forEach(function(me){Object.assign(Y,He(E[me],N,me))}),Y;function ue(me,W){N&&(W=W.map(U=>U.toLowerCase())),W.forEach(function(U){const oe=U.split("|");Y[oe[0]]=[me,ht(oe[0],oe[1])]})}}function ht(E,N){return N?Number(N):rt(E)?0:1}function rt(E){return ot.includes(E.toLowerCase())}const xt={},Oe=E=>{console.error(E)},F=(E,...N)=>{console.log(`WARN: ${E}`,...N)},ne=(E,N)=>{xt[`${E}/${N}`]||(console.log(`Deprecated as of ${E}. ${N}`),xt[`${E}/${N}`]=!0)},Ce=new Error;function Me(E,N,{key:R}){let Y=0;const ue=E[R],me={},W={};for(let U=1;U<=N.length;U++)W[U+Y]=ue[U],me[U+Y]=!0,Y+=k(N[U-1]);E[R]=W,E[R]._emit=me,E[R]._multi=!0}function vt(E){if(Array.isArray(E.begin)){if(E.skip||E.excludeBegin||E.returnBegin)throw Oe("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),Ce;if(typeof E.beginScope!="object"||E.beginScope===null)throw Oe("beginScope must be object"),Ce;Me(E,E.begin,{key:"beginScope"}),E.begin=x(E.begin,{joinWith:""})}}function kn(E){if(Array.isArray(E.end)){if(E.skip||E.excludeEnd||E.returnEnd)throw Oe("skip, excludeEnd, returnEnd not compatible with endScope: {}"),Ce;if(typeof E.endScope!="object"||E.endScope===null)throw Oe("endScope must be object"),Ce;Me(E,E.end,{key:"endScope"}),E.end=x(E.end,{joinWith:""})}}function wn(E){E.scope&&typeof E.scope=="object"&&E.scope!==null&&(E.beginScope=E.scope,delete E.scope)}function Gn(E){wn(E),typeof E.beginScope=="string"&&(E.beginScope={_wrap:E.beginScope}),typeof E.endScope=="string"&&(E.endScope={_wrap:E.endScope}),vt(E),kn(E)}function vo(E){function N(W,U){return new RegExp(u(W),"m"+(E.case_insensitive?"i":"")+(E.unicodeRegex?"u":"")+(U?"g":""))}class R{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(U,oe){oe.position=this.position++,this.matchIndexes[this.matchAt]=oe,this.regexes.push([oe,U]),this.matchAt+=k(U)+1}compile(){this.regexes.length===0&&(this.exec=()=>null);const U=this.regexes.map(oe=>oe[1]);this.matcherRe=N(x(U,{joinWith:"|"}),!0),this.lastIndex=0}exec(U){this.matcherRe.lastIndex=this.lastIndex;const oe=this.matcherRe.exec(U);if(!oe)return null;const Le=oe.findIndex((st,Uc)=>Uc>0&&st!==void 0),ge=this.matchIndexes[Le];return oe.splice(0,Le),Object.assign(oe,ge)}}class Y{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(U){if(this.multiRegexes[U])return this.multiRegexes[U];const oe=new R;return this.rules.slice(U).forEach(([Le,ge])=>oe.addRule(Le,ge)),oe.compile(),this.multiRegexes[U]=oe,oe}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(U,oe){this.rules.push([U,oe]),oe.type==="begin"&&this.count++}exec(U){const oe=this.getMatcher(this.regexIndex);oe.lastIndex=this.lastIndex;let Le=oe.exec(U);if(this.resumingScanAtSamePosition()&&!(Le&&Le.index===this.lastIndex)){const ge=this.getMatcher(0);ge.lastIndex=this.lastIndex+1,Le=ge.exec(U)}return Le&&(this.regexIndex+=Le.position+1,this.regexIndex===this.count&&this.considerAll()),Le}}function ue(W){const U=new Y;return W.contains.forEach(oe=>U.addRule(oe.begin,{rule:oe,type:"begin"})),W.terminatorEnd&&U.addRule(W.terminatorEnd,{type:"end"}),W.illegal&&U.addRule(W.illegal,{type:"illegal"}),U}function me(W,U){const oe=W;if(W.isCompiled)return oe;[de,Ie,Gn,Mt].forEach(ge=>ge(W,U)),E.compilerExtensions.forEach(ge=>ge(W,U)),W.__beforeBegin=null,[ye,Ne,qe].forEach(ge=>ge(W,U)),W.isCompiled=!0;let Le=null;return typeof W.keywords=="object"&&W.keywords.$pattern&&(W.keywords=Object.assign({},W.keywords),Le=W.keywords.$pattern,delete W.keywords.$pattern),Le=Le||/\w+/,W.keywords&&(W.keywords=He(W.keywords,E.case_insensitive)),oe.keywordPatternRe=N(Le,!0),U&&(W.begin||(W.begin=/\B|\b/),oe.beginRe=N(oe.begin),!W.end&&!W.endsWithParent&&(W.end=/\B|\b/),W.end&&(oe.endRe=N(oe.end)),oe.terminatorEnd=u(oe.end)||"",W.endsWithParent&&U.terminatorEnd&&(oe.terminatorEnd+=(W.end?"|":"")+U.terminatorEnd)),W.illegal&&(oe.illegalRe=N(W.illegal)),W.contains||(W.contains=[]),W.contains=[].concat(...W.contains.map(function(ge){return Zn(ge==="self"?W:ge)})),W.contains.forEach(function(ge){me(ge,oe)}),W.starts&&me(W.starts,U),oe.matcher=ue(oe),oe}if(E.compilerExtensions||(E.compilerExtensions=[]),E.contains&&E.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return E.classNameAliases=r(E.classNameAliases||{}),me(E)}function Gt(E){return E?E.endsWithParent||Gt(E.starts):!1}function Zn(E){return E.variants&&!E.cachedVariants&&(E.cachedVariants=E.variants.map(function(N){return r(E,{variants:null},N)})),E.cachedVariants?E.cachedVariants:Gt(E)?r(E,{starts:E.starts?r(E.starts):null}):Object.isFrozen(E)?r(E):E}var So="11.11.1";class yn extends Error{constructor(N,R){super(N),this.name="HTMLInjectionError",this.html=R}}const on=o,Wn=r,Cn=Symbol("nomatch"),Bo=7,Kn=function(E){const N=Object.create(null),R=Object.create(null),Y=[];let ue=!0;const me="Could not find the language '{}', did you forget to load/include a language module?",W={disableAutodetect:!0,name:"Plain text",contains:[]};let U={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:f};function oe(j){return U.noHighlightRe.test(j)}function Le(j){let ee=j.className+" ";ee+=j.parentNode?j.parentNode.className:"";const fe=U.languageDetectRe.exec(ee);if(fe){const xe=rn(fe[1]);return xe||(F(me.replace("{}",fe[1])),F("Falling back to no-highlight mode for this block.",j)),xe?fe[1]:"no-highlight"}return ee.split(/\s+/).find(xe=>oe(xe)||rn(xe))}function ge(j,ee,fe){let xe="",Re="";typeof ee=="object"?(xe=j,fe=ee.ignoreIllegals,Re=ee.language):(ne("10.7.0","highlight(lang, code, ...args) has been deprecated."),ne("10.7.0",`Please use highlight(code, options) instead.
3
3
  https://github.com/highlightjs/highlight.js/issues/2277`),Re=j,xe=ee),fe===void 0&&(fe=!0);const St={code:xe,language:Re};Rr("before:highlight",St);const sn=St.result?St.result:st(St.language,St.code,fe);return sn.code=St.code,Rr("after:highlight",sn),sn}function st(j,ee,fe,xe){const Re=Object.create(null);function St(G,J){return G.keywords[J]}function sn(){if(!se.keywords){De.addText(ve);return}let G=0;se.keywordPatternRe.lastIndex=0;let J=se.keywordPatternRe.exec(ve),ie="";for(;J;){ie+=ve.substring(G,J.index);const Ee=Lt.case_insensitive?J[0].toLowerCase():J[0],Ue=St(se,Ee);if(Ue){const[Zt,CR]=Ue;if(De.addText(ie),ie="",Re[Ee]=(Re[Ee]||0)+1,Re[Ee]<=Bo&&(zr+=CR),Zt.startsWith("_"))ie+=J[0];else{const ER=Lt.classNameAliases[Zt]||Zt;It(J[0],ER)}}else ie+=J[0];G=se.keywordPatternRe.lastIndex,J=se.keywordPatternRe.exec(ve)}ie+=ve.substring(G),De.addText(ie)}function Or(){if(ve==="")return;let G=null;if(typeof se.subLanguage=="string"){if(!N[se.subLanguage]){De.addText(ve);return}G=st(se.subLanguage,ve,!0,Jg[se.subLanguage]),Jg[se.subLanguage]=G._top}else G=Gc(ve,se.subLanguage.length?se.subLanguage:null);se.relevance>0&&(zr+=G.relevance),De.__addSublanguage(G._emitter,G.language)}function at(){se.subLanguage!=null?Or():sn(),ve=""}function It(G,J){G!==""&&(De.startScope(J),De.addText(G),De.endScope())}function Wg(G,J){let ie=1;const Ee=J.length-1;for(;ie<=Ee;){if(!G._emit[ie]){ie++;continue}const Ue=Lt.classNameAliases[G[ie]]||G[ie],Zt=J[ie];Ue?It(Zt,Ue):(ve=Zt,sn(),ve=""),ie++}}function Kg(G,J){return G.scope&&typeof G.scope=="string"&&De.openNode(Lt.classNameAliases[G.scope]||G.scope),G.beginScope&&(G.beginScope._wrap?(It(ve,Lt.classNameAliases[G.beginScope._wrap]||G.beginScope._wrap),ve=""):G.beginScope._multi&&(Wg(G.beginScope,J),ve="")),se=Object.create(G,{parent:{value:se}}),se}function Xg(G,J,ie){let Ee=w(G.endRe,ie);if(Ee){if(G["on:end"]){const Ue=new t(G);G["on:end"](J,Ue),Ue.isMatchIgnored&&(Ee=!1)}if(Ee){for(;G.endsParent&&G.parent;)G=G.parent;return G}}if(G.endsWithParent)return Xg(G.parent,J,ie)}function _R(G){return se.matcher.regexIndex===0?(ve+=G[0],1):(Xc=!0,0)}function bR(G){const J=G[0],ie=G.rule,Ee=new t(ie),Ue=[ie.__beforeBegin,ie["on:begin"]];for(const Zt of Ue)if(Zt&&(Zt(G,Ee),Ee.isMatchIgnored))return _R(J);return ie.skip?ve+=J:(ie.excludeBegin&&(ve+=J),at(),!ie.returnBegin&&!ie.excludeBegin&&(ve=J)),Kg(ie,G),ie.returnBegin?0:J.length}function kR(G){const J=G[0],ie=ee.substring(G.index),Ee=Xg(se,G,ie);if(!Ee)return Cn;const Ue=se;se.endScope&&se.endScope._wrap?(at(),It(J,se.endScope._wrap)):se.endScope&&se.endScope._multi?(at(),Wg(se.endScope,G)):Ue.skip?ve+=J:(Ue.returnEnd||Ue.excludeEnd||(ve+=J),at(),Ue.excludeEnd&&(ve=J));do se.scope&&De.closeNode(),!se.skip&&!se.subLanguage&&(zr+=se.relevance),se=se.parent;while(se!==Ee.parent);return Ee.starts&&Kg(Ee.starts,G),Ue.returnEnd?0:J.length}function wR(){const G=[];for(let J=se;J!==Lt;J=J.parent)J.scope&&G.unshift(J.scope);G.forEach(J=>De.openNode(J))}let Vr={};function Yg(G,J){const ie=J&&J[0];if(ve+=G,ie==null)return at(),0;if(Vr.type==="begin"&&J.type==="end"&&Vr.index===J.index&&ie===""){if(ve+=ee.slice(J.index,J.index+1),!ue){const Ee=new Error(`0 width match regex (${j})`);throw Ee.languageName=j,Ee.badRule=Vr.rule,Ee}return 1}if(Vr=J,J.type==="begin")return bR(J);if(J.type==="illegal"&&!fe){const Ee=new Error('Illegal lexeme "'+ie+'" for mode "'+(se.scope||"<unnamed>")+'"');throw Ee.mode=se,Ee}else if(J.type==="end"){const Ee=kR(J);if(Ee!==Cn)return Ee}if(J.type==="illegal"&&ie==="")return ve+=`
4
4
  `,1;if(Kc>1e5&&Kc>J.index*3)throw new Error("potential infinite loop, way more iterations than matches");return ve+=ie,ie.length}const Lt=rn(j);if(!Lt)throw Oe(me.replace("{}",j)),new Error('Unknown language: "'+j+'"');const yR=vo(Lt);let Wc="",se=xe||yR;const Jg={},De=new U.__emitter(U);wR();let ve="",zr=0,En=0,Kc=0,Xc=!1;try{if(Lt.__emitTokens)Lt.__emitTokens(ee,De);else{for(se.matcher.considerAll();;){Kc++,Xc?Xc=!1:se.matcher.considerAll(),se.matcher.lastIndex=En;const G=se.matcher.exec(ee);if(!G)break;const J=ee.substring(En,G.index),ie=Yg(J,G);En=G.index+ie}Yg(ee.substring(En))}return De.finalize(),Wc=De.toHTML(),{language:j,value:Wc,relevance:zr,illegal:!1,_emitter:De,_top:se}}catch(G){if(G.message&&G.message.includes("Illegal"))return{language:j,value:on(ee),illegal:!0,relevance:0,_illegalBy:{message:G.message,index:En,context:ee.slice(En-100,En+100),mode:G.mode,resultSoFar:Wc},_emitter:De};if(ue)return{language:j,value:on(ee),illegal:!1,relevance:0,errorRaised:G,_emitter:De,_top:se};throw G}}function Uc(j){const ee={value:on(j),illegal:!1,relevance:0,_top:W,_emitter:new U.__emitter(U)};return ee._emitter.addText(j),ee}function Gc(j,ee){ee=ee||U.languages||Object.keys(N);const fe=Uc(j),xe=ee.filter(rn).filter(Zg).map(at=>st(at,j,!1));xe.unshift(fe);const Re=xe.sort((at,It)=>{if(at.relevance!==It.relevance)return It.relevance-at.relevance;if(at.language&&It.language){if(rn(at.language).supersetOf===It.language)return 1;if(rn(It.language).supersetOf===at.language)return-1}return 0}),[St,sn]=Re,Or=St;return Or.secondBest=sn,Or}function aR(j,ee,fe){const xe=ee&&R[ee]||fe;j.classList.add("hljs"),j.classList.add(`language-${xe}`)}function Zc(j){let ee=null;const fe=Le(j);if(oe(fe))return;if(Rr("before:highlightElement",{el:j,language:fe}),j.dataset.highlighted){console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",j);return}if(j.children.length>0&&(U.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(j)),U.throwUnescapedHTML))throw new yn("One of your code blocks includes unescaped HTML.",j.innerHTML);ee=j;const xe=ee.textContent,Re=fe?ge(xe,{language:fe,ignoreIllegals:!0}):Gc(xe);j.innerHTML=Re.value,j.dataset.highlighted="yes",aR(j,fe,Re.language),j.result={language:Re.language,re:Re.relevance,relevance:Re.relevance},Re.secondBest&&(j.secondBest={language:Re.secondBest.language,relevance:Re.secondBest.relevance}),Rr("after:highlightElement",{el:j,result:Re,text:xe})}function iR(j){U=Wn(U,j)}const cR=()=>{Lr(),ne("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function lR(){Lr(),ne("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let Ug=!1;function Lr(){function j(){Lr()}if(document.readyState==="loading"){Ug||window.addEventListener("DOMContentLoaded",j,!1),Ug=!0;return}document.querySelectorAll(U.cssSelector).forEach(Zc)}function uR(j,ee){let fe=null;try{fe=ee(E)}catch(xe){if(Oe("Language definition for '{}' could not be registered.".replace("{}",j)),ue)Oe(xe);else throw xe;fe=W}fe.name||(fe.name=j),N[j]=fe,fe.rawDefinition=ee.bind(null,E),fe.aliases&&Gg(fe.aliases,{languageName:j})}function dR(j){delete N[j];for(const ee of Object.keys(R))R[ee]===j&&delete R[ee]}function fR(){return Object.keys(N)}function rn(j){return j=(j||"").toLowerCase(),N[j]||N[R[j]]}function Gg(j,{languageName:ee}){typeof j=="string"&&(j=[j]),j.forEach(fe=>{R[fe.toLowerCase()]=ee})}function Zg(j){const ee=rn(j);return ee&&!ee.disableAutodetect}function pR(j){j["before:highlightBlock"]&&!j["before:highlightElement"]&&(j["before:highlightElement"]=ee=>{j["before:highlightBlock"](Object.assign({block:ee.el},ee))}),j["after:highlightBlock"]&&!j["after:highlightElement"]&&(j["after:highlightElement"]=ee=>{j["after:highlightBlock"](Object.assign({block:ee.el},ee))})}function hR(j){pR(j),Y.push(j)}function mR(j){const ee=Y.indexOf(j);ee!==-1&&Y.splice(ee,1)}function Rr(j,ee){const fe=j;Y.forEach(function(xe){xe[fe]&&xe[fe](ee)})}function gR(j){return ne("10.7.0","highlightBlock will be removed entirely in v12.0"),ne("10.7.0","Please use highlightElement now."),Zc(j)}Object.assign(E,{highlight:ge,highlightAuto:Gc,highlightAll:Lr,highlightElement:Zc,highlightBlock:gR,configure:iR,initHighlighting:cR,initHighlightingOnLoad:lR,registerLanguage:uR,unregisterLanguage:dR,listLanguages:fR,getLanguage:rn,registerAliases:Gg,autoDetection:Zg,inherit:Wn,addPlugin:hR,removePlugin:mR}),E.debugMode=function(){ue=!1},E.safeMode=function(){ue=!0},E.versionString=So,E.regex={concat:m,lookahead:g,either:h,optional:_,anyNumberOfTimes:p};for(const j in Z)typeof Z[j]=="object"&&e(Z[j]);return Object.assign(E,Z),E},A=Kn({});return A.newInstance=()=>Kn({}),Fr=A,A.HighlightJS=A,A.default=A,Fr}var B1=S1();const Rt=Sn(B1),sl="[A-Za-z$_][0-9A-Za-z$_]*",N1=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],A1=["true","false","null","undefined","NaN","Infinity"],al=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],il=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],cl=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],$1=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],T1=[].concat(cl,al,il);function ll(e){const t=e.regex,o=(O,{after:P})=>{const B="</"+O[0].slice(1);return O.input.indexOf(B,P)!==-1},r=sl,a={begin:"<>",end:"</>"},s=/<[A-Za-z0-9\\._:-]+\s*\/>/,i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(O,P)=>{const B=O[0].length+O.index,D=O.input[B];if(D==="<"||D===","){P.ignoreMatch();return}D===">"&&(o(O,{after:B})||P.ignoreMatch());let q;const K=O.input.substring(B);if(q=K.match(/^\s*=/)){P.ignoreMatch();return}if((q=K.match(/^\s+extends\s+/))&&q.index===0){P.ignoreMatch();return}}},c={$pattern:sl,keyword:N1,literal:A1,built_in:T1,"variable.language":$1},l="[0-9](_?[0-9])*",d=`\\.(${l})`,f="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",u={className:"number",variants:[{begin:`(\\b(${f})((${d})|\\.)?|(${d}))[eE][+-]?(${l})\\b`},{begin:`\\b(${f})\\b((${d})\\b|\\.)?|(${d})\\b`},{begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0},g={className:"subst",begin:"\\$\\{",end:"\\}",keywords:c,contains:[]},p={begin:".?html`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"xml"}},_={begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"css"}},m={begin:".?gql`",end:"",starts:{end:"`",returnEnd:!1,contains:[e.BACKSLASH_ESCAPE,g],subLanguage:"graphql"}},b={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,g]},k={className:"comment",variants:[e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,excludeBegin:!0,relevance:0},{className:"variable",begin:r+"(?=\\s*(-)|$)",endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]}),e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]},w=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,_,m,b,{match:/\$\d+/},u];g.contains=w.concat({begin:/\{/,end:/\}/,keywords:c,contains:["self"].concat(w)});const y=[].concat(k,g.contains),x=y.concat([{begin:/(\s*)\(/,end:/\)/,keywords:c,contains:["self"].concat(y)}]),C={className:"params",begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:x},v={variants:[{match:[/class/,/\s+/,r,/\s+/,/extends/,/\s+/,t.concat(r,"(",t.concat(/\./,r),")*")],scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{match:[/class/,/\s+/,r],scope:{1:"keyword",3:"title.class"}}]},S={relevance:0,match:t.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),className:"title.class",keywords:{_:[...al,...il]}},T={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/},$={variants:[{match:[/function/,/\s+/,r,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[C],illegal:/%/},M={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function V(O){return t.concat("(?!",O.join("|"),")")}const X={match:t.concat(/\b/,V([...cl,"super","import"].map(O=>`${O}\\s*\\(`)),r,t.lookahead(/\s*\(/)),className:"title.function",relevance:0},I={begin:t.concat(/\./,t.lookahead(t.concat(r,/(?![0-9A-Za-z$_(])/))),end:r,excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},H={match:[/get|set/,/\s+/,r,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},C]},L="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>",z={match:[/const|var|let/,/\s+/,r,/\s*/,/=\s*/,/(async\s*)?/,t.lookahead(L)],keywords:"async",className:{1:"keyword",3:"title.function"},contains:[C]};return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:c,exports:{PARAMS_CONTAINS:x,CLASS_REFERENCE:S},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),T,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,p,_,m,b,k,{match:/\$\d+/},u,S,{scope:"attr",match:r+t.lookahead(":"),relevance:0},z,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[k,e.REGEXP_MODE,{className:"function",begin:L,returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:c,contains:x}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:a.begin,end:a.end},{match:s},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:!0,contains:["self"]}]}]},$,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",returnBegin:!0,label:"func.def",contains:[C,e.inherit(e.TITLE_MODE,{begin:r,className:"title.function"})]},{match:/\.\.\./,relevance:0},I,{match:"\\$"+r,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[C]},X,M,v,H,{match:/\$[(.]/}]}}function ul(e){const t=e.regex,o=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),r=/[\p{L}0-9._:-]+/u,a={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},s={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=e.inherit(s,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),d={endsWithParent:!0,illegal:/</,relevance:0,contains:[{className:"attr",begin:r,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[a]},{begin:/'/,end:/'/,contains:[a]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,relevance:10,contains:[s,l,c,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin:/<![a-z]/,end:/>/,contains:[s,i,l,c]}]}]},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,relevance:10},a,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[d],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[d],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:t.concat(/</,t.lookahead(t.concat(o,t.either(/\/>/,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:o,relevance:0,starts:d}]},{className:"tag",begin:t.concat(/<\//,t.lookahead(t.concat(o,/>/))),contains:[{className:"name",begin:o,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}const M1={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function I1(e,t){return n.openBlock(),n.createElementBlock("svg",M1,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"},null,-1)]))}const L1={name:"mdi-close",render:I1},it=(e,t)=>{const o=e.__vccOpts||e;for(const[r,a]of t)o[r]=a;return o},R1={},O1={class:"chat-button"};function V1(e,t){return n.openBlock(),n.createElementBlock("button",O1,[n.renderSlot(e.$slots,"default")])}const z1=it(R1,[["render",V1]]);function jr(){return n.inject(Jc)}function Xn(){return{options:n.inject(Qc)}}function Ao(){const{options:e}=Xn(),t=(e==null?void 0:e.defaultLanguage)??"en";function o(a){var i,c;const s=(c=(i=e==null?void 0:e.i18n)==null?void 0:i[t])==null?void 0:c[a];return n.isRef(s)?s.value:s??a}function r(a){var s,i;return!!((i=(s=e==null?void 0:e.i18n)==null?void 0:s[t])!=null&&i[a])}return{t:o,te:r}}const q1={class:"chat-get-started"},D1=n.defineComponent({__name:"GetStarted",setup(e){const{t}=Ao();return(o,r)=>(n.openBlock(),n.createElementBlock("div",q1,[n.createVNode(z1,{onClick:r[0]||(r[0]=a=>o.$emit("click:button"))},{default:n.withCtx(()=>[n.createTextVNode(n.toDisplayString(n.unref(t)("getStarted")),1)]),_:1})]))}}),P1={},F1={class:"chat-powered-by"};function j1(e,t){return n.openBlock(),n.createElementBlock("div",F1,t[0]||(t[0]=[n.createTextVNode(" Powered by "),n.createElementVNode("a",{href:"https://n8n.io?utm_source=n8n-external&utm_medium=widget-powered-by"},"n8n",-1)]))}const H1=it(P1,[["render",j1]]),U1={class:"chat-get-started-footer"},G1={key:0},Z1=n.defineComponent({__name:"GetStartedFooter",setup(e){const{t,te:o}=Ao();return(r,a)=>(n.openBlock(),n.createElementBlock("div",U1,[n.unref(o)("footer")?(n.openBlock(),n.createElementBlock("div",G1,n.toDisplayString(n.unref(t)("footer")),1)):n.createCommentVNode("",!0),n.createVNode(H1)]))}});function W1(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function K1(){const e=new Set,t=a=>{e.delete(a)};return{on:a=>{e.add(a);const s=()=>t(a);return W1(s),{off:s}},off:t,trigger:(...a)=>Promise.all(Array.from(e).map(s=>s(...a)))}}const X1=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const Y1=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),J1=X1?window.document:void 0,Q1={multiple:!0,accept:"*",reset:!1,directory:!1};function e_(e={}){const{document:t=J1}=e,o=n.ref(null),{on:r,trigger:a}=K1();let s;t&&(s=t.createElement("input"),s.type="file",s.onchange=l=>{const d=l.target;o.value=d.files,a(o.value)});const i=()=>{o.value=null,s&&s.value&&(s.value="",a(null))},c=l=>{if(!s)return;const d={...Q1,...e,...l};s.multiple=d.multiple,s.accept=d.accept,s.webkitdirectory=d.directory,Y1(d,"capture")&&(s.capture=d.capture),d.reset&&i(),s.click()};return{files:n.readonly(o),open:c,reset:i,onChange:r}}const t_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function n_(e,t){return n.openBlock(),n.createElementBlock("svg",t_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M16.5 6v11.5a4 4 0 0 1-4 4a4 4 0 0 1-4-4V5A2.5 2.5 0 0 1 11 2.5A2.5 2.5 0 0 1 13.5 5v10.5a1 1 0 0 1-1 1a1 1 0 0 1-1-1V6H10v9.5a2.5 2.5 0 0 0 2.5 2.5a2.5 2.5 0 0 0 2.5-2.5V5a4 4 0 0 0-4-4a4 4 0 0 0-4 4v12.5a5.5 5.5 0 0 0 5.5 5.5a5.5 5.5 0 0 0 5.5-5.5V6z"},null,-1)]))}const o_={name:"mdi-paperclip",render:n_},r_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function s_(e,t){return n.openBlock(),n.createElementBlock("svg",r_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"m2 21l21-9L2 3v7l15 2l-15 2z"},null,-1)]))}const a_={name:"mdi-send",render:s_},i_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function c_(e,t){return n.openBlock(),n.createElementBlock("svg",i_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M20 6.91L17.09 4L12 9.09L6.91 4L4 6.91L9.09 12L4 17.09L6.91 20L12 14.91L17.09 20L20 17.09L14.91 12z"},null,-1)]))}const l_={name:"mdi-closeThick",render:c_},u_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function d_(e,t){return n.openBlock(),n.createElementBlock("svg",u_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m0 18h12v-8l-4 4l-2-2zM8 9a2 2 0 0 0-2 2a2 2 0 0 0 2 2a2 2 0 0 0 2-2a2 2 0 0 0-2-2"},null,-1)]))}const f_={name:"mdi-fileImage",render:d_},p_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function h_(e,t){return n.openBlock(),n.createElementBlock("svg",p_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8zm-1 11h-2v5a2 2 0 0 1-2 2a2 2 0 0 1-2-2a2 2 0 0 1 2-2c.4 0 .7.1 1 .3V11h3zm0-4V3.5L18.5 9z"},null,-1)]))}const m_={name:"mdi-fileMusic",render:h_},g_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function __(e,t){return n.openBlock(),n.createElementBlock("svg",g_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m9 16v-2H6v2zm3-4v-2H6v2z"},null,-1)]))}const dl={name:"mdi-fileText",render:__},b_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function k_(e,t){return n.openBlock(),n.createElementBlock("svg",b_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M13 9h5.5L13 3.5zM6 2h8l6 6v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4c0-1.11.89-2 2-2m11 17v-6l-3 2.2V13H7v6h7v-2.2z"},null,-1)]))}const w_={name:"mdi-fileVideo",render:k_},y_={viewBox:"0 0 24 24",width:"1.2em",height:"1.2em"};function C_(e,t){return n.openBlock(),n.createElementBlock("svg",y_,t[0]||(t[0]=[n.createElementVNode("path",{fill:"currentColor",d:"M14 3v2h3.59l-9.83 9.83l1.41 1.41L19 6.41V10h2V3m-2 16H5V5h7V3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7h-2z"},null,-1)]))}const E_={name:"mdi-openInNew",render:C_},x_={class:"chat-file-name"},fl=it(n.defineComponent({__name:"ChatFile",props:{file:{},isRemovable:{type:Boolean},isPreviewable:{type:Boolean}},emits:["remove"],setup(e,{emit:t}){const o=e,r=t,a={document:dl,audio:m_,image:f_,video:w_},s=n.computed(()=>{var d;const l=(d=o.file)==null?void 0:d.type.split("/")[0];return a[l]||dl});function i(){o.isPreviewable&&window.open(URL.createObjectURL(o.file))}function c(){r("remove",o.file)}return(l,d)=>(n.openBlock(),n.createElementBlock("div",{class:"chat-file",onClick:i},[n.createVNode(n.unref(s)),n.createElementVNode("p",x_,n.toDisplayString(l.file.name),1),l.isRemovable?(n.openBlock(),n.createElementBlock("span",{key:0,class:"chat-file-delete",onClick:n.withModifiers(c,["stop"])},[n.createVNode(n.unref(l_))])):l.isPreviewable?(n.openBlock(),n.createBlock(n.unref(E_),{key:1,class:"chat-file-preview"})):n.createCommentVNode("",!0)]))}}),[["__scopeId","data-v-e0d57af7"]]),v_={class:"chat-inputs"},S_={key:0,class:"chat-input-left-panel"},B_=["disabled","placeholder"],N_={class:"chat-inputs-controls"},A_=["disabled"],$_=["disabled"],T_={key:0,class:"chat-files"},M_=it(n.defineComponent({__name:"Input",props:{placeholder:{default:"inputPlaceholder"}},emits:["arrowKeyDown"],setup(e,{emit:t}){const o=e,{t:r}=Ao(),a=t,{options:s}=Xn(),i=jr(),{waitingForResponse:c}=i,l=n.ref(null),d=n.ref(null),f=n.ref(""),u=n.ref(!1),g=n.ref(null),p=n.ref(!1),_=n.computed(()=>{var B;return p.value?!1:f.value===""||n.unref(c)||((B=s.disabled)==null?void 0:B.value)===!0}),m=n.computed(()=>{var B;return((B=s.disabled)==null?void 0:B.value)===!0}),b=n.computed(()=>{var B;return h.value&&n.unref(c)&&!((B=s.disabled)!=null&&B.value)}),h=n.computed(()=>n.unref(s.allowFileUploads)===!0),k=n.computed(()=>n.unref(s.allowedFilesMimeTypes)),w=n.computed(()=>({"--controls-count":h.value?2:1})),{open:y,reset:x,onChange:C}=e_({multiple:!0,reset:!1});C(B=>{if(!B)return;const D=new DataTransfer;if(l.value)for(let q=0;q<l.value.length;q++)D.items.add(l.value[q]);for(let q=0;q<B.length;q++)D.items.add(B[q]);l.value=D.files}),n.onMounted(()=>{Ge.on("focusInput",S),Ge.on("blurInput",v),Ge.on("setInputValue",T),d.value&&(g.value=new ResizeObserver(B=>{for(const D of B)D.target===d.value&&P()}),g.value.observe(d.value))}),n.onUnmounted(()=>{Ge.off("focusInput",S),Ge.off("blurInput",v),Ge.off("setInputValue",T),g.value&&(g.value.disconnect(),g.value=null)});function v(){d.value&&d.value.blur()}function S(){d.value&&d.value.focus()}function T(B){f.value=B,S()}function $(){if(l.value){const B=Array.from(l.value);return x(),l.value=null,B}return[]}function M(B){if(s.webhookUrl&&i.currentSessionId.value)try{const D=h1(s.webhookUrl,B,i.currentSessionId.value,!0);i.ws=new WebSocket(D),i.ws.onmessage=q=>{var Q;if(q.data==="n8n|heartbeat"){(Q=i.ws)==null||Q.send("n8n|heartbeat-ack");return}if(q.data==="n8n|continue"){p.value=!1,i.waitingForResponse.value=!0;return}const K={id:an(),text:q.data,sender:"bot"};i.messages.value.push(K),p.value=!0,i.waitingForResponse.value=!1},i.ws.onclose=()=>{i.ws=null,p.value=!1,i.waitingForResponse.value=!1}}catch(D){console.error("Error setting up websocket connection",D)}}async function V(B){if(!B||B.length===0)return[];const D=B.map(async q=>new Promise((K,Q)=>{const re=new FileReader;re.onload=()=>K({name:q.name,type:q.type,data:re.result}),re.onerror=()=>{var ce;return Q(new Error(`Error reading file: ${((ce=re.error)==null?void 0:ce.message)??"Unknown error"}`))},re.readAsDataURL(q)}));return await Promise.all(D)}async function X(B,D){const q={id:an(),text:D,sender:"user",files:l.value?$():void 0};i.messages.value.push(q),B.send(JSON.stringify({sessionId:i.currentSessionId.value,action:"sendMessage",chatInput:D,files:await V(q.files)})),i.waitingForResponse.value=!0,p.value=!1}async function I(B){if(B.preventDefault(),_.value)return;const D=f.value;if(f.value="",u.value=!0,i.ws&&p.value){await X(i.ws,D);return}const q=await i.sendMessage(D,$());q!=null&&q.executionId&&M(q.executionId),u.value=!1}async function H(B){B.shiftKey||B.isComposing||(await I(B),P())}function L(B){if(!l.value)return;const D=new DataTransfer;for(let q=0;q<l.value.length;q++){const K=l.value[q];B.name!==K.name&&D.items.add(K)}x(),l.value=D.files}function z(B){(B.key==="ArrowUp"||B.key==="ArrowDown")&&(B.preventDefault(),a("arrowKeyDown",{key:B.key,currentInputValue:f.value}))}function O(){b.value||y({accept:n.unref(k)})}function P(){const B=d.value;if(!B)return;B.style.height="var(--chat--textarea--height)";const D=Math.min(B.scrollHeight,480);B.style.height=`${D}px`}return(B,D)=>{var q;return n.openBlock(),n.createElementBlock("div",{class:"chat-input",style:n.normalizeStyle(w.value),onKeydown:n.withModifiers(z,["stop"])},[n.createElementVNode("div",v_,[B.$slots.leftPanel?(n.openBlock(),n.createElementBlock("div",S_,[n.renderSlot(B.$slots,"leftPanel",{},void 0,!0)])):n.createCommentVNode("",!0),n.withDirectives(n.createElementVNode("textarea",{ref_key:"chatTextArea",ref:d,"onUpdate:modelValue":D[0]||(D[0]=K=>f.value=K),"data-test-id":"chat-input",disabled:m.value,placeholder:n.unref(r)(o.placeholder),onKeydown:n.withKeys(H,["enter"]),onInput:P,onMousedown:P,onFocus:P},null,40,B_),[[n.vModelText,f.value]]),n.createElementVNode("div",N_,[h.value?(n.openBlock(),n.createElementBlock("button",{key:0,disabled:b.value,class:"chat-input-file-button","data-test-id":"chat-attach-file-button",onClick:O},[n.createVNode(n.unref(o_),{height:"24",width:"24"})],8,A_)):n.createCommentVNode("",!0),n.createElementVNode("button",{disabled:_.value,class:"chat-input-send-button",onClick:I},[n.createVNode(n.unref(a_),{height:"24",width:"24"})],8,$_)])]),(q=l.value)!=null&&q.length&&(!u.value||p.value)?(n.openBlock(),n.createElementBlock("div",T_,[(n.openBlock(!0),n.createElementBlock(n.Fragment,null,n.renderList(l.value,K=>(n.openBlock(),n.createBlock(fl,{key:K.name,file:K,"is-removable":!0,"is-previewable":!0,onRemove:L},null,8,["file"]))),128))])):n.createCommentVNode("",!0)],36)}}}),[["__scopeId","data-v-de5e7961"]]),I_={class:"chat-layout"},L_={key:0,class:"chat-header"},R_={key:2,class:"chat-footer"},O_=n.defineComponent({__name:"Layout",setup(e){const t=n.ref(null);function o(){const r=t.value;r&&(r.scrollTop=r.scrollHeight)}return n.onMounted(()=>{Ge.on("scrollToBottom",o),window.addEventListener("resize",o)}),n.onBeforeUnmount(()=>{Ge.off("scrollToBottom",o),window.removeEventListener("resize",o)}),(r,a)=>(n.openBlock(),n.createElementBlock("main",I_,[r.$slots.header?(n.openBlock(),n.createElementBlock("div",L_,[n.renderSlot(r.$slots,"header")])):n.createCommentVNode("",!0),r.$slots.default?(n.openBlock(),n.createElementBlock("div",{key:1,ref_key:"chatBodyRef",ref:t,class:"chat-body"},[n.renderSlot(r.$slots,"default")],512)):n.createCommentVNode("",!0),r.$slots.footer?(n.openBlock(),n.createElementBlock("div",R_,[n.renderSlot(r.$slots,"footer")])):n.createCommentVNode("",!0)]))}}),V_=/(%|)\{([0-9a-zA-Z_]+)\}/g;function z_(){const e=(o,r)=>r in o;function t(o,...r){if(typeof o=="function")return o(r);const a=o;let s=r;return r.length===1&&typeof r[0]=="object"&&(s=r[0]),s!=null&&s.hasOwnProperty||(s={}),a.replace(V_,(i,c,l,d)=>{let f;return a[d-1]==="{"&&a[d+i.length]==="}"?`${l}`:(f=e(s,l)?`${s[l]}`:null,f??"")})}return t}const q_={"generic.retry":"Retry","generic.cancel":"Cancel","generic.ignore":"Ignore","generic.ignoreAll":"Ignore all","generic.moreInfo":"More info","nds.auth.roles.owner":"Owner","nds.userInfo.you":"(you)","nds.userSelect.selectUser":"Select User","nds.userSelect.noMatchingUsers":"No matching users","notice.showMore":"Show more","notice.showLess":"Show less","formInput.validator.fieldRequired":"This field is required","formInput.validator.minCharactersRequired":"Must be at least {minimum} characters","formInput.validator.maxCharactersRequired":"Must be at most {maximum} characters","formInput.validator.oneNumbersRequired":e=>`Must have at least ${e.minimum} number${e.minimum>1?"s":""}`,"formInput.validator.validEmailRequired":"Must be a valid email","formInput.validator.uppercaseCharsRequired":e=>`Must have at least ${e.minimum} uppercase character${e.minimum>1?"s":""}`,"formInput.validator.defaultPasswordRequirements":"8+ characters, at least 1 number and 1 capital letter","sticky.markdownHint":'You can style with <a href="https://docs.n8n.io/workflows/sticky-notes/" target="_blank">Markdown</a>',"tags.showMore":e=>`+${e} more`,"datatable.pageSize":"Page size","codeDiff.couldNotReplace":"Could not replace code","codeDiff.codeReplaced":"Code replaced","codeDiff.replaceMyCode":"Replace my code","codeDiff.replacing":"Replacing...","codeDiff.undo":"Undo","betaTag.beta":"beta","askAssistantButton.askAssistant":"Ask Assistant","assistantChat.builder.name":"AI Builder","assistantChat.builder.generatingFinalWorkflow":"Generating final workflow...","assistantChat.builder.configuredNodes":"Configured nodes","assistantChat.builder.thumbsUp":"Helpful","assistantChat.builder.thumbsDown":"Not helpful","assistantChat.builder.feedbackPlaceholder":"What went wrong?","assistantChat.builder.success":"Thank you for your feedback!","assistantChat.builder.submit":"Submit feedback","assistantChat.builder.workflowGenerated1":"Your workflow was created successfully!","assistantChat.builder.workflowGenerated2":"Fix any missing credentials before testing it.","assistantChat.builder.configuringNodes":"Configuring nodes...","assistantChat.builder.selectedNodes":"Selected workflow nodes","assistantChat.builder.selectingNodes":"Selecting nodes...","assistantChat.builder.generatedNodes":"Generated workflow nodes","assistantChat.builder.toolRunning":"Tool still running","assistantChat.builder.toolError":"Some tool calls have failed. Agent will retry these.","assistantChat.errorParsingMarkdown":"Error parsing markdown content","assistantChat.aiAssistantLabel":"AI Assistant","assistantChat.aiAssistantName":"Assistant","assistantChat.sessionEndMessage.1":"This Assistant session has ended. To start a new session with the Assistant, click an","assistantChat.sessionEndMessage.2":"button in n8n","assistantChat.you":"You","assistantChat.quickRepliesTitle":"Quick reply 👇","assistantChat.placeholder.1":()=>"I can answer most questions about building workflows in n8n.","assistantChat.placeholder.2":"For specific tasks, you’ll see the","assistantChat.placeholder.3":"button in the UI.","assistantChat.placeholder.4":"How can I help?","assistantChat.inputPlaceholder":"Enter your response...","assistantChat.copy":"Copy","assistantChat.copied":"Copied","aiAssistant.builder.canvas.thinking":"Working...","inlineAskAssistantButton.asked":"Asked","iconPicker.button.defaultToolTip":"Choose icon","iconPicker.tabs.icons":"Icons","iconPicker.tabs.emojis":"Emojis","selectableList.addDefault":"+ Add a","auth.changePassword.passwordsMustMatchError":"Passwords must match","tableControlsButton.display":"Display","tableControlsButton.shown":"Shown","tableControlsButton.hidden":"Hidden"},D_=z_();let pl=q_;const P_=function(e,t){return pl[e]!==void 0?D_(pl[e],...t?[t]:[]):""},Ot=(e,t,{checkForDefaultPrevented:o=!0}={})=>a=>{const s=e==null?void 0:e(a);if(o===!1||!s)return t==null?void 0:t(a)};var hl;const Pe=typeof window<"u",F_=e=>typeof e=="string",ml=()=>{},gl=Pe&&((hl=window==null?void 0:window.navigator)==null?void 0:hl.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function _l(e){return typeof e=="function"?e():n.unref(e)}function j_(e){return e}function Hr(e){return n.getCurrentScope()?(n.onScopeDispose(e),!0):!1}function H_(e,t=!0){n.getCurrentInstance()?n.onMounted(e):t?e():n.nextTick(e)}function Wt(e){var t;const o=_l(e);return(t=o==null?void 0:o.$el)!=null?t:o}const Ur=Pe?window:void 0;function cn(...e){let t,o,r,a;if(F_(e[0])||Array.isArray(e[0])?([o,r,a]=e,t=Ur):[t,o,r,a]=e,!t)return ml;Array.isArray(o)||(o=[o]),Array.isArray(r)||(r=[r]);const s=[],i=()=>{s.forEach(f=>f()),s.length=0},c=(f,u,g,p)=>(f.addEventListener(u,g,p),()=>f.removeEventListener(u,g,p)),l=n.watch(()=>[Wt(t),_l(a)],([f,u])=>{i(),f&&s.push(...o.flatMap(g=>r.map(p=>c(f,g,p,u))))},{immediate:!0,flush:"post"}),d=()=>{l(),i()};return Hr(d),d}let bl=!1;function U_(e,t,o={}){const{window:r=Ur,ignore:a=[],capture:s=!0,detectIframe:i=!1}=o;if(!r)return;gl&&!bl&&(bl=!0,Array.from(r.document.body.children).forEach(g=>g.addEventListener("click",ml)));let c=!0;const l=g=>a.some(p=>{if(typeof p=="string")return Array.from(r.document.querySelectorAll(p)).some(_=>_===g.target||g.composedPath().includes(_));{const _=Wt(p);return _&&(g.target===_||g.composedPath().includes(_))}}),f=[cn(r,"click",g=>{const p=Wt(e);if(!(!p||p===g.target||g.composedPath().includes(p))){if(g.detail===0&&(c=!l(g)),!c){c=!0;return}t(g)}},{passive:!0,capture:s}),cn(r,"pointerdown",g=>{const p=Wt(e);p&&(c=!g.composedPath().includes(p)&&!l(g))},{passive:!0}),i&&cn(r,"blur",g=>{var p;const _=Wt(e);((p=r.document.activeElement)==null?void 0:p.tagName)==="IFRAME"&&!(_!=null&&_.contains(r.document.activeElement))&&t(g)})].filter(Boolean);return()=>f.forEach(g=>g())}function G_(e,t=!1){const o=n.ref(),r=()=>o.value=!!e();return r(),H_(r,t),o}const kl=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},wl="__vueuse_ssr_handlers__";kl[wl]=kl[wl]||{};var yl=Object.getOwnPropertySymbols,Z_=Object.prototype.hasOwnProperty,W_=Object.prototype.propertyIsEnumerable,K_=(e,t)=>{var o={};for(var r in e)Z_.call(e,r)&&t.indexOf(r)<0&&(o[r]=e[r]);if(e!=null&&yl)for(var r of yl(e))t.indexOf(r)<0&&W_.call(e,r)&&(o[r]=e[r]);return o};function $o(e,t,o={}){const r=o,{window:a=Ur}=r,s=K_(r,["window"]);let i;const c=G_(()=>a&&"ResizeObserver"in a),l=()=>{i&&(i.disconnect(),i=void 0)},d=n.watch(()=>Wt(e),u=>{l(),c.value&&a&&u&&(i=new ResizeObserver(t),i.observe(u,s))},{immediate:!0,flush:"post"}),f=()=>{l(),d()};return Hr(f),{isSupported:c,stop:f}}var Cl;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(Cl||(Cl={}));var X_=Object.defineProperty,El=Object.getOwnPropertySymbols,Y_=Object.prototype.hasOwnProperty,J_=Object.prototype.propertyIsEnumerable,xl=(e,t,o)=>t in e?X_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[t]=o,Q_=(e,t)=>{for(var o in t||(t={}))Y_.call(t,o)&&xl(e,o,t[o]);if(El)for(var o of El(t))J_.call(t,o)&&xl(e,o,t[o]);return e};Q_({linear:j_},{easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]});const eb=()=>Pe&&/firefox/i.test(window.navigator.userAgent),Gr=e=>{let t,o;return e.type==="touchend"?(o=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith("touch")?(o=e.touches[0].clientY,t=e.touches[0].clientX):(o=e.clientY,t=e.clientX),{clientX:t,clientY:o}};/**
package/dist/style.css CHANGED
@@ -1,4 +1,4 @@
1
- /*! Package version @n8n/chat@0.57.0 */
1
+ /*! Package version @n8n/chat@0.58.0 */
2
2
  @charset "UTF-8";:root{--chat--color-primary: #e74266;--chat--color-primary-shade-50: #db4061;--chat--color-primary-shade-100: #cf3c5c;--chat--color-secondary: #20b69e;--chat--color-secondary-shade-50: #1ca08a;--chat--color-white: #fff;--chat--color-light: #f2f4f8;--chat--color-light-shade-50: #e6e9f1;--chat--color-light-shade-100: #c2c5cc;--chat--color-medium: #d2d4d9;--chat--color-dark: #101330;--chat--color-disabled: #777980;--chat--color-typing: #404040;--chat--spacing: 1rem;--chat--border-radius: .25rem;--chat--transition-duration: .15s;--chat--font-family: ( -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif );--chat--window--width: 400px;--chat--window--height: 600px;--chat--window--bottom: var(--chat--spacing);--chat--window--right: var(--chat--spacing);--chat--window--z-index: 9999;--chat--window--border: 1px solid var(--chat--color-light-shade-50);--chat--window--border-radius: var(--chat--border-radius);--chat--window--margin-bottom: var(--chat--spacing);--chat--header-height: auto;--chat--header--padding: var(--chat--spacing);--chat--header--background: var(--chat--color-dark);--chat--header--color: var(--chat--color-light);--chat--header--border-top: none;--chat--header--border-bottom: none;--chat--header--border-left: none;--chat--header--border-right: none;--chat--heading--font-size: 2em;--chat--subtitle--font-size: inherit;--chat--subtitle--line-height: 1.8;--chat--message--font-size: 1rem;--chat--message--padding: var(--chat--spacing);--chat--message--border-radius: var(--chat--border-radius);--chat--message-line-height: 1.5;--chat--message--margin-bottom: calc(var(--chat--spacing) * 1);--chat--message--bot--background: var(--chat--color-white);--chat--message--bot--color: var(--chat--color-dark);--chat--message--bot--border: none;--chat--message--user--background: var(--chat--color-secondary);--chat--message--user--color: var(--chat--color-white);--chat--message--user--border: none;--chat--message--pre--background: rgba(0, 0, 0, .05);--chat--messages-list--padding: var(--chat--spacing);--chat--toggle--size: 64px;--chat--toggle--width: var(--chat--toggle--size);--chat--toggle--height: var(--chat--toggle--size);--chat--toggle--border-radius: 50%;--chat--toggle--background: var(--chat--color-primary);--chat--toggle--hover--background: var(--chat--color-primary-shade-50);--chat--toggle--active--background: var(--chat--color-primary-shade-100);--chat--toggle--color: var(--chat--color-white);--chat--textarea--height: 50px;--chat--textarea--max-height: 30rem;--chat--input--font-size: inherit;--chat--input--border: 0;--chat--input--border-radius: 0;--chat--input--padding: .8rem;--chat--input--background: var(--chat--color-white);--chat--input--text-color: initial;--chat--input--line-height: 1.5;--chat--input--placeholder--font-size: var(--chat--input--font-size);--chat--input--border-active: 0;--chat--input--left--panel--width: 2rem;--chat--button--color: var(--chat--color-light);--chat--button--background: var(--chat--color-primary);--chat--button--padding: calc(var(--chat--spacing) * 1 / 2) var(--chat--spacing);--chat--button--border-radius: var(--chat--border-radius);--chat--button--hover--color: var(--chat--color-light);--chat--button--hover--background: var(--chat--color-primary-shade-50);--chat--close--button--color-hover: var(--chat--color-primary);--chat--input--send--button--background: var(--chat--color-white);--chat--input--send--button--color: var(--chat--color-light);--chat--input--send--button--background-hover: var(--chat--color-primary-shade-50);--chat--input--send--button--color-hover: var(--chat--color-secondary-shade-50);--chat--input--file--button--background: var(--chat--color-white);--chat--input--file--button--color: var(--chat--color-secondary);--chat--input--file--button--background-hover: var(--chat--input--file--button--background);--chat--input--file--button--color-hover: var(--chat--color-secondary-shade-50);--chat--files-spacing: .25rem;--chat--body--background: var(--chat--color-light);--chat--footer--background: var(--chat--color-light);--chat--footer--color: var(--chat--color-dark)}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*!
3
3
  Theme: GitHub
4
4
  Description: Light theme as seen on github.com
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@n8n/chat",
3
- "version": "0.57.0",
3
+ "version": "0.58.0",
4
4
  "types": "./dist/index.d.ts",
5
5
  "main": "./dist/chat.umd.js",
6
6
  "module": "./dist/chat.es.js",
@@ -22,8 +22,8 @@
22
22
  "files": [
23
23
  "README.md",
24
24
  "dist",
25
- "LICENSE_EE.md",
26
- "LICENSE.md"
25
+ "LICENSE.md",
26
+ "LICENSE_EE.md"
27
27
  ],
28
28
  "dependencies": {
29
29
  "@vueuse/core": "^10.11.0",
@@ -32,7 +32,7 @@
32
32
  "uuid": "10.0.0",
33
33
  "vue": "^3.5.13",
34
34
  "vue-markdown-render": "^2.2.1",
35
- "@n8n/design-system": "1.99.0"
35
+ "@n8n/design-system": "1.100.0"
36
36
  },
37
37
  "license": "SEE LICENSE IN LICENSE.md",
38
38
  "homepage": "https://n8n.io",