(function(e){function t(t){for(var s,i,o=t[0],l=t[1],u=t[2],d=0,g=[];d=500},attrs:{placeholder:"Skriv ditt meddelande...",disabled:e.isLegal||e.isLoading},domProps:{value:e.newMessage},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.sendMessage()},input:[function(t){t.target.composing||(e.newMessage=t.target.value)},e.limitMessageLength]}}),e.micActive?e._e():n("p",{staticClass:"char-count"},[e._v(" "+e._s(e.newMessage.length)+"/500 ")]),n("button",{attrs:{disabled:e.isLoading||e.isLegal||!e.newMessage.trim()},on:{click:function(t){return e.sendMessage()}}},[n("svg",{attrs:{xmlns:"http://www.w3.org/2000/svg",width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"}},[n("line",{attrs:{x1:"22",y1:"2",x2:"11",y2:"13"}}),n("polygon",{attrs:{points:"22 2 15 22 11 13 2 9 22 2"}})])])]),e.newMessage.length>=500?n("p",{staticClass:"limit-message"},[e._v(" StĂ€ll din frĂ„ga med 500 tecken. ")]):e._e()])])},o=[function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("div",{staticClass:"chat-header"},[s("div",{staticClass:"header-icon-text",attrs:{id:"amigo-head"}},[s("img",{staticClass:"header-chat-icon",attrs:{src:n("1ae7"),alt:"Chat Icon"}}),s("h3",[e._v("Julia AI-jurist")])])])},function(){var e=this,t=e.$createElement,s=e._self._c||t;return s("span",{staticClass:"lawyer-icon"},[s("img",{staticClass:"lawyer",attrs:{src:n("1ae7"),alt:"Chat Icon"}})])}],l=n("5530"),u=n("1da1"),c=n("668b"),d=(n("96cf"),n("ac1f"),n("5319"),n("99af"),n("0d03"),n("a15b"),n("4d90"),n("d81d"),n("4de4"),n("fb6a"),n("d3b7"),n("4795"),n("a434"),n("25f0"),n("498a"),n("2ca0"),n("8a79"),n("caad"),n("2532"),n("c740"),n("1315")),g=n("27e6"),p=n.n(g),f=new p.a({dangerouslyAllowBrowser:!0,apiKey:"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",timeout:3e4}),h={name:"LegalChatbot",data:function(){return{isLegal:!1,micActive:!1,newMessage:"",isLoading:!1,messages:[],thread:null,assistantId:"asst_VjRD0SwAedf90f0UY2PNEGAr",activeRunId:null,messageQueue:[],typingController:{shouldStop:!1,intervalId:null},currentSession:[],sessionStartTime:null,sessionId:null,updatedTimeStamp:null,responseLanguage:"sv",botResponseComplete:!1}},mounted:function(){this.startNewSession(),this.initThread()},methods:{formatMessageWithLinks:function(e){var t=e.text,n=/(?').concat(e,"")})),t},startNewSession:function(){this.sessionId=this.generateSessionId(),this.currentSession=[],this.isLegal=!1,this.botResponseComplete=!1},generateSessionId:function(){var e=new Date,t=[e.getFullYear(),String(e.getMonth()+1).padStart(2,"0"),String(e.getDate()).padStart(2,"0")].join("-"),n=Math.floor(900*Math.random()+100);return"".concat(t,"-").concat(n)},saveChatSession:function(){var e=this;return Object(u["a"])(regeneratorRuntime.mark((function t(){var n,s;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:if(!(e.currentSession.length>0&&e.isLegal)){t.next=12;break}return n=e.currentSession.filter((function(e){return!e.isLoading})).map((function(e){return{text:e.text,sender:"bot"===e.sender?"assistant":"user",time:e.time,isLoading:e.isLoading||!1}})),s={sessionId:e.sessionId,chats:JSON.stringify(n),updatedTimeStamp:e.updatedTimeStamp},t.prev=3,t.next=6,e.$store.dispatch("saveChatbotSession",s);case 6:console.log("Session payload:",s),t.next=12;break;case 9:t.prev=9,t.t0=t["catch"](3),console.error("Failed to save session:",t.t0);case 12:case"end":return t.stop()}}),t,null,[[3,9]])})))()},getCurrentCETISOString:function(){return d["DateTime"].now().setZone("Europe/Stockholm").toISO({suppressMilliseconds:!0,includeOffset:!1})},limitMessageLength:function(){this.newMessage.length>500&&(this.newMessage=this.newMessage.slice(0,500))},initThread:function(){var e=this;return Object(u["a"])(regeneratorRuntime.mark((function t(){var n,s,r;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,f.beta.threads.create();case 3:return e.thread=t.sent,n={text:"SnĂ€lla ge mig en sekund...",sender:"bot",time:e.getCurrentCETISOString(),isLoading:!0},e.messages=[n],e.currentSession=[Object(l["a"])({},n)],e.updatedTimeStamp=e.getCurrentCETISOString(),t.next=10,new Promise((function(e){return setTimeout(e,1e3)}));case 10:return n.isLoading=!1,s="Hej! Jag Ă€r AI-juristen Julia och jag Ă€r hĂ€r för att göra juridiken enklare för dig. Vad behöver du hjĂ€lp med?",t.next=14,e.typeTextEffect(n,s,10);case 14:e.messages.splice(0,1,Object(l["a"])({},n)),e.currentSession.splice(0,1,Object(l["a"])({},n)),e.updatedTimeStamp=e.getCurrentCETISOString(),t.next=25;break;case 19:t.prev=19,t.t0=t["catch"](0),console.error("Error starting thread.",t.t0),r={text:"Ett fel uppstod. Försök igen senare.",sender:"bot",time:e.getCurrentCETISOString(),isError:!0},e.messages.push(r),e.currentSession.push(r);case 25:return t.prev=25,e.isLoading=!1,t.finish(25);case 28:case"end":return t.stop()}}),t,null,[[0,19,25,28]])})))()},sendMessage:function(){var e=arguments,t=this;return Object(u["a"])(regeneratorRuntime.mark((function n(){var s,r,a,i,o,u,d,g,p,h,m,v,b,k,w,S,x,L,C,y,I,O,T,_,j,E,M,R,A,N,J;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if(s=e.length>0&&void 0!==e[0]?e[0]:null,r=(s||t.newMessage||"").toString(),!t.runInProgress&&!t.activeRunId){n.next=6;break}return console.log("Run in progress. Queuing message..."),t.messageQueue.push(r),n.abrupt("return");case 6:if(""!==r.trim()&&t.thread){n.next=8;break}return n.abrupt("return");case 8:return t.activeRunId=!0,t.isLoading=!0,t.botResponseComplete=!1,a={text:r,sender:"user",time:t.getCurrentCETISOString()},t.messages.push(a),t.currentSession.push(Object(l["a"])({},a)),t.newMessage="",i={text:"en"===t.responseLanguage?"Please give me a second...":"SnĂ€lla ge mig en sekund...",sender:"bot",time:t.getCurrentCETISOString(),isLoading:!0},t.messages.push(i),o=t.currentSession.push(Object(l["a"])({},i))-1,t.updatedTimeStamp=t.getCurrentCETISOString(),t.scrollToBottom(),n.prev=20,n.next=23,f.beta.threads.messages.create(t.thread.id,{role:"user",content:r});case 23:return n.next=25,f.beta.threads.runs.create(t.thread.id,{assistant_id:t.assistantId,stream:!0,additional_instructions:'VIKTIGT: Svara ENDAST och EXAKT som ett giltigt JSON-objekt. Det fĂ„r INTE förekomma nĂ„gra bakĂ„triktade citattecken (```), förklaringar, text före, text efter, bara det rena JSON-objektet.\n You are a legal assistant helping users based on Swedish law. \n You must reply in Swedish by default. However, if the user writes in English, you should reply in English. and keep the tone helpful and light-hearted. \n You must respond in the SAME LANGUAGE AS THE USER.\n Do not repeat the greeting "Hi! I\'m Julia, the AI lawyer,..." unless it\'s the first contact.\n\n You are a legal expert. When you receive a question, you should not ask follow-up questions. \n Always provide a direct answer based on the information available, even if some information is missing. \n Make reasonable assumptions when needed. Never respond with a question.\n Important: Return ONLY a valid JSON object. \n No text before or after. \n No code blocks like ```json. \n \n Use the exact format below (nothing more, nothing less): \n {\n "isLegal": true or false,\n "answer": "Your answer here",\n "language": "sv" or "en"\n "referenceLink": ""\n }\n - Do not wrap your response in code fences or backticks.\n - Do not prepend or follow with ANY additional text.\n - Your response should be pure JSON. \n\n Rules:\n - Always base your response on official Swedish legal sources.\n - Use "sv" for Swedish and "en" for English, based on the user\'s input.\n - Format the link as plain string, not markdown.\n - If a relevant match is found, include its link.\n - If not, omit the link.\n - Do not construct or guess URLs. \n - Always output pure JSON. \n If the question is legal, set "isLegal": true, otherwise "isLegal": false. \n Always put the answer in "answer".\n Always treat crimes, assaults, and violence as legal issues.\n If the user reports witnessing or being involved in a crime, set "isLegal": true.\n If a legal issue involves safety, violence, police, or law enforcement — always consider it legal.'});case 25:u=n.sent,d="",g=!0,p=!1,n.prev=29,m=Object(c["a"])(u);case 31:return n.next=33,m.next();case 33:return v=n.sent,g=v.done,n.next=37,v.value;case 37:if(b=n.sent,g){n.next=45;break}C=b,y=(null===C||void 0===C||null===(k=C.data)||void 0===k||null===(w=k.delta)||void 0===w||null===(S=w.content)||void 0===S||null===(x=S[0])||void 0===x||null===(L=x.text)||void 0===L?void 0:L.value)||"",d+=y;case 42:g=!0,n.next=31;break;case 45:n.next=51;break;case 47:n.prev=47,n.t0=n["catch"](29),p=!0,h=n.t0;case 51:if(n.prev=51,n.prev=52,g||null==m["return"]){n.next=56;break}return n.next=56,m["return"]();case 56:if(n.prev=56,!p){n.next=59;break}throw h;case 59:return n.finish(56);case 60:return n.finish(51);case 61:return n.prev=61,O=d.trim(),O.startsWith("```json")&&(O=O.slice(7)),O.startsWith("```")&&(O=O.slice(3)),O.endsWith("```")&&(O=O.slice(0,-3)),T=JSON.parse(O),t.isLegal=T.isLegal||!1,t.responseLanguage=T.language||"sv",_=T.answer,j=T.referenceLink&&T.answer.includes(T.referenceLink),T.referenceLink&&"null"!==T.referenceLink&&null!==T.referenceLink&&!j&&(_+="en"===t.responseLanguage?"\n\nFor further information, please see: ".concat(T.referenceLink):"\n\nFör ytterligare information, vĂ€nligen se: ".concat(T.referenceLink)),E={text:_,sender:"bot",time:t.getCurrentCETISOString(),isLoading:!1,referenceLink:T.referenceLink||null},n.next=75,t.typeTextEffect(i,T.answer,10);case 75:if(M=t.messages.findIndex((function(e){return e.time===i.time&&e.isLoading})),-1!==M&&t.messages.splice(M,1,E),(null===(I=t.currentSession[o])||void 0===I?void 0:I.time)===i.time?t.currentSession.splice(o,1,E):(R=t.currentSession.findIndex((function(e){return e.time===i.time&&e.isLoading})),-1!==R&&t.currentSession.splice(R,1,E)),!t.isLegal){n.next=81;break}return n.next=81,t.saveChatSession();case 81:n.next=92;break;case 83:n.prev=83,n.t1=n["catch"](61),console.error("Failed to parse JSON::",d,"err::",n.t1),i.text="Kunde inte tolka svaret korrekt.",i.isLoading=!1,t.isLegal=!1,t.isLoading=!1,(null===(A=t.currentSession[o])||void 0===A?void 0:A.time)===i.time&&t.currentSession.splice(o,1,Object(l["a"])({},i)),t.scrollToBottom();case 92:n.next=103;break;case 94:n.prev=94,n.t2=n["catch"](20),console.error("err::",n.t2),i.text="Ett fel uppstod. Försök igen senare.",i.isLoading=!1,t.isLegal=!1,t.isLoading=!1,(null===(N=t.currentSession[o])||void 0===N?void 0:N.time)===i.time&&t.currentSession.splice(o,1,Object(l["a"])({},i)),t.scrollToBottom();case 103:return n.prev=103,t.activeRunId=!1,t.isLoading=!1,t.botResponseComplete=!0,t.scrollToBottom(),t.messageQueue.length>0&&(J=t.messageQueue.shift(),t.sendMessage(J)),n.finish(103);case 110:case"end":return n.stop()}}),n,null,[[20,94,103,110],[29,47,51,61],[52,,56,60],[61,83]])})))()},typeTextEffect:function(e,t){var n=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:30;return new Promise((function(r){var a=0;e.text="",n.typingController.shouldStop=!1,n.typingController.intervalId=setInterval((function(){if(n.typingController.shouldStop)return clearInterval(n.typingController.intervalId),n.typingController.intervalId=null,void r();e.text+=t.charAt(a),a++,a>=t.length&&(clearInterval(n.typingController.intervalId),n.typingController.intervalId=null,r())}),s)}))},formatTime:function(e){if(!e)return"";var t=d["DateTime"].fromISO(e,{zone:"Europe/Stockholm"});return t.toFormat("hh:mm a")},scrollToBottom:function(){var e=this;this.$nextTick((function(){var t=e.$refs.messagesContainer;t&&t.scrollTo({top:t.scrollHeight,behavior:"smooth"})}))},handleFeedback:function(e){console.log("Feedback: ".concat(e))}}},m=h,v=(n("b496"),n("2877")),b=Object(v["a"])(m,i,o,!1,null,"2fe59de6",null),k=b.exports,w={name:"App",components:{LegalChatbot:k}},S=w,x=(n("5c0b"),Object(v["a"])(S,r,a,!1,null,null,null)),L=x.exports,C=n("8468"),y=n("2f62"),I=n("bc3a"),O=n.n(I),T=O.a.create(),_="https://se-local-server-helen.com/api/";T.defaults.baseURL=_;var j=O.a.create({baseURL:"https://se-local-server-helen.com/api"}),E=function(){return{baseURL:_,http:T}};s["default"].use(y["a"]);var M=new y["a"].Store({state:E(),actions:{saveChatbotSession:function(e,t){return Object(u["a"])(regeneratorRuntime.mark((function n(){var s;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return Object(C["a"])(e),s={sessionId:t.sessionId,chats:t.chats,updatedTimeStamp:t.updatedTimeStamp},n.abrupt("return",new Promise((function(e,n){j.post("/v1/legalChatbot?sessionId=".concat(t.sessionId),s).then((function(){console.log("success"),e()}))["catch"]((function(e){n(e)}))})));case 3:case"end":return n.stop()}}),n)})))()}}}),R=n("5f5b"),A=n("dbbe"),N=n("51c2"),J=n("b1e0"),F=(n("f9e3"),n("2dd8"),n("a584")),P=n("e75b"),Y=n.n(P),D=(n("bf68"),n("b458")),U=n("8a15"),B=n("58ca");s["default"].config.productionTip=!1,U["a"].setOption({interval:12e4}),s["default"].use(U["a"]),s["default"].use(R["a"]),s["default"].use(Y.a),s["default"].use(A["a"]),s["default"].use(N["a"]),s["default"].use(J["a"]),s["default"].use(D["a"]),s["default"].use(B["a"]);new s["default"]({store:M,render:function(e){return e(L)}}).$mount("#app");s["default"].use(F["a"],{config:{id:"G-1F7907FB5B"}})},"5c0b":function(e,t,n){"use strict";n("9c0c")},"9c0c":function(e,t,n){},b496:function(e,t,n){"use strict";n("3ca3f")}});