0?", ":""}_temp${t}`)}return(e.components.length||e.directives.length||e.temps)&&(i(`
+`,0),a()),u||i("return "),e.codegenNode?tb(e.codegenNode,n):i("null"),x&&(l(),i("}")),l(),i("}"),{ast:e,code:n.code,preamble:"",map:n.map?n.map.toJSON():void 0}}(l,s)}let t2=()=>({props:[]})}),u("dbYH6",function(e,t){o(e.exports,"useConstantsTranslation",function(){return l}),o(e.exports,"useTranslationClient",function(){return a}),c("iJXGE");var n=c("iADb3"),r=c("6Ys9M");function i(){let e=(0,r.ref)(!1),t=(0,r.ref)("en"),i=(0,r.ref)(!1),o=(0,r.ref)(null);(0,n.onMounted)(()=>{"undefined"!=typeof window&&"undefined"!=typeof fetch&&(e.value=!0)});let s=async(e,n,r=null,s=null,l="")=>{if(!e||!e.trim()){let e=Error("No text provided for translation");throw o.value=e,e}i.value=!0,o.value=null;try{let i=l||window.chatConfig?.apiPrefix||"",o=`${i}/api/translate`,a={text:e,target_lang:n};r&&(a.source_lang=r),s&&(a.context=s);let c=await fetch(o,{method:"POST",headers:{"Content-Type":"application/json","X-Requested-With":"XMLHttpRequest"},credentials:"same-origin",body:JSON.stringify(a)});if(!c.ok)throw Error(`HTTP error! status: ${c.status}`);let u=await c.json();return u.success&&(t.value=n),u}catch(e){throw console.error("Translation error in composable:",e),o.value=e,e}finally{i.value=!1}},l=async(e,t,n={})=>{let{sourceLang:r=null,context:i=null,apiPrefix:o="",fallbackText:l=e}=n;try{let n=await s(e,t,r,i,o);return n.success?n.translated_text:l}catch(e){return console.warn("Safe translation failed, using fallback:",e.message),l}},a=async(e,t,n={})=>(await Promise.allSettled(e.map(e=>l(e,t,n)))).map((t,n)=>"fulfilled"===t.status?t.value:e[n]),c=()=>window.chatConfig?.language||t.value||"en";return{isTranslationReady:e,currentLanguage:(0,n.computed)(()=>c()),isTranslating:i,lastError:o,translate:s,translateSafe:l,translateBatch:a,getCurrentLanguage:c,getApiPrefix:()=>window.chatConfig?.apiPrefix||""}}let s={currentLanguage:null,translations:{}};function l(){let{translateSafe:e}=i();return{translateConstants:async(t,n,r={})=>{if(console.log("useConstantsTranslation: translateConstants called",{targetLang:n,currentCached:s.currentLanguage}),s.currentLanguage===n&&s.translations)return console.log("useConstantsTranslation: Using cached translations for",n),{...s.translations};console.log("useConstantsTranslation: Translating constants to",n);try{let i={};for(let[o,s]of Object.entries(t))i[o]=await e(s,n,{context:"constants",fallbackText:s,...r});return s.currentLanguage=n,s.translations=i,console.log("useConstantsTranslation: Successfully translated and cached constants"),console.log("useConstantsTranslation: Current language:",s.currentLanguage),console.log("useConstantsTranslation: Cached translations:",s.translations),i}catch(e){return console.error("useConstantsTranslation: Error translating constants:",e),{...t}}},getCachedTranslations:()=>s.currentLanguage?{...s.translations}:null,clearCache:()=>{s.currentLanguage=null,s.translations={},console.log("useConstantsTranslation: Cache cleared")},getCachedLanguage:()=>s.currentLanguage}}function a(){let{translate:e,translateSafe:t,isTranslationReady:n,isTranslating:r,lastError:o}=i();return{translate:e,translateSafe:t,isTranslationReady:n,isTranslating:r,lastError:o}}}),u("esoaL",function(e,t){o(e.exports,"render",function(){return u}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO"),i=c("fNp5a");let s={class:"language-selector"},l={class:"select-wrapper"},a=["value"];function u(e,t,o,c,u,d){return(0,n.openBlock)(),(0,n.createElementBlock)("div",s,[t[2]||(t[2]=(0,n.createElementVNode)("label",{for:"language-select"},"Taal / Language:",-1)),(0,n.createElementVNode)("div",l,[(0,n.withDirectives)((0,n.createElementVNode)("select",{id:"language-select","onUpdate:modelValue":t[0]||(t[0]=e=>u.selectedLanguage=e),onChange:t[1]||(t[1]=e=>d.changeLanguage(u.selectedLanguage)),class:"language-select"},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(d.getAvailableLanguages(),e=>((0,n.openBlock)(),(0,n.createElementBlock)("option",{key:e.code,value:e.code},(0,r.toDisplayString)(e.flag)+" "+(0,r.toDisplayString)(e.name),9,a))),128))],544),[[i.vModelSelect,u.selectedLanguage]])])])}}),u("6VrmS",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("13ZGu",function(e,t){i(e.exports),o(e.exports,"default",function(){return a});var n=c("9J6tU"),r=c("lVdl4"),s=c("6rDNK"),l=c("dbYH6"),a={name:"ChatInput",components:{"dynamic-form":n.default,"chat-message":r.default},setup(e){let{watchIcon:t}=(0,s.useIconManager)(),{translateSafe:n,isTranslating:r}=(0,l.useTranslationClient)();return t(()=>e.formData?.icon),{translateSafe:n,isTranslatingText:r}},props:{currentMessage:{type:String,default:""},isLoading:{type:Boolean,default:!1},placeholder:{type:String,default:"Typ je bericht hier... - Enter om te verzenden, Shift+Enter voor nieuwe regel"},maxLength:{type:Number,default:2e3},formData:{type:Object,default:null},activeAiMessage:{type:Object,default:null},apiPrefix:{type:String,default:""}},emits:["send-message","update-message","submit-form","specialist-complete","specialist-error"],data(){return{localMessage:this.currentMessage,formValues:{},translatedPlaceholder:this.placeholder,isTranslating:!1,languageChangeHandler:null}},computed:{characterCount(){return this.localMessage.length},isOverLimit(){return this.characterCount>this.maxLength},hasFormData(){return this.formData&&this.formData.fields&&(Array.isArray(this.formData.fields)&&this.formData.fields.length>0||"object"==typeof this.formData.fields&&Object.keys(this.formData.fields).length>0)},canSend(){return!this.isLoading&&(this.formData?this.validateForm():this.localMessage.trim()&&!this.isOverLimit)},hasFormDataToSend(){return this.formData&&this.validateForm()},sendButtonText(){return this.isLoading?"Verzenden...":this.formData?"Verstuur formulier":"Verstuur bericht"}},watch:{formData:{handler(e,t){if(console.log("ChatInput formData changed:",e),!e){console.log("FormData is null of undefined"),this.formValues={};return}if(!e.fields)return void console.error("FormData bevat geen velden!",e);console.log("Velden in formData:",e.fields),console.log("Aantal velden:",Array.isArray(e.fields)?e.fields.length:Object.keys(e.fields).length),this.initFormValues(),console.log("Formulierwaarden geïnitialiseerd:",this.formValues)},immediate:!0,deep:!0},currentMessage(e){this.localMessage=e},localMessage(e){this.$emit("update-message",e),this.autoResize()}},created(){this.languageChangeHandler=e=>{e.detail&&e.detail.language&&this.handleLanguageChange(e)},document.addEventListener("language-changed",this.languageChangeHandler)},mounted(){this.autoResize(),console.log("ChatInput mounted, formData:",this.formData),this.formData&&console.log("FormData bij mount:",JSON.stringify(this.formData))},beforeUnmount(){this.languageChangeHandler&&document.removeEventListener("language-changed",this.languageChangeHandler)},methods:{handleLanguageChange(e){e.detail&&e.detail.language&&this.translatePlaceholder(e.detail.language)},async translatePlaceholder(e){if(this.isTranslating)return void console.log("Placeholder vertaling al bezig, overslaan...");this.isTranslating=!0;let t=this.placeholder;try{let n=window.chatConfig?.apiPrefix||"",r=await this.translateSafe(t,e,{context:"chat_input_placeholder",apiPrefix:n,fallbackText:t});this.translatedPlaceholder=r,console.log("Placeholder succesvol vertaald naar:",e)}catch(e){console.error("Fout bij vertalen placeholder:",e),this.translatedPlaceholder=t}finally{this.isTranslating=!1}},initFormValues(){this.formData&&this.formData.fields&&(console.log("Initializing form values for fields:",this.formData.fields),this.formValues={},Array.isArray(this.formData.fields)?this.formData.fields.forEach(e=>{let t=e.id||e.name;t&&(this.formValues[t]=void 0!==e.default?e.default:"")}):"object"==typeof this.formData.fields&&Object.entries(this.formData.fields).forEach(([e,t])=>{this.formValues[e]=void 0!==t.default?t.default:""}),console.log("Initialized form values:",this.formValues))},handleKeydown(e){"Enter"!==e.key||e.shiftKey?"Escape"===e.key&&(this.localMessage=""):(e.preventDefault(),this.sendMessage())},sendMessage(){console.log("ChatInput: sendMessage called, formData:",!!this.formData),this.canSend&&(this.formData?(console.log("ChatInput: Processing form submission"),this.validateForm()&&this.$emit("submit-form",this.formValues)):this.localMessage.trim()&&(console.log("ChatInput: Processing regular message"),this.$emit("send-message")))},handleFormSendSubmit(e){console.log("ChatInput: handleFormSendSubmit called with values:",e),this.formValues=e,this.sendMessage()},getFormValuesForSending(){return this.formValues},resetForm(){this.formValues={},this.initFormValues()},cancelForm(){this.formValues={}},validateForm(){if(!this.formData||!this.formData.fields)return!1;let e=[];return Array.isArray(this.formData.fields)?e=this.formData.fields.filter(e=>{if(!e.required)return!1;let t=e.id||e.name,n=this.formValues[t];return null==n||"string"==typeof n&&!n.trim()}):Object.entries(this.formData.fields).forEach(([t,n])=>{if(n.required){let r=this.formValues[t];null!=r&&("string"!=typeof r||r.trim())||e.push(n)}}),0===e.length},autoResize(){this.$nextTick(()=>{let e=this.$refs.messageInput;e&&(e.style.height="auto",e.style.height=Math.min(e.scrollHeight,120)+"px")})},focusInput(){this.$refs.messageInput?.focus()},clearInput(){this.localMessage="",this.focusInput()},updateFormValues(e){JSON.stringify(e)!==JSON.stringify(this.formValues)&&(this.formValues=JSON.parse(JSON.stringify(e)))},handleImageLoaded(){console.log("Image loaded in active AI message")}}}}),u("9J6tU",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("lrkvW")).__esModule&&(n=n.default),n.render=c("dfeQd").render,n.__cssModules={},c("bpKaV").default(n),n.__scopeId="data-v-a5aafb",n.__file="DynamicForm.vue";var r=n}),u("lrkvW",function(e,t){i(e.exports),o(e.exports,"default",function(){return l});var n=c("70gdv"),r=c("6rDNK"),s=c("8L4n2"),l={name:"DynamicForm",components:{"form-field":n.default},setup(e){let{watchIcon:t,loadIcons:n}=(0,r.useIconManager)(),i=(0,s.injectContentModal)();return t(()=>e.formData?.icon),n(["check_circle","cancel"]),{contentModal:i}},props:{formData:{type:Object,required:!0,validator:e=>e&&"object"==typeof e?e.title||e.name?e.fields?Array.isArray(e.fields)||"object"==typeof e.fields?(console.log("FormData is geldig:",e),!0):(console.error("FormData.fields is geen array of object"),!1):(console.error("FormData heeft geen fields eigenschap"),!1):(console.error("FormData heeft geen title of name"),!1):(console.error("FormData is niet een geldig object"),!1)},formValues:{type:Object,default:()=>({})},isSubmitting:{type:Boolean,default:!1},readOnly:{type:Boolean,default:!1},hideActions:{type:Boolean,default:!1},apiPrefix:{type:String,required:!0},showSendButton:{type:Boolean,default:!1},sendButtonText:{type:String,default:"Verstuur formulier"},isSubmittingForm:{type:Boolean,default:!1}},emits:["submit","cancel","update:formValues","form-enter-pressed","form-send-submit"],data(){return{localFormValues:{...this.formValues}}},computed:{isFormValid(){let e=[];return Array.isArray(this.formData.fields)?this.formData.fields.forEach(t=>{let n=t.id||t.name;if(t.required){let r=this.localFormValues[n];"boolean"===t.type?"boolean"!=typeof r&&e.push(t.name):(null==r||"string"==typeof r&&!r.trim()||Array.isArray(r)&&0===r.length)&&e.push(t.name)}}):Object.entries(this.formData.fields).forEach(([t,n])=>{if(n.required){let r=this.localFormValues[t];"boolean"===n.type?"boolean"!=typeof r&&e.push(n.name):(null==r||"string"==typeof r&&!r.trim()||Array.isArray(r)&&0===r.length)&&e.push(n.name)}}),0===e.length},titleDisplayMode:()=>(console.log("Title display mode:",window.chatConfig?.form_title_display||"Full Title"),window.chatConfig?.form_title_display||"Full Title"),shouldShowFormHeader(){return(this.formData.title||this.formData.name||this.formData.icon)&&"No Title"!==this.titleDisplayMode}},watch:{formValues:{handler(e){JSON.stringify(e)!==JSON.stringify(this.localFormValues)&&(this.localFormValues=JSON.parse(JSON.stringify(e)),this.$nextTick(()=>{this.initializeBooleanFields()}))},deep:!0},formData:{handler(){this.$nextTick(()=>{this.initializeBooleanFields()})},deep:!0},localFormValues:{handler(e){JSON.stringify(e)!==JSON.stringify(this.formValues)&&this.$emit("update:formValues",JSON.parse(JSON.stringify(e)))},deep:!0}},created(){},mounted(){this.initializeBooleanFields(),this.$nextTick(()=>{this.focusFirstField()})},methods:{initializeBooleanFields(){let e={...this.localFormValues},t=!1;(Array.isArray(this.formData.fields)?this.formData.fields:Object.entries(this.formData.fields).map(([e,t])=>({...t,id:e}))).forEach(n=>{let r=n.id||n.name;if("boolean"===n.type){let i=e[r];null==i||""===i?(e[r]=!0===n.default,t=!0):"boolean"!=typeof i&&(e[r]=!!i,t=!0)}}),t&&(this.localFormValues=e)},updateFieldValue(e,t){let n=null;n=Array.isArray(this.formData.fields)?this.formData.fields.find(t=>(t.id||t.name)===e):this.formData.fields[e];let r=t;n&&"boolean"===n.type&&(r=!!t),this.localFormValues={...this.localFormValues,[e]:r},this.$nextTick(()=>{this.initializeBooleanFields()})},handleSubmit(){this.initializeBooleanFields(),this.$nextTick(()=>{let e=[];if(Array.isArray(this.formData.fields)?this.formData.fields.forEach(t=>{let n=t.id||t.name;if(t.required){let r=this.localFormValues[n];"boolean"===t.type?"boolean"!=typeof r&&e.push(t.name):(null==r||"string"==typeof r&&!r.trim()||Array.isArray(r)&&0===r.length)&&e.push(t.name)}}):Object.entries(this.formData.fields).forEach(([t,n])=>{if(n.required){let r=this.localFormValues[t];"boolean"===n.type?"boolean"!=typeof r&&e.push(n.name):(null==r||"string"==typeof r&&!r.trim()||Array.isArray(r)&&0===r.length)&&e.push(n.name)}}),e.length>0)return void alert(`De volgende velden zijn verplicht: ${e.join(", ")}`);this.$emit("submit",this.localFormValues)})},handleCancel(){this.$emit("cancel")},handleSendSubmit(){this.initializeBooleanFields(),this.$nextTick(()=>{this.$emit("form-send-submit",this.localFormValues)})},getFieldsForDisplay(){if(Array.isArray(this.formData.fields)){let e={};return this.formData.fields.forEach(t=>{e[t.id||t.name]=t}),e}return this.formData.fields},formatFieldValue(e,t){let n=this.localFormValues[e];if(null==n)return"-";if("boolean"===t.type){let e=n?"check_circle":"cancel",t=n?"Ja":"Nee",r=n?"boolean-true":"boolean-false";return`
+ ${e}
+ `}return"enum"===t.type&&!n&&t.default?t.default:n.toString()},openPrivacyModal(){this.loadContent("privacy")},openTermsModal(){this.loadContent("terms")},closeModal(){this.contentModal.hideModal()},retryLoad(){let e=this.contentModal.modalState.title.toLowerCase();e.includes("privacy")?this.loadContent("privacy"):e.includes("terms")&&this.loadContent("terms")},async loadContent(e){let t=`${this.apiPrefix}/${e}`;await this.contentModal.showModal({title:"privacy"===e?"Privacy Statement":"Terms & Conditions",contentUrl:t})},handleEnterKey(e){console.log("DynamicForm: Enter event received, emitting form-enter-pressed"),e.preventDefault(),this.$emit("form-enter-pressed")},focusFirstField(){if(this.readOnly)return;let e=this.$el.querySelector('input:not([type="hidden"]):not([type="radio"]):not([type="checkbox"]), textarea, select');e&&e.focus()}}}}),u("70gdv",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("8cmof")).__esModule&&(n=n.default),n.render=c("58B43").render,n.__cssModules={},c("hvpzC").default(n),n.__scopeId="data-v-83d729",n.__file="FormField.vue";var r=n}),u("8cmof",function(e,t){i(e.exports),o(e.exports,"default",function(){return r});var n=c("lfo9i"),r={name:"FormField",props:{field:{type:Object,required:!0,validator:e=>e.name&&e.type},fieldId:{type:String,required:!0},modelValue:{default:null}},emits:["update:modelValue","open-privacy-modal","open-terms-modal","keydown-enter"],setup(){let e={consentPrefix:"I agree with the",consentMiddle:"and",consentSuffix:"of AskEveAI",privacyLink:"privacy statement",termsLink:"terms and conditions"};try{let{texts:t}=(0,n.useComponentTranslations)("FormField",e);return{translatedTexts:t,fallbackTexts:e}}catch(t){return console.error("FormField setup(): Error in useComponentTranslations:",t),{translatedTexts:null,fallbackTexts:e}}},computed:{texts(){if(this.translatedTexts&&"object"==typeof this.translatedTexts){let e=this.translatedTexts;if(e.consentPrefix&&e.consentMiddle&&e.consentSuffix&&e.privacyLink&&e.termsLink)return e}return this.fallbackTexts||{consentPrefix:"I agree with the",consentMiddle:"and",consentSuffix:"of AskEveAI",privacyLink:"privacy statement",termsLink:"terms and conditions"}},value:{get(){return void 0===this.modelValue||null===this.modelValue?"boolean"===this.field.type?!0===this.field.default:void 0!==this.field.default?this.field.default:"":this.modelValue},set(e){let t=e;"boolean"===this.field.type&&(console.log("FormField Boolean Value: ",e),console.log("FormField Boolean Processed Value: ",t=!!e)),JSON.stringify(t)!==JSON.stringify(this.modelValue)&&this.$emit("update:modelValue",t)}},fieldType(){return({str:"text",string:"text",int:"number",integer:"number",float:"number",text:"textarea",enum:"select",options:"radio",boolean:"checkbox",file:"file",date:"date",time:"time",email:"email",url:"url"})[this.field.type]||this.field.type},stepValue(){return"float"===this.field.type?"any":1},description(){return this.field.description||""},isConsentField(){return"boolean"===this.field.type&&("consent"===this.fieldId||this.fieldId.toLowerCase().includes("consent"))}},methods:{handleFileUpload(e){let t=e.target.files[0];t&&(this.value=t)},openPrivacyModal(e){e.preventDefault(),this.$emit("open-privacy-modal")},openTermsModal(e){e.preventDefault(),this.$emit("open-terms-modal")},handleEnterKey(e){console.log("FormField: Enter pressed in field:",this.fieldId),e.preventDefault(),this.$emit("keydown-enter")},handleTextareaKeydown(e){console.log("FormField: Textarea keydown in field:",this.fieldId,"Key:",e.key,"Ctrl:",e.ctrlKey,"Shift:",e.shiftKey),"Enter"!==e.key||e.shiftKey||(console.log("FormField: Textarea Enter triggered for field:",this.fieldId),e.preventDefault(),this.$emit("keydown-enter"))}}}}),u("58B43",function(e,t){o(e.exports,"render",function(){return D}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO"),i=c("fNp5a");let s=["for"],l={key:0,class:"required",style:{color:"#d93025","margin-left":"2px"}},a={key:1,class:"tooltip-content"},u={style:{width:"100%"}},d={key:0,class:"field-context"},p=["id","required","placeholder","title"],h=["id","required","step","placeholder","title"],f=["id","required","rows","placeholder","title"],g=["id","required","title"],m=["value"],y={key:5,class:"radio-group"},x=["name","value","required"],b={key:6,class:"checkbox-container",style:{display:"flex","align-items":"center"}},k={class:"checkbox-label",style:{display:"flex","align-items":"center",cursor:"pointer"}},S=["id","required"],_={key:0,class:"checkbox-text"},w={key:1,class:"checkbox-text consent-text"},E={key:2,class:"required",style:{color:"#d93025","margin-left":"2px"}},C=["id","required","accept","title"],T=["id","required","title"],A=["id","required","title"],O=["id","required","placeholder","title"],M=["id","required","placeholder","title"];function D(e,t,o,c,D,N){return(0,n.openBlock)(),(0,n.createElementBlock)("div",{class:(0,r.normalizeClass)(["form-field",{"radio-field":"radio"===N.fieldType}]),style:{"margin-bottom":"15px"}},["checkbox"!==N.fieldType?((0,n.openBlock)(),(0,n.createElementBlock)("label",{key:0,for:o.fieldId,class:(0,r.normalizeClass)(["field-label",{"tooltip-label":N.description}])},[(0,n.createTextVNode)((0,r.toDisplayString)(o.field.name)+" ",1),o.field.required?((0,n.openBlock)(),(0,n.createElementBlock)("span",l,"*")):(0,n.createCommentVNode)("",!0),N.description?((0,n.openBlock)(),(0,n.createElementBlock)("span",a,(0,r.toDisplayString)(N.description),1)):(0,n.createCommentVNode)("",!0)],10,s)):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",u,[o.field.context?((0,n.openBlock)(),(0,n.createElementBlock)("div",d,(0,r.toDisplayString)(o.field.context),1)):(0,n.createCommentVNode)("",!0),"text"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:1,id:o.fieldId,type:"text","onUpdate:modelValue":t[0]||(t[0]=e=>N.value=e),required:o.field.required,placeholder:o.field.placeholder||"",title:N.description,onKeydown:t[1]||(t[1]=(0,i.withKeys)((...e)=>N.handleEnterKey&&N.handleEnterKey(...e),["enter"])),style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,40,p)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0),"number"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:2,id:o.fieldId,type:"number","onUpdate:modelValue":t[2]||(t[2]=e=>N.value=e),required:o.field.required,step:N.stepValue,placeholder:o.field.placeholder||"",title:N.description,onKeydown:t[3]||(t[3]=(0,i.withKeys)((...e)=>N.handleEnterKey&&N.handleEnterKey(...e),["enter"])),style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,40,h)),[[i.vModelText,N.value,void 0,{number:!0}]]):(0,n.createCommentVNode)("",!0),"textarea"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("textarea",{key:3,id:o.fieldId,"onUpdate:modelValue":t[4]||(t[4]=e=>N.value=e),required:o.field.required,rows:o.field.rows||3,placeholder:o.field.placeholder||"",title:N.description,onKeydown:t[5]||(t[5]=(...e)=>N.handleTextareaKeydown&&N.handleTextareaKeydown(...e)),style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box",resize:"vertical"}},null,40,f)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0),"select"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("select",{key:4,id:o.fieldId,"onUpdate:modelValue":t[6]||(t[6]=e=>N.value=e),required:o.field.required,title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},[t[16]||(t[16]=(0,n.createElementVNode)("option",{value:""},"Selecteer een optie",-1)),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.field.allowedValues||o.field.allowed_values||[],e=>((0,n.openBlock)(),(0,n.createElementBlock)("option",{key:e,value:e},(0,r.toDisplayString)(e),9,m))),128))],8,g)),[[i.vModelSelect,N.value]]):(0,n.createCommentVNode)("",!0),"radio"===N.fieldType?((0,n.openBlock)(),(0,n.createElementBlock)("div",y,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.field.allowedValues||o.field.allowed_values||[],e=>((0,n.openBlock)(),(0,n.createElementBlock)("label",{key:e,class:"radio-label"},[(0,n.withDirectives)((0,n.createElementVNode)("input",{type:"radio",name:o.fieldId,value:e,"onUpdate:modelValue":t[7]||(t[7]=e=>N.value=e),required:o.field.required},null,8,x),[[i.vModelRadio,N.value]]),(0,n.createElementVNode)("span",null,(0,r.toDisplayString)(e),1)]))),128))])):(0,n.createCommentVNode)("",!0),"checkbox"===N.fieldType?((0,n.openBlock)(),(0,n.createElementBlock)("div",b,[(0,n.createElementVNode)("label",k,[(0,n.withDirectives)((0,n.createElementVNode)("input",{type:"checkbox",id:o.fieldId,"onUpdate:modelValue":t[8]||(t[8]=e=>N.value=e),required:o.field.required,style:{"margin-right":"8px"}},null,8,S),[[i.vModelCheckbox,N.value]]),N.isConsentField?((0,n.openBlock)(),(0,n.createElementBlock)("span",w,[(0,n.createTextVNode)((0,r.toDisplayString)(N.texts.consentPrefix)+" ",1),(0,n.createElementVNode)("a",{href:"#",onClick:t[9]||(t[9]=(...e)=>N.openPrivacyModal&&N.openPrivacyModal(...e)),class:"consent-link"},(0,r.toDisplayString)(N.texts.privacyLink),1),(0,n.createTextVNode)(" "+(0,r.toDisplayString)(N.texts.consentMiddle)+" ",1),(0,n.createElementVNode)("a",{href:"#",onClick:t[10]||(t[10]=(...e)=>N.openTermsModal&&N.openTermsModal(...e)),class:"consent-link"},(0,r.toDisplayString)(N.texts.termsLink),1),(0,n.createTextVNode)(" "+(0,r.toDisplayString)(N.texts.consentSuffix),1)])):((0,n.openBlock)(),(0,n.createElementBlock)("span",_,(0,r.toDisplayString)(o.field.name),1)),o.field.required?((0,n.openBlock)(),(0,n.createElementBlock)("span",E,"*")):(0,n.createCommentVNode)("",!0)])])):(0,n.createCommentVNode)("",!0),"file"===N.fieldType?((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:7,id:o.fieldId,type:"file",onChange:t[11]||(t[11]=(...e)=>N.handleFileUpload&&N.handleFileUpload(...e)),required:o.field.required,accept:o.field.accept||"*",title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,40,C)):(0,n.createCommentVNode)("",!0),"date"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:8,id:o.fieldId,type:"date","onUpdate:modelValue":t[12]||(t[12]=e=>N.value=e),required:o.field.required,title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,8,T)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0),"time"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:9,id:o.fieldId,type:"time","onUpdate:modelValue":t[13]||(t[13]=e=>N.value=e),required:o.field.required,title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,8,A)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0),"email"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:10,id:o.fieldId,type:"email","onUpdate:modelValue":t[14]||(t[14]=e=>N.value=e),required:o.field.required,placeholder:o.field.placeholder||"",title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,8,O)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0),"url"===N.fieldType?(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:11,id:o.fieldId,type:"url","onUpdate:modelValue":t[15]||(t[15]=e=>N.value=e),required:o.field.required,placeholder:o.field.placeholder||"",title:N.description,style:{width:"100%",padding:"8px","border-radius":"4px",border:"1px solid #ddd","box-sizing":"border-box"}},null,8,M)),[[i.vModelText,N.value]]):(0,n.createCommentVNode)("",!0)])],2)}}),u("hvpzC",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("6rDNK",function(e,t){o(e.exports,"useIconManager",function(){return i}),c("iJXGE");var n=c("iADb3"),r=c("6Ys9M");function i(){let e=(0,r.ref)(!0),t=(0,r.ref)([]),i=(e,n={})=>{if(!e)return void console.warn("No icon name provided");if(t.value.includes(e))return;let r={opsz:24,wght:400,FILL:0,GRAD:0,...n},i=`
+ .material-symbols-outlined.icon-${e} {
+ font-variation-settings:
+ 'FILL' ${r.FILL},
+ 'wght' ${r.wght},
+ 'GRAD' ${r.GRAD},
+ 'opsz' ${r.opsz};
+ }
+ `,o=document.createElement("style");o.textContent=i,document.head.appendChild(o),t.value.push(e),console.log(`Icon loaded: ${e}`)},o=(e,t={})=>{if(!Array.isArray(e))return void console.warn("iconNames must be an array");e.forEach(e=>{i(e,t)})};return{isIconManagerReady:e,loadIcon:i,loadIcons:o,ensureIconsLoaded:(e={},t=[])=>{t&&t.length>0&&o(t,e)},watchIcon:(e,t={})=>{(0,n.watch)(e,e=>{e&&(Array.isArray(e)?o(e,t):i(e,t))},{immediate:!0})},watchFormDataIcon:(e,t={})=>{(0,n.watch)(()=>e.value?.icon,e=>{e&&i(e,t)},{immediate:!0})},preloadCommonIcons:(e=[],t={})=>{o(e.length>0?e:["send","attach_file","mic","more_vert","close","check","error","warning","info","expand_more","expand_less"],t)}}}}),u("8L4n2",function(e,t){o(e.exports,"provideContentModal",function(){return s}),o(e.exports,"injectContentModal",function(){return l}),c("iJXGE");var n=c("iADb3"),r=c("6Ys9M");let i=Symbol("contentModal");function s(){let e=function(){let e=(0,r.reactive)({show:!1,title:"",content:"",version:"",loading:!1,error:!1,errorMessage:"",lastContentUrl:""}),t=(0,r.ref)({}),n=async(t={})=>{let{title:n="Content",contentUrl:r=null,content:o=null,version:s=""}=t;if(e.show=!0,e.title=n,e.content=o||"",e.version=s,e.loading=!!r,e.error=!1,e.errorMessage="",e.lastContentUrl=r||"",o){e.loading=!1;return}r&&await i(r)},i=async n=>{try{if(console.log("Loading content from:",n),e.loading=!0,e.error=!1,e.errorMessage="",t.value[n]){console.log("Content found in cache for:",n);let r=t.value[n];e.content=r.content,e.version=r.version,e.loading=!1;return}console.log("Fetching content from API:",n);let r=await fetch(n);if(!r.ok)throw Error(`HTTP ${r.status}: ${r.statusText}`);let i=await r.json();if(console.log("API response received:",{hasSuccess:void 0!==i.success,hasContent:void 0!==i.content,hasError:void 0!==i.error,contentLength:i.content?i.content.length:0}),void 0!==i.success)if(i.success)e.content=i.content||"",e.version=i.version||"";else throw Error(i.error||"Onbekende fout bij het laden van content");else if(void 0!==i.content)e.content=i.content||"",e.version=i.version||"";else if(i.error)throw Error(i.message||i.error||"Er is een fout opgetreden");else throw Error("Invalid response format: no content or success property found");t.value[n]={content:e.content,version:e.version,timestamp:Date.now()}}catch(t){console.error("Error loading content:",t),e.error=!0,e.errorMessage=t.message||"Er is een fout opgetreden bij het laden van de content."}finally{e.loading=!1}},o=async()=>{e.lastContentUrl?(console.log("Retrying content load for:",e.lastContentUrl),await i(e.lastContentUrl)):(console.warn("No content URL available for retry"),e.error=!0,e.errorMessage="Geen content URL beschikbaar voor opnieuw proberen.")};return{modalState:e,showModal:n,hideModal:()=>{console.log("Hiding content modal"),e.show=!1,e.title="",e.content="",e.version="",e.loading=!1,e.error=!1,e.errorMessage="",e.lastContentUrl=""},loadContent:i,retryLoad:o,clearCache:()=>{t.value={}},getCacheInfo:()=>({size:Object.keys(t.value).length,entries:Object.keys(t.value)})}}();return(0,n.provide)(i,e),e}function l(){let e=(0,n.inject)(i);if(!e)throw Error("useContentModal must be provided before it can be injected");return e}}),u("dfeQd",function(e,t){o(e.exports,"render",function(){return w}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i={class:"dynamic-form-container"},s={key:0,class:"form-header"},l={key:0,class:"form-icon"},a={class:"material-symbols-outlined"},u={class:"form-title"},d={key:1,class:"form-fields"},p=["disabled","title"],h={key:0,class:"loading-spinner"},f={key:1,width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor"},g=["disabled"],m=["disabled"],y={key:0},x={key:1},b={key:3,class:"form-readonly"},k={class:"field-label"},S=["innerHTML"],_={key:1};function w(e,t,o,c,w,E){let C=(0,n.resolveComponent)("form-field");return(0,n.openBlock)(),(0,n.createElementBlock)("div",i,[(0,n.createElementVNode)("div",{class:(0,r.normalizeClass)(["dynamic-form",{readonly:o.readOnly,edit:!o.readOnly}])},[E.shouldShowFormHeader?((0,n.openBlock)(),(0,n.createElementBlock)("div",s,[o.formData.icon?((0,n.openBlock)(),(0,n.createElementBlock)("div",l,[(0,n.createElementVNode)("span",a,(0,r.toDisplayString)(o.formData.icon),1)])):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",u,(0,r.toDisplayString)(o.formData.title||o.formData.name),1)])):(0,n.createCommentVNode)("",!0),o.readOnly?(0,n.createCommentVNode)("",!0):((0,n.openBlock)(),(0,n.createElementBlock)("div",d,[Array.isArray(o.formData.fields)?((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,{key:0},(0,n.renderList)(o.formData.fields,e=>((0,n.openBlock)(),(0,n.createBlock)(C,{key:e.id||e.name,field:e,"field-id":e.id||e.name,"model-value":w.localFormValues[e.id||e.name],"onUpdate:modelValue":t=>E.updateFieldValue(e.id||e.name,t),onOpenPrivacyModal:E.openPrivacyModal,onOpenTermsModal:E.openTermsModal,onKeydownEnter:E.handleEnterKey},null,8,["field","field-id","model-value","onUpdate:modelValue","onOpenPrivacyModal","onOpenTermsModal","onKeydownEnter"]))),128)):"object"==typeof o.formData.fields?((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,{key:1},(0,n.renderList)(o.formData.fields,(e,t)=>((0,n.openBlock)(),(0,n.createBlock)(C,{key:t,field:e,"field-id":t,"model-value":w.localFormValues[t],"onUpdate:modelValue":e=>E.updateFieldValue(t,e),onOpenPrivacyModal:E.openPrivacyModal,onOpenTermsModal:E.openTermsModal,onKeydownEnter:E.handleEnterKey},null,8,["field","field-id","model-value","onUpdate:modelValue","onOpenPrivacyModal","onOpenTermsModal","onKeydownEnter"]))),128)):(0,n.createCommentVNode)("",!0)])),o.hideActions||o.readOnly?(0,n.createCommentVNode)("",!0):((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:2,class:(0,r.normalizeClass)(["form-actions",{"with-send-button":o.showSendButton}])},[o.showSendButton?((0,n.openBlock)(),(0,n.createElementBlock)("button",{key:0,type:"button",onClick:t[0]||(t[0]=(...e)=>E.handleSendSubmit&&E.handleSendSubmit(...e)),class:"send-btn",disabled:o.isSubmittingForm||!E.isFormValid,title:o.sendButtonText},[o.isSubmittingForm?((0,n.openBlock)(),(0,n.createElementBlock)("span",h,"⏳")):((0,n.openBlock)(),(0,n.createElementBlock)("svg",f,t[3]||(t[3]=[(0,n.createElementVNode)("path",{d:"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"},null,-1)])))],8,p)):((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:1},[(0,n.createElementVNode)("button",{type:"button",onClick:t[1]||(t[1]=(...e)=>E.handleCancel&&E.handleCancel(...e)),class:"btn btn-secondary",disabled:o.isSubmitting}," Annuleren ",8,g),(0,n.createElementVNode)("button",{type:"button",onClick:t[2]||(t[2]=(...e)=>E.handleSubmit&&E.handleSubmit(...e)),class:"btn btn-primary",disabled:o.isSubmitting||!E.isFormValid},[o.isSubmitting?((0,n.openBlock)(),(0,n.createElementBlock)("span",y,"Verzenden...")):((0,n.openBlock)(),(0,n.createElementBlock)("span",x,"Versturen"))],8,m)],64))],2)),o.readOnly?((0,n.openBlock)(),(0,n.createElementBlock)("div",b,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(E.getFieldsForDisplay(),(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:t,class:"form-field-readonly"},[(0,n.createElementVNode)("div",k,(0,r.toDisplayString)(e.name)+":",1),(0,n.createElementVNode)("div",{class:(0,r.normalizeClass)(["field-value",{"text-value":"text"===e.type,"boolean-value":"boolean"===e.type}])},["boolean"===e.type?((0,n.openBlock)(),(0,n.createElementBlock)("span",{key:0,innerHTML:E.formatFieldValue(t,e)},null,8,S)):((0,n.openBlock)(),(0,n.createElementBlock)("span",_,(0,r.toDisplayString)(E.formatFieldValue(t,e)),1))],2)]))),128))])):(0,n.createCommentVNode)("",!0)],2)])}}),u("bpKaV",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("lVdl4",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("cVxOO")).__esModule&&(n=n.default),n.render=c("9jZm8").render,n.__cssModules={},c("JObLi").default(n),n.__scopeId="data-v-e65c19",n.__file="ChatMessage.vue";var r=n}),u("cVxOO",function(e,t){i(e.exports),o(e.exports,"default",function(){return a});var n=c("9J6tU"),r=c("3b050"),s=c("6rDNK"),l=c("lfo9i"),a={name:"ChatMessage",components:{"dynamic-form":n.default,"progress-tracker":r.default},setup(e){let{watchIcon:t}=(0,s.useIconManager)();t(()=>e.message.formData?.icon);let{translations:n,isLoading:r,error:i,currentLanguage:o}=(0,l.useComponentTranslations)("chat_message",{retry:"Try again",copy:"Copy",timestamp:"Timestamp",errorMessage:"An error occurred while processing your request."});return{messageTexts:n,translationLoading:r,translationError:i,currentLanguage:o}},props:{message:{type:Object,required:!0,validator:e=>e.id&&void 0!==e.content&&e.sender&&e.type},isSubmittingForm:{type:Boolean,default:!1},apiPrefix:{type:String,default:""},isLatestAiMessage:{type:Boolean,default:!1},isInInputArea:{type:Boolean,default:!1}},emits:["image-loaded","retry-message","specialist-complete","specialist-error"],data:()=>({formVisible:!0}),created(){"ai"!==this.message.sender||this.message.originalContent||(this.message.originalContent=this.message.content)},mounted(){},beforeUnmount(){},computed:{hasFormData(){return this.message.formData&&(Array.isArray(this.message.formData.fields)&&this.message.formData.fields.length>0||"object"==typeof this.message.formData.fields&&Object.keys(this.message.formData.fields).length>0)},hasFormValues(){return this.message.formValues&&Object.keys(this.message.formValues).length>0}},methods:{hasMeaningfulFormValues:e=>!!e&&"user"===e.sender&&!!e.formValues&&!!e.formData&&!!e.formData.fields&&0!==Object.keys(e.formData.fields).length&&!!e.formValues&&0!==Object.keys(e.formValues).length&&Object.entries(e.formValues).some(([t,n])=>!!e.formData.fields[t]&&null!=n&&("string"!=typeof n||""!==n.trim())&&("boolean"==typeof n||!Array.isArray(n)||0!==n.length)),handleSpecialistError(e){console.log("ChatMessage received specialist-error event:",e),this.message.type="error",this.message.content=e.message||this.messageTexts.errorMessage,this.message.retryable=!0,this.message.error=!0,this.$emit("specialist-error",{messageId:this.message.id,...e})},handleSpecialistComplete(e){console.log("ChatMessage received specialist-complete event:",e),e.answer?(console.log("Updating message content with answer:",e.answer),this.message.content=e.answer,this.message.originalContent=e.answer):console.error("No answer in specialist-complete event data"),this.$emit("specialist-complete",{messageId:this.message.id,answer:e.answer,form_request:e.form_request,result:e.result,interactionId:e.interactionId,taskId:e.taskId})},formatMessage:e=>e?e.replace(/\*\*(.*?)\*\*/g,"$1 ").replace(/\*(.*?)\*/g,"$1 ").replace(/`(.*?)`/g,"$1").replace(/\[([^\]]+)\]\(([^)]+)\)/g,'$1 ').replace(/\n/g," "):"",removeMessage(){},reactToMessage(e){},getMessageClass(){let e=`message ${this.message.sender}`;return"user"===this.message.sender&&this.hasMeaningfulFormValues(this.message)&&(e+=" has-form"),this.message.isTemporarilyAtBottom&&(e+=" temporarily-at-bottom"),this.isInStickyArea&&(e+=" sticky-area"),this.isInInputArea&&(e+=" input-area"),e}}}}),u("3b050",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("kkMhm")).__esModule&&(n=n.default),n.render=c("iqgMR").render,n.__cssModules={},c("kgXYb").default(n),n.__scopeId="data-v-5f4bda",n.__file="ProgressTracker.vue";var r=n}),u("kkMhm",function(e,t){i(e.exports),o(e.exports,"default",function(){return r});var n=c("lfo9i"),r={name:"ProgressTracker",setup(){let{translations:e,isLoading:t,error:r,currentLanguage:i}=(0,n.useComponentTranslations)("progress_tracker",{error:"Error while processing",completed:"Processing completed",processing:"Processing..."});return console.log("Translations:",e),console.log("Current language:",i),{statusTexts:e,translationLoading:t,translationError:r,currentLanguage:i}},props:{taskId:{type:String,required:!0},apiPrefix:{type:String,default:""},isLatestAiMessage:{type:Boolean,default:!1},isInInputArea:{type:Boolean,default:!1}},emits:["specialist-complete","specialist-error"],data:()=>({isExpanded:!1,isCompleted:!1,hasError:!1,connecting:!0,error:null,progressLines:[],eventSource:null}),computed:{isProcessing(){return!this.isCompleted&&!this.hasError&&!this.connecting},errorText(){return this.statusTexts.error},completedText(){return this.statusTexts.completed},processingText(){return this.statusTexts.processing},visibilityMode:()=>(console.log("Visibility mode:",window.chatConfig?.progress_tracker_insights||"No Information"),window.chatConfig?.progress_tracker_insights||"No Information"),shouldShowFullTracker(){switch(this.visibilityMode){case"All Interactions":return!0;case"Active Interaction Only":return this.isLatestAiMessage;default:return!1}},shouldShowProgressIconOnly(){return"No Information"===this.visibilityMode&&this.isProcessing},shouldShowError(){return this.error||this.hasError}},created(){console.log("ProgressTracker: Using LanguageProvider system for translations")},mounted(){this.connectToProgressStream()},beforeUnmount(){this.disconnectEventSource()},methods:{connectToProgressStream(){if(!this.taskId)return void console.error("Geen task ID beschikbaar voor progress tracking");console.log("Connecting to progress stream for task:",this.taskId);let e=window.location.origin,t=`${e}${this.apiPrefix}/api/task_progress/${this.taskId}`;console.log("SSE URL:",t);try{this.eventSource=new EventSource(t),this.eventSource.onopen=()=>{console.log("Progress stream connected"),this.connecting=!1},this.eventSource.onmessage=e=>{this.handleProgressUpdate(e)},this.eventSource.onerror=e=>{console.error("Progress stream error:",e),this.handleError(e)}}catch(e){console.error("Failed to create EventSource:",e),this.error="Unable to connect to the server SSE stream.",this.connecting=!1}},disconnectEventSource(){this.eventSource&&(console.log("Disconnecting progress stream"),this.eventSource.close(),this.eventSource=null)},handleProgressUpdate(e){try{let t=JSON.parse(e.data);if(console.log("Progress update:",t),"EveAI Specialist Complete"===t.processing_type){console.log("Detected specialist complete via processing_type"),this.handleSpecialistComplete(e);return}if("EveAI Specialist Error"===t.processing_type){console.log("Detected specialist error via processing_type or status"),this.handleSpecialistError(e);return}t.message?this.progressLines.push(t.message):t.data&&t.data.message?this.progressLines.push(t.data.message):t.processing_type&&this.progressLines.push(`${t.processing_type}...`),this.isExpanded&&this.$nextTick(()=>{let e=this.$refs.progressContainer;e&&(e.scrollTop=e.scrollHeight)})}catch(e){console.error("Error parsing progress data:",e)}},handleSpecialistComplete(e){console.log("Specialist complete event:",e);try{let t=JSON.parse(e.data);console.log("Specialist complete data:",t),this.isCompleted=!0,this.connecting=!1,this.disconnectEventSource();let n=null,r=null,i=null,o=null;n=t.data.result,console.log("Result data:",n),n&&(r=n.answer,i=n.form_request,o=t.data.interaction_id),this.$emit("specialist-complete",{answer:r,form_request:i,result:n,interactionId:o,taskId:this.taskId})}catch(e){console.error("Error parsing specialist complete data:",e),this.handleSpecialistError({data:JSON.stringify({Error:"Failed to parse completion data",processing_type:"EveAI Specialist Error"})})}},handleSpecialistError(e){console.log("Specialist error event:",e);try{let t=JSON.parse(e.data);console.log("Specialist error data:",t),this.isCompleted=!0,this.hasError=!0,this.connecting=!1,this.disconnectEventSource();let n="We could not process your request. Please try again later.";this.error=n;let r=t.Error||t.error||t.message||t.data?.error||t.data?.Error||t.data?.message||"Unknown error";console.error("Specialist Error:",r),this.$emit("specialist-error",{message:n,originalError:r,taskId:this.taskId})}catch(e){console.error("Error parsing specialist error data:",e),this.error="An unknown error occurred while processing your request.",this.isCompleted=!0,this.hasError=!0,this.connecting=!1,this.disconnectEventSource(),this.$emit("specialist-error",{message:"An unknown error occurred while processing your request.",originalError:"Failed to parse error data",taskId:this.taskId})}},handleError(e){console.error("SSE Error event:",e),this.error="An unknown error occurred while connecting to the server. Please try again later.",this.connecting=!1;try{if(e.data){let t=JSON.parse(e.data);t&&t.message&&(this.error=t.message)}}catch(e){}this.$emit("specialist-error",{message:this.error,originalError:"SSE Connection Error",taskId:this.taskId})},toggleExpand(){this.isExpanded=!this.isExpanded,this.isExpanded&&this.$nextTick(()=>{let e=this.$refs.progressContainer;e&&(e.scrollTop=e.scrollHeight)})}}}}),u("iqgMR",function(e,t){o(e.exports,"render",function(){return k}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i=["title"],s={class:"progress-title"},l={key:0,src:"/static/assets/img/evie_working.webp",alt:"Bezig met verwerken...",class:"progress-icon working-animation"},a={key:1,class:"spinner progress-icon"},u={key:2,class:"status-icon error progress-icon"},d={key:3,class:"status-icon completed progress-icon"},p={key:4},h={key:5},f={key:6},g={class:"progress-toggle"},m={key:0,class:"progress-error"},y={key:1,ref:"progressContainer",class:"progress-content"},x={key:1,class:"progress-icon-only"},b={key:2,class:"progress-error-only"};function k(e,t,o,c,k,S){return S.shouldShowFullTracker?((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:0,class:(0,r.normalizeClass)(["progress-tracker",{expanded:k.isExpanded,completed:k.isCompleted&&!k.hasError,error:k.error||k.hasError,"input-area":o.isInInputArea}])},[(0,n.createElementVNode)("div",{class:"progress-header",onClick:t[0]||(t[0]=(...e)=>S.toggleExpand&&S.toggleExpand(...e)),title:k.isExpanded?"Inklappen":"Uitklappen voor volledige voortgang"},[(0,n.createElementVNode)("div",s,[S.isProcessing?((0,n.openBlock)(),(0,n.createElementBlock)("img",l)):k.connecting?((0,n.openBlock)(),(0,n.createElementBlock)("span",a)):k.error?((0,n.openBlock)(),(0,n.createElementBlock)("span",u,"✗")):k.isCompleted?((0,n.openBlock)(),(0,n.createElementBlock)("span",d,"✓")):(0,n.createCommentVNode)("",!0),k.error?((0,n.openBlock)(),(0,n.createElementBlock)("span",p,(0,r.toDisplayString)(S.errorText),1)):k.isCompleted?((0,n.openBlock)(),(0,n.createElementBlock)("span",h,(0,r.toDisplayString)(S.completedText),1)):((0,n.openBlock)(),(0,n.createElementBlock)("span",f,(0,r.toDisplayString)(S.processingText),1))]),(0,n.createElementVNode)("div",g,(0,r.toDisplayString)(k.isExpanded?"▼":"◄"),1)],8,i),k.error?((0,n.openBlock)(),(0,n.createElementBlock)("div",m,(0,r.toDisplayString)(k.error),1)):(0,n.createCommentVNode)("",!0),k.isExpanded?((0,n.openBlock)(),(0,n.createElementBlock)("div",y,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(k.progressLines,(e,t)=>((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:t,class:"progress-line"},(0,r.toDisplayString)(e),1))),128))],512)):(0,n.createCommentVNode)("",!0)],2)):S.shouldShowProgressIconOnly?((0,n.openBlock)(),(0,n.createElementBlock)("div",x,t[1]||(t[1]=[(0,n.createElementVNode)("img",{src:"/static/assets/img/evie_working.webp",alt:"Bezig met verwerken...",class:"working-animation-only"},null,-1)]))):S.shouldShowError?((0,n.openBlock)(),(0,n.createElementBlock)("div",b,(0,r.toDisplayString)(k.error),1)):(0,n.createCommentVNode)("",!0)}}),u("kgXYb",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("9jZm8",function(e,t){o(e.exports,"render",function(){return N}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i=["data-message-id"],s={key:0,class:"message-content",style:{width:"100%"}},l={key:0,src:"/static/assets/img/eveai_logo.svg",alt:"EveAI",class:"ai-message-logo"},a={key:2,class:"form-display user-form-values"},u={key:3,class:"form-display ai-form-values",style:{"margin-top":"15px"}},d={class:"form-result-table"},p={key:0},h={colspan:"2"},f={class:"form-header"},g={key:0,class:"material-symbols-outlined"},m={class:"field-label"},y={class:"field-value"},x=["type","placeholder"],b=["placeholder","rows"],k={key:2,class:"form-select"},S=["value"],_={key:3,class:"toggle-switch"},w=["placeholder"],E=["innerHTML"],C={key:1,class:"message-content error-content"},T={key:0,src:"/static/assets/img/eveai_logo.svg",alt:"EveAI",class:"ai-message-logo"},A={class:"form-error"},O={key:2,class:"message-content"},M={key:0,src:"/static/assets/img/eveai_logo.svg",alt:"EveAI",class:"ai-message-logo"},D=["innerHTML"];function N(e,t,o,c,N,I){let L=(0,n.resolveComponent)("progress-tracker"),V=(0,n.resolveComponent)("dynamic-form");return(0,n.openBlock)(),(0,n.createElementBlock)("div",{class:(0,r.normalizeClass)(I.getMessageClass()),"data-message-id":o.message.id},["text"===o.message.type?((0,n.openBlock)(),(0,n.createElementBlock)("div",s,["ai"===o.message.sender?((0,n.openBlock)(),(0,n.createElementBlock)("img",l)):(0,n.createCommentVNode)("",!0),"ai"===o.message.sender&&o.message.taskId&&o.isLatestAiMessage?((0,n.openBlock)(),(0,n.createBlock)(L,{key:1,"task-id":o.message.taskId,"api-prefix":o.apiPrefix,"is-latest-ai-message":o.isLatestAiMessage,"is-in-input-area":o.isInInputArea,class:"message-progress",onSpecialistComplete:I.handleSpecialistComplete,onSpecialistError:I.handleSpecialistError},null,8,["task-id","api-prefix","is-latest-ai-message","is-in-input-area","onSpecialistComplete","onSpecialistError"])):(0,n.createCommentVNode)("",!0),I.hasMeaningfulFormValues(o.message)?((0,n.openBlock)(),(0,n.createElementBlock)("div",a,[(0,n.createVNode)(V,{"form-data":o.message.formData,"form-values":o.message.formValues,"api-prefix":o.apiPrefix,"read-only":!0,"hide-actions":"",class:"message-form user-form"},null,8,["form-data","form-values","api-prefix"])])):(0,n.createCommentVNode)("",!0),o.message.formData&&"ai"===o.message.sender?((0,n.openBlock)(),(0,n.createElementBlock)("div",u,[(0,n.createElementVNode)("table",d,[o.message.formData.title||o.message.formData.name||o.message.formData.icon?((0,n.openBlock)(),(0,n.createElementBlock)("thead",p,[(0,n.createElementVNode)("tr",null,[(0,n.createElementVNode)("th",h,[(0,n.createElementVNode)("div",f,[o.message.formData.icon?((0,n.openBlock)(),(0,n.createElementBlock)("span",g,(0,r.toDisplayString)(o.message.formData.icon),1)):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("span",null,(0,r.toDisplayString)(o.message.formData.title||o.message.formData.name),1)])])])])):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("tbody",null,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.message.formData.fields,(e,i)=>((0,n.openBlock)(),(0,n.createElementBlock)("tr",{key:i},[(0,n.createElementVNode)("td",m,(0,r.toDisplayString)(e.name)+":",1),(0,n.createElementVNode)("td",y,["str"===e.type||"string"===e.type||"int"===e.type||"integer"===e.type||"float"===e.type?((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:0,type:"int"===e.type||"integer"===e.type||"float"===e.type?"number":"text",placeholder:e.placeholder||"",class:"form-input"},null,8,x)):"text"===e.type?((0,n.openBlock)(),(0,n.createElementBlock)("textarea",{key:1,placeholder:e.placeholder||"",rows:e.rows||3,class:"form-textarea"},null,8,b)):"enum"===e.type?((0,n.openBlock)(),(0,n.createElementBlock)("select",k,[t[1]||(t[1]=(0,n.createElementVNode)("option",{value:""},"Selecteer een optie",-1)),((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(e.allowedValues||e.allowed_values||[],e=>((0,n.openBlock)(),(0,n.createElementBlock)("option",{key:e,value:e},(0,r.toDisplayString)(e),9,S))),128))])):"boolean"===e.type?((0,n.openBlock)(),(0,n.createElementBlock)("div",_,t[2]||(t[2]=[(0,n.createElementVNode)("input",{type:"checkbox",class:"toggle-input"},null,-1),(0,n.createElementVNode)("span",{class:"toggle-slider"},[(0,n.createElementVNode)("span",{class:"toggle-knob"})],-1)]))):((0,n.openBlock)(),(0,n.createElementBlock)("input",{key:4,type:"text",placeholder:e.placeholder||"",class:"form-input"},null,8,w))])]))),128))])])])):(0,n.createCommentVNode)("",!0),o.message.content?((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:4,class:"message-text",innerHTML:I.formatMessage(o.message.content)},null,8,E)):(0,n.createCommentVNode)("",!0)])):"error"===o.message.type?((0,n.openBlock)(),(0,n.createElementBlock)("div",C,["ai"===o.message.sender?((0,n.openBlock)(),(0,n.createElementBlock)("img",T)):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",A,(0,r.toDisplayString)(o.message.content),1),o.message.retryable?((0,n.openBlock)(),(0,n.createElementBlock)("button",{key:1,onClick:t[0]||(t[0]=t=>e.$emit("retry-message",o.message.id)),class:"retry-btn"},(0,r.toDisplayString)(c.messageTexts.retry),1)):(0,n.createCommentVNode)("",!0)])):((0,n.openBlock)(),(0,n.createElementBlock)("div",O,["ai"===o.message.sender?((0,n.openBlock)(),(0,n.createElementBlock)("img",M)):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",{class:"message-text",innerHTML:I.formatMessage(o.message.content)},null,8,D)]))],10,i)}}),u("JObLi",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("dv6Fl",function(e,t){o(e.exports,"render",function(){return x}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO"),i=c("fNp5a");let s={class:"chat-input-container"},l={key:0,class:"active-ai-message-area"},a={key:1,class:"dynamic-form-container"},u={key:0,style:{color:"red",padding:"10px"}},d={key:2,class:"chat-input"},p={class:"input-main"},h=["placeholder","disabled","maxlength"],f={class:"input-actions"},g=["disabled"],m={key:0,class:"loading-spinner"},y={key:1,width:"20",height:"20",viewBox:"0 0 24 24",fill:"currentColor"};function x(e,t,o,c,x,b){let k=(0,n.resolveComponent)("chat-message"),S=(0,n.resolveComponent)("dynamic-form");return(0,n.openBlock)(),(0,n.createElementBlock)("div",s,[o.activeAiMessage?((0,n.openBlock)(),(0,n.createElementBlock)("div",l,[(0,n.createVNode)(k,{message:o.activeAiMessage,"is-submitting-form":!1,"api-prefix":o.apiPrefix,"is-latest-ai-message":!0,"is-in-input-area":!0,onImageLoaded:b.handleImageLoaded,onSpecialistComplete:t[0]||(t[0]=t=>e.$emit("specialist-complete",t)),onSpecialistError:t[1]||(t[1]=t=>e.$emit("specialist-error",t))},null,8,["message","api-prefix","onImageLoaded"])])):(0,n.createCommentVNode)("",!0),o.formData?((0,n.openBlock)(),(0,n.createElementBlock)("div",a,[o.formData.fields?(0,n.createCommentVNode)("",!0):((0,n.openBlock)(),(0,n.createElementBlock)("div",u,"Fout: Geen velden gevonden in formulier")),o.formData&&o.formData.fields?((0,n.openBlock)(),(0,n.createBlock)(S,{key:1,"form-data":o.formData,"form-values":x.formValues,"api-prefix":o.apiPrefix,"is-submitting":o.isLoading,"show-send-button":!0,"is-submitting-form":o.isLoading,"send-button-text":"Verstuur formulier","onUpdate:formValues":b.updateFormValues,onFormEnterPressed:b.sendMessage,onFormSendSubmit:b.handleFormSendSubmit},null,8,["form-data","form-values","api-prefix","is-submitting","is-submitting-form","onUpdate:formValues","onFormEnterPressed","onFormSendSubmit"])):(0,n.createCommentVNode)("",!0)])):(0,n.createCommentVNode)("",!0),o.formData?(0,n.createCommentVNode)("",!0):((0,n.openBlock)(),(0,n.createElementBlock)("div",d,[(0,n.createElementVNode)("div",p,[(0,n.withDirectives)((0,n.createElementVNode)("textarea",{ref:"messageInput","onUpdate:modelValue":t[2]||(t[2]=e=>x.localMessage=e),onKeydown:t[3]||(t[3]=(...e)=>b.handleKeydown&&b.handleKeydown(...e)),placeholder:x.translatedPlaceholder,rows:"1",disabled:o.isLoading,maxlength:o.maxLength,class:(0,r.normalizeClass)(["message-input",{"over-limit":b.isOverLimit}])},null,42,h),[[i.vModelText,x.localMessage]]),o.maxLength?((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:0,class:(0,r.normalizeClass)(["character-counter",{"over-limit":b.isOverLimit}])},(0,r.toDisplayString)(b.characterCount)+"/"+(0,r.toDisplayString)(o.maxLength),3)):(0,n.createCommentVNode)("",!0)]),(0,n.createElementVNode)("div",f,[(0,n.createElementVNode)("button",{onClick:t[4]||(t[4]=(...e)=>b.sendMessage&&b.sendMessage(...e)),class:"send-btn",disabled:!b.canSend,title:"Verstuur bericht"},[o.isLoading?((0,n.openBlock)(),(0,n.createElementBlock)("span",m,"⏳")):((0,n.openBlock)(),(0,n.createElementBlock)("svg",y,t[5]||(t[5]=[(0,n.createElementVNode)("path",{d:"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"},null,-1)])))],8,g)])]))])}}),u("dOnmI",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("dwb6L",function(e,t){i(e.exports),o(e.exports,"default",function(){return l});var n=c("lVdl4"),r=c("aNcdg"),s=c("dbYH6"),l={name:"MessageHistory",components:{"chat-message":n.default,"typing-indicator":r.default},setup(){let{translateSafe:e}=(0,s.useTranslationClient)();return{translateSafe:e}},props:{messages:{type:Array,default:()=>[]},isTyping:{type:Boolean,default:!1},isSubmittingForm:{type:Boolean,default:!1},apiPrefix:{type:String,default:""},autoScroll:{type:Boolean,default:!0}},emits:["load-more","specialist-complete","specialist-error"],data:()=>({isAtBottom:!0,showScrollButton:!1,unreadCount:0,languageChangeHandler:null}),computed:{normalMessages(){return this.messages.filter(e=>!e.isTemporarilyAtBottom)}},watch:{messages:{handler(e,t){let n=e.length>(t?.length||0);this.autoScroll&&n&&this.$nextTick(()=>{this.$nextTick(()=>{this.scrollToBottom(!0)})})},deep:!0,immediate:!1},isTyping(e){e&&this.autoScroll&&this.$nextTick(()=>{this.scrollToBottom()})}},created(){this.languageChangeHandler=e=>{e.detail&&e.detail.language&&this.handleLanguageChange(e)},document.addEventListener("language-changed",this.languageChangeHandler)},mounted(){this.setupScrollListener(),this.autoScroll&&this.$nextTick(()=>{this.scrollToBottom()})},beforeUnmount(){let e=this.$refs.messagesContainer;e&&e.removeEventListener("scroll",this.handleScroll),this.languageChangeHandler&&document.removeEventListener("language-changed",this.languageChangeHandler)},methods:{async handleLanguageChange(e){if(1===this.messages.length&&"ai"===this.messages[0].sender){let t=this.messages[0];if(t.content){t.originalContent||(t.originalContent=t.content),console.log("Originele inhoud van eerste AI bericht:",t.originalContent),console.log("Content eerste AI bericht:",t.content),console.log("Vertaling van eerste AI bericht naar:",e.detail.language);try{let n=await this.translateSafe(t.originalContent,e.detail.language,{context:"chat_message",apiPrefix:this.apiPrefix,fallbackText:t.originalContent});t.content=n,console.log("Eerste bericht succesvol vertaald")}catch(e){console.error("Fout bij vertalen eerste bericht:",e),t.content=t.originalContent}}}},scrollToBottom(e=!1){let t=this.$refs.messagesContainer;t&&requestAnimationFrame(()=>{t.scrollTop=t.scrollHeight,this.isAtBottom=!0,this.showScrollButton=!1,this.unreadCount=0})},setupScrollListener(){let e=this.$refs.messagesContainer;e&&e.addEventListener("scroll",this.handleScroll)},handleScroll(){let e=this.$refs.messagesContainer;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<50;this.isAtBottom=t,0===e.scrollTop&&this.$emit("load-more")},handleImageLoaded(){this.isAtBottom&&this.$nextTick(()=>this.scrollToBottom())},searchMessages(e){if(!e.trim())return this.messages;let t=e.toLowerCase();return this.messages.filter(e=>e.content&&e.content.toLowerCase().includes(t))},isLatestAiMessage(e){if("ai"!==e.sender||!e.taskId)return!1;for(let t=this.messages.length-1;t>=0;t--){let n=this.messages[t];if("ai"===n.sender&&n.taskId)return n.id===e.id}return!1}}}}),u("aNcdg",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("4QSxf")).__esModule&&(n=n.default),n.render=c("lDgl1").render,n.__cssModules={},c("8dpGK").default(n),n.__scopeId="data-v-a78025",n.__file="TypingIndicator.vue";var r=n}),u("4QSxf",function(e,t){i(e.exports),o(e.exports,"default",function(){return n});var n={name:"TypingIndicator",props:{showText:{type:Boolean,default:!1},text:{type:String,default:"Bezig met typen..."}},methods:{}}}),u("lDgl1",function(e,t){o(e.exports,"render",function(){return l}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i={class:"typing-indicator"},s={key:0,class:"typing-text"};function l(e,t,o,l,a,c){return(0,n.openBlock)(),(0,n.createElementBlock)("div",i,[t[0]||(t[0]=(0,n.createElementVNode)("div",{class:"typing-dot"},null,-1)),t[1]||(t[1]=(0,n.createElementVNode)("div",{class:"typing-dot"},null,-1)),t[2]||(t[2]=(0,n.createElementVNode)("div",{class:"typing-dot"},null,-1)),o.showText?((0,n.openBlock)(),(0,n.createElementBlock)("div",s,(0,r.toDisplayString)(o.text),1)):(0,n.createCommentVNode)("",!0)])}}),u("8dpGK",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("3LFpJ",function(e,t){o(e.exports,"render",function(){return u}),c("iJXGE");var n=c("iADb3");let r={class:"message-history-container"},i={class:"chat-messages",ref:"messagesContainer"},s={key:0,class:"load-more-indicator"},l={class:"messages-wrapper"},a={key:0,class:"empty-state"};function u(e,t,o,c,u,d){let p=(0,n.resolveComponent)("chat-message"),h=(0,n.resolveComponent)("typing-indicator");return(0,n.openBlock)(),(0,n.createElementBlock)("div",r,[(0,n.createElementVNode)("div",i,[e.$slots.loading?((0,n.openBlock)(),(0,n.createElementBlock)("div",s,[(0,n.renderSlot)(e.$slots,"loading")])):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",l,[0===d.normalMessages.length?((0,n.openBlock)(),(0,n.createElementBlock)("div",a,t[2]||(t[2]=[(0,n.createElementVNode)("div",{class:"empty-icon"},"\uD83D\uDCAC",-1),(0,n.createElementVNode)("div",{class:"empty-text"},"Nog geen berichten",-1),(0,n.createElementVNode)("div",{class:"empty-subtext"},"Start een gesprek door een bericht te typen!",-1)]))):(0,n.createCommentVNode)("",!0),d.normalMessages.length>0?((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,{key:1},(0,n.renderList)(d.normalMessages,(r,i)=>((0,n.openBlock)(),(0,n.createBlock)(p,{key:r.id,message:r,"is-submitting-form":o.isSubmittingForm,"api-prefix":o.apiPrefix,"is-latest-ai-message":d.isLatestAiMessage(r),onImageLoaded:d.handleImageLoaded,onSpecialistComplete:t[0]||(t[0]=t=>e.$emit("specialist-complete",t)),onSpecialistError:t[1]||(t[1]=t=>e.$emit("specialist-error",t))},null,8,["message","is-submitting-form","api-prefix","is-latest-ai-message","onImageLoaded"]))),128)):(0,n.createCommentVNode)("",!0),o.isTyping?((0,n.openBlock)(),(0,n.createBlock)(h,{key:2})):(0,n.createCommentVNode)("",!0)])],512)])}}),u("6hDPH",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("eu21N",function(e,t){i(e.exports),o(e.exports,"default",function(){return n});var n={name:"FormMessage",props:{formData:{type:Object,required:!0},formValues:{type:Object,required:!0}},computed:{hasFormData(){return!!this.formData&&!!this.formData.fields&&0!==Object.keys(this.formData.fields).length&&!!this.formValues&&0!==Object.keys(this.formValues).length&&Object.entries(this.formValues).some(([e,t])=>!!this.formData.fields[e]&&null!=t&&("string"!=typeof t||""!==t.trim())&&("boolean"==typeof t||!Array.isArray(t)||0!==t.length))},formattedFields(){return this.hasFormData?Object.entries(this.formData.fields).map(([e,t])=>{let n=this.formValues[e]||"";return"boolean"===t.type?n=n?"Ja":"Nee":"enum"===t.type&&!n&&t.default?n=t.default:t.type,{id:e,name:t.name,value:n||"-",type:t.type}}):[]}}}}),u("8lvfw",function(e,t){o(e.exports,"render",function(){return p}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i={key:0,class:"form-message"},s={key:0,class:"form-message-header"},l={key:0,class:"material-icons form-message-icon"},a={class:"form-message-title"},u={class:"form-message-fields"},d={class:"field-message-label"};function p(e,t,o,c,p,h){return h.hasFormData?((0,n.openBlock)(),(0,n.createElementBlock)("div",i,[o.formData.name?((0,n.openBlock)(),(0,n.createElementBlock)("div",s,[o.formData.icon?((0,n.openBlock)(),(0,n.createElementBlock)("i",l,(0,r.toDisplayString)(o.formData.icon),1)):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("span",a,(0,r.toDisplayString)(o.formData.name),1)])):(0,n.createCommentVNode)("",!0),(0,n.createElementVNode)("div",u,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(h.formattedFields,e=>((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:e.id,class:"form-message-field"},[(0,n.createElementVNode)("div",d,(0,r.toDisplayString)(e.name)+":",1),(0,n.createElementVNode)("div",{class:(0,r.normalizeClass)(["field-message-value",{"text-value":"text"===e.type}])},(0,r.toDisplayString)(e.value),3)]))),128))])])):(0,n.createCommentVNode)("",!0)}}),u("4boaj",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("a5zVu",function(e,t){i(e.exports),o(e.exports,"default",function(){return u}),c("iJXGE");var n=c("6Ys9M"),r=c("8mYn2"),s=c("fE2o0"),l=c("2Fvhx"),a=c("74rhm"),u={__name:"SideBar",props:{tenantMake:{type:Object,default:()=>({name:"",logo_url:"",subtitle:""})},explanationText:{type:String,default:""},initialLanguage:{type:String,default:"en"},supportedLanguageDetails:{type:Object,default:()=>({})},allowedLanguages:{type:Array,default:()=>["nl","en","fr","de"]},apiPrefix:{type:String,default:""}},emits:["language-changed"],setup(e,{expose:t,emit:i}){t();let o=(0,n.ref)(e.initialLanguage),c={props:e,emit:i,currentLanguage:o,handleLanguageChange:e=>{o.value=e,i("language-changed",e);let t=new CustomEvent("language-changed",{detail:{language:e}});document.dispatchEvent(t),window.chatConfig&&(window.chatConfig.language=e),localStorage.setItem("preferredLanguage",e)},ref:n.ref,SideBarLogo:r.default,SideBarMakeName:s.default,LanguageSelector:l.default,SideBarExplanation:a.default};return Object.defineProperty(c,"__isScriptSetup",{enumerable:!1,value:!0}),c}}}),u("8mYn2",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("hXIpp")).__esModule&&(n=n.default),n.render=c("gx6nd").render,n.__cssModules={},c("5UKHP").default(n),n.__scopeId="data-v-a176c5",n.__file="SideBarLogo.vue";var r=n}),u("hXIpp",function(e,t){i(e.exports),o(e.exports,"default",function(){return r}),c("iJXGE");var n=c("iADb3"),r={__name:"SideBarLogo",props:{logoUrl:{type:String,default:""},makeName:{type:String,default:"Logo"}},setup(e,{expose:t}){t();let r=(0,n.computed)(()=>e.makeName||"Logo"),i=(0,n.computed)(()=>e.makeName.split(" ").map(e=>e.charAt(0)).join("").toUpperCase().slice(0,2)),o={props:e,altText:r,makeNameInitials:i,handleImageError:()=>{console.warn("Logo image failed to load:",e.logoUrl)},computed:n.computed};return Object.defineProperty(o,"__isScriptSetup",{enumerable:!1,value:!0}),o}}}),u("gx6nd",function(e,t){o(e.exports,"render",function(){return a}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i={class:"sidebar-logo"},s=["src","alt"],l={key:1,class:"logo-placeholder"};function a(e,t,o,a,c,u){return(0,n.openBlock)(),(0,n.createElementBlock)("div",i,[o.logoUrl?((0,n.openBlock)(),(0,n.createElementBlock)("img",{key:0,src:o.logoUrl,alt:a.altText,onError:a.handleImageError,class:"logo-image"},null,40,s)):((0,n.openBlock)(),(0,n.createElementBlock)("div",l,(0,r.toDisplayString)(a.makeNameInitials),1))])}}),u("5UKHP",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("fE2o0",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("iUbOW")).__esModule&&(n=n.default),n.render=c("dwG21").render,n.__cssModules={},c("kv4Xd").default(n),n.__scopeId="data-v-4a3e46",n.__file="SideBarMakeName.vue";var r=n}),u("iUbOW",function(e,t){i(e.exports),o(e.exports,"default",function(){return n});var n={__name:"SideBarMakeName",props:{makeName:{type:String,default:""},subtitle:{type:String,default:""}},setup(e,{expose:t}){t();let n={props:e};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}}}),u("dwG21",function(e,t){o(e.exports,"render",function(){return a}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO");let i={class:"sidebar-make-name"},s={class:"make-name-text"},l={key:0,class:"make-subtitle"};function a(e,t,o,a,c,u){return(0,n.openBlock)(),(0,n.createElementBlock)("div",i,[(0,n.createElementVNode)("h2",s,(0,r.toDisplayString)(o.makeName),1),o.subtitle?((0,n.openBlock)(),(0,n.createElementBlock)("div",l,(0,r.toDisplayString)(o.subtitle),1)):(0,n.createCommentVNode)("",!0)])}}),u("kv4Xd",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("2Fvhx",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("lfk1t")).__esModule&&(n=n.default),n.render=c("esoaL").render,n.__cssModules={},c("6VrmS").default(n),n.__scopeId="data-v-d9b7e3",n.__file="LanguageSelector.vue";var r=n}),u("74rhm",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("21iAy")).__esModule&&(n=n.default),n.render=c("8yqvh").render,n.__cssModules={},c("8Ousb").default(n),n.__scopeId="data-v-313065",n.__file="SideBarExplanation.vue";var r=n}),u("21iAy",function(e,t){i(e.exports),o(e.exports,"default",function(){return l}),c("iJXGE");var n=c("iADb3"),r=c("6Ys9M"),s=c("lfo9i"),l={__name:"SideBarExplanation",props:{originalText:{type:String,default:""},currentLanguage:{type:String,default:"en"},apiPrefix:{type:String,default:""}},setup(e,{expose:t}){t();let i={explanation:e.originalText||""},{texts:o,isLoading:l,error:a,currentLanguage:c}=(0,s.useComponentTranslations)("sidebar_explanation",i),u=(0,n.computed)(()=>o.value?.explanation||e.originalText),d=(0,n.computed)(()=>u.value?"function"==typeof window.marked?window.marked(u.value):window.marked&&"function"==typeof window.marked.parse?window.marked.parse(u.value.replace(/\[\[(.*?)\]\]/g,"$1 ")):u.value:"");(0,n.watch)(()=>e.originalText,e=>{console.log("SideBarExplanation: Original text changed to:",e)},{immediate:!0});let p={props:e,originalTexts:i,translations:o,isLoading:l,error:a,currentLanguage:c,translatedText:u,renderedExplanation:d,ref:r.ref,computed:n.computed,watch:n.watch,onMounted:n.onMounted,get useComponentTranslations(){return s.useComponentTranslations}};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}}}),u("8yqvh",function(e,t){o(e.exports,"render",function(){return l}),c("iJXGE");var n=c("iADb3");let r={class:"sidebar-explanation"},i={key:0,class:"explanation-loading"},s=["innerHTML"];function l(e,t,o,l,a,c){return(0,n.openBlock)(),(0,n.createElementBlock)("div",r,[l.isLoading?((0,n.openBlock)(),(0,n.createElementBlock)("div",i," \uD83D\uDD04 Translating... ")):((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:1,class:"explanation-content",innerHTML:l.renderedExplanation},null,8,s))])}}),u("8Ousb",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("1xcVN",function(e,t){o(e.exports,"render",function(){return i}),c("iJXGE");var n=c("iADb3");let r={class:"sidebar"};function i(e,t,i,o,s,l){return(0,n.openBlock)(),(0,n.createElementBlock)("div",r,[(0,n.createVNode)(o.SideBarLogo,{"logo-url":i.tenantMake.logo_url,"make-name":i.tenantMake.name},null,8,["logo-url","make-name"]),(0,n.createVNode)(o.SideBarMakeName,{"make-name":i.tenantMake.name,subtitle:i.tenantMake.subtitle},null,8,["make-name","subtitle"]),(0,n.createVNode)(o.LanguageSelector,{"initial-language":i.initialLanguage,"current-language":o.currentLanguage,"supported-language-details":i.supportedLanguageDetails,"allowed-languages":i.allowedLanguages,onLanguageChanged:o.handleLanguageChange},null,8,["initial-language","current-language","supported-language-details","allowed-languages"]),(0,n.createVNode)(o.SideBarExplanation,{"original-text":i.explanationText,"current-language":o.currentLanguage,"api-prefix":i.apiPrefix},null,8,["original-text","current-language","api-prefix"])])}}),u("dm1Go",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("boghT",function(e,t){i(e.exports),o(e.exports,"default",function(){return l}),c("iJXGE");var n=c("6Ys9M"),r=c("8mYn2"),s=c("2Fvhx"),l={__name:"MobileHeader",props:{tenantMake:{type:Object,default:()=>({name:"",logo_url:"",subtitle:""})},initialLanguage:{type:String,default:"en"},supportedLanguageDetails:{type:Object,default:()=>({})},allowedLanguages:{type:Array,default:()=>["nl","en","fr","de"]},apiPrefix:{type:String,default:""}},emits:["language-changed"],setup(e,{expose:t,emit:i}){t();let o=(0,n.ref)(e.initialLanguage),l={props:e,emit:i,currentLanguage:o,handleLanguageChange:e=>{o.value=e,i("language-changed",e);let t=new CustomEvent("language-changed",{detail:{language:e}});document.dispatchEvent(t),window.chatConfig&&(window.chatConfig.language=e),localStorage.setItem("preferredLanguage",e)},ref:n.ref,SideBarLogo:r.default,LanguageSelector:s.default};return Object.defineProperty(l,"__isScriptSetup",{enumerable:!1,value:!0}),l}}}),u("8szg8",function(e,t){o(e.exports,"render",function(){return i}),c("iJXGE");var n=c("iADb3");let r={class:"mobile-header"};function i(e,t,i,o,s,l){return(0,n.openBlock)(),(0,n.createElementBlock)("div",r,[(0,n.createVNode)(o.SideBarLogo,{"logo-url":i.tenantMake.logo_url,"make-name":i.tenantMake.name,class:"mobile-logo"},null,8,["logo-url","make-name"]),(0,n.createVNode)(o.LanguageSelector,{"initial-language":i.initialLanguage,"current-language":o.currentLanguage,"supported-language-details":i.supportedLanguageDetails,"allowed-languages":i.allowedLanguages,onLanguageChanged:o.handleLanguageChange,class:"mobile-language-selector"},null,8,["initial-language","current-language","supported-language-details","allowed-languages"])])}}),u("1nK46",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("6jOml",function(e,t){i(e.exports),o(e.exports,"default",function(){return m});var n=c("aNcdg"),r=c("70gdv"),s=c("9J6tU"),l=c("lVdl4"),a=c("1MYs0"),u=c("3b050");c("2Fvhx");var d=c("2TN9T"),p=c("8IlHR"),h=c("lfo9i"),f=c("8L4n2");c("iJXGE");var g=c("iADb3"),m={name:"ChatApp",components:{TypingIndicator:n.default,FormField:r.default,DynamicForm:s.default,ChatMessage:l.default,MessageHistory:a.default,ProgressTracker:u.default,ChatInput:d.default,ContentModal:p.default},setup(){let e=window.chatConfig?.language||"nl",t=window.chatConfig?.apiPrefix||"",n=(0,h.createLanguageProvider)(e,t),r=(0,f.provideContentModal)();return(0,g.provide)(h.LANGUAGE_PROVIDER_KEY,n),{languageProvider:n,contentModal:r}},data(){let e=window.chatConfig||{},t=e.settings||{},n=e.language||"en",r=e.explanation||"",i=e.tenantMake||{};return{tenantName:i.name||"EveAI",tenantLogoUrl:i.logo_url||"",currentLanguage:n,supportedLanguageDetails:e.supportedLanguageDetails||{},allowedLanguages:e.allowedLanguages||["nl","en","fr","de"],supportedLanguages:e.supportedLanguages||[],originalExplanation:r,explanation:e.explanation||"",currentMessage:"",allMessages:[],isTyping:!1,isLoading:!1,isSubmittingForm:!1,messageIdCounter:1,formValues:{},currentInputFormData:null,apiPrefix:e.apiPrefix||"",conversationId:e.conversationId||"default",userId:e.userId||null,userName:e.userName||"",settings:{maxMessageLength:t.maxMessageLength||2e3,allowFileUpload:!0===t.allowFileUpload,allowVoiceMessage:!0===t.allowVoiceMessage,autoScroll:!0===t.autoScroll},isMobile:window.innerWidth<=768,showSidebar:window.innerWidth>768,messageSearch:"",filteredMessages:[],isSearching:!1}},computed:{compiledExplanation(){return"function"==typeof marked?marked(this.explanation):marked&&"function"==typeof marked.parse?marked.parse(this.explanation.replace(/\[\[(.*?)\]\]/g,"$1 ")):(console.error("Marked library not properly loaded"),this.explanation)},displayMessages(){return this.isSearching?this.filteredMessages:this.allMessages},activeAiMessage(){return this.allMessages.find(e=>e.isTemporarilyAtBottom)},hasMessages(){return this.allMessages.length>0},displayLanguages(){return this.supportedLanguages&&this.allowedLanguages?this.supportedLanguages.filter(e=>this.allowedLanguages.includes(e.code)):[]}},mounted(){this.initializeChat(),this.setupEventListeners()},beforeUnmount(){this.cleanup()},methods:{initializeChat(){console.log("Initializing chat application..."),this.loadHistoricalMessages(),console.log("Nr of messages:",this.allMessages.length),0===this.allMessages.length&&this.addWelcomeMessage(),this.$nextTick(()=>{this.focusChatInput()})},loadHistoricalMessages(){let e=(window.chatConfig||{}).messages||[];e.length>0&&(this.allMessages=e.filter(e=>null!=e).map(e=>({id:this.messageIdCounter++,content:"string"==typeof e?e:e.content||"",sender:e.sender||"ai",type:e.type||"text",timestamp:e.timestamp||new Date().toISOString(),formData:e.formData||null,status:e.status||"delivered"})),console.log(`Loaded ${this.allMessages.length} historical messages`))},async addWelcomeMessage(){console.log("Sending initialize message to backend"),this.isTyping=!0,this.isLoading=!0,console.log("API prefix:",this.apiPrefix);try{let e=await fetch(`${this.apiPrefix}/api/send_message`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:"Initialize",language:this.currentLanguage,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})});if(!e.ok)throw Error(`HTTP error! status: ${e.status}`);let t=await e.json();if(console.log("Initialize response:",t),t.task_id){let e={id:this.messageIdCounter++,content:"Bezig met laden...",sender:"ai",type:"text",timestamp:new Date().toISOString(),taskId:t.task_id,status:"processing",isTemporarilyAtBottom:!0};this.allMessages.push(e)}}catch(e){console.error("Error sending initialize message:",e),this.addMessage({content:"Er is een fout opgetreden bij het initialiseren van de chat.",sender:"ai",type:"error"})}finally{this.isTyping=!1,this.isLoading=!1}},repositionLatestAiMessage(){let e=this.allMessages.find(e=>"ai"===e.sender&&e.taskId&&e.isTemporarilyAtBottom);e&&(e.isTemporarilyAtBottom=!1,console.log("AI message returned to normal flow position"))},addMessage(e){let t={id:this.messageIdCounter++,content:e.content||"",sender:e.sender||"user",type:e.type||"text",timestamp:e.timestamp||new Date().toISOString(),formData:e.formData||null,formValues:e.formValues||null,status:e.status||"delivered"};return this.allMessages.push(t),this.$nextTick(()=>{this.scrollToBottom()}),t},async sendMessage(){if(!this.currentMessage.trim()&&!this.currentInputFormData)return;console.log("Sending message:",this.currentMessage),this.repositionLatestAiMessage(),this.addMessage({content:this.currentMessage,sender:"user",formData:this.currentInputFormData,formValues:this.formValues});let e=this.currentMessage,t={...this.formValues};this.currentMessage="",this.formValues={},this.currentInputFormData=null,this.isTyping=!0,this.isLoading=!0;try{let n=await fetch(`${this.apiPrefix}/api/send_message`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({message:e,form_values:Object.keys(t).length>0?t:void 0,language:this.currentLanguage,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone})});if(!n.ok)throw Error(`HTTP error! status: ${n.status}`);let r=await n.json();if(console.log("Send message response:",r),r.task_id){let e={id:this.messageIdCounter++,sender:"ai",type:"text",timestamp:new Date().toISOString(),taskId:r.task_id,status:"processing",isTemporarilyAtBottom:!0};this.allMessages.push(e)}}catch(e){console.error("Error sending message:",e),this.addMessage({content:"Er is een fout opgetreden bij het verzenden van het bericht.",sender:"ai",type:"error"})}finally{this.isTyping=!1,this.isLoading=!1}},updateCurrentMessage(e){this.currentMessage=e},submitFormFromInput(e){console.log("Form submitted from input:",e),this.formValues=e,this.sendMessage()},handleFileUpload(e){console.log("File upload:",e)},handleVoiceRecord(e){console.log("Voice record:",e)},setupEventListeners(){document.addEventListener("language-changed",e=>{e.detail&&e.detail.language&&(this.currentLanguage=e.detail.language,console.log(`Language changed to: ${this.currentLanguage}`))}),window.addEventListener("resize",()=>{this.isMobile=window.innerWidth<=768,this.showSidebar=window.innerWidth>768})},cleanup(){document.removeEventListener("language-changed",this.handleLanguageChange),window.removeEventListener("resize",this.handleResize)},handleSpecialistComplete(e){console.log("Specialist complete event received:",e);let t=this.allMessages.findIndex(t=>t.taskId===e.taskId);-1!==t&&(this.allMessages[t].content=e.answer,this.allMessages[t].status="completed",e.form_request&&(console.log("Form request received:",e.form_request),this.currentInputFormData=e.form_request)),this.isTyping=!1,this.isLoading=!1},handleSpecialistError(e){console.log("Specialist error event received:",e);let t=this.allMessages.findIndex(t=>t.taskId===e.taskId);-1!==t&&(this.allMessages[t].content=e.message||"Er is een fout opgetreden.",this.allMessages[t].type="error",this.allMessages[t].status="error"),this.isTyping=!1,this.isLoading=!1},scrollToBottom(){this.$refs.messageHistory&&this.$refs.messageHistory.scrollToBottom()},focusChatInput(){this.$refs.chatInput&&this.$refs.chatInput.focusInput()},searchMessages(e){if(!e.trim()){this.isSearching=!1,this.filteredMessages=[];return}this.isSearching=!0;let t=e.toLowerCase();this.filteredMessages=this.allMessages.filter(e=>e.content&&e.content.toLowerCase().includes(t))},clearSearch(){this.isSearching=!1,this.filteredMessages=[],this.messageSearch=""}}}}),u("1MYs0",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("dwb6L")).__esModule&&(n=n.default),n.render=c("3LFpJ").render,n.__cssModules={},c("6hDPH").default(n),n.__scopeId="data-v-be92bb",n.__file="MessageHistory.vue";var r=n}),u("2TN9T",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("13ZGu")).__esModule&&(n=n.default),n.render=c("dv6Fl").render,n.__cssModules={},c("dOnmI").default(n),n.__scopeId="data-v-490065",n.__file="ChatInput.vue";var r=n}),u("8IlHR",function(e,t){let n;o(e.exports,"default",function(){return r}),(n=c("6MRSm")).__esModule&&(n=n.default),n.render=c("1OZMc").render,n.__cssModules={},c("8PqrR").default(n),n.__scopeId="data-v-f4e5cd",n.__file="ContentModal.vue";var r=n}),u("6MRSm",function(e,t){i(e.exports),o(e.exports,"default",function(){return n});var n={name:"ContentModal",props:{show:{type:Boolean,default:!1},title:{type:String,default:"Content"},content:{type:String,default:""},version:{type:String,default:""},loading:{type:Boolean,default:!1},error:{type:Boolean,default:!1},errorMessage:{type:String,default:"Er is een fout opgetreden bij het laden van de content."}},emits:["close","retry"],computed:{renderedContent(){return this.content?"function"==typeof window.marked?window.marked(this.content):window.marked&&"function"==typeof window.marked.parse?window.marked.parse(this.content):(console.warn("Marked library not available, falling back to basic parsing"),this.content.replace(/^### (.*$)/gim,"$1 ").replace(/^## (.*$)/gim,"$1 ").replace(/^# (.*$)/gim,"$1 ").replace(/^\* (.*$)/gim,"$1 ").replace(/\*\*(.*)\*\*/gim,"$1 ").replace(/\*(.*)\*/gim,"$1 ").replace(/\n\n/gim,"").replace(/^(?!<[h|l|p])/gim,"
").replace(/(?)$/gim,"
").replace(/<\/p>/gim,"").replace(/
()/gim,"$1").replace(/(<\/h[1-6]>)<\/p>/gim,"$1").replace(/(
)/gim,"$1").replace(/(<\/li>)<\/p>/gim,"$1 ")):""}},methods:{closeModal(){this.$emit("close")},handleOverlayClick(){this.closeModal()},retryLoad(){this.$emit("retry")},handleEscapeKey(e){"Escape"===e.key&&this.show&&this.closeModal()}},mounted(){document.addEventListener("keydown",this.handleEscapeKey)},beforeUnmount(){document.removeEventListener("keydown",this.handleEscapeKey)}}}),u("1OZMc",function(e,t){o(e.exports,"render",function(){return y}),c("iJXGE");var n=c("iADb3"),r=c("fVHkO"),i=c("fNp5a");let s={class:"modal-header"},l={class:"modal-title"},a={class:"modal-body"},u={key:0,class:"loading-container"},d={key:1,class:"error-container"},p={key:2,class:"content-container"},h=["innerHTML"],f={key:0,class:"content-version"},g={key:3,class:"empty-container"},m={class:"modal-footer"};function y(e,t,o,c,y,x){return o.show?((0,n.openBlock)(),(0,n.createElementBlock)("div",{key:0,class:"modal-overlay",onClick:t[4]||(t[4]=(...e)=>x.handleOverlayClick&&x.handleOverlayClick(...e))},[(0,n.createElementVNode)("div",{class:"modal-dialog",onClick:t[3]||(t[3]=(0,i.withModifiers)(()=>{},["stop"]))},[(0,n.createElementVNode)("div",s,[(0,n.createElementVNode)("h4",l,(0,r.toDisplayString)(o.title),1),(0,n.createElementVNode)("button",{type:"button",class:"modal-close",onClick:t[0]||(t[0]=(...e)=>x.closeModal&&x.closeModal(...e)),"aria-label":"Close"},t[5]||(t[5]=[(0,n.createElementVNode)("span",{class:"material-icons"},"close",-1)]))]),(0,n.createElementVNode)("div",a,[o.loading?((0,n.openBlock)(),(0,n.createElementBlock)("div",u,t[6]||(t[6]=[(0,n.createElementVNode)("div",{class:"loading-spinner"},null,-1),(0,n.createElementVNode)("p",null,"Content wordt geladen...",-1)]))):o.error?((0,n.openBlock)(),(0,n.createElementBlock)("div",d,[t[7]||(t[7]=(0,n.createElementVNode)("div",{class:"error-icon"},[(0,n.createElementVNode)("span",{class:"material-icons"},"error_outline")],-1)),t[8]||(t[8]=(0,n.createElementVNode)("h5",null,"Fout bij het laden van content",-1)),(0,n.createElementVNode)("p",null,(0,r.toDisplayString)(o.errorMessage),1),(0,n.createElementVNode)("button",{type:"button",class:"btn btn-primary",onClick:t[1]||(t[1]=(...e)=>x.retryLoad&&x.retryLoad(...e))}," Opnieuw proberen ")])):o.content?((0,n.openBlock)(),(0,n.createElementBlock)("div",p,[(0,n.createElementVNode)("div",{class:"content-body",innerHTML:x.renderedContent},null,8,h),o.version?((0,n.openBlock)(),(0,n.createElementBlock)("div",f," Versie: "+(0,r.toDisplayString)(o.version),1)):(0,n.createCommentVNode)("",!0)])):((0,n.openBlock)(),(0,n.createElementBlock)("div",g,t[9]||(t[9]=[(0,n.createElementVNode)("p",null,"Geen content beschikbaar.",-1)])))]),(0,n.createElementVNode)("div",m,[(0,n.createElementVNode)("button",{type:"button",class:"btn btn-secondary",onClick:t[2]||(t[2]=(...e)=>x.closeModal&&x.closeModal(...e))}," Sluiten ")])])])):(0,n.createCommentVNode)("",!0)}}),u("8PqrR",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),u("1JmDG",function(e,t){o(e.exports,"render",function(){return i}),c("iJXGE");var n=c("iADb3");let r={class:"chat-app-container"};function i(e,t,i,o,s,l){let a=(0,n.resolveComponent)("message-history"),c=(0,n.resolveComponent)("chat-input"),u=(0,n.resolveComponent)("content-modal");return(0,n.openBlock)(),(0,n.createElementBlock)("div",r,[(0,n.createVNode)(a,{messages:l.displayMessages,"is-typing":s.isTyping,"is-submitting-form":s.isSubmittingForm,"api-prefix":s.apiPrefix,"auto-scroll":!0,onSpecialistError:l.handleSpecialistError,onSpecialistComplete:l.handleSpecialistComplete,ref:"messageHistory",class:"chat-messages-area"},null,8,["messages","is-typing","is-submitting-form","api-prefix","onSpecialistError","onSpecialistComplete"]),(0,n.createVNode)(c,{"current-message":s.currentMessage,"is-loading":s.isLoading,"max-length":2e3,"allow-file-upload":!0,"allow-voice-message":!1,"form-data":s.currentInputFormData,"active-ai-message":l.activeAiMessage,"api-prefix":s.apiPrefix,onSendMessage:l.sendMessage,onUpdateMessage:l.updateCurrentMessage,onUploadFile:l.handleFileUpload,onRecordVoice:l.handleVoiceRecord,onSubmitForm:l.submitFormFromInput,onSpecialistError:l.handleSpecialistError,onSpecialistComplete:l.handleSpecialistComplete,ref:"chatInput",class:"chat-input-area"},null,8,["current-message","is-loading","form-data","active-ai-message","api-prefix","onSendMessage","onUpdateMessage","onUploadFile","onRecordVoice","onSubmitForm","onSpecialistError","onSpecialistComplete"]),(0,n.createVNode)(u,{show:o.contentModal.modalState.show,title:o.contentModal.modalState.title,content:o.contentModal.modalState.content,version:o.contentModal.modalState.version,loading:o.contentModal.modalState.loading,error:o.contentModal.modalState.error,"error-message":o.contentModal.modalState.errorMessage,onClose:o.contentModal.hideModal,onRetry:o.contentModal.retryLoad},null,8,["show","title","content","version","loading","error","error-message","onClose","onRetry"])])}}),u("cH9BU",function(e,t){o(e.exports,"default",function(){return n});var n=e=>{}}),c("iJXGE");var d=c("fNp5a"),p=c("iADb3"),h={};"u">typeof globalThis||"u">typeof self&&self,h=function(){"use strict";var e={exports:{}},t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.prototype.hasOwnProperty,o={},s={Hooks:()=>ey,Lexer:()=>eh,Marked:()=>ev,Parser:()=>em,Renderer:()=>ef,TextRenderer:()=>eg,Tokenizer:()=>ep,defaults:()=>c,getDefaults:()=>a,lexer:()=>eA,marked:()=>eb,options:()=>ek,parse:()=>eC,parseInline:()=>eE,parser:()=>eT,setOptions:()=>eS,use:()=>e_,walkTokens:()=>ew};for(var l in s)t(o,l,{get:s[l],enumerable:!0});function a(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}e.exports=((e,o,s,l)=>{if(o&&"object"==typeof o||"function"==typeof o)for(let a of r(o))i.call(e,a)||a===s||t(e,a,{get:()=>o[a],enumerable:!(l=n(o,a))||l.enumerable});return e})(t({},"__esModule",{value:!0}),o);var c=a(),u={exec:()=>null};function d(e,t=""){let n="string"==typeof e?e:e.source,r={replace:(e,t)=>{let i="string"==typeof t?t:t.source;return i=i.replace(p.caret,"$1"),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var p={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceTabs:/^\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] /,listReplaceTask:/^\[[ xX]\] +/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,unescapeTest:/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,"i")},h=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,f=/(?:[*+-]|\d{1,9}[.)])/,g=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,m=d(g).replace(/bull/g,f).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,"").getRegex(),y=d(g).replace(/bull/g,f).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),x=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,b=/(?!\s*\])(?:\\.|[^\[\]\\])+/,k=d(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace("label",b).replace("title",/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),S=d(/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,f).getRegex(),_="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",w=/|$))/,E=d("^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|\\n*|$)|\\n*|$)|?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))","i").replace("comment",w).replace("tag",_).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),C=d(x).replace("hr",h).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_).getRegex(),T={blockquote:d(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace("paragraph",C).getRegex(),code:/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,def:k,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,hr:h,html:E,lheading:m,list:S,newline:/^(?:[ \t]*(?:\n|$))+/,paragraph:C,table:u,text:/^[^\n]+/},A=d("^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)").replace("hr",h).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("blockquote"," {0,3}>").replace("code","(?: {4}| {0,3} )[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_).getRegex(),O={...T,lheading:y,table:A,paragraph:d(x).replace("hr",h).replace("heading"," {0,3}#{1,6}(?:\\s|$)").replace("|lheading","").replace("table",A).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",_).getRegex()},M={...T,html:d(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?\\1> *(?:\\n{2,}|\\s*$)| \\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace("comment",w).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:u,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:d(x).replace("hr",h).replace("heading",` *#{1,6} *[^
+]`).replace("lheading",m).replace("|table","").replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").replace("|tag","").getRegex()},D=/^( {2,}|\\)\n(?!\s*$)/,N=/[\p{P}\p{S}]/u,I=/[\s\p{P}\p{S}]/u,L=/[^\s\p{P}\p{S}]/u,V=d(/^((?![*_])punctSpace)/,"u").replace(/punctSpace/g,I).getRegex(),B=/(?!~)[\p{P}\p{S}]/u,P=/^(?:\*+(?:((?!\*)punct)|[^\s*]))|^_+(?:((?!_)punct)|([^\s_]))/,R=d(P,"u").replace(/punct/g,N).getRegex(),$=d(P,"u").replace(/punct/g,B).getRegex(),F="^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)",j=d(F,"gu").replace(/notPunctSpace/g,L).replace(/punctSpace/g,I).replace(/punct/g,N).getRegex(),z=d(F,"gu").replace(/notPunctSpace/g,/(?:[^\s\p{P}\p{S}]|~)/u).replace(/punctSpace/g,/(?!~)[\s\p{P}\p{S}]/u).replace(/punct/g,B).getRegex(),H=d("^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)","gu").replace(/notPunctSpace/g,L).replace(/punctSpace/g,I).replace(/punct/g,N).getRegex(),U=d(/\\(punct)/,"gu").replace(/punct/g,N).getRegex(),q=d(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace("scheme",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace("email",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),J=d(w).replace("(?:--\x3e|$)","--\x3e").getRegex(),Y=d("^comment|^[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^|^").replace("comment",J).replace("attribute",/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),K=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,G=d(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]*(?:\n[ \t]*)?)(title))?\s*\)/).replace("label",K).replace("href",/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace("title",/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),W=d(/^!?\[(label)\]\[(ref)\]/).replace("label",K).replace("ref",b).getRegex(),X=d(/^!?\[(ref)\](?:\[\])?/).replace("ref",b).getRegex(),Z=d("reflink|nolink(?!\\()","g").replace("reflink",W).replace("nolink",X).getRegex(),Q={_backpedal:u,anyPunctuation:U,autolink:q,blockSkip:/\[[^[\]]*?\]\((?:\\.|[^\\\(\)]|\((?:\\.|[^\\\(\)])*\))*\)|`[^`]*?`|<(?! )[^<>]*?>/g,br:D,code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,del:u,emStrongLDelim:R,emStrongRDelimAst:j,emStrongRDelimUnd:H,escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,link:G,nolink:X,punctuation:V,reflink:W,reflinkSearch:Z,tag:Y,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\":">",'"':""","'":"'"},es=e=>eo[e];function el(e,t){if(t){if(p.escapeTest.test(e))return e.replace(p.escapeReplace,es)}else if(p.escapeTestNoEncode.test(e))return e.replace(p.escapeReplaceNoEncode,es);return e}function ea(e){try{e=encodeURI(e).replace(p.percentDecode,"%")}catch{return null}return e}function ec(e,t){let n=e.replace(p.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&"\\"===n[i];)r=!r;return r?"|":" |"}).split(p.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length0)return{type:"space",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let e=t[0].replace(this.rules.other.codeRemoveIndent,"");return{type:"code",raw:t[0],codeBlockStyle:"indented",text:this.options.pedantic?e:eu(e,`
+`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let e=t[0],n=function(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(null===r)return t;let i=r[1];return t.split(`
+`).map(e=>{let t=e.match(n.other.beginningSpace);if(null===t)return e;let[r]=t;return r.length>=i.length?e.slice(i.length):e}).join(`
+`)}(e,t[3]||"",this.rules);return{type:"code",raw:e,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,"$1"):t[2],text:n}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let e=t[2].trim();if(this.rules.other.endingHash.test(e)){let t=eu(e,"#");(this.options.pedantic||!t||this.rules.other.endingSpaceChar.test(t))&&(e=t.trim())}return{type:"heading",raw:t[0],depth:t[1].length,text:e,tokens:this.lexer.inline(e)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:"hr",raw:eu(t[0],`
+`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let e=eu(t[0],`
+`).split(`
+`),n="",r="",i=[];for(;e.length>0;){let t=!1,o=[],s;for(s=0;s1,i={type:"list",raw:"",ordered:r,start:r?+n.slice(0,-1):"",loose:!1,items:[]};n=r?`\\d{1,9}\\${n.slice(-1)}`:`\\${n}`,this.options.pedantic&&(n=r?n:"[*+-]");let o=this.rules.other.listItemRegex(n),s=!1;for(;e;){let n=!1,r="",l="";if(!(t=o.exec(e))||this.rules.block.hr.test(e))break;r=t[0],e=e.substring(r.length);let a=t[2].split(`
+`,1)[0].replace(this.rules.other.listReplaceTabs,e=>" ".repeat(3*e.length)),c=e.split(`
+`,1)[0],u=!a.trim(),d=0;if(this.options.pedantic?(d=2,l=a.trimStart()):u?d=t[1].length+1:(d=(d=t[2].search(this.rules.other.nonSpaceChar))>4?1:d,l=a.slice(d),d+=t[1].length),u&&this.rules.other.blankLine.test(c)&&(r+=c+`
+`,e=e.substring(c.length+1),n=!0),!n){let t=this.rules.other.nextBulletRegex(d),n=this.rules.other.hrRegex(d),i=this.rules.other.fencesBeginRegex(d),o=this.rules.other.headingBeginRegex(d),s=this.rules.other.htmlBeginRegex(d);for(;e;){let p=e.split(`
+`,1)[0],h;if(c=p,h=this.options.pedantic?c=c.replace(this.rules.other.listReplaceNesting," "):c.replace(this.rules.other.tabCharGlobal," "),i.test(c)||o.test(c)||s.test(c)||t.test(c)||n.test(c))break;if(h.search(this.rules.other.nonSpaceChar)>=d||!c.trim())l+=`
+`+h.slice(d);else{if(u||a.replace(this.rules.other.tabCharGlobal," ").search(this.rules.other.nonSpaceChar)>=4||i.test(a)||o.test(a)||n.test(a))break;l+=`
+`+c}u||c.trim()||(u=!0),r+=p+`
+`,e=e.substring(p.length+1),a=h.slice(d)}}i.loose||(s?i.loose=!0:this.rules.other.doubleBlankLine.test(r)&&(s=!0));let p=null,h;this.options.gfm&&(p=this.rules.other.listIsTask.exec(l))&&(h="[ ] "!==p[0],l=l.replace(this.rules.other.listReplaceTask,"")),i.items.push({type:"list_item",raw:r,task:!!p,checked:h,loose:!1,text:l,tokens:[]}),i.raw+=r}let l=i.items.at(-1);if(!l)return;l.raw=l.raw.trimEnd(),l.text=l.text.trimEnd(),i.raw=i.raw.trimEnd();for(let e=0;e"space"===e.type);i.loose=t.length>0&&t.some(e=>this.rules.other.anyLine.test(e.raw))}if(i.loose)for(let e=0;e({text:e,tokens:this.lexer.inline(e),header:!1,align:o.align[t]})));return o}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:"heading",raw:t[0],depth:"="===t[2].charAt(0)?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let e=t[1].charAt(t[1].length-1)===`
+`?t[1].slice(0,-1):t[1];return{type:"paragraph",raw:t[0],text:e,tokens:this.lexer.inline(e)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:"text",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:"escape",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:"html",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let e=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(e)){if(!this.rules.other.endAngleBracket.test(e))return;let t=eu(e.slice(0,-1),"\\");if((e.length-t.length)%2==0)return}else{let e=function(e,t){if(-1===e.indexOf(")"))return -1;let n=0;for(let r=0;r0?-2:-1}(t[2],"()");if(-2===e)return;if(e>-1){let n=(0===t[0].indexOf("!")?5:4)+t[1].length+e;t[2]=t[2].substring(0,e),t[0]=t[0].substring(0,n).trim(),t[3]=""}}let n=t[2],r="";if(this.options.pedantic){let e=this.rules.other.pedanticHrefTitle.exec(n);e&&(n=e[1],r=e[3])}else r=t[3]?t[3].slice(1,-1):"";return n=n.trim(),this.rules.other.startAngleBracket.test(n)&&(n=this.options.pedantic&&!this.rules.other.endAngleBracket.test(e)?n.slice(1):n.slice(1,-1)),ed(t,{href:n&&n.replace(this.rules.inline.anyPunctuation,"$1"),title:r&&r.replace(this.rules.inline.anyPunctuation,"$1")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let e=t[(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal," ").toLowerCase()];if(!e){let e=n[0].charAt(0);return{type:"text",raw:e,text:e}}return ed(n,e,n[0],this.lexer,this.rules)}}emStrong(e,t,n=""){let r=this.rules.inline.emStrongLDelim.exec(e);if(!(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))&&(!(r[1]||r[2])||!n||this.rules.inline.punctuation.exec(n))){let n=[...r[0]].length-1,i,o,s=n,l=0,a="*"===r[0][0]?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(a.lastIndex=0,t=t.slice(-1*e.length+n);null!=(r=a.exec(t));){if(!(i=r[1]||r[2]||r[3]||r[4]||r[5]||r[6]))continue;if(o=[...i].length,r[3]||r[4]){s+=o;continue}if((r[5]||r[6])&&n%3&&!((n+o)%3)){l+=o;continue}if((s-=o)>0)continue;o=Math.min(o,o+s+l);let t=[...r[0]][0].length,a=e.slice(0,n+r.index+t+o);if(Math.min(n,o)%2){let e=a.slice(1,-1);return{type:"em",raw:a,text:e,tokens:this.lexer.inlineTokens(e)}}let c=a.slice(2,-2);return{type:"strong",raw:a,text:c,tokens:this.lexer.inlineTokens(c)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let e=t[2].replace(this.rules.other.newLineCharGlobal," "),n=this.rules.other.nonSpaceChar.test(e),r=this.rules.other.startingSpaceChar.test(e)&&this.rules.other.endingSpaceChar.test(e);return n&&r&&(e=e.substring(1,e.length-1)),{type:"codespan",raw:t[0],text:e}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:"br",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:"del",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let e,n;return n="@"===t[2]?"mailto:"+(e=t[1]):e=t[1],{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let e,n;if("@"===t[2])n="mailto:"+(e=t[0]);else{let r;do r=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??"";while(r!==t[0])e=t[0],n="www."===t[1]?"http://"+t[0]:t[0]}return{type:"link",raw:t[0],text:e,href:n,tokens:[{type:"text",raw:e,text:e}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let e=this.lexer.state.inRawBlock;return{type:"text",raw:t[0],text:t[0],escaped:e}}}},eh=class e{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||c,this.options.tokenizer=this.options.tokenizer||new ep,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:p,block:er.normal,inline:ei.normal};this.options.pedantic?(t.block=er.pedantic,t.inline=ei.pedantic):this.options.gfm&&(t.block=er.gfm,this.options.breaks?t.inline=ei.breaks:t.inline=ei.gfm),this.tokenizer.rules=t}static get rules(){return{block:er,inline:ei}}static lex(t,n){return new e(n).lex(t)}static lexInline(t,n){return new e(n).inlineTokens(t)}lex(e){e=e.replace(p.carriageReturn,`
+`),this.blockTokens(e,this.tokens);for(let e=0;e!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let n=t.at(-1);1===r.raw.length&&void 0!==n?n.raw+=`
+`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type==="paragraph"||n?.type==="text"?(n.raw+=`
+`+r.raw,n.text+=`
+`+r.text,this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if((r=this.tokenizer.fences(e))||(r=this.tokenizer.heading(e))||(r=this.tokenizer.hr(e))||(r=this.tokenizer.blockquote(e))||(r=this.tokenizer.list(e))||(r=this.tokenizer.html(e))){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type==="paragraph"||n?.type==="text"?(n.raw+=`
+`+r.raw,n.text+=`
+`+r.raw,this.inlineQueue.at(-1).src=n.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if((r=this.tokenizer.table(e))||(r=this.tokenizer.lheading(e))){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let t=1/0,n=e.slice(1),r;this.options.extensions.startBlock.forEach(e=>{"number"==typeof(r=e.call({lexer:this},n))&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(i=e.substring(0,t+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let o=t.at(-1);n&&o?.type==="paragraph"?(o.raw+=`
+`+r.raw,o.text+=`
+`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=o.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let n=t.at(-1);n?.type==="text"?(n.raw+=`
+`+r.raw,n.text+=`
+`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=n.text):t.push(r);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw Error(t)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let e=Object.keys(this.tokens.links);if(e.length>0)for(;null!=(r=this.tokenizer.rules.inline.reflinkSearch.exec(n));)e.includes(r[0].slice(r[0].lastIndexOf("[")+1,-1))&&(n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(r=this.tokenizer.rules.inline.anyPunctuation.exec(n));)n=n.slice(0,r.index)+"++"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;null!=(r=this.tokenizer.rules.inline.blockSkip.exec(n));)n=n.slice(0,r.index)+"["+"a".repeat(r[0].length-2)+"]"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,o="";for(;e;){let r;if(i||(o=""),i=!1,this.options.extensions?.inline?.some(n=>!!(r=n.call({lexer:this},e,t))&&(e=e.substring(r.raw.length),t.push(r),!0)))continue;if((r=this.tokenizer.escape(e))||(r=this.tokenizer.tag(e))||(r=this.tokenizer.link(e))){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(r.raw.length);let n=t.at(-1);"text"===r.type&&n?.type==="text"?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if((r=this.tokenizer.emStrong(e,n,o))||(r=this.tokenizer.codespan(e))||(r=this.tokenizer.br(e))||(r=this.tokenizer.del(e))||(r=this.tokenizer.autolink(e))||!this.state.inLink&&(r=this.tokenizer.url(e))){e=e.substring(r.raw.length),t.push(r);continue}let s=e;if(this.options.extensions?.startInline){let t=1/0,n=e.slice(1),r;this.options.extensions.startInline.forEach(e=>{"number"==typeof(r=e.call({lexer:this},n))&&r>=0&&(t=Math.min(t,r))}),t<1/0&&t>=0&&(s=e.substring(0,t+1))}if(r=this.tokenizer.inlineText(s)){e=e.substring(r.raw.length),"_"!==r.raw.slice(-1)&&(o=r.raw.slice(-1)),i=!0;let n=t.at(-1);n?.type==="text"?(n.raw+=r.raw,n.text+=r.text):t.push(r);continue}if(e){let t="Infinite loop on byte: "+e.charCodeAt(0);if(this.options.silent){console.error(t);break}throw Error(t)}}return t}},ef=class{options;parser;constructor(e){this.options=e||c}space(e){return""}code({text:e,lang:t,escaped:n}){let r=(t||"").match(p.notSpaceStart)?.[0],i=e.replace(p.endingNewline,"")+`
+`;return r?''+(n?i:el(i,!0))+`
+`:""+(n?i:el(i,!0))+`
+`}blockquote({tokens:e}){return`
+${this.parser.parse(e)}
+`}html({text:e}){return e}heading({tokens:e,depth:t}){return`${this.parser.parseInline(e)}
+`}hr(e){return`
+`}list(e){let t=e.ordered,n=e.start,r="";for(let t=0;t
+`+r+""+i+`>
+`}listitem(e){let t="";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type==="paragraph"?(e.tokens[0].text=n+" "+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&"text"===e.tokens[0].tokens[0].type&&(e.tokens[0].tokens[0].text=n+" "+el(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:"text",raw:n+" ",text:n+" ",escaped:!0}):t+=n+" "}return t+=this.parser.parse(e.tokens,!!e.loose),`${t}
+`}checkbox({checked:e}){return" '}paragraph({tokens:e}){return`${this.parser.parseInline(e)}
+`}table(e){let t="",n="";for(let t=0;t${r}`),`
+`}tablerow({text:e}){return`
+${e}
+`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?"th":"td";return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`${n}>
+`}strong({tokens:e}){return`${this.parser.parseInline(e)} `}em({tokens:e}){return`${this.parser.parseInline(e)} `}codespan({text:e}){return`${el(e,!0)}`}br(e){return" "}del({tokens:e}){return`${this.parser.parseInline(e)}`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=ea(e);if(null===i)return r;let o='"+r+" "}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=ea(e);if(null===i)return el(n);e=i;let o=` "}text(e){return"tokens"in e&&e.tokens?this.parser.parseInline(e.tokens):"escaped"in e&&e.escaped?e.text:el(e.text)}},eg=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return""+e}image({text:e}){return""+e}br(){return""}},em=class e{options;renderer;textRenderer;constructor(e){this.options=e||c,this.options.renderer=this.options.renderer||new ef,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new eg}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e,t=!0){let n="";for(let r=0;r{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error("extension name required");if("renderer"in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return!1===r&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if("tokenizer"in e){if(!e.level||"block"!==e.level&&"inline"!==e.level)throw Error("extension level must be 'block' or 'inline'");let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&("block"===e.level?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:"inline"===e.level&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}"childTokens"in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new ef(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if(["options","parser"].includes(n))continue;let r=e.renderer[n],i=t[n];t[n]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n||""}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new ep(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if(["options","rules","lexer"].includes(n))continue;let r=e.tokenizer[n],i=t[n];t[n]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new ey;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if(["options","block"].includes(n))continue;let r=e.hooks[n],i=t[n];ey.passThroughHooks.has(n)?t[n]=e=>{if(this.defaults.async)return Promise.resolve(r.call(t,e)).then(e=>i.call(t,e));let n=r.call(t,e);return i.call(t,n)}:t[n]=(...e)=>{let n=r.apply(t,e);return!1===n&&(n=i.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return eh.lex(e,t??this.defaults)}parser(e,t){return em.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},o=this.onError(!!i.silent,!!i.async);if(!0===this.defaults.async&&!1===r.async)return o(Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));if(typeof t>"u"||null===t)return o(Error("marked(): input parameter is undefined or null"));if("string"!=typeof t)return o(Error("marked(): input parameter is of type "+Object.prototype.toString.call(t)+", string expected"));i.hooks&&(i.hooks.options=i,i.hooks.block=e);let s=i.hooks?i.hooks.provideLexer():e?eh.lex:eh.lexInline,l=i.hooks?i.hooks.provideParser():e?em.parse:em.parseInline;if(i.async)return Promise.resolve(i.hooks?i.hooks.preprocess(t):t).then(e=>s(e,i)).then(e=>i.hooks?i.hooks.processAllTokens(e):e).then(e=>i.walkTokens?Promise.all(this.walkTokens(e,i.walkTokens)).then(()=>e):e).then(e=>l(e,i)).then(e=>i.hooks?i.hooks.postprocess(e):e).catch(o);try{i.hooks&&(t=i.hooks.preprocess(t));let e=s(t,i);i.hooks&&(e=i.hooks.processAllTokens(e)),i.walkTokens&&this.walkTokens(e,i.walkTokens);let n=l(e,i);return i.hooks&&(n=i.hooks.postprocess(n)),n}catch(e){return o(e)}}}onError(e,t){return n=>{if(n.message+=`
+Please report this to https://github.com/markedjs/marked.`,e){let e="An error occurred:
"+el(n.message+"",!0)+" ";return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},ex=new ev;function eb(e,t){return ex.parse(e,t)}eb.options=eb.setOptions=function(e){return ex.setOptions(e),eb.defaults=ex.defaults,c=eb.defaults,eb},eb.getDefaults=a,eb.defaults=c,eb.use=function(...e){return ex.use(...e),eb.defaults=ex.defaults,c=eb.defaults,eb},eb.walkTokens=function(e,t){return ex.walkTokens(e,t)},eb.parseInline=ex.parseInline,eb.Parser=em,eb.parser=em.parse,eb.Renderer=ef,eb.TextRenderer=eg,eb.Lexer=eh,eb.lexer=eh.lex,eb.Tokenizer=ep,eb.Hooks=ey,eb.parse=eb;var ek=eb.options,eS=eb.setOptions,e_=eb.use,ew=eb.walkTokens,eE=eb.parseInline,eC=eb,eT=em.parse,eA=eh.lex;return e.exports}();var f=c("lfo9i"),g={};o(g,"LanguageSelector",function(){return c("2Fvhx").default}),o(g,"ChatInput",function(){return c("2TN9T").default}),o(g,"MessageHistory",function(){return c("1MYs0").default}),o(g,"ChatMessage",function(){return c("lVdl4").default}),o(g,"TypingIndicator",function(){return c("aNcdg").default}),o(g,"ProgressTracker",function(){return c("3b050").default}),o(g,"DynamicForm",function(){return c("9J6tU").default}),o(g,"FormField",function(){return c("70gdv").default}),o(g,"FormMessage",function(){return m}),o(g,"SideBar",function(){return y}),o(g,"MobileHeader",function(){return x}),c("2Fvhx"),c("2TN9T"),c("1MYs0"),c("lVdl4"),c("aNcdg"),c("3b050"),c("9J6tU"),c("70gdv"),(e=c("eu21N")).__esModule&&(e=e.default),e.render=c("8lvfw").render,e.__cssModules={},c("4boaj").default(e),e.__scopeId="data-v-873b23",e.__file="FormMessage.vue";var m=e;(t=c("a5zVu")).__esModule&&(t=t.default),t.render=c("1xcVN").render,t.__cssModules={},c("dm1Go").default(t),t.__scopeId="data-v-a00f3a",t.__file="SideBar.vue";var y=t;(n=c("boghT")).__esModule&&(n=n.default),n.render=c("8szg8").render,n.__cssModules={},c("1nK46").default(n),n.__scopeId="data-v-1e6eea",n.__file="MobileHeader.vue";var x=n;console.log("Vue components loaded successfully from barrel export"),c("2Fvhx"),(r=c("6jOml")).__esModule&&(r=r.default),r.render=c("1JmDG").render,r.__cssModules={},c("cH9BU").default(r),r.__scopeId="data-v-a30c6c",r.__file="ChatApp.vue";var b=r;window.Vue={createApp:d.createApp,version:p.version},window.marked=h.marked,window.Components=g,console.log("Components loaded:",Object.keys(g)),window.addEventListener("error",function(e){console.error("\uD83D\uDEA8 [Global Error]",e.error)}),document.addEventListener("DOMContentLoaded",function(){window.chatConfig||(console.error("chatConfig is niet beschikbaar"),window.chatConfig={}),function(){let e=document.getElementById("sidebar-container");if(!e)return console.error("#sidebar-container niet gevonden");try{let t={tenantMake:{name:window.chatConfig.tenantMake?.name||"",logo_url:window.chatConfig.tenantMake?.logo_url||"",subtitle:window.chatConfig.tenantMake?.subtitle||""},explanationText:window.chatConfig.explanation||"",initialLanguage:window.chatConfig.language||"nl",supportedLanguageDetails:window.chatConfig.supportedLanguageDetails||{},allowedLanguages:window.chatConfig.allowedLanguages||["nl","en","fr","de"],apiPrefix:window.chatConfig.apiPrefix||""},n=(0,d.createApp)(y,t),r=window.chatConfig?.language||"nl",i=window.chatConfig?.apiPrefix||"",o=(0,f.createLanguageProvider)(r,i);n.provide(f.LANGUAGE_PROVIDER_KEY,o),n.config.errorHandler=(e,t,n)=>{console.error("\uD83D\uDEA8 [Vue Error in Sidebar]",e),console.error("Component:",t),console.error("Error Info:",n)};let s=n.mount(e),l=e=>{e.detail&&e.detail.language&&(console.log("Sidebar: Received language change event:",e.detail.language),o.setLanguage(e.detail.language))};document.addEventListener("language-changed",l),s._languageChangeHandler=l,console.log("✅ Sidebar component successfully mounted with LanguageProvider")}catch(e){console.error("\uD83D\uDEA8 [CRITICAL ERROR] Bij initialiseren sidebar:",e)}}(),function(){let e=document.querySelector(".chat-container");if(!e)return console.error("\uD83D\uDEA8 [CRITICAL ERROR] .chat-container niet gevonden");try{if(!b)throw Error("\uD83D\uDEA8 [CRITICAL ERROR] ChatApp component niet gevonden");g.MessageHistory&&g.ChatInput&&g.TypingIndicator&&g.ChatMessage||console.warn("⚠️ [WARN] Niet alle benodigde sub-componenten zijn geladen!");let t={apiPrefix:window.chatConfig.apiPrefix||"",conversationId:window.chatConfig.conversationId||"default",userId:window.chatConfig.userId||null,userName:window.chatConfig.userName||"",initialLanguage:window.chatConfig.language||"nl",supportedLanguageDetails:window.chatConfig.supportedLanguageDetails||{},allowedLanguages:window.chatConfig.allowedLanguages||["nl","en","fr","de"]},n=(0,d.createApp)(b,t);n.provide("sseConfig",{maxRetries:3,retryDelay:2e3,handleSseError:function(e,t){return console.warn(`SSE verbinding voor task ${t} mislukt:`,e),this.fallbackToPolling(t)},fallbackToPolling:function(e){console.log(`Fallback naar polling voor task ${e}`);let n=setInterval(()=>{let r=`${t.apiPrefix}/api/task_status/${e}`;fetch(r).then(e=>{if(!e.ok)throw Error(`Task status endpoint error: ${e.status}`);return e.json()}).then(t=>{let r=new CustomEvent("message",{detail:{data:JSON.stringify(t)}});document.dispatchEvent(new CustomEvent(`sse:${e}:message`,{detail:r})),("completed"===t.status||"failed"===t.status||"cancelled"===t.status)&&clearInterval(n)}).catch(e=>console.error("Polling error:",e))},3e3);return n}}),Object.entries(g).forEach(([e,t])=>{n.component(e,t)}),n.config.errorHandler=(e,t,n)=>{console.error("\uD83D\uDEA8 [Vue Error in ChatApp]",e),console.error("Component:",t),console.error("Error Info:",n)};let r=n.mount(e);window.__chatApp=r,window.__vueApp=n}catch(t){console.error("\uD83D\uDEA8 [CRITICAL ERROR] Bij initialiseren chat app:",t),console.error("Stack trace:",t.stack),e.innerHTML="Fout bij het initialiseren van de chat applicatie
"}}()}),window.getElementFromRef=function(e){if(!e)return null;if(e.value&&e.value instanceof HTMLElement)return e.value;if(e instanceof HTMLElement)return e;if(e.$el&&e.$el instanceof HTMLElement)return e.$el;if("object"==typeof e&&null!==e){let t=e.el||e.$el||e.value;if(t instanceof HTMLElement)return t}return null},console.log("Chat client modules geladen en gebundeld met moderne ES module structuur.")}();
\ No newline at end of file
diff --git a/eveai_chat_client/templates/base.html b/eveai_chat_client/templates/base.html
index 69a558a..4405259 100644
--- a/eveai_chat_client/templates/base.html
+++ b/eveai_chat_client/templates/base.html
@@ -48,7 +48,10 @@
-
+
+
+
+
diff --git a/frontend_src/js/chat-client.js b/frontend_src/js/chat-client.js
index 5d8dec5..b06019c 100644
--- a/frontend_src/js/chat-client.js
+++ b/frontend_src/js/chat-client.js
@@ -21,48 +21,77 @@ window.Vue = { createApp };
window.marked = marked;
// Gebruik barrel export voor componenten
-import * as Components from '../../../eveai_chat_client/static/assets/js/components/index.js';
+import * as Components from '../../../eveai_chat_client/static/assets/vue-components/index.js';
// Maak Components globaal beschikbaar voor debugging
window.Components = Components;
console.log('Components loaded:', Object.keys(Components));
// Main chat application - moet als laatste worden geladen
-import { ChatApp } from '../../../eveai_chat_client/static/assets/js/ChatApp.js';
+import ChatApp from '../../../eveai_chat_client/static/assets/vue-components/ChatApp.vue';
// Wacht tot het document volledig is geladen voordat we Vue initialiseren
document.addEventListener('DOMContentLoaded', () => {
console.log('Initializing Chat Application');
- // Check of #app element bestaat
- const appElement = document.getElementById('app');
- if (!appElement) {
- console.error('DOM element #app not found. Cannot initialize Vue application.');
- return;
- }
-
- console.log('DOM element #app exists:', appElement);
-
try {
- // Maak de Vue applicatie aan
- const app = createApp(ChatApp);
-
- // Registreer alle componenten globaal
- for (const [name, component] of Object.entries(Components)) {
- app.component(name, component);
+ // Mount SideBar component to sidebar-container
+ const sidebarContainer = document.getElementById('sidebar-container');
+ if (sidebarContainer && Components.SideBar) {
+ const sidebarApp = createApp(Components.SideBar, {
+ tenantMake: window.chatConfig?.tenantMake || { name: 'EveAI', logo_url: '' },
+ explanationText: window.chatConfig?.explanationText || '',
+ initialLanguage: window.chatConfig?.language || 'en',
+ supportedLanguageDetails: window.chatConfig?.supportedLanguageDetails || {},
+ allowedLanguages: window.chatConfig?.allowedLanguages || ['nl', 'en', 'fr', 'de'],
+ apiPrefix: window.chatConfig?.apiPrefix || ''
+ });
+
+ // Registreer componenten voor sidebar app
+ for (const [name, component] of Object.entries(Components)) {
+ sidebarApp.component(name, component);
+ }
+
+ sidebarApp.mount('#sidebar-container');
+ console.log('SideBar mounted successfully');
}
- // Voeg de IconManagerMixin toe voor alle componenten
- app.mixin(IconManagerMixin);
+ // Mount MobileHeader component to mobile-header-container
+ const mobileHeaderContainer = document.getElementById('mobile-header-container');
+ if (mobileHeaderContainer && Components.MobileHeader) {
+ const mobileHeaderApp = createApp(Components.MobileHeader, {
+ tenantMake: window.chatConfig?.tenantMake || { name: 'EveAI', logo_url: '' },
+ initialLanguage: window.chatConfig?.language || 'en',
+ supportedLanguageDetails: window.chatConfig?.supportedLanguageDetails || {},
+ allowedLanguages: window.chatConfig?.allowedLanguages || ['nl', 'en', 'fr', 'de'],
+ apiPrefix: window.chatConfig?.apiPrefix || ''
+ });
+
+ // Registreer componenten voor mobile header app
+ for (const [name, component] of Object.entries(Components)) {
+ mobileHeaderApp.component(name, component);
+ }
+
+ mobileHeaderApp.mount('#mobile-header-container');
+ console.log('MobileHeader mounted successfully');
+ }
- // Mount de applicatie op #app
- const mountedApp = app.mount('#app');
+ // Mount ChatApp to the chat container
+ const chatContainer = document.querySelector('.chat-container');
+ if (chatContainer) {
+ const chatApp = createApp(ChatApp);
+
+ // Registreer alle componenten globaal voor chat app
+ for (const [name, component] of Object.entries(Components)) {
+ chatApp.component(name, component);
+ }
- // Bewaar een referentie naar de app voor debugging
- window.__vueApp = app;
+ chatApp.mount('.chat-container');
+ console.log('ChatApp mounted successfully');
+ }
- console.log('Vue app mounted successfully');
+ console.log('All Vue apps mounted successfully');
} catch (error) {
- console.error('Error initializing Vue application:', error);
+ console.error('Error initializing Vue applications:', error);
}
});
diff --git a/test_mobile_header_fix.py b/test_mobile_header_fix.py
new file mode 100644
index 0000000..2abf867
--- /dev/null
+++ b/test_mobile_header_fix.py
@@ -0,0 +1,206 @@
+#!/usr/bin/env python3
+"""
+Test script to verify mobile header visibility fix for eveai_chat_client
+"""
+
+import os
+import sys
+import re
+
+def test_mobile_header_css_fix():
+ """Test that MobileHeader component has correct CSS media queries"""
+ print("Testing MobileHeader CSS fix...")
+
+ mobile_header_path = 'eveai_chat_client/static/assets/vue-components/MobileHeader.vue'
+
+ if not os.path.exists(mobile_header_path):
+ print(f"❌ MobileHeader.vue not found at {mobile_header_path}")
+ return False
+
+ with open(mobile_header_path, 'r') as f:
+ content = f.read()
+
+ # Check for mobile media query (show on mobile)
+ mobile_show_pattern = r'@media\s*\(\s*max-width:\s*768px\s*\)\s*\{[^}]*\.mobile-header\s*\{[^}]*display:\s*flex'
+ mobile_show_match = re.search(mobile_show_pattern, content, re.DOTALL)
+
+ if not mobile_show_match:
+ print("❌ Missing mobile media query to show mobile header")
+ print(" Expected: @media (max-width: 768px) with .mobile-header { display: flex }")
+ return False
+ else:
+ print("✓ Found mobile media query to show header on mobile devices")
+
+ # Check for desktop media query (hide on desktop)
+ desktop_hide_pattern = r'@media\s*\(\s*min-width:\s*769px\s*\)\s*\{[^}]*\.mobile-header\s*\{[^}]*display:\s*none'
+ desktop_hide_match = re.search(desktop_hide_pattern, content, re.DOTALL)
+
+ if not desktop_hide_match:
+ print("❌ Missing desktop media query to hide mobile header")
+ print(" Expected: @media (min-width: 769px) with .mobile-header { display: none }")
+ return False
+ else:
+ print("✓ Found desktop media query to hide header on desktop devices")
+
+ # Check that both media queries exist in correct order
+ mobile_pos = content.find('@media (max-width: 768px)')
+ desktop_pos = content.find('@media (min-width: 769px)')
+
+ if mobile_pos == -1 or desktop_pos == -1:
+ print("❌ Media queries not found in expected format")
+ return False
+
+ if mobile_pos > desktop_pos:
+ print("⚠️ Warning: Mobile media query comes after desktop query (may cause specificity issues)")
+
+ print("✅ MobileHeader CSS fix is correctly implemented")
+ return True
+
+def test_global_css_rules():
+ """Test that global CSS rules for mobile-header-container are correct"""
+ print("\nTesting global CSS rules...")
+
+ css_path = 'eveai_chat_client/static/assets/css/chat.css'
+
+ if not os.path.exists(css_path):
+ print(f"❌ chat.css not found at {css_path}")
+ return False
+
+ with open(css_path, 'r') as f:
+ content = f.read()
+
+ # Check default hidden state
+ if '#mobile-header-container' not in content or 'display: none' not in content:
+ print("❌ Missing default hidden state for mobile-header-container")
+ return False
+ else:
+ print("✓ Found default hidden state for mobile-header-container")
+
+ # Check mobile media query shows container
+ # Look for the media query and then check if mobile-header-container is set to display: block within it
+ media_query_start = content.find('@media (max-width: 768px)')
+ if media_query_start == -1:
+ print("❌ Missing @media (max-width: 768px) query")
+ return False
+
+ # Find the closing brace of this media query
+ brace_count = 0
+ media_query_end = media_query_start
+ for i, char in enumerate(content[media_query_start:]):
+ if char == '{':
+ brace_count += 1
+ elif char == '}':
+ brace_count -= 1
+ if brace_count == 0:
+ media_query_end = media_query_start + i
+ break
+
+ media_query_content = content[media_query_start:media_query_end + 1]
+
+ if '#mobile-header-container' in media_query_content and 'display: block' in media_query_content:
+ print("✓ Found mobile media query to show mobile-header-container")
+ else:
+ print("❌ Mobile media query doesn't properly show mobile-header-container")
+ return False
+
+ print("✅ Global CSS rules are correct")
+ return True
+
+def test_built_assets():
+ """Test that built assets exist and are recent"""
+ print("\nTesting built assets...")
+
+ assets_to_check = [
+ 'eveai_chat_client/static/dist/chat-client.js',
+ 'eveai_chat_client/static/dist/chat-client.css'
+ ]
+
+ for asset_path in assets_to_check:
+ if not os.path.exists(asset_path):
+ print(f"❌ Built asset not found: {asset_path}")
+ return False
+ else:
+ # Check file size to ensure it's not empty
+ size = os.path.getsize(asset_path)
+ if size == 0:
+ print(f"❌ Built asset is empty: {asset_path}")
+ return False
+ else:
+ print(f"✓ Built asset exists and has content: {asset_path} ({size} bytes)")
+
+ print("✅ Built assets are present and valid")
+ return True
+
+def test_component_structure():
+ """Test that MobileHeader component structure is intact"""
+ print("\nTesting MobileHeader component structure...")
+
+ mobile_header_path = 'eveai_chat_client/static/assets/vue-components/MobileHeader.vue'
+
+ with open(mobile_header_path, 'r') as f:
+ content = f.read()
+
+ required_elements = [
+ 'class="mobile-header"',
+ 'SideBarLogo',
+ 'LanguageSelector',
+ 'justify-content: space-between',
+ 'align-items: center'
+ ]
+
+ missing_elements = []
+ for element in required_elements:
+ if element not in content:
+ missing_elements.append(element)
+ else:
+ print(f"✓ Found: {element}")
+
+ if missing_elements:
+ print(f"❌ Missing elements in MobileHeader:")
+ for element in missing_elements:
+ print(f" - {element}")
+ return False
+
+ print("✅ MobileHeader component structure is intact")
+ return True
+
+def main():
+ """Run all tests"""
+ print("🔧 Testing Mobile Header Visibility Fix")
+ print("=" * 50)
+
+ tests = [
+ test_mobile_header_css_fix,
+ test_global_css_rules,
+ test_built_assets,
+ test_component_structure
+ ]
+
+ passed = 0
+ failed = 0
+
+ for test in tests:
+ try:
+ if test():
+ passed += 1
+ else:
+ failed += 1
+ except Exception as e:
+ print(f"❌ Test failed with error: {e}")
+ failed += 1
+ print()
+
+ print("=" * 50)
+ print(f"📊 Test Results: {passed} passed, {failed} failed")
+
+ if failed == 0:
+ print("🎉 Mobile header visibility fix is complete!")
+ print("📱 The MobileHeader should now be visible when switching to mobile mode.")
+ return True
+ else:
+ print("⚠️ Some tests failed. Please review the implementation.")
+ return False
+
+if __name__ == "__main__":
+ success = main()
+ sys.exit(0 if success else 1)
\ No newline at end of file
diff --git a/test_mobile_responsive.py b/test_mobile_responsive.py
new file mode 100644
index 0000000..0cbdf89
--- /dev/null
+++ b/test_mobile_responsive.py
@@ -0,0 +1,257 @@
+#!/usr/bin/env python3
+"""
+Test script to verify mobile responsive functionality for eveai_chat_client
+"""
+
+import os
+import sys
+
+def test_files_exist():
+ """Test that all required files exist"""
+ print("Testing file existence...")
+
+ files_to_check = [
+ # Vue components
+ 'eveai_chat_client/static/assets/vue-components/MobileHeader.vue',
+ 'eveai_chat_client/static/assets/vue-components/SideBar.vue',
+ 'eveai_chat_client/static/assets/vue-components/index.js',
+
+ # Templates
+ 'eveai_chat_client/templates/base.html',
+ 'eveai_chat_client/templates/scripts.html',
+
+ # CSS
+ 'eveai_chat_client/static/assets/css/chat.css',
+
+ # Source files
+ 'frontend_src/js/chat-client.js',
+
+ # Built files
+ 'eveai_chat_client/static/dist/chat-client.js',
+ 'eveai_chat_client/static/dist/chat-client.css',
+ ]
+
+ missing_files = []
+ for file_path in files_to_check:
+ if not os.path.exists(file_path):
+ missing_files.append(file_path)
+ else:
+ print(f"✓ {file_path}")
+
+ if missing_files:
+ print(f"\n❌ Missing files:")
+ for file_path in missing_files:
+ print(f" - {file_path}")
+ return False
+
+ print("✅ All required files exist")
+ return True
+
+def test_mobile_header_component():
+ """Test MobileHeader component structure"""
+ print("\nTesting MobileHeader component...")
+
+ mobile_header_path = 'eveai_chat_client/static/assets/vue-components/MobileHeader.vue'
+
+ with open(mobile_header_path, 'r') as f:
+ content = f.read()
+
+ # Check for required elements
+ required_elements = [
+ 'class="mobile-header"',
+ 'SideBarLogo',
+ 'LanguageSelector',
+ '@media (min-width: 769px)',
+ 'display: none'
+ ]
+
+ missing_elements = []
+ for element in required_elements:
+ if element not in content:
+ missing_elements.append(element)
+ else:
+ print(f"✓ Found: {element}")
+
+ if missing_elements:
+ print(f"❌ Missing elements in MobileHeader:")
+ for element in missing_elements:
+ print(f" - {element}")
+ return False
+
+ print("✅ MobileHeader component structure is correct")
+ return True
+
+def test_css_responsive_rules():
+ """Test CSS responsive rules"""
+ print("\nTesting CSS responsive rules...")
+
+ css_path = 'eveai_chat_client/static/assets/css/chat.css'
+
+ with open(css_path, 'r') as f:
+ content = f.read()
+
+ # Check for required CSS rules
+ required_rules = [
+ '#mobile-header-container',
+ '#sidebar-container',
+ '@media (max-width: 768px)',
+ 'flex-direction: column',
+ 'display: none',
+ 'display: block'
+ ]
+
+ missing_rules = []
+ for rule in required_rules:
+ if rule not in content:
+ missing_rules.append(rule)
+ else:
+ print(f"✓ Found: {rule}")
+
+ if missing_rules:
+ print(f"❌ Missing CSS rules:")
+ for rule in missing_rules:
+ print(f" - {rule}")
+ return False
+
+ print("✅ CSS responsive rules are correct")
+ return True
+
+def test_base_html_structure():
+ """Test base.html structure"""
+ print("\nTesting base.html structure...")
+
+ base_html_path = 'eveai_chat_client/templates/base.html'
+
+ with open(base_html_path, 'r') as f:
+ content = f.read()
+
+ # Check for required elements
+ required_elements = [
+ 'id="mobile-header-container"',
+ 'id="sidebar-container"',
+ 'class="content-area"'
+ ]
+
+ missing_elements = []
+ for element in required_elements:
+ if element not in content:
+ missing_elements.append(element)
+ else:
+ print(f"✓ Found: {element}")
+
+ if missing_elements:
+ print(f"❌ Missing elements in base.html:")
+ for element in missing_elements:
+ print(f" - {element}")
+ return False
+
+ print("✅ base.html structure is correct")
+ return True
+
+def test_component_exports():
+ """Test component exports"""
+ print("\nTesting component exports...")
+
+ index_js_path = 'eveai_chat_client/static/assets/vue-components/index.js'
+
+ with open(index_js_path, 'r') as f:
+ content = f.read()
+
+ # Check for required exports
+ required_exports = [
+ 'export { default as SideBar }',
+ 'export { default as MobileHeader }'
+ ]
+
+ missing_exports = []
+ for export in required_exports:
+ if export not in content:
+ missing_exports.append(export)
+ else:
+ print(f"✓ Found: {export}")
+
+ if missing_exports:
+ print(f"❌ Missing exports:")
+ for export in missing_exports:
+ print(f" - {export}")
+ return False
+
+ print("✅ Component exports are correct")
+ return True
+
+def test_chat_client_js():
+ """Test chat-client.js mounting logic"""
+ print("\nTesting chat-client.js mounting logic...")
+
+ chat_client_path = 'frontend_src/js/chat-client.js'
+
+ with open(chat_client_path, 'r') as f:
+ content = f.read()
+
+ # Check for required mounting logic
+ required_elements = [
+ 'getElementById(\'sidebar-container\')',
+ 'getElementById(\'mobile-header-container\')',
+ 'Components.SideBar',
+ 'Components.MobileHeader',
+ 'mount(\'#sidebar-container\')',
+ 'mount(\'#mobile-header-container\')'
+ ]
+
+ missing_elements = []
+ for element in required_elements:
+ if element not in content:
+ missing_elements.append(element)
+ else:
+ print(f"✓ Found: {element}")
+
+ if missing_elements:
+ print(f"❌ Missing elements in chat-client.js:")
+ for element in missing_elements:
+ print(f" - {element}")
+ return False
+
+ print("✅ chat-client.js mounting logic is correct")
+ return True
+
+def main():
+ """Run all tests"""
+ print("🧪 Testing Mobile Responsive Implementation")
+ print("=" * 50)
+
+ tests = [
+ test_files_exist,
+ test_mobile_header_component,
+ test_css_responsive_rules,
+ test_base_html_structure,
+ test_component_exports,
+ test_chat_client_js
+ ]
+
+ passed = 0
+ failed = 0
+
+ for test in tests:
+ try:
+ if test():
+ passed += 1
+ else:
+ failed += 1
+ except Exception as e:
+ print(f"❌ Test failed with error: {e}")
+ failed += 1
+ print()
+
+ print("=" * 50)
+ print(f"📊 Test Results: {passed} passed, {failed} failed")
+
+ if failed == 0:
+ print("🎉 All tests passed! Mobile responsive implementation is complete.")
+ return True
+ else:
+ print("⚠️ Some tests failed. Please review the implementation.")
+ return False
+
+if __name__ == "__main__":
+ success = main()
+ sys.exit(0 if success else 1)
\ No newline at end of file