codicent-app-sdk 0.3.77 → 0.3.79
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/README.md +0 -1
- 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.d.ts.map +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.d.ts.map +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/config/index.d.ts +0 -1
- package/dist/cjs/config/index.d.ts.map +1 -1
- package/dist/cjs/config/index.js +1 -1
- package/dist/cjs/hooks/index.d.ts +1 -1
- package/dist/cjs/hooks/index.d.ts.map +1 -1
- package/dist/cjs/hooks/useAudioRecorder.d.ts.map +1 -1
- package/dist/cjs/hooks/useAudioRecorder.js +1 -1
- package/dist/cjs/hooks/useAuthState.d.ts.map +1 -1
- package/dist/cjs/hooks/useAuthState.js +1 -1
- package/dist/cjs/hooks/useCodicentApp.d.ts.map +1 -1
- package/dist/cjs/hooks/useCodicentApp.js +1 -1
- package/dist/cjs/hooks/useCodicentState.js +1 -1
- package/dist/cjs/hooks/useLocalization.d.ts +1 -6
- package/dist/cjs/hooks/useLocalization.d.ts.map +1 -1
- package/dist/cjs/hooks/useLocalization.js +1 -1
- package/dist/cjs/hooks/useRealtimeVoiceAI.d.ts +2 -2
- package/dist/cjs/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
- package/dist/cjs/hooks/useRealtimeVoiceAI.js +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/node_modules/i18next/dist/esm/i18next.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/context.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/defaults.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/i18nInstance.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/initReactI18next.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/unescape.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/useTranslation.js +1 -1
- package/dist/cjs/node_modules/react-i18next/dist/es/utils.js +1 -1
- package/dist/cjs/pages/AppFrame.js +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/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/services/index.d.ts +0 -1
- package/dist/cjs/services/index.d.ts.map +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.d.ts.map +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.d.ts.map +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/config/index.d.ts +0 -1
- package/dist/esm/config/index.d.ts.map +1 -1
- package/dist/esm/config/index.js +1 -1
- package/dist/esm/hooks/index.d.ts +1 -1
- package/dist/esm/hooks/index.d.ts.map +1 -1
- package/dist/esm/hooks/useAudioRecorder.d.ts.map +1 -1
- package/dist/esm/hooks/useAudioRecorder.js +1 -1
- package/dist/esm/hooks/useAuthState.d.ts.map +1 -1
- package/dist/esm/hooks/useAuthState.js +1 -1
- package/dist/esm/hooks/useCodicentApp.d.ts.map +1 -1
- package/dist/esm/hooks/useCodicentApp.js +1 -1
- package/dist/esm/hooks/useCodicentState.js +1 -1
- package/dist/esm/hooks/useLocalization.d.ts +1 -6
- package/dist/esm/hooks/useLocalization.d.ts.map +1 -1
- package/dist/esm/hooks/useLocalization.js +1 -1
- package/dist/esm/hooks/useRealtimeVoiceAI.d.ts +2 -2
- package/dist/esm/hooks/useRealtimeVoiceAI.d.ts.map +1 -1
- package/dist/esm/hooks/useRealtimeVoiceAI.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/node_modules/i18next/dist/esm/i18next.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/context.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/defaults.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/i18nInstance.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/initReactI18next.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/unescape.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/useTranslation.js +1 -1
- package/dist/esm/node_modules/react-i18next/dist/es/utils.js +1 -1
- package/dist/esm/pages/AppFrame.js +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/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/services/index.d.ts +0 -1
- package/dist/esm/services/index.d.ts.map +1 -1
- package/dist/index.d.ts +15 -57
- package/package.json +3 -1
@@ -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"../hooks/
|
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 +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 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
|
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"}}}),E=({header:u,description:_,timestamp:E,text:N,image:v,tags:C,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=>C.includes(e)))||(y.length>0?Y.find((e=>"file"===e)):void 0),[X,q]=o([]),J=C.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)}),[N,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=C.includes("chat")&&(N.includes("#function_result")||N.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(N).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:C.includes("chat")?e=>{C.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&&C.includes("html")&&t(f,{className:R.htmlButton,onClick:e=>{e.stopPropagation(),L(ie(N))}}),G&&!C.includes("chat")&&P&&t(j,{className:R.headerButton,onClick:te}),G&&!C.includes("chat")&&!P&&t(b,{className:R.headerButton,onClick:te})]}),t(x,{image:v?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}),E&&t(l,{weight:"regular",children:E})]}),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:C.includes("html")?t("iframe",{className:R.iframe,title:"html",srcDoc:ie(N),sandbox:"allow-same-origin allow-scripts"}):C.includes("crm")&&0===Object.keys(re).length?t(a,{content:oe?"*Tänker...*":re?(()=>{const e=new RegExp(`(${Z.join("|")})\\s*:\\s*`,"gi");return N.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()})():N}):t(a,{content:oe?"*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"):N})})]})]})};export{E 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 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"./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/
|
1
|
+
import{jsx as e,jsxs as t,Fragment as i}from"react/jsx-runtime";import{useState as o,useEffect 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"./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 s 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 l}from"../node_modules/@fluentui/react-button/lib/components/Button/Button.js";import{ArrowUndo20Regular as p}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:f,user:h,nickname:v}=a.auth,[b,I]=o(),[x,y]=o(!1),[w,C]=o(!1),[_,k]=o(""),[S,B]=o(""),{t:z}=s();r((()=>{a.service.getUserInfo(v).then(I)}),[a.service,v]);const A=()=>{k(b?.name||h?.name||""),B(b?.email||h?.email||""),y(!1),C(!1)},F=async e=>{const t=await a.service.updateUserInfo({nickname:v,name:e.name,email:e.email||""});I(t)};return f?e("div",{children:z("Laddar...")}):g&&h&&t("div",{className:j.container,children:[e(n,{shape:"circular",width:100,src:b?.picture||h.picture,alt:h.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(l,{icon:e(p,{}),size:"small",onClick:A})})}):t(i,{children:[b?.name||h.name,e(l,{className:j.editButton,icon:e(c,{}),size:"small",onClick:()=>{y(!0),k(b?.name||h?.name||"")}})]})}),t(u,{children:[e(i,w?{children:e(m,{type:"text",value:S,onChange:e=>{B(e.target.value)},contentAfter:e(l,{icon:e(p,{}),size:"small",onClick:A})})}:{children:b?.email||h.email}),(x||w)&&e("div",{children:e(l,{className:j.saveButton,appearance:"primary",size:"small",onClick:()=>{y(!1),C(!1),F({...b,name:_,email:S})},children:"Spara"})})]})]})]})};export{j as default};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/components/Prompt.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Prompt.d.ts","sourceRoot":"","sources":["../../../src/components/Prompt.tsx"],"names":[],"mappings":"AAcA,QAAA,MAAM,MAAM,2CAMT;IACD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB,4CAsBA,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{jsxs as o,jsx as
|
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:n,title:j,content:l})=>o(r,{open:a,children:[i(s,{children:j}),i(e,{children:l}),o(p,{children:[i(t,{appearance:"secondary",onClick:n,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"../hooks/
|
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 l}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-3.js";import{MicPulse24Filled as p,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:t,onTakePhoto:r,onSwichCamera:s,audio:n,tag:u})=>{const g=j(),{isRecording:h,isSoundCaptured:f,startRecording:k,stopRecording:x}=n,{t:b}=i();return o("footer",{className:g.footer,children:e("div",{className:g.container,children:[e("div",{className:g.link,onClick:t,children:[o(a,{}),o("p",{className:g.buttonText,children:b("Hem")})]}),e("div",{className:g.link,children:[h&&f&&o(p,{onClick:x}),h&&!f&&o(c,{onClick:x}),!h&&o(d,{onClick:()=>k(u)}),o("p",{className:g.buttonText,children:b("Ljud")})]}),e("div",{className:g.link,onClick:()=>{h?(x(),r(),k(u)):r()},children:[o(m,{}),o("p",{className:g.buttonText,children:b("Ta kort")})]}),e("div",{className:g.link,onClick:s,children:[o(l,{}),o("p",{className:g.buttonText,children:b("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 r}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/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 s from"../hooks/
|
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 r}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/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 s 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:d}=s();return t("header",{className:j.header,children:[a&&o(i,{children:a}),n&&o(r,{size:300,weight:"regular",children:n}),m&&o(e,{className:c.button,appearance:"primary",title:d("Ny chatt"),icon:"ArrowClockwiseRegular",onClick:m})]})};export{n as default};
|
@@ -1 +1 @@
|
|
1
|
-
import{jsxs as o,jsx as t}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Text as s}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/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/
|
1
|
+
import{jsxs as o,jsx as t}from"react/jsx-runtime";import"react";import"../services/codicent.js";import"./Markdown.js";import"./Textarea.js";import"./Button.js";import{Text as s}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/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:[t(i,{size:"extra-small"}),t(s,{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 i,useEffect as r,useImperativeHandle as s}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/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=i(null);r((()=>{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()};s(f,(()=>({triggerUpload:S})));const F=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 i=o.files[e],r=i.name.split("\\").pop()||i.name,s=await b(r,i);s&&t.push(s)}t.length>0&&e(t)}}catch(o){console.error("Error uploading files:",o)}},accept:m,multiple:c,...F?{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
|
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 +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
|
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 i from"../hooks/useAppStyles.js";import{MicSparkle24Regular as t,MicSparkle24Filled as r}from"../node_modules/@fluentui/react-icons/lib/sizedIcons/chunk-10.js";const e=s(r),p=({voice:s,disabled:r})=>{const{isConnected:p,connectConversation:m,disconnectConversation:a}=s,{pointer:n}=i();return r?o(t,{}):p?o(e,{onClick:a,className:n}):o(t,{onClick:m,className:n})};export{p as default};
|
@@ -31,7 +31,6 @@ export interface AppConfigOptions {
|
|
31
31
|
APP_CHAT_TITLE: undefined | string;
|
32
32
|
APP_CONFIG: AppConfig;
|
33
33
|
APP_FOOTER_COLOR: undefined | string;
|
34
|
-
TRANSLATIONS: Record<string, Record<string, string>> | undefined;
|
35
34
|
APP_FOOTER_SELECTED_COLOR: undefined | string;
|
36
35
|
APP_FOOTER_TEXT_COLOR: undefined | string;
|
37
36
|
APP_HEADER_COLOR: undefined | string;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"AAGA,qBAAa,SAAS;;IAKpB,iBAAiB,EAAE,MAAM,CAAM;IAC/B,2BAA2B,EAAE,MAAM,CAAM;IACzC,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,OAAO,EAAE;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,GAAG,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YAC1C,KAAK,EAAE;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,EAAE,CAAC;YACxD,iBAAiB,EAAE,MAAM,CAAC;YAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,gBAAgB,EAAE,MAAM,CAAC;YACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACtB,CAAC;KACH,CAAC;CAyBH;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,SAAS,GAAG,MAAM,CAAC;IAChC,yBAAyB,EAAE,SAAS,GAAG,MAAM,CAAC;IAC9C,cAAc,EAAE,SAAS,GAAG,MAAM,CAAC;IACnC,UAAU,EAAE,SAAS,CAAC;IACtB,gBAAgB,EAAE,SAAS,GAAG,MAAM,CAAC;IACrC,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/config/index.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/config/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
import _ from"../node_modules/mermaid/dist/mermaid.core.js";class O{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const T={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new O,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_API_KEY:"",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIP_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0
|
1
|
+
import _ from"../node_modules/mermaid/dist/mermaid.core.js";class O{constructor(){this.CHAT_INSTRUCTIONS="",this.REALTIME_VOICE_INSTRUCTIONS="",this.apps={}}}const T={LOGIN_REDIRECT:!1,ABOUT_TEXT:"Codicent APP SDK",ANONYMOUS_CODICENT:void 0,ANONYMOUS_TOKEN:void 0,API_BASE_URL:"https://codicent.com/",APP_BUTTONS:void 0,APP_CHAT_TEXT_PLACEHOLDER:void 0,APP_CHAT_TITLE:void 0,APP_CONFIG:new O,APP_FOOTER_COLOR:void 0,APP_FOOTER_SELECTED_COLOR:void 0,APP_FOOTER_TEXT_COLOR:void 0,APP_HEADER_COLOR:void 0,APP_HEADER_ICON_URL:void 0,APP_HEADER_TEXT_COLOR:void 0,APP_ICON_URL:void 0,APP_LOG_CODICENT:"",APP_LOG_TOKEN:"",APP_LOGBOOK_TITLE:void 0,APP_MENU_TITLE:void 0,APP_NAME:void 0,APP_PREFIX:void 0,APP_SAVE_TITLE:void 0,APP_SEARCH_TITLE:void 0,APP_SLOGAN:void 0,APP_SPLASH_TEXT:void 0,APP_SPLASH_URL:void 0,APP_TEMPLATE:"",APP_TITLE:void 0,AUTH_REDIRECT_URL:void 0,AUTH0_AUDIENCE:"https://codicent.com/api",AUTH0_CLIENT_ID:"80STzWmmzN3Tgf76HgFRyv54keYmvnaw",AUTH0_DOMAIN:"auth.codicent.com",AUTH0_PROVIDER_SCOPE:"read:current_user update:current_user_metadata openid profile email",AUTH0_SCOPE:"read:current_user",AUTH0_USER_DOMAIN:void 0,BUTTON_ACTIVE_COLOR:void 0,BUTTON_BACKGROUND_COLOR:void 0,BUTTON_BORDER_RADIUS:void 0,BUTTON_HOVER_COLOR:void 0,BUTTON_TAG:"app-button",BUTTON_TEXT_COLOR:void 0,CHAT_BACKGROUND_IMAGE_URL:void 0,CHAT_BOT_BACKGROUND_COLOR:void 0,CHAT_BOT_TEXT_COLOR:void 0,CHAT_INSTRUCTIONS:void 0,CHAT_USER_BACKGROUND_COLOR:void 0,CHAT_USER_TEXT_COLOR:void 0,CHAT_WELCOME:"Welcome",COMPOSE_BACKGROUND_IMAGE_URL:void 0,COMPOSE_HIDE_LOCATION:void 0,COMPOSE_SIMPLE_ATTACH_FILE:void 0,DEFAULT_LANGUAGE:"en",HIDE_CHAT_BUTTON:!1,HIDE_MENU_BUTTON:!1,HIDE_REGISTER_BUTTON:!1,HIDE_SAVE_BUTTON:!1,HOME_BACKGROUND_IMAGE_URL:void 0,INDEX_TITLE:void 0,LOGBOOK_TAG_DEFINITIONS:{},LOGBOOK_TAGS:"[]",MENU_BACKGROUND_IMAGE_URL:void 0,MESSAGE_HIDE_BAR:!1,MODULE_VOICE:!1,PUBLIC_FLOW_CODICENT:void 0,REALTIME_VOICE_API_KEY:"",SEND_BUTTON_ROUND_BACKGROUND:!1,SHOW_CANVAS_BUTTON:!1,SHOW_CHAT_PROMPTS:!1,SHOW_HELP_BUTTON:!1,SHOW_LOGBOOK_BUTTON:!1,SHOW_MICROPHONE_BUTTON:!1,SHOW_SETTINGS_BUTTON:!1,SHOW_SNAP_BUTTON:!1,SHOW_VOICE_BUTTON:!1,STRIP_CUSTOMER_PORTAL:"",STRIPE_PRICE_ID:"",STRIPE_PUBLIC_KEY:"",SUBSCRIPTION_NEEDED:!1,THEME_WELCOME:void 0,USER_PREFIX:void 0,WELCOME_STATUS_PROMPT:"",SHOW_SEND_BUTTON_TEXT:!1,SHOW_SAVE_BUTTON_TEXT:!1,FORM_BACKGROUND_IMAGE_URL:void 0,AUTO_TRANSLATE:!0,FORCE_LANGUAGE:void 0,LOGIN_WELCOME_TEXT:void 0,LOGIN_HIDE_WELCOME:!1,LOGIN_LOGO_URL:void 0,HIDE_CHAT_ADD_FILE_BUTTON:!1,FORM_ACCEPT_MARKDOWN:void 0};const E=function(_){return new Proxy(_,{get:(_,O,T)=>Reflect.get(_,O,T)})}(T);function A(_){return E[_]}function R(O={}){for(const[_,E]of Object.entries(O))void 0!==E&&(T[_]=E);_.initialize({startOnLoad:!1})}export{O as AppConfig,A as getConfigValue,R as initCodicentApp};
|
@@ -6,11 +6,11 @@ export * from "./useAudioRecorder";
|
|
6
6
|
export { default as useTools } from "./useTools";
|
7
7
|
export { default as useRealtimeVoiceAI } from "./useRealtimeVoiceAI";
|
8
8
|
export * from "./useRealtimeVoiceAI";
|
9
|
+
export { default as useLocalization } from "./useLocalization";
|
9
10
|
export * from "./useTemplateVariables";
|
10
11
|
export { type AudioRecorder } from "./useAudioRecorder";
|
11
12
|
export type { AudioRecorderState } from "./useAudioRecorder";
|
12
13
|
export * from "./useCodicentApp";
|
13
14
|
export { default as useAppStyles } from "./useAppStyles";
|
14
15
|
export { default as useToaster } from "./useToaster";
|
15
|
-
export { default as useLocalization } from "./useLocalization";
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACjF,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAudioRecorder.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAudioRecorder.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,mBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,
|
1
|
+
{"version":3,"file":"useAudioRecorder.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAudioRecorder.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,UAAU,cAAc;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,mBAAoB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,KA2R/E,kBACN,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{useState as e,useRef as r,useCallback as t,useEffect as n}from"react";const
|
1
|
+
import{useState as e,useRef as r,useCallback as t,useEffect as n,useMemo as c}from"react";const o=o=>{const[u,a]=e({isRecording:!1,isPaused:!1,recordingTime:0,mediaURL:null,isSoundCaptured:!1,error:null}),i=r(!1),s=r(null),d=r(null),l=r(null),g=r(!1),p=r(null),m=r([]),A=r(),R=r(null),w=r(""),v=t((async e=>{w.current=e;try{if(d.current&&"suspended"===d.current.state)try{await d.current.resume(),console.log("Resumed existing audio context")}catch(e){console.warn("Could not resume existing audio context:",e)}const e=await navigator.mediaDevices.getUserMedia({audio:!0});m.current=[],p.current=new MediaRecorder(e,{mimeType:b()}),p.current.ondataavailable=e=>{e.data.size>0&&m.current.push(e.data)},p.current.onstop=()=>{const r=new Blob(m.current,{type:b()}),t=URL.createObjectURL(r);a((e=>({...e,mediaURL:t}))),e.getTracks().forEach((e=>e.stop()))};const r=new(window.AudioContext||window.webkitAudioContext);d.current=r;try{if(d.current&&!l.current){l.current=d.current.createOscillator();const e=d.current.createGain();e.gain.value=.001,l.current.connect(e),e.connect(d.current.destination),l.current.frequency.value=20,l.current.start(),g.current=!0,console.log("Started audio session keeper")}}catch(e){console.warn("Failed to create audio session keeper:",e)}const t=r.createMediaStreamSource(e),n=r.createAnalyser();n.fftSize=256;const c=new Uint8Array(n.frequencyBinCount);t.connect(n);const o=()=>{n.getByteFrequencyData(c);const e=c.reduce(((e,r)=>e+r))/c.length>10;e!==i.current&&(i.current=e,a((r=>({...r,isSoundCaptured:e}))))};R.current=setInterval(o,100),s.current||(s.current=new Audio,s.current.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBAAAAABAAEARKwAAIhYAQACABAAZGF0YQQAAAAAAA==",s.current.loop=!0,s.current.volume=.01,s.current.setAttribute("playsinline",""),s.current.setAttribute("webkit-playsinline","")),s.current.play().catch((e=>{console.log("Silent audio playback failed, retrying:",e),document.addEventListener("click",(function e(){s.current?.play(),document.removeEventListener("click",e)}),{once:!0})})),p.current.start(10),A.current=setInterval((()=>{a((e=>({...e,recordingTime:e.recordingTime+1})))}),1e3),a((e=>({...e,isRecording:!0,isPaused:!1})))}catch(e){const r=e instanceof Error?e.message:String(e);a((e=>({...e,error:r}))),console.error("Error accessing microphone:",e)}}),[]),y=t((()=>{if(p.current&&u.isRecording){if(p.current.stop(),p.current.stream.getTracks().forEach((e=>e.stop())),A.current&&clearInterval(A.current),R.current&&(clearInterval(R.current),R.current=null),s.current&&(s.current.pause(),s.current.currentTime=0),l.current)try{l.current.stop(),l.current.disconnect(),l.current=null,g.current=!1,console.log("Stopped audio session keeper")}catch(e){console.warn("Error stopping oscillator:",e)}a((e=>({...e,isRecording:!1,isPaused:!1,isSoundCaptured:!1})))}}),[u.isRecording]);n((()=>{let e=null;return u.isRecording&&d.current&&(e=setInterval((()=>{if(d.current&&"suspended"===d.current.state&&(console.log("Resuming suspended audio context"),d.current.resume().catch((e=>console.warn("Failed to resume context:",e)))),s.current&&s.current.paused&&u.isRecording&&(console.log("Restarting silent audio"),s.current.play().catch((e=>console.warn("Failed to restart silent audio:",e)))),!l.current&&d.current&&g.current)try{console.log("Restarting audio oscillator"),l.current=d.current.createOscillator();const e=d.current.createGain();e.gain.value=.001,l.current.connect(e),e.connect(d.current.destination),l.current.frequency.value=20,l.current.start()}catch(e){console.warn("Failed to restart oscillator:",e)}}),500)),()=>{e&&clearInterval(e)}}),[u.isRecording]);const f=t((()=>{"recording"===p.current?.state&&(p.current.pause(),A.current&&clearInterval(A.current),a((e=>({...e,isPaused:!0}))))}),[]),h=t((()=>{"paused"===p.current?.state&&(p.current.resume(),A.current=setInterval((()=>{a((e=>({...e,recordingTime:e.recordingTime+1})))}),1e3),a((e=>({...e,isPaused:!1}))))}),[]),b=()=>["audio/webm","audio/mp4","audio/ogg","audio/wav"].find((e=>MediaRecorder.isTypeSupported(e)))||"audio/webm";return n((()=>{if(u.mediaURL){const e=`audio.${b().split("/")[1]}`;fetch(u.mediaURL).then((e=>e.blob())).then((r=>{const t=new FormData;t.append("file",r,e),o(t,w.current)}))}}),[u.mediaURL,o]),n((()=>()=>{p.current&&p.current.stream.getTracks().forEach((e=>e.stop())),A.current&&clearInterval(A.current),R.current&&clearInterval(R.current)}),[]),c((()=>({...u,startRecording:v,stopRecording:y,pauseRecording:f,resumeRecording:h})),[u.isRecording,u.isPaused,u.recordingTime,u.mediaURL,u.isSoundCaptured,u.error,v,y,f,h])};export{o as default,o as useAudioRecorder};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAUrC,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IAInB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF;AAED,QAAA,MAAM,YAAY,UAAW,qBAAqB,KAAG,
|
1
|
+
{"version":3,"file":"useAuthState.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuthState.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAUrC,MAAM,WAAW,YAAY;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,OAAO,CAAC;IAInB,IAAI,EAAE,GAAG,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,eAAe,EAAE,eAAe,CAAC;IACjC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAChF;AAED,QAAA,MAAM,YAAY,UAAW,qBAAqB,KAAG,YA6PpD,CAAC;AAEF,eAAe,YAAY,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{useState as o,useMemo as e,useEffect as t}from"react";import{CodicentService as
|
1
|
+
import{useState as o,useMemo as e,useEffect as t,useCallback as s}from"react";import{CodicentService as n}from"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as i}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/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"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/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";const r=r=>{const{isAuthenticated:p,getAccessTokenSilently:a,user:m,isLoading:c,logout:l,getAccessTokenWithPopup:g,loginWithRedirect:j}=r,[u,E]=o(null),[T,_]=o(void 0),[P,d]=o(null),[A,C]=o(""),I=e((()=>new n({API_BASE_URL:i("API_BASE_URL"),APP_LOG_CODICENT:i("APP_LOG_CODICENT"),APP_LOG_TOKEN:i("APP_LOG_TOKEN"),APP_NAME:i("APP_NAME"),APP_PREFIX:i("APP_PREFIX"),APP_TEMPLATE:i("APP_TEMPLATE"),BUTTON_TAG:i("BUTTON_TAG"),STRIPE_PUBLIC_KEY:i("STRIPE_PUBLIC_KEY"),SUBSCRIPTION_NEEDED:i("SUBSCRIPTION_NEEDED"),USER_PREFIX:i("USER_PREFIX"),ANONYMOUS_TOKEN:i("ANONYMOUS_TOKEN")})),[]);t((()=>{c||(async()=>{try{const o=await a({});console.debug("CODICENT: ACCESS TOKEN",o),E(o)}catch(o){console.debug("CODICENT: Failed to get access token",o);const e=o;if(e&&"object"==typeof e&&"error"in e&&"login_required"===e.error)console.warn("CODICENT: Login required"),S();else if(e&&"object"==typeof e&&"error"in e&&"consent_required"===e.error)try{const o=await g();if(!o)return void d("Failed to get access token: no token from auth0 with popup");console.log("CODICENT: GOT ACCESS TOKEN"),E(o)}catch(o){console.warn("CODICENT: Failed to get access token with popup",o),S()}else d("Failed to get access token: "+(e.message?.toString()||e.toString())),console.log("CODICENT: ACCESS TOKEN ERROR",e)}})().then((()=>{}))}),[p,g,a,j,c]),t((()=>{if(m&&m.sub&&u&&void 0===T){let o=!0;return I.loginUser(m.sub,u).then((e=>{o&&(null===e?_(!1):""===e?d("Kontrollera internetanslutningen och försök igen."):(I.setToken(u),I.getNickname().then(C),_(!0)))})).catch((()=>{o&&(d("Ett fel uppstod. Försök igen senare."),_(!1))})),()=>{o=!1}}}),[m,u,T,I]);const S=s((()=>{I.logout(),E(null),d(null),_(void 0),C(""),l({logoutParams:{returnTo:i("AUTH_REDIRECT_URL")}})}),[I,l]),O=s((async o=>{const e=await I.registerUser(o,m.email,m.sub,u);return e&&(I.setToken(u),_(!0)),e}),[I,m,u]);return t((()=>{I.onUnauthorized=S}),[I]),e((()=>({isAuthenticated:p,isRegistered:T,accessToken:u,authError:P,isLoading:c,user:m,nickname:A,logout:S,registerUser:O,codicentService:I,loginWithRedirect:j})),[p,T,u,P,c,m,A,S,O,I,j])};export{r as default};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useCodicentApp.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCodicentApp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AACpG,OAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAA2B,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIzE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,cAAe;IAAE,KAAK,EAAE,qBAAqB,CAAA;CAAE,
|
1
|
+
{"version":3,"file":"useCodicentApp.d.ts","sourceRoot":"","sources":["../../../src/hooks/useCodicentApp.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AACpG,OAAyB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAqB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAA2B,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAIzE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,YAAY,EAAE,eAAe,CAAC;IAC9B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACnC,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,OAAO,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,cAAc,cAAe;IAAE,KAAK,EAAE,qBAAqB,CAAA;CAAE,KAoKnE,gBACN,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{useRef as e,useState as t,useCallback as r,useMemo as n,useEffect as s}from"react";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"react/jsx-runtime";import{createAppStateMachine as o}from"../utils/appState.js";import"../_virtual/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{useAudioRecorder as
|
1
|
+
import{useRef as e,useState as t,useCallback as r,useMemo as n,useEffect as s}from"react";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"react/jsx-runtime";import{createAppStateMachine as o}from"../utils/appState.js";import"../_virtual/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{useAudioRecorder as i}from"./useAudioRecorder.js";import a from"./useAuthState.js";import c from"./useRealtimeVoiceAI.js";import u from"./useTools.js";import{getConfigValue as l}from"../config/index.js";const m=({auth0:m})=>{const p=a(m),d=e(o(p.codicentService,(()=>{}))),[f,g]=t(),{service:h,context:v}=d.current,{nickname:k,name:A,error:w,errorType:j,selectedApp:y}=v,b=r(((e,t)=>{const r=e.get("file").name;h.uploadFile(r,e).then((e=>{h.sendMessage(`#transcribe ${""!==t?(t.startsWith("#")?"":"#")+t+" ":""}#file:${e}`).then((()=>{})).catch(console.warn)}))}),[h]),x=i(b),[S,C]=t(),[T,_]=t(),[I,N]=t(!1),R=n((()=>new Audio("./notification.mp3")),[]),E=r((()=>N(!0)),[]),M=n((()=>u(h,C,_,R,S,E)),[h,C,_,R,S,E]),O=n((()=>l("REALTIME_VOICE_API_KEY")||""),[]),J=c(O,M);s((()=>{I&&(J?.disconnectConversation(),N(!1))}),[I,J]),s((()=>{p.isAuthenticated&&p.user&&p.accessToken&&d.current.updateContext({isAuthenticated:p.isAuthenticated,user:{sub:p.user.sub,email:p.user.email},accessToken:p.accessToken})}),[p.isAuthenticated,p.user,p.accessToken]),s((()=>d.current.updateContext({nickname:p.nickname})),[p.nickname]),s((()=>{d.current.update();let e,t=d.current.getCurrentStateName();g(d.current.getCurrentStateName()),JSON.stringify(d.current.context);let r=!1;const n=s=>setInterval((()=>{const s=d.current.getCurrentStateName();if("hasAccess"===s&&!r)return console.log("🎯 Reached stable state - switching to slower polling (1000ms)"),r=!0,clearInterval(e),void(e=n(1e3));if("hasAccess"!==s&&r)return console.log("🚨 Left stable state - switching to fast polling (200ms)"),r=!1,clearInterval(e),void(e=n(200));const o=JSON.stringify(d.current.context);d.current.update();const i=JSON.stringify(d.current.context),a=d.current.getCurrentStateName();a===t&&o===i||(g(a),t=a)}),s);return e=n(200),()=>clearInterval(e)}),[]);const L=r((e=>e.replace("{nickname}",k||"unknown").replace("{token}",encodeURIComponent(p.accessToken||"unknown")).replace("{app}",y||"unknown")),[k,p.accessToken,y]),B=r((e=>{d.current.updateContext({isAnonymous:e})}),[]),U=r((()=>d.current.isBusy()),[]);return n((()=>({audio:x,auth:p,currentStateName:f,stateMachine:d.current,service:h,context:v,state:f,nickname:k,name:A,error:w,errorType:j,fixAppUrl:L,setAnonymous:B,allStates:d.current.allStates,isBusy:U,voice:J,html:S,setHtml:C,script:T})),[f,k,A,w,j,S,T,p.isAuthenticated,p.isLoading,x.isRecording,J?.isConnected])};export{m as useCodicentApp};
|
@@ -1 +1 @@
|
|
1
|
-
import{useState as t,useRef as o,useCallback as e,useEffect as s}from"react";import p from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import{getConfigValue as r}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/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"./
|
1
|
+
import{useState as t,useRef as o,useCallback as e,useEffect as s}from"react";import p from"./useStateWithLocalStorage.js";import"../services/codicent.js";import"../components/Markdown.js";import"../components/Textarea.js";import"../components/Button.js";import"react/jsx-runtime";import"../components/Spinner.js";import"../components/TextHeader.js";import"../components/TypingIndicator.js";import"../components/Dialog.js";import"../components/ChatInput.js";import"../components/CombinedPlaceholderDialog.js";import"../components/ChatMessage.js";import"../components/Header.js";import{getConfigValue as r}from"../config/index.js";import"../stores/chatStore.js";import"../utils/MessageContent.js";import"../node_modules/tinycolor2/esm/tinycolor.js";import"../_virtual/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"./useLocalization.js";import"./useAppStyles.js";import"../components/FileThumbnail.js";import"../components/MessageInput.js";import"../components/UploadFile.js";import"../components/SnapFooter.js";import"../components/Profile.js";import"../components/MessageItem.js";import"../components/Content.js";import"../components/AiInput.js";import"../components/SearchBox.js";import"../components/HtmlView.js";import"../components/Footer.js";import"../components/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";const i=i=>{const[n,m]=p("APP_WELCOME_STATE_TEXT_"+i.context.selectedApp,""),[a,c]=p("CODICENT_STATE_LAST_TIMESTAMP_"+i.context.selectedApp,0),{service:j,current:l}=i,[T,g]=t(!1),S=o(!1),_=e((async()=>{if(!S.current){S.current=!0;try{const t=await j.getMessagesFast(r("LOGBOOK_TAGS").split(",").filter((t=>"chat"!==t))),o=t.length>0?t[0].createdAt.getTime():a;if(o>a){c(o),g(!0);const t=await j.chat(r("WELCOME_STATUS_PROMPT"));m(t.content)}}finally{g(!1),S.current=!1}}}),[j,a,c,m]),u=e((()=>{j&&r("CHAT_INSTRUCTIONS")}),[j]);return s((()=>{l===i.allStates.hasAccess&&r("WELCOME_STATUS_PROMPT")?(_(),u()):r("WELCOME_STATUS_PROMPT")||m("")}),[l,i,_,u,m]),{welcomeStatusText:n,updating:T}};export{i as default};
|
@@ -2,17 +2,12 @@ interface LanguageSource {
|
|
2
2
|
source: "force_config" | "url_param" | "browser" | "default";
|
3
3
|
language: string;
|
4
4
|
}
|
5
|
-
|
6
|
-
* Enhanced translation hook that supports both static translations and auto-translation
|
7
|
-
*/
|
8
|
-
declare function useLocalization(): {
|
5
|
+
declare const useLocalization: () => {
|
9
6
|
t: (key: string) => string;
|
10
|
-
translateAsync: (text: string) => Promise<string>;
|
11
7
|
currentLanguage: string;
|
12
8
|
setCurrentLanguage: (lang: string) => void;
|
13
9
|
getLanguageInfo: () => LanguageSource;
|
14
10
|
isForced: boolean;
|
15
|
-
translationVersion: number;
|
16
11
|
};
|
17
12
|
export default useLocalization;
|
18
13
|
//# sourceMappingURL=useLocalization.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7D,QAAQ,EAAE,MAAM,CAAC;CAClB;AA4DD,QAAA,MAAM,eAAe;aAiCX,MAAM;;+BApByB,MAAM;;;CAwG9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{useState as
|
1
|
+
import{useState as e,useRef as t,useEffect as n,useCallback as r}from"react";import a from"../node_modules/i18next/dist/esm/i18next.js";import{CodicentService as o}from"../services/codicent.js";import{getConfigValue as s}from"../config/index.js";import{initReactI18next as i}from"../node_modules/react-i18next/dist/es/initReactI18next.js";import{useTranslation as c}from"../node_modules/react-i18next/dist/es/useTranslation.js";const g=()=>{const e=s("FORCE_LANGUAGE");if(e)return{source:"force_config",language:e};if("undefined"!=typeof window){const e=new URLSearchParams(window.location.search),t=e.get("lang")||e.get("language");if(t)return{source:"url_param",language:t}}if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:s("DEFAULT_LANGUAGE")||"sv"}},l=()=>{const{language:e,source:t}=g();return"development"===process.env.NODE_ENV&&console.log(`Language selected: ${e} (source: ${t})`),e};a.use(i).init({resources:{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}},lng:l(),fallbackLng:s("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}});const u=()=>{const{t:a,i18n:i}=c(),[u,d]=e(l()),[m,f]=e(JSON.parse(localStorage.getItem("app-translations")||"{}")),p=t([]);n((()=>{i.changeLanguage(u)}),[u,i]);const L=r((e=>{const{source:t}=g();"force_config"!==t?"url_param"!==t?d(e):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),_=r((()=>g()),[]);return{t:r((e=>(i.exists(e)||(async(e,t)=>{const n=`${t} - ${e}`;let r=m[t]?.[e]||void 0;return s("AUTO_TRANSLATE")&&!r&&-1===p.current.indexOf(n)&&(p.current=[...p.current,n],localStorage.setItem("app-translations",JSON.stringify(m)),r=await o.getMiniChatReply(`Översätt '${e}' till språk '${t}' och svara endast med översättningen.`),r&&r.includes("Error code:")&&(r=void 0),r&&(!e.trim().startsWith('"')&&r.trim().startsWith('"')&&r.trim().endsWith('"')&&(r=r.trim().slice(1,-1)),!e.trim().startsWith("'")&&r.trim().startsWith("'")&&r.trim().endsWith("'")&&(r=r.trim().slice(1,-1)),m[t]={...m[t],[e]:r},localStorage.setItem("app-translations",JSON.stringify(m)),f(m))),r||e})(e,u).then((t=>{i.addResource(u,"translation",e,t)})),a(e))),[i,a,m,u]),currentLanguage:u,setCurrentLanguage:L,getLanguageInfo:_,isForced:["force_config","url_param"].includes(g().source)}};export{u as default};
|
@@ -26,8 +26,8 @@ export interface RealtimeVoice {
|
|
26
26
|
startRecording: () => Promise<void>;
|
27
27
|
stopRecording: () => Promise<void>;
|
28
28
|
changeTurnEndType: (value: string) => Promise<void>;
|
29
|
-
|
30
|
-
|
29
|
+
getRecorderLevel: () => number;
|
30
|
+
getStreamLevel: () => number;
|
31
31
|
setUsername: (username: string) => void;
|
32
32
|
updateInstructions: (instructions: string) => void;
|
33
33
|
setLanguage: (language: string) => void;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAMzF;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,
|
1
|
+
{"version":3,"file":"useRealtimeVoiceAI.d.ts","sourceRoot":"","sources":["../../../src/hooks/useRealtimeVoiceAI.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAMzF;;GAEG;AACH,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAC/B,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,kBAAkB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,kBAAkB,WAAY,MAAM,SAAS;IAAE,UAAU,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,EAAE,8BAqYzG,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
import{RealtimeClient as e}from"../node_modules/@openai/realtime-api-beta/lib/client.js";import{useRef as t,useState as n,useCallback as r,useEffect as a}from"react";import{WavRenderer as
|
1
|
+
import{RealtimeClient as e}from"../node_modules/@openai/realtime-api-beta/lib/client.js";import{useRef as t,useState as n,useCallback as r,useEffect as a,useMemo as o}from"react";import{WavRenderer as i}from"../utils/wav_renderer.js";import"../lib/wavtools/lib/wav_packer.js";import"../lib/wavtools/lib/analysis/audio_analysis.js";import{WavStreamPlayer as s}from"../lib/wavtools/lib/wav_stream_player.js";import{WavRecorder as c}from"../lib/wavtools/lib/wav_recorder.js";import{getConfigValue as l}from"../config/index.js";const u=(u,d)=>{if(!l("APP_CONFIG"))return void console.warn("APP_CONFIG is not set. Voice AI will not be available.");if(!l("APP_BUTTONS"))return void console.warn("APP_BUTTONS is not set. Voice AI will not be available.");const p=l("APP_CONFIG"),w=l("APP_BUTTONS"),f=t(new c({sampleRate:24e3})),m=t(new s({sampleRate:24e3})),v=t(new e({apiKey:u,dangerouslyAllowAPIKeyInBrowser:!0,url:"wss://codicent-ai-sweden.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=gpt-4o-realtime-preview-2&api-key=9013365c13ee4f3dad0016fb0f0c450a"})),g=t(!1),h=t(null),I=t(null),_=t(null),S=t((new Date).toISOString()),[y,C]=n([]),[T,A]=n([]),[R,b]=n(!1),[O,P]=n(!1),[N,M]=n(!1),x=t(0),E=t(0),[F,U]=n(""),[j,k]=n("en-US"),[B,D]=n((()=>w&&p.apps[w]?p.apps[w].voiceInstructions||p.REALTIME_VOICE_INSTRUCTIONS||"":p.REALTIME_VOICE_INSTRUCTIONS||"")),L=r((e=>{const t=S.current,n=new Date(t).valueOf(),r=new Date(e).valueOf()-n,a=Math.floor(r/10)%100,o=Math.floor(r/1e3)%60,i=e=>{let t=e+"";for(;t.length<2;)t="0"+t;return t};return`${i(Math.floor(r/6e4)%60)}:${i(o)}.${i(a)}`}),[]),V=r((async()=>{const e=v.current,t=f.current,n=m.current;S.current=(new Date).toISOString(),b(!0),A([]),C(e.conversation.getItems()),K("server_vad"),await t.begin(),await n.connect(),await e.connect(),e.sendUserMessageContent([{type:"input_text",text:"Hello!"}]),"server_vad"===e.getTurnDetectionType()&&await t.record((t=>e.appendInputAudio(t.mono)))}),[]),$=r((async()=>{b(!1),A([]),C([]);const e=v.current,t=f.current;await t.end(),e.disconnect();const n=m.current;await n.interrupt()}),[]),q=r((async e=>{v.current.deleteItem(e)}),[]),G=r((async()=>{M(!0);const e=v.current,t=f.current,n=m.current,r=await n.interrupt();if(r?.trackId){const{trackId:t,offset:n}=r;await e.cancelResponse(t,n)}await t.record((t=>e.appendInputAudio(t.mono)))}),[]),H=r((async()=>{M(!1);const e=v.current,t=f.current;await t.pause(),e.createResponse()}),[]),K=r((async e=>{const t=v.current,n=f.current;"none"===e&&"recording"===n.getStatus()&&await n.pause(),t.updateSession({turn_detection:"none"===e?null:{type:"server_vad"}}),"server_vad"===e&&t.isConnected()&&await n.record((e=>t.appendInputAudio(e.mono))),P("none"===e)}),[]);a((()=>{if(F){v.current.updateSession({instructions:B.replace("{{name}}",F).replace("{{language}}",j).replace("{{time}}",(new Date).toISOString())})}}),[B,F]),a((()=>{let e=!0;const t=f.current,n=h.current;let r=null;const a=m.current,o=I.current;let s=null;const c=()=>{if(e){if(n&&(n.width&&n.height||(n.width=n.offsetWidth,n.height=n.offsetHeight),r=r||n.getContext("2d"),r)){r.clearRect(0,0,n.width,n.height);const e=t.recording?t.getFrequencies("voice"):{values:new Float32Array([0])},a=1-Math.max(...e.values);x.current=a,i.drawCircularBars(n,r,e.values,"#0099ff",20,0,8)}if(o&&(o.width&&o.height||(o.width=o.offsetWidth,o.height=o.offsetHeight),s=s||o.getContext("2d"),s)){s.clearRect(0,0,o.width,o.height);const e=a.analyser?a.getFrequencies("voice"):{values:new Float32Array([0])},t=1-Math.max(...e.values);E.current=t,i.drawCircularBars(o,s,e.values,"#009900",20,0,8)}window.requestAnimationFrame(c)}};return c(),()=>{e=!1}}),[]),a((()=>{d&&B&&(()=>{if(!g.current){g.current=!0;const e=m.current,t=v.current;t.updateSession({instructions:B}),t.updateSession({input_audio_transcription:{model:"whisper-1"}});for(const e of d)t.addTool(e.definition,e.handler);t.on("error",(e=>console.error(e))),t.on("conversation.interrupted",(async()=>{const n=await e.interrupt();if(n?.trackId){const{trackId:e,offset:r}=n;await t.cancelResponse(e,r)}})),t.on("conversation.updated",(async({item:n,delta:r})=>{const a=t.conversation.getItems();if(r?.audio&&e.add16BitPCM(r.audio,n.id),"completed"===n.status&&n.formatted.audio?.length){const e=await c.decode(n.formatted.audio,24e3,24e3);n.formatted.file=e}C(a)})),C(t.conversation.getItems())}})()}),[d,B]);const W=r((e=>{const t=v.current,n=e.replace("{{name}}",F).replace("{{language}}",j).replace("{{time}}",(new Date).toISOString());t.updateSession({instructions:n}),D(e),console.log(`Voice instructions updated: ${n.substring(0,50)}...`)}),[F,j]);return o((()=>({items:y,realtimeEvents:T,isConnected:R,canPushToTalk:O,isRecording:N,clientCanvasRef:h,serverCanvasRef:I,eventsScrollRef:_,formatTime:L,connectConversation:V,disconnectConversation:$,deleteConversationItem:q,startRecording:G,stopRecording:H,changeTurnEndType:K,getRecorderLevel:()=>x.current,getStreamLevel:()=>E.current,setUsername:U,updateInstructions:W,setLanguage:k})),[y,T,R,O,N,h,I,_])};export{u as default};
|