codicent-app-sdk 0.3.90 → 0.3.92
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AiInput.js +1 -1
- package/dist/cjs/components/AudioIcon.js +1 -1
- package/dist/cjs/components/ChatInput.js +1 -1
- package/dist/cjs/components/ChatMessage.js +1 -1
- package/dist/cjs/components/CombinedPlaceholderDialog.js +1 -1
- package/dist/cjs/components/Footer.js +1 -1
- package/dist/cjs/components/Header.js +1 -1
- package/dist/cjs/components/HtmlView.js +1 -1
- package/dist/cjs/components/MessageInput.js +1 -1
- package/dist/cjs/components/MessageItem.js +1 -1
- package/dist/cjs/components/Profile.js +1 -1
- package/dist/cjs/components/Prompt.js +1 -1
- package/dist/cjs/components/SnapFooter.js +1 -1
- package/dist/cjs/components/TextHeader.js +1 -1
- package/dist/cjs/components/TypingIndicator.js +1 -1
- package/dist/cjs/components/UploadFile.js +1 -1
- package/dist/cjs/components/UrlProcessor.js +1 -1
- package/dist/cjs/components/VoiceIcon.js +1 -1
- package/dist/cjs/hooks/useAuthState.js +1 -1
- package/dist/cjs/hooks/useCodicentState.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
- package/dist/cjs/pages/AppFrame.js +1 -1
- package/dist/cjs/pages/Chat.d.ts +6 -0
- package/dist/cjs/pages/Chat.d.ts.map +1 -1
- package/dist/cjs/pages/Chat.js +1 -2
- package/dist/cjs/pages/Compose.d.ts +6 -0
- package/dist/cjs/pages/Compose.d.ts.map +1 -1
- package/dist/cjs/pages/Compose.js +1 -2
- package/dist/cjs/pages/CrmPage.d.ts +2 -1
- package/dist/cjs/pages/CrmPage.d.ts.map +1 -1
- package/dist/cjs/pages/CrmPage.js +1 -1
- package/dist/cjs/pages/FormAccept.js +1 -1
- package/dist/cjs/pages/FormInvite.js +1 -1
- package/dist/cjs/pages/HtmlViewer.d.ts +8 -0
- package/dist/cjs/pages/HtmlViewer.d.ts.map +1 -0
- package/dist/cjs/pages/HtmlViewer.js +1 -0
- package/dist/cjs/pages/Login.js +1 -1
- package/dist/cjs/pages/Sales.js +1 -1
- package/dist/cjs/pages/Search.js +1 -1
- package/dist/cjs/pages/Snap.js +1 -1
- package/dist/cjs/pages/index.d.ts +3 -0
- package/dist/cjs/pages/index.d.ts.map +1 -1
- package/dist/cjs/services/codicent.js +1 -1
- package/dist/esm/components/AiInput.js +1 -1
- package/dist/esm/components/AudioIcon.js +1 -1
- package/dist/esm/components/ChatInput.js +1 -1
- package/dist/esm/components/ChatMessage.js +1 -1
- package/dist/esm/components/CombinedPlaceholderDialog.js +1 -1
- package/dist/esm/components/Footer.js +1 -1
- package/dist/esm/components/Header.js +1 -1
- package/dist/esm/components/HtmlView.js +1 -1
- package/dist/esm/components/MessageInput.js +1 -1
- package/dist/esm/components/MessageItem.js +1 -1
- package/dist/esm/components/Profile.js +1 -1
- package/dist/esm/components/Prompt.js +1 -1
- package/dist/esm/components/SnapFooter.js +1 -1
- package/dist/esm/components/TextHeader.js +1 -1
- package/dist/esm/components/TypingIndicator.js +1 -1
- package/dist/esm/components/UploadFile.js +1 -1
- package/dist/esm/components/UrlProcessor.js +1 -1
- package/dist/esm/components/VoiceIcon.js +1 -1
- package/dist/esm/hooks/useAuthState.js +1 -1
- package/dist/esm/hooks/useCodicentState.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js +1 -1
- package/dist/esm/pages/AppFrame.js +1 -1
- package/dist/esm/pages/Chat.d.ts +6 -0
- package/dist/esm/pages/Chat.d.ts.map +1 -1
- package/dist/esm/pages/Chat.js +1 -2
- package/dist/esm/pages/Compose.d.ts +6 -0
- package/dist/esm/pages/Compose.d.ts.map +1 -1
- package/dist/esm/pages/Compose.js +1 -2
- package/dist/esm/pages/CrmPage.d.ts +2 -1
- package/dist/esm/pages/CrmPage.d.ts.map +1 -1
- package/dist/esm/pages/CrmPage.js +1 -1
- package/dist/esm/pages/FormAccept.js +1 -1
- package/dist/esm/pages/FormInvite.js +1 -1
- package/dist/esm/pages/HtmlViewer.d.ts +8 -0
- package/dist/esm/pages/HtmlViewer.d.ts.map +1 -0
- package/dist/esm/pages/HtmlViewer.js +1 -0
- package/dist/esm/pages/Login.js +1 -1
- package/dist/esm/pages/Sales.js +1 -1
- package/dist/esm/pages/Search.js +1 -1
- package/dist/esm/pages/Snap.js +1 -1
- package/dist/esm/pages/index.d.ts +3 -0
- package/dist/esm/pages/index.d.ts.map +1 -1
- package/dist/esm/services/codicent.js +1 -1
- package/dist/index.d.ts +15 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var t,e=require("../node_modules/@stripe/stripe-js/dist/index.js"),a=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("react/jsx-runtime"),require("react"),require("../_virtual/index.js"),require("../config/index.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js");let o="https://codicent.com/",n="-";const i=()=>void 0!==window.Codicent&&(window.Codicent.handleMessage=function(t){const e=new CustomEvent("codicent-log",{detail:{message:t}});window.dispatchEvent(e)},window.Codicent.init({token:n,baseUrl:o}),!0);let s=i();if(!s){const t=setInterval((()=>{s=i(),s&&clearInterval(t)}),100)}class r{constructor(t){this.createDataMessage=async(t,e)=>await window.Codicent.data.create({codicent:this.codicent,tag:t,data:e}),this.readDataMessages=async(t,e)=>await window.Codicent.data.read({codicent:this.codicent,tag:t,search:e}),this.readOneDataMessage=async t=>await window.Codicent.data.readOne(t),this.updateDataMessage=async(t,e)=>await window.Codicent.data.update({id:t,data:e,codicent:this.codicent}),this.deleteDataMessage=async t=>await window.Codicent.data.delete({id:t,codicent:this.codicent}),this.getAppTheme=async()=>{try{const t=await window.Codicent.getDataMessages({tags:["app-theme"],codicent:this.codicent});return t.length>0?t[0].data:null}catch(t){return console.error("Error fetching app theme:",t),null}},this.getAppButtons=async()=>{const t=(await window.Codicent.getDataMessages({tags:[this.options.BUTTON_TAG],codicent:this.codicent})).map((t=>t.data));return t.sort(((t,e)=>t.title>e.title?1:-1)),t},this.getAppTasks=async()=>(await window.Codicent.getMessages({search:`@${this.codicent} #app-task`,length:50})).map((t=>{const e=new a.default(t.content).content.split("\n"),o=e[0],n=e.slice(1).join("\n");return{id:t.id,title:o,content:n}})),this.getAppPrompts=async()=>(await window.Codicent.getDataMessages({tags:["chatprompt"],codicent:this.codicent})).map((t=>t.data)).map((({title:t,prompt:e})=>({title:t,prompt:e}))),this.uploadFile=async(t,e)=>await window.Codicent.upload(e,t),this.getFileInfo=async t=>await window.Codicent.getFileInfo(t),this.generateApiToken=async(t,e)=>{const a=await fetch(`${o}api/GenerateApiToken?project=${this.codicent}${t?`&expires=${t.toISOString()}`:""}${e?`&forUserNickname=${e}`:""}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText}`);return await a.text()},this.sendMessage=(t,e)=>window.Codicent.postMessage({message:`@${this.codicent} ${t}`,type:"text",parentId:e}),this.chat=(t,e)=>window.Codicent.getChatReply3({message:t,codicent:this.codicent,messageId:e}),this.getMessagesFast=async(t,e,a=100,n=void 0)=>{const i=await this.request(`${o}app/AppGetMessages`,"POST",{headers:[["Authorization",`Bearer ${this.getToken()}`],["Content-Type","application/json; charset=utf-8"]],body:JSON.stringify({tags:t,codicent:this.codicent,search:e,length:a})});let s=await i.json();if(s.forEach((t=>{t.createdAt=new Date(Date.parse(t.createdAt))})),n){const t=await this.getPublicFlow(n);s=s.concat(t),s.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime()))}return s},this.getMessages=async(t,e)=>{let a=[];const o=t.map((async t=>{const e=await window.Codicent.getMessages({search:`@${this.codicent} #${t}`,length:10});return"chat"===t&&e.forEach((t=>t.content=`#chat\n${t.content}`)),e}));if((await Promise.all(o)).forEach((t=>{a=a.concat(t)})),e)try{const t=await this.getPublicFlow(e);a=a.concat(t)}catch(t){console.warn("Error fetching public flow, PUBLIC_TAG missing in codicent?",t)}return a=a.filter(((t,e,a)=>e===a.findIndex((e=>e.id===t.id)))),a.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())),a},this.registerUser=async(t,e,a,n)=>{const i=await fetch(`${o}app/RegisterAuth0User`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${n}`]],body:JSON.stringify({nickname:t,email:e,userId:a})});if(!i.ok)return"";const s=await i.text();return window.Codicent.init({token:n,baseUrl:o}),s},this.loginUser=async(t,e)=>{try{const a=await fetch(`${o}app/LoginAuth0User`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${e}`]],body:JSON.stringify({userId:t})});if(!a.ok)return 404===a.status||400===a.status?null:401===a.status?(this.handleUnauthorized(),null):"";const n=await a.text();return this.setToken(n),n}catch(t){return console.warn("Error logging in user:",t),""}},this.nicknameExists=async t=>{const e=await fetch(`${o}app/NicknameExists?nickname=${encodeURIComponent(t)}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"]]});if(!e.ok)return!1;return await e.json()},this.logout=()=>{this.setToken("")},this.isRegistered=()=>null!==localStorage.getItem("codicent_nickname"),this.getApps=async()=>{try{const t=await fetch(`${o}app/AppGetApps`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!t.ok)throw t.status,new Error(`${t.statusText}`);const e=(await t.json()).filter(((t,e,a)=>e===a.findIndex((e=>e.id===t.id))&&(this.options.APP_NAME||t.id.startsWith(this.options.APP_PREFIX))));return e}catch(t){return console.warn("Error fetching apps:",t),null}},this.addFollower=async(t,e)=>{const a=await fetch(`${o}app/AddFollower?nickname=${t}&followerNickname=${e}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText||"Failed to add follower!"}`);return await a.json()},this.cloneProject=async(t,e)=>{const a=await fetch(`${o}app/CloneProject?project=${t}&newProject=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText}`);let n=await a.json();if(n){const t='#data #app-theme \n{\n "textcolor": "#212121",\n "backgroundcolor": "#273044",\n "color": "#ffffff",\n "logo": "https://codicent.com/logo512.png",\n "title": "",\n "themeColor": "#581d71",\n "buttonColor": "#c0c0c0",\n "buttonTextColor": "#000000",\n "font": "Montserrat",\n "welcome": "Hej {{username}}!",\n "chatPlaceholder": "Tjena, Loociz här! Vad vill du?",\n "textPlaceholder": "Skriv det du vill spara, så tar jag (Loociz alltså) hand om det!",\n "transcriptionInstructions": "Tryck på knappen för att start och sedan stoppa ljudinspelning."\n}';try{await window.Codicent.postMessage({message:`@${e} ${t}`,type:"text"})||(n=!1)}catch{n=!1}if(n){const t='#data #app-button\n{\n "title": "Ta fram företagsinfo",\n "url": "/#/chat?text=Hej!%20Jag%20vill%20spara%20f%C3%B6retagsinfo.%20Guida%20mig%20steg%20f%C3%B6r%20steg%2C%20ett%20i%20taget%2C%20tills%20vi%20har%20all%20info%20om%20mitt%20f%C3%B6retag.%20Exempel%20p%C3%A5%20data%3A%20f%C3%B6retagsnamn%20eller%20id%C3%A9namn%2C%20org.nr.%2C%20%C3%A4gare%2C%20kontaktinformation%2C%20vision%2C%20aff%C3%A4rsid%C3%A9%2C%20mm."\n}';try{await window.Codicent.postMessage({message:`@${e} ${t}`,type:"text"})||(n=!1)}catch{n=!1}}}return n},this.getNickname=async()=>{try{const t=n.split(".")[1],e=atob(t),a=JSON.parse(e),i=a.sub||a.userId,s=await fetch(`${o}app/GetNickname?userId=${i}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!s.ok)throw 401===s.status?(this.handleUnauthorized(),new Error("Unauthorized")):new Error(`${s.statusText}`);return await s.text()}catch{return""}},this.getChatInstructions=async()=>{try{const t=await window.Codicent.getMessages({search:`@${this.codicent} #instructions`,length:1});if(t.length>0)return t[0].content}catch{console.warn("Error fetching chat instructions")}return""},this.updateChatInstructions=async t=>{try{const e=await window.Codicent.getMessages({search:`@${this.codicent} #instructions`,length:100}),a=`@${this.codicent} #instructions\n${t}`;e.length>0?e[0].content!==a&&(console.log("updating instructions",a),await window.Codicent.postMessage({message:a,type:"text",parentId:e[0].id})):(console.log("new instructions",a),await window.Codicent.postMessage({message:a,type:"text"}))}catch{console.warn("Error updating chat instructions")}},this.getUserInfo=async(t,e=!1)=>{const a=await fetch(`${o}/app/GetUserInfo?nickname=${t}${e?"&t="+Date.now():""}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw 401===a.status?(this.handleUnauthorized(),new Error("Unauthorized")):new Error(`${a.statusText}`);const n=await a.json(),{email:i,picture:s,description:r,followers:c,properties:h,owner:d}=n;return{nickname:t,email:i,name:r,picture:s,followers:c,properties:h,owner:d}},this.updateUserInfo=async({nickname:t,email:e,name:a,picture:n})=>{const i=await fetch(`${o}/app/AddOrUpdateUser`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]],body:JSON.stringify({nickname:t,email:e,name:a,picture:n,description:""})});if(!i.ok)throw i.status,new Error(`${i.statusText}`);return await this.getUserInfo(t,!0)},this.requestInvite=async(t,e)=>{const a=await fetch(`${o}/app/CreateInvitationOrRequest?forUserNickname=${t}&toProjectNickname=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return!!a.ok||(console.warn(`requestInvite() => ${a.statusText}`),!1)},this.getProjectInfo=this.getUserInfo,this.updateMembersAccess=async(t,e)=>{const a=await fetch(`${o}/app/AddOrUpdateProjectProperty?project=${t}&key=APP_EDITORS&value=${e.join(",")}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return!!a.ok||(console.warn(`updateMembersAccess() => ${a.statusText}`),!1)},this.getMembersAccess=async t=>{const e=(await this.getProjectInfo(t,!0)).properties.find((t=>"APP_EDITORS"===t.name));return e&&e.value?e.value.split(","):[]},this.setToken=t=>{n=t,n&&window.Codicent.init({token:n,baseUrl:o})},this.getToken=()=>n,this.checkPurchaseStatus=async()=>{const t=await fetch(`${o}payments/GetPaymentStatus`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!t.ok)throw new Error("Failed to check purchase status");const{isPaid:e}=await t.json();return e},this.checkSubscriptionStatus=async()=>{if(!this.options.SUBSCRIPTION_NEEDED)return"active";const t=await fetch(`${o}payments/GetSubscriptionStatus?t=${Date.now()}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`],["Cache-Control","no-cache, no-store, must-revalidate"],["Pragma","no-cache"],["Expires","0"]]});if(!t.ok)throw new Error("Failed to check subscription status");const{status:e}=await t.json();return e},this.createCheckoutSession=async t=>{const e=await fetch(`${o}payments/CreateCheckoutSession`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]],body:JSON.stringify({priceId:t,successUrl:window.location.href,cancelUrl:window.location.href})});if(!e.ok)throw new Error("Failed to create checkout session");const{id:a}=await e.json();return a},this.redirectToCheckout=async t=>{const a=await e.loadStripe(this.options.STRIPE_PUBLIC_KEY);if(!a)throw new Error("Stripe failed to load");const o=await this.createCheckoutSession(t),{error:n}=await a.redirectToCheckout({sessionId:o});if(n)throw new Error(n.message)},this.getChatHistory=async t=>{const e=await fetch(`${o}api/GetMessageHistory?messageId=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!e.ok)throw new Error("Failed to get chat history");let a=await e.json();return a=a.filter((t=>!t.content.includes("#function_result")&&!t.content.includes("#finish_reason_function_call"))),a},this.getPublicFlow=async t=>{const e=await fetch(`${o}/app/GetPublicFlow?codicent=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!e.ok)throw new Error("Failed to get public flow");const a=await e.json();return a.forEach((t=>{t.createdAt=new Date(Date.parse(t.createdAt))})),a},this.getMessageContent=async t=>{const e=await fetch(`${o}app/GetMessageContent?id=${t}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(e.ok){const t=await e.json();return{content:t.content,url:t.url}}return{content:"",url:""}},this.logAction=async(t,e)=>{if(!this.options.APP_LOG_CODICENT)return"";const a={content:`@${this.options.APP_LOG_CODICENT} #debug #${e}\n${t}`,type:"text"},n=await fetch(`${o}app/AddChatMessage`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.options.APP_LOG_TOKEN}`]],body:JSON.stringify(a)});if(!n.ok)throw new Error(`${n.statusText||"Failed to post log message!"}`);return(await n.json()).id},this.createApp=async()=>{try{for(let t=0;t<50;t++){const t=Math.floor(99999*Math.random())+1,e=`${this.options.APP_PREFIX}${t}`;if(!await this.nicknameExists(e)){if(await this.cloneProject(this.options.APP_TEMPLATE,e)){if(this.options.ANONYMOUS_TOKEN)try{const t=this.options.ANONYMOUS_TOKEN.split(".")[1],a=atob(t),o=JSON.parse(a).nickname;if(!await this.addFollower(e,o))throw new Error("Failed to add follower: "+o)}catch(t){console.error("Error extracting adding anonymous follower:",t)}return e}}}}catch(t){console.error("Error creating app:",t)}return null},this.findUsername=async()=>{try{for(let t=0;t<50;t++){const t=Math.floor(99999*Math.random())+1,e=`${this.options.USER_PREFIX}${t}`;if(!await this.nicknameExists(e))return e}}catch(t){console.warn("Error finding username:",t)}return null},this.getForms=async()=>{const t=await this.request(`${o}app/GetForms?codicent=${this.codicent}`,"GET",{headers:[["Authorization",`Bearer ${this.getToken()}`]]});return await t.json()},this.getFormById=async t=>{const e=await fetch(`${o}app/GetFormById?id=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return await e.json()},this.getTodoStatus=async t=>{const e=await fetch(`${o}/app/GetTodoStatus?messageId=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return e.ok?await e.text():(e.status,console.warn(`getTodoStatus() => ${e.statusText}`),"unknown")},this.updateTodoStatus=async(t,e)=>{const a=await fetch(`${o}/app/UpdateTodoStatus?messageId=${t}&status=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)return console.warn(`updateTodoStatus() => ${a.statusText}`),!1;return await a.json()},this.codicent="",this.options=t}async request(t,e,a={}){const o={};a.headers&&a.headers.forEach((([t,e])=>{o[t]=e}));const n=await fetch(t,{...a,method:e,headers:o});if(!n.ok)throw 401===n.status&&this.handleUnauthorized(),new Error(`${n.statusText}`);return n}handleUnauthorized(){this.onUnauthorized&&this.onUnauthorized()}}t=r,r.getImageUrl=(t,e)=>`${o}app/GetImage?fileId=${t}&width=${e}`,r.getFileUrl=(t,e)=>`${o}app/DownloadFile?fileId=${t}${e?`&extension=${e}`:""}`,r.downloadFile=async e=>{fetch(t.getFileUrl(e.id)).then((t=>{if(t.headers.forEach(((t,e)=>{console.log(`${e}: ${t}`)})),t.ok)return t.blob();throw new Error("Network response was not ok.")})).then((t=>{const a=window.URL.createObjectURL(t),o=document.createElement("a");o.style.display="none",o.href=a,o.download=e.filename,document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(a)})).catch((t=>{console.error("There was a problem with the fetch operation:",t)}))},r.getMiniChatReply=async(t,e="codicent-mini",a)=>{const n=await fetch(`${o}app/GetAi2ChatReply?message=${t}&project=${e}${a?"&messageId="+a:""}`,{method:"GET",headers:[["Authorization","Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjJlMTliNjNmLWQxNDgtNGRmMi04MzMxLTZlZGE3ZTQzNjQ1ZCIsIm5pY2tuYW1lIjoiam9oYW4iLCJuYW1lIjoiSm9oYW4gSXNha3Nzb24iLCJ1c2VySWQiOiIyZTE5YjYzZi1kMTQ4LTRkZjItODMzMS02ZWRhN2U0MzY0NWQiLCJwcm9qZWN0IjoiY29kaWNlbnQtbWluaSIsIm5iZiI6MTczNjkzMjcyOCwiZXhwIjoxNzY4NDY4NzI4LCJpYXQiOjE3MzY5MzI3Mjh9.l2J7GgfU01iihdud7QP1aYBCM3NgxxqiM4VrplLO1s0"]]});if(!n.ok)return void n.status;return(await n.json()).content.replace("@codicent-mini","").trim()},exports.CodicentService=r;
|
|
1
|
+
"use strict";var t,e=require("../node_modules/@stripe/stripe-js/dist/index.js"),a=require("../utils/MessageContent.js");require("../node_modules/tinycolor2/esm/tinycolor.js"),require("react/jsx-runtime"),require("react"),require("../_virtual/index.js"),require("../config/index.js"),require("../lib/wavtools/lib/wav_packer.js"),require("../lib/wavtools/lib/analysis/audio_analysis.js"),require("../lib/wavtools/lib/wav_stream_player.js"),require("../lib/wavtools/lib/wav_recorder.js");let o="https://codicent.com/",n="-";const i=()=>void 0!==window.Codicent&&(window.Codicent.handleMessage=function(t){const e=new CustomEvent("codicent-log",{detail:{message:t}});window.dispatchEvent(e)},window.Codicent.init({token:n,baseUrl:o}),!0);let s=i();if(!s){const t=setInterval((()=>{s=i(),s&&clearInterval(t)}),100)}class r{constructor(t){this.createDataMessage=async(t,e)=>await window.Codicent.data.create({codicent:this.codicent,tag:t,data:e}),this.readDataMessages=async(t,e)=>await window.Codicent.data.read({codicent:this.codicent,tag:t,search:e}),this.readOneDataMessage=async t=>await window.Codicent.data.readOne(t),this.updateDataMessage=async(t,e)=>await window.Codicent.data.update({id:t,data:e,codicent:this.codicent}),this.deleteDataMessage=async t=>await window.Codicent.data.delete({id:t,codicent:this.codicent}),this.getAppTheme=async()=>{try{const t=await window.Codicent.getDataMessages({tags:["app-theme"],codicent:this.codicent});return t.length>0?t[0].data:null}catch(t){return console.error("Error fetching app theme:",t),null}},this.getAppButtons=async()=>{const t=(await window.Codicent.getDataMessages({tags:[this.options.BUTTON_TAG],codicent:this.codicent})).map((t=>t.data));return t.sort(((t,e)=>t.title>e.title?1:-1)),t},this.getAppTasks=async()=>(await window.Codicent.getMessages({search:`@${this.codicent} #app-task`,length:50})).map((t=>{const e=new a.default(t.content).content.split("\n"),o=e[0],n=e.slice(1).join("\n");return{id:t.id,title:o,content:n}})),this.getAppPrompts=async()=>(await window.Codicent.getDataMessages({tags:["chatprompt"],codicent:this.codicent})).map((t=>t.data)).map((({title:t,prompt:e})=>({title:t,prompt:e}))),this.uploadFile=async(t,e)=>await window.Codicent.upload(e,t),this.getFileInfo=async t=>await window.Codicent.getFileInfo(t),this.generateApiToken=async(t,e)=>{const a=await fetch(`${o}api/GenerateApiToken?project=${this.codicent}${t?`&expires=${t.toISOString()}`:""}${e?`&forUserNickname=${e}`:""}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText}`);return await a.text()},this.sendMessage=(t,e)=>window.Codicent.postMessage({message:`@${this.codicent} ${t}`,type:"text",parentId:e}),this.chat=(t,e)=>window.Codicent.getChatReply3({message:t,codicent:this.codicent,messageId:e}),this.getMessagesFast=async(t,e,a=100,n=void 0)=>{const i=await this.request(`${o}app/AppGetMessages`,"POST",{headers:[["Authorization",`Bearer ${this.getToken()}`],["Content-Type","application/json; charset=utf-8"]],body:JSON.stringify({tags:t,codicent:this.codicent,search:e,length:a})});let s=await i.json();if(s.forEach((t=>{t.createdAt=new Date(Date.parse(t.createdAt))})),n){const t=await this.getPublicFlow(n);s=s.concat(t),s.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime()))}return s},this.getMessages=async(t,e)=>{let a=[];const o=t.map((async t=>{const e=await window.Codicent.getMessages({search:`@${this.codicent} #${t}`,length:10});return"chat"===t&&e.forEach((t=>t.content=`#chat\n${t.content}`)),e}));if((await Promise.all(o)).forEach((t=>{a=a.concat(t)})),e)try{const t=await this.getPublicFlow(e);a=a.concat(t)}catch(t){console.warn("Error fetching public flow, PUBLIC_TAG missing in codicent?",t)}return a=a.filter(((t,e,a)=>e===a.findIndex((e=>e.id===t.id)))),a.sort(((t,e)=>e.createdAt.getTime()-t.createdAt.getTime())),a},this.registerUser=async(t,e,a,n)=>{const i=await fetch(`${o}app/RegisterAuth0User`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${n}`]],body:JSON.stringify({nickname:t,email:e,userId:a})});if(!i.ok)return"";const s=await i.text();return window.Codicent.init({token:n,baseUrl:o}),s},this.loginUser=async(t,e)=>{try{const a=await fetch(`${o}app/LoginAuth0User`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${e}`]],body:JSON.stringify({userId:t})});if(!a.ok)return 404===a.status||400===a.status?null:401===a.status?(this.handleUnauthorized(),null):"";const n=await a.text();return this.setToken(n),n}catch(t){return console.warn("Error logging in user:",t),""}},this.nicknameExists=async t=>{const e=await fetch(`${o}app/NicknameExists?nickname=${encodeURIComponent(t)}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"]]});if(!e.ok)return!1;return await e.json()},this.logout=()=>{this.setToken("")},this.isRegistered=()=>null!==localStorage.getItem("codicent_nickname"),this.getApps=async()=>{try{const t=await fetch(`${o}app/AppGetApps`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!t.ok)throw t.status,new Error(`${t.statusText}`);const e=(await t.json()).filter(((t,e,a)=>e===a.findIndex((e=>e.id===t.id))&&(this.options.APP_NAME||t.id.startsWith(this.options.APP_PREFIX))));return e}catch(t){return console.warn("Error fetching apps:",t),null}},this.addFollower=async(t,e)=>{const a=await fetch(`${o}app/AddFollower?nickname=${t}&followerNickname=${e}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText||"Failed to add follower!"}`);return await a.json()},this.cloneProject=async(t,e)=>{const a=await fetch(`${o}app/CloneProject?project=${t}&newProject=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw a.status,new Error(`${a.statusText}`);let n=await a.json();if(n){const t='#data #app-theme \n{\n "textcolor": "#212121",\n "backgroundcolor": "#273044",\n "color": "#ffffff",\n "logo": "https://codicent.com/logo512.png",\n "title": "",\n "themeColor": "#581d71",\n "buttonColor": "#c0c0c0",\n "buttonTextColor": "#000000",\n "font": "Montserrat",\n "welcome": "Hej {{username}}!",\n "chatPlaceholder": "Tjena, Loociz här! Vad vill du?",\n "textPlaceholder": "Skriv det du vill spara, så tar jag (Loociz alltså) hand om det!",\n "transcriptionInstructions": "Tryck på knappen för att start och sedan stoppa ljudinspelning."\n}';try{await window.Codicent.postMessage({message:`@${e} ${t}`,type:"text"})||(n=!1)}catch{n=!1}if(n){const t='#data #app-button\n{\n "title": "Ta fram företagsinfo",\n "url": "/#/chat?text=Hej!%20Jag%20vill%20spara%20f%C3%B6retagsinfo.%20Guida%20mig%20steg%20f%C3%B6r%20steg%2C%20ett%20i%20taget%2C%20tills%20vi%20har%20all%20info%20om%20mitt%20f%C3%B6retag.%20Exempel%20p%C3%A5%20data%3A%20f%C3%B6retagsnamn%20eller%20id%C3%A9namn%2C%20org.nr.%2C%20%C3%A4gare%2C%20kontaktinformation%2C%20vision%2C%20aff%C3%A4rsid%C3%A9%2C%20mm."\n}';try{await window.Codicent.postMessage({message:`@${e} ${t}`,type:"text"})||(n=!1)}catch{n=!1}}}return n},this.getNickname=async()=>{try{const t=n.split(".")[1],e=atob(t),a=JSON.parse(e),i=a.sub||a.userId,s=await fetch(`${o}app/GetNickname?userId=${i}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!s.ok)throw 401===s.status?(this.handleUnauthorized(),new Error("Unauthorized")):new Error(`${s.statusText}`);return await s.text()}catch{return""}},this.getChatInstructions=async()=>{try{const t=await window.Codicent.getMessages({search:`@${this.codicent} #instructions`,length:1});if(t.length>0)return t[0].content}catch{console.warn("Error fetching chat instructions")}return""},this.updateChatInstructions=async t=>{try{const e=await window.Codicent.getMessages({search:`@${this.codicent} #instructions`,length:100}),a=`@${this.codicent} #instructions\n${t}`;e.length>0?e[0].content!==a&&(console.log("updating instructions",a),await window.Codicent.postMessage({message:a,type:"text",parentId:e[0].id})):(console.log("new instructions",a),await window.Codicent.postMessage({message:a,type:"text"}))}catch{console.warn("Error updating chat instructions")}},this.getUserInfo=async(t,e=!1)=>{const a=await fetch(`${o}app/GetUserInfo?nickname=${t}${e?"&t="+Date.now():""}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)throw 401===a.status?(this.handleUnauthorized(),new Error("Unauthorized")):new Error(`${a.statusText}`);const n=await a.json(),{email:i,picture:s,description:r,followers:c,properties:h,owner:d}=n;return{nickname:t,email:i,name:r,picture:s,followers:c,properties:h,owner:d}},this.updateUserInfo=async({nickname:t,email:e,name:a,picture:n})=>{const i=await fetch(`${o}app/AddOrUpdateUser`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]],body:JSON.stringify({nickname:t,email:e,name:a,picture:n,description:""})});if(!i.ok)throw i.status,new Error(`${i.statusText}`);return await this.getUserInfo(t,!0)},this.requestInvite=async(t,e)=>{const a=await fetch(`${o}app/CreateInvitationOrRequest?forUserNickname=${t}&toProjectNickname=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return!!a.ok||(console.warn(`requestInvite() => ${a.statusText}`),!1)},this.getProjectInfo=this.getUserInfo,this.updateMembersAccess=async(t,e)=>{const a=await fetch(`${o}app/AddOrUpdateProjectProperty?project=${t}&key=APP_EDITORS&value=${e.join(",")}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return!!a.ok||(console.warn(`updateMembersAccess() => ${a.statusText}`),!1)},this.getMembersAccess=async t=>{const e=(await this.getProjectInfo(t,!0)).properties.find((t=>"APP_EDITORS"===t.name));return e&&e.value?e.value.split(","):[]},this.setToken=t=>{n=t,n&&window.Codicent.init({token:n,baseUrl:o})},this.getToken=()=>n,this.checkPurchaseStatus=async()=>{const t=await fetch(`${o}payments/GetPaymentStatus`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(!t.ok)throw new Error("Failed to check purchase status");const{isPaid:e}=await t.json();return e},this.checkSubscriptionStatus=async()=>{if(!this.options.SUBSCRIPTION_NEEDED)return"active";const t=await fetch(`${o}payments/GetSubscriptionStatus?t=${Date.now()}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`],["Cache-Control","no-cache, no-store, must-revalidate"],["Pragma","no-cache"],["Expires","0"]]});if(!t.ok)throw new Error("Failed to check subscription status");const{status:e}=await t.json();return e},this.createCheckoutSession=async t=>{const e=await fetch(`${o}payments/CreateCheckoutSession`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]],body:JSON.stringify({priceId:t,successUrl:window.location.href,cancelUrl:window.location.href})});if(!e.ok)throw new Error("Failed to create checkout session");const{id:a}=await e.json();return a},this.redirectToCheckout=async t=>{const a=await e.loadStripe(this.options.STRIPE_PUBLIC_KEY);if(!a)throw new Error("Stripe failed to load");const o=await this.createCheckoutSession(t),{error:n}=await a.redirectToCheckout({sessionId:o});if(n)throw new Error(n.message)},this.getChatHistory=async t=>{const e=await fetch(`${o}api/GetMessageHistory?messageId=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!e.ok)throw new Error("Failed to get chat history");let a=await e.json();return a=a.filter((t=>!t.content.includes("#function_result")&&!t.content.includes("#finish_reason_function_call"))),a},this.getPublicFlow=async t=>{const e=await fetch(`${o}app/GetPublicFlow?codicent=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!e.ok)throw new Error("Failed to get public flow");const a=await e.json();return a.forEach((t=>{t.createdAt=new Date(Date.parse(t.createdAt))})),a},this.getMessageContent=async t=>{const e=await fetch(`${o}app/GetMessageContent?id=${t}`,{method:"GET",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.getToken()}`]]});if(e.ok){const t=await e.json();return{content:t.content,url:t.url}}return{content:"",url:""}},this.logAction=async(t,e)=>{if(!this.options.APP_LOG_CODICENT)return"";const a={content:`@${this.options.APP_LOG_CODICENT} #debug #${e}\n${t}`,type:"text"},n=await fetch(`${o}app/AddChatMessage`,{method:"POST",headers:[["Content-Type","application/json; charset=utf-8"],["Authorization",`Bearer ${this.options.APP_LOG_TOKEN}`]],body:JSON.stringify(a)});if(!n.ok)throw new Error(`${n.statusText||"Failed to post log message!"}`);return(await n.json()).id},this.createApp=async()=>{try{for(let t=0;t<50;t++){const t=Math.floor(99999*Math.random())+1,e=`${this.options.APP_PREFIX}${t}`;if(!await this.nicknameExists(e)){if(await this.cloneProject(this.options.APP_TEMPLATE,e)){if(this.options.ANONYMOUS_TOKEN)try{const t=this.options.ANONYMOUS_TOKEN.split(".")[1],a=atob(t),o=JSON.parse(a).nickname;if(!await this.addFollower(e,o))throw new Error("Failed to add follower: "+o)}catch(t){console.error("Error extracting adding anonymous follower:",t)}return e}}}}catch(t){console.error("Error creating app:",t)}return null},this.findUsername=async()=>{try{for(let t=0;t<50;t++){const t=Math.floor(99999*Math.random())+1,e=`${this.options.USER_PREFIX}${t}`;if(!await this.nicknameExists(e))return e}}catch(t){console.warn("Error finding username:",t)}return null},this.getForms=async()=>{const t=await this.request(`${o}app/GetForms?codicent=${this.codicent}`,"GET",{headers:[["Authorization",`Bearer ${this.getToken()}`]]});return await t.json()},this.getFormById=async t=>{const e=await fetch(`${o}app/GetFormById?id=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return await e.json()},this.getTodoStatus=async t=>{const e=await fetch(`${o}app/GetTodoStatus?messageId=${t}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});return e.ok?await e.text():(e.status,console.warn(`getTodoStatus() => ${e.statusText}`),"unknown")},this.updateTodoStatus=async(t,e)=>{const a=await fetch(`${o}app/UpdateTodoStatus?messageId=${t}&status=${e}`,{method:"GET",headers:[["Authorization",`Bearer ${this.getToken()}`]]});if(!a.ok)return console.warn(`updateTodoStatus() => ${a.statusText}`),!1;return await a.json()},this.codicent="",this.options=t}async request(t,e,a={}){const o={};a.headers&&a.headers.forEach((([t,e])=>{o[t]=e}));const n=await fetch(t,{...a,method:e,headers:o});if(!n.ok)throw 401===n.status&&this.handleUnauthorized(),new Error(`${n.statusText}`);return n}handleUnauthorized(){this.onUnauthorized&&this.onUnauthorized()}}t=r,r.getImageUrl=(t,e)=>`${o}app/GetImage?fileId=${t}&width=${e}`,r.getFileUrl=(t,e)=>`${o}app/DownloadFile?fileId=${t}${e?`&extension=${e}`:""}`,r.downloadFile=async e=>{fetch(t.getFileUrl(e.id)).then((t=>{if(t.headers.forEach(((t,e)=>{console.log(`${e}: ${t}`)})),t.ok)return t.blob();throw new Error("Network response was not ok.")})).then((t=>{const a=window.URL.createObjectURL(t),o=document.createElement("a");o.style.display="none",o.href=a,o.download=e.filename,document.body.appendChild(o),o.click(),window.URL.revokeObjectURL(a)})).catch((t=>{console.error("There was a problem with the fetch operation:",t)}))},r.getMiniChatReply=async(t,e="codicent-mini",a)=>{const n=await fetch(`${o}app/GetAi2ChatReply?message=${t}&project=${e}${a?"&messageId="+a:""}`,{method:"GET",headers:[["Authorization","Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjJlMTliNjNmLWQxNDgtNGRmMi04MzMxLTZlZGE3ZTQzNjQ1ZCIsIm5pY2tuYW1lIjoiam9oYW4iLCJuYW1lIjoiSm9oYW4gSXNha3Nzb24iLCJ1c2VySWQiOiIyZTE5YjYzZi1kMTQ4LTRkZjItODMzMS02ZWRhN2U0MzY0NWQiLCJwcm9qZWN0IjoiY29kaWNlbnQtbWluaSIsIm5iZiI6MTczNjkzMjcyOCwiZXhwIjoxNzY4NDY4NzI4LCJpYXQiOjE3MzY5MzI3Mjh9.l2J7GgfU01iihdud7QP1aYBCM3NgxxqiM4VrplLO1s0"]]});if(!n.ok)return void n.status;return(await n.json()).content.replace("@codicent-mini","").trim()},exports.CodicentService=r;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as i,useEffect as r}from"react";import"./Markdown.js";import"./Textarea.js";import{Button as s}from"./Button.js";import{Text as a}from"./Text.js";import{Spinner as m}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import p from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import l from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as c}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Combobox as d}from"../node_modules/@fluentui/react-combobox/lib/components/Combobox/Combobox.js";import{Option as j}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const
|
|
1
|
+
import{jsxs as o,jsx as e,Fragment as t}from"react/jsx-runtime";import{useState as i,useEffect as r}from"react";import"./Markdown.js";import"./Textarea.js";import{Button as s}from"./Button.js";import{Text as a}from"./Text.js";import{Spinner as m}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import p from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import l from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{useId as c}from"../node_modules/@fluentui/react-utilities/lib/hooks/useId.js";import{Combobox as d}from"../node_modules/@fluentui/react-combobox/lib/components/Combobox/Combobox.js";import{Option as j}from"../node_modules/@fluentui/react-combobox/lib/components/Option/Option.js";const g=n({root:{display:"grid",gridTemplateRows:"repeat(1fr)",justifyItems:"start",gap:"2px",maxWidth:"400px",padding:"8px"},combo:{width:"100%"},horizonal:{display:"flex",flexDirection:"row",verticalAlign:"middle"}}),f=n=>{const{id:f,options:u,title:h,placeholder:b,onChangeValue:x,value:w="",prompt:v,service:y}=n,C=c(f+"-combo"),[S,_]=i([...u||[]]),[k,T]=i(),[z,I]=i(!1),F=g(),{t:A}=l();r((()=>{x(k)}),[k,x]);return o("div",{id:f,className:F.root,children:[o("div",{className:F.horizonal,children:[e(a,{size:400,id:C,children:h}),v&&o(t,{children:[!z&&e(s,{icon:"WandRegular",title:A("Autoskapa"),style:{fontSize:16,marginLeft:6},onClick:async()=>{I(!0),await(async o=>{if(o){const e=await y.chat(o);if(e){const o=new p(e.content).content;x(o)}}})(v),I(!1)},appearance:"transparent",size:"small"}),z&&e(m,{size:"extra-small",style:{marginLeft:12},children:A("Arbetar...")})]})]}),o(d,{className:F.combo,"aria-labelledby":C,freeform:!0,placeholder:b||A("Välj..."),onChange:o=>{const e=o.target.value;T(e);const t=(u||[]).filter((o=>0===o.toLowerCase().indexOf(e.toLowerCase())));_(t)},onOptionSelect:(o,e)=>{e.optionText&&(u||[]).includes(e.optionText);T(e.optionText)},size:"large",value:w,children:[k?e(j,{text:k,children:A("Sök efter ")+k},"freeform"):null,S.map((o=>e(j,{children:o},o)))]})]})};export{f as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import s from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import s from"../utils/withWakeLock.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import t from"../hooks/useAppStyles.js";import{Mic24Regular as i,MicPulse24Filled as r,MicRecord24Filled as e}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const p=s((({isSoundCaptured:s,stopRecording:i})=>{const{pointer:p}=t();return o(s?r:e,{onClick:i,className:p})})),a=({audio:s,disabled:r})=>{const{isRecording:e,isSoundCaptured:a,startRecording:m,stopRecording:n}=s,{pointer:j}=t();return r?o(i,{}):e?o(p,{isSoundCaptured:a,stopRecording:n}):o(i,{onClick:()=>m(""),className:j})};export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as
|
|
1
|
+
import{jsxs as e,jsx as o}from"react/jsx-runtime";import{useRef as t,useState as i,useEffect as r}from"react";import{FileThumbnail as a}from"./FileThumbnail.js";import s from"../hooks/useStateWithLocalStorage.js";import"../services/codicent.js";import"./Markdown.js";import{Textarea as l}from"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as n}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import p from"../hooks/useLocalization.js";import m from"../hooks/useAppStyles.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Button as d}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{Spinner as u}from"../node_modules/@fluentui/react-spinner/lib/components/Spinner/Spinner.js";import{SendRegular as f,SendFilled as g}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{mergeClasses as j}from"../node_modules/@griffel/core/mergeClasses.esm.js";import{tokens as h}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{AddRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";const x=c({inputContainer:{display:"flex",flexDirection:"column",padding:"8px",width:"100%",position:"relative",gap:"8px"},textareaWrapper:{position:"relative",width:"100%",display:"flex",flexDirection:"column"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between",alignItems:"center"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px 0",maxWidth:"100%",boxSizing:"border-box",gap:"4px",minHeight:"72px",backgroundColor:h.colorNeutralBackground2,borderRadius:h.borderRadiusMedium,"&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:h.colorNeutralStroke1,borderRadius:"3px"}},hiddenInput:{display:"none"},button:{color:h.colorNeutralForeground2,"&:hover":{color:h.colorBrandBackground,backgroundColor:"transparent"}}}),_=({onSend:c,disableSend:h,onSelectFiles:_,getImageUrl:S,getFileInfo:k,codicent:v,defaultText:T,rows:w,noMemory:y,selectAll:N,id:C})=>{const D=x(),[B,F]=s("chatInput-"+v,""),I=t(null),[E,O]=i([]),[A,H]=i([]),[U,P]=i(!1),[L,W]=i([]),{t:R}=p(),M=m();r((()=>{T&&F(T)}),[F,T]),r((()=>{!0===y&&F("")}),[y,F]);const z=()=>{if(""===B.trim()&&0===L.length)return;const e=E.length>0?" #"+E.join(" #"):"",o=A.length>0?"\n#file:"+A.join("\n#file:"):"";c(e+B+o),F(""),O([]),H([]),W([])};return e("div",{className:D.inputContainer,children:[o("input",{title:R("Välj fil att ladda upp"),type:"file",ref:I,className:D.hiddenInput,onChange:async e=>{const o=e.target.files;if(o&&o.length>0&&_){P(!0);try{const e=await _(o),t=await Promise.all(e.map((e=>k(e))));H((o=>[...o,...e])),W((e=>[...e,...t]))}catch(e){console.error("Failed to upload files",e)}finally{P(!1),I.current&&(I.current.value="")}}},multiple:!0,accept:"image/*,.pdf,.doc,.docx,.xls,.xlsx,.txt"}),L.length>0&&o("div",{className:D.fileList,children:L.map((e=>o(a,{file:e,getImageUrl:S,onDelete:()=>{return o=e.id,H((e=>e.filter((e=>e!==o)))),void W((e=>e.filter((e=>e.id!==o))));var o}},e.id)))}),e("div",{className:D.textareaWrapper,onPaste:async e=>{for(const o of e.clipboardData.items)if(-1!==o.type.indexOf("image")){const t=o.getAsFile();if(t&&(e.preventDefault(),_))try{P(!0);const e=new DataTransfer;e.items.add(t);const o=await _(e.files),i=await Promise.all(o.map((e=>k(e))));H((e=>[...e,...o])),W((e=>[...e,...i]))}catch(e){console.error("Failed to upload pasted image",e)}finally{P(!1)}}},children:[o(l,{size:"large",id:C||"chat-input",placeholder:R(n("APP_CHAT_TEXT_PLACEHOLDER")||"Skriv ditt meddelande här..."),value:B,onChange:e=>F(e.target.value),onKeyDown:e=>{h||"Enter"!==e.key||e.shiftKey||(e.preventDefault(),z())},autoFocus:!1,rows:w||4,onFocus:e=>{if(!0===N){e.target.select()}}}),e("div",{className:D.actionButtonRow,children:[o("div",{children:!n("HIDE_CHAT_ADD_FILE_BUTTON")&&_&&o(d,{appearance:"subtle",size:"small",title:R("Lägg till fil"),icon:o(U?u:b,{}),onClick:()=>I.current?.click(),className:D.button})}),o(d,{appearance:n("SHOW_SEND_BUTTON_TEXT")?"primary":"subtle",size:n("SHOW_SEND_BUTTON_TEXT")?"small":"large",title:R("Skicka"),disabled:h,icon:""===B.trim()&&0===L.length?o(f,{}):o(g,{}),onClick:z,className:n("SEND_BUTTON_ROUND_BACKGROUND")?j(M.roundButton,D.button):n("SHOW_SEND_BUTTON_TEXT")?void 0:D.button,children:n("SHOW_SEND_BUTTON_TEXT")&&o("span",{children:R("Skicka")})})]})]})]})};export{_ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import"react";import"../services/codicent.js";import o from"./Markdown.js";import"./Textarea.js";import{Button as s}from"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./Header.js";import r from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as i}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import"react";import"../services/codicent.js";import o from"./Markdown.js";import"./Textarea.js";import{Button as s}from"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./Header.js";import r from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as i}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import a from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{mergeClasses as p}from"../node_modules/@griffel/core/mergeClasses.esm.js";import{tokens as m}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Text as l}from"../node_modules/@fluentui/react-text/lib/components/Text/Text.js";import{ChannelRegular as d}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const c=n({message:{display:"flex",marginBottom:"16px",webkitUserSelect:"text",userSelect:"text"},user:{justifyContent:"flex-end"},bot:{justifyContent:"flex-start"},messageContent:{maxWidth:"80%",padding:"12px 16px",borderRadius:"16px",fontSize:"1rem",lineHeight:"1.4",whiteSpace:"pre-wrap",wordBreak:"break-word",overflow:"auto"},userMessage:{borderTopRightRadius:"0"},botMessage:{borderTopLeftRadius:"0"},newMessage:{animation:"$fadeIn 0.5s ease-in-out"}}),u=({sender:n,content:u,isNew:g,children:j,showSuggestions:f,onSuggestionClicked:h})=>{const _=c(),{t:x}=a();let C=[];if("bot"===n&&u.includes("#suggested_questions")){const e=u.split("#suggested_questions");u=e[0],C=e[1].split("\n").filter((e=>""!==e.trim())).map((e=>e.trim()))}const b=new r(u);let w=b.content;"user"===n&&b.content.includes("---")&&(w=b.content.split("---")[0]);const T=b.content.startsWith("Error code: ")?x("Ett fel uppstod 😟 => starta en ny chatt"):null;return e("div",{className:p(_.message,"user"===n?_.user:_.bot),children:t("div",{className:p(_.messageContent,"user"===n?_.userMessage:_.botMessage,g&&_.newMessage),style:{backgroundColor:"user"===n?i("CHAT_USER_BACKGROUND_COLOR")||m.colorBrandBackground:i("CHAT_BOT_BACKGROUND_COLOR")||m.colorBrandBackground2,color:"user"===n?i("CHAT_USER_TEXT_COLOR")||m.colorNeutralForegroundInverted:i("CHAT_BOT_TEXT_COLOR")||m.colorNeutralForeground1},children:[t(l,{size:400,children:[T,!T&&e(o,{content:w}),b.files.length>0&&e(d,{}),f&&C&&C.length>0&&e("div",{style:{marginTop:"8px",display:"flex",gap:"8px",flexWrap:"wrap"},children:C.map(((t,o)=>e(s,{size:"small",shape:"circular",onClick:()=>h?.(t),style:{textAlign:"left"},children:t},o)))})]}),j]})})};export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as i}from"./Textarea.js";import{Button as r}from"./Button.js";import{Text as t}from"./Text.js";import"./Spinner.js";import{Label as a}from"./Label.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as s,DialogTitle as l,DialogContent as n,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as d}from"../node_modules/@griffel/core/index.esm.js";import{tokens as j}from"../node_modules/@fluentui/tokens/lib/tokens.js";const g=c({container:{display:"flex",flexDirection:"column",...d.gap("12px")},section:{display:"flex",flexDirection:"column",...d.gap("8px")},field:{display:"flex",flexDirection:"column",...d.gap("4px")},fileItem:{display:"flex",alignItems:"center",...d.gap("8px")},label:{fontWeight:j.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:j.colorNeutralBackground1,boxShadow:j.shadow16},dialogBody:{backgroundColor:"transparent"}}),f=({open:c,templateVariables:d,filePlaceholders:j,onTemplateVariablesChange:f,onFilePlaceholdersChange:h,onConfirm:u,onCancel:x,uploadFile:v})=>{const b=g(),{t:y}=m();return e(s,{open:c,children:[o(l,{children:y("Fyll i information")}),o(n,{children:e("div",{className:b.container,children:[d.length>0&&o("div",{className:b.section,children:d.map(((r,t)=>e("div",{className:b.field,children:[o(a,{className:b.label,children:r.name}),o(i,{className:b.textarea,value:r.value,onChange:e=>{const o=[...d];o[t].value=e.target.value,f(o)}})]},t)))}),j.length>0&&o("div",{className:b.section,children:j.map(((i,a)=>e("div",{className:b.fileItem,children:[o(t,{weight:"semibold",children:i.description}),o(r,{appearance:"primary",onClick:()=>(async e=>{const o=document.createElement("input");o.type="file";const i=await new Promise((e=>{o.onchange=o=>e(o.target.files),o.click()}));if(i&&i.length>0){const o=i[0],r=new FormData;r.append("file",o);const t=await v(o.name,r),a=[...j];a[e].fileId=t,h(a)}})(a),children:i.fileId?y("Fil vald"):y("Välj fil")})]},a)))})]})}),e(p,{children:[o(r,{appearance:"secondary",onClick:x,children:y("Avbryt")}),o(r,{appearance:"primary",onClick:u,children:y("OK")})]})]})};export{f as CombinedPlaceholderDialog};
|
|
1
|
+
import{jsxs as e,jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as i}from"./Textarea.js";import{Button as r}from"./Button.js";import{Text as t}from"./Text.js";import"./Spinner.js";import{Label as a}from"./Label.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as s,DialogTitle as l,DialogContent as n,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as c}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as d}from"../node_modules/@griffel/core/index.esm.js";import{tokens as j}from"../node_modules/@fluentui/tokens/lib/tokens.js";const g=c({container:{display:"flex",flexDirection:"column",...d.gap("12px")},section:{display:"flex",flexDirection:"column",...d.gap("8px")},field:{display:"flex",flexDirection:"column",...d.gap("4px")},fileItem:{display:"flex",alignItems:"center",...d.gap("8px")},label:{fontWeight:j.fontWeightSemibold},textarea:{minHeight:"100px",resize:"vertical"},dialogSurface:{backgroundColor:j.colorNeutralBackground1,boxShadow:j.shadow16},dialogBody:{backgroundColor:"transparent"}}),f=({open:c,templateVariables:d,filePlaceholders:j,onTemplateVariablesChange:f,onFilePlaceholdersChange:h,onConfirm:u,onCancel:x,uploadFile:v})=>{const b=g(),{t:y}=m();return e(s,{open:c,children:[o(l,{children:y("Fyll i information")}),o(n,{children:e("div",{className:b.container,children:[d.length>0&&o("div",{className:b.section,children:d.map(((r,t)=>e("div",{className:b.field,children:[o(a,{className:b.label,children:r.name}),o(i,{className:b.textarea,value:r.value,onChange:e=>{const o=[...d];o[t].value=e.target.value,f(o)}})]},t)))}),j.length>0&&o("div",{className:b.section,children:j.map(((i,a)=>e("div",{className:b.fileItem,children:[o(t,{weight:"semibold",children:i.description}),o(r,{appearance:"primary",onClick:()=>(async e=>{const o=document.createElement("input");o.type="file";const i=await new Promise((e=>{o.onchange=o=>e(o.target.files),o.click()}));if(i&&i.length>0){const o=i[0],r=new FormData;r.append("file",o);const t=await v(o.name,r),a=[...j];a[e].fileId=t,h(a)}})(a),children:i.fileId?y("Fil vald"):y("Välj fil")})]},a)))})]})}),e(p,{children:[o(r,{appearance:"secondary",onClick:x,children:y("Avbryt")}),o(r,{appearance:"primary",onClick:u,children:y("OK")})]})]})};export{f as CombinedPlaceholderDialog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useEffect as s}from"react";import{useLocation as i,Link as n}from"react-router-dom";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as r}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import a from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as l}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as
|
|
1
|
+
import{jsx as e,jsxs as o}from"react/jsx-runtime";import{useState as t,useEffect as s}from"react";import{useLocation as i,Link as n}from"react-router-dom";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as r}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import a from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as l}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as m}from"../node_modules/@griffel/core/index.esm.js";import{tokens as c}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Home24Filled as p,Home24Regular as d}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js";import{Chat24Filled as u,Chat24Regular as j}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";import{AddSquare24Filled as h,AddSquare24Regular as g,Apps24Filled as _,Apps24Regular as f}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-0.js";import{ClipboardDay24Filled as T,ClipboardDay24Regular as b}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-4.js";import{SlideText24Filled as k,SlideText24Regular as x}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-14.js";import{Whiteboard24Filled as O,Whiteboard24Regular as N}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-18.js";const C=l({footer:{...m.padding("14px"),backgroundColor:r("APP_FOOTER_COLOR")||c.colorBrandBackground,color:r("APP_FOOTER_TEXT_COLOR")||c.colorNeutralForegroundOnBrand,textAlign:"center",display:"flex",justifyContent:"space-around",alignItems:"center",position:"sticky",bottom:0,zIndex:1e3,paddingBottom:"22px",width:"100%"},container:{display:"flex",justifyContent:"space-around",alignItems:"center",maxWidth:"480px",width:"100%"},button:{color:c.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...m.borderWidth("0")},link:{textDecoration:"none",color:"inherit",display:"flex",flexDirection:"column",alignItems:"center","&.selected":{border:"none",color:r("APP_FOOTER_SELECTED_COLOR")||void 0},"&:hover":{textDecoration:"none"}},buttonText:{fontSize:"12px"}}),v=()=>{const l=C(),m=i(),[c,v]=t(null),{t:I}=a();return s((()=>{const e=m.pathname;"/"===e?v("home"):"/chat"===e?v("chat"):"/new"===e?v("save"):"/menu"===e?v("menu"):"/log"===e?v("log"):"/canvas"===e?v("canvas"):"/snap"===e&&v("snap")}),[m]),s((()=>{c&&console.log(`footer-button: ${c}`)}),[c]),e("footer",{className:l.footer,children:o("div",{className:l.container,children:[o(n,{to:"/",className:`${l.link} ${"home"===c?"selected":""}`,onClick:()=>v("home"),children:[e("home"===c?p:d,{}),e("p",{className:l.buttonText,children:I("Hem")})]}),!r("HIDE_CHAT_BUTTON")&&o(n,{to:"/chat",className:`${l.link} ${"chat"===c?"selected":""}`,onClick:()=>v("chat"),children:[e("chat"===c?u:j,{}),e("p",{className:l.buttonText,children:I("Chatt")})]}),!r("HIDE_SAVE_BUTTON")&&o(n,{to:"/new",className:`${l.link} ${"save"===c?"selected":""}`,onClick:()=>v("save"),children:[e("save"===c?h:g,{}),e("p",{className:l.buttonText,children:I(r("APP_SAVE_TITLE")||"Spara")})]}),r("SHOW_SNAP_BUTTON")&&o(n,{to:"/snap",className:`${l.link} ${"snap"===c?"selected":""}`,onClick:()=>v("snap"),children:[e("snap"===c?T:b,{}),e("p",{className:l.buttonText,children:I("Snap")})]}),r("SHOW_LOGBOOK_BUTTON")&&o(n,{to:"/log",className:`${l.link} ${"log"===c?"selected":""}`,onClick:()=>v("log"),children:[e("log"===c?k:x,{}),e("p",{className:l.buttonText,children:I(r("APP_LOGBOOK_TITLE")||"Loggbok")})]}),r("SHOW_CANVAS_BUTTON")&&o(n,{to:"/canvas",className:`${l.link} ${"canvas"===c?"selected":""}`,onClick:()=>v("canvas"),children:[e("canvas"===c?O:N,{}),e("p",{className:l.buttonText,children:I("Kanvas")})]}),!r("HIDE_MENU_BUTTON")&&o(n,{to:"/menu",className:`${l.link} ${"menu"===c?"selected":""}`,onClick:()=>v("menu"),children:[e("menu"===c?_:f,{}),e("p",{className:l.buttonText,children:I("Meny")})]})]})})};export{v as Footer,v as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as o}from"react/jsx-runtime";import{Link as i}from"react-router-dom";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import t from"./VoiceIcon.js";import r from"./AudioIcon.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as s}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as a}from"../node_modules/@griffel/core/index.esm.js";import{tokens as p}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Image as n}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Title3 as l}from"../node_modules/@fluentui/react-text/lib/components/presets/Title3/Title3.js";import{Settings24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-13.js";const d=m({header:{...a.padding("14px"),backgroundColor:s("APP_HEADER_COLOR")||p.colorBrandBackground,color:s("APP_HEADER_TEXT_COLOR")||p.colorNeutralForegroundOnBrand,textAlign:"center",position:"sticky",top:0,zIndex:1e3,alignItems:"center",height:"64px",display:"flex",justifyContent:"space-between"},logo:{height:"40px",shape:"circular"},link:{textDecoration:"none",color:"inherit"},headerItem:{display:"flex",alignItems:"center",gap:"16px"}}),j=({imageUrl:m,title:a,audio:p,voice:j})=>{const g=d();return e("header",{className:g.header,children:[e("div",{className:g.headerItem,children:[m&&o(n,{className:g.logo,alt:"Logo",src:m,height:40}),a&&o(l,{children:a})]}),e("div",{className:g.headerItem,children:[p&&s("SHOW_MICROPHONE_BUTTON")&&o(r,{audio:p,disabled:j?.isConnected}),j&&s("SHOW_VOICE_BUTTON")&&o(t,{voice:j,disabled:p?.isRecording}),s("SHOW_SETTINGS_BUTTON")&&o(i,{to:"/menu",className:g.link,children:o(c,{})})]})]})};export{j as Header};
|
|
1
|
+
import{jsxs as e,jsx as o}from"react/jsx-runtime";import{Link as i}from"react-router-dom";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import t from"./VoiceIcon.js";import r from"./AudioIcon.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as s}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as a}from"../node_modules/@griffel/core/index.esm.js";import{tokens as p}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Image as n}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Title3 as l}from"../node_modules/@fluentui/react-text/lib/components/presets/Title3/Title3.js";import{Settings24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-13.js";const d=m({header:{...a.padding("14px"),backgroundColor:s("APP_HEADER_COLOR")||p.colorBrandBackground,color:s("APP_HEADER_TEXT_COLOR")||p.colorNeutralForegroundOnBrand,textAlign:"center",position:"sticky",top:0,zIndex:1e3,alignItems:"center",height:"64px",display:"flex",justifyContent:"space-between"},logo:{height:"40px",shape:"circular"},link:{textDecoration:"none",color:"inherit"},headerItem:{display:"flex",alignItems:"center",gap:"16px"}}),j=({imageUrl:m,title:a,audio:p,voice:j})=>{const g=d();return e("header",{className:g.header,children:[e("div",{className:g.headerItem,children:[m&&o(n,{className:g.logo,alt:"Logo",src:m,height:40}),a&&o(l,{children:a})]}),e("div",{className:g.headerItem,children:[p&&s("SHOW_MICROPHONE_BUTTON")&&o(r,{audio:p,disabled:j?.isConnected}),j&&s("SHOW_VOICE_BUTTON")&&o(t,{voice:j,disabled:p?.isRecording}),s("SHOW_SETTINGS_BUTTON")&&o(i,{to:"/menu",className:g.link,children:o(c,{})})]})]})};export{j as Header};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r}from"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Menu as s}from"../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js";import{MenuTrigger as a}from"../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js";import{Button as l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MoreHorizontal24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";import{MenuPopover as m}from"../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js";import{MenuList as p}from"../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js";import{MenuItem as u}from"../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js";import{PrintRegular as d}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{DismissRegular as h,CopyRegular as g}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const f=n({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100}}),j=({html:n,onDismiss:j})=>{const b=o(null),w=o(null),[y,M]=r(1),v=f(),{t:x}=i();return t("div",{className:v.container,onTouchStart:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));b.current?.setAttribute("data-initial-distance",r.toString()),b.current?.setAttribute("data-initial-scale",y.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(b.current?.getAttribute("data-initial-distance")||"0"),i=parseFloat(b.current?.getAttribute("data-initial-scale")||"1"),n=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));if(r>0){const t=Math.min(Math.max(i*(n/r),.5),3);M(t),b.current&&(b.current.style.transform=`scale(${t})`),w.current&&(w.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{b.current?.removeAttribute("data-initial-distance"),b.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:b,className:v.iframe,title:"html",srcDoc:n}),e("iframe",{ref:w,className:v.iframe2,title:"html",srcDoc:n})," ",t(s,{children:[e(a,{children:e(l,{icon:e(c,{}),className:v.menuButton})}),e(m,{children:t(p,{children:[e(u,{icon:e(h,{}),onClick:j,children:x("Stäng")}),e(u,{icon:e(d,{}),onClick:()=>{b.current&&b.current.contentWindow?.print()},children:x("Skriv ut")}),e(u,{icon:e(g,{}),onClick:async()=>{if(w.current)try{const t=w.current,e=t.contentWindow,o=t.contentDocument||e?.document;if(!o||!e)return;o.querySelectorAll("canvas").forEach((t=>{const e=o.createElement("img");e.src=t.toDataURL("image/png"),e.style.cssText=window.getComputedStyle(t).cssText,e.width=t.width,e.height=t.height,t.parentNode?.insertBefore(e,t),t.parentNode?.removeChild(t)}));let r="";Array.from(o.styleSheets).forEach((t=>{try{Array.from(t.cssRules||[]).forEach((t=>{r+=t.cssText+"\n"}))}catch(t){console.warn("Could not access stylesheet",t)}}));o.body.querySelectorAll("*").forEach((t=>{const o=e.getComputedStyle(t);let r="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((t=>{o[t]&&"initial"!==o[t]&&"none"!==o[t]&&"normal"!==o[t]&&(r+=`${String(t)}:${o[t]};`)})),r){const e=t.getAttribute("style")||"";t.setAttribute("style",e+r)}}));const i=o.createElement("style");i.textContent=r,o.head.appendChild(i);const n=o.documentElement.outerHTML,s=o.body.innerText,a=document.createElement("div");a.innerHTML=n;const l=window.location.href;if(a.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,l).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([a.outerHTML],{type:"text/html"}),e=new Blob([s],{type:"text/plain"}),o=new ClipboardItem({"text/html":t,"text/plain":e});await navigator.clipboard.write([o])}else{const t=e.getSelection();if(t){t.removeAllRanges();const e=o.createRange();e.selectNodeContents(o.body),t.addRange(e),o.execCommand("copy"),t.removeAllRanges()}}}catch(t){console.error("Copy failed:",t),navigator.clipboard.writeText(n)}},children:x("Kopiera")})]})})]})]})};export{j as default};
|
|
1
|
+
import{jsxs as t,jsx as e}from"react/jsx-runtime";import{useRef as o,useState as r}from"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as n}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Menu as s}from"../node_modules/@fluentui/react-menu/lib/components/Menu/Menu.js";import{MenuTrigger as a}from"../node_modules/@fluentui/react-menu/lib/components/MenuTrigger/MenuTrigger.js";import{Button as l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{MoreHorizontal24Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";import{MenuPopover as m}from"../node_modules/@fluentui/react-menu/lib/components/MenuPopover/MenuPopover.js";import{MenuList as p}from"../node_modules/@fluentui/react-menu/lib/components/MenuList/MenuList.js";import{MenuItem as u}from"../node_modules/@fluentui/react-menu/lib/components/MenuItem/MenuItem.js";import{PrintRegular as d}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-3.js";import{DismissRegular as h,CopyRegular as g}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-1.js";const f=n({container:{position:"relative",width:"100%",height:"100%"},iframe:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:1e3,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},iframe2:{position:"absolute",top:0,left:0,bottom:0,right:0,zIndex:0,backgroundColor:"white",borderRadius:"0",border:"none",width:"100%",height:"100%",transformOrigin:"0 0"},menuButton:{position:"absolute",top:"10px",right:"10px",zIndex:1100}}),j=({html:n,onDismiss:j})=>{const b=o(null),w=o(null),[y,M]=r(1),v=f(),{t:x}=i();return t("div",{className:v.container,onTouchStart:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));b.current?.setAttribute("data-initial-distance",r.toString()),b.current?.setAttribute("data-initial-scale",y.toString())}},onTouchMove:t=>{if(2===t.touches.length){const e=t.touches[0],o=t.touches[1],r=parseFloat(b.current?.getAttribute("data-initial-distance")||"0"),i=parseFloat(b.current?.getAttribute("data-initial-scale")||"1"),n=Math.sqrt(Math.pow(o.clientX-e.clientX,2)+Math.pow(o.clientY-e.clientY,2));if(r>0){const t=Math.min(Math.max(i*(n/r),.5),3);M(t),b.current&&(b.current.style.transform=`scale(${t})`),w.current&&(w.current.style.transform=`scale(${t})`)}}},onTouchEnd:()=>{b.current?.removeAttribute("data-initial-distance"),b.current?.removeAttribute("data-initial-scale")},children:[e("iframe",{ref:b,className:v.iframe,title:"html",srcDoc:n}),e("iframe",{ref:w,className:v.iframe2,title:"html",srcDoc:n})," ",t(s,{children:[e(a,{children:e(l,{icon:e(c,{}),className:v.menuButton})}),e(m,{children:t(p,{children:[e(u,{icon:e(h,{}),onClick:j,children:x("Stäng")}),e(u,{icon:e(d,{}),onClick:()=>{b.current&&b.current.contentWindow?.print()},children:x("Skriv ut")}),e(u,{icon:e(g,{}),onClick:async()=>{if(w.current)try{const t=w.current,e=t.contentWindow,o=t.contentDocument||e?.document;if(!o||!e)return;o.querySelectorAll("canvas").forEach((t=>{const e=o.createElement("img");e.src=t.toDataURL("image/png"),e.style.cssText=window.getComputedStyle(t).cssText,e.width=t.width,e.height=t.height,t.parentNode?.insertBefore(e,t),t.parentNode?.removeChild(t)}));let r="";Array.from(o.styleSheets).forEach((t=>{try{Array.from(t.cssRules||[]).forEach((t=>{r+=t.cssText+"\n"}))}catch(t){console.warn("Could not access stylesheet",t)}}));o.body.querySelectorAll("*").forEach((t=>{const o=e.getComputedStyle(t);let r="";if(["fontFamily","fontSize","fontWeight","color","backgroundColor","margin","padding","border","textAlign","lineHeight","letterSpacing","display","width","height"].forEach((t=>{o[t]&&"initial"!==o[t]&&"none"!==o[t]&&"normal"!==o[t]&&(r+=`${String(t)}:${o[t]};`)})),r){const e=t.getAttribute("style")||"";t.setAttribute("style",e+r)}}));const i=o.createElement("style");i.textContent=r,o.head.appendChild(i);const n=o.documentElement.outerHTML,s=o.body.innerText,a=document.createElement("div");a.innerHTML=n;const l=window.location.href;if(a.querySelectorAll("img").forEach((t=>{!t.src||t.src.startsWith("http")||t.src.startsWith("data:")||(t.src=new URL(t.src,l).href)})),navigator.clipboard&&window.ClipboardItem){const t=new Blob([a.outerHTML],{type:"text/html"}),e=new Blob([s],{type:"text/plain"}),o=new ClipboardItem({"text/html":t,"text/plain":e});await navigator.clipboard.write([o])}else{const t=e.getSelection();if(t){t.removeAllRanges();const e=o.createRange();e.selectNodeContents(o.body),t.addRange(e),o.execCommand("copy"),t.removeAllRanges()}}}catch(t){console.error("Copy failed:",t),navigator.clipboard.writeText(n)}},children:x("Kopiera")})]})})]})]})};export{j as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as o,useEffect as a}from"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as r}from"./Textarea.js";import{Button as i}from"./Button.js";import{Spinner as s}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import l from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as n}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{FileThumbnail as p}from"./FileThumbnail.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import c from"../hooks/useToaster.js";import{makeStyles as d}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as g}from"../node_modules/@fluentui/tokens/lib/tokens.js";const f=d({container:{display:"flex",padding:"8px",width:"100%",position:"relative"},textareaWrapper:{position:"relative",flexGrow:1,display:"flex",flexDirection:"column",maxWidth:"100%"},textarea:{width:"100%",paddingBottom:"40px"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between"},leftButtonGroup:{display:"flex",gap:"4px"},actionButton:{color:g.colorNeutralForeground2,"&:hover":{color:g.colorBrandBackground,backgroundColor:"transparent"}},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:g.colorNeutralStroke1,borderRadius:"3px"}}}),u=({defaultText:d,onSend:g,onLocationChange:u,hasLocation:j,files:h=[],onFilesChange:v,onUploadFile:b,onUploadImage:x,onUploadCamera:y,getImageUrl:k,isUploading:w,rows:S,size:C,disableSend:T,placeholder:_,onChange:B,onImagePasted:D,onHandleDefaultFiles:N})=>{const[F,I]=o(""),[z,A]=o([]),L=f(),U=c(),{t:W}=m();a((()=>{B?.(F)}),[F,B]),a((()=>{const e=new l(d||"");I(e.content||""),A(e.tags||[]),e.files.length>0&&N?.(e.files)}),[d]);const E=async()=>{if(""===F.trim()&&0===h.length)return void U.notify(W("Meddelandet får inte vara tomt"),"","","error");const e=z.length>0?`#${z.join(" #")} `:"#log ";g(e+F),I("");const t=new l(d||"");A(t.tags||[]),v?.([])};return e("div",{className:L.container,onDrop:async e=>{if(e.preventDefault(),!v)return;const t=Array.from(e.dataTransfer.files);if(t.length>0)if(D&&t.every((e=>e.type&&e.type.startsWith("image/"))))for(const e of t)D(e);else v(t)},onDragOver:e=>{e.preventDefault()},children:t("div",{className:L.textareaWrapper,children:[k&&h.length>0&&t("div",{className:L.fileList,children:[h.map((t=>e(p,{file:t,getImageUrl:k,onDelete:()=>{return e=t.id,void v?.(h.filter((t=>t.id!==e)));var e}},t.id))),w&&e(s,{})]}),e(r,{size:"large",resize:"vertical",rows:S||7,value:F,onChange:e=>I(e.target.value),placeholder:_||W("Skriv vad du vill spara här..."),onKeyDown:e=>{!0!==T?"Enter"!==e.key||e.shiftKey||(e.preventDefault(),E()):"Enter"===e.key&&e.ctrlKey&&(e.preventDefault(),E())},onPaste:e=>{if(!v&&!D)return;const t=e.clipboardData.items;for(const o of t)if("file"===o.kind){const t=o.getAsFile();t&&(D&&t.type.startsWith("image/")?(e.preventDefault(),D(t)):v&&(e.preventDefault(),v([t])))}},className:L.textarea}),t("div",{className:L.actionButtonRow,children:[t("div",{className:L.leftButtonGroup,children:[b&&e(i,{appearance:"transparent",icon:x?"AttachRegular":"AddRegular",size:"small",title:W("Lägg till fil"),onClick:b,className:L.actionButton}),x&&e(i,{appearance:"transparent",icon:"ImageRegular",size:"small",title:W("Lägg till bild"),onClick:x,className:L.actionButton}),y&&e(i,{appearance:"transparent",icon:"CameraRegular",size:"small",title:W("Ta kort"),onClick:y,className:L.actionButton}),u&&e(i,{appearance:"transparent",icon:j?"LocationFilled":"LocationRegular",size:"small",title:W("Spara plats"),onClick:()=>u(!j),className:L.actionButton})]}),e(i,{appearance:n("SHOW_SAVE_BUTTON_TEXT")?"primary":"subtle",onClick:E,icon:"SendFilled",iconPosition:"before",title:W("Spara"),size:C||(n("SHOW_SAVE_BUTTON_TEXT")?"small":"large"),children:n("SHOW_SAVE_BUTTON_TEXT")&&e("span",{children:W("Spara")})})]})]})})};export{u as default};
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{useState as o,useEffect as a}from"react";import"../services/codicent.js";import"./Markdown.js";import{Textarea as r}from"./Textarea.js";import{Button as i}from"./Button.js";import{Spinner as s}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import l from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as n}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{FileThumbnail as p}from"./FileThumbnail.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import m from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import c from"../hooks/useToaster.js";import{makeStyles as d}from"../node_modules/@griffel/react/makeStyles.esm.js";import{tokens as g}from"../node_modules/@fluentui/tokens/lib/tokens.js";const f=d({container:{display:"flex",padding:"8px",width:"100%",position:"relative"},textareaWrapper:{position:"relative",flexGrow:1,display:"flex",flexDirection:"column",maxWidth:"100%"},textarea:{width:"100%",paddingBottom:"40px"},actionButtonRow:{position:"absolute",left:"8px",bottom:"8px",right:"8px",zIndex:1,display:"flex",justifyContent:"space-between"},leftButtonGroup:{display:"flex",gap:"4px"},actionButton:{color:g.colorNeutralForeground2,"&:hover":{color:g.colorBrandBackground,backgroundColor:"transparent"}},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:g.colorNeutralStroke1,borderRadius:"3px"}}}),u=({defaultText:d,onSend:g,onLocationChange:u,hasLocation:j,files:h=[],onFilesChange:v,onUploadFile:b,onUploadImage:x,onUploadCamera:y,getImageUrl:k,isUploading:w,rows:S,size:C,disableSend:T,placeholder:_,onChange:B,onImagePasted:D,onHandleDefaultFiles:N})=>{const[F,I]=o(""),[z,A]=o([]),L=f(),U=c(),{t:W}=m();a((()=>{B?.(F)}),[F,B]),a((()=>{const e=new l(d||"");I(e.content||""),A(e.tags||[]),e.files.length>0&&N?.(e.files)}),[d]);const E=async()=>{if(""===F.trim()&&0===h.length)return void U.notify(W("Meddelandet får inte vara tomt"),"","","error");const e=z.length>0?`#${z.join(" #")} `:"#log ";g(e+F),I("");const t=new l(d||"");A(t.tags||[]),v?.([])};return e("div",{className:L.container,onDrop:async e=>{if(e.preventDefault(),!v)return;const t=Array.from(e.dataTransfer.files);if(t.length>0)if(D&&t.every((e=>e.type&&e.type.startsWith("image/"))))for(const e of t)D(e);else v(t)},onDragOver:e=>{e.preventDefault()},children:t("div",{className:L.textareaWrapper,children:[k&&h.length>0&&t("div",{className:L.fileList,children:[h.map((t=>e(p,{file:t,getImageUrl:k,onDelete:()=>{return e=t.id,void v?.(h.filter((t=>t.id!==e)));var e}},t.id))),w&&e(s,{})]}),e(r,{size:"large",resize:"vertical",rows:S||7,value:F,onChange:e=>I(e.target.value),placeholder:_||W("Skriv vad du vill spara här..."),onKeyDown:e=>{!0!==T?"Enter"!==e.key||e.shiftKey||(e.preventDefault(),E()):"Enter"===e.key&&e.ctrlKey&&(e.preventDefault(),E())},onPaste:e=>{if(!v&&!D)return;const t=e.clipboardData.items;for(const o of t)if("file"===o.kind){const t=o.getAsFile();t&&(D&&t.type.startsWith("image/")?(e.preventDefault(),D(t)):v&&(e.preventDefault(),v([t])))}},className:L.textarea}),t("div",{className:L.actionButtonRow,children:[t("div",{className:L.leftButtonGroup,children:[b&&e(i,{appearance:"transparent",icon:x?"AttachRegular":"AddRegular",size:"small",title:W("Lägg till fil"),onClick:b,className:L.actionButton}),x&&e(i,{appearance:"transparent",icon:"ImageRegular",size:"small",title:W("Lägg till bild"),onClick:x,className:L.actionButton}),y&&e(i,{appearance:"transparent",icon:"CameraRegular",size:"small",title:W("Ta kort"),onClick:y,className:L.actionButton}),u&&e(i,{appearance:"transparent",icon:j?"LocationFilled":"LocationRegular",size:"small",title:W("Spara plats"),onClick:()=>u(!j),className:L.actionButton})]}),e(i,{appearance:n("SHOW_SAVE_BUTTON_TEXT")?"primary":"subtle",onClick:E,icon:"SendFilled",iconPosition:"before",title:W("Spara"),size:C||(n("SHOW_SAVE_BUTTON_TEXT")?"small":"large"),children:n("SHOW_SAVE_BUTTON_TEXT")&&e("span",{children:W("Spara")})})]})]})})};export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as o,useRef as i,useEffect as r}from"react";import{useNavigate as n}from"react-router-dom";import{CodicentService as s}from"../services/codicent.js";import a from"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Text as l}from"./Text.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import m from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as d}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{FileThumbnail as p}from"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as u}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Card as h}from"../node_modules/@fluentui/react-card/lib/components/Card/Card.js";import{Switch as g}from"../node_modules/@fluentui/react-switch/lib/components/Switch/Switch.js";import{FullScreenMaximizeRegular as f}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-2.js";import{ArrowCollapseAllRegular as j,ArrowExpandAllRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";import{CardHeader as x}from"../node_modules/@fluentui/react-card/lib/components/CardHeader/CardHeader.js";import{Skeleton as w}from"../node_modules/@fluentui/react-skeleton/lib/components/Skeleton/Skeleton.js";import{SkeletonItem as S}from"../node_modules/@fluentui/react-skeleton/lib/components/SkeletonItem/SkeletonItem.js";import{Caption1 as k}from"../node_modules/@fluentui/react-text/lib/components/presets/Caption1/Caption1.js";import{tokens as _}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Edit20Regular as O}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js";const I=u({iframe:{border:"none",width:"100%",height:"100%"},main:{gap:"36px",display:"flex",flexDirection:"column",flexWrap:"wrap"},card:{minWidth:"300px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",maxHeight:"11em",borderRadius:"10px",position:"relative"},expandedCard:{minWidth:"320px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",borderRadius:"10px",position:"relative"},text:{margin:"0.5em",whiteSpace:"normal",fontSize:"larger"},caption:{color:_.colorNeutralForeground3},headerImage:{borderRadius:"4px",maxWidth:"44px",maxHeight:"44px"},rectangle:{margin:0,top:"-5px",left:"-2px",width:"5px",position:"absolute",height:"100%"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:_.colorNeutralStroke1,borderRadius:"3px"}},htmlButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},headerButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},iconButtonRow:{position:"absolute",top:"0.5em",right:"0.5em",display:"flex",alignItems:"center",gap:"0.5em",zIndex:2},content:{overflow:"hidden",transition:"max-height 0.3s ease-out",userSelect:"text"},truncated:{maxHeight:"10em"},header:{display:"flex",flexDirection:"row",gap:"0.5em",alignItems:"center"},todoSwitch:{transform:"scale(0.8)","& .fui-Switch__label":{fontSize:"0.75rem"}}}),
|
|
1
|
+
import{jsxs as e,jsx as t}from"react/jsx-runtime";import{useState as o,useRef as i,useEffect as r}from"react";import{useNavigate as n}from"react-router-dom";import{CodicentService as s}from"../services/codicent.js";import a from"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Text as l}from"./Text.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import m from"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as d}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import c from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{FileThumbnail as p}from"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as u}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Card as h}from"../node_modules/@fluentui/react-card/lib/components/Card/Card.js";import{Switch as g}from"../node_modules/@fluentui/react-switch/lib/components/Switch/Switch.js";import{FullScreenMaximizeRegular as f}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-2.js";import{ArrowCollapseAllRegular as j,ArrowExpandAllRegular as b}from"../node_modules/@fluentui/react-icons/lib/icons/chunk-0.js";import{CardHeader as x}from"../node_modules/@fluentui/react-card/lib/components/CardHeader/CardHeader.js";import{Skeleton as w}from"../node_modules/@fluentui/react-skeleton/lib/components/Skeleton/Skeleton.js";import{SkeletonItem as S}from"../node_modules/@fluentui/react-skeleton/lib/components/SkeletonItem/SkeletonItem.js";import{Caption1 as k}from"../node_modules/@fluentui/react-text/lib/components/presets/Caption1/Caption1.js";import{tokens as _}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Edit20Regular as O}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js";const I=u({iframe:{border:"none",width:"100%",height:"100%"},main:{gap:"36px",display:"flex",flexDirection:"column",flexWrap:"wrap"},card:{minWidth:"300px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",maxHeight:"11em",borderRadius:"10px",position:"relative"},expandedCard:{minWidth:"320px",maxWidth:"100%",height:"fit-content",marginBottom:"1em",paddingLeft:"1em",borderRadius:"10px",position:"relative"},text:{margin:"0.5em",whiteSpace:"normal",fontSize:"larger"},caption:{color:_.colorNeutralForeground3},headerImage:{borderRadius:"4px",maxWidth:"44px",maxHeight:"44px"},rectangle:{margin:0,top:"-5px",left:"-2px",width:"5px",position:"absolute",height:"100%"},fileList:{display:"flex",overflowX:"auto",overflowY:"hidden",scrollbarWidth:"thin",msOverflowStyle:"none",padding:"4px",margin:"0 -4px",maxWidth:"100%",boxSizing:"border-box","&::-webkit-scrollbar":{height:"6px"},"&::-webkit-scrollbar-track":{background:"transparent"},"&::-webkit-scrollbar-thumb":{backgroundColor:_.colorNeutralStroke1,borderRadius:"3px"}},htmlButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},headerButton:{fontSize:"1.5em",cursor:"pointer",marginLeft:"0.5em"},iconButtonRow:{position:"absolute",top:"0.5em",right:"0.5em",display:"flex",alignItems:"center",gap:"0.5em",zIndex:2},content:{overflow:"hidden",transition:"max-height 0.3s ease-out",userSelect:"text"},truncated:{maxHeight:"10em"},header:{display:"flex",flexDirection:"row",gap:"0.5em",alignItems:"center"},todoSwitch:{transform:"scale(0.8)","& .fui-Switch__label":{fontSize:"0.75rem"}}}),C=({header:u,description:_,timestamp:C,text:E,image:N,tags:v,id:T,fileIds:y,codicentService:A,busy:B,onEdit:F,onShowHtmlPreview:L})=>{const R=I(),H=n(),[P,D]=o(!1),[G,z]=o(!1),[M,K]=o("unknown"),[W,$]=o(!1),U=i(null),Y=Object.keys(d("LOGBOOK_TAG_DEFINITIONS")),V=Y.find((e=>v.includes(e)))||(y.length>0?Y.find((e=>"file"===e)):void 0),[X,q]=o([]),J=v.includes("todo"),{t:Q}=c(),Z=["TYPE","CUSTOMER","CONTACT","SALESPERSON","MESSAGE","COMPANY","PHONE","EMAIL","WEBSITE","INFO","FÖRETAG","ROLE","KONTAKT"],ee=[Q("Typ"),Q("Kund"),Q("Kontakt"),Q("Säljare"),Q("Meddelande"),Q("Företag"),Q("Telefon"),Q("E-post"),Q("Hemsida"),Q("Info"),Q("Företag"),Q("Roll"),Q("Kontakt")];r((()=>{Promise.all(y.map((e=>A.getFileInfo(e)))).then((e=>{q(e)}))}),[A,q,y]),r((()=>{const e=()=>{if(U.current){const e=U.current.scrollHeight>100+(X.length>0?-72:0);z(e)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[E,X]),r((()=>{if(J){(async()=>{try{const e=await A.getTodoStatus(T);K(e)}catch(e){console.error("Error loading todo status:",e),K("unknown")}})()}}),[J,T,A]);const te=()=>D(!P),oe=v.includes("chat")&&(E.includes("#function_result")||E.includes("#finish_reason_function_call")),ie=e=>{const t=e.indexOf("```html");if(-1===t)return e;const o=e.indexOf("```",t+7);if(-1===o)return e.substring(t+7);return e.substring(t+7,o)},re=new m(E).data,ne=V&&d("LOGBOOK_TAG_DEFINITIONS")[V].editable,se=V&&d("LOGBOOK_TAG_DEFINITIONS")[V].imageSize||void 0;return e(h,{className:P?R.expandedCard:R.card,style:{backgroundColor:d("MESSAGE_HIDE_BAR")?V?d("LOGBOOK_TAG_DEFINITIONS")[V].color:d("APP_HEADER_COLOR")||"#eee":"#eee"},onClick:v.includes("chat")?e=>{v.includes("chat")&&(e&&e.stopPropagation(),H("/chat?id="+T))}:void 0,children:[!d("MESSAGE_HIDE_BAR")&&t("div",{className:R.rectangle,style:{backgroundColor:V?d("LOGBOOK_TAG_DEFINITIONS")[V].color:d("APP_HEADER_COLOR")||void 0}}),e("div",{className:R.iconButtonRow,children:[J&&t(g,{className:R.todoSwitch,checked:"done"===M,onChange:(e,t)=>(async e=>{if(!W){$(!0);try{const t=e?"done":"undone";await A.updateTodoStatus(T,t)&&K(t)}catch(e){console.error("Error updating todo status:",e)}finally{$(!1)}}})(t.checked),disabled:W||"unknown"===M,label:Q("done"===M?"Done":"Todo")}),ne&&F&&t(O,{className:R.htmlButton,onClick:()=>F()}),L&&!ne&&v.includes("html")&&t(f,{className:R.htmlButton,onClick:e=>{e.stopPropagation(),L(ie(E))}}),G&&!v.includes("chat")&&P&&t(j,{className:R.headerButton,onClick:te}),G&&!v.includes("chat")&&!P&&t(b,{className:R.headerButton,onClick:te})]}),t(x,{image:N?t("img",{className:R.headerImage,src:"app_logo.svg",alt:"User"}):null,header:B?t(w,{style:{width:"50%"},children:t(S,{})}):e("div",{className:R.header,children:[t(l,{weight:"semibold",children:u}),C&&t(l,{weight:"regular",children:C})]}),description:t(k,{className:R.caption,children:_})}),e("div",{ref:U,className:`${R.content} ${P?"":R.truncated}`,children:[X.length>0&&t("div",{className:R.fileList,children:X.map((e=>t(p,{file:e,thumbnailSize:se,getImageUrl:s.getImageUrl,onClick:()=>{e.contentType.startsWith("image")?H(`/image?id=${T}&file=${e.id}`):s.downloadFile(e)}},e.id)))}),B?e(w,{style:{width:"100%"},children:[t(S,{}),t(S,{}),t(S,{}),t(S,{}),t(S,{})]}):t("div",{className:R.text,children:v.includes("html")?t("iframe",{className:R.iframe,title:"html",srcDoc:ie(E),sandbox:"allow-same-origin allow-scripts"}):v.includes("crm")&&0===Object.keys(re).length?t(a,{content:oe?"*"+Q("Tänker")+"...*":re?(()=>{const e=new RegExp(`(${Z.join("|")})\\s*:\\s*`,"gi");return E.replace(e,((e,t)=>{const o=Z.indexOf(t.toUpperCase());-1===o&&console.log("Field not found:",t);return`\n**${-1!==o?ee[o]:t}:** `})).trim()})():E}):t(a,{content:oe?"*"+Q("Tänker")+"...*":re&&re&&Object.keys(re).length>0?Object.keys(re).map((e=>{const t=Z.indexOf(e.toUpperCase());return`**${-1!==t?ee[t]:e}:** ${re[e]}\n`})).join("\n"):E})})]})]})};export{C as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useState as o,useEffect as
|
|
1
|
+
import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useState as o,useEffect as s}from"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import r from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as a}from"../node_modules/@griffel/react/makeStyles.esm.js";import{Image as n}from"../node_modules/@fluentui/react-image/lib/components/Image/Image.js";import{Input as m}from"../node_modules/@fluentui/react-input/lib/components/Input/Input.js";import{Button as p}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{ArrowUndo20Regular as l}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-1.js";import{Edit20Regular as c}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-7.js";import{Text as u}from"../node_modules/@fluentui/react-text/lib/components/Text/Text.js";const d=a({container:{display:"flex",flexDirection:"row",alignItems:"start",justifyContent:"start",gap:"1rem",marginBottom:"1rem"},properties:{display:"flex",flexDirection:"column",alignItems:"start",justifyContent:"center",gap:"0.5rem",width:"100%"},editButton:{marginLeft:"0.5rem"},saveButton:{marginTop:"0.3rem"}}),j=({state:a})=>{const j=d(),{isAuthenticated:g,isLoading:h,user:f,nickname:v}=a.auth,[b,I]=o(),[x,y]=o(!1),[C,w]=o(!1),[_,k]=o(""),[S,B]=o(""),{t:z}=r();s((()=>{a.service.getUserInfo(v).then(I)}),[a.service,v]);const A=()=>{k(b?.name||f?.name||""),B(b?.email||f?.email||""),y(!1),w(!1)},F=async e=>{const t=await a.service.updateUserInfo({nickname:v,name:e.name,email:e.email||""});I(t)};return h?e("div",{children:z("Laddar...")}):g&&f&&t("div",{className:j.container,children:[e(n,{shape:"circular",width:100,src:b?.picture||f.picture,alt:f.name}),t("div",{className:j.properties,children:[e("h2",{children:x?e(i,{children:e(m,{type:"text",value:_,onChange:e=>{k(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:A})})}):t(i,{children:[b?.name||f.name,e(p,{className:j.editButton,icon:e(c,{}),size:"small",onClick:()=>{y(!0),k(b?.name||f?.name||"")}})]})}),t(u,{children:[e(i,C?{children:e(m,{type:"text",value:S,onChange:e=>{B(e.target.value)},contentAfter:e(p,{icon:e(l,{}),size:"small",onClick:A})})}:{children:b?.email||f.email}),(x||C)&&e("div",{children:e(p,{className:j.saveButton,appearance:"primary",size:"small",onClick:()=>{y(!1),w(!1),F({...b,name:_,email:S})},children:"Spara"})})]})]})]})};export{j as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as i}from"react/jsx-runtime";import"./Markdown.js";import"./Textarea.js";import{Button as t}from"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as r,DialogTitle as s,DialogContent as e,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";const a=({open:a,onYes:m,onNo:
|
|
1
|
+
import{jsxs as o,jsx as i}from"react/jsx-runtime";import"./Markdown.js";import"./Textarea.js";import{Button as t}from"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import{Dialog as r,DialogTitle as s,DialogContent as e,DialogActions as p}from"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"react";import"../services/codicent.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";const a=({open:a,onYes:m,onNo:j,title:n,content:l})=>o(r,{open:a,children:[i(s,{children:n}),i(e,{children:l}),o(p,{children:[i(t,{appearance:"secondary",onClick:j,children:"Nej"}),i(t,{type:"submit",appearance:"primary",onClick:m,children:"Ja"})]})]});export{a as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o,jsxs as e}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as t}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as r}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as s}from"../node_modules/@griffel/core/index.esm.js";import{tokens as n}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Home24Regular as a}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js";import{Camera24Regular as m,CameraSwitch24Regular as
|
|
1
|
+
import{jsx as o,jsxs as e}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import{getConfigValue as t}from"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import i from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as r}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as s}from"../node_modules/@griffel/core/index.esm.js";import{tokens as n}from"../node_modules/@fluentui/tokens/lib/tokens.js";import{Home24Regular as a}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-8.js";import{Camera24Regular as m,CameraSwitch24Regular as p}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";import{MicPulse24Filled as l,MicRecord24Filled as c,Mic24Regular as d}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const j=r({footer:{...s.padding("14px"),backgroundColor:t("APP_HEADER_COLOR")||n.colorBrandBackground,color:t("APP_HEADER_TEXT_COLOR")||n.colorNeutralForegroundOnBrand,textAlign:"center",display:"flex",justifyContent:"space-around",alignItems:"center",position:"sticky",bottom:0,zIndex:1e3,paddingBottom:"22px",width:"100%"},container:{display:"flex",justifyContent:"space-around",alignItems:"center",maxWidth:"480px",width:"100%"},button:{color:n.colorNeutralForegroundOnBrand,height:"24px",width:"24px",...s.borderWidth("0")},link:{textDecoration:"none",color:"inherit","&.selected":{border:"none"},"&:hover":{textDecoration:"none"},minWidth:"48px"},buttonText:{fontSize:"12px"}}),u=({onHome:r,onTakePhoto:s,onSwichCamera:n,audio:u,tag:g})=>{const h=j(),{isRecording:f,isSoundCaptured:k,startRecording:x,stopRecording:b}=u,{t:_}=i();return o("footer",{className:h.footer,children:e("div",{className:h.container,children:[e("div",{className:h.link,onClick:r,children:[o(a,{}),o("p",{className:h.buttonText,children:_("Hem")})]}),e("div",{className:h.link,children:[f&&k&&o(l,{onClick:b}),f&&!k&&o(c,{onClick:b}),!f&&o(d,{onClick:()=>x(g)}),o("p",{className:h.buttonText,children:_("Ljud")})]}),e("div",{className:h.link,onClick:()=>{t("RESTART_AUDIO_ON_TAKE_PHOTO")&&f?(b(),s(),x(g)):s()},children:[o(m,{}),o("p",{className:h.buttonText,children:_("Ta kort")})]}),e("div",{className:h.link,onClick:n,children:[o(p,{}),o("p",{className:h.buttonText,children:_("Byt kamera")})]})]})})};export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as t,jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import{Button as e}from"./Button.js";import{Title as i}from"./Title.js";import{Text as
|
|
1
|
+
import{jsxs as t,jsx as o}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import{Button as e}from"./Button.js";import{Title as i}from"./Title.js";import{Text as s}from"./Text.js";import"./Spinner.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import r from"../hooks/useLocalization.js";import p from"../hooks/useAppStyles.js";import{makeStyles as a}from"../node_modules/@griffel/react/makeStyles.esm.js";import{shorthands as m}from"../node_modules/@griffel/core/index.esm.js";const l=a({header:{...m.padding("16px"),textAlign:"start",position:"sticky",top:0,zIndex:1e3,alignItems:"center",justifyContent:"space-between",width:"100%",display:"flex"}}),n=({title:a,onNewChat:m,subtitle:n})=>{const j=l(),c=p(),{t:g}=r();return t("header",{className:j.header,children:[a&&o(i,{children:a}),n&&o(s,{size:300,weight:"regular",children:n}),m&&o(e,{className:c.button,appearance:"primary",title:g("Ny chatt"),icon:"ArrowClockwiseRegular",onClick:m})]})};export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as o,jsx as
|
|
1
|
+
import{jsxs as o,jsx as s}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Text as t}from"./Text.js";import{Spinner as i}from"./Spinner.js";import"./TextHeader.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import r from"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import{makeStyles as e}from"../node_modules/@griffel/react/makeStyles.esm.js";const p=e({typingContainer:{display:"flex",gap:"8px"}}),m=()=>{const e=p(),{t:m}=r();return o("div",{className:e.typingContainer,children:[s(i,{size:"extra-small"}),s(t,{size:400,children:m("Tänker...")})]})};export{m as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as
|
|
1
|
+
import{jsx as o}from"react/jsx-runtime";import{forwardRef as e,useState as t,useRef as s,useEffect as i,useImperativeHandle as r}from"react";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import{isMobileDevice as a}from"../utils/device.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Spinner as p}from"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./CombinedPlaceholderDialog.js";import"./ChatMessage.js";import"./Header.js";import"../services/codicent.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import"../hooks/useAppStyles.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import{makeStyles as m}from"../node_modules/@griffel/react/makeStyles.esm.js";const l=m({imageUpload:{display:"none"},spinner:{marginTop:"10px"}}),n=e((({onFileUploaded:e,accept:m,capture:n,multiple:c=!1,onUploading:j,className:d,id:g,codicentService:u},f)=>{const h=l(),[y,v]=t(!1),w=s(null);i((()=>{j(y)}),[y,j]);const b=async(o,e)=>{const t=new FormData;t.append("file",e),v(!0);try{const e=await u.uploadFile(o,t);return v(!1),e}catch(e){return console.error("Upload failed for file:",o,e),v(!1),null}},S=()=>{w.current?.click()};r(f,(()=>({triggerUpload:S})));const C=n&&a();return o("div",{id:g,className:d,children:y?o(p,{"aria-label":"Uploading...",className:h.spinner}):o("input",{ref:w,type:"file",className:h.imageUpload,onChange:async()=>{try{const o=w.current;if(o&&o.files){const t=[];for(let e=0;e<o.files.length;e++){const s=o.files[e],i=s.name.split("\\").pop()||s.name,r=await b(i,s);r&&t.push(r)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:m,multiple:c,...C?{capture:n}:{}})})}));export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{jsxs as e,Fragment as o,jsx as i}from"react/jsx-runtime";import{useState as t}from"react";import{CombinedPlaceholderDialog as r}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import{useTemplateVariables as s}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:l})=>{const[p,m]=t(!1),[n,j]=t([]),[c,d]=t([]),[g,h]=t(null),{extractTemplateVariables:u,extractFilePlaceholders:f,replaceTemplateVariables:b,replaceFilePlaceholders:w}=s(a.uploadFile);return e(o,{children:[l((async e=>{h(e);const o=f(e),i=u(e);0!==o.length||0!==i.length?(d(o),j(i),m(!0)):window.location.href=e})),i(r,{open:p,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:d,onConfirm:async()=>{if(g)try{let e=g;if(c.length>0){c.filter((e=>e.fileId)).length!==c.length&&console.warn("Some file placeholders are missing fileIds:",c.filter((e=>!e.fileId)).map((e=>e.description))),e=w(e,c)}n.length>0&&(e=b(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{h(null)}},onCancel:()=>{m(!1),h(null),j([]),d([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
|
|
1
|
+
import{jsxs as e,Fragment as o,jsx as i}from"react/jsx-runtime";import{useState as t}from"react";import{CombinedPlaceholderDialog as r}from"./CombinedPlaceholderDialog.js";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import"./Spinner.js";import"./TextHeader.js";import"./TypingIndicator.js";import"./Dialog.js";import"./ChatInput.js";import"./ChatMessage.js";import"./Header.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/index.js";import"../config/index.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import"../lib/wavtools/lib/wav_stream_player.js";import"../lib/wavtools/lib/wav_recorder.js";import"./FileThumbnail.js";import"./MessageInput.js";import"./UploadFile.js";import"./SnapFooter.js";import"./Profile.js";import"./MessageItem.js";import"./Content.js";import"./AiInput.js";import"./SearchBox.js";import"./HtmlView.js";import"./Footer.js";import"./Page.js";import"../pages/AppFrame.js";import"../pages/Chat.js";import"../pages/Compose.js";import"../pages/Snap.js";import"../pages/Search.js";import"../pages/Login.js";import"../pages/CrmPage.js";import"../pages/ImageView.js";import"../pages/FormInvite.js";import"../pages/FormAccept.js";import"../pages/Sales.js";import"../stores/chatStore.js";import"../hooks/useLocalization.js";import{useTemplateVariables as s}from"../hooks/useTemplateVariables.js";import"../hooks/useAppStyles.js";const a=({service:a,children:l})=>{const[p,m]=t(!1),[n,j]=t([]),[c,d]=t([]),[g,h]=t(null),{extractTemplateVariables:u,extractFilePlaceholders:f,replaceTemplateVariables:b,replaceFilePlaceholders:w}=s(a.uploadFile);return e(o,{children:[l((async e=>{h(e);const o=f(e),i=u(e);0!==o.length||0!==i.length?(d(o),j(i),m(!0)):window.location.href=e})),i(r,{open:p,templateVariables:n,filePlaceholders:c,onTemplateVariablesChange:j,onFilePlaceholdersChange:d,onConfirm:async()=>{if(g)try{let e=g;if(c.length>0){c.filter((e=>e.fileId)).length!==c.length&&console.warn("Some file placeholders are missing fileIds:",c.filter((e=>!e.fileId)).map((e=>e.description))),e=w(e,c)}n.length>0&&(e=b(e,n)),m(!1),window.location.href=e}catch(e){console.error("Failed to process URL:",e)}finally{h(null)}},onCancel:()=>{m(!1),h(null),j([]),d([])},uploadFile:a.uploadFile})]})};export{a as UrlProcessor,a as default};
|